Merge branch 'development' into 3.2.x-stable
This commit is contained in:
commit
574ba783ad
@ -61,6 +61,10 @@ Name[eu]=Sistema instalatu
|
||||
Icon[eu]=calamares
|
||||
GenericName[eu]=Sistema instalatzailea
|
||||
Comment[eu]=Calamares - sistema instalatzailea
|
||||
Name[fa]=نصب سامانه
|
||||
Icon[fa]=کالامارس
|
||||
GenericName[fa]=نصبکنندهٔ سامانه
|
||||
Comment[fa]=کالامارس — نصبکنندهٔ سامانه
|
||||
Name[es_PR]=Instalar el sistema
|
||||
Name[fr]=Installer le système
|
||||
Icon[fr]=calamares
|
||||
|
@ -102,7 +102,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/calamares/DebugWindow.ui" line="106"/>
|
||||
<source>Reload Stylesheet</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Recargar Hoja de estilo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/calamares/DebugWindow.ui" line="113"/>
|
||||
@ -120,7 +120,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/viewpages/ExecutionViewStep.cpp" line="92"/>
|
||||
<source>Set up</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Instalar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/viewpages/ExecutionViewStep.cpp" line="92"/>
|
||||
@ -138,7 +138,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/libcalamares/JobExample.cpp" line="40"/>
|
||||
<source>Programmed job failure was explicitly requested.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Se solicitó de manera explícita la falla del trabajo programado.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -154,7 +154,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/libcalamares/JobExample.cpp" line="27"/>
|
||||
<source>Example job (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ejemplo de trabajo (%1)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -162,12 +162,12 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/libcalamares/ProcessJob.cpp" line="52"/>
|
||||
<source>Run command '%1' in target system.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ejecutar el comando '% 1' en el sistema de destino.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamares/ProcessJob.cpp" line="52"/>
|
||||
<source> Run command '%1'.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ejecutar el comando '% 1'.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamares/ProcessJob.cpp" line="59"/>
|
||||
@ -213,17 +213,17 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/viewpages/QmlViewStep.cpp" line="76"/>
|
||||
<source>Loading ...</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Cargando ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/viewpages/QmlViewStep.cpp" line="97"/>
|
||||
<source>QML Step <i>%1</i>.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Paso QML <i>%1</i>.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/viewpages/QmlViewStep.cpp" line="261"/>
|
||||
<source>Loading failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>La carga ha fallado.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -231,9 +231,9 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message numerus="yes">
|
||||
<location filename="../src/libcalamares/modulesystem/RequirementsChecker.cpp" line="164"/>
|
||||
<source>Waiting for %n module(s).</source>
|
||||
<translation type="unfinished">
|
||||
<numerusform/>
|
||||
<numerusform/>
|
||||
<translation>
|
||||
<numerusform>Esperando %n módulo (s).</numerusform>
|
||||
<numerusform>Esperando %n módulo(s).</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
@ -247,7 +247,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/libcalamares/modulesystem/RequirementsChecker.cpp" line="170"/>
|
||||
<source>System-requirements checking is complete.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>La verificación de los requisitos del sistema está completa.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -255,7 +255,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="153"/>
|
||||
<source>Setup Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Configuración Fallida</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="153"/>
|
||||
@ -265,7 +265,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="154"/>
|
||||
<source>Would you like to paste the install log to the web?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>¿Desea pegar el registro de instalación en la web?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="167"/>
|
||||
@ -292,12 +292,12 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="192"/>
|
||||
<source>Install Log Paste URL</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Pegar URL Registro de Instalación</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="195"/>
|
||||
<source>The upload was unsuccessful. No web-paste was done.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>La carga no tuvo éxito. No se realizó pegado web.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="211"/>
|
||||
@ -322,12 +322,12 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="328"/>
|
||||
<source>Continue with installation?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Continuar con la instalación?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="330"/>
|
||||
<source>The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>El programa de instalación %1 está a punto de hacer cambios en el disco con el fin de configurar %2.<br/><strong>No podrá deshacer estos cambios.</strong></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="333"/>
|
||||
@ -337,7 +337,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="336"/>
|
||||
<source>&Set up now</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>&Configurar ahora</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="336"/>
|
||||
@ -352,7 +352,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="392"/>
|
||||
<source>&Set up</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>&Instalar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="392"/>
|
||||
@ -362,7 +362,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="394"/>
|
||||
<source>Setup is complete. Close the setup program.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>La instalación se ha completado. Cierre el instalador.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="395"/>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1838,7 +1838,7 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="76"/>
|
||||
<source>Office</source>
|
||||
<translation>辦公室</translation>
|
||||
<translation>辦公</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="77"/>
|
||||
@ -3619,7 +3619,7 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/WelcomePage.ui" line="185"/>
|
||||
<source>Open release notes website</source>
|
||||
<translation>開啟發行手記網站</translation>
|
||||
<translation>開啟發行記事網站</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/WelcomePage.ui" line="188"/>
|
||||
|
Binary file not shown.
@ -9,6 +9,7 @@
|
||||
# Guido Grasso <cuquiman97@gmail.com>, 2018
|
||||
# Adolfo Jayme-Barrientos, 2019
|
||||
# Miguel Mayol <mitcoes@gmail.com>, 2020
|
||||
# Pier Jose Gotta Perez <piegope@protonmail.com>, 2020
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
@ -17,7 +18,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-30 23:13+0200\n"
|
||||
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
||||
"Last-Translator: Miguel Mayol <mitcoes@gmail.com>, 2020\n"
|
||||
"Last-Translator: Pier Jose Gotta Perez <piegope@protonmail.com>, 2020\n"
|
||||
"Language-Team: Spanish (https://www.transifex.com/calamares/teams/20061/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -100,11 +101,11 @@ msgstr "Falló la sincronización mediante rsync con el código de error {}."
|
||||
|
||||
#: src/modules/unpackfs/main.py:302
|
||||
msgid "Unpacking image {}/{}, file {}/{}"
|
||||
msgstr ""
|
||||
msgstr "Desempaquetando la imagen {}/{}, archivo {}/{}"
|
||||
|
||||
#: src/modules/unpackfs/main.py:317
|
||||
msgid "Starting to unpack {}"
|
||||
msgstr ""
|
||||
msgstr "Iniciando el desempaquetado {}"
|
||||
|
||||
#: src/modules/unpackfs/main.py:326 src/modules/unpackfs/main.py:432
|
||||
msgid "Failed to unpack image \"{}\""
|
||||
@ -137,6 +138,8 @@ msgstr "Configuración de \"unsquash\" no válida"
|
||||
#: src/modules/unpackfs/main.py:423
|
||||
msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel"
|
||||
msgstr ""
|
||||
"El sistema de archivos para \"{}\" ({}) no es compatible con su kernel "
|
||||
"actual"
|
||||
|
||||
#: src/modules/unpackfs/main.py:427
|
||||
msgid "The source filesystem \"{}\" does not exist"
|
||||
|
Binary file not shown.
@ -3,6 +3,9 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
# Translators:
|
||||
# Danial Behzadi <dani.behzi@ubuntu.com>, 2020
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@ -10,6 +13,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-30 23:13+0200\n"
|
||||
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
||||
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>, 2020\n"
|
||||
"Language-Team: Persian (https://www.transifex.com/calamares/teams/20061/fa/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -20,30 +24,30 @@ msgstr ""
|
||||
#: src/modules/packages/main.py:59 src/modules/packages/main.py:68
|
||||
#: src/modules/packages/main.py:78
|
||||
msgid "Install packages."
|
||||
msgstr ""
|
||||
msgstr "نصب بستهها."
|
||||
|
||||
#: src/modules/packages/main.py:66
|
||||
#, python-format
|
||||
msgid "Processing packages (%(count)d / %(total)d)"
|
||||
msgstr ""
|
||||
msgstr "در حال پردازش بستهها (%(count)d/%(total)d)"
|
||||
|
||||
#: src/modules/packages/main.py:71
|
||||
#, python-format
|
||||
msgid "Installing one package."
|
||||
msgid_plural "Installing %(num)d packages."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "در حال نصب یک بسته."
|
||||
msgstr[1] "در حال نصب %(num)d بسته."
|
||||
|
||||
#: src/modules/packages/main.py:74
|
||||
#, python-format
|
||||
msgid "Removing one package."
|
||||
msgid_plural "Removing %(num)d packages."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "در حال برداشتن یک بسته."
|
||||
msgstr[1] "در حال برداشتن %(num)d بسته."
|
||||
|
||||
#: src/modules/networkcfg/main.py:37
|
||||
msgid "Saving network configuration."
|
||||
msgstr ""
|
||||
msgstr "در حال ذخیرهٔ پیکربندی شبکه."
|
||||
|
||||
#: src/modules/networkcfg/main.py:48 src/modules/initcpiocfg/main.py:205
|
||||
#: src/modules/initcpiocfg/main.py:209 src/modules/openrcdmcryptcfg/main.py:78
|
||||
@ -53,142 +57,146 @@ msgstr ""
|
||||
#: src/modules/fstab/main.py:338 src/modules/initramfscfg/main.py:94
|
||||
#: src/modules/initramfscfg/main.py:98 src/modules/rawfs/main.py:171
|
||||
msgid "Configuration Error"
|
||||
msgstr ""
|
||||
msgstr "خطای پیکربندی"
|
||||
|
||||
#: src/modules/networkcfg/main.py:49 src/modules/initcpiocfg/main.py:210
|
||||
#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/localecfg/main.py:145
|
||||
#: src/modules/luksopenswaphookcfg/main.py:100 src/modules/fstab/main.py:339
|
||||
#: src/modules/initramfscfg/main.py:99
|
||||
msgid "No root mount point is given for <pre>{!s}</pre> to use."
|
||||
msgstr ""
|
||||
msgstr "هیچ نقطهٔ اتّصال ریشهای برای استفادهٔ <pre>{!s}</pre> داده نشده."
|
||||
|
||||
#: src/modules/umount/main.py:40
|
||||
msgid "Unmount file systems."
|
||||
msgstr ""
|
||||
msgstr "پیاده کردن سامانههای پرونده."
|
||||
|
||||
#: src/modules/initcpiocfg/main.py:37
|
||||
msgid "Configuring mkinitcpio."
|
||||
msgstr ""
|
||||
msgstr "پیکربندی mkinitcpio."
|
||||
|
||||
#: src/modules/initcpiocfg/main.py:206 src/modules/openrcdmcryptcfg/main.py:79
|
||||
#: src/modules/mount/main.py:146 src/modules/luksopenswaphookcfg/main.py:96
|
||||
#: src/modules/fstab/main.py:333 src/modules/initramfscfg/main.py:95
|
||||
#: src/modules/rawfs/main.py:172
|
||||
msgid "No partitions are defined for <pre>{!s}</pre> to use."
|
||||
msgstr ""
|
||||
msgstr "هیچ افرازی برای استفادهٔ <pre>{!s}</pre> تعریف نشده."
|
||||
|
||||
#: src/modules/openrcdmcryptcfg/main.py:34
|
||||
msgid "Configuring OpenRC dmcrypt service."
|
||||
msgstr ""
|
||||
msgstr "در حال پیکربندی خدمت dmcrypt OpenRC."
|
||||
|
||||
#: 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:432
|
||||
msgid "Failed to unpack image \"{}\""
|
||||
msgstr ""
|
||||
msgstr "شکست در بستهگشایی تصویر {}"
|
||||
|
||||
#: src/modules/unpackfs/main.py:399
|
||||
msgid "No mount point for root partition"
|
||||
msgstr ""
|
||||
msgstr "هیچ نقطهٔ اتّصالی برای افراز ریشه وجود ندارد"
|
||||
|
||||
#: src/modules/unpackfs/main.py:400
|
||||
msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing"
|
||||
msgstr ""
|
||||
msgstr "globalstorage کلید rootMountPoint را ندارد. کاری انجام نمیشود"
|
||||
|
||||
#: src/modules/unpackfs/main.py:405
|
||||
msgid "Bad mount point for root partition"
|
||||
msgstr ""
|
||||
msgstr "نقطهٔ اتّصال بد برای افراز ریشه"
|
||||
|
||||
#: src/modules/unpackfs/main.py:406
|
||||
msgid "rootMountPoint is \"{}\", which does not exist, doing nothing"
|
||||
msgstr ""
|
||||
msgstr "نقطهٔ اتّصال ریشه {} است که وجود ندارد. کاری انجام نمیشود"
|
||||
|
||||
#: src/modules/unpackfs/main.py:422 src/modules/unpackfs/main.py:426
|
||||
#: src/modules/unpackfs/main.py:446
|
||||
msgid "Bad unsquash configuration"
|
||||
msgstr ""
|
||||
msgstr "پیکربندی بد unsquash"
|
||||
|
||||
#: src/modules/unpackfs/main.py:423
|
||||
msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel"
|
||||
msgstr ""
|
||||
msgstr "کرنل کنونیتان از سامانهپروندهٔ {} ({}) پشتیبانی نمیکند"
|
||||
|
||||
#: src/modules/unpackfs/main.py:427
|
||||
msgid "The source filesystem \"{}\" does not exist"
|
||||
msgstr ""
|
||||
msgstr "سامانهٔ پروندهٔ مبدأ {} وجود ندارد"
|
||||
|
||||
#: src/modules/unpackfs/main.py:433
|
||||
msgid ""
|
||||
"Failed to find unsquashfs, make sure you have the squashfs-tools package "
|
||||
"installed"
|
||||
msgstr ""
|
||||
msgstr "شکست در یافتن unsquashfs. مطمئن شوید بستهٔ squashfs-tools نصب است"
|
||||
|
||||
#: src/modules/unpackfs/main.py:447
|
||||
msgid "The destination \"{}\" in the target system is not a directory"
|
||||
msgstr ""
|
||||
msgstr "مقصد {} در سامانهٔ هدف، یک شاخه نیست"
|
||||
|
||||
#: 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>systemctl {arg!s}</code> در chroot رمز خطای {num!s} را "
|
||||
"برگرداند."
|
||||
|
||||
#: src/modules/services-systemd/main.py:72
|
||||
#: src/modules/services-systemd/main.py:76
|
||||
msgid "Cannot enable systemd service <code>{name!s}</code>."
|
||||
msgstr ""
|
||||
msgstr "نمیتوان خدمت سیستمدی <code>{name!s}</code> را به کار انداخت."
|
||||
|
||||
#: src/modules/services-systemd/main.py:74
|
||||
msgid "Cannot enable systemd target <code>{name!s}</code>."
|
||||
msgstr ""
|
||||
msgstr "نمیتوان هدف سیستمدی <code>{name!s}</code> را به کار انداخت."
|
||||
|
||||
#: src/modules/services-systemd/main.py:78
|
||||
msgid "Cannot disable systemd target <code>{name!s}</code>."
|
||||
msgstr ""
|
||||
msgstr "نمیتوان خدمت سیستمدی <code>{name!s}</code> را از کار انداخت."
|
||||
|
||||
#: src/modules/services-systemd/main.py:80
|
||||
msgid "Cannot mask systemd unit <code>{name!s}</code>."
|
||||
msgstr ""
|
||||
msgstr "نمیتوان واحد سیستمدی <code>{name!s}</code> را پوشاند."
|
||||
|
||||
#: src/modules/services-systemd/main.py:82
|
||||
msgid ""
|
||||
"Unknown systemd commands <code>{command!s}</code> and "
|
||||
"<code>{suffix!s}</code> for unit {name!s}."
|
||||
msgstr ""
|
||||
"دستورات ناشناختهٔ سیستمدی <code>{command!s}</code> و "
|
||||
"<code>{suffix!s}</code> برای واحد {name!s}."
|
||||
|
||||
#: src/modules/dummypython/main.py:44
|
||||
msgid "Dummy python job."
|
||||
msgstr ""
|
||||
msgstr "کار پایتونی الکی."
|
||||
|
||||
#: src/modules/dummypython/main.py:46 src/modules/dummypython/main.py:102
|
||||
#: src/modules/dummypython/main.py:103
|
||||
msgid "Dummy python step {}"
|
||||
msgstr ""
|
||||
msgstr "گام پایتونی الکی {}"
|
||||
|
||||
#: src/modules/bootloader/main.py:51
|
||||
msgid "Install bootloader."
|
||||
msgstr ""
|
||||
msgstr "نصب بارکنندهٔ راهاندازی."
|
||||
|
||||
#: src/modules/localecfg/main.py:39
|
||||
msgid "Configuring locales."
|
||||
@ -196,31 +204,31 @@ msgstr ""
|
||||
|
||||
#: src/modules/mount/main.py:38
|
||||
msgid "Mounting partitions."
|
||||
msgstr ""
|
||||
msgstr "در حال سوار کردن افرازها."
|
||||
|
||||
#: src/modules/plymouthcfg/main.py:36
|
||||
msgid "Configure Plymouth theme"
|
||||
msgstr ""
|
||||
msgstr "در حال پیکربندی زمینهٔ پلیموث"
|
||||
|
||||
#: src/modules/luksopenswaphookcfg/main.py:35
|
||||
msgid "Configuring encrypted swap."
|
||||
msgstr ""
|
||||
msgstr "در حال پیکربندی مبادلهٔ رمزشده."
|
||||
|
||||
#: src/modules/fstab/main.py:38
|
||||
msgid "Writing fstab."
|
||||
msgstr ""
|
||||
msgstr "در حال نوشتن fstab."
|
||||
|
||||
#: src/modules/services-openrc/main.py:38
|
||||
msgid "Configure OpenRC services"
|
||||
msgstr ""
|
||||
msgstr "پیکربندی خدمات OpenRC"
|
||||
|
||||
#: src/modules/services-openrc/main.py:66
|
||||
msgid "Cannot add service {name!s} to run-level {level!s}."
|
||||
msgstr ""
|
||||
msgstr "نمیتوان خدمت {name!s} را به سطح اجرایی {level!s} افزود."
|
||||
|
||||
#: src/modules/services-openrc/main.py:68
|
||||
msgid "Cannot remove service {name!s} from run-level {level!s}."
|
||||
msgstr ""
|
||||
msgstr "نمیتوان خدمت {name!s} را از سطح اجرایی {level!s} برداشت."
|
||||
|
||||
#: src/modules/services-openrc/main.py:70
|
||||
msgid ""
|
||||
@ -235,7 +243,7 @@ msgstr ""
|
||||
|
||||
#: src/modules/services-openrc/main.py:110
|
||||
msgid "Target runlevel does not exist"
|
||||
msgstr ""
|
||||
msgstr "سطح اجرایی هدف وجود ندارد."
|
||||
|
||||
#: src/modules/services-openrc/main.py:111
|
||||
msgid ""
|
||||
@ -245,7 +253,7 @@ msgstr ""
|
||||
|
||||
#: src/modules/services-openrc/main.py:119
|
||||
msgid "Target service does not exist"
|
||||
msgstr ""
|
||||
msgstr "خدمت هدف وجود ندارد"
|
||||
|
||||
#: src/modules/services-openrc/main.py:120
|
||||
msgid ""
|
||||
@ -255,82 +263,84 @@ msgstr ""
|
||||
|
||||
#: src/modules/dracut/main.py:36
|
||||
msgid "Creating initramfs with dracut."
|
||||
msgstr ""
|
||||
msgstr "در حال ایجاد initramfs با dracut."
|
||||
|
||||
#: src/modules/dracut/main.py:58
|
||||
msgid "Failed to run dracut on the target"
|
||||
msgstr ""
|
||||
msgstr "شکست در اجرای dracut روی هدف"
|
||||
|
||||
#: src/modules/dracut/main.py:59
|
||||
msgid "The exit code was {}"
|
||||
msgstr ""
|
||||
msgstr "رمز خروج {} بود"
|
||||
|
||||
#: src/modules/grubcfg/main.py:37
|
||||
msgid "Configure GRUB."
|
||||
msgstr ""
|
||||
msgstr "در حال پیکربندی گراب."
|
||||
|
||||
#: src/modules/displaymanager/main.py:515
|
||||
msgid "Cannot write KDM configuration file"
|
||||
msgstr ""
|
||||
msgstr "نمیتوان پروندهٔ پیکربندی KDM را نوشت"
|
||||
|
||||
#: src/modules/displaymanager/main.py:516
|
||||
msgid "KDM config file {!s} does not exist"
|
||||
msgstr ""
|
||||
msgstr "پروندهٔ پیکربندی {!s} وجود ندارد"
|
||||
|
||||
#: src/modules/displaymanager/main.py:577
|
||||
msgid "Cannot write LXDM configuration file"
|
||||
msgstr ""
|
||||
msgstr "نمیتوان پروندهٔ پیکربندی LXDM را نوشت"
|
||||
|
||||
#: src/modules/displaymanager/main.py:578
|
||||
msgid "LXDM config file {!s} does not exist"
|
||||
msgstr ""
|
||||
msgstr "پروندهٔ پیکربندی {!s} وجود ندارد"
|
||||
|
||||
#: src/modules/displaymanager/main.py:661
|
||||
msgid "Cannot write LightDM configuration file"
|
||||
msgstr ""
|
||||
msgstr "نمیتوان پروندهٔ پیکربندی LightDM را نوشت"
|
||||
|
||||
#: src/modules/displaymanager/main.py:662
|
||||
msgid "LightDM config file {!s} does not exist"
|
||||
msgstr ""
|
||||
msgstr "پروندهٔ پیکربندی {!s} وجود ندارد"
|
||||
|
||||
#: src/modules/displaymanager/main.py:736
|
||||
msgid "Cannot configure LightDM"
|
||||
msgstr ""
|
||||
msgstr "نمیتوان LightDM را پیکربندی کرد"
|
||||
|
||||
#: src/modules/displaymanager/main.py:737
|
||||
msgid "No LightDM greeter installed."
|
||||
msgstr ""
|
||||
msgstr "هیچ خوشآمدگوی LightDMای نصب نشده."
|
||||
|
||||
#: src/modules/displaymanager/main.py:768
|
||||
msgid "Cannot write SLIM configuration file"
|
||||
msgstr ""
|
||||
msgstr "نمیتوان پروندهٔ پیکربندی LightDM را نوشت"
|
||||
|
||||
#: src/modules/displaymanager/main.py:769
|
||||
msgid "SLIM config file {!s} does not exist"
|
||||
msgstr ""
|
||||
msgstr "پروندهٔ پیکربندی {!s} وجود ندارد"
|
||||
|
||||
#: src/modules/displaymanager/main.py:895
|
||||
msgid "No display managers selected for the displaymanager module."
|
||||
msgstr ""
|
||||
msgstr "هیچ مدیر نمایشی برای پیمانهٔ displaymanager گزیده نشده."
|
||||
|
||||
#: src/modules/displaymanager/main.py:896
|
||||
msgid ""
|
||||
"The displaymanagers list is empty or undefined in bothglobalstorage and "
|
||||
"displaymanager.conf."
|
||||
msgstr ""
|
||||
"فهرست displaymanagers خالی بوده یا در bothglobalstorage و "
|
||||
"displaymanager.conf تعریف نشده."
|
||||
|
||||
#: src/modules/displaymanager/main.py:978
|
||||
msgid "Display manager configuration was incomplete"
|
||||
msgstr ""
|
||||
msgstr "پیکربندی مدیر نمایش کامل نبود"
|
||||
|
||||
#: src/modules/initramfscfg/main.py:41
|
||||
msgid "Configuring initramfs."
|
||||
msgstr ""
|
||||
msgstr "در حال پیکربندی initramfs."
|
||||
|
||||
#: src/modules/hwclock/main.py:35
|
||||
msgid "Setting hardware clock."
|
||||
msgstr ""
|
||||
msgstr "در حال تنظیم ساعت سختافزاری."
|
||||
|
||||
#: src/modules/rawfs/main.py:35
|
||||
msgid "Installing data."
|
||||
msgstr ""
|
||||
msgstr "دادههای نصب"
|
||||
|
Binary file not shown.
@ -6,7 +6,7 @@
|
||||
# Translators:
|
||||
# Choiril Abdul, 2018
|
||||
# Harry Suryapambagya <harsxv@gmail.com>, 2018
|
||||
# Wantoyo <wantoyek@gmail.com>, 2018
|
||||
# Wantoyèk <wantoyek@gmail.com>, 2018
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
@ -15,7 +15,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-30 23:13+0200\n"
|
||||
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
||||
"Last-Translator: Wantoyo <wantoyek@gmail.com>, 2018\n"
|
||||
"Last-Translator: Wantoyèk <wantoyek@gmail.com>, 2018\n"
|
||||
"Language-Team: Indonesian (https://www.transifex.com/calamares/teams/20061/id/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
Binary file not shown.
@ -5,6 +5,7 @@
|
||||
#
|
||||
# Translators:
|
||||
# 黃柏諺 <s8321414@gmail.com>, 2020
|
||||
# Walter Cheuk <wwycheuk@gmail.com>, 2020
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
@ -13,7 +14,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-30 23:13+0200\n"
|
||||
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
||||
"Last-Translator: 黃柏諺 <s8321414@gmail.com>, 2020\n"
|
||||
"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>, 2020\n"
|
||||
"Language-Team: Chinese (Taiwan) (https://www.transifex.com/calamares/teams/20061/zh_TW/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -126,7 +127,7 @@ msgstr "錯誤的 unsquash 設定"
|
||||
|
||||
#: src/modules/unpackfs/main.py:423
|
||||
msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel"
|
||||
msgstr "\"{}\" ({}) 的檔案系統不被您目前的核心所支援"
|
||||
msgstr "\"{}\" ({}) 的檔案系統不獲您目前的內核所支援"
|
||||
|
||||
#: src/modules/unpackfs/main.py:427
|
||||
msgid "The source filesystem \"{}\" does not exist"
|
||||
@ -136,7 +137,7 @@ msgstr "來源檔案系統 \"{}\" 不存在"
|
||||
msgid ""
|
||||
"Failed to find unsquashfs, make sure you have the squashfs-tools package "
|
||||
"installed"
|
||||
msgstr "找不到 unsquashfs,請確定您已安裝 squashfs-tools 軟體包"
|
||||
msgstr "找不到 unsquashfs,請確定已安裝 squashfs-tools 軟體包"
|
||||
|
||||
#: src/modules/unpackfs/main.py:447
|
||||
msgid "The destination \"{}\" in the target system is not a directory"
|
||||
|
@ -78,6 +78,19 @@ images:
|
||||
# installer is actually writing to disk and doing other slow things).
|
||||
slideshow: "show.qml"
|
||||
|
||||
# There are two available APIs for a QML slideshow:
|
||||
# - 1 (the default) loads the entire slideshow when the installation-
|
||||
# slideshow page is shown and starts the QML then. The QML
|
||||
# is never stopped (after installation is done, times etc.
|
||||
# continue to fire).
|
||||
# - 2 loads the slideshow on startup and calls onActivate() and
|
||||
# onLeave() in the root object. After the installation is done,
|
||||
# the show is stopped (first by calling onLeave(), then destroying
|
||||
# the QML components).
|
||||
#
|
||||
# An image slideshow does not need to have the API defined.
|
||||
slideshowAPI: 1
|
||||
|
||||
# Colors for text and background components.
|
||||
#
|
||||
# - sidebarBackground is the background of the sidebar
|
||||
|
@ -32,6 +32,9 @@
|
||||
#include "utils/CalamaresUtilsSystem.h"
|
||||
#include "utils/Dirs.h"
|
||||
#include "utils/Logger.h"
|
||||
#ifdef WITH_QML
|
||||
#include "utils/Qml.h"
|
||||
#endif
|
||||
#include "utils/Retranslator.h"
|
||||
#include "viewpages/ViewStep.h"
|
||||
|
||||
@ -117,34 +120,6 @@ CalamaresApplication::mainWindow()
|
||||
}
|
||||
|
||||
|
||||
static QStringList
|
||||
qmlDirCandidates( bool assumeBuilddir )
|
||||
{
|
||||
static const char QML[] = "qml";
|
||||
|
||||
QStringList qmlDirs;
|
||||
if ( CalamaresUtils::isAppDataDirOverridden() )
|
||||
{
|
||||
qmlDirs << CalamaresUtils::appDataDir().absoluteFilePath( QML );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( assumeBuilddir )
|
||||
{
|
||||
qmlDirs << QDir::current().absoluteFilePath( "src/qml" ); // In build-dir
|
||||
}
|
||||
if ( CalamaresUtils::haveExtraDirs() )
|
||||
for ( auto s : CalamaresUtils::extraDataDirs() )
|
||||
{
|
||||
qmlDirs << ( s + QML );
|
||||
}
|
||||
qmlDirs << CalamaresUtils::appDataDir().absoluteFilePath( QML );
|
||||
}
|
||||
|
||||
return qmlDirs;
|
||||
}
|
||||
|
||||
|
||||
static QStringList
|
||||
brandingFileCandidates( bool assumeBuilddir, const QString& brandingFilename )
|
||||
{
|
||||
@ -175,38 +150,12 @@ brandingFileCandidates( bool assumeBuilddir, const QString& brandingFilename )
|
||||
void
|
||||
CalamaresApplication::initQmlPath()
|
||||
{
|
||||
QDir importPath; // Right now, current-dir
|
||||
QStringList qmlDirCandidatesByPriority = qmlDirCandidates( isDebug() );
|
||||
bool found = false;
|
||||
|
||||
foreach ( const QString& path, qmlDirCandidatesByPriority )
|
||||
#ifdef WITH_QML
|
||||
if ( !CalamaresUtils::initQmlModulesDir() )
|
||||
{
|
||||
QDir dir( path );
|
||||
if ( dir.exists() && dir.isReadable() )
|
||||
{
|
||||
importPath = dir;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( !found || !importPath.exists() || !importPath.isReadable() )
|
||||
{
|
||||
cError() << "Cowardly refusing to continue startup without a QML directory."
|
||||
<< Logger::DebugList( qmlDirCandidatesByPriority );
|
||||
if ( CalamaresUtils::isAppDataDirOverridden() )
|
||||
{
|
||||
cError() << "FATAL: explicitly configured application data directory is missing qml/";
|
||||
}
|
||||
else
|
||||
{
|
||||
cError() << "FATAL: none of the expected QML paths exist.";
|
||||
}
|
||||
::exit( EXIT_FAILURE );
|
||||
}
|
||||
|
||||
cDebug() << "Using Calamares QML directory" << importPath.absolutePath();
|
||||
CalamaresUtils::setQmlModulesDir( importPath );
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -208,7 +208,7 @@ CalamaresWindow::getWidgetNavigation( QWidget* parent )
|
||||
QWidget*
|
||||
CalamaresWindow::getQmlSidebar( QWidget* parent, int )
|
||||
{
|
||||
CalamaresUtils::registerCalamaresModels();
|
||||
CalamaresUtils::registerQmlModels();
|
||||
QQuickWidget* w = new QQuickWidget( parent );
|
||||
w->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
|
||||
w->setResizeMode( QQuickWidget::SizeRootObjectToView );
|
||||
@ -220,7 +220,7 @@ CalamaresWindow::getQmlSidebar( QWidget* parent, int )
|
||||
QWidget*
|
||||
CalamaresWindow::getQmlNavigation( QWidget* parent )
|
||||
{
|
||||
CalamaresUtils::registerCalamaresModels();
|
||||
CalamaresUtils::registerQmlModels();
|
||||
QQuickWidget* w = new QQuickWidget( parent );
|
||||
w->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
|
||||
w->setResizeMode( QQuickWidget::SizeRootObjectToView );
|
||||
|
@ -22,18 +22,22 @@
|
||||
* bindings.
|
||||
*/
|
||||
|
||||
#include "modulesystem/Module.h"
|
||||
#include "utils/Logger.h"
|
||||
#include "utils/Yaml.h"
|
||||
|
||||
#include "Branding.h"
|
||||
#include "CppJob.h"
|
||||
#include "GlobalStorage.h"
|
||||
#include "Job.h"
|
||||
#include "JobQueue.h"
|
||||
#include "Settings.h"
|
||||
#include "ViewManager.h"
|
||||
|
||||
#include "modulesystem/Module.h"
|
||||
#include "modulesystem/ModuleManager.h"
|
||||
#include "modulesystem/ViewModule.h"
|
||||
#include "utils/Logger.h"
|
||||
#ifdef WITH_QML
|
||||
#include "utils/Qml.h"
|
||||
#endif
|
||||
#include "utils/Yaml.h"
|
||||
#include "viewpages/ExecutionViewStep.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QCommandLineOption>
|
||||
@ -42,6 +46,7 @@
|
||||
#include <QFileInfo>
|
||||
#include <QLabel>
|
||||
#include <QMainWindow>
|
||||
#include <QThread>
|
||||
|
||||
#include <memory>
|
||||
|
||||
@ -80,6 +85,8 @@ handle_args( QCoreApplication& a )
|
||||
"src/branding/default/branding.desc" );
|
||||
QCommandLineOption uiOption( QStringList() << QStringLiteral( "U" ) << QStringLiteral( "ui" ),
|
||||
QStringLiteral( "Enable UI" ) );
|
||||
QCommandLineOption slideshowOption( QStringList() << QStringLiteral( "s" ) << QStringLiteral( "slideshow" ),
|
||||
QStringLiteral( "Run slideshow module" ) );
|
||||
|
||||
QCommandLineParser parser;
|
||||
parser.setApplicationDescription( "Calamares module tester" );
|
||||
@ -92,13 +99,14 @@ handle_args( QCoreApplication& a )
|
||||
parser.addOption( langOption );
|
||||
parser.addOption( brandOption );
|
||||
parser.addOption( uiOption );
|
||||
parser.addOption( slideshowOption );
|
||||
parser.addPositionalArgument( "module", "Path or name of module to run." );
|
||||
parser.addPositionalArgument( "job.yaml", "Path of job settings document to use.", "[job.yaml]" );
|
||||
|
||||
parser.process( a );
|
||||
|
||||
const QStringList args = parser.positionalArguments();
|
||||
if ( args.isEmpty() )
|
||||
if ( args.isEmpty() && !parser.isSet( slideshowOption ) )
|
||||
{
|
||||
cError() << "Missing <module> path.\n";
|
||||
parser.showHelp();
|
||||
@ -116,20 +124,161 @@ handle_args( QCoreApplication& a )
|
||||
jobSettings = args.at( 1 );
|
||||
}
|
||||
|
||||
return ModuleConfig { args.first(),
|
||||
return ModuleConfig { parser.isSet( slideshowOption ) ? QStringLiteral( "-" ) : args.first(),
|
||||
jobSettings,
|
||||
parser.value( globalOption ),
|
||||
parser.value( langOption ),
|
||||
parser.value( brandOption ),
|
||||
parser.isSet( uiOption ) };
|
||||
parser.isSet( slideshowOption ) || parser.isSet( uiOption ) };
|
||||
}
|
||||
}
|
||||
|
||||
/** @brief Bogus Job for --slideshow option
|
||||
*
|
||||
* Generally one would use DummyCppJob for this kind of dummy
|
||||
* job, but that class lives in a module so isn't available
|
||||
* in this test application.
|
||||
*
|
||||
* This bogus job just sleeps for 3.
|
||||
*/
|
||||
class ExecViewJob : public Calamares::CppJob
|
||||
{
|
||||
public:
|
||||
explicit ExecViewJob( const QString& name, unsigned long t = 3 )
|
||||
: m_name( name )
|
||||
, m_delay( t )
|
||||
{
|
||||
}
|
||||
virtual ~ExecViewJob() override;
|
||||
|
||||
QString prettyName() const override { return m_name; }
|
||||
|
||||
Calamares::JobResult exec() override
|
||||
{
|
||||
QThread::sleep( m_delay );
|
||||
return Calamares::JobResult::ok();
|
||||
}
|
||||
|
||||
void setConfigurationMap( const QVariantMap& ) override {}
|
||||
|
||||
private:
|
||||
QString m_name;
|
||||
unsigned long m_delay;
|
||||
};
|
||||
|
||||
ExecViewJob::~ExecViewJob() {}
|
||||
|
||||
/** @brief Bogus module for --slideshow option
|
||||
*
|
||||
* Normally the slideshow -- displayed by ExecutionViewStep -- is not
|
||||
* associated with any particular module in the Calamares configuration.
|
||||
* It is added internally by the module manager. For the module-loader
|
||||
* testing application, we need something that pretends to be the
|
||||
* module for the ExecutionViewStep.
|
||||
*/
|
||||
class ExecViewModule : public Calamares::Module
|
||||
{
|
||||
public:
|
||||
ExecViewModule();
|
||||
~ExecViewModule() override;
|
||||
|
||||
void loadSelf() override;
|
||||
|
||||
virtual Type type() const override;
|
||||
virtual Interface interface() const override;
|
||||
|
||||
virtual Calamares::JobList jobs() const override;
|
||||
|
||||
protected:
|
||||
void initFrom( const QVariantMap& ) override;
|
||||
};
|
||||
|
||||
ExecViewModule::ExecViewModule()
|
||||
: Calamares::Module()
|
||||
{
|
||||
// Normally the module-loader gives the module an instance key
|
||||
// (out of the settings file, or the descriptor of the module).
|
||||
// We don't have one, so build one -- this gives us "x@x".
|
||||
QVariantMap m;
|
||||
m.insert( "name", "x" );
|
||||
Calamares::Module::initFrom( m, "x" );
|
||||
}
|
||||
|
||||
ExecViewModule::~ExecViewModule() {}
|
||||
|
||||
void
|
||||
ExecViewModule::initFrom( const QVariantMap& )
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
ExecViewModule::loadSelf()
|
||||
{
|
||||
auto* viewStep = new Calamares::ExecutionViewStep();
|
||||
viewStep->setModuleInstanceKey( instanceKey() );
|
||||
viewStep->setConfigurationMap( m_configurationMap );
|
||||
viewStep->appendJobModuleInstanceKey( instanceKey().toString() );
|
||||
Calamares::ViewManager::instance()->addViewStep( viewStep );
|
||||
m_loaded = true;
|
||||
}
|
||||
|
||||
Calamares::Module::Type
|
||||
ExecViewModule::type() const
|
||||
{
|
||||
return Module::Type::View;
|
||||
}
|
||||
|
||||
|
||||
Calamares::Module::Interface
|
||||
ExecViewModule::interface() const
|
||||
{
|
||||
return Module::Interface::QtPlugin;
|
||||
}
|
||||
|
||||
Calamares::JobList
|
||||
ExecViewModule::jobs() const
|
||||
{
|
||||
Calamares::JobList l;
|
||||
const auto* gs = Calamares::JobQueue::instance()->globalStorage();
|
||||
if ( gs && gs->contains( "jobs" ) )
|
||||
{
|
||||
QVariantList joblist = gs->value( "jobs" ).toList();
|
||||
for ( const auto& jd : joblist )
|
||||
{
|
||||
QVariantMap jobdescription = jd.toMap();
|
||||
if ( jobdescription.contains( "name" ) && jobdescription.contains( "delay" ) )
|
||||
{
|
||||
l.append( Calamares::job_ptr( new ExecViewJob( jobdescription.value( "name" ).toString(),
|
||||
jobdescription.value( "delay" ).toULongLong() ) ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( l.count() > 0 )
|
||||
{
|
||||
return l;
|
||||
}
|
||||
|
||||
l.append( Calamares::job_ptr( new ExecViewJob( QStringLiteral( "step 1" ) ) ) );
|
||||
l.append( Calamares::job_ptr( new ExecViewJob( QStringLiteral( "step two" ) ) ) );
|
||||
l.append( Calamares::job_ptr( new ExecViewJob( QStringLiteral( "locking mutexes" ), 20 ) ) );
|
||||
l.append( Calamares::job_ptr( new ExecViewJob( QStringLiteral( "unlocking mutexes" ), 1 ) ) );
|
||||
for ( const QString& s : QStringList { "Harder", "Better", "Faster", "Stronger" } )
|
||||
{
|
||||
l.append( Calamares::job_ptr( new ExecViewJob( s, 0 ) ) );
|
||||
}
|
||||
l.append( Calamares::job_ptr( new ExecViewJob( QStringLiteral( "cleaning up" ), 20 ) ) );
|
||||
return l;
|
||||
}
|
||||
|
||||
static Calamares::Module*
|
||||
load_module( const ModuleConfig& moduleConfig )
|
||||
{
|
||||
QString moduleName = moduleConfig.moduleName();
|
||||
if ( moduleName == "-" )
|
||||
{
|
||||
return new ExecViewModule;
|
||||
}
|
||||
|
||||
QFileInfo fi;
|
||||
|
||||
bool ok = false;
|
||||
@ -188,6 +337,18 @@ load_module( const ModuleConfig& moduleConfig )
|
||||
return module;
|
||||
}
|
||||
|
||||
static bool
|
||||
is_ui_option( const char* s )
|
||||
{
|
||||
return !qstrcmp( s, "--ui" ) || !qstrcmp( s, "-U" );
|
||||
}
|
||||
|
||||
static bool
|
||||
is_slideshow_option( const char* s )
|
||||
{
|
||||
return !qstrcmp( s, "--slideshow" ) || !qstrcmp( s, "-s" );
|
||||
}
|
||||
|
||||
/** @brief Create the right kind of QApplication
|
||||
*
|
||||
* Does primitive parsing of argv[] to find the --ui option and returns
|
||||
@ -202,7 +363,7 @@ createApplication( int& argc, char* argv[] )
|
||||
{
|
||||
for ( int i = 1; i < argc; ++i )
|
||||
{
|
||||
if ( !qstrcmp( argv[ i ], "--ui" ) || !qstrcmp( argv[ i ], "-U" ) )
|
||||
if ( is_slideshow_option( argv[ i ] ) || is_ui_option( argv[ i ] ) )
|
||||
{
|
||||
auto* aw = new QApplication( argc, argv );
|
||||
aw->setQuitOnLastWindowClosed( true );
|
||||
@ -241,6 +402,10 @@ main( int argc, char* argv[] )
|
||||
gs->insert( "localeConf", vm );
|
||||
}
|
||||
|
||||
#ifdef WITH_QML
|
||||
CalamaresUtils::initQmlModulesDir(); // don't care if failed
|
||||
#endif
|
||||
|
||||
cDebug() << "Calamares module-loader testing" << module.moduleName();
|
||||
Calamares::Module* m = load_module( module );
|
||||
if ( !m )
|
||||
@ -252,7 +417,11 @@ main( int argc, char* argv[] )
|
||||
cDebug() << " .. got" << m->name() << m->typeString() << m->interfaceString();
|
||||
if ( m->type() == Calamares::Module::Type::View )
|
||||
{
|
||||
if ( !qobject_cast< QApplication* >(aw) )
|
||||
// If we forgot the --ui, any ViewModule will core dump as it
|
||||
// tries to create the widget **which won't be used anyway**.
|
||||
//
|
||||
// To avoid that crash, re-create the QApplication, now with GUI
|
||||
if ( !qobject_cast< QApplication* >( aw ) )
|
||||
{
|
||||
auto* replace_app = new QApplication( argc, argv );
|
||||
replace_app->setQuitOnLastWindowClosed( true );
|
||||
@ -261,8 +430,9 @@ main( int argc, char* argv[] )
|
||||
mw = module.m_ui ? new QMainWindow() : nullptr;
|
||||
|
||||
(void)new Calamares::Branding( module.m_branding );
|
||||
(void)new Calamares::ModuleManager( QStringList(), nullptr );
|
||||
auto* modulemanager = new Calamares::ModuleManager( QStringList(), nullptr );
|
||||
(void)Calamares::ViewManager::instance( mw );
|
||||
modulemanager->addModule( m );
|
||||
}
|
||||
|
||||
if ( !m->isLoaded() )
|
||||
|
@ -42,7 +42,6 @@ namespace CalamaresUtils
|
||||
{
|
||||
|
||||
static QDir s_appDataDir( CMAKE_INSTALL_FULL_DATADIR );
|
||||
static QDir s_qmlModulesDir( QString( CMAKE_INSTALL_FULL_DATADIR ) + "/qml" );
|
||||
static bool s_isAppDataDirOverridden = false;
|
||||
|
||||
static bool s_haveExtraDirs = false;
|
||||
@ -79,13 +78,6 @@ isWritableDir( const QDir& dir )
|
||||
}
|
||||
|
||||
|
||||
QDir
|
||||
qmlModulesDir()
|
||||
{
|
||||
return s_qmlModulesDir;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
setAppDataDir( const QDir& dir )
|
||||
{
|
||||
@ -200,11 +192,4 @@ appLogDir()
|
||||
return QDir::temp();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
setQmlModulesDir( const QDir& dir )
|
||||
{
|
||||
s_qmlModulesDir = dir;
|
||||
}
|
||||
|
||||
} // namespace CalamaresUtils
|
||||
|
@ -31,8 +31,6 @@
|
||||
|
||||
namespace CalamaresUtils
|
||||
{
|
||||
DLLEXPORT QDir qmlModulesDir();
|
||||
|
||||
/**
|
||||
* @brief appDataDir returns the directory with common application data.
|
||||
* Defaults to CMAKE_INSTALL_FULL_DATADIR (usually /usr/share/calamares).
|
||||
@ -57,8 +55,6 @@ DLLEXPORT QDir systemLibDir();
|
||||
DLLEXPORT void setAppDataDir( const QDir& dir );
|
||||
DLLEXPORT bool isAppDataDirOverridden();
|
||||
|
||||
DLLEXPORT void setQmlModulesDir( const QDir& dir );
|
||||
|
||||
/** @brief Setup extra config and data dirs from the XDG variables.
|
||||
*/
|
||||
DLLEXPORT void setXdgDirs();
|
||||
|
@ -52,14 +52,14 @@ CppJobModule::loadSelf()
|
||||
CalamaresPluginFactory* pf = qobject_cast< CalamaresPluginFactory* >( m_loader->instance() );
|
||||
if ( !pf )
|
||||
{
|
||||
cDebug() << Q_FUNC_INFO << m_loader->errorString();
|
||||
cDebug() << "Could not load module:" << m_loader->errorString();
|
||||
return;
|
||||
}
|
||||
|
||||
CppJob* cppJob = pf->create< Calamares::CppJob >();
|
||||
if ( !cppJob )
|
||||
{
|
||||
cDebug() << Q_FUNC_INFO << m_loader->errorString();
|
||||
cDebug() << "Could not load module:" << m_loader->errorString();
|
||||
return;
|
||||
}
|
||||
// cDebug() << "CppJobModule loading self for instance" << instanceKey()
|
||||
|
@ -300,22 +300,12 @@ ModuleManager::loadModules()
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !checkModuleDependencies( *thisModule ) )
|
||||
if ( !addModule( thisModule ) )
|
||||
{
|
||||
// Error message is already printed
|
||||
failedModules.append( instanceKey.toString() );
|
||||
continue;
|
||||
}
|
||||
|
||||
// If it's a ViewModule, it also appends the ViewStep to the ViewManager.
|
||||
thisModule->loadSelf();
|
||||
m_loadedModulesByInstanceKey.insert( instanceKey, thisModule );
|
||||
if ( !thisModule->isLoaded() )
|
||||
{
|
||||
cError() << "Module" << instanceKey.toString() << "loading FAILED.";
|
||||
failedModules.append( instanceKey.toString() );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// At this point we most certainly have a pointer to a loaded module in
|
||||
@ -345,6 +335,40 @@ ModuleManager::loadModules()
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
ModuleManager::addModule( Module *module )
|
||||
{
|
||||
if ( !module )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ( !module->instanceKey().isValid() )
|
||||
{
|
||||
cWarning() << "Module" << module->location() << '@' << (void*)module << "has invalid instance key.";
|
||||
return false;
|
||||
}
|
||||
if ( !checkModuleDependencies( *module ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( !module->isLoaded() )
|
||||
{
|
||||
module->loadSelf();
|
||||
}
|
||||
|
||||
// Even if the load failed, we keep the module, so that if it tried to
|
||||
// get loaded **again**, we already know.
|
||||
m_loadedModulesByInstanceKey.insert( module->instanceKey(), module );
|
||||
if ( !module->isLoaded() )
|
||||
{
|
||||
cError() << "Module" << module->instanceKey().toString() << "loading FAILED.";
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
ModuleManager::checkRequirements()
|
||||
{
|
||||
@ -414,6 +438,12 @@ ModuleManager::checkDependencies()
|
||||
bool
|
||||
ModuleManager::checkModuleDependencies( const Module& m )
|
||||
{
|
||||
if ( !m_availableDescriptorsByModuleName.contains( m.name() ) )
|
||||
{
|
||||
cWarning() << "Module" << m.name() << "loaded externally, no dependency information.";
|
||||
return true;
|
||||
}
|
||||
|
||||
bool allRequirementsFound = true;
|
||||
QStringList requiredModules
|
||||
= m_availableDescriptorsByModuleName[ m.name() ].value( "requiredModules" ).toStringList();
|
||||
|
@ -85,6 +85,14 @@ public:
|
||||
*/
|
||||
void loadModules();
|
||||
|
||||
/**
|
||||
* @brief Adds a single module (loaded by some other means)
|
||||
*
|
||||
* Returns @c true on success (that is, the module's dependencies
|
||||
* are satisfied, it wasn't already loaded, ...).
|
||||
*/
|
||||
bool addModule( Module* );
|
||||
|
||||
/**
|
||||
* @brief Starts asynchronous requirements checking for each module.
|
||||
* When this is done, the signal requirementsComplete is emitted.
|
||||
|
@ -53,14 +53,14 @@ ViewModule::loadSelf()
|
||||
CalamaresPluginFactory* pf = qobject_cast< CalamaresPluginFactory* >( m_loader->instance() );
|
||||
if ( !pf )
|
||||
{
|
||||
cWarning() << Q_FUNC_INFO << "No factory:" << m_loader->errorString();
|
||||
cWarning() << "No factory:" << m_loader->errorString();
|
||||
return;
|
||||
}
|
||||
|
||||
m_viewStep = pf->create< Calamares::ViewStep >();
|
||||
if ( !m_viewStep )
|
||||
{
|
||||
cWarning() << Q_FUNC_INFO << "create() failed" << m_loader->errorString();
|
||||
cWarning() << "create() failed" << m_loader->errorString();
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -76,7 +76,7 @@ ViewModule::loadSelf()
|
||||
}
|
||||
else
|
||||
{
|
||||
cWarning() << Q_FUNC_INFO << "No view step was created";
|
||||
cWarning() << "No view step was created";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -207,6 +207,10 @@ unmarginLayout( QLayout* layout )
|
||||
int
|
||||
defaultFontSize()
|
||||
{
|
||||
if ( s_defaultFontSize <= 0 )
|
||||
{
|
||||
s_defaultFontSize = QFont().pointSize();
|
||||
}
|
||||
return s_defaultFontSize;
|
||||
}
|
||||
|
||||
|
@ -21,7 +21,9 @@
|
||||
#include "Branding.h"
|
||||
#include "GlobalStorage.h"
|
||||
#include "JobQueue.h"
|
||||
#include "Settings.h"
|
||||
#include "ViewManager.h"
|
||||
#include "utils/Dirs.h"
|
||||
#include "utils/Logger.h"
|
||||
|
||||
#include <QByteArray>
|
||||
@ -30,11 +32,81 @@
|
||||
#include <QString>
|
||||
#include <QVariant>
|
||||
|
||||
static QDir s_qmlModulesDir( QString( CMAKE_INSTALL_FULL_DATADIR ) + "/qml" );
|
||||
|
||||
namespace CalamaresUtils
|
||||
{
|
||||
QDir
|
||||
qmlModulesDir()
|
||||
{
|
||||
return s_qmlModulesDir;
|
||||
}
|
||||
|
||||
void
|
||||
callQMLFunction( QQuickItem* qmlObject, const char* method )
|
||||
setQmlModulesDir( const QDir& dir )
|
||||
{
|
||||
s_qmlModulesDir = dir;
|
||||
}
|
||||
|
||||
static QStringList
|
||||
qmlDirCandidates( bool assumeBuilddir )
|
||||
{
|
||||
static const char QML[] = "qml";
|
||||
|
||||
QStringList qmlDirs;
|
||||
if ( CalamaresUtils::isAppDataDirOverridden() )
|
||||
{
|
||||
qmlDirs << CalamaresUtils::appDataDir().absoluteFilePath( QML );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( assumeBuilddir )
|
||||
{
|
||||
qmlDirs << QDir::current().absoluteFilePath( "src/qml" ); // In build-dir
|
||||
}
|
||||
if ( CalamaresUtils::haveExtraDirs() )
|
||||
for ( auto s : CalamaresUtils::extraDataDirs() )
|
||||
{
|
||||
qmlDirs << ( s + QML );
|
||||
}
|
||||
qmlDirs << CalamaresUtils::appDataDir().absoluteFilePath( QML );
|
||||
}
|
||||
|
||||
return qmlDirs;
|
||||
}
|
||||
|
||||
bool
|
||||
initQmlModulesDir()
|
||||
{
|
||||
QStringList qmlDirCandidatesByPriority
|
||||
= qmlDirCandidates( Calamares::Settings::instance() && Calamares::Settings::instance()->debugMode() );
|
||||
|
||||
for ( const QString& path : qmlDirCandidatesByPriority )
|
||||
{
|
||||
QDir dir( path );
|
||||
if ( dir.exists() && dir.isReadable() )
|
||||
{
|
||||
cDebug() << "Using Calamares QML directory" << dir.absolutePath();
|
||||
CalamaresUtils::setQmlModulesDir( dir );
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
cError() << "Cowardly refusing to continue startup without a QML directory."
|
||||
<< Logger::DebugList( qmlDirCandidatesByPriority );
|
||||
if ( CalamaresUtils::isAppDataDirOverridden() )
|
||||
{
|
||||
cError() << "FATAL: explicitly configured application data directory is missing qml/";
|
||||
}
|
||||
else
|
||||
{
|
||||
cError() << "FATAL: none of the expected QML paths exist.";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
callQmlFunction( QQuickItem* qmlObject, const char* method )
|
||||
{
|
||||
QByteArray methodSignature( method );
|
||||
methodSignature.append( "()" );
|
||||
@ -71,14 +143,14 @@ addExpansions( QmlSearch method, QStringList& candidates, const QStringList& nam
|
||||
std::transform( names.constBegin(),
|
||||
names.constEnd(),
|
||||
std::back_inserter( candidates ),
|
||||
[ & ]( const QString& s ) { return s.isEmpty() ? QString() : bPath.arg( brandDir, s ); } );
|
||||
[&]( const QString& s ) { return s.isEmpty() ? QString() : bPath.arg( brandDir, s ); } );
|
||||
}
|
||||
if ( ( method == QmlSearch::Both ) || ( method == QmlSearch::QrcOnly ) )
|
||||
{
|
||||
std::transform( names.constBegin(),
|
||||
names.constEnd(),
|
||||
std::back_inserter( candidates ),
|
||||
[ & ]( const QString& s ) { return s.isEmpty() ? QString() : qrPath.arg( s ); } );
|
||||
[&]( const QString& s ) { return s.isEmpty() ? QString() : qrPath.arg( s ); } );
|
||||
}
|
||||
}
|
||||
|
||||
@ -149,7 +221,7 @@ qmlSearchNames()
|
||||
}
|
||||
|
||||
void
|
||||
registerCalamaresModels()
|
||||
registerQmlModels()
|
||||
{
|
||||
static bool done = false;
|
||||
if ( !done )
|
||||
|
@ -24,10 +24,25 @@
|
||||
#include "modulesystem/InstanceKey.h"
|
||||
#include "utils/NamedEnum.h"
|
||||
|
||||
#include <QDir>
|
||||
|
||||
class QQuickItem;
|
||||
|
||||
namespace CalamaresUtils
|
||||
{
|
||||
/// @brief the extra directory where Calamares searches for QML files
|
||||
UIDLLEXPORT QDir qmlModulesDir();
|
||||
/// @brief sets specific directory for searching for QML files
|
||||
UIDLLEXPORT void setQmlModulesDir( const QDir& dir );
|
||||
|
||||
/** @brief initialize QML search path with branding directories
|
||||
*
|
||||
* Picks a suitable branding directory (from the build-dir in debug mode,
|
||||
* otherwise based on the branding directory) and adds it to the
|
||||
* QML modules directory; returns @c false if none is found.
|
||||
*/
|
||||
UIDLLEXPORT bool initQmlModulesDir();
|
||||
|
||||
/** @brief Sets up global Calamares models for QML
|
||||
*
|
||||
* This needs to be called at least once to make the global Calamares
|
||||
@ -40,7 +55,7 @@ namespace CalamaresUtils
|
||||
* Additionally, modules based on QmlViewStep have a context
|
||||
* property `config` referring to that module's configuration (if any).
|
||||
*/
|
||||
UIDLLEXPORT void registerCalamaresModels();
|
||||
UIDLLEXPORT void registerQmlModels();
|
||||
|
||||
/** @brief Calls the QML method @p method on @p qmlObject
|
||||
*
|
||||
@ -50,7 +65,7 @@ UIDLLEXPORT void registerCalamaresModels();
|
||||
*
|
||||
* If there is a return value from the QML method, it is logged (but not otherwise used).
|
||||
*/
|
||||
UIDLLEXPORT void callQMLFunction( QQuickItem* qmlObject, const char* method );
|
||||
UIDLLEXPORT void callQmlFunction( QQuickItem* qmlObject, const char* method );
|
||||
|
||||
/** @brief Search modes for loading Qml files.
|
||||
*
|
||||
@ -66,7 +81,7 @@ enum class QmlSearch
|
||||
Both
|
||||
};
|
||||
|
||||
///@brief Names for the search terms (in config files)
|
||||
/// @brief Names for the search terms (in config files)
|
||||
UIDLLEXPORT const NamedEnumTable< QmlSearch >& qmlSearchNames();
|
||||
|
||||
/** @brief Find a suitable QML file, given the search method and name hints
|
||||
|
@ -58,7 +58,7 @@ changeQMLState( QMLAction action, QQuickItem* item )
|
||||
static const char propertyName[] = "activatedInCalamares";
|
||||
|
||||
bool activate = action == QMLAction::Start;
|
||||
CalamaresUtils::callQMLFunction( item, activate ? "onActivate" : "onLeave" );
|
||||
CalamaresUtils::callQmlFunction( item, activate ? "onActivate" : "onLeave" );
|
||||
|
||||
auto property = item->property( propertyName );
|
||||
if ( property.isValid() && ( property.type() == QVariant::Bool ) && ( property.toBool() != activate ) )
|
||||
@ -76,7 +76,7 @@ QmlViewStep::QmlViewStep( QObject* parent )
|
||||
, m_spinner( new WaitingWidget( tr( "Loading ..." ) ) )
|
||||
, m_qmlWidget( new QQuickWidget )
|
||||
{
|
||||
CalamaresUtils::registerCalamaresModels();
|
||||
CalamaresUtils::registerQmlModels();
|
||||
|
||||
QVBoxLayout* layout = new QVBoxLayout( m_widget );
|
||||
layout->addWidget( m_spinner );
|
||||
|
@ -23,7 +23,9 @@
|
||||
#include "Branding.h"
|
||||
#include "utils/Dirs.h"
|
||||
#include "utils/Logger.h"
|
||||
#ifdef WITH_QML
|
||||
#include "utils/Qml.h"
|
||||
#endif
|
||||
#include "utils/Retranslator.h"
|
||||
|
||||
#include <QLabel>
|
||||
@ -50,6 +52,8 @@ SlideshowQML::SlideshowQML( QWidget* parent )
|
||||
, m_qmlComponent( nullptr )
|
||||
, m_qmlObject( nullptr )
|
||||
{
|
||||
CalamaresUtils::registerQmlModels();
|
||||
|
||||
m_qmlShow->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
|
||||
m_qmlShow->setResizeMode( QQuickWidget::SizeRootObjectToView );
|
||||
m_qmlShow->engine()->addImportPath( CalamaresUtils::qmlModulesDir().absolutePath() );
|
||||
@ -121,11 +125,30 @@ SlideshowQML::loadQmlV2Complete()
|
||||
if ( isActive() )
|
||||
{
|
||||
// We're alreay visible! Must have been slow QML loading, and we
|
||||
// passed onActivate already.
|
||||
// passed onActivate already. changeSlideShowState() locks
|
||||
// the same mutex: we could set up a workaround to call
|
||||
// changeSlideShowState() later after destruction of l.
|
||||
//
|
||||
l.unlock();
|
||||
changeSlideShowState( Slideshow::Start );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( m_qmlObject )
|
||||
{
|
||||
cWarning() << "QML object already created";
|
||||
}
|
||||
else if ( !m_qmlComponent )
|
||||
{
|
||||
cWarning() << "QML component does not exist";
|
||||
}
|
||||
else if ( m_qmlComponent && !m_qmlComponent->isReady() )
|
||||
{
|
||||
cWarning() << "QML component not ready:" << m_qmlComponent->errors();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -144,7 +167,7 @@ SlideshowQML::changeSlideShowState( Action state )
|
||||
if ( Branding::instance()->slideshowAPI() == 2 )
|
||||
{
|
||||
// The QML was already loaded in the constructor, need to start it
|
||||
CalamaresUtils::callQMLFunction( m_qmlObject, activate ? "onActivate" : "onLeave" );
|
||||
CalamaresUtils::callQmlFunction( m_qmlObject, activate ? "onActivate" : "onLeave" );
|
||||
}
|
||||
else if ( !Calamares::Branding::instance()->slideshowPath().isEmpty() )
|
||||
{
|
||||
|
Binary file not shown.
@ -3,13 +3,17 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
# Translators:
|
||||
# Danial Behzadi <dani.behzi@ubuntu.com>, 2020
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
|
||||
"POT-Creation-Date: 2020-04-30 23:13+0200\n"
|
||||
"PO-Revision-Date: 2016-12-16 12:18+0000\n"
|
||||
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>, 2020\n"
|
||||
"Language-Team: Persian (https://www.transifex.com/calamares/teams/20061/fa/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -19,24 +23,24 @@ msgstr ""
|
||||
|
||||
#: src/modules/dummypythonqt/main.py:84
|
||||
msgid "Click me!"
|
||||
msgstr ""
|
||||
msgstr "کلیکم کنید!"
|
||||
|
||||
#: src/modules/dummypythonqt/main.py:94
|
||||
msgid "A new QLabel."
|
||||
msgstr ""
|
||||
msgstr "یک QLabel جدید."
|
||||
|
||||
#: src/modules/dummypythonqt/main.py:97
|
||||
msgid "Dummy PythonQt ViewStep"
|
||||
msgstr ""
|
||||
msgstr "گام نمایش PythonQt الکی"
|
||||
|
||||
#: src/modules/dummypythonqt/main.py:183
|
||||
msgid "The Dummy PythonQt Job"
|
||||
msgstr ""
|
||||
msgstr "کار PythonQt الکی"
|
||||
|
||||
#: src/modules/dummypythonqt/main.py:186
|
||||
msgid "This is the Dummy PythonQt Job. The dummy job says: {}"
|
||||
msgstr ""
|
||||
msgstr "این کار PythonQt الکی است. کار الکی میگوید: {}"
|
||||
|
||||
#: src/modules/dummypythonqt/main.py:190
|
||||
msgid "A status message for Dummy PythonQt Job."
|
||||
msgstr ""
|
||||
msgstr "پیام وضعیتی برای کار PythonQt الکی."
|
||||
|
Binary file not shown.
@ -5,16 +5,16 @@
|
||||
#
|
||||
# Translators:
|
||||
# Kukuh Syafaat <syafaatkukuh@gmail.com>, 2016
|
||||
# Wantoyo <wantoyek@gmail.com>, 2017
|
||||
# Wantoyèk <wantoyek@gmail.com>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
|
||||
"POT-Creation-Date: 2020-04-30 23:13+0200\n"
|
||||
"PO-Revision-Date: 2016-12-16 12:18+0000\n"
|
||||
"Last-Translator: Wantoyo <wantoyek@gmail.com>, 2017\n"
|
||||
"Last-Translator: Wantoyèk <wantoyek@gmail.com>, 2017\n"
|
||||
"Language-Team: Indonesian (https://www.transifex.com/calamares/teams/20061/id/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
@ -98,11 +98,6 @@ void
|
||||
doAutopartition( PartitionCoreModule* core, Device* dev, Choices::AutoPartitionOptions o )
|
||||
{
|
||||
Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage();
|
||||
QString defaultFsType = o.defaultFsType;
|
||||
if ( FileSystem::typeForName( defaultFsType ) == FileSystem::Unknown )
|
||||
{
|
||||
defaultFsType = "ext4";
|
||||
}
|
||||
|
||||
bool isEfi = PartUtils::isEfiSystem();
|
||||
|
||||
@ -227,12 +222,6 @@ doReplacePartition( PartitionCoreModule* core, Device* dev, Partition* partition
|
||||
|
||||
cDebug() << "doReplacePartition for device" << partition->partitionPath();
|
||||
|
||||
QString defaultFsType = o.defaultFsType;
|
||||
if ( FileSystem::typeForName( defaultFsType ) == FileSystem::Unknown )
|
||||
{
|
||||
defaultFsType = "ext4";
|
||||
}
|
||||
|
||||
PartitionRole newRoles( partition->roles() );
|
||||
if ( partition->roles().has( PartitionRole::Extended ) )
|
||||
{
|
||||
|
@ -560,7 +560,7 @@ ChoicePage::doAlongsideSetupSplitter( const QModelIndex& current,
|
||||
Partition* part = modl->partitionForIndex( current );
|
||||
if ( !part )
|
||||
{
|
||||
cDebug() << Q_FUNC_INFO << "Partition not found for index" << current;
|
||||
cDebug() << "Partition not found for index" << current;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -120,10 +120,10 @@ PartitionSplitterWidget::setSplitPartition( const QString& path,
|
||||
qint64 maxSize,
|
||||
qint64 preferredSize )
|
||||
{
|
||||
cDebug() << Q_FUNC_INFO << "path:" << path
|
||||
<< "\nminSize:" << minSize
|
||||
<< "\nmaxSize:" << maxSize
|
||||
<< "\nprfSize:" << preferredSize;
|
||||
cDebug() << "path:" << path
|
||||
<< Logger::Continuation << "minSize:" << minSize
|
||||
<< Logger::Continuation << "maxSize:" << maxSize
|
||||
<< Logger::Continuation << "prfSize:" << preferredSize;
|
||||
|
||||
if ( m_itemToResize && m_itemToResizeNext )
|
||||
{
|
||||
|
@ -98,6 +98,7 @@ class ConfigController:
|
||||
|
||||
# Remove calamares
|
||||
self.remove_pkg("calamares", "usr/bin/calamares")
|
||||
self.remove_pkg("calamares-git", "usr/bin/calamares")
|
||||
|
||||
# Copy skel to root
|
||||
self.copy_folder('etc/skel', 'root')
|
||||
|
@ -96,7 +96,7 @@ class RawFSItem:
|
||||
count = 0
|
||||
|
||||
libcalamares.utils.debug("Copying {} to {}".format(self.source, self.destination))
|
||||
if libcalamares.job.configuration["bogus"]:
|
||||
if libcalamares.job.configuration.get("bogus", False):
|
||||
return
|
||||
|
||||
srcsize, srcblksize = get_device_size(self.source)
|
||||
|
Loading…
Reference in New Issue
Block a user