Merge branch 'development' into 3.2.x-stable

This commit is contained in:
Philip Müller 2020-07-14 02:02:59 +02:00
commit 4a87702381
45 changed files with 624 additions and 344 deletions

21
CHANGES
View File

@ -3,7 +3,7 @@ contributors are listed. Note that Calamares does not have a historical
changelog -- this log starts with version 3.2.0. The release notes on the
website will have to do for older versions.
# 3.2.27 (unreleased) #
# 3.2.28 (unreleased) #
This release contains contributions from (alphabetically by first name):
- No external contributors yet
@ -15,6 +15,25 @@ This release contains contributions from (alphabetically by first name):
- No module changes yet
# 3.2.27 (2020-07-11) #
This release contains contributions from (alphabetically by first name):
- Gaël PORTAY
- Vitor Lopes (new! welcome!)
## Core ##
- QML modules with no surrounding navigation -- this is basically a
special case for full-screen Calamares -- now have margins suitable
for full-screen use.
- PythonQt modules are increasingly on the way out.
## Modules ##
- The Manjaro package manager *pamac* has been added to those supported by
the *packages* module.
- The *netinstall* module has had some minor UI tweaks.
- Partitioning now tries harder to avoid floppy drives.
# 3.2.26.1 (2020-06-23) #
This is a hotfix release for undefined behavior caused by an

View File

@ -46,10 +46,10 @@
# TODO:3.3: Require CMake 3.12
cmake_minimum_required( VERSION 3.3 FATAL_ERROR )
project( CALAMARES
VERSION 3.2.26.1
VERSION 3.2.28
LANGUAGES C CXX )
set( CALAMARES_VERSION_RC 0 ) # Set to 0 during release cycle, 1 during development
set( CALAMARES_VERSION_RC 1 ) # Set to 0 during release cycle, 1 during development
### OPTIONS
#

View File

@ -70,7 +70,11 @@ function( calamares_add_branding NAME )
foreach( BRANDING_COMPONENT_FILE ${BRANDING_COMPONENT_FILES} )
set( _subpath ${_brand_dir}/${BRANDING_COMPONENT_FILE} )
if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${_subpath} )
configure_file( ${_subpath} ${_subpath} COPYONLY )
set( _src ${CMAKE_CURRENT_SOURCE_DIR}/${_subpath} )
set( _dst ${CMAKE_CURRENT_BINARY_DIR}/${_subpath} )
if( ${_src} IS_NEWER_THAN ${_dst} )
configure_file( ${_src} ${_dst} COPYONLY )
endif()
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${_subpath}
DESTINATION ${BRANDING_COMPONENT_DESTINATION}/${_subdir}/ )

View File

@ -33,6 +33,10 @@ Name[bg]=Инсталирай системата
Icon[bg]=calamares
GenericName[bg]=Системен Инсталатор
Comment[bg]=Calamares Системен Инсталатор
Name[bn]=ি
Icon[bn]=
GenericName[bn]=ি
Comment[bn]= - ি
Name[ca]=Instal·la el sistema
Icon[ca]=calamares
GenericName[ca]=Instal·lador de sistema

View File

@ -24,7 +24,7 @@
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="68"/>
<source>Master Boot Record of %1</source>
<translation>%1 Əsas ön yükləyici qurmaq</translation>
<translation>%1 əsas Ön yükləyici qurmaq</translation>
</message>
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="102"/>
@ -132,7 +132,7 @@
<message>
<location filename="../src/libcalamares/JobExample.cpp" line="42"/>
<source>Job failed (%1)</source>
<translation>Tapşırığı yerinə yetirmək mümkün olmadı (%1)</translation>
<translation> (%1) Tapşırığı yerinə yetirmək mümkün olmadı</translation>
</message>
<message>
<location filename="../src/libcalamares/JobExample.cpp" line="43"/>
@ -199,7 +199,7 @@
<message>
<location filename="../src/libcalamares/PythonJob.cpp" line="250"/>
<source>Main script file %1 for python job %2 is not readable.</source>
<translation>%1 Əsas əmrlər faylı %2 python işləri üçün ıla bilmir.</translation>
<translation>%1 əsas əmrlər faylı %2 python işləri üçün ıla bilmir.</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonJob.cpp" line="318"/>
@ -311,7 +311,7 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="212"/>
<source>%1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution.</source>
<translation>%1 quraşdırılmadı. Calamares konfiqurasiya edilmiş modulların hamısını yükləyə bilmədi. Bu Calamares'i sizin distribütör tərəfindən necə istifadə edilməsindən asılı olan bir problemdir.</translation>
<translation>%1 quraşdırılmadı. Calamares konfiqurasiya edilmiş modulların hamısını yükləyə bilmədi. Bu Calamares'i, sizin distribütör tərəfindən necə istifadə edilməsindən asılı olan bir problemdir.</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="218"/>
@ -433,22 +433,22 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="301"/>
<source>Unknown exception type</source>
<translation>Naməlum istisna halı</translation>
<translation>Naməlum istisna hal</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="319"/>
<source>unparseable Python error</source>
<translation>görünməmiş python xətası</translation>
<translation>görünməmiş Python xətası</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="363"/>
<source>unparseable Python traceback</source>
<translation>görünməmiş python izi</translation>
<translation>görünməmiş Python izi</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="370"/>
<source>Unfetchable Python error.</source>
<translation>Oxunmayan python xətası.</translation>
<translation>Oxunmayan Python xətası.</translation>
</message>
</context>
<context>
@ -530,7 +530,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="334"/>
<source>&lt;strong&gt;Manual partitioning&lt;/strong&gt;&lt;br/&gt;You can create or resize partitions yourself. Having a GPT partition table and &lt;strong&gt;fat32 512Mb /boot partition is a must for UEFI installs&lt;/strong&gt;, either use an existing without formatting or create one.</source>
<translation>&lt;strong&gt;Əli ilə bölmək&lt;/strong&gt;&lt;br/&gt;Siz disk sahəsini özünüz bölə ölçülərini təyin edə bilərsiniz. GPT disk bölmələri cədvəli &lt;strong&gt;fat32 512Mb /boot bölməsi UEFI sistemi üçün vacibdir.&lt;/strong&gt;ya da mövcud bir bölmə varsa onu istifadə edin, və ya başqa birini yaradın.</translation>
<translation>&lt;strong&gt;Əl ilə bölmək&lt;/strong&gt;&lt;br/&gt;Siz disk sahəsini özünüz bölə ölçülərini təyin edə bilərsiniz. GPT disk bölmələri cədvəli &lt;strong&gt;fat32 512Mb /boot bölməsi UEFI sistemi üçün vacibdir&lt;/strong&gt;, ya da mövcud bir bölmə varsa onu istifadə edin, və ya başqa birini yaradın.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="833"/>
@ -583,7 +583,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1336"/>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1362"/>
<source>&lt;strong&gt;Erase disk&lt;/strong&gt;&lt;br/&gt;This will &lt;font color="red"&gt;delete&lt;/font&gt; all data currently present on the selected storage device.</source>
<translation>&lt;strong&gt;Diski təmizləmək&lt;/strong&gt;&lt;br/&gt; &lt;font color="red"&gt;Silmək&lt;/font&gt; hal-hazırda seçilmiş diskdəki bütün verilənləri siləcəkdir.</translation>
<translation>&lt;strong&gt;Diski təmizləmək&lt;/strong&gt;&lt;br/&gt; &lt;font color="red"&gt;Silmək&lt;/font&gt;seçimi hal-hazırda, seçilmiş diskdəki bütün verilənləri siləcəkdir.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1279"/>
@ -694,7 +694,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/libcalamares/utils/CommandList.cpp" line="155"/>
<source>The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined.</source>
<translation>Əmr quraşdırı mühitində icra olunur kök qovluğa yolu bilinməlidir, lakin rootMountPoint aşkar edilmədi.</translation>
<translation>Əmr, quraşdırı mühitində icra olunur kök qovluğa yolu bilinməlidir, lakin rootMountPoint - KökQoşulmaNöqtəsi - aşkar edilmədi.</translation>
</message>
<message>
<location filename="../src/libcalamares/utils/CommandList.cpp" line="168"/>
@ -772,7 +772,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/welcome/Config.cpp" line="81"/>
<source>This program will ask you some questions and set up %2 on your computer.</source>
<translation>Bu proqram sizə i suallar verəcək %2 sizin komputerinizə qurmağa kömək edəcək.</translation>
<translation>Bu proqram sizə zi suallar verəcək %2 əməliyyat sistemini sizin komputerinizə qurmağa kömək edəcək.</translation>
</message>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="245"/>
@ -914,7 +914,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/partition/gui/CreatePartitionTableDialog.ui" line="39"/>
<source>Creating a new partition table will delete all existing data on the disk.</source>
<translation>Bölmələr Cədvəli yaratmaq bütün diskdə olan məlumatların hamısını siləcək.</translation>
<translation>Bölmələr Cədvəli yaratmaq, bütün diskdə olan məlumatların hamısını siləcək.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionTableDialog.ui" line="65"/>
@ -1203,7 +1203,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/partition/gui/EncryptWidget.ui" line="14"/>
<source>Form</source>
<translation>Forma</translation>
<translation>Format</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/EncryptWidget.ui" line="32"/>
@ -1223,7 +1223,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/partition/gui/EncryptWidget.cpp" line="153"/>
<source>Please enter the same passphrase in both boxes.</source>
<translation>Lütfən hər iki sahəyə eyni şifrəni daxil edin.</translation>
<translation>Lütfən, hər iki sahəyə eyni şifrəni daxil edin.</translation>
</message>
</context>
<context>
@ -1279,17 +1279,17 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="53"/>
<source>&lt;h1&gt;All done.&lt;/h1&gt;&lt;br/&gt;%1 has been set up on your computer.&lt;br/&gt;You may now start using your new system.</source>
<translation>&lt;h1&gt;Hər şey hazırdır.&lt;/h1&gt;&lt;br/&gt;%1 sizin kopyuterə qurulacaqdır.&lt;br/&gt;Siz indi yeni sisteminizi başlada bilərsiniz.</translation>
<translation>&lt;h1&gt;Hər şey hazırdır.&lt;/h1&gt;&lt;br/&gt;%1 kompyuterinizə qurulub.&lt;br/&gt;Siz indi yeni sisteminizi başlada bilərsiniz.</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="57"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When this box is checked, your system will restart immediately when you click on &lt;span style="font-style:italic;"&gt;Done&lt;/span&gt; or close the setup program.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Bu çərçivə işarələnərsə siz &lt;span style="font-style:italic;"&gt;Hazır&lt;/span&gt; düyməsinə vurduğunuz və ya quraşdırıcı proqramı bağladığınız zaman sisteminiz dərhal yenidən başladılacaqdır.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Bu çərçivə işarələnərsə siz &lt;span style="font-style:italic;"&gt;Hazır&lt;/span&gt; düyməsinə vurduğunuz və ya quraşdırıcı proqramı bağlatdığınız zaman sisteminiz dərhal yenidən başladılacaqdır.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="63"/>
<source>&lt;h1&gt;All done.&lt;/h1&gt;&lt;br/&gt;%1 has been installed on your computer.&lt;br/&gt;You may now restart into your new system, or continue using the %2 Live environment.</source>
<translation>&lt;h1&gt;Hər şey hazırdır.&lt;/h1&gt;&lt;br/&gt;%1 sizin kompyuterinizə quraşdırıldı.&lt;br/&gt;Siz yenidən başladaraq yeni sisteminizə daxil ola ya %2 Canlı mühitini istifadə etməyə davam edə bilərsiniz.</translation>
<translation>&lt;h1&gt;Hər şey hazırdır.&lt;/h1&gt;&lt;br/&gt;%1 kompyuterinizə quraşdırıldı.&lt;br/&gt;Siz yenidən başladaraq yeni sisteminizə daxil ola ya %2 Canlı mühitini istifadə etməyə davam edə bilərsiniz.</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="68"/>
@ -1299,12 +1299,12 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="125"/>
<source>&lt;h1&gt;Setup Failed&lt;/h1&gt;&lt;br/&gt;%1 has not been set up on your computer.&lt;br/&gt;The error message was: %2.</source>
<translation>&lt;h1&gt;Quraşdırılma alınmadı&lt;/h1&gt;&lt;br/&gt;%1 sizin kompyuterinizə quraşdırıla bilmədi.&lt;br/&gt;Baş vermiş xəta: %2.</translation>
<translation>&lt;h1&gt;Quraşdırılma alınmadı&lt;/h1&gt;&lt;br/&gt;%1 kompyuterinizə quraşdırıla bilmədi.&lt;br/&gt;Baş vermiş xəta: %2.</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="131"/>
<source>&lt;h1&gt;Installation Failed&lt;/h1&gt;&lt;br/&gt;%1 has not been installed on your computer.&lt;br/&gt;The error message was: %2.</source>
<translation>&lt;h1&gt;Quraşdırılma alınmadı&lt;/h1&gt;&lt;br/&gt;%1 sizin kompyuterinizə quraşdırıla bilmədi.&lt;br/&gt;Baş vermiş xəta: %2.</translation>
<translation>&lt;h1&gt;Quraşdırılma alınmadı&lt;/h1&gt;&lt;br/&gt;%1 kompyuterinizə quraşdırıla bilmədi.&lt;br/&gt;Baş vermiş xəta: %2.</translation>
</message>
</context>
<context>
@ -1332,7 +1332,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="137"/>
<source>The installation of %1 is complete.</source>
<translation>%1in quraşdırılması başa çatdı.</translation>
<translation>%1-n quraşdırılması başa çatdı.</translation>
</message>
</context>
<context>
@ -1340,7 +1340,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="45"/>
<source>Format partition %1 (file system: %2, size: %3 MiB) on %4.</source>
<translation>%4-%1 bölməsini format etmək (fayl sistemi: %2, ölçüsü: %3 MB).</translation>
<translation>%4 üzərin%1 bölməsini format etmək (fayl sistemi: %2, ölçüsü: %3 MB).</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="56"/>
@ -1368,7 +1368,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="162"/>
<source>There is not enough drive space. At least %1 GiB is required.</source>
<translation>Kifayət qədər disk sahəsi yoxdur. əƏn azı %1 QB tələb olunur.</translation>
<translation>Kifayət qədər disk sahəsi yoxdur. Ən azı %1 QB tələb olunur.</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="171"/>
@ -1403,7 +1403,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="198"/>
<source>is running the installer as an administrator (root)</source>
<translation>quraşdırıcı adminstrator (root) imtiyazları ilə başladılması</translation>
<translation>quraşdırıcını adminstrator (root) imtiyazları ilə başladılması</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="201"/>
@ -1428,7 +1428,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="214"/>
<source>The screen is too small to display the installer.</source>
<translation>Bu quarşdırıcını göstəmək üçün ekran çox kiçikdir.</translation>
<translation>Bu quarşdırıcını göstərmək üçün ekran çox kiçikdir.</translation>
</message>
</context>
<context>
@ -1680,7 +1680,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="128"/>
<source>Zone:</source>
<translation>Zona:</translation>
<translation>Saat qurşağı:</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="129"/>
@ -3845,7 +3845,7 @@ Output:
<location filename="../src/modules/keyboardq/keyboardq.qml" line="51"/>
<location filename="../src/modules/keyboardq/keyboardq.qml" line="163"/>
<source>Layouts</source>
<translation>Qatları</translation>
<translation>Qatlar</translation>
</message>
<message>
<location filename="../src/modules/keyboardq/keyboardq.qml" line="79"/>
@ -3866,7 +3866,7 @@ Output:
<message>
<location filename="../src/modules/keyboardq/keyboardq.qml" line="189"/>
<source>Test your keyboard</source>
<translation>klaviaturanızı yoxlayın</translation>
<translation>Klaviaturanızı yoxlayın</translation>
</message>
</context>
<context>
@ -3879,7 +3879,7 @@ Output:
<message>
<location filename="../src/modules/localeq/localeq.qml" line="106"/>
<source>Numbers and dates locale set to %1</source>
<translation>Yerli sayltarix formatlarını %1 qurmaq</translation>
<translation>Yerli say tarix formatlarını %1 qurmaq</translation>
</message>
<message>
<location filename="../src/modules/localeq/localeq.qml" line="112"/>

View File

@ -24,7 +24,7 @@
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="68"/>
<source>Master Boot Record of %1</source>
<translation>%1 Əsas ön yükləyici qurmaq</translation>
<translation>%1 əsas Ön yükləyici qurmaq</translation>
</message>
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="102"/>
@ -132,7 +132,7 @@
<message>
<location filename="../src/libcalamares/JobExample.cpp" line="42"/>
<source>Job failed (%1)</source>
<translation>Tapşırığı yerinə yetirmək mümkün olmadı (%1)</translation>
<translation> (%1) Tapşırığı yerinə yetirmək mümkün olmadı</translation>
</message>
<message>
<location filename="../src/libcalamares/JobExample.cpp" line="43"/>
@ -199,7 +199,7 @@
<message>
<location filename="../src/libcalamares/PythonJob.cpp" line="250"/>
<source>Main script file %1 for python job %2 is not readable.</source>
<translation>%1 Əsas əmrlər faylı %2 python işləri üçün ıla bilmir.</translation>
<translation>%1 əsas əmrlər faylı %2 python işləri üçün ıla bilmir.</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonJob.cpp" line="318"/>
@ -311,7 +311,7 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="212"/>
<source>%1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution.</source>
<translation>%1 quraşdırılmadı. Calamares konfiqurasiya edilmiş modulların hamısını yükləyə bilmədi. Bu Calamares'i sizin distribütör tərəfindən necə istifadə edilməsindən asılı olan bir problemdir.</translation>
<translation>%1 quraşdırılmadı. Calamares konfiqurasiya edilmiş modulların hamısını yükləyə bilmədi. Bu Calamares'i, sizin distribütör tərəfindən necə istifadə edilməsindən asılı olan bir problemdir.</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="218"/>
@ -433,22 +433,22 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="301"/>
<source>Unknown exception type</source>
<translation>Naməlum istisna halı</translation>
<translation>Naməlum istisna hal</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="319"/>
<source>unparseable Python error</source>
<translation>görünməmiş python xətası</translation>
<translation>görünməmiş Python xətası</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="363"/>
<source>unparseable Python traceback</source>
<translation>görünməmiş python izi</translation>
<translation>görünməmiş Python izi</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="370"/>
<source>Unfetchable Python error.</source>
<translation>Oxunmayan python xətası.</translation>
<translation>Oxunmayan Python xətası.</translation>
</message>
</context>
<context>
@ -530,7 +530,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="334"/>
<source>&lt;strong&gt;Manual partitioning&lt;/strong&gt;&lt;br/&gt;You can create or resize partitions yourself. Having a GPT partition table and &lt;strong&gt;fat32 512Mb /boot partition is a must for UEFI installs&lt;/strong&gt;, either use an existing without formatting or create one.</source>
<translation>&lt;strong&gt;Əli ilə bölmək&lt;/strong&gt;&lt;br/&gt;Siz disk sahəsini özünüz bölə ölçülərini təyin edə bilərsiniz. GPT disk bölmələri cədvəli &lt;strong&gt;fat32 512Mb /boot bölməsi UEFI sistemi üçün vacibdir.&lt;/strong&gt;ya da mövcud bir bölmə varsa onu istifadə edin, və ya başqa birini yaradın.</translation>
<translation>&lt;strong&gt;Əl ilə bölmək&lt;/strong&gt;&lt;br/&gt;Siz disk sahəsini özünüz bölə ölçülərini təyin edə bilərsiniz. GPT disk bölmələri cədvəli &lt;strong&gt;fat32 512Mb /boot bölməsi UEFI sistemi üçün vacibdir&lt;/strong&gt;, ya da mövcud bir bölmə varsa onu istifadə edin, və ya başqa birini yaradın.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="833"/>
@ -583,7 +583,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1336"/>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1362"/>
<source>&lt;strong&gt;Erase disk&lt;/strong&gt;&lt;br/&gt;This will &lt;font color="red"&gt;delete&lt;/font&gt; all data currently present on the selected storage device.</source>
<translation>&lt;strong&gt;Diski təmizləmək&lt;/strong&gt;&lt;br/&gt; &lt;font color="red"&gt;Silmək&lt;/font&gt; hal-hazırda seçilmiş diskdəki bütün verilənləri siləcəkdir.</translation>
<translation>&lt;strong&gt;Diski təmizləmək&lt;/strong&gt;&lt;br/&gt; &lt;font color="red"&gt;Silmək&lt;/font&gt;seçimi hal-hazırda, seçilmiş diskdəki bütün verilənləri siləcəkdir.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1279"/>
@ -694,7 +694,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/libcalamares/utils/CommandList.cpp" line="155"/>
<source>The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined.</source>
<translation>Əmr quraşdırı mühitində icra olunur kök qovluğa yolu bilinməlidir, lakin rootMountPoint aşkar edilmədi.</translation>
<translation>Əmr, quraşdırı mühitində icra olunur kök qovluğa yolu bilinməlidir, lakin rootMountPoint - KökQoşulmaNöqtəsi - aşkar edilmədi.</translation>
</message>
<message>
<location filename="../src/libcalamares/utils/CommandList.cpp" line="168"/>
@ -772,7 +772,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/welcome/Config.cpp" line="81"/>
<source>This program will ask you some questions and set up %2 on your computer.</source>
<translation>Bu proqram sizə i suallar verəcək %2 sizin komputerinizə qurmağa kömək edəcək.</translation>
<translation>Bu proqram sizə zi suallar verəcək %2 əməliyyat sistemini sizin komputerinizə qurmağa kömək edəcək.</translation>
</message>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="245"/>
@ -914,7 +914,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/partition/gui/CreatePartitionTableDialog.ui" line="39"/>
<source>Creating a new partition table will delete all existing data on the disk.</source>
<translation>Bölmələr Cədvəli yaratmaq bütün diskdə olan məlumatların hamısını siləcək.</translation>
<translation>Bölmələr Cədvəli yaratmaq, bütün diskdə olan məlumatların hamısını siləcək.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionTableDialog.ui" line="65"/>
@ -1203,7 +1203,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/partition/gui/EncryptWidget.ui" line="14"/>
<source>Form</source>
<translation>Forma</translation>
<translation>Format</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/EncryptWidget.ui" line="32"/>
@ -1223,7 +1223,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/partition/gui/EncryptWidget.cpp" line="153"/>
<source>Please enter the same passphrase in both boxes.</source>
<translation>Lütfən hər iki sahəyə eyni şifrəni daxil edin.</translation>
<translation>Lütfən, hər iki sahəyə eyni şifrəni daxil edin.</translation>
</message>
</context>
<context>
@ -1279,17 +1279,17 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="53"/>
<source>&lt;h1&gt;All done.&lt;/h1&gt;&lt;br/&gt;%1 has been set up on your computer.&lt;br/&gt;You may now start using your new system.</source>
<translation>&lt;h1&gt;Hər şey hazırdır.&lt;/h1&gt;&lt;br/&gt;%1 sizin kopyuterə qurulacaqdır.&lt;br/&gt;Siz indi yeni sisteminizi başlada bilərsiniz.</translation>
<translation>&lt;h1&gt;Hər şey hazırdır.&lt;/h1&gt;&lt;br/&gt;%1 kompyuterinizə qurulub.&lt;br/&gt;Siz indi yeni sisteminizi başlada bilərsiniz.</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="57"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When this box is checked, your system will restart immediately when you click on &lt;span style="font-style:italic;"&gt;Done&lt;/span&gt; or close the setup program.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Bu çərçivə işarələnərsə siz &lt;span style="font-style:italic;"&gt;Hazır&lt;/span&gt; düyməsinə vurduğunuz və ya quraşdırıcı proqramı bağladığınız zaman sisteminiz dərhal yenidən başladılacaqdır.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Bu çərçivə işarələnərsə siz &lt;span style="font-style:italic;"&gt;Hazır&lt;/span&gt; düyməsinə vurduğunuz və ya quraşdırıcı proqramı bağlatdığınız zaman sisteminiz dərhal yenidən başladılacaqdır.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="63"/>
<source>&lt;h1&gt;All done.&lt;/h1&gt;&lt;br/&gt;%1 has been installed on your computer.&lt;br/&gt;You may now restart into your new system, or continue using the %2 Live environment.</source>
<translation>&lt;h1&gt;Hər şey hazırdır.&lt;/h1&gt;&lt;br/&gt;%1 sizin kompyuterinizə quraşdırıldı.&lt;br/&gt;Siz yenidən başladaraq yeni sisteminizə daxil ola ya %2 Canlı mühitini istifadə etməyə davam edə bilərsiniz.</translation>
<translation>&lt;h1&gt;Hər şey hazırdır.&lt;/h1&gt;&lt;br/&gt;%1 kompyuterinizə quraşdırıldı.&lt;br/&gt;Siz yenidən başladaraq yeni sisteminizə daxil ola ya %2 Canlı mühitini istifadə etməyə davam edə bilərsiniz.</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="68"/>
@ -1299,12 +1299,12 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="125"/>
<source>&lt;h1&gt;Setup Failed&lt;/h1&gt;&lt;br/&gt;%1 has not been set up on your computer.&lt;br/&gt;The error message was: %2.</source>
<translation>&lt;h1&gt;Quraşdırılma alınmadı&lt;/h1&gt;&lt;br/&gt;%1 sizin kompyuterinizə quraşdırıla bilmədi.&lt;br/&gt;Baş vermiş xəta: %2.</translation>
<translation>&lt;h1&gt;Quraşdırılma alınmadı&lt;/h1&gt;&lt;br/&gt;%1 kompyuterinizə quraşdırıla bilmədi.&lt;br/&gt;Baş vermiş xəta: %2.</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="131"/>
<source>&lt;h1&gt;Installation Failed&lt;/h1&gt;&lt;br/&gt;%1 has not been installed on your computer.&lt;br/&gt;The error message was: %2.</source>
<translation>&lt;h1&gt;Quraşdırılma alınmadı&lt;/h1&gt;&lt;br/&gt;%1 sizin kompyuterinizə quraşdırıla bilmədi.&lt;br/&gt;Baş vermiş xəta: %2.</translation>
<translation>&lt;h1&gt;Quraşdırılma alınmadı&lt;/h1&gt;&lt;br/&gt;%1 kompyuterinizə quraşdırıla bilmədi.&lt;br/&gt;Baş vermiş xəta: %2.</translation>
</message>
</context>
<context>
@ -1332,7 +1332,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="137"/>
<source>The installation of %1 is complete.</source>
<translation>%1in quraşdırılması başa çatdı.</translation>
<translation>%1-n quraşdırılması başa çatdı.</translation>
</message>
</context>
<context>
@ -1340,7 +1340,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="45"/>
<source>Format partition %1 (file system: %2, size: %3 MiB) on %4.</source>
<translation>%4-%1 bölməsini format etmək (fayl sistemi: %2, ölçüsü: %3 MB).</translation>
<translation>%4 üzərin%1 bölməsini format etmək (fayl sistemi: %2, ölçüsü: %3 MB).</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="56"/>
@ -1368,7 +1368,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="162"/>
<source>There is not enough drive space. At least %1 GiB is required.</source>
<translation>Kifayət qədər disk sahəsi yoxdur. əƏn azı %1 QB tələb olunur.</translation>
<translation>Kifayət qədər disk sahəsi yoxdur. Ən azı %1 QB tələb olunur.</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="171"/>
@ -1403,7 +1403,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="198"/>
<source>is running the installer as an administrator (root)</source>
<translation>quraşdırıcı adminstrator (root) imtiyazları ilə başladılması</translation>
<translation>quraşdırıcını adminstrator (root) imtiyazları ilə başladılması</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="201"/>
@ -1428,7 +1428,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="214"/>
<source>The screen is too small to display the installer.</source>
<translation>Bu quarşdırıcını göstəmək üçün ekran çox kiçikdir.</translation>
<translation>Bu quarşdırıcını göstərmək üçün ekran çox kiçikdir.</translation>
</message>
</context>
<context>
@ -1680,7 +1680,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="128"/>
<source>Zone:</source>
<translation>Zona:</translation>
<translation>Saat qurşağı:</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="129"/>
@ -3845,7 +3845,7 @@ Output:
<location filename="../src/modules/keyboardq/keyboardq.qml" line="51"/>
<location filename="../src/modules/keyboardq/keyboardq.qml" line="163"/>
<source>Layouts</source>
<translation>Qatları</translation>
<translation>Qatlar</translation>
</message>
<message>
<location filename="../src/modules/keyboardq/keyboardq.qml" line="79"/>
@ -3866,7 +3866,7 @@ Output:
<message>
<location filename="../src/modules/keyboardq/keyboardq.qml" line="189"/>
<source>Test your keyboard</source>
<translation>klaviaturanızı yoxlayın</translation>
<translation>Klaviaturanızı yoxlayın</translation>
</message>
</context>
<context>
@ -3879,7 +3879,7 @@ Output:
<message>
<location filename="../src/modules/localeq/localeq.qml" line="106"/>
<source>Numbers and dates locale set to %1</source>
<translation>Yerli sayltarix formatlarını %1 qurmaq</translation>
<translation>Yerli say tarix formatlarını %1 qurmaq</translation>
</message>
<message>
<location filename="../src/modules/localeq/localeq.qml" line="112"/>

View File

@ -1763,7 +1763,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/machineid/MachineIdJob.cpp" line="62"/>
<source>Configuration Error</source>
<translation type="unfinished"/>
<translation>ি ি</translation>
</message>
<message>
<location filename="../src/modules/machineid/MachineIdJob.cpp" line="63"/>

View File

@ -1781,7 +1781,9 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
<source>Please select your preferred location on the map so the installer can suggest the locale
and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging
to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming.</source>
<translation type="unfinished"/>
<translation>Vælg venligst din foretrukne placering kortet, installationsprogrammet kan foreslå lokalitets-
og tidszoneindstillinger til dig. Du kan finjustere de foreslåede indstillinger nedenfor. Søg kortet ved ved at trække
for at flytte og brug knapperne +/- for at zoome ind/ud eller brug muserulning til at zoome.</translation>
</message>
</context>
<context>
@ -1932,7 +1934,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
<message>
<location filename="../src/modules/localeq/Offline.qml" line="77"/>
<source>To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below.</source>
<translation type="unfinished"/>
<translation>For at kunne vælge en tidszone skal du sørge for at der er forbindelse til internettet. Genstart installationsprogrammet efter forbindelsen er blevet oprettet. Du kan finjustere sprog- og lokalitetsindstillinger nedenfor.</translation>
</message>
</context>
<context>
@ -3503,7 +3505,7 @@ setting
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="95"/>
<source>Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area.</source>
<translation type="unfinished"/>
<translation>Sporing hjælper %1 med at se hvor ofte den installeres, hvilken hardware den installeres og hvilke programmer der bruges. Klik hjælpeikonet ved siden af hvert område for at se hvad der sendes.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="100"/>
@ -3518,7 +3520,7 @@ setting
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="107"/>
<source>By selecting this you will regularly send information about your &lt;b&gt;user&lt;/b&gt; installation, hardware, applications and application usage patterns, to %1.</source>
<translation type="unfinished"/>
<translation>Vælges dette sender du regelmæssigt information om din &lt;b&gt;bruger&lt;/b&gt;installation, hardware, programmer og programmernes anvendelsesmønstre, til %1.</translation>
</message>
</context>
<context>

View File

@ -777,17 +777,17 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
<message>
<location filename="../src/modules/welcome/Config.cpp" line="245"/>
<source>&lt;h1&gt;Welcome to the Calamares setup program for %1&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Willkommen bei Calamares, dem Installationsprogramm für %1&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="246"/>
<source>&lt;h1&gt;Welcome to %1 setup&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Willkommen zur Installation von %1&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="251"/>
<source>&lt;h1&gt;Welcome to the Calamares installer for %1&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Willkommen bei Calamares, dem Installationsprogramm für %1&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="252"/>
@ -1927,7 +1927,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
<message>
<location filename="../src/modules/localeq/Offline.qml" line="62"/>
<source>Timezone: %1</source>
<translation type="unfinished"/>
<translation>Zeitzone: %1</translation>
</message>
<message>
<location filename="../src/modules/localeq/Offline.qml" line="77"/>
@ -3866,17 +3866,17 @@ Liberating Software.</translation>
<message>
<location filename="../src/modules/localeq/localeq.qml" line="98"/>
<source>System language set to %1</source>
<translation type="unfinished"/>
<translation>Systemsprache eingestellt auf %1</translation>
</message>
<message>
<location filename="../src/modules/localeq/localeq.qml" line="106"/>
<source>Numbers and dates locale set to %1</source>
<translation type="unfinished"/>
<translation>Zahlen- und Datumsformat eingestellt auf %1</translation>
</message>
<message>
<location filename="../src/modules/localeq/localeq.qml" line="112"/>
<source>Change</source>
<translation type="unfinished"/>
<translation>Ändern</translation>
</message>
</context>
<context>

View File

@ -1782,7 +1782,9 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</tra
<source>Please select your preferred location on the map so the installer can suggest the locale
and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging
to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming.</source>
<translation type="unfinished"/>
<translation>Valitse sijainti kartalla, jotta asentaja voi ehdottaa paikalliset ja aikavyöhykeen asetukset.
Voit hienosäätää alla olevia asetuksia. Etsi kartalta vetämällä ja suurenna/pienennä +/- -painikkeella tai käytä
hiiren vieritystä skaalaamiseen.</translation>
</message>
</context>
<context>
@ -1933,7 +1935,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</tra
<message>
<location filename="../src/modules/localeq/Offline.qml" line="77"/>
<source>To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below.</source>
<translation type="unfinished"/>
<translation>Jos haluat valita aikavyöhykkeen niin varmista, että olet yhteydessä Internetiin. Käynnistä asennusohjelma uudelleen yhteyden muodostamisen jälkeen. Voit hienosäätää alla olevia kieli- ja kieliasetuksia.</translation>
</message>
</context>
<context>
@ -3493,7 +3495,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</tra
<message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="72"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Click here to send &lt;span style=" font-weight:600;"&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;Napsauta tätä &lt;span style=" font-weight:600;"&gt;jos et halua lähettää mitään&lt;/span&gt; tietoja asennuksesta.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="271"/>
@ -3503,22 +3505,22 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</tra
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="95"/>
<source>Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area.</source>
<translation type="unfinished"/>
<translation>Seuranta auttaa %1 näkemään, kuinka usein se asennetaan, mihin laitteistoon se on asennettu ja mihin sovelluksiin sitä käytetään. Jos haluat nähdä, mitä lähetetään, napsauta kunkin alueen vieressä olevaa ohjekuvaketta.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="100"/>
<source>By selecting this you will send information about your installation and hardware. This information will only be sent &lt;b&gt;once&lt;/b&gt; after the installation finishes.</source>
<translation type="unfinished"/>
<translation>Valitsemalla tämän lähetät tietoja asennuksesta ja laitteistosta. Nämä tiedot lähetetään vain &lt;/b&gt;kerran&lt;/b&gt; asennuksen päätyttyä.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="103"/>
<source>By selecting this you will periodically send information about your &lt;b&gt;machine&lt;/b&gt; installation, hardware and applications, to %1.</source>
<translation type="unfinished"/>
<translation>Valitsemalla tämän lähetät määräajoin tietoja &lt;b&gt;koneesi&lt;/b&gt; asennuksesta, laitteistosta ja sovelluksista, %1:lle.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="107"/>
<source>By selecting this you will regularly send information about your &lt;b&gt;user&lt;/b&gt; installation, hardware, applications and application usage patterns, to %1.</source>
<translation type="unfinished"/>
<translation>Valitsemalla tämän lähetät säännöllisesti tietoja &lt;b&gt;käyttäjän&lt;/b&gt; asennuksesta, laitteistosta, sovelluksista ja sovellusten käyttötavoista %1:lle.</translation>
</message>
</context>
<context>
@ -3807,13 +3809,15 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</tra
<location filename="../src/modules/localeq/i18n.qml" line="59"/>
<source>&lt;h1&gt;Languages&lt;/h1&gt; &lt;/br&gt;
The system locale setting affects the language and character set for some command line user interface elements. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Kielet&lt;/h1&gt; &lt;/br&gt;
Järjestelmän sijaintiasetukset vaikuttaa joidenkin komentorivin käyttöliittymän elementtien kieliin ja merkistöihin. Nykyinen asetus on &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/localeq/i18n.qml" line="120"/>
<source>&lt;h1&gt;Locales&lt;/h1&gt; &lt;/br&gt;
The system locale setting affects the language and character set for some command line user interface elements. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Sijainti&lt;/h1&gt; &lt;/br&gt;
Järjestelmän sijaintiasetukset vaikuttaa joidenkin komentorivin käyttöliittymän elementtien kieliin ja merkistöihin. Nykyinen asetus on &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/localeq/i18n.qml" line="174"/>

View File

@ -781,22 +781,22 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="245"/>
<source>&lt;h1&gt;Welcome to the Calamares setup program for %1&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;/h1&gt;Jus sveikina Calamares sąrankos programa, skirta %1 sistemai.&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="246"/>
<source>&lt;h1&gt;Welcome to %1 setup&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Jus sveikina %1 sąranka&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="251"/>
<source>&lt;h1&gt;Welcome to the Calamares installer for %1&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Jus sveikina Calamares diegimo programa, skirta %1 sistemai&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="252"/>
<source>&lt;h1&gt;Welcome to the %1 installer&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Jus sveikina %1 diegimo programa&lt;/h1&gt;</translation>
</message>
</context>
<context>
@ -3870,7 +3870,7 @@ Išvestis:
<message>
<location filename="../src/modules/localeq/localeq.qml" line="98"/>
<source>System language set to %1</source>
<translation type="unfinished"/>
<translation>Sistemos kalba nustatyta į %1</translation>
</message>
<message>
<location filename="../src/modules/localeq/localeq.qml" line="106"/>
@ -3880,7 +3880,7 @@ Išvestis:
<message>
<location filename="../src/modules/localeq/localeq.qml" line="112"/>
<source>Change</source>
<translation type="unfinished"/>
<translation>Keisti</translation>
</message>
</context>
<context>

View File

@ -230,7 +230,7 @@
<message>
<location filename="../src/libcalamares/modulesystem/RequirementsChecker.cpp" line="106"/>
<source>Requirements checking for module &lt;i&gt;%1&lt;/i&gt; is complete.</source>
<translation>A verificação de requerimentos para o módulo &lt;i&gt;%1&lt;/i&gt; está completa.</translation>
<translation>A verificação de requisitos para o módulo &lt;i&gt;%1&lt;/i&gt; está completa.</translation>
</message>
<message numerus="yes">
<location filename="../src/libcalamares/modulesystem/RequirementsChecker.cpp" line="127"/>
@ -251,7 +251,7 @@
<message>
<location filename="../src/libcalamares/modulesystem/RequirementsChecker.cpp" line="133"/>
<source>System-requirements checking is complete.</source>
<translation>Verificação de requerimentos do sistema completa.</translation>
<translation>Verificação de requisitos do sistema completa.</translation>
</message>
</context>
<context>
@ -722,7 +722,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
<message>
<location filename="../src/modules/locale/Config.cpp" line="280"/>
<source>The numbers and dates locale will be set to %1.</source>
<translation>O local dos números e datas será definido como %1.</translation>
<translation>A localidade dos números e datas será definida como %1.</translation>
</message>
<message>
<location filename="../src/modules/locale/Config.cpp" line="313"/>
@ -752,7 +752,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
<message>
<location filename="../src/modules/welcome/Config.cpp" line="56"/>
<source>This computer does not satisfy the minimum requirements for setting up %1.&lt;br/&gt;Setup cannot continue. &lt;a href="#details"&gt;Details...&lt;/a&gt;</source>
<translation>Este computador não satisfaz os requerimentos mínimos para configurar %1.&lt;br/&gt;A configuração não pode continuar. &lt;a href="#details"&gt;Detalhes...&lt;/a&gt;</translation>
<translation>Este computador não satisfaz os requisitos mínimos para configurar %1.&lt;br/&gt;A configuração não pode continuar. &lt;a href="#details"&gt;Detalhes...&lt;/a&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="60"/>
@ -762,7 +762,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
<message>
<location filename="../src/modules/welcome/Config.cpp" line="67"/>
<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>Este computador não satisfaz alguns dos requerimentos recomendados para configurar %1.&lt;br/&gt;A configuração pode continuar, mas algumas funções podem ser desativadas.</translation>
<translation>Este computador não satisfaz alguns dos requisitos recomendados para configurar %1.&lt;br/&gt;A configuração pode continuar, mas alguns recursos podem ser desativados.</translation>
</message>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="71"/>
@ -777,22 +777,22 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
<message>
<location filename="../src/modules/welcome/Config.cpp" line="245"/>
<source>&lt;h1&gt;Welcome to the Calamares setup program for %1&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Bem-vindo ao programa de configuração Calamares para %1&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="246"/>
<source>&lt;h1&gt;Welcome to %1 setup&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Bem-vindo à configuração de %1&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="251"/>
<source>&lt;h1&gt;Welcome to the Calamares installer for %1&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Bem-vindo ao instalador Calamares para %1&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/Config.cpp" line="252"/>
<source>&lt;h1&gt;Welcome to the %1 installer&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Bem-vindo ao instalador de %1&lt;/h1&gt;</translation>
</message>
</context>
<context>
@ -1546,7 +1546,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
<message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="39"/>
<source>The system locale setting affects the language and character set for some command line user interface elements.&lt;br/&gt;The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation>A configuração de localidade do sistema afeta a linguagem e o conjunto de caracteres para algumas linhas de comando e elementos da interface do usuário.&lt;br/&gt;A configuração atual é &lt;strong&gt;%1&lt;/strong&gt;.</translation>
<translation>A configuração de localidade do sistema afeta o idioma e o conjunto de caracteres para algumas linhas de comando e elementos da interface do usuário.&lt;br/&gt;A configuração atual é &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="63"/>
@ -1696,7 +1696,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="263"/>
<source>The numbers and dates locale will be set to %1.</source>
<translation>O local dos números e datas será definido como %1.</translation>
<translation>A localidade dos números e datas será definida como %1.</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="270"/>
@ -1781,7 +1781,9 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
<source>Please select your preferred location on the map so the installer can suggest the locale
and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging
to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming.</source>
<translation type="unfinished"/>
<translation>Por favor selecione seu local preferido no mapa para que o instalador possa sugerir as configurações de localidade
e fuso horário para você. Você pode ajustar as configurações sugeridas abaixo. Procure no mapa arrastando
para mover e usando os botões +/- para aumentar/diminuir ou use a rolagem do mouse para dar zoom.</translation>
</message>
</context>
<context>
@ -1927,12 +1929,12 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
<message>
<location filename="../src/modules/localeq/Offline.qml" line="62"/>
<source>Timezone: %1</source>
<translation type="unfinished"/>
<translation>Fuso horário: %1</translation>
</message>
<message>
<location filename="../src/modules/localeq/Offline.qml" line="77"/>
<source>To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below.</source>
<translation type="unfinished"/>
<translation>Para poder selecionar o fuso horário, tenha certeza que você está conectado à internet. Reinicie o instalador após conectar. Você pode ajustar as configurações de Idioma e Localidade abaixo.</translation>
</message>
</context>
<context>
@ -2837,7 +2839,8 @@ Saída:
<location filename="../src/modules/welcomeq/Recommended.qml" line="49"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"/>
<translation>&lt;p&gt;Este computador não satisfaz alguns dos requisitos recomendados para configurar %1.&lt;br/&gt;
A configuração pode continuar, mas alguns recursos podem ser desativados.&lt;/p&gt;</translation>
</message>
</context>
<context>
@ -2948,13 +2951,15 @@ Saída:
<location filename="../src/modules/welcomeq/Requirements.qml" line="47"/>
<source>&lt;p&gt;This computer does not satisfy the minimum requirements for installing %1.&lt;br/&gt;
Installation cannot continue.&lt;/p&gt;</source>
<translation type="unfinished"/>
<translation>&lt;p&gt;Este computador não satisfaz os requisitos mínimos para instalar %1.&lt;br/&gt;
A instalação não pode continuar.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcomeq/Requirements.qml" line="49"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"/>
<translation>&lt;p&gt;Este computador não satisfaz alguns dos requisitos recomendados para configurar %1.&lt;br/&gt;
A configuração pode continuar, mas alguns recursos podem ser desativados.&lt;/p&gt;</translation>
</message>
</context>
<context>
@ -3094,7 +3099,7 @@ Saída:
<message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="265"/>
<source>This computer does not satisfy the minimum requirements for setting up %1.&lt;br/&gt;Setup cannot continue. &lt;a href="#details"&gt;Details...&lt;/a&gt;</source>
<translation>Este computador não satisfaz os requerimentos mínimos para configurar %1.&lt;br/&gt;A configuração não pode continuar. &lt;a href="#details"&gt;Detalhes...&lt;/a&gt;</translation>
<translation>Este computador não satisfaz os requisitos mínimos para configurar %1.&lt;br/&gt;A configuração não pode continuar. &lt;a href="#details"&gt;Detalhes...&lt;/a&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="269"/>
@ -3104,7 +3109,7 @@ Saída:
<message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="276"/>
<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>Este computador não satisfaz alguns dos requerimentos recomendados para configurar %1.&lt;br/&gt;A configuração pode continuar, mas algumas funções podem ser desativadas.</translation>
<translation>Este computador não satisfaz alguns dos requisitos recomendados para configurar %1.&lt;br/&gt;A configuração pode continuar, mas alguns recursos podem ser desativados.</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="280"/>
@ -3420,28 +3425,28 @@ Saída:
<message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="202"/>
<source>KDE user feedback</source>
<translation type="unfinished"/>
<translation>Feedback de usuário KDE</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="214"/>
<source>Configuring KDE user feedback.</source>
<translation type="unfinished"/>
<translation>Configurando feedback de usuário KDE.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="236"/>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="242"/>
<source>Error in KDE user feedback configuration.</source>
<translation type="unfinished"/>
<translation>Erro na configuração do feedback de usuário KDE.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="237"/>
<source>Could not configure KDE user feedback correctly, script error %1.</source>
<translation type="unfinished"/>
<translation>Não foi possível configurar o feedback de usuário KDE corretamente, erro de script %1.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="243"/>
<source>Could not configure KDE user feedback correctly, Calamares error %1.</source>
<translation type="unfinished"/>
<translation>Não foi possível configurar o feedback de usuário KDE corretamente, erro do Calamares %1.</translation>
</message>
</context>
<context>
@ -3488,7 +3493,7 @@ Saída:
<message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="72"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Click here to send &lt;span style=" font-weight:600;"&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;Clique aqui para não enviar &lt;span style=" font-weight:600;"&gt;nenhum tipo de informação&lt;/span&gt; sobre sua instalação.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="271"/>
@ -3498,22 +3503,22 @@ Saída:
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="95"/>
<source>Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area.</source>
<translation type="unfinished"/>
<translation>O rastreamento ajuda %1 a ver quão frequentemente ele é instalado, em qual hardware ele é instalado e quais aplicações são usadas. Para ver o que será enviado, por favor, clique no ícone de ajuda próximo a cada área.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="100"/>
<source>By selecting this you will send information about your installation and hardware. This information will only be sent &lt;b&gt;once&lt;/b&gt; after the installation finishes.</source>
<translation type="unfinished"/>
<translation>Ao selecionar isto você enviará informações sobre sua instalação e hardware. Essa informação será enviada apenas &lt;b&gt;uma vez&lt;/b&gt; depois que a instalação terminar.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="103"/>
<source>By selecting this you will periodically send information about your &lt;b&gt;machine&lt;/b&gt; installation, hardware and applications, to %1.</source>
<translation type="unfinished"/>
<translation>Ao selecionar isto você enviará periodicamente informações sobre a instalação da sua &lt;b&gt;máquina&lt;/b&gt;, hardware e aplicações para %1.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="107"/>
<source>By selecting this you will regularly send information about your &lt;b&gt;user&lt;/b&gt; installation, hardware, applications and application usage patterns, to %1.</source>
<translation type="unfinished"/>
<translation>Ao selecionar isto você enviará periodicamente informações sobre a instalação do seu &lt;b&gt;usuário&lt;/b&gt;, hardware, aplicações e padrões de uso das aplicações para %1.</translation>
</message>
</context>
<context>
@ -3657,7 +3662,7 @@ Saída:
<location filename="../src/modules/welcome/WelcomePage.ui" line="75"/>
<location filename="../src/modules/welcome/WelcomePage.ui" line="94"/>
<source>Select application and system language</source>
<translation>Selecione a aplicação e a linguagem do sistema</translation>
<translation>Selecione o idioma do sistema e das aplicações</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="136"/>
@ -3722,7 +3727,7 @@ Saída:
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="232"/>
<source>&lt;h1&gt;Welcome to the %1 installer.&lt;/h1&gt;</source>
<translation>&lt;h1&gt;Bem-vindo ao instalador %1 .&lt;/h1&gt;</translation>
<translation>&lt;h1&gt;Bem-vindo ao instalador %1.&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="237"/>
@ -3802,13 +3807,15 @@ Saída:
<location filename="../src/modules/localeq/i18n.qml" line="59"/>
<source>&lt;h1&gt;Languages&lt;/h1&gt; &lt;/br&gt;
The system locale setting affects the language and character set for some command line user interface elements. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Idiomas&lt;/h1&gt; &lt;/br&gt;
A configuração de localidade do sistema afeta o idioma e o conjunto de caracteres para algumas linhas de comando e elementos da interface do usuário. A configuração atual é &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/localeq/i18n.qml" line="120"/>
<source>&lt;h1&gt;Locales&lt;/h1&gt; &lt;/br&gt;
The system locale setting affects the language and character set for some command line user interface elements. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Localidades&lt;/h1&gt; &lt;/br&gt;
A configuração de localidade do sistema afeta o idioma e o conjunto de caracteres para algumas linhas de comando e elementos da interface do usuário. A configuração atual é &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/localeq/i18n.qml" line="174"/>
@ -3866,17 +3873,17 @@ Saída:
<message>
<location filename="../src/modules/localeq/localeq.qml" line="98"/>
<source>System language set to %1</source>
<translation type="unfinished"/>
<translation>Idioma do sistema definido como %1</translation>
</message>
<message>
<location filename="../src/modules/localeq/localeq.qml" line="106"/>
<source>Numbers and dates locale set to %1</source>
<translation type="unfinished"/>
<translation>A localidade de números e datas foi definida para %1</translation>
</message>
<message>
<location filename="../src/modules/localeq/localeq.qml" line="112"/>
<source>Change</source>
<translation type="unfinished"/>
<translation>Modificar</translation>
</message>
</context>
<context>

View File

@ -1926,7 +1926,7 @@ Alla ändringar kommer att gå förlorade.</translation>
<message>
<location filename="../src/modules/localeq/Offline.qml" line="62"/>
<source>Timezone: %1</source>
<translation type="unfinished"/>
<translation>Tidszon: %1</translation>
</message>
<message>
<location filename="../src/modules/localeq/Offline.qml" line="77"/>
@ -3875,7 +3875,7 @@ Utdata:
<message>
<location filename="../src/modules/localeq/localeq.qml" line="112"/>
<source>Change</source>
<translation type="unfinished"/>
<translation>Ändra</translation>
</message>
</context>
<context>

Binary file not shown.

View File

@ -3,6 +3,9 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# 508a8b0ef95404aa3dc5178f0ccada5e_017b8a4 <d0ef5d977ab7abf012ef53891f8ca2b5_900530>, 2020
#
#, fuzzy
msgid ""
msgstr ""
@ -10,6 +13,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-06-18 15:42+0200\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: 508a8b0ef95404aa3dc5178f0ccada5e_017b8a4 <d0ef5d977ab7abf012ef53891f8ca2b5_900530>, 2020\n"
"Language-Team: Bengali (https://www.transifex.com/calamares/teams/20061/bn/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -19,11 +23,11 @@ msgstr ""
#: src/modules/grubcfg/main.py:37
msgid "Configure GRUB."
msgstr ""
msgstr "কনফিগার করুন জিআরইউবি।"
#: src/modules/mount/main.py:38
msgid "Mounting partitions."
msgstr ""
msgstr "মাউন্ট করছে পার্টিশনগুলো।"
#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:205
#: src/modules/initcpiocfg/main.py:209
@ -35,28 +39,29 @@ msgstr ""
#: src/modules/fstab/main.py:338 src/modules/localecfg/main.py:144
#: src/modules/networkcfg/main.py:48
msgid "Configuration Error"
msgstr ""
msgstr "কনফিগারেশন ত্রুটি"
#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:206
#: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:174
#: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79
#: src/modules/fstab/main.py:333
msgid "No partitions are defined for <pre>{!s}</pre> to use."
msgstr ""
msgstr "কোন পার্টিশন নির্দিষ্ট করা হয়নি<pre>{!এস}</pre> ব্যবহার করার জন্য।"
#: src/modules/services-systemd/main.py:35
msgid "Configure systemd services"
msgstr ""
msgstr "কনফিগার করুন সিস্টেমডি সেবাগুলি"
#: src/modules/services-systemd/main.py:68
#: src/modules/services-openrc/main.py:102
msgid "Cannot modify service"
msgstr ""
msgstr "সেবা পরিবর্তন করতে পারে না"
#: src/modules/services-systemd/main.py:69
msgid ""
"<code>systemctl {arg!s}</code> call in chroot returned error code {num!s}."
msgstr ""
"<code>সিস্টেমসিটিএল {এআরজি!এস}</code>সিএইচরুট ফেরত ত্রুটি কোড দে{NUM! গুলি}।"
#: src/modules/services-systemd/main.py:72
#: src/modules/services-systemd/main.py:76
@ -83,27 +88,27 @@ msgstr ""
#: src/modules/umount/main.py:40
msgid "Unmount file systems."
msgstr ""
msgstr "আনমাউন্ট ফাইল সিস্টেমগুলি করুন।"
#: src/modules/unpackfs/main.py:44
msgid "Filling up filesystems."
msgstr ""
msgstr "ফাইলসিস্টেমগুলিপূরণ করছে।"
#: src/modules/unpackfs/main.py:257
msgid "rsync failed with error code {}."
msgstr ""
msgstr "ত্রুটি কোড সহ আরসিঙ্ক ব্যর্থ হয়েছে {}।"
#: src/modules/unpackfs/main.py:302
msgid "Unpacking image {}/{}, file {}/{}"
msgstr ""
msgstr "চিত্র আনপ্যাক করছে {} / {}, ফাইল {} / {}"
#: src/modules/unpackfs/main.py:317
msgid "Starting to unpack {}"
msgstr ""
msgstr "আনপ্যাক করা শুরু করছে {}"
#: src/modules/unpackfs/main.py:326 src/modules/unpackfs/main.py:448
msgid "Failed to unpack image \"{}\""
msgstr ""
msgstr "চিত্র আনপ্যাক করতে ব্যর্থ হয়েছে \"{}\""
#: src/modules/unpackfs/main.py:415
msgid "No mount point for root partition"

Binary file not shown.

View File

@ -4,9 +4,9 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# Adriaan de Groot <groot@kde.org>, 2019
# Christian Spaan, 2020
# Andreas Eitel <github-aneitel@online.de>, 2020
# Adriaan de Groot <groot@kde.org>, 2020
#
#, fuzzy
msgid ""
@ -15,7 +15,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-06-18 15:42+0200\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: Andreas Eitel <github-aneitel@online.de>, 2020\n"
"Last-Translator: Adriaan de Groot <groot@kde.org>, 2020\n"
"Language-Team: German (https://www.transifex.com/calamares/teams/20061/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -105,7 +105,7 @@ msgstr "rsync fehlgeschlagen mit Fehlercode {}."
#: src/modules/unpackfs/main.py:302
msgid "Unpacking image {}/{}, file {}/{}"
msgstr "Bild Entpacken {}/{}, Datei {}/{}"
msgstr "Abbilddatei Entpacken {}/{}, Datei {}/{}"
#: src/modules/unpackfs/main.py:317
msgid "Starting to unpack {}"
@ -113,7 +113,7 @@ msgstr "Beginn des Entpackens {}"
#: src/modules/unpackfs/main.py:326 src/modules/unpackfs/main.py:448
msgid "Failed to unpack image \"{}\""
msgstr "Entpacken des Image \"{}\" fehlgeschlagen"
msgstr "Entpacken der Abbilddatei \"{}\" fehlgeschlagen"
#: src/modules/unpackfs/main.py:415
msgid "No mount point for root partition"

View File

@ -7,6 +7,12 @@
---
componentName: default
### WELCOME / OVERALL WORDING
#
# These settings affect some overall phrasing and looks,
# which are most visible in the welcome page.
# This selects between different welcome texts. When false, uses
# the traditional "Welcome to the %1 installer.", and when true,
# uses "Welcome to the Calamares installer for %1." This allows
@ -20,6 +26,12 @@ welcomeStyleCalamares: false
# may have surprising effects on HiDPI monitors).
welcomeExpandingLogo: true
### WINDOW CONFIGURATION
#
# The settings here affect the placement of the Calamares
# window through hints to the window manager and initial
# sizing of the Calamares window.
# Size and expansion policy for Calamares.
# - "normal" or unset, expand as needed, use *windowSize*
# - "fullscreen", start as large as possible, ignore *windowSize*
@ -41,6 +53,14 @@ windowSize: 800px,520px
# *windowExpanding* set to "fullscreen").
windowPlacement: center
### PANELS CONFIGURATION
#
# Calamares has a main content area, and two panels (navigation
# and progress / sidebar). The panels can be controlled individually,
# or switched off. If both panels are switched off, the layout of
# the main content area loses its margins, on the assumption that
# you're doing something special.
# Kind of sidebar (panel on the left, showing progress).
# - "widget" or unset, use traditional sidebar (logo, items)
# - "none", hide it entirely
@ -66,6 +86,12 @@ sidebar: widget
# except the default is *bottom*.
navigation: widget
### STRINGS, IMAGES AND COLORS
#
# This section contains the "branding proper" of names
# and images, rather than global-look settings.
# These are strings shown to the user in the user interface.
# There is no provision for translating them -- since they
# are names, the string is included as-is.
@ -139,9 +165,28 @@ images:
# productWallpaper: "wallpaper.png"
productWelcome: "languages.png"
# Colors for text and background components.
#
# - sidebarBackground is the background of the sidebar
# - sidebarText is the (foreground) text color
# - sidebarTextHighlight sets the background of the selected (current) step.
# Optional, and defaults to the application palette.
# - sidebarSelect is the text color of the selected step.
#
# These colors can **also** be set through the stylesheet, if the
# branding component also ships a stylesheet.qss. Then they are
# the corresponding CSS attributes of #sidebarApp.
style:
sidebarBackground: "#292F34"
sidebarText: "#FFFFFF"
sidebarTextSelect: "#292F34"
sidebarTextHighlight: "#D35400"
### SLIDESHOW
#
# The slideshow is displayed during execution steps (e.g. when the
# installer is actually writing to disk and doing other slow things).
#
# The slideshow can be a QML file (recommended) which can display
# arbitrary things -- text, images, animations, or even play a game --
# during the execution step. The QML **is** abruptly stopped when the
@ -171,19 +216,3 @@ slideshow: "show.qml"
slideshowAPI: 2
# Colors for text and background components.
#
# - sidebarBackground is the background of the sidebar
# - sidebarText is the (foreground) text color
# - sidebarTextHighlight sets the background of the selected (current) step.
# Optional, and defaults to the application palette.
# - sidebarSelect is the text color of the selected step.
#
# These colors can **also** be set through the stylesheet, if the
# branding component also ships a stylesheet.qss. Then they are
# the corresponding CSS attributes of #sidebarApp.
style:
sidebarBackground: "#292F34"
sidebarText: "#FFFFFF"
sidebarTextSelect: "#292F34"
sidebarTextHighlight: "#D35400"

View File

@ -49,10 +49,10 @@ windowPlacement: center
strings:
productName: Manjaro Linux
shortProductName: Manjaro
version: 20.0
shortVersion: 20.0
versionedName: Manjaro Linux 20.0 "Lysia"
shortVersionedName: Manjaro 20.0
version: 20.1
shortVersion: 20.1
versionedName: Manjaro Linux 20.1 "Mikah"
shortVersionedName: Manjaro 20.1
bootloaderEntryName: Manjaro
# These images are loaded from the branding module directory.

View File

@ -111,12 +111,12 @@ CalamaresWindow::getWidgetSidebar( QWidget* parent, int desiredWidth )
sideLayout->addWidget( debugWindowBtn );
debugWindowBtn->setFlat( true );
debugWindowBtn->setCheckable( true );
connect( debugWindowBtn, &QPushButton::clicked, this, [ = ]( bool checked ) {
connect( debugWindowBtn, &QPushButton::clicked, this, [=]( bool checked ) {
if ( checked )
{
m_debugWindow = new Calamares::DebugWindow();
m_debugWindow->show();
connect( m_debugWindow.data(), &Calamares::DebugWindow::closed, this, [ = ]() {
connect( m_debugWindow.data(), &Calamares::DebugWindow::closed, this, [=]() {
m_debugWindow->deleteLater();
debugWindowBtn->setChecked( false );
} );
@ -167,7 +167,7 @@ CalamaresWindow::getWidgetNavigation( QWidget* parent )
connect( back, &QPushButton::clicked, m_viewManager, &Calamares::ViewManager::back );
connect( m_viewManager, &Calamares::ViewManager::backEnabledChanged, back, &QPushButton::setEnabled );
connect( m_viewManager, &Calamares::ViewManager::backLabelChanged, back, &QPushButton::setText );
connect( m_viewManager, &Calamares::ViewManager::backIconChanged, this, [ = ]( QString n ) {
connect( m_viewManager, &Calamares::ViewManager::backIconChanged, this, [=]( QString n ) {
setButtonIcon( back, n );
} );
bottomLayout->addWidget( back );
@ -179,7 +179,7 @@ CalamaresWindow::getWidgetNavigation( QWidget* parent )
connect( next, &QPushButton::clicked, m_viewManager, &Calamares::ViewManager::next );
connect( m_viewManager, &Calamares::ViewManager::nextEnabledChanged, next, &QPushButton::setEnabled );
connect( m_viewManager, &Calamares::ViewManager::nextLabelChanged, next, &QPushButton::setText );
connect( m_viewManager, &Calamares::ViewManager::nextIconChanged, this, [ = ]( QString n ) {
connect( m_viewManager, &Calamares::ViewManager::nextIconChanged, this, [=]( QString n ) {
setButtonIcon( next, n );
} );
bottomLayout->addWidget( next );
@ -191,7 +191,7 @@ CalamaresWindow::getWidgetNavigation( QWidget* parent )
connect( quit, &QPushButton::clicked, m_viewManager, &Calamares::ViewManager::quit );
connect( m_viewManager, &Calamares::ViewManager::quitEnabledChanged, quit, &QPushButton::setEnabled );
connect( m_viewManager, &Calamares::ViewManager::quitLabelChanged, quit, &QPushButton::setText );
connect( m_viewManager, &Calamares::ViewManager::quitIconChanged, this, [ = ]( QString n ) {
connect( m_viewManager, &Calamares::ViewManager::quitIconChanged, this, [=]( QString n ) {
setButtonIcon( quit, n );
} );
connect( m_viewManager, &Calamares::ViewManager::quitTooltipChanged, quit, &QPushButton::setToolTip );
@ -237,11 +237,13 @@ CalamaresWindow::getQmlNavigation( QWidget* parent )
}
#else
// Bogus to keep the linker happy
QWidget * CalamaresWindow::getQmlSidebar(QWidget* , int )
QWidget*
CalamaresWindow::getQmlSidebar( QWidget*, int )
{
return nullptr;
}
QWidget * CalamaresWindow::getQmlNavigation(QWidget* )
QWidget*
CalamaresWindow::getQmlNavigation( QWidget* )
{
return nullptr;
}
@ -401,6 +403,14 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
insertIf( mainLayout, PanelSide::Right, navigation, branding->navigationSide() );
insertIf( mainLayout, PanelSide::Right, sideBox, branding->sidebarSide() );
// layout->count() returns number of things in it; above we have put
// at **least** the central widget, which comes from the view manager,
// both vertically and horizontally -- so if there's a panel along
// either axis, the count in that axis will be > 1.
m_viewManager->setPanelSides(
( contentsLayout->count() > 1 ? Qt::Orientations( Qt::Horizontal ) : Qt::Orientations() )
| ( mainLayout->count() > 1 ? Qt::Orientations( Qt::Vertical ) : Qt::Orientations() ) );
CalamaresUtils::unmarginLayout( mainLayout );
CalamaresUtils::unmarginLayout( contentsLayout );
baseWidget->setLayout( mainLayout );

View File

@ -7,6 +7,7 @@ import QtQuick.Layouts 1.3
Rectangle {
id: sideBar;
color: Branding.styleString( Branding.SidebarBackground );
anchors.fill: parent;
ColumnLayout {
anchors.fill: parent;
@ -27,16 +28,17 @@ Rectangle {
Repeater {
model: ViewManager
Rectangle {
Layout.leftMargin: 12;
width: parent.width - 24;
Layout.leftMargin: 6;
Layout.rightMargin: 6;
Layout.fillWidth: true;
height: 35;
radius: 6;
color: Branding.styleString( index == ViewManager.currentStepIndex ? Branding.SidebarTextHighlight : Branding.SidebarBackground );
color: Branding.styleString( index == ViewManager.currentStepIndex ? Branding.SidebarBackgroundSelected : Branding.SidebarBackground );
Text {
anchors.verticalCenter: parent.verticalCenter;
x: parent.x + 12;
color: Branding.styleString( index == ViewManager.currentStepIndex ? Branding.SidebarTextSelect : Branding.SidebarText );
anchors.horizontalCenter: parent.horizontalCenter;
color: Branding.styleString( index == ViewManager.currentStepIndex ? Branding.SidebarTextSelected : Branding.SidebarText );
text: display;
}
}

View File

@ -50,7 +50,7 @@ static unsigned int s_threshold =
static QMutex s_mutex;
static const char s_Continuation[] = "\n ";
static const char s_SubEntry[] = " .. ";
static const char s_SubEntry[] = " .. ";
namespace Logger
@ -79,7 +79,7 @@ logLevel()
}
static void
log( const char* msg, unsigned int debugLevel )
log( const char* msg, unsigned int debugLevel, bool withTime = true )
{
if ( true )
{
@ -95,13 +95,15 @@ log( const char* msg, unsigned int debugLevel )
logfile.flush();
}
if ( debugLevel <= LOGEXTRA || debugLevel < s_threshold )
if ( logLevelEnabled( debugLevel ) )
{
QMutexLocker lock( &s_mutex );
std::cout << QTime::currentTime().toString().toUtf8().data() << " ["
<< QString::number( debugLevel ).toUtf8().data() << "]: " << msg << std::endl;
std::cout.flush();
if ( withTime )
{
std::cout << QTime::currentTime().toString().toUtf8().data() << " ["
<< QString::number( debugLevel ).toUtf8().data() << "]: ";
}
std::cout << msg << std::endl;
}
}
@ -199,12 +201,15 @@ CDebug::CDebug( unsigned int debugLevel, const char* func )
CDebug::~CDebug()
{
if ( m_funcinfo )
if ( logLevelEnabled( m_debugLevel ) )
{
m_msg.prepend( s_Continuation ); // Prepending, so back-to-front
m_msg.prepend( m_funcinfo );
if ( m_funcinfo )
{
m_msg.prepend( s_Continuation ); // Prepending, so back-to-front
m_msg.prepend( m_funcinfo );
}
log( m_msg.toUtf8().data(), m_debugLevel, m_funcinfo );
}
log( m_msg.toUtf8().data(), m_debugLevel );
}
constexpr FuncSuppressor::FuncSuppressor( const char s[] )

View File

@ -38,21 +38,19 @@ namespace CalamaresUtils
bool
getBool( const QVariantMap& map, const QString& key, bool d )
{
bool result = d;
if ( map.contains( key ) )
{
auto v = map.value( key );
if ( v.type() == QVariant::Bool )
{
result = v.toBool();
return v.toBool();
}
}
return result;
return d;
}
QString
getString( const QVariantMap& map, const QString& key )
getString( const QVariantMap& map, const QString& key, const QString& d )
{
if ( map.contains( key ) )
{
@ -62,11 +60,11 @@ getString( const QVariantMap& map, const QString& key )
return v.toString();
}
}
return QString();
return d;
}
QStringList
getStringList( const QVariantMap& map, const QString& key )
getStringList( const QVariantMap& map, const QString& key, const QStringList& d )
{
if ( map.contains( key ) )
{
@ -76,60 +74,53 @@ getStringList( const QVariantMap& map, const QString& key )
return v.toStringList();
}
}
return QStringList();
return d;
}
qint64
getInteger( const QVariantMap& map, const QString& key, qint64 d )
{
qint64 result = d;
if ( map.contains( key ) )
{
auto v = map.value( key );
result = v.toString().toLongLong(nullptr, 0);
return v.toString().toLongLong(nullptr, 0);
}
return result;
return d;
}
quint64
getUnsignedInteger( const QVariantMap& map, const QString& key, quint64 u )
getUnsignedInteger( const QVariantMap& map, const QString& key, quint64 d )
{
quint64 result = u;
if ( map.contains( key ) )
{
auto v = map.value( key );
result = v.toString().toULongLong(nullptr, 0);
return v.toString().toULongLong(nullptr, 0);
}
return result;
return d;
}
double
getDouble( const QVariantMap& map, const QString& key, double d )
{
double result = d;
if ( map.contains( key ) )
{
auto v = map.value( key );
if ( v.type() == QVariant::Int )
{
result = v.toInt();
return v.toInt();
}
else if ( v.type() == QVariant::Double )
{
result = v.toDouble();
return v.toDouble();
}
}
return result;
return d;
}
QVariantMap
getSubMap( const QVariantMap& map, const QString& key, bool& success )
getSubMap( const QVariantMap& map, const QString& key, bool& success, const QVariantMap& d )
{
success = false;
if ( map.contains( key ) )
{
auto v = map.value( key );
@ -139,7 +130,7 @@ getSubMap( const QVariantMap& map, const QString& key, bool& success )
return v.toMap();
}
}
return QVariantMap();
return d;
}
} // namespace CalamaresUtils

View File

@ -33,45 +33,44 @@
namespace CalamaresUtils
{
/**
* Get a bool value from a mapping with a given key; returns the default
* if no value is stored in the map.
* Get a bool value from a mapping with a given key; returns @p d if no value.
*/
DLLEXPORT bool getBool( const QVariantMap& map, const QString& key, bool d );
DLLEXPORT bool getBool( const QVariantMap& map, const QString& key, bool d = false );
/**
* Get a string value from a mapping; returns empty QString if no value.
* Get a string value from a mapping with a given key; returns @p d if no value.
*/
DLLEXPORT QString getString( const QVariantMap& map, const QString& key );
DLLEXPORT QString getString( const QVariantMap& map, const QString& key, const QString& d = QString() );
/**
* Get a string list from a mapping; returns empty list if no value.
* Get a string list from a mapping with a given key; returns @p d if no value.
*/
DLLEXPORT QStringList getStringList( const QVariantMap& map, const QString& key );
DLLEXPORT QStringList getStringList( const QVariantMap& map, const QString& key, const QStringList& d = QStringList() );
/**
* Get an integer value from a mapping; returns @p d if no value.
* Get an integer value from a mapping with a given key; returns @p d if no value.
*/
DLLEXPORT qint64 getInteger( const QVariantMap& map, const QString& key, qint64 d );
DLLEXPORT qint64 getInteger( const QVariantMap& map, const QString& key, qint64 d = 0);
/**
* Get an unsigned integer value from a mapping; returns @p u if no value.
* Get an unsigned integer value from a mapping with a given key; returns @p d if no value.
*/
DLLEXPORT quint64 getUnsignedInteger( const QVariantMap& map, const QString& key, quint64 u );
DLLEXPORT quint64 getUnsignedInteger( const QVariantMap& map, const QString& key, quint64 d = 0 );
/**
* Get a double value from a mapping (integers are converted); returns @p d if no value.
* Get a double value from a mapping with a given key (integers are converted); returns @p d if no value.
*/
DLLEXPORT double getDouble( const QVariantMap& map, const QString& key, double d );
DLLEXPORT double getDouble( const QVariantMap& map, const QString& key, double d = 0.0 );
/**
* Returns a sub-map (i.e. a nested map) from the given mapping with the
* Returns a sub-map (i.e. a nested map) from a given mapping with a
* given key. @p success is set to true if the @p key exists
* in @p map and converts to a map, false otherwise.
*
* Returns an empty map if there is no such key or it is not a map-value.
* Returns @p d if there is no such key or it is not a map-value.
* (e.g. if @p success is false).
*/
DLLEXPORT QVariantMap getSubMap( const QVariantMap& map, const QString& key, bool& success );
DLLEXPORT QVariantMap getSubMap( const QVariantMap& map, const QString& key, bool& success, const QVariantMap& d = QVariantMap() );
} // namespace CalamaresUtils
#endif

View File

@ -2,6 +2,7 @@
*
* SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
* SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
*
* Calamares is free software: you can redistribute it and/or modify
@ -17,8 +18,6 @@
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
* License-Filename: LICENSE
*
*/
#include "Yaml.h"
@ -125,7 +124,6 @@ yamlToStringList( const YAML::Node& listNode )
return l;
}
void
explainYamlException( const YAML::Exception& e, const QByteArray& yamlData, const char* label )
{

View File

@ -2,6 +2,7 @@
*
* SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
* SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
*
* Calamares is free software: you can redistribute it and/or modify
@ -17,11 +18,16 @@
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
* License-Filename: LICENSE
*
*/
/*
* YAML conversions and YAML convenience header.
*
* Includes the system YAMLCPP headers without warnings (by switching off
* the expected warnings) and provides a handful of methods for
* converting between YAML and QVariant.
*/
#ifndef UTILS_YAML_H
#define UTILS_YAML_H
@ -50,7 +56,7 @@ class QFileInfo;
#pragma clang diagnostic pop
#endif
/// @brief Appends all te elements of @p node to the string list @p v
/// @brief Appends all the elements of @p node to the string list @p v
void operator>>( const YAML::Node& node, QStringList& v );
namespace CalamaresUtils

View File

@ -132,9 +132,7 @@ loadStrings( QMap< QString, QString >& map,
throw YAML::Exception( YAML::Mark(), std::string( "Branding configuration is not a map: " ) + key );
}
const auto& config = CalamaresUtils::yamlMapToVariant( doc[ key ] );
map.clear();
const QVariantMap config = CalamaresUtils::yamlMapToVariant( doc[ key ] );
for ( auto it = config.constBegin(); it != config.constEnd(); ++it )
{
map.insert( it.key(), transform( it.value().toString() ) );
@ -369,7 +367,7 @@ Branding::WindowDimension::isValid() const
}
/// @brief Guard against cases where the @p key doesn't exist in @p doc
/// @brief Get a string (empty is @p key doesn't exist) from @p key in @p doc
static inline QString
getString( const YAML::Node& doc, const char* key )
{
@ -380,6 +378,18 @@ getString( const YAML::Node& doc, const char* key )
return QString();
}
/// @brief Get a node (throws if @p key doesn't exist) from @p key in @p doc
static inline YAML::Node
get( const YAML::Node& doc, const char* key )
{
auto r = doc[ key ];
if ( !r.IsDefined() )
{
throw YAML::KeyNotFound( YAML::Mark::null_mark(), std::string( key ) );
}
return r;
}
static inline void
flavorAndSide( const YAML::Node& doc, const char* key, Branding::PanelFlavor& flavor, Branding::PanelSide& side )
{
@ -516,10 +526,11 @@ Branding::initSlideshowSettings( const YAML::Node& doc )
{
QDir componentDir( componentDirectory() );
if ( doc[ "slideshow" ].IsSequence() )
auto slideshow = get( doc, "slideshow" );
if ( slideshow.IsSequence() )
{
QStringList slideShowPictures;
doc[ "slideshow" ] >> slideShowPictures;
slideshow >> slideShowPictures;
for ( int i = 0; i < slideShowPictures.count(); ++i )
{
QString pathString = slideShowPictures[ i ];
@ -537,9 +548,9 @@ Branding::initSlideshowSettings( const YAML::Node& doc )
m_slideshowAPI = -1;
}
#ifdef WITH_QML
else if ( doc[ "slideshow" ].IsScalar() )
else if ( slideshow.IsScalar() )
{
QString slideshowPath = QString::fromStdString( doc[ "slideshow" ].as< std::string >() );
QString slideshowPath = QString::fromStdString( slideshow.as< std::string >() );
QFileInfo slideshowFi( componentDir.absoluteFilePath( slideshowPath ) );
if ( !slideshowFi.exists() || !slideshowFi.fileName().toLower().endsWith( ".qml" ) )
bail( m_descriptorPath,
@ -548,7 +559,9 @@ Branding::initSlideshowSettings( const YAML::Node& doc )
m_slideshowPath = slideshowFi.absoluteFilePath();
// API choice is relevant for QML slideshow
int api = doc[ "slideshowAPI" ].IsScalar() ? doc[ "slideshowAPI" ].as< int >() : -1;
// TODO:3.3: use get(), make slideshowAPI required
int api
= ( doc[ "slideshowAPI" ] && doc[ "slideshowAPI" ].IsScalar() ) ? doc[ "slideshowAPI" ].as< int >() : -1;
if ( ( api < 1 ) || ( api > 2 ) )
{
cWarning() << "Invalid or missing *slideshowAPI* in branding file.";
@ -557,7 +570,7 @@ Branding::initSlideshowSettings( const YAML::Node& doc )
m_slideshowAPI = api;
}
#else
else if ( doc[ "slideshow" ].IsScalar() )
else if ( slideshow.IsScalar() )
{
cWarning() << "Invalid *slideshow* setting, must be list of images.";
}

View File

@ -83,7 +83,9 @@ public:
SidebarBackground,
SidebarText,
SidebarTextSelect,
SidebarTextHighlight
SidebarTextSelected = SidebarTextSelect, // TODO:3.3:Remove SidebarTextSelect
SidebarTextHighlight,
SidebarBackgroundSelected = SidebarTextHighlight // TODO:3.3:Remove SidebarTextHighlight
};
Q_ENUM( StyleEntry )

View File

@ -67,10 +67,12 @@ ViewManager::ViewManager( QObject* parent )
: QAbstractListModel( parent )
, m_currentStep( -1 )
, m_widget( new QWidget() )
, m_panelSides( Qt::Horizontal | Qt::Vertical )
{
Q_ASSERT( !s_instance );
QBoxLayout* mainLayout = new QVBoxLayout;
mainLayout->setContentsMargins( 0, 0, 0, 0 );
m_widget->setObjectName( "viewManager" );
m_widget->setLayout( mainLayout );
@ -127,15 +129,19 @@ ViewManager::insertViewStep( int before, ViewStep* step )
{
cError() << "ViewStep" << step->moduleInstanceKey() << "has no widget.";
}
QLayout* layout = step->widget()->layout();
if ( layout )
else
{
layout->setContentsMargins( 0, 0, 0, 0 );
QLayout* layout = step->widget()->layout();
if ( layout )
{
const auto margins = step->widgetMargins( m_panelSides );
layout->setContentsMargins( margins.width(), margins.height(), margins.width(), margins.height() );
}
m_stack->insertWidget( before, step->widget() );
m_stack->setCurrentIndex( 0 );
step->widget()->setFocus();
}
m_stack->insertWidget( before, step->widget() );
m_stack->setCurrentIndex( 0 );
step->widget()->setFocus();
emit endInsertRows();
}

View File

@ -54,6 +54,9 @@ class UIDLLEXPORT ViewManager : public QAbstractListModel
Q_PROPERTY( bool quitVisible READ quitVisible NOTIFY quitVisibleChanged FINAL )
///@brief Sides on which the ViewManager has side-panels
Q_PROPERTY( Qt::Orientations panelSides READ panelSides WRITE setPanelSides MEMBER m_panelSides )
public:
/**
* @brief instance access to the ViewManager singleton.
@ -100,13 +103,17 @@ public:
int currentStepIndex() const;
/**
* @ brief Called when "Cancel" is clicked; asks for confirmation.
* @brief Called when "Cancel" is clicked; asks for confirmation.
* Other means of closing Calamares also call this method, e.g. alt-F4.
* At the end of installation, no confirmation is asked. Returns true
* if the user confirms closing the window.
* At the end of installation, no confirmation is asked.
*
* @return @c true if the user confirms closing the window.
*/
bool confirmCancelInstallation();
Qt::Orientations panelSides() const { return m_panelSides; }
void setPanelSides( Qt::Orientations panelSides ) { m_panelSides = panelSides; }
public Q_SLOTS:
/**
* @brief next moves forward to the next page of the current ViewStep (if any),
@ -244,6 +251,8 @@ private:
QString m_quitTooltip;
bool m_quitVisible = true;
Qt::Orientations m_panelSides;
public:
/** @section Model
*

View File

@ -87,6 +87,7 @@ UIDLLEXPORT QPixmap defaultPixmap( ImageType type,
ImageMode mode = CalamaresUtils::Original,
const QSize& size = QSize( 0, 0 ) );
// TODO:3.3:This has only one consumer, move to ImageRegistry, make static
/**
* @brief createRoundedImage returns a rounded version of a pixmap.
* @param avatar the input pixmap.
@ -103,6 +104,7 @@ UIDLLEXPORT QPixmap createRoundedImage( const QPixmap& avatar, const QSize& size
*/
UIDLLEXPORT void unmarginLayout( QLayout* layout );
// TODO:3.3:This has only one consumer, move to LicensePage, make static
/**
* @brief clearLayout recursively walks the QLayout tree and deletes all the child
* widgets and layouts.
@ -113,7 +115,7 @@ UIDLLEXPORT void clearLayout( QLayout* layout );
UIDLLEXPORT void setDefaultFontSize( int points );
UIDLLEXPORT int defaultFontSize(); // in points
UIDLLEXPORT int defaultFontHeight(); // in pixels, DPI-specific
UIDLLEXPORT QFont defaultFont();
UIDLLEXPORT QFont defaultFont(); // TODO:3.3:This has one consumer, move to BlankViewStep
UIDLLEXPORT QFont largeFont();
UIDLLEXPORT QSize defaultIconSize();

View File

@ -151,6 +151,22 @@ QmlViewStep::widget()
return m_widget;
}
QSize
QmlViewStep::widgetMargins( Qt::Orientations panelSides )
{
// If any panels around it, use the standard, but if all the
// panels are hidden, like on full-screen with subsumed navigation,
// then no margins.
if ( panelSides )
{
return ViewStep::widgetMargins( panelSides );
}
else
{
return QSize( 0, 0 );
}
}
void
QmlViewStep::loadComplete()
{

View File

@ -35,6 +35,15 @@ namespace Calamares
* This is generally a **base** class for other view steps, but
* it can be used stand-alone for viewsteps that don't really have
* any functionality.
*
* Most subclasses will override the following methods:
* - prettyName() to provide a meaningful human-readable name
* - jobs() if there is real work to be done during installation
* - getConfig() to return a meaningful configuration object
*
* For details on the interaction between the config object and
* the QML in the module, see the module documentation:
* src/modules/README.md
*/
class QmlViewStep : public Calamares::ViewStep
{
@ -55,6 +64,7 @@ public:
virtual QString prettyName() const override;
virtual QWidget* widget() override;
virtual QSize widgetMargins( Qt::Orientations panelSides ) override;
virtual bool isNextEnabled() const override;
virtual bool isBackEnabled() const override;

View File

@ -19,6 +19,9 @@
#include "ViewStep.h"
#include <QApplication>
#include <QStyle>
namespace Calamares
{
@ -85,4 +88,14 @@ ViewStep::checkRequirements()
return RequirementsList();
}
QSize
ViewStep::widgetMargins( Qt::Orientations panelSides )
{
Q_UNUSED( panelSides )
// Application's default style
const auto* s = QApplication::style();
return QSize( s->pixelMetric( QStyle::PM_LayoutLeftMargin ), s->pixelMetric( QStyle::PM_LayoutTopMargin ) );
}
} // namespace Calamares

View File

@ -52,27 +52,61 @@ public:
explicit ViewStep( QObject* parent = nullptr );
virtual ~ViewStep() override;
/** @brief Human-readable name of the step
*
* This (translated) string is shown in the sidebar (progress)
* and during installation. There is no default.
*/
virtual QString prettyName() const = 0;
/**
/** @brief Describe what this step will do during install
*
* Optional. May return a non-empty string describing what this
* step is going to do (should be translated). This is also used
* in the summary page to describe what is going to be done.
* Return an empty string to provide no description.
*
* The default implementation returns an empty string, so nothing
* will be displayed for this step when a summary is shown.
*/
virtual QString prettyStatus() const;
/**
/** @brief Return a long description what this step will do during install
*
* Optional. May return a widget which will be inserted in the summary
* page. The caller takes ownership of the widget. Return nullptr to
* provide no widget. In general, this is only used for complicated
* steps where prettyStatus() is not sufficient.
*
* The default implementation returns nullptr, so nothing
* will be displayed for this step when a summary is shown.
*/
virtual QWidget* createSummaryWidget() const;
//TODO: we might want to make this a QSharedPointer
/** @brief Get (or create) the widget for this view step
*
* While a view step **may** create the widget when it is loaded,
* it is recommended to wait with widget creation until the
* widget is actually asked for: a view step **may** be used
* without a UI.
*/
virtual QWidget* widget() = 0;
/** @brief Get margins for this widget
*
* This is called by the layout manager to find the desired
* margins (width is used for left and right margin, height is
* used for top and bottom margins) for the widget. The
* @p panelSides indicates where there are panels in the overall
* layout: horizontally and / or vertically adjacent (or none!)
* to the view step's widget.
*
* Should return a size based also on QStyle metrics for layout.
* The default implementation just returns the default layout metrics
* (often 11 pixels on a side).
*/
virtual QSize widgetMargins( Qt::Orientations panelSides );
/**
* @brief Multi-page support, go next
*

View File

@ -9,20 +9,16 @@ Each Calamares module lives in its own directory.
All modules are installed in `$DESTDIR/lib/calamares/modules`.
There are two **types** of Calamares module:
* viewmodule, for user-visible modules. These may be in C++, or PythonQt.
* viewmodule, for user-visible modules. These use C++ and QWidgets or QML
* jobmodule, for not-user-visible modules. These may be done in C++,
Python, or as external processes.
A viewmodule exposes a UI to the user. The PythonQt-based modules
are considered experimental (and as of march 2019 may be on the
way out again as never-used-much and PythonQt is not packaged
on Debian anymore).
A viewmodule exposes a UI to the user.
There are three (four) **interfaces** for Calamares modules:
There are three **interfaces** for Calamares modules:
* qtplugin (viewmodules, jobmodules),
* python (jobmodules only),
* pythonqt (viewmodules, jobmodules, optional),
* process (jobmodules only).
* process (jobmodules only, not recommended).
## Module directory
@ -50,7 +46,7 @@ Module descriptors **must** have the following keys:
- *interface* (see below for the different interfaces; generally we
refer to the kinds of modules by their interface)
Module descriptors for Python and PythonQt modules **must** have the following key:
Module descriptors for Python modules **must** have the following key:
- *script* (the name of the Python script to load, nearly always `main.py`)
Module descriptors **may** have the following keys:
@ -133,15 +129,67 @@ a `CMakeLists.txt` with a `calamares_add_plugin` call. It will be picked
up automatically by our CMake magic. The `module.desc` file is not recommended:
nearly all cases can be described in CMake.
### C++ Jobmodule
**TODO:** this needs documentation
### C++ Widgets Viewmodule
**TODO:** this needs documentation
### C++ QML Viewmodule
A QML Viewmodule (or view step) puts much of the UI work in one or more
QML files; the files may be loaded from the branding directory or compiled
into the module. Which QML is used depends on the deployment and the
configuration files for Calamares.
#### Explicit properties
The QML can access data from the C++ framework though properties
exposed to QML. There are two libraries that need to be imported
explicitly:
```
import io.calamares.core 1.0
import io.calamares.ui 1.0
```
The *ui* library contains the *Branding* object, which corresponds to
the branding information set through `branding.desc`. The Branding
class (in `src/libcalamaresui/Branding.h` offers a QObject-property
based API, where the most important functions are `string()` and the
convenience functions `versionedName()` and similar.
The *core* library contains both *ViewManager*, which handles overall
progress through the application, and *Global*, which holds global
storage information. Both objects have an extensive API. The *ViewManager*
can behave as a model for list views and the like.
These explicit properties from libraries are shared across all the
QML modules (for global storage that goes without saying: it is
the mechanism to share information with other modules).
#### Implicit properties
Each module also has an implicit context property available to it.
No import is needed. The context property *config* (note lower case)
holds the Config object for the module.
The Config object is the bridge between C++ and QML.
A Config object must inherit QObject and should expose, as `Q_PROPERTY`,
all of the relevant configuration information for the module instance.
The general description how to do that is available
in the [Qt documentation](https://doc.qt.io/qt-5/qtqml-cppintegration-topic.html).
## Python modules
Modules may use one of the python interfaces, which may be present
in a Calamares installation (but also may not be). These modules must have
a `module.desc` file. The Python script must implement one or more of the
Python interfaces for Calamares -- either the python jobmodule interface,
or the experimental pythonqt job- and viewmodule interfaces.
a `module.desc` file. The Python script must implement the
Python jobmodule interface.
To add a Python or process jobmodule, put it in a subdirectory and make sure
it has a `module.desc`. It will be picked up automatically by our CMake magic.
@ -178,31 +226,19 @@ description if something went wrong.
## PythonQt modules
## PythonQt modules (deprecated)
> Type: viewmodule, jobmodule
> Interface: pythonqt
The PythonQt modules are considered experimental and may be removed again
due to low uptake. Their documentation is also almost completely lacking.
### PythonQt Jobmodule
A PythonQt jobmodule implements the experimental Job interface by defining
a subclass of something.
### PythonQt Viewmodule
A PythonQt viewmodule implements the experimental View interface by defining
a subclass of something.
### Python API
**TODO:** this needs documentation
The PythonQt modules are deprecated and will be removed in Calamares 3.3.
Their documentation is also almost completely lacking.
## Process jobmodules
## Process modules
Use of this kind of module is **not** recommended.
> Type: jobmodule
> Interface: process

View File

@ -107,10 +107,6 @@ LicensePage::LicensePage( QWidget* parent )
// ui->verticalLayout->insertSpacing( 1, CalamaresUtils::defaultFontHeight() );
CalamaresUtils::unmarginLayout( ui->verticalLayout );
ui->mainText->setWordWrap( true );
ui->mainText->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum );
ui->acceptFrame->setFrameStyle( QFrame::NoFrame | QFrame::Plain );
ui->acceptFrame->setStyleSheet( mustAccept );
ui->acceptFrame->layout()->setMargin( CalamaresUtils::defaultFontHeight() / 2 );

View File

@ -40,6 +40,7 @@ NetInstallPage::NetInstallPage( Config* c, QWidget* parent )
, ui( new Ui::Page_NetInst )
{
ui->setupUi( this );
ui->groupswidget->header()->setSectionResizeMode( QHeaderView::ResizeToContents );
ui->groupswidget->setModel( c->model() );
connect( c, &Config::statusChanged, this, &NetInstallPage::setStatus );
connect( c, &Config::statusReady, this, &NetInstallPage::expandGroups );
@ -88,8 +89,6 @@ NetInstallPage::expandGroups()
ui->groupswidget->setExpanded( index, true );
}
}
// Make sure all the group names are visible
ui->groupswidget->resizeColumnToContents(0);
}
void

View File

@ -178,6 +178,7 @@ class PMPackageKit(PackageManager):
def update_system(self):
check_target_env_call(["pkcon", "-py", "update"])
class PMZypp(PackageManager):
backend = "zypp"
@ -198,6 +199,7 @@ class PMZypp(PackageManager):
# Doesn't need to update the system explicitly
pass
class PMYum(PackageManager):
backend = "yum"
@ -215,6 +217,7 @@ class PMYum(PackageManager):
def update_system(self):
check_target_env_call(["yum", "-y", "upgrade"])
class PMDnf(PackageManager):
backend = "dnf"
@ -274,6 +277,7 @@ class PMApt(PackageManager):
# Doesn't need to update the system explicitly
pass
class PMXbps(PackageManager):
backend = "xbps"
@ -289,6 +293,7 @@ class PMXbps(PackageManager):
def update_system(self):
check_target_env_call(["xbps", "-Suy"])
class PMPacman(PackageManager):
backend = "pacman"
@ -311,6 +316,31 @@ class PMPacman(PackageManager):
check_target_env_call(["pacman", "-Su", "--noconfirm"])
class PMPamac(PackageManager):
backend = "pamac"
def del_db_lock(self, lock="/var/lib/pacman/db.lck"):
# In case some error or crash, the database will be locked,
# resulting in remaining packages not being installed.
check_target_env_call(["rm", "-f", lock])
def install(self, pkgs, from_local=False):
self.del_db_lock()
check_target_env_call([self.backend, "install", "--no-confirm"] + pkgs)
def remove(self, pkgs):
self.del_db_lock()
check_target_env_call([self.backend, "remove", "--no-confirm"] + pkgs)
def update_db(self):
self.del_db_lock()
check_target_env_call([self.backend, "update", "--no-confirm"])
def update_system(self):
self.del_db_lock()
check_target_env_call([self.backend, "upgrade", "--no-confirm"])
class PMPortage(PackageManager):
backend = "portage"

View File

@ -1,16 +1,19 @@
---
#
# Which package manager to use, options are:
# - packagekit - PackageKit CLI tool
# - zypp - Zypp RPM frontend
# - yum - Yum RPM frontend
# - dnf - DNF, the new RPM frontend
# - urpmi - Mandriva package manager
# - apk - Alpine Linux package manager
# - apt - APT frontend for DEB and RPM
# - pacman - Pacman
# - portage - Gentoo package manager
# - dnf - DNF, the new RPM frontend
# - entropy - Sabayon package manager
# - apk = Alpine Linux package manager
# - packagekit - PackageKit CLI tool
# - pacman - Pacman
# - pamac - Manjaro package manager
# - portage - Gentoo package manager
# - urpmi - Mandriva package manager
# - yum - Yum RPM frontend
# - zypp - Zypp RPM frontend
#
# Not actually a package manager, but suitable for testing:
# - dummy - Dummy manager, only logs
#
backend: dummy

View File

@ -4,30 +4,40 @@ $id: https://calamares.io/schemas/packages
additionalProperties: false
type: object
properties:
"backend": { type: string, required: true, enum: [packagekit, zypp, yum, dnf, urpmi, apt, pacman, portage, entropy] }
"update_db": { type: boolean, default: true }
"operations":
type: seq
sequence:
- type: map
mapping:
"install":
type: seq
sequence:
- { type: text }
"remove":
type: seq
sequence:
- { type: text }
"localInstall":
type: seq
sequence:
- { type: text }
"try_install":
type: seq
sequence:
- { type: text }
"try_remove":
type: seq
sequence:
- { type: text }
backend:
type: string
enum:
- apk
- apt
- dnf
- entropy
- packagekit
- pacman
- pamac
- portage
- urpmi
- yum
- zypp
- dummy
update_db: { type: boolean, default: true }
update_system: { type: boolean, default: false }
skip_if_no_internet: { type: boolean, default: false }
operations:
type: array
items:
additionalProperties: false
type: object
properties:
# TODO: these are either-string-or-struct items,
# need their own little schema.
install: { type: array }
remove: { type: array }
try_install: { type: array }
try_remove: { type: array }
localInstall: { type: array }
source: { type: string }
required: [ backend ]

View File

@ -92,6 +92,19 @@ isIso9660( const Device* device )
return false;
}
static inline bool
isZRam( const Device* device )
{
const QString path = device->deviceNode();
return path.startsWith( "/dev/zram" );
}
static inline bool
isFloppyDrive( const Device* device )
{
const QString path = device->deviceNode();
return path.startsWith( "/dev/fd" ) || path.startsWith( "/dev/floppy" );
}
static inline QDebug&
operator<<( QDebug& s, QList< Device* >::iterator& it )
@ -112,7 +125,7 @@ erase( DeviceList& l, DeviceList::iterator& it )
}
QList< Device* >
getDevices( DeviceType which, qint64 minimumSize )
getDevices( DeviceType which )
{
bool writableOnly = ( which == DeviceType::WritableOnly );
@ -138,11 +151,16 @@ getDevices( DeviceType which, qint64 minimumSize )
cDebug() << Logger::SubEntry << "Skipping nullptr device";
it = erase( devices, it );
}
else if ( ( *it )->deviceNode().startsWith( "/dev/zram" ) )
else if ( isZRam( *it ) )
{
cDebug() << Logger::SubEntry << "Removing zram" << it;
it = erase( devices, it );
}
else if ( isFloppyDrive( ( *it ) ) )
{
cDebug() << Logger::SubEntry << "Removing floppy disk" << it;
it = erase( devices, it );
}
else if ( writableOnly && hasRootPartition( *it ) )
{
cDebug() << Logger::SubEntry << "Removing device with root filesystem (/) on it" << it;
@ -153,11 +171,6 @@ getDevices( DeviceType which, qint64 minimumSize )
cDebug() << Logger::SubEntry << "Removing device with iso9660 filesystem (probably a CD) on it" << it;
it = erase( devices, it );
}
else if ( ( minimumSize >= 0 ) && !( ( *it )->capacity() > minimumSize ) )
{
cDebug() << Logger::SubEntry << "Removing too-small" << it;
it = erase( devices, it );
}
else
{
++it;

View File

@ -40,12 +40,9 @@ enum class DeviceType
* the system, filtering out those that do not meet a criterium.
* If set to WritableOnly, only devices which can be overwritten
* safely are returned (e.g. RO-media are ignored, as are mounted partitions).
* @param minimumSize Can be used to filter devices based on their
* size (in bytes). If non-negative, only devices with a size
* greater than @p minimumSize will be returned.
* @return a list of Devices meeting this criterium.
*/
QList< Device* > getDevices( DeviceType which = DeviceType::All, qint64 minimumSize = -1 );
QList< Device* > getDevices( DeviceType which = DeviceType::All );
} // namespace PartUtils

View File

@ -122,6 +122,7 @@ PartitionViewStep::~PartitionViewStep()
{
m_manualPartitionPage->deleteLater();
}
delete m_core;
}

View File

@ -93,6 +93,10 @@ mapForPartition( Partition* partition, const QString& uuid )
map[ "device" ] = partition->partitionPath();
map[ "partlabel" ] = partition->label();
map[ "partuuid" ] = partition->uuid();
#ifdef WITH_KPMCORE42API
map[ "parttype" ] = partition->type();
map[ "partattrs" ] = partition->attributes();
#endif
map[ "mountPoint" ] = PartitionInfo::mountPoint( partition );
map[ "fsName" ] = userVisibleFS( partition->fileSystem() );
map[ "fs" ] = untranslatedFS( partition->fileSystem() );
@ -110,6 +114,7 @@ mapForPartition( Partition* partition, const QString& uuid )
using TR = Logger::DebugRow< const char* const, const QString& >;
deb << Logger::SubEntry << "mapping for" << partition->partitionPath() << partition->deviceNode()
<< TR( "partlabel", map[ "partlabel" ].toString() ) << TR( "partuuid", map[ "partuuid" ].toString() )
<< TR( "parttype", map[ "partype" ].toString() ) << TR( "partattrs", map[ "partattrs" ].toString() )
<< TR( "mountPoint:", PartitionInfo::mountPoint( partition ) ) << TR( "fs:", map[ "fs" ].toString() )
<< TR( "fsName", map[ "fsName" ].toString() ) << TR( "uuid", uuid )
<< TR( "claimed", map[ "claimed" ].toString() );