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

This commit is contained in:
Philip Müller 2018-06-21 07:38:30 +02:00
commit 92f2461337
37 changed files with 806 additions and 643 deletions

View File

@ -1,29 +0,0 @@
#### Submission type
- [ ] Bug report
- [ ] Feature Request
#### Info regarding which version of Calamares is used, which Distribution
> …
#### Provide information on how the disks are set up, in detail, with full logs of commands issued
> …
#### What do you expect to have happen when Calamares installs?
> …
#### Describe the issue you encountered
> …
#### Steps to reproduce the problem
> …
#### Include the installation.log (usually ~/Calamares/Calamares/Calamares.log, of the user Calamares runs as):
> …

26
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,26 @@
---
name: Bug report
about: Create a report to help us improve
---
> Hi! Thank you for helping improve Calamares. If you are seeing a problem in installing a specific distribution, you should **probably** report the problem in the distribution's bug tracker, first. That helps filter out issues with packaging, mis-configuration, etc. that Calamares has no control over. If you are a distribution packager or maintainer, this page is for you.
**Describe the bug**
A clear and concise description of what the bug is. Please include 32/64 bit machine details, EFI/BIOS details, and disk setup.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots and Logs**
If applicable, add screenshots to help explain your problem. Calamares has an installation log (usually `~/.cache/calamares/session.log`), please check it for confidential information and attach it if possible.
**Additional context**
Add any other context about the problem here.

View File

@ -0,0 +1,17 @@
---
name: Feature request
about: Suggest an idea for this project
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@ -82,11 +82,11 @@ set( CALAMARES_VERSION_RC 0 )
# checks for new languages and misspelled ones are done (that is, # checks for new languages and misspelled ones are done (that is,
# copy these four lines to four backup lines, add "p", and then update # copy these four lines to four backup lines, add "p", and then update
# the original four lines with the current translations). # the original four lines with the current translations).
set( _tx_complete da pt_PT ro tr_TR zh_TW zh_CN pt_BR fr hr ca lt id cs_CZ ) set( _tx_complete ca zh_TW hr cs_CZ da et fr id it_IT lt pl pt_PT es_MX tr_TR )
set( _tx_good sq es pl ja sk it_IT hu ru he de nl bg uk ) set( _tx_good sq de pt_BR zh_CN ja ro es sk )
set( _tx_ok ast is ar sv el es_MX gl en_GB th fi_FI hi eu sr nb set( _tx_ok hu ru he nl bg uk ast is ko ar sv el gl en_GB
sl sr@latin mr es_PR kk kn et be ) th fi_FI hi eu nb sr sl sr@latin mr es_PR kn kk be )
set( _tx_bad uz lo ur gu fr_CH fa eo ko ) set( _tx_bad fr_CH gu lo fa ur uz eo )
### Required versions ### Required versions

View File

@ -63,6 +63,7 @@ Comment[he]=קלמארס - אשף התקנה
Icon[hi]=calamares Icon[hi]=calamares
GenericName[hi]=ि GenericName[hi]=ि
Comment[hi]=Calamares ि Comment[hi]=Calamares ि
Name[hi]=ि
Icon[hr]=calamares Icon[hr]=calamares
GenericName[hr]=Instalacija sustava GenericName[hr]=Instalacija sustava
Comment[hr]=Calamares Instalacija sustava Comment[hr]=Calamares Instalacija sustava
@ -87,6 +88,10 @@ Icon[ja]=calamares
GenericName[ja]= GenericName[ja]=
Comment[ja]=Calamares Comment[ja]=Calamares
Name[ja]= Name[ja]=
Icon[ko]=
GenericName[ko]=
Comment[ko]=
Name[ko]=
Icon[lt]=calamares Icon[lt]=calamares
GenericName[lt]=Sistemos diegimas į kompiuterį GenericName[lt]=Sistemos diegimas į kompiuterį
Comment[lt]=Calamares Sistemos diegimo programa Comment[lt]=Calamares Sistemos diegimo programa

View File

@ -1,4 +1,6 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="en" version="2.1"> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en">
<context> <context>
<name>BootInfoWidget</name> <name>BootInfoWidget</name>
<message> <message>
@ -45,6 +47,14 @@
<translation>%1 (%2)</translation> <translation>%1 (%2)</translation>
</message> </message>
</context> </context>
<context>
<name>Calamares::BlankViewStep</name>
<message>
<location filename="../src/libcalamaresui/viewpages/BlankViewStep.cpp" line="69"/>
<source>Blank Page</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>Calamares::DebugWindow</name> <name>Calamares::DebugWindow</name>
<message> <message>
@ -97,7 +107,7 @@
<context> <context>
<name>Calamares::ExecutionViewStep</name> <name>Calamares::ExecutionViewStep</name>
<message> <message>
<location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="78"/> <location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="79"/>
<source>Install</source> <source>Install</source>
<translation>Install</translation> <translation>Install</translation>
</message> </message>
@ -105,7 +115,7 @@
<context> <context>
<name>Calamares::JobThread</name> <name>Calamares::JobThread</name>
<message> <message>
<location filename="../src/libcalamares/JobQueue.cpp" line="86"/> <location filename="../src/libcalamares/JobQueue.cpp" line="101"/>
<source>Done</source> <source>Done</source>
<translation>Done</translation> <translation>Done</translation>
</message> </message>
@ -113,12 +123,12 @@
<context> <context>
<name>Calamares::ProcessJob</name> <name>Calamares::ProcessJob</name>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="51"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="52"/>
<source>Run command %1 %2</source> <source>Run command %1 %2</source>
<translation>Run command %1 %2</translation> <translation>Run command %1 %2</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="60"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="61"/>
<source>Running command %1 %2</source> <source>Running command %1 %2</source>
<translation>Running command %1 %2</translation> <translation>Running command %1 %2</translation>
</message> </message>
@ -126,32 +136,32 @@
<context> <context>
<name>Calamares::PythonJob</name> <name>Calamares::PythonJob</name>
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="272"/> <location filename="../src/libcalamares/PythonJob.cpp" line="273"/>
<source>Running %1 operation.</source> <source>Running %1 operation.</source>
<translation>Running %1 operation.</translation> <translation>Running %1 operation.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="287"/> <location filename="../src/libcalamares/PythonJob.cpp" line="288"/>
<source>Bad working directory path</source> <source>Bad working directory path</source>
<translation>Bad working directory path</translation> <translation>Bad working directory path</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="288"/> <location filename="../src/libcalamares/PythonJob.cpp" line="289"/>
<source>Working directory %1 for python job %2 is not readable.</source> <source>Working directory %1 for python job %2 is not readable.</source>
<translation>Working directory %1 for python job %2 is not readable.</translation> <translation>Working directory %1 for python job %2 is not readable.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="298"/> <location filename="../src/libcalamares/PythonJob.cpp" line="299"/>
<source>Bad main script file</source> <source>Bad main script file</source>
<translation>Bad main script file</translation> <translation>Bad main script file</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="299"/> <location filename="../src/libcalamares/PythonJob.cpp" line="300"/>
<source>Main script file %1 for python job %2 is not readable.</source> <source>Main script file %1 for python job %2 is not readable.</source>
<translation>Main script file %1 for python job %2 is not readable.</translation> <translation>Main script file %1 for python job %2 is not readable.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="375"/> <location filename="../src/libcalamares/PythonJob.cpp" line="376"/>
<source>Boost.Python error in job &quot;%1&quot;.</source> <source>Boost.Python error in job &quot;%1&quot;.</source>
<translation>Boost.Python error in job &quot;%1&quot;.</translation> <translation>Boost.Python error in job &quot;%1&quot;.</translation>
</message> </message>
@ -159,97 +169,112 @@
<context> <context>
<name>Calamares::ViewManager</name> <name>Calamares::ViewManager</name>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="73"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="74"/>
<source>&amp;Back</source> <source>&amp;Back</source>
<translation>&amp;Back</translation> <translation>&amp;Back</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="74"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="75"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="257"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="279"/>
<source>&amp;Next</source> <source>&amp;Next</source>
<translation>&amp;Next</translation> <translation>&amp;Next</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="75"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="76"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="266"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="288"/>
<source>&amp;Cancel</source> <source>&amp;Cancel</source>
<translation>&amp;Cancel</translation> <translation>&amp;Cancel</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="76"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="77"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="267"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="289"/>
<source>Cancel installation without changing the system.</source> <source>Cancel installation without changing the system.</source>
<translation>Cancel installation without changing the system.</translation> <translation>Cancel installation without changing the system.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="255"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="179"/>
<source>Calamares Initialization Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="185"/>
<source>&lt;br/&gt;The following modules could not be loaded:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="277"/>
<source>&amp;Install</source> <source>&amp;Install</source>
<translation>&amp;Install</translation> <translation>&amp;Install</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="303"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="325"/>
<source>Cancel installation?</source> <source>Cancel installation?</source>
<translation>Cancel installation?</translation> <translation>Cancel installation?</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="304"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="326"/>
<source>Do you really want to cancel the current install process? <source>Do you really want to cancel the current install process?
The installer will quit and all changes will be lost.</source> The installer will quit and all changes will be lost.</source>
<translation>Do you really want to cancel the current install process? <translation>Do you really want to cancel the current install process?
The installer will quit and all changes will be lost.</translation> The installer will quit and all changes will be lost.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="309"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="331"/>
<source>&amp;Yes</source> <source>&amp;Yes</source>
<translation>&amp;Yes</translation> <translation>&amp;Yes</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="310"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="332"/>
<source>&amp;No</source> <source>&amp;No</source>
<translation>&amp;No</translation> <translation>&amp;No</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="162"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="163"/>
<source>&amp;Close</source> <source>&amp;Close</source>
<translation>&amp;Close</translation> <translation>&amp;Close</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="215"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="237"/>
<source>Continue with setup?</source> <source>Continue with setup?</source>
<translation>Continue with setup?</translation> <translation>Continue with setup?</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="216"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="238"/>
<source>The %1 installer is about to make changes to your disk in order to install %2.&lt;br/&gt;&lt;strong&gt;You will not be able to undo these changes.&lt;/strong&gt;</source> <source>The %1 installer is about to make changes to your disk in order to install %2.&lt;br/&gt;&lt;strong&gt;You will not be able to undo these changes.&lt;/strong&gt;</source>
<translation>The %1 installer is about to make changes to your disk in order to install %2.&lt;br/&gt;&lt;strong&gt;You will not be able to undo these changes.&lt;/strong&gt;</translation> <translation>The %1 installer is about to make changes to your disk in order to install %2.&lt;br/&gt;&lt;strong&gt;You will not be able to undo these changes.&lt;/strong&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="221"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="243"/>
<source>&amp;Install now</source> <source>&amp;Install now</source>
<translation>&amp;Install now</translation> <translation>&amp;Install now</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="222"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="244"/>
<source>Go &amp;back</source> <source>Go &amp;back</source>
<translation>Go &amp;back</translation> <translation>Go &amp;back</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="261"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="283"/>
<source>&amp;Done</source> <source>&amp;Done</source>
<translation>&amp;Done</translation> <translation>&amp;Done</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="262"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="284"/>
<source>The installation is complete. Close the installer.</source> <source>The installation is complete. Close the installer.</source>
<translation>The installation is complete. Close the installer.</translation> <translation>The installation is complete. Close the installer.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="159"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="160"/>
<source>Error</source> <source>Error</source>
<translation>Error</translation> <translation>Error</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="160"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="161"/>
<source>Installation Failed</source> <source>Installation Failed</source>
<translation>Installation Failed</translation> <translation>Installation Failed</translation>
</message> </message>
@ -436,17 +461,17 @@ The installer will quit and all changes will be lost.</translation>
<context> <context>
<name>ClearMountsJob</name> <name>ClearMountsJob</name>
<message> <message>
<location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="45"/> <location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="46"/>
<source>Clear mounts for partitioning operations on %1</source> <source>Clear mounts for partitioning operations on %1</source>
<translation>Clear mounts for partitioning operations on %1</translation> <translation>Clear mounts for partitioning operations on %1</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="53"/> <location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="54"/>
<source>Clearing mounts for partitioning operations on %1.</source> <source>Clearing mounts for partitioning operations on %1.</source>
<translation>Clearing mounts for partitioning operations on %1.</translation> <translation>Clearing mounts for partitioning operations on %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="190"/> <location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="191"/>
<source>Cleared all mounts for %1</source> <source>Cleared all mounts for %1</source>
<translation>Cleared all mounts for %1</translation> <translation>Cleared all mounts for %1</translation>
</message> </message>
@ -554,27 +579,27 @@ The installer will quit and all changes will be lost.</translation>
<translation>Si&amp;ze:</translation> <translation>Si&amp;ze:</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="69"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="72"/>
<source>En&amp;crypt</source> <source>En&amp;crypt</source>
<translation>En&amp;crypt</translation> <translation>En&amp;crypt</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="148"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="151"/>
<source>Logical</source> <source>Logical</source>
<translation>Logical</translation> <translation>Logical</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="153"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="156"/>
<source>Primary</source> <source>Primary</source>
<translation>Primary</translation> <translation>Primary</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="170"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="173"/>
<source>GPT</source> <source>GPT</source>
<translation>GPT</translation> <translation>GPT</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="259"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="262"/>
<source>Mountpoint already in use. Please select another one.</source> <source>Mountpoint already in use. Please select another one.</source>
<translation>Mountpoint already in use. Please select another one.</translation> <translation>Mountpoint already in use. Please select another one.</translation>
</message> </message>
@ -776,7 +801,7 @@ The installer will quit and all changes will be lost.</translation>
<context> <context>
<name>DummyCppJob</name> <name>DummyCppJob</name>
<message> <message>
<location filename="../src/modules/dummycpp/DummyCppJob.cpp" line="46"/> <location filename="../src/modules/dummycpp/DummyCppJob.cpp" line="47"/>
<source>Dummy C++ Job</source> <source>Dummy C++ Job</source>
<translation>Dummy C++ Job</translation> <translation>Dummy C++ Job</translation>
</message> </message>
@ -834,7 +859,7 @@ The installer will quit and all changes will be lost.</translation>
<translation>Flags:</translation> <translation>Flags:</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.cpp" line="268"/> <location filename="../src/modules/partition/gui/EditExistingPartitionDialog.cpp" line="269"/>
<source>Mountpoint already in use. Please select another one.</source> <source>Mountpoint already in use. Please select another one.</source>
<translation>Mountpoint already in use. Please select another one.</translation> <translation>Mountpoint already in use. Please select another one.</translation>
</message> </message>
@ -1003,12 +1028,12 @@ The installer will quit and all changes will be lost.</translation>
<context> <context>
<name>KeyboardPage</name> <name>KeyboardPage</name>
<message> <message>
<location filename="../src/modules/keyboard/KeyboardPage.cpp" line="220"/> <location filename="../src/modules/keyboard/KeyboardPage.cpp" line="219"/>
<source>Set keyboard model to %1.&lt;br/&gt;</source> <source>Set keyboard model to %1.&lt;br/&gt;</source>
<translation>Set keyboard model to %1.&lt;br/&gt;</translation> <translation>Set keyboard model to %1.&lt;br/&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/keyboard/KeyboardPage.cpp" line="222"/> <location filename="../src/modules/keyboard/KeyboardPage.cpp" line="221"/>
<source>Set keyboard layout to %1/%2.</source> <source>Set keyboard layout to %1/%2.</source>
<translation>Set keyboard layout to %1/%2.</translation> <translation>Set keyboard layout to %1/%2.</translation>
</message> </message>
@ -1052,64 +1077,64 @@ The installer will quit and all changes will be lost.</translation>
<translation>Form</translation> <translation>Form</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="88"/> <location filename="../src/modules/license/LicensePage.cpp" line="89"/>
<source>I accept the terms and conditions above.</source> <source>I accept the terms and conditions above.</source>
<translation>I accept the terms and conditions above.</translation> <translation>I accept the terms and conditions above.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="115"/> <location filename="../src/modules/license/LicensePage.cpp" line="116"/>
<source>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure will install proprietary software that is subject to licensing terms.</source> <source>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure will install proprietary software that is subject to licensing terms.</source>
<translation>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure will install proprietary software that is subject to licensing terms.</translation> <translation>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure will install proprietary software that is subject to licensing terms.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="118"/> <location filename="../src/modules/license/LicensePage.cpp" line="119"/>
<source>Please review the End User License Agreements (EULAs) above.&lt;br/&gt;If you do not agree with the terms, the setup procedure cannot continue.</source> <source>Please review the End User License Agreements (EULAs) above.&lt;br/&gt;If you do not agree with the terms, the setup procedure cannot continue.</source>
<translation>Please review the End User License Agreements (EULAs) above.&lt;br/&gt;If you do not agree with the terms, the setup procedure cannot continue.</translation> <translation>Please review the End User License Agreements (EULAs) above.&lt;br/&gt;If you do not agree with the terms, the setup procedure cannot continue.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="124"/> <location filename="../src/modules/license/LicensePage.cpp" line="125"/>
<source>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience.</source> <source>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience.</source>
<translation>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience.</translation> <translation>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="129"/> <location filename="../src/modules/license/LicensePage.cpp" line="130"/>
<source>Please review the End User License Agreements (EULAs) above.&lt;br/&gt;If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead.</source> <source>Please review the End User License Agreements (EULAs) above.&lt;br/&gt;If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead.</source>
<translation>Please review the End User License Agreements (EULAs) above.&lt;br/&gt;If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead.</translation> <translation>Please review the End User License Agreements (EULAs) above.&lt;br/&gt;If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="159"/> <location filename="../src/modules/license/LicensePage.cpp" line="160"/>
<source>&lt;strong&gt;%1 driver&lt;/strong&gt;&lt;br/&gt;by %2</source> <source>&lt;strong&gt;%1 driver&lt;/strong&gt;&lt;br/&gt;by %2</source>
<extracomment>%1 is an untranslatable product name, example: Creative Audigy driver</extracomment> <extracomment>%1 is an untranslatable product name, example: Creative Audigy driver</extracomment>
<translation>&lt;strong&gt;%1 driver&lt;/strong&gt;&lt;br/&gt;by %2</translation> <translation>&lt;strong&gt;%1 driver&lt;/strong&gt;&lt;br/&gt;by %2</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="166"/> <location filename="../src/modules/license/LicensePage.cpp" line="167"/>
<source>&lt;strong&gt;%1 graphics driver&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</source> <source>&lt;strong&gt;%1 graphics driver&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</source>
<extracomment>%1 is usually a vendor name, example: Nvidia graphics driver</extracomment> <extracomment>%1 is usually a vendor name, example: Nvidia graphics driver</extracomment>
<translation>&lt;strong&gt;%1 graphics driver&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</translation> <translation>&lt;strong&gt;%1 graphics driver&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="172"/> <location filename="../src/modules/license/LicensePage.cpp" line="173"/>
<source>&lt;strong&gt;%1 browser plugin&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</source> <source>&lt;strong&gt;%1 browser plugin&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</source>
<translation>&lt;strong&gt;%1 browser plugin&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</translation> <translation>&lt;strong&gt;%1 browser plugin&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="178"/> <location filename="../src/modules/license/LicensePage.cpp" line="179"/>
<source>&lt;strong&gt;%1 codec&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</source> <source>&lt;strong&gt;%1 codec&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</source>
<translation>&lt;strong&gt;%1 codec&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</translation> <translation>&lt;strong&gt;%1 codec&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="184"/> <location filename="../src/modules/license/LicensePage.cpp" line="185"/>
<source>&lt;strong&gt;%1 package&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</source> <source>&lt;strong&gt;%1 package&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</source>
<translation>&lt;strong&gt;%1 package&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</translation> <translation>&lt;strong&gt;%1 package&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="190"/> <location filename="../src/modules/license/LicensePage.cpp" line="191"/>
<source>&lt;strong&gt;%1&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</source> <source>&lt;strong&gt;%1&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</source>
<translation>&lt;strong&gt;%1&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</translation> <translation>&lt;strong&gt;%1&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;Grey&quot;&gt;by %2&lt;/font&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="202"/> <location filename="../src/modules/license/LicensePage.cpp" line="203"/>
<source>&lt;a href=&quot;%1&quot;&gt;view license agreement&lt;/a&gt;</source> <source>&lt;a href=&quot;%1&quot;&gt;view license agreement&lt;/a&gt;</source>
<translation>&lt;a href=&quot;%1&quot;&gt;view license agreement&lt;/a&gt;</translation> <translation>&lt;a href=&quot;%1&quot;&gt;view license agreement&lt;/a&gt;</translation>
</message> </message>
@ -1583,34 +1608,34 @@ The installer will quit and all changes will be lost.</translation>
<context> <context>
<name>PartitionModel</name> <name>PartitionModel</name>
<message> <message>
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="137"/> <location filename="../src/modules/partition/core/PartitionModel.cpp" line="138"/>
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="169"/> <location filename="../src/modules/partition/core/PartitionModel.cpp" line="170"/>
<source>Free Space</source> <source>Free Space</source>
<translation>Free Space</translation> <translation>Free Space</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="141"/> <location filename="../src/modules/partition/core/PartitionModel.cpp" line="142"/>
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="173"/> <location filename="../src/modules/partition/core/PartitionModel.cpp" line="174"/>
<source>New partition</source> <source>New partition</source>
<translation>New partition</translation> <translation>New partition</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="257"/> <location filename="../src/modules/partition/core/PartitionModel.cpp" line="258"/>
<source>Name</source> <source>Name</source>
<translation>Name</translation> <translation>Name</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="259"/> <location filename="../src/modules/partition/core/PartitionModel.cpp" line="260"/>
<source>File System</source> <source>File System</source>
<translation>File System</translation> <translation>File System</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="261"/> <location filename="../src/modules/partition/core/PartitionModel.cpp" line="262"/>
<source>Mount Point</source> <source>Mount Point</source>
<translation>Mount Point</translation> <translation>Mount Point</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="263"/> <location filename="../src/modules/partition/core/PartitionModel.cpp" line="264"/>
<source>Size</source> <source>Size</source>
<translation>Size</translation> <translation>Size</translation>
</message> </message>
@ -1639,8 +1664,8 @@ The installer will quit and all changes will be lost.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="107"/> <location filename="../src/modules/partition/gui/PartitionPage.ui" line="107"/>
<source>&amp;Create</source> <source>Cre&amp;ate</source>
<translation>&amp;Create</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="114"/> <location filename="../src/modules/partition/gui/PartitionPage.ui" line="114"/>
@ -1658,17 +1683,17 @@ The installer will quit and all changes will be lost.</translation>
<translation>Install boot &amp;loader on:</translation> <translation>Install boot &amp;loader on:</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="169"/> <location filename="../src/modules/partition/gui/PartitionPage.cpp" line="171"/>
<source>Are you sure you want to create a new partition table on %1?</source> <source>Are you sure you want to create a new partition table on %1?</source>
<translation>Are you sure you want to create a new partition table on %1?</translation> <translation>Are you sure you want to create a new partition table on %1?</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="193"/> <location filename="../src/modules/partition/gui/PartitionPage.cpp" line="195"/>
<source>Can not create new partition</source> <source>Can not create new partition</source>
<translation>Can not create new partition</translation> <translation>Can not create new partition</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="194"/> <location filename="../src/modules/partition/gui/PartitionPage.cpp" line="196"/>
<source>The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead.</source> <source>The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead.</source>
<translation>The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead.</translation> <translation>The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead.</translation>
</message> </message>
@ -1676,97 +1701,97 @@ The installer will quit and all changes will be lost.</translation>
<context> <context>
<name>PartitionViewStep</name> <name>PartitionViewStep</name>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="70"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="71"/>
<source>Gathering system information...</source> <source>Gathering system information...</source>
<translation>Gathering system information...</translation> <translation>Gathering system information...</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="121"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="122"/>
<source>Partitions</source> <source>Partitions</source>
<translation>Partitions</translation> <translation>Partitions</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="158"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="159"/>
<source>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system.</source> <source>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system.</source>
<translation>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system.</translation> <translation>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="162"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="163"/>
<source>&lt;strong&gt;Erase&lt;/strong&gt; disk and install %1.</source> <source>&lt;strong&gt;Erase&lt;/strong&gt; disk and install %1.</source>
<translation>&lt;strong&gt;Erase&lt;/strong&gt; disk and install %1.</translation> <translation>&lt;strong&gt;Erase&lt;/strong&gt; disk and install %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="166"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="167"/>
<source>&lt;strong&gt;Replace&lt;/strong&gt; a partition with %1.</source> <source>&lt;strong&gt;Replace&lt;/strong&gt; a partition with %1.</source>
<translation>&lt;strong&gt;Replace&lt;/strong&gt; a partition with %1.</translation> <translation>&lt;strong&gt;Replace&lt;/strong&gt; a partition with %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="171"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="172"/>
<source>&lt;strong&gt;Manual&lt;/strong&gt; partitioning.</source> <source>&lt;strong&gt;Manual&lt;/strong&gt; partitioning.</source>
<translation>&lt;strong&gt;Manual&lt;/strong&gt; partitioning.</translation> <translation>&lt;strong&gt;Manual&lt;/strong&gt; partitioning.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="184"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="185"/>
<source>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system on disk &lt;strong&gt;%2&lt;/strong&gt; (%3).</source> <source>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system on disk &lt;strong&gt;%2&lt;/strong&gt; (%3).</source>
<translation>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system on disk &lt;strong&gt;%2&lt;/strong&gt; (%3).</translation> <translation>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system on disk &lt;strong&gt;%2&lt;/strong&gt; (%3).</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="190"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="191"/>
<source>&lt;strong&gt;Erase&lt;/strong&gt; disk &lt;strong&gt;%2&lt;/strong&gt; (%3) and install %1.</source> <source>&lt;strong&gt;Erase&lt;/strong&gt; disk &lt;strong&gt;%2&lt;/strong&gt; (%3) and install %1.</source>
<translation>&lt;strong&gt;Erase&lt;/strong&gt; disk &lt;strong&gt;%2&lt;/strong&gt; (%3) and install %1.</translation> <translation>&lt;strong&gt;Erase&lt;/strong&gt; disk &lt;strong&gt;%2&lt;/strong&gt; (%3) and install %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="196"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="197"/>
<source>&lt;strong&gt;Replace&lt;/strong&gt; a partition on disk &lt;strong&gt;%2&lt;/strong&gt; (%3) with %1.</source> <source>&lt;strong&gt;Replace&lt;/strong&gt; a partition on disk &lt;strong&gt;%2&lt;/strong&gt; (%3) with %1.</source>
<translation>&lt;strong&gt;Replace&lt;/strong&gt; a partition on disk &lt;strong&gt;%2&lt;/strong&gt; (%3) with %1.</translation> <translation>&lt;strong&gt;Replace&lt;/strong&gt; a partition on disk &lt;strong&gt;%2&lt;/strong&gt; (%3) with %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="203"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="204"/>
<source>&lt;strong&gt;Manual&lt;/strong&gt; partitioning on disk &lt;strong&gt;%1&lt;/strong&gt; (%2).</source> <source>&lt;strong&gt;Manual&lt;/strong&gt; partitioning on disk &lt;strong&gt;%1&lt;/strong&gt; (%2).</source>
<translation>&lt;strong&gt;Manual&lt;/strong&gt; partitioning on disk &lt;strong&gt;%1&lt;/strong&gt; (%2).</translation> <translation>&lt;strong&gt;Manual&lt;/strong&gt; partitioning on disk &lt;strong&gt;%1&lt;/strong&gt; (%2).</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="211"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="212"/>
<source>Disk &lt;strong&gt;%1&lt;/strong&gt; (%2)</source> <source>Disk &lt;strong&gt;%1&lt;/strong&gt; (%2)</source>
<translation>Disk &lt;strong&gt;%1&lt;/strong&gt; (%2)</translation> <translation>Disk &lt;strong&gt;%1&lt;/strong&gt; (%2)</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="239"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="240"/>
<source>Current:</source> <source>Current:</source>
<translation>Current:</translation> <translation>Current:</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="256"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="257"/>
<source>After:</source> <source>After:</source>
<translation>After:</translation> <translation>After:</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="399"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="400"/>
<source>No EFI system partition configured</source> <source>No EFI system partition configured</source>
<translation>No EFI system partition configured</translation> <translation>No EFI system partition configured</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="400"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="401"/>
<source>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;To configure an EFI system partition, go back and select or create a FAT32 filesystem with the &lt;strong&gt;esp&lt;/strong&gt; flag enabled and mount point &lt;strong&gt;%2&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;You can continue without setting up an EFI system partition but your system may fail to start.</source> <source>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;To configure an EFI system partition, go back and select or create a FAT32 filesystem with the &lt;strong&gt;esp&lt;/strong&gt; flag enabled and mount point &lt;strong&gt;%2&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;You can continue without setting up an EFI system partition but your system may fail to start.</source>
<translation>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;To configure an EFI system partition, go back and select or create a FAT32 filesystem with the &lt;strong&gt;esp&lt;/strong&gt; flag enabled and mount point &lt;strong&gt;%2&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;You can continue without setting up an EFI system partition but your system may fail to start.</translation> <translation>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;To configure an EFI system partition, go back and select or create a FAT32 filesystem with the &lt;strong&gt;esp&lt;/strong&gt; flag enabled and mount point &lt;strong&gt;%2&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;You can continue without setting up an EFI system partition but your system may fail to start.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="413"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="414"/>
<source>EFI system partition flag not set</source> <source>EFI system partition flag not set</source>
<translation>EFI system partition flag not set</translation> <translation>EFI system partition flag not set</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="414"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="415"/>
<source>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;A partition was configured with mount point &lt;strong&gt;%2&lt;/strong&gt; but its &lt;strong&gt;esp&lt;/strong&gt; flag is not set.&lt;br/&gt;To set the flag, go back and edit the partition.&lt;br/&gt;&lt;br/&gt;You can continue without setting the flag but your system may fail to start.</source> <source>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;A partition was configured with mount point &lt;strong&gt;%2&lt;/strong&gt; but its &lt;strong&gt;esp&lt;/strong&gt; flag is not set.&lt;br/&gt;To set the flag, go back and edit the partition.&lt;br/&gt;&lt;br/&gt;You can continue without setting the flag but your system may fail to start.</source>
<translation>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;A partition was configured with mount point &lt;strong&gt;%2&lt;/strong&gt; but its &lt;strong&gt;esp&lt;/strong&gt; flag is not set.&lt;br/&gt;To set the flag, go back and edit the partition.&lt;br/&gt;&lt;br/&gt;You can continue without setting the flag but your system may fail to start.</translation> <translation>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;A partition was configured with mount point &lt;strong&gt;%2&lt;/strong&gt; but its &lt;strong&gt;esp&lt;/strong&gt; flag is not set.&lt;br/&gt;To set the flag, go back and edit the partition.&lt;br/&gt;&lt;br/&gt;You can continue without setting the flag but your system may fail to start.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="449"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="450"/>
<source>Boot partition not encrypted</source> <source>Boot partition not encrypted</source>
<translation>Boot partition not encrypted</translation> <translation>Boot partition not encrypted</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="450"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="451"/>
<source>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.&lt;br/&gt;&lt;br/&gt;There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.&lt;br/&gt;You may continue if you wish, but filesystem unlocking will happen later during system startup.&lt;br/&gt;To encrypt the boot partition, go back and recreate it, selecting &lt;strong&gt;Encrypt&lt;/strong&gt; in the partition creation window.</source> <source>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.&lt;br/&gt;&lt;br/&gt;There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.&lt;br/&gt;You may continue if you wish, but filesystem unlocking will happen later during system startup.&lt;br/&gt;To encrypt the boot partition, go back and recreate it, selecting &lt;strong&gt;Encrypt&lt;/strong&gt; in the partition creation window.</source>
<translation>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.&lt;br/&gt;&lt;br/&gt;There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.&lt;br/&gt;You may continue if you wish, but filesystem unlocking will happen later during system startup.&lt;br/&gt;To encrypt the boot partition, go back and recreate it, selecting &lt;strong&gt;Encrypt&lt;/strong&gt; in the partition creation window.</translation> <translation>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.&lt;br/&gt;&lt;br/&gt;There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.&lt;br/&gt;You may continue if you wish, but filesystem unlocking will happen later during system startup.&lt;br/&gt;To encrypt the boot partition, go back and recreate it, selecting &lt;strong&gt;Encrypt&lt;/strong&gt; in the partition creation window.</translation>
</message> </message>
@ -1912,22 +1937,22 @@ Output:
<translation>Default</translation> <translation>Default</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/core/KPMHelpers.cpp" line="206"/> <location filename="../src/modules/partition/core/KPMHelpers.cpp" line="207"/>
<source>unknown</source> <source>unknown</source>
<translation>unknown</translation> <translation>unknown</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/core/KPMHelpers.cpp" line="208"/> <location filename="../src/modules/partition/core/KPMHelpers.cpp" line="209"/>
<source>extended</source> <source>extended</source>
<translation>extended</translation> <translation>extended</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/core/KPMHelpers.cpp" line="210"/> <location filename="../src/modules/partition/core/KPMHelpers.cpp" line="211"/>
<source>unformatted</source> <source>unformatted</source>
<translation>unformatted</translation> <translation>unformatted</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/core/KPMHelpers.cpp" line="212"/> <location filename="../src/modules/partition/core/KPMHelpers.cpp" line="213"/>
<source>swap</source> <source>swap</source>
<translation>swap</translation> <translation>swap</translation>
</message> </message>
@ -2109,29 +2134,29 @@ Output:
<context> <context>
<name>SetHostNameJob</name> <name>SetHostNameJob</name>
<message> <message>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="37"/> <location filename="../src/modules/users/SetHostNameJob.cpp" line="38"/>
<source>Set hostname %1</source> <source>Set hostname %1</source>
<translation>Set hostname %1</translation> <translation>Set hostname %1</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="44"/> <location filename="../src/modules/users/SetHostNameJob.cpp" line="45"/>
<source>Set hostname &lt;strong&gt;%1&lt;/strong&gt;.</source> <source>Set hostname &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation>Set hostname &lt;strong&gt;%1&lt;/strong&gt;.</translation> <translation>Set hostname &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="51"/> <location filename="../src/modules/users/SetHostNameJob.cpp" line="52"/>
<source>Setting hostname %1.</source> <source>Setting hostname %1.</source>
<translation>Setting hostname %1.</translation> <translation>Setting hostname %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="61"/> <location filename="../src/modules/users/SetHostNameJob.cpp" line="62"/>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="68"/> <location filename="../src/modules/users/SetHostNameJob.cpp" line="69"/>
<source>Internal Error</source> <source>Internal Error</source>
<translation>Internal Error</translation> <translation>Internal Error</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="75"/> <location filename="../src/modules/users/SetHostNameJob.cpp" line="76"/>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="86"/> <location filename="../src/modules/users/SetHostNameJob.cpp" line="87"/>
<source>Cannot write hostname to target system</source> <source>Cannot write hostname to target system</source>
<translation>Cannot write hostname to target system</translation> <translation>Cannot write hostname to target system</translation>
</message> </message>
@ -2583,7 +2608,7 @@ Output:
<context> <context>
<name>WelcomeViewStep</name> <name>WelcomeViewStep</name>
<message> <message>
<location filename="../src/modules/welcome/WelcomeViewStep.cpp" line="51"/> <location filename="../src/modules/welcome/WelcomeViewStep.cpp" line="52"/>
<source>Welcome</source> <source>Welcome</source>
<translation>Welcome</translation> <translation>Welcome</translation>
</message> </message>

View File

@ -343,7 +343,7 @@ El instalador terminará y se perderán todos los cambios.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="942"/> <location filename="../src/modules/partition/gui/ChoicePage.cpp" line="942"/>
<source>%1 will be shrunk to %2MB and a new %3MB partition will be created for %4.</source> <source>%1 will be shrunk to %2MB and a new %3MB partition will be created for %4.</source>
<translation>%1 será reducido a %2MB y una nueva partición de %3MB será creado para %4.</translation> <translation>%1 será reducido a %2MB y una nueva partición %3MB will be created for %4.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="126"/> <location filename="../src/modules/partition/gui/ChoicePage.cpp" line="126"/>
@ -439,12 +439,12 @@ El instalador terminará y se perderán todos los cambios.</translation>
<message> <message>
<location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="45"/> <location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="45"/>
<source>Clear mounts for partitioning operations on %1</source> <source>Clear mounts for partitioning operations on %1</source>
<translation>Despejar puntos de montaje para operaciones de particionamiento en %1</translation> <translation>Borrar puntos de montaje para operaciones de particionamiento en %1</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="53"/> <location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="53"/>
<source>Clearing mounts for partitioning operations on %1.</source> <source>Clearing mounts for partitioning operations on %1.</source>
<translation>Despejando puntos de montaje para operaciones de particionamiento en %1</translation> <translation>Borrando puntos de montaje para operaciones de particionamiento en %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="190"/> <location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="190"/>
@ -499,7 +499,7 @@ El instalador terminará y se perderán todos los cambios.</translation>
<message> <message>
<location filename="../src/modules/contextualprocess/ContextualProcessJob.cpp" line="117"/> <location filename="../src/modules/contextualprocess/ContextualProcessJob.cpp" line="117"/>
<source>Contextual Processes Job</source> <source>Contextual Processes Job</source>
<translation>Tareas de procesos contextuales.</translation> <translation>Tareas de procesos contextuales</translation>
</message> </message>
</context> </context>
<context> <context>
@ -507,7 +507,7 @@ El instalador terminará y se perderán todos los cambios.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="14"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="14"/>
<source>Create a Partition</source> <source>Create a Partition</source>
<translation>Crear una partición</translation> <translation>Crear una Partición</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="48"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="48"/>
@ -636,7 +636,7 @@ El instalador terminará y se perderán todos los cambios.</translation>
<message> <message>
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="45"/> <location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="45"/>
<source>Create new %1 partition table on %2.</source> <source>Create new %1 partition table on %2.</source>
<translation> Crear nueva tabla de particiones %1 en %2</translation> <translation> Crear nueva tabla de partición %1 en %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="52"/> <location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="52"/>
@ -878,7 +878,7 @@ El instalador terminará y se perderán todos los cambios.</translation>
<message> <message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="147"/> <location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="147"/>
<source>Install %1 on &lt;strong&gt;new&lt;/strong&gt; %2 system partition.</source> <source>Install %1 on &lt;strong&gt;new&lt;/strong&gt; %2 system partition.</source>
<translation>Instalar %1 en &lt;strong&gt;nueva&lt;/strong&gt; partición de sistema %2.</translation> <translation>Instalar %1 en &lt;strong&gt;nueva&lt;/strong&gt; %2 partición de sistema.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="151"/> <location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="151"/>
@ -1714,7 +1714,7 @@ El instalador terminará y se perderán todos los cambios.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="190"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="190"/>
<source>&lt;strong&gt;Erase&lt;/strong&gt; disk &lt;strong&gt;%2&lt;/strong&gt; (%3) and install %1.</source> <source>&lt;strong&gt;Erase&lt;/strong&gt; disk &lt;strong&gt;%2&lt;/strong&gt; (%3) and install %1.</source>
<translation> &lt;strong&gt;Borrar&lt;/strong&gt; el disco &lt;strong&gt;%2&lt;strong&gt; (%3) e instalar %1.</translation> <translation>&lt;strong&gt;Borrar&lt;/strong&gt; el disco &lt;strong&gt;%2&lt;strong&gt; (%3) e instalar %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="196"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="196"/>

File diff suppressed because it is too large Load Diff

View File

@ -1325,12 +1325,12 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="201"/> <location filename="../src/modules/users/CheckPWQuality.cpp" line="201"/>
<source>The password contains less than %1 character classes</source> <source>The password contains less than %1 character classes</source>
<translation type="unfinished"/> <translation>Пароль содержит менее %1 классов символов</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="202"/> <location filename="../src/modules/users/CheckPWQuality.cpp" line="202"/>
<source>The password does not contain enough character classes</source> <source>The password does not contain enough character classes</source>
<translation type="unfinished"/> <translation>Пароль содержит недостаточно классов символов</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="205"/> <location filename="../src/modules/users/CheckPWQuality.cpp" line="205"/>
@ -1345,27 +1345,27 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="209"/> <location filename="../src/modules/users/CheckPWQuality.cpp" line="209"/>
<source>The password contains more than %1 characters of the same class consecutively</source> <source>The password contains more than %1 characters of the same class consecutively</source>
<translation type="unfinished"/> <translation>Пароль содержит более %1 символов одного и того же класса последовательно</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="210"/> <location filename="../src/modules/users/CheckPWQuality.cpp" line="210"/>
<source>The password contains too many characters of the same class consecutively</source> <source>The password contains too many characters of the same class consecutively</source>
<translation type="unfinished"/> <translation>Пароль содержит слишком длинную последовательность символов одного и того же класса</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="213"/> <location filename="../src/modules/users/CheckPWQuality.cpp" line="213"/>
<source>The password contains monotonic sequence longer than %1 characters</source> <source>The password contains monotonic sequence longer than %1 characters</source>
<translation type="unfinished"/> <translation>Пароль содержит монотонную последовательность длиннее %1 символов</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="214"/> <location filename="../src/modules/users/CheckPWQuality.cpp" line="214"/>
<source>The password contains too long of a monotonic character sequence</source> <source>The password contains too long of a monotonic character sequence</source>
<translation type="unfinished"/> <translation>Пароль содержит слишком длинную монотонную последовательность символов</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="216"/> <location filename="../src/modules/users/CheckPWQuality.cpp" line="216"/>
<source>No password supplied</source> <source>No password supplied</source>
<translation type="unfinished"/> <translation>Не задан пароль</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="218"/> <location filename="../src/modules/users/CheckPWQuality.cpp" line="218"/>
@ -1841,7 +1841,9 @@ There was no output from the command.</source>
<source> <source>
Output: Output:
</source> </source>
<translation type="unfinished"/> <translation>
Вывод:
</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="275"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="275"/>
@ -1856,17 +1858,17 @@ Output:
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="281"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="281"/>
<source>External command failed to start.</source> <source>External command failed to start.</source>
<translation type="unfinished"/> <translation>Не удалось запустить внешнюю команду.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="282"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="282"/>
<source>Command &lt;i&gt;%1&lt;/i&gt; failed to start.</source> <source>Command &lt;i&gt;%1&lt;/i&gt; failed to start.</source>
<translation type="unfinished"/> <translation>Не удалось запустить команду &lt;i&gt;%1&lt;/i&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="286"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="286"/>
<source>Internal error when starting command.</source> <source>Internal error when starting command.</source>
<translation type="unfinished"/> <translation>Внутренняя ошибка при запуске команды.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="287"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="287"/>
@ -1876,7 +1878,7 @@ Output:
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="290"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="290"/>
<source>External command failed to finish.</source> <source>External command failed to finish.</source>
<translation type="unfinished"/> <translation>Не удалось завершить внешнюю команду.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="291"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="291"/>
@ -2364,12 +2366,12 @@ Output:
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="43"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="43"/>
<source>Installation feedback</source> <source>Installation feedback</source>
<translation type="unfinished"/> <translation>Отчёт об установке</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="53"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="53"/>
<source>Sending installation feedback.</source> <source>Sending installation feedback.</source>
<translation type="unfinished"/> <translation>Отправка отчёта об установке.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="88"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="88"/>

View File

@ -8,51 +8,51 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-28 04:57-0400\n" "POT-Creation-Date: 2018-06-18 07:46-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: \n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
#: src/modules/umount/main.py:40 #: src/modules/umount/main.py:40
msgid "Unmount file systems." msgid "Unmount file systems."
msgstr "Unmount file systems." msgstr ""
#: src/modules/dummypython/main.py:44 #: src/modules/dummypython/main.py:44
msgid "Dummy python job." msgid "Dummy python job."
msgstr "Dummy python job." msgstr ""
#: src/modules/dummypython/main.py:97 #: src/modules/dummypython/main.py:97
msgid "Dummy python step {}" msgid "Dummy python step {}"
msgstr "Dummy python step {}" msgstr ""
#: src/modules/machineid/main.py:35 #: src/modules/machineid/main.py:35
msgid "Generate machine-id." msgid "Generate machine-id."
msgstr "Generate machine-id." msgstr ""
#: src/modules/packages/main.py:61 #: src/modules/packages/main.py:62
#, python-format #, python-format
msgid "Processing packages (%(count)d / %(total)d)" msgid "Processing packages (%(count)d / %(total)d)"
msgstr "Processing packages (%(count)d / %(total)d)" msgstr ""
#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 #: src/modules/packages/main.py:64 src/modules/packages/main.py:74
msgid "Install packages." msgid "Install packages."
msgstr "Install packages." msgstr ""
#: src/modules/packages/main.py:66 #: src/modules/packages/main.py:67
#, python-format #, python-format
msgid "Installing one package." msgid "Installing one package."
msgid_plural "Installing %(num)d packages." msgid_plural "Installing %(num)d packages."
msgstr[0] "Installing one package." msgstr[0] ""
msgstr[1] "Installing %(num)d packages." msgstr[1] ""
#: src/modules/packages/main.py:69 #: src/modules/packages/main.py:70
#, python-format #, python-format
msgid "Removing one package." msgid "Removing one package."
msgid_plural "Removing %(num)d packages." msgid_plural "Removing %(num)d packages."
msgstr[0] "Removing one package." msgstr[0] ""
msgstr[1] "Removing %(num)d packages." msgstr[1] ""

Binary file not shown.

View File

@ -20,24 +20,24 @@ msgstr ""
#: src/modules/umount/main.py:40 #: src/modules/umount/main.py:40
msgid "Unmount file systems." msgid "Unmount file systems."
msgstr "" msgstr "फ़ाइल सिस्टम माउंट से हटाएँ।"
#: src/modules/dummypython/main.py:44 #: src/modules/dummypython/main.py:44
msgid "Dummy python job." msgid "Dummy python job."
msgstr "Dummy python job." msgstr "डमी पाइथन प्रक्रिया ।"
#: src/modules/dummypython/main.py:97 #: src/modules/dummypython/main.py:97
msgid "Dummy python step {}" msgid "Dummy python step {}"
msgstr "Dummy python step {}" msgstr "डमी पाइथन प्रक्रिया की चरण संख्या {}"
#: src/modules/machineid/main.py:35 #: src/modules/machineid/main.py:35
msgid "Generate machine-id." msgid "Generate machine-id."
msgstr "machine-id generate करें।" msgstr "मशीन-आईडी उत्पन्न करें।"
#: src/modules/packages/main.py:61 #: src/modules/packages/main.py:61
#, python-format #, python-format
msgid "Processing packages (%(count)d / %(total)d)" msgid "Processing packages (%(count)d / %(total)d)"
msgstr "पैकेज (%(count)d / %(total)d) process किए जा रहे हैं" msgstr "पैकेज (%(count)d / %(total)d) संसाधित किए जा रहे हैं"
#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 #: src/modules/packages/main.py:63 src/modules/packages/main.py:73
msgid "Install packages." msgid "Install packages."

Binary file not shown.

View File

@ -10,6 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-28 04:57-0400\n" "POT-Creation-Date: 2018-05-28 04:57-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Ji-Hyeon Gim <potatogim@potatogim.net>, 2018\n"
"Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n" "Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -19,37 +20,37 @@ msgstr ""
#: src/modules/umount/main.py:40 #: src/modules/umount/main.py:40
msgid "Unmount file systems." msgid "Unmount file systems."
msgstr "" msgstr "파일 시스템 마운트를 해제합니다."
#: src/modules/dummypython/main.py:44 #: src/modules/dummypython/main.py:44
msgid "Dummy python job." msgid "Dummy python job."
msgstr "" msgstr "더미 파이썬 작업."
#: src/modules/dummypython/main.py:97 #: src/modules/dummypython/main.py:97
msgid "Dummy python step {}" msgid "Dummy python step {}"
msgstr "" msgstr "더미 파이썬 단계 {}"
#: src/modules/machineid/main.py:35 #: src/modules/machineid/main.py:35
msgid "Generate machine-id." msgid "Generate machine-id."
msgstr "" msgstr "장치 식별자를 생성합니다."
#: src/modules/packages/main.py:61 #: src/modules/packages/main.py:61
#, python-format #, python-format
msgid "Processing packages (%(count)d / %(total)d)" msgid "Processing packages (%(count)d / %(total)d)"
msgstr "" msgstr "패키지들을 처리하는 중입니다 (%(count)d / %(total)d)"
#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 #: src/modules/packages/main.py:63 src/modules/packages/main.py:73
msgid "Install packages." msgid "Install packages."
msgstr "" msgstr "패키지들을 설치합니다."
#: src/modules/packages/main.py:66 #: src/modules/packages/main.py:66
#, python-format #, python-format
msgid "Installing one package." msgid "Installing one package."
msgid_plural "Installing %(num)d packages." msgid_plural "Installing %(num)d packages."
msgstr[0] "" msgstr[0] "%(num)d개의 패키지들을 설치하는 중입니다."
#: src/modules/packages/main.py:69 #: src/modules/packages/main.py:69
#, python-format #, python-format
msgid "Removing one package." msgid "Removing one package."
msgid_plural "Removing %(num)d packages." msgid_plural "Removing %(num)d packages."
msgstr[0] "" msgstr[0] "%(num)d개의 패키지들을 제거하는 중입니다."

View File

@ -29,13 +29,19 @@
#include <yaml-cpp/yaml.h> #include <yaml-cpp/yaml.h>
static bool
hasValue( const YAML::Node& v )
{
return v.IsDefined() && !v.IsNull();
}
/** Helper function to grab a QString out of the config, and to warn if not present. */ /** Helper function to grab a QString out of the config, and to warn if not present. */
static QString static QString
requireString( const YAML::Node& config, const char* key ) requireString( const YAML::Node& config, const char* key )
{ {
if ( config[ key ] ) auto v = config[ key ];
return QString::fromStdString( config[ key ].as< std::string >() ); if ( hasValue(v) )
return QString::fromStdString( v.as< std::string >() );
else else
{ {
cWarning() << "Required settings.conf key" << key << "is missing."; cWarning() << "Required settings.conf key" << key << "is missing.";
@ -47,8 +53,9 @@ requireString( const YAML::Node& config, const char* key )
static bool static bool
requireBool( const YAML::Node& config, const char* key, bool d ) requireBool( const YAML::Node& config, const char* key, bool d )
{ {
if ( config[ key ] ) auto v = config[ key ];
return config[ key ].as< bool >(); if ( hasValue(v) )
return v.as< bool >();
else else
{ {
cWarning() << "Required settings.conf key" << key << "is missing."; cWarning() << "Required settings.conf key" << key << "is missing.";
@ -175,7 +182,7 @@ Settings::Settings( const QString& settingsFilePath,
m_brandingComponentName = requireString( config, "branding" ); m_brandingComponentName = requireString( config, "branding" );
m_promptInstall = requireBool( config, "prompt-install", false ); m_promptInstall = requireBool( config, "prompt-install", false );
m_doChroot = requireBool( config, "dont-chroot", true ); m_doChroot = !requireBool( config, "dont-chroot", false );
} }
catch ( YAML::Exception& e ) catch ( YAML::Exception& e )
{ {

View File

@ -26,7 +26,8 @@
#include <QDir> #include <QDir>
#include <QPluginLoader> #include <QPluginLoader>
namespace Calamares { namespace Calamares
{
Module::Type Module::Type
@ -55,7 +56,7 @@ CppJobModule::loadSelf()
return; return;
} }
CppJob *cppJob = pf->create< Calamares::CppJob >(); CppJob* cppJob = pf->create< Calamares::CppJob >();
if ( !cppJob ) if ( !cppJob )
{ {
cDebug() << Q_FUNC_INFO << m_loader->errorString(); cDebug() << Q_FUNC_INFO << m_loader->errorString();
@ -68,7 +69,7 @@ CppJobModule::loadSelf()
cppJob->setModuleInstanceKey( instanceKey() ); cppJob->setModuleInstanceKey( instanceKey() );
cppJob->setConfigurationMap( m_configurationMap ); cppJob->setConfigurationMap( m_configurationMap );
m_job = Calamares::job_ptr( static_cast< Calamares::Job * >( cppJob ) ); m_job = Calamares::job_ptr( static_cast< Calamares::Job* >( cppJob ) );
m_loaded = true; m_loaded = true;
cDebug() << "CppJobModule" << instanceKey() << "loading complete."; cDebug() << "CppJobModule" << instanceKey() << "loading complete.";
} }

View File

@ -71,8 +71,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor,
QString typeString = moduleDescriptor.value( "type" ).toString(); QString typeString = moduleDescriptor.value( "type" ).toString();
QString intfString = moduleDescriptor.value( "interface" ).toString(); QString intfString = moduleDescriptor.value( "interface" ).toString();
if ( typeString.isEmpty() || if ( typeString.isEmpty() || intfString.isEmpty() )
intfString.isEmpty() )
{ {
cError() << "Bad module descriptor format" << instanceId; cError() << "Bad module descriptor format" << instanceId;
return nullptr; return nullptr;
@ -80,9 +79,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor,
if ( ( typeString == "view" ) || ( typeString == "viewmodule" ) ) if ( ( typeString == "view" ) || ( typeString == "viewmodule" ) )
{ {
if ( intfString == "qtplugin" ) if ( intfString == "qtplugin" )
{
m.reset( new ViewModule() ); m.reset( new ViewModule() );
}
else if ( intfString == "pythonqt" ) else if ( intfString == "pythonqt" )
{ {
#ifdef WITH_PYTHONQT #ifdef WITH_PYTHONQT
@ -97,13 +94,9 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor,
else if ( typeString == "job" ) else if ( typeString == "job" )
{ {
if ( intfString == "qtplugin" ) if ( intfString == "qtplugin" )
{
m.reset( new CppJobModule() ); m.reset( new CppJobModule() );
}
else if ( intfString == "process" ) else if ( intfString == "process" )
{
m.reset( new ProcessJobModule() ); m.reset( new ProcessJobModule() );
}
else if ( intfString == "python" ) else if ( intfString == "python" )
{ {
#ifdef WITH_PYTHON #ifdef WITH_PYTHON
@ -121,8 +114,8 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor,
if ( !m ) if ( !m )
{ {
cError() << "Bad module type (" << typeString cError() << "Bad module type (" << typeString
<< ") or interface string (" << intfString << ") or interface string (" << intfString
<< ") for module " << instanceId; << ") for module " << instanceId;
return nullptr; return nullptr;
} }
@ -168,8 +161,7 @@ Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Ex
{ {
configFilesByPriority.append( configFilesByPriority.append(
QDir( QDir::currentPath() ).absoluteFilePath( QDir( QDir::currentPath() ).absoluteFilePath(
QString( "src/modules/%1/%2" ).arg( m_name ) QString( "src/modules/%1/%2" ).arg( m_name ).arg( configFileName ) ) );
.arg( configFileName ) ) );
} }
configFilesByPriority.append( configFilesByPriority.append(
@ -201,8 +193,8 @@ Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Ex
m_configurationMap = CalamaresUtils::yamlMapToVariant( doc ).toMap(); m_configurationMap = CalamaresUtils::yamlMapToVariant( doc ).toMap();
m_emergency = m_maybe_emergency m_emergency = m_maybe_emergency
&& m_configurationMap.contains( EMERGENCY ) && m_configurationMap.contains( EMERGENCY )
&& m_configurationMap[ EMERGENCY ].toBool(); && m_configurationMap[ EMERGENCY ].toBool();
return; return;
} }
else else
@ -228,8 +220,7 @@ Module::instanceId() const
QString QString
Module::instanceKey() const Module::instanceKey() const
{ {
return QString( "%1@%2" ).arg( m_name ) return QString( "%1@%2" ).arg( m_name ).arg( m_instanceId );
.arg( m_instanceId );
} }
@ -297,9 +288,7 @@ Module::initFrom( const QVariantMap& moduleDescriptor )
m_name = moduleDescriptor.value( "name" ).toString(); m_name = moduleDescriptor.value( "name" ).toString();
if ( moduleDescriptor.contains( EMERGENCY ) ) if ( moduleDescriptor.contains( EMERGENCY ) )
{
m_maybe_emergency = moduleDescriptor[ EMERGENCY ].toBool(); m_maybe_emergency = moduleDescriptor[ EMERGENCY ].toBool();
}
} }
} //ns } //ns

View File

@ -147,7 +147,10 @@ public:
* @brief isLoaded reports on the loaded status of a module. * @brief isLoaded reports on the loaded status of a module.
* @return true if the module's loading phase has finished, otherwise false. * @return true if the module's loading phase has finished, otherwise false.
*/ */
bool isLoaded() const { return m_loaded; } bool isLoaded() const
{
return m_loaded;
}
/** /**
* @brief loadSelf initialized the module. * @brief loadSelf initialized the module.
@ -164,7 +167,10 @@ public:
* are not run (in the common case where there is only * are not run (in the common case where there is only
* one exec block, this doesn't really matter). * one exec block, this doesn't really matter).
*/ */
bool isEmergency() const { return m_emergency; } bool isEmergency() const
{
return m_emergency;
}
/** /**
* @brief jobs returns any jobs exposed by this module. * @brief jobs returns any jobs exposed by this module.

View File

@ -60,10 +60,8 @@ ModuleManager::ModuleManager( const QStringList& paths, QObject* parent )
ModuleManager::~ModuleManager() ModuleManager::~ModuleManager()
{ {
// The map is populated with Module::fromDescriptor(), which allocates on the heap. // The map is populated with Module::fromDescriptor(), which allocates on the heap.
for( auto moduleptr : m_loadedModulesByInstanceKey ) for ( auto moduleptr : m_loadedModulesByInstanceKey )
{
delete moduleptr; delete moduleptr;
}
} }
@ -119,14 +117,12 @@ ModuleManager::doInit()
else else
{ {
cWarning() << "Cannot cd into module directory " cWarning() << "Cannot cd into module directory "
<< path << "/" << subdir; << path << "/" << subdir;
} }
} }
} }
else else
{
cDebug() << "ModuleManager bad search path" << path; cDebug() << "ModuleManager bad search path" << path;
}
} }
// At this point m_availableModules is filled with whatever was found in the // At this point m_availableModules is filled with whatever was found in the
// search paths. // search paths.
@ -182,10 +178,10 @@ ModuleManager::loadModules()
{ {
QStringList failedModules; QStringList failedModules;
Settings::InstanceDescriptionList customInstances = Settings::InstanceDescriptionList customInstances =
Settings::instance()->customModuleInstances(); Settings::instance()->customModuleInstances();
const auto modulesSequence = Settings::instance()->modulesSequence(); const auto modulesSequence = Settings::instance()->modulesSequence();
for ( const auto &modulePhase : modulesSequence ) for ( const auto& modulePhase : modulesSequence )
{ {
ModuleAction currentAction = modulePhase.first; ModuleAction currentAction = modulePhase.first;
@ -197,7 +193,7 @@ ModuleManager::loadModules()
QString instanceId; QString instanceId;
QString configFileName; QString configFileName;
if ( moduleEntrySplit.length() < 1 || if ( moduleEntrySplit.length() < 1 ||
moduleEntrySplit.length() > 2 ) moduleEntrySplit.length() > 2 )
{ {
cError() << "Wrong module entry format for module" << moduleEntry; cError() << "Wrong module entry format for module" << moduleEntry;
failedModules.append( moduleEntry ); failedModules.append( moduleEntry );
@ -208,20 +204,20 @@ ModuleManager::loadModules()
configFileName = QString( "%1.conf" ).arg( moduleName ); configFileName = QString( "%1.conf" ).arg( moduleName );
if ( !m_availableDescriptorsByModuleName.contains( moduleName ) || if ( !m_availableDescriptorsByModuleName.contains( moduleName ) ||
m_availableDescriptorsByModuleName.value( moduleName ).isEmpty() ) m_availableDescriptorsByModuleName.value( moduleName ).isEmpty() )
{ {
cError() << "Module" << moduleName << "not found in module search paths." cError() << "Module" << moduleName << "not found in module search paths."
<< Logger::DebugList( m_paths ); << Logger::DebugList( m_paths );
failedModules.append( moduleName ); failedModules.append( moduleName );
continue; continue;
} }
if ( moduleName != instanceId ) //means this is a custom instance if ( moduleName != instanceId ) //means this is a custom instance
{ {
if ( int found = findCustomInstance( customInstances, moduleName, instanceId ) > -1 ) int found = findCustomInstance( customInstances, moduleName, instanceId );
{
if ( found > -1 )
configFileName = customInstances[ found ].value( "config" ); configFileName = customInstances[ found ].value( "config" );
}
else //ought to be a custom instance, but cannot find instance entry else //ought to be a custom instance, but cannot find instance entry
{ {
cError() << "Custom instance" << moduleEntry << "not found in custom instances section."; cError() << "Custom instance" << moduleEntry << "not found in custom instances section.";
@ -252,9 +248,7 @@ ModuleManager::loadModules()
} }
if ( thisModule && thisModule->isLoaded() ) if ( thisModule && thisModule->isLoaded() )
{
cDebug() << "Module" << instanceKey << "already loaded."; cDebug() << "Module" << instanceKey << "already loaded.";
}
else else
{ {
thisModule = thisModule =
@ -316,10 +310,10 @@ ModuleManager::checkDependencies()
forever forever
{ {
for ( auto it = m_availableDescriptorsByModuleName.begin(); for ( auto it = m_availableDescriptorsByModuleName.begin();
it != m_availableDescriptorsByModuleName.end(); ++it ) it != m_availableDescriptorsByModuleName.end(); ++it )
{ {
foreach ( const QString& depName, foreach ( const QString& depName,
(*it).value( "requiredModules" ).toStringList() ) ( *it ).value( "requiredModules" ).toStringList() )
{ {
if ( !m_availableDescriptorsByModuleName.contains( depName ) ) if ( !m_availableDescriptorsByModuleName.contains( depName ) )
{ {

View File

@ -22,7 +22,8 @@
#include <QDir> #include <QDir>
namespace Calamares { namespace Calamares
{
Module::Type Module::Type
@ -68,23 +69,17 @@ ProcessJobModule::initFrom( const QVariantMap& moduleDescriptor )
m_workingPath = directory.absolutePath(); m_workingPath = directory.absolutePath();
if ( !moduleDescriptor.value( "command" ).toString().isEmpty() ) if ( !moduleDescriptor.value( "command" ).toString().isEmpty() )
{
m_command = moduleDescriptor.value( "command" ).toString(); m_command = moduleDescriptor.value( "command" ).toString();
}
m_secondsTimeout = 30; m_secondsTimeout = 30;
if ( moduleDescriptor.contains( "timeout" ) && if ( moduleDescriptor.contains( "timeout" ) &&
!moduleDescriptor.value( "timeout" ).isNull() ) !moduleDescriptor.value( "timeout" ).isNull() )
{
m_secondsTimeout = moduleDescriptor.value( "timeout" ).toInt(); m_secondsTimeout = moduleDescriptor.value( "timeout" ).toInt();
}
m_runInChroot = false; m_runInChroot = false;
if ( moduleDescriptor.contains( "chroot" )&& if ( moduleDescriptor.contains( "chroot" )&&
!moduleDescriptor.value( "chroot" ).isNull() ) !moduleDescriptor.value( "chroot" ).isNull() )
{
m_runInChroot = moduleDescriptor.value( "chroot" ).toBool(); m_runInChroot = moduleDescriptor.value( "chroot" ).toBool();
}
} }

View File

@ -23,7 +23,8 @@
#include <QDir> #include <QDir>
namespace Calamares { namespace Calamares
{
Module::Type Module::Type
@ -46,9 +47,7 @@ PythonJobModule::loadSelf()
if ( m_loaded ) if ( m_loaded )
return; return;
m_job = Calamares::job_ptr( new PythonJob( m_scriptFileName, m_job = Calamares::job_ptr( new PythonJob( m_scriptFileName, m_workingPath, m_configurationMap ) );
m_workingPath,
m_configurationMap ) );
m_loaded = true; m_loaded = true;
} }
@ -68,9 +67,7 @@ PythonJobModule::initFrom( const QVariantMap& moduleDescriptor )
m_workingPath = directory.absolutePath(); m_workingPath = directory.absolutePath();
if ( !moduleDescriptor.value( "script" ).toString().isEmpty() ) if ( !moduleDescriptor.value( "script" ).toString().isEmpty() )
{
m_scriptFileName = moduleDescriptor.value( "script" ).toString(); m_scriptFileName = moduleDescriptor.value( "script" ).toString();
}
} }

View File

@ -23,7 +23,8 @@
#include "UiDllMacro.h" #include "UiDllMacro.h"
namespace Calamares { namespace Calamares
{
class UIDLLEXPORT PythonJobModule : public Module class UIDLLEXPORT PythonJobModule : public Module
{ {

View File

@ -40,7 +40,8 @@
static QPointer< GlobalStorage > s_gs = nullptr; static QPointer< GlobalStorage > s_gs = nullptr;
static QPointer< Utils > s_utils = nullptr; static QPointer< Utils > s_utils = nullptr;
namespace Calamares { namespace Calamares
{
Module::Type Module::Type
PythonQtViewModule::type() const PythonQtViewModule::type() const
@ -98,20 +99,21 @@ PythonQtViewModule::loadSelf()
cala.addObject( "utils", s_utils ); cala.addObject( "utils", s_utils );
// Append configuration object, in module PythonQt.calamares // Append configuration object, in module PythonQt.calamares
cala.addVariable("configuration", m_configurationMap); cala.addVariable( "configuration", m_configurationMap );
// Basic stdout/stderr handling // Basic stdout/stderr handling
QObject::connect( PythonQt::self(), &PythonQt::pythonStdOut, QObject::connect( PythonQt::self(), &PythonQt::pythonStdOut,
[]( const QString& message ) []( const QString& message )
{ {
cDebug() << "PythonQt OUT>" << message; cDebug() << "PythonQt OUT>" << message;
} ); }
);
QObject::connect( PythonQt::self(), &PythonQt::pythonStdErr, QObject::connect( PythonQt::self(), &PythonQt::pythonStdErr,
[]( const QString& message ) []( const QString& message )
{ {
cDebug() << "PythonQt ERR>" << message; cDebug() << "PythonQt ERR>" << message;
} ); }
);
} }
QDir workingDir( m_workingPath ); QDir workingDir( m_workingPath );
@ -137,8 +139,8 @@ PythonQtViewModule::loadSelf()
// Construct empty Python module with the given name // Construct empty Python module with the given name
PythonQtObjectPtr cxt = PythonQtObjectPtr cxt =
PythonQt::self()-> PythonQt::self()->
createModuleFromScript( name() ); createModuleFromScript( name() );
if ( cxt.isNull() ) if ( cxt.isNull() )
{ {
cDebug() << "Cannot load PythonQt context from file" cDebug() << "Cannot load PythonQt context from file"
@ -149,11 +151,11 @@ PythonQtViewModule::loadSelf()
} }
static const QLatin1Literal calamares_module_annotation( static const QLatin1Literal calamares_module_annotation(
"_calamares_module_typename = ''\n" "_calamares_module_typename = ''\n"
"def calamares_module(viewmodule_type):\n" "def calamares_module(viewmodule_type):\n"
" global _calamares_module_typename\n" " global _calamares_module_typename\n"
" _calamares_module_typename = viewmodule_type.__name__\n" " _calamares_module_typename = viewmodule_type.__name__\n"
" return viewmodule_type\n"); " return viewmodule_type\n" );
// Load in the decorator // Load in the decorator
PythonQt::self()->evalScript( cxt, calamares_module_annotation ); PythonQt::self()->evalScript( cxt, calamares_module_annotation );
@ -191,9 +193,7 @@ PythonQtViewModule::initFrom( const QVariantMap& moduleDescriptor )
m_workingPath = directory.absolutePath(); m_workingPath = directory.absolutePath();
if ( !moduleDescriptor.value( "script" ).toString().isEmpty() ) if ( !moduleDescriptor.value( "script" ).toString().isEmpty() )
{
m_scriptFileName = moduleDescriptor.value( "script" ).toString(); m_scriptFileName = moduleDescriptor.value( "script" ).toString();
}
} }
PythonQtViewModule::PythonQtViewModule() PythonQtViewModule::PythonQtViewModule()

View File

@ -22,7 +22,8 @@
#include "UiDllMacro.h" #include "UiDllMacro.h"
#include "Module.h" #include "Module.h"
namespace Calamares { namespace Calamares
{
class ViewStep; class ViewStep;

View File

@ -27,7 +27,8 @@
#include <QDir> #include <QDir>
#include <QPluginLoader> #include <QPluginLoader>
namespace Calamares { namespace Calamares
{
Module::Type Module::Type

View File

@ -21,12 +21,14 @@ fallbackKernelLine: ", with _manjaro_kernel_ (fallback initramfs)"
# GRUB 2 binary names and boot directory # GRUB 2 binary names and boot directory
# Some distributions (e.g. Fedora) use grub2-* (resp. /boot/grub2/) names. # Some distributions (e.g. Fedora) use grub2-* (resp. /boot/grub2/) names.
# These names are also used when using sb-shim, since that needs some # These names are also used when using sb-shim, since that needs some
# GRUB functionality (notably grub-probe) to work. # GRUB functionality (notably grub-probe) to work. As needed, you may use
# complete paths like `/usr/bin/efibootmgr` for the executables.
# #
grubInstall: "grub-install" grubInstall: "grub-install"
grubMkconfig: "grub-mkconfig" grubMkconfig: "grub-mkconfig"
grubCfg: "/boot/grub/grub.cfg" grubCfg: "/boot/grub/grub.cfg"
grubProbe: "/usr/sbin/grub2-probe" grubProbe: "grub-probe"
efiBootMgr: "efibootmgr"
# Optionally set the bootloader ID to use for EFI. This is passed to # Optionally set the bootloader ID to use for EFI. This is passed to
# grub-install --bootloader-id. # grub-install --bootloader-id.

View File

@ -8,7 +8,7 @@
# Copyright 2014, Daniel Hillenbrand <codeworkx@bbqlinux.org> # Copyright 2014, Daniel Hillenbrand <codeworkx@bbqlinux.org>
# Copyright 2014, Benjamin Vaudour <benjamin.vaudour@yahoo.fr> # Copyright 2014, Benjamin Vaudour <benjamin.vaudour@yahoo.fr>
# Copyright 2014, Kevin Kofler <kevin.kofler@chello.at> # Copyright 2014, Kevin Kofler <kevin.kofler@chello.at>
# Copyright 2015-2017, Philip Mueller <philm@manjaro.org> # Copyright 2015-2018, Philip Mueller <philm@manjaro.org>
# Copyright 2016-2017, Teo Mrnjavac <teo@kde.org> # Copyright 2016-2017, Teo Mrnjavac <teo@kde.org>
# Copyright 2017, Alf Gaida <agaida@siduction.org> # Copyright 2017, Alf Gaida <agaida@siduction.org>
# Copyright 2017-2018, Adriaan de Groot <groot@kde.org> # Copyright 2017-2018, Adriaan de Groot <groot@kde.org>
@ -351,7 +351,7 @@ def install_secureboot(efi_directory):
raise ValueError("No partition number found for %s" % install_efi_directory) raise ValueError("No partition number found for %s" % install_efi_directory)
subprocess.call([ subprocess.call([
"/usr/sbin/efibootmgr", libcalamares.job.configuration["efiBootMgr"],
"-c", "-c",
"-w", "-w",
"-L", efi_bootloader_id, "-L", efi_bootloader_id,

View File

@ -8,35 +8,35 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-02-07 18:58+0100\n" "POT-Creation-Date: 2018-06-18 07:46-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: \n"
#: src/modules/dummypythonqt/main.py:84 #: src/modules/dummypythonqt/main.py:84
msgid "Click me!" msgid "Click me!"
msgstr "Click me!" msgstr ""
#: src/modules/dummypythonqt/main.py:94 #: src/modules/dummypythonqt/main.py:94
msgid "A new QLabel." msgid "A new QLabel."
msgstr "A new QLabel." msgstr ""
#: src/modules/dummypythonqt/main.py:97 #: src/modules/dummypythonqt/main.py:97
msgid "Dummy PythonQt ViewStep" msgid "Dummy PythonQt ViewStep"
msgstr "Dummy PythonQt ViewStep" msgstr ""
#: src/modules/dummypythonqt/main.py:183 #: src/modules/dummypythonqt/main.py:183
msgid "The Dummy PythonQt Job" msgid "The Dummy PythonQt Job"
msgstr "The Dummy PythonQt Job" msgstr ""
#: src/modules/dummypythonqt/main.py:186 #: src/modules/dummypythonqt/main.py:186
msgid "This is the Dummy PythonQt Job. The dummy job says: {}" msgid "This is the Dummy PythonQt Job. The dummy job says: {}"
msgstr "This is the Dummy PythonQt Job. The dummy job says: {}" msgstr ""
#: src/modules/dummypythonqt/main.py:190 #: src/modules/dummypythonqt/main.py:190
msgid "A status message for Dummy PythonQt Job." msgid "A status message for Dummy PythonQt Job."
msgstr "A status message for Dummy PythonQt Job." msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-13 10:28-0400\n" "POT-Creation-Date: 2018-05-28 04:57-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Panwar108 <caspian7pena@gmail.com>, 2018\n" "Last-Translator: Panwar108 <caspian7pena@gmail.com>, 2018\n"
"Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n" "Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n"
@ -28,16 +28,16 @@ msgstr "नया QLabel।"
#: src/modules/dummypythonqt/main.py:97 #: src/modules/dummypythonqt/main.py:97
msgid "Dummy PythonQt ViewStep" msgid "Dummy PythonQt ViewStep"
msgstr "Dummy PythonQt ViewStep" msgstr "डमी पाइथन प्रक्रिया की चरण संख्या देखें"
#: src/modules/dummypythonqt/main.py:183 #: src/modules/dummypythonqt/main.py:183
msgid "The Dummy PythonQt Job" msgid "The Dummy PythonQt Job"
msgstr "The Dummy PythonQt Job" msgstr "डमी पाइथन प्रक्रिया"
#: src/modules/dummypythonqt/main.py:186 #: src/modules/dummypythonqt/main.py:186
msgid "This is the Dummy PythonQt Job. The dummy job says: {}" msgid "This is the Dummy PythonQt Job. The dummy job says: {}"
msgstr "यह Dummy PythonQt Job है।The dummy job says: {}" msgstr "यह डमी पाइथन प्रक्रिया है। डमी प्रक्रिया संबंधी संदेश : {}"
#: src/modules/dummypythonqt/main.py:190 #: src/modules/dummypythonqt/main.py:190
msgid "A status message for Dummy PythonQt Job." msgid "A status message for Dummy PythonQt Job."
msgstr "Dummy PythonQt Job के लिए एक status संदेश।" msgstr "डमी पाइथन प्रक्रिया की अवस्था संबंधी संदेश।"

View File

@ -10,6 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-28 04:57-0400\n" "POT-Creation-Date: 2018-05-28 04:57-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Ji-Hyeon Gim <potatogim@potatogim.net>, 2018\n"
"Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n" "Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -19,24 +20,24 @@ msgstr ""
#: src/modules/dummypythonqt/main.py:84 #: src/modules/dummypythonqt/main.py:84
msgid "Click me!" msgid "Click me!"
msgstr "" msgstr "여기를 클릭하세요!"
#: src/modules/dummypythonqt/main.py:94 #: src/modules/dummypythonqt/main.py:94
msgid "A new QLabel." msgid "A new QLabel."
msgstr "" msgstr "새로운 QLabel."
#: src/modules/dummypythonqt/main.py:97 #: src/modules/dummypythonqt/main.py:97
msgid "Dummy PythonQt ViewStep" msgid "Dummy PythonQt ViewStep"
msgstr "" msgstr "더미 PythonQt ViewStep"
#: src/modules/dummypythonqt/main.py:183 #: src/modules/dummypythonqt/main.py:183
msgid "The Dummy PythonQt Job" msgid "The Dummy PythonQt Job"
msgstr "" msgstr "더미 PythonQt Job"
#: src/modules/dummypythonqt/main.py:186 #: src/modules/dummypythonqt/main.py:186
msgid "This is the Dummy PythonQt Job. The dummy job says: {}" msgid "This is the Dummy PythonQt Job. The dummy job says: {}"
msgstr "" msgstr "더미 PythonQt Job입니다. 이 더미 Job의 출력은 다음과 같습니다: {}"
#: src/modules/dummypythonqt/main.py:190 #: src/modules/dummypythonqt/main.py:190
msgid "A status message for Dummy PythonQt Job." msgid "A status message for Dummy PythonQt Job."
msgstr "" msgstr "더미 PythonQt Job의 상태 메시지"

View File

@ -7,6 +7,7 @@
# Copyright 2015, Philip Müller <philm@manjaro.org> # Copyright 2015, Philip Müller <philm@manjaro.org>
# Copyright 2016, Teo Mrnjavac <teo@kde.org> # Copyright 2016, Teo Mrnjavac <teo@kde.org>
# Copyright 2018, AlmAck <gluca86@gmail.com> # Copyright 2018, AlmAck <gluca86@gmail.com>
# Copyright 2018, Adriaan de Groot <groot@kde.org>
# #
# Calamares is free software: you can redistribute it and/or modify # Calamares is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -22,14 +23,91 @@
# along with Calamares. If not, see <http://www.gnu.org/licenses/>. # along with Calamares. If not, see <http://www.gnu.org/licenses/>.
import os import os
import re
import shutil import shutil
import libcalamares RE_IS_COMMENT = re.compile("^ *#")
def is_comment(line):
"""
Does the @p line look like a comment? Whitespace, followed by a #
is a comment-only line.
"""
return bool(RE_IS_COMMENT.match(line))
RE_TRAILING_COMMENT = re.compile("#.*$")
RE_REST_OF_LINE = re.compile("\\s.*$")
def extract_locale(line):
"""
Extracts a locale from the @p line, and returns a pair of
(extracted-locale, uncommented line). The locale is the
first word of the line after uncommenting (in the human-
readable text explanation at the top of most /etc/locale.gen
files, the locales may be bogus -- either "" or e.g. "Configuration")
"""
# Remove leading spaces and comment signs
line = RE_IS_COMMENT.sub("", line)
uncommented = line.strip()
fields = RE_TRAILING_COMMENT.sub("", uncommented).strip().split()
if len(fields) != 2:
# Not exactly two fields, can't be a proper locale line
return "", uncommented
else:
# Drop all but first field
locale = RE_REST_OF_LINE.sub("", uncommented)
return locale, uncommented
def rewrite_locale_gen(srcfilename, destfilename, locale_conf):
"""
Copies a locale.gen file from @p srcfilename to @p destfilename
(this may be the same name), enabling those locales that can
be found in the map @p locale_conf. Also always enables en_US.UTF-8.
"""
en_us_locale = 'en_US.UTF-8'
# Get entire source-file contents
text = []
with open(srcfilename, "r") as gen:
text = gen.readlines()
# we want unique values, so locale_values should have 1 or 2 items
locale_values = set(locale_conf.values())
locale_values.add(en_us_locale) # Always enable en_US as well
enabled_locales = {}
seen_locales = set()
# Write source out again, enabling some
with open(destfilename, "w") as gen:
for line in text:
c = is_comment(line)
locale, uncommented = extract_locale(line)
# Non-comment lines are preserved, and comment lines
# may be enabled if they match a desired locale
if not c:
seen_locales.add(locale)
else:
for locale_value in locale_values:
if locale.startswith(locale_value):
enabled_locales[locale] = uncommented
gen.write(line)
gen.write("\n###\n#\n# Locales enabled by Calamares\n")
for locale, line in enabled_locales.items():
if locale not in seen_locales:
gen.write(line + "\n")
seen_locales.add(locale)
for locale in locale_values:
if locale not in seen_locales:
gen.write("# Missing: %s\n" % locale)
def run(): def run():
""" Create locale """ """ Create locale """
en_us_locale = 'en_US.UTF-8' import libcalamares
locale_conf = libcalamares.globalstorage.value("localeConf") locale_conf = libcalamares.globalstorage.value("localeConf")
if not locale_conf: if not locale_conf:
@ -47,50 +125,36 @@ def run():
} }
install_path = libcalamares.globalstorage.value("rootMountPoint") install_path = libcalamares.globalstorage.value("rootMountPoint")
target_locale_gen = "{!s}/etc/locale.gen".format(install_path)
target_locale_gen_bak = target_locale_gen + ".bak"
target_locale_conf_path = "{!s}/etc/locale.conf".format(install_path)
target_etc_default_path = "{!s}/etc/default".format(install_path)
# restore backup if available # restore backup if available
if os.path.exists('/etc/locale.gen.bak'): if os.path.exists(target_locale_gen_bak):
shutil.copy2("{!s}/etc/locale.gen.bak".format(install_path), shutil.copy2(target_locale_gen_bak, target_locale_gen)
"{!s}/etc/locale.gen".format(install_path)) libcalamares.utils.debug("Restored backup {!s} -> {!s}"
.format(target_locale_gen_bak).format(target_locale_gen))
# run locale-gen if detected # run locale-gen if detected; this *will* cause an exception
# if the live system has locale.gen, but the target does not:
# in that case, fix your installation filesystem.
if os.path.exists('/etc/locale.gen'): if os.path.exists('/etc/locale.gen'):
text = [] rewrite_locale_gen(target_locale_gen, target_locale_gen, locale_conf)
with open("{!s}/etc/locale.gen".format(install_path), "r") as gen:
text = gen.readlines()
# we want unique values, so locale_values should have 1 or 2 items
locale_values = set(locale_conf.values())
with open("{!s}/etc/locale.gen".format(install_path), "w") as gen:
for line in text:
# always enable en_US
if line.startswith("#" + en_us_locale):
# uncomment line
line = line[1:].lstrip()
for locale_value in locale_values:
if line.startswith("#" + locale_value):
# uncomment line
line = line[1:].lstrip()
gen.write(line)
libcalamares.utils.target_env_call(['locale-gen']) libcalamares.utils.target_env_call(['locale-gen'])
print('locale.gen done') libcalamares.utils.debug('{!s} done'.format(target_locale_gen))
# write /etc/locale.conf # write /etc/locale.conf
locale_conf_path = os.path.join(install_path, "etc/locale.conf") with open(target_locale_conf_path, "w") as lcf:
with open(locale_conf_path, "w") as lcf:
for k, v in locale_conf.items(): for k, v in locale_conf.items():
lcf.write("{!s}={!s}\n".format(k, v)) lcf.write("{!s}={!s}\n".format(k, v))
libcalamares.utils.debug('{!s} done'.format(target_locale_conf_path))
# write /etc/default/locale if /etc/default exists and is a dir # write /etc/default/locale if /etc/default exists and is a dir
etc_default_path = os.path.join(install_path, "etc/default") if os.path.isdir(target_etc_default_path):
if os.path.isdir(etc_default_path): with open(os.path.join(target_etc_default_path, "locale"), "w") as edl:
with open(os.path.join(etc_default_path, "locale"), "w") as edl:
for k, v in locale_conf.items(): for k, v in locale_conf.items():
edl.write("{!s}={!s}\n".format(k, v)) edl.write("{!s}={!s}\n".format(k, v))
libcalamares.utils.debug('{!s} done'.format(target_etc_default_path))
return None return None

View File

@ -1,3 +1,6 @@
# Enable the configured locales (those set by the user on the
# user page) in /etc/locale.gen, if they are available in the
# target system.
--- ---
type: "job" type: "job"
name: "localecfg" name: "localecfg"

View File

@ -8,6 +8,7 @@
# Copyright 2016-2017, Kyle Robbertze <kyle@aims.ac.za> # Copyright 2016-2017, Kyle Robbertze <kyle@aims.ac.za>
# Copyright 2017, Alf Gaida <agaida@siduction.org> # Copyright 2017, Alf Gaida <agaida@siduction.org>
# Copyright 2018, Adriaan de Groot <groot@kde.org> # Copyright 2018, Adriaan de Groot <groot@kde.org>
# Copyright 2018, Philip Müller <philm@manjaro.org>
# #
# Calamares is free software: you can redistribute it and/or modify # Calamares is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -153,6 +154,8 @@ class PMPackageKit(PackageManager):
def update_db(self): def update_db(self):
check_target_env_call(["pkcon", "refresh"]) check_target_env_call(["pkcon", "refresh"])
def update_system(self):
check_target_env_call(["pkcon", "-py", "update"])
class PMZypp(PackageManager): class PMZypp(PackageManager):
backend = "zypp" backend = "zypp"
@ -170,12 +173,15 @@ class PMZypp(PackageManager):
def update_db(self): def update_db(self):
check_target_env_call(["zypper", "--non-interactive", "update"]) check_target_env_call(["zypper", "--non-interactive", "update"])
def update_system(self):
# Doesn't need to update the system explicitly
pass
class PMYum(PackageManager): class PMYum(PackageManager):
backend = "yum" backend = "yum"
def install(self, pkgs, from_local=False): def install(self, pkgs, from_local=False):
check_target_env_call(["yum", "install", "-y"] + pkgs) check_target_env_call(["yum", "-y", "install"] + pkgs)
def remove(self, pkgs): def remove(self, pkgs):
check_target_env_call(["yum", "--disablerepo=*", "-C", "-y", check_target_env_call(["yum", "--disablerepo=*", "-C", "-y",
@ -185,12 +191,14 @@ class PMYum(PackageManager):
# Doesn't need updates # Doesn't need updates
pass pass
def update_system(self):
check_target_env_call(["yum", "-y", "upgrade"])
class PMDnf(PackageManager): class PMDnf(PackageManager):
backend = "dnf" backend = "dnf"
def install(self, pkgs, from_local=False): def install(self, pkgs, from_local=False):
check_target_env_call(["dnf", "install", "-y"] + pkgs) check_target_env_call(["dnf", "-y", "install"] + pkgs)
def remove(self, pkgs): def remove(self, pkgs):
# ignore the error code for now because dnf thinks removing a # ignore the error code for now because dnf thinks removing a
@ -199,9 +207,12 @@ class PMDnf(PackageManager):
"remove"] + pkgs) "remove"] + pkgs)
def update_db(self): def update_db(self):
# Doesn't need to update explicitly # Doesn't need updates
pass pass
def update_system(self):
check_target_env_call(["dnf", "-y", "upgrade"])
class PMUrpmi(PackageManager): class PMUrpmi(PackageManager):
backend = "urpmi" backend = "urpmi"
@ -218,6 +229,10 @@ class PMUrpmi(PackageManager):
def update_db(self): def update_db(self):
check_target_env_call(["urpmi.update", "-a"]) check_target_env_call(["urpmi.update", "-a"])
def update_system(self):
# Doesn't need to update the system explicitly
pass
class PMApt(PackageManager): class PMApt(PackageManager):
backend = "apt" backend = "apt"
@ -234,6 +249,10 @@ class PMApt(PackageManager):
def update_db(self): def update_db(self):
check_target_env_call(["apt-get", "update"]) check_target_env_call(["apt-get", "update"])
def update_system(self):
# Doesn't need to update the system explicitly
pass
class PMPacman(PackageManager): class PMPacman(PackageManager):
backend = "pacman" backend = "pacman"
@ -242,7 +261,7 @@ class PMPacman(PackageManager):
if from_local: if from_local:
pacman_flags = "-U" pacman_flags = "-U"
else: else:
pacman_flags = "-Sy" pacman_flags = "-S"
check_target_env_call(["pacman", pacman_flags, check_target_env_call(["pacman", pacman_flags,
"--noconfirm"] + pkgs) "--noconfirm"] + pkgs)
@ -253,6 +272,9 @@ class PMPacman(PackageManager):
def update_db(self): def update_db(self):
check_target_env_call(["pacman", "-Sy"]) check_target_env_call(["pacman", "-Sy"])
def update_system(self):
check_target_env_call(["pacman", "-Su"])
class PMPortage(PackageManager): class PMPortage(PackageManager):
backend = "portage" backend = "portage"
@ -267,6 +289,10 @@ class PMPortage(PackageManager):
def update_db(self): def update_db(self):
check_target_env_call(["emerge", "--sync"]) check_target_env_call(["emerge", "--sync"])
def update_system(self):
# Doesn't need to update the system explicitly
pass
class PMEntropy(PackageManager): class PMEntropy(PackageManager):
backend = "entropy" backend = "entropy"
@ -280,6 +306,10 @@ class PMEntropy(PackageManager):
def update_db(self): def update_db(self):
check_target_env_call(["equo", "update"]) check_target_env_call(["equo", "update"])
def update_system(self):
# Doesn't need to update the system explicitly
pass
class PMDummy(PackageManager): class PMDummy(PackageManager):
backend = "dummy" backend = "dummy"
@ -293,6 +323,9 @@ class PMDummy(PackageManager):
def update_db(self): def update_db(self):
libcalamares.utils.debug("Updating DB") libcalamares.utils.debug("Updating DB")
def update_system(self):
libcalamares.utils.debug("Updating System")
def run(self, script): def run(self, script):
libcalamares.utils.debug("Running script '" + str(script) + "'") libcalamares.utils.debug("Running script '" + str(script) + "'")
@ -309,6 +342,10 @@ class PMPisi(PackageManager):
def update_db(self): def update_db(self):
check_target_env_call(["pisi", "update-repo"]) check_target_env_call(["pisi", "update-repo"])
def update_system(self):
# Doesn't need to update the system explicitly
pass
# Collect all the subclasses of PackageManager defined above, # Collect all the subclasses of PackageManager defined above,
# and index them based on the backend property of each class. # and index them based on the backend property of each class.
@ -452,6 +489,10 @@ def run():
if update_db and libcalamares.globalstorage.value("hasInternet"): if update_db and libcalamares.globalstorage.value("hasInternet"):
pkgman.update_db() pkgman.update_db()
update_system = libcalamares.job.configuration.get("update_system", False)
if update_system and libcalamares.globalstorage.value("hasInternet"):
pkgman.update_system()
operations = libcalamares.job.configuration.get("operations", []) operations = libcalamares.job.configuration.get("operations", [])
if libcalamares.globalstorage.contains("packageOperations"): if libcalamares.globalstorage.contains("packageOperations"):
operations += libcalamares.globalstorage.value("packageOperations") operations += libcalamares.globalstorage.value("packageOperations")

View File

@ -14,21 +14,30 @@
# #
backend: dummy backend: dummy
#
# Often package installation needs an internet connection. # Often package installation needs an internet connection.
# Since you may allow system installation without a connection # Since you may allow system installation without a connection
# and want to offer **optional** package installation, it's # and want to offer OPTIONAL package installation, it's
# possible to have no internet, yet have this packages module # possible to have no internet, yet have this packages module
# enabled in settings. # enabled in settings.
# #
# You can skip the whole module when there is no internet # You can skip the whole module when there is no internet
# by setting *skip_if_no_internet* to true. # by setting "skip_if_no_internet" to true.
# #
# You can run a package-manager specific update procedure # You can run a package-manager specific update procedure
# before installing packages (for instance, to update the # before installing packages (for instance, to update the
# list of packages and dependencies); this is done only if there # list of packages and dependencies); this is done only if there
# is an internet connection. Set *update_db* to true to do so. # is an internet connection.
#
# Set "update_db" to 'true' for refreshing the database on the
# target system. On target installations, which got installed by
# unsquashing, a full system update may be needed. Otherwise
# post-installing additional packages may result in conflicts.
# Therefore set also "update_system" to 'true'.
#
skip_if_no_internet: false skip_if_no_internet: false
update_db: true update_db: true
update_system: false
# #
# List of maps with package operations such as install or remove. # List of maps with package operations such as install or remove.
@ -86,14 +95,14 @@ update_db: true
# #
# - if the system locale is English (any variety), then the package is not # - if the system locale is English (any variety), then the package is not
# installed at all, # installed at all,
# - otherwise $LOCALE or ${LOCALE} is replaced by the **lower-cased** BCP47 # - otherwise $LOCALE or ${LOCALE} is replaced by the 'lower-cased' BCP47
# name of the **language** part of the selected system locale (not the # name of the 'language' part of the selected system locale (not the
# country/region/dialect part), e.g. selecting *nl_BE* will use *nl* # country/region/dialect part), e.g. selecting "nl_BE" will use "nl"
# here. # here.
# #
# Take care that just plain LOCALE will not be replaced, so foo-LOCALE will # Take care that just plain LOCALE will not be replaced, so foo-LOCALE will
# be left unchanged, while foo-$LOCALE will be changed. However, foo-LOCALE # be left unchanged, while foo-$LOCALE will be changed. However, foo-LOCALE
# **will** be removed from the list of packages, if English is selected. # 'will' be removed from the list of packages, if English is selected.
# #
# The following installs localizations for vi, if they are relevant; if # The following installs localizations for vi, if they are relevant; if
# there is no localization, installation continues normally. # there is no localization, installation continues normally.

View File

@ -104,7 +104,7 @@
<item> <item>
<widget class="QPushButton" name="createButton"> <widget class="QPushButton" name="createButton">
<property name="text"> <property name="text">
<string>&amp;Create</string> <string>Cre&amp;ate</string>
</property> </property>
</widget> </widget>
</item> </item>