From 092529da45c67088c3469f1c0d37e07460bb1b48 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 19 Feb 2018 10:25:00 -0500 Subject: [PATCH 001/385] [partition] WIP: EFI partition search - Add some logging (not even sure it compiles) because my openSUSE Krypton Secureboot-enabled VM says "no EFI system partitions found". --- src/modules/partition/core/PartUtils.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp index 775fcee66..1582dcda3 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -343,21 +343,27 @@ isEfiSystem() bool isEfiBootable( const Partition* candidate ) { + cDebug() << "Check EFI bootable" << candidate->partitionPath() << candidate->devicePath(); + cDebug() << " .. flags" << candidate->activeFlags(); + /* If bit 17 is set, old-style Esp flag, it's OK */ if ( candidate->activeFlags().testFlag( PartitionTable::FlagEsp ) ) return true; - /* Otherwise, if it's a GPT table, Boot (bit 0) is the same as Esp */ const PartitionNode* root = candidate; while ( root && !root->isRoot() ) + { root = root->parent(); + cDebug() << " .. moved towards root" << (void *)root; + } // Strange case: no root found, no partition table node? if ( !root ) return false; const PartitionTable* table = dynamic_cast( root ); + cDebug() << " .. partition table" << (void *)table << "type" << ( table ? table->type() : PartitionTable::TableType::unknownTableType ); return table && ( table->type() == PartitionTable::TableType::gpt ) && candidate->activeFlags().testFlag( PartitionTable::FlagBoot ); } From 7f53e970fc59460f963ff6fef65a6b6445694f6e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 20 Feb 2018 04:22:35 -0500 Subject: [PATCH 002/385] [bootloader] Add secure-boot efiBootLoader - add configuration option - check for sensible combinations of firmware, bootloader, and complain if it isn't. --- src/modules/bootloader/bootloader.conf | 5 ++++- src/modules/bootloader/main.py | 14 +++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/modules/bootloader/bootloader.conf b/src/modules/bootloader/bootloader.conf index 62c240feb..579e53929 100644 --- a/src/modules/bootloader/bootloader.conf +++ b/src/modules/bootloader/bootloader.conf @@ -1,6 +1,9 @@ +# Bootloader configuration. The bootloader is installed to allow +# the system to start (and pick one of the installed operating +# systems to run). --- # Define which bootloader you want to use for EFI installations -# Possible options are 'grub' and 'systemd-boot'. +# Possible options are 'grub', 'sb-shim' and 'systemd-boot'. efiBootLoader: "grub" # systemd-boot configuration files settings, set kernel and initramfs file names diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index db062da52..890a98b2f 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -299,6 +299,12 @@ def install_grub(efi_directory, fw_type): "-o", libcalamares.job.configuration["grubCfg"]]) +def install_secureboot(efi_directory): + """ + Installs the secureboot shim in the system by calling efibootmgr. + """ + raise NotImplementedError + def vfat_correct_case(parent, name): for candidate in os.listdir(parent): if name.lower() == candidate.lower(): @@ -320,8 +326,14 @@ def prepare_bootloader(fw_type): if efi_boot_loader == "systemd-boot" and fw_type == "efi": install_systemd_boot(efi_directory) - else: + elif efi_boot_loader == "sb-shim" and fw_type == "efi": + install_secureboot(efi_directory) + elif efi_boot_loader == "grub" or fw_type != "efi": install_grub(efi_directory, fw_type) + else: + libcalamares.utils.debug( "WARNING: the combination of " + "boot-loader '{!s}' and firmware '{!s}' " + "is not supported.".format(efi_boot_loader, fw_type) ) def run(): From 06536b6a663a6614d66849aed0b5c7a35620ab08 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 20 Feb 2018 10:47:14 -0500 Subject: [PATCH 003/385] [bootloader] Refactor method for safe efi label --- src/modules/bootloader/main.py | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index 890a98b2f..2c8e5faac 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -167,6 +167,18 @@ def create_loader(loader_path): loader_file.write(line) +def efi_label(): + if "efiBootloaderId" in libcalamares.job.configuration: + efi_bootloader_id = libcalamares.job.configuration[ + "efiBootloaderId"] + else: + branding = libcalamares.globalstorage.value("branding") + efi_bootloader_id = branding["bootloaderEntryName"] + + file_name_sanitizer = str.maketrans(" /", "_-") + return efi_bootloader_id.translate(file_name_sanitizer) + + def install_systemd_boot(efi_directory): """ Installs systemd-boot as bootloader for EFI setups. @@ -218,14 +230,8 @@ def install_grub(efi_directory, fw_type): if not os.path.isdir(install_efi_directory): os.makedirs(install_efi_directory) - if "efiBootloaderId" in libcalamares.job.configuration: - efi_bootloader_id = libcalamares.job.configuration[ - "efiBootloaderId"] - else: - branding = libcalamares.globalstorage.value("branding") - distribution = branding["bootloaderEntryName"] - file_name_sanitizer = str.maketrans(" /", "_-") - efi_bootloader_id = distribution.translate(file_name_sanitizer) + efi_bootloader_id = efi_label() + # get bitness of the underlying UEFI try: sysfile = open("/sys/firmware/efi/fw_platform_size", "r") @@ -303,7 +309,17 @@ def install_secureboot(efi_directory): """ Installs the secureboot shim in the system by calling efibootmgr. """ - raise NotImplementedError + efi_bootloader_id = efi_label() + subprocess.call([ + "/usr/sbin/efibootmgr", + "-c", + "-w", + "-L", efi_bootloader_id, + "-d", path, # TODO + "-p", num, # TODO + "-l", efidir)# TODO + + def vfat_correct_case(parent, name): for candidate in os.listdir(parent): From 903e77a908a3398d0e5ea6554629324233e028c7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 6 Mar 2018 07:11:10 -0500 Subject: [PATCH 004/385] [bootloader] Adjust documentation --- src/modules/bootloader/bootloader.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/bootloader/bootloader.conf b/src/modules/bootloader/bootloader.conf index 579e53929..3c6120542 100644 --- a/src/modules/bootloader/bootloader.conf +++ b/src/modules/bootloader/bootloader.conf @@ -32,8 +32,8 @@ grubCfg: "/boot/grub/grub.cfg" # # The ID is also used as a directory name within the EFI environment, # and the bootloader is copied from /boot/efi/EFI// . When -# setting the option here, take care to use only valid directory -# names since no sanitizing is done. +# setting the option here, keep in mind that the name is sanitized +# (problematic characters, see above, are replaced). # # efiBootloaderId: "dirname" From 74080c31f52deecdf35279e0e204d28ebe0a6f2f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 7 Mar 2018 05:52:13 -0500 Subject: [PATCH 005/385] Branding: add a fancy branding example --- src/branding/README.md | 2 + src/branding/fancy/branding.desc | 32 ++++++++++ src/branding/fancy/languages.png | Bin 0 -> 86002 bytes src/branding/fancy/show.qml | 103 +++++++++++++++++++++++++++++++ src/branding/fancy/squid.png | Bin 0 -> 8313 bytes src/branding/fancy/squid2.png | Bin 0 -> 8403 bytes src/branding/fancy/squid3.png | Bin 0 -> 8300 bytes src/branding/fancy/squid4.png | Bin 0 -> 8270 bytes 8 files changed, 137 insertions(+) create mode 100644 src/branding/fancy/branding.desc create mode 100644 src/branding/fancy/languages.png create mode 100644 src/branding/fancy/show.qml create mode 100644 src/branding/fancy/squid.png create mode 100644 src/branding/fancy/squid2.png create mode 100644 src/branding/fancy/squid3.png create mode 100644 src/branding/fancy/squid4.png diff --git a/src/branding/README.md b/src/branding/README.md index bfdcdebba..8901a6b98 100644 --- a/src/branding/README.md +++ b/src/branding/README.md @@ -32,3 +32,5 @@ There are two examples of branding content: but instead of a slideshow, it lets the user play Same Game (clicking colored balls) during the installation. The game is taken from the QML examples provided by the Qt Company. + - `fancy/` uses translations and offers navigation arrows. + diff --git a/src/branding/fancy/branding.desc b/src/branding/fancy/branding.desc new file mode 100644 index 000000000..8aae1b0b7 --- /dev/null +++ b/src/branding/fancy/branding.desc @@ -0,0 +1,32 @@ +--- +componentName: fancy + +welcomeStyleCalamares: false + +strings: + productName: Fancy GNU/Linux + shortProductName: Fancy + version: 2018.3 LTS + shortVersion: 2018.3 + versionedName: Fancy GNU/Linux 2018.3 LTS "Terrible Tubas" + shortVersionedName: Fancy 2018.3 + bootloaderEntryName: Fancy + productUrl: https://calamares.io/ + supportUrl: https://github.com/calamares/calamares/issues + knownIssuesUrl: https://calamares.io/about/ + releaseNotesUrl: https://calamares.io/about/ + +welcomeExpandingLogo: true + +images: + productLogo: "squid.png" + productIcon: "squid.png" + productWelcome: "languages.png" + +slideshow: "show.qml" + +style: + sidebarBackground: "#392F34" + sidebarText: "#eFFFFF" + sidebarTextSelect: "#392F34" + sidebarTextHighlight: "#c35400" diff --git a/src/branding/fancy/languages.png b/src/branding/fancy/languages.png new file mode 100644 index 0000000000000000000000000000000000000000..53316526bc8039e4e05d2860ae5767ccbde9eb4f GIT binary patch literal 86002 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�==0;j%F=Kq0P>U~X0$-7~AA^Z= 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 M07*qoM6N<$g8o@6NdN!< literal 0 HcmV?d00001 diff --git a/src/branding/fancy/show.qml b/src/branding/fancy/show.qml new file mode 100644 index 000000000..928911e7b --- /dev/null +++ b/src/branding/fancy/show.qml @@ -0,0 +1,103 @@ +/* === This file is part of Calamares - === + * + * Copyright 2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +import QtQuick 2.0; +import calamares.slideshow 1.0; + +Presentation +{ + id: presentation + + Timer { + interval: 5000 + running: false + repeat: true + onTriggered: presentation.goToNextSlide() + } + + Slide { + Image { + id: background1 // Must be unique + source: "squid.png" + width: 200; height: 200 + fillMode: Image.PreserveAspectFit + anchors.centerIn: parent + } + Text { + anchors.horizontalCenter: background1.horizontalCenter + anchors.top: background1.bottom + text: qsTr("This is a customizable QML slideshow.") + wrapMode: Text.WordWrap + width: presentation.width + horizontalAlignment: Text.Center + } + } + + Slide { + Image { + id: background2 + source: "squid2.png" + width: 200; height: 200 + fillMode: Image.PreserveAspectFit + anchors.centerIn: parent + } + Text { + id: namelabel2 + anchors.horizontalCenter: background2.horizontalCenter + anchors.top: background2.bottom + text: qsTr("Welcome to Fancy GNU/Linux.") + wrapMode: Text.WordWrap + width: presentation.width + horizontalAlignment: Text.Center + font.pointSize: 20 + } + Text { + anchors.horizontalCenter: background2.horizontalCenter + anchors.top: namelabel2.bottom + text: qsTr("This is example branding for your GNU/Linux distribution. " + + "Long texts in the slideshow are translated and word-wrapped appropriately. " + + "Calamares is a distribution-independent installer framework. ") + wrapMode: Text.WordWrap + width: presentation.width + horizontalAlignment: Text.Center + } + } + + Slide { + Image { + id: background3 + source: "squid3.png" + width: 200; height: 200 + fillMode: Image.PreserveAspectFit + anchors.centerIn: parent + } + centeredText: qsTr("This is a third Slide element.") + } + + Slide { + Image { + id: background4 + source: "squid4.png" + width: 200; height: 200 + fillMode: Image.PreserveAspectFit + anchors.centerIn: parent + } + centeredText: qsTr("This is a fourth Slide element.") + } +} diff --git a/src/branding/fancy/squid.png b/src/branding/fancy/squid.png new file mode 100644 index 0000000000000000000000000000000000000000..452e4450c56c10cda33dcc9c5d03753ace458862 GIT binary patch literal 8313 zcmd6NXIE3*^Y%$0gd#1J04hx>q7XU=Lg*m9b1NOBD!qt82&ggiqDZeQRRmO|6RLn9 zMGz2a2I&Zf8X(|5{$4*H;K^E9XU~;6vu9s3d(LDhv8Kkl=jeIp0RT9sucu`W03hlR z1i)d`i(O!uJM{t$($KerQ(qBqH#}9Q^Vj~7d2f!uynjDv`1ix(nX#3V-}C>?dEr>@ z9|$!h22gGzR|N60?cBbERn-W|)m>5b0xUnCtN}x_aN`)U{L+lvfVvw}8i?sbxdG5r z=RN=~*p&ie(ZUHp`0oK{lTu>?7TmQ~3%X{29gG)as^@#xk1P zMyU$VorzFC*;*i>rF!Atlge}tOT z7p4@tOPo#K-Dw{Xgw;z|CpfNB0j4IG$I36>DYFusq7C^2M!pHEtm#k$^8};a)NSHc z<3fqFg9=R&`+(32Jm1m}0#@wi885oE^Y zs-GbIh2|QjWEs`qetUrT&MgrZQ8z%qoSHB4e}8vP{W;=`S)w=NDs}B-`Fm7A;B6)x z!Ep-P-uOFj$R_tdc6u@3;h$|KY0OGl%+B~y$Fk6PToXX-E(mOQ*; z3KRjipn#phT@tg=H}k%aJ=WSz0YT9UM6T}d&|(%s`xof1Eg%aWl>#CgN>b5LXfZnh zEf1>yhf;OPdTLa(A4=rMsQ=i)stb>Zy8)`wfu!bRHbUO;Wd+w$kL|eNp27m+Jn85k zh~~{|e>dwFbd5O+?MF4xxAzyr`|L2{dq#^+H3hwC&3N!&#W8&UBvR?`=tDx1LeyT~ ziyio9H?X}XY(d6?IbuKofwv0dkEwB7UTt;kr7F#t=P!@hFyf@M(7pfspEl$dBi4J+ z_Cc@X82S0Xx`6c&1ih=1{m|>tjQr>{UvMlUYRvtS8`$68Dfr ztc2G0ELmsq;HC6jlgLDJZ=*g87BOyXbl z&7N%?P3WlBgb)=)vV{GMq6=)^g!J(Bz-;uJB&wP2#|_!&DI#qrYn05lglvEtoq*4w zbJL~>7Gyj7%4c8h16*|M46$C{*$9Q7-roW51ur0__uK2SGk|p@xiWG^F0lU#Qsw0H zTebQ%=C+s_+rK|@K>e&#ZP0jh%sQ!vU7ZzenAP;xr%fB&x@nPVMT%bx88R(@7=hBJ zI)GGbhM1*Tk{I4Of!zQpk#gabU=qVuU#dXI?tS|(C27UM&~C!cwGTcn~baLpFHIJ?at$fHZ00loS`X*@du6HP6Z1dXzxbkS(P8i~vMW z43mWxA^PcgDix>te*EnqeFI12TBZBvGy7OI9knJZ@Cd>)4(-NVuVU2M46&a8bK`1P zumdr9rj3~ba;gX#!1pXmcDxcg%76`p! za&w0dqo62>VSOeJ<^tnJ<7_`e-|=IH54+XCEClKn_xR_&RLdvmyQ>&peTsUb`YH^d zF>O8tgQ$Upc_l%mCC_kb7F!OK*(CLDF}6ZD|4aPSA~?+ zN6p5e_Uu~f92$`E0{mc4CW_(J-`ZiUpRnE`0V%tePh&ey_%e zTDv{fEwH1xpiex)efQG%Fu(b$w=o>R>p!ixRw1u-Wh5T@!G=2x_O=Yq> zjj9x)uQJ^~uS@hRFkvQUaCscRwV@htMPdc|p)+$~ zMk1s`%Zne3J8I;=??JhNQI3yvqE%~ed!LaXUNPalbNtV^)+7qhtk^{xvPGRlL|jdt zx$vil$|gRa+fr%g;x&9XLF>UbF@yQ{kAG+z(o|`uVt3kSjGBG(y5ZB;n6?I>o|-Jh ze)Mr-2Gz8#2VXVxDe?})jIsZ67N@BkkTukQ0<_*OwPGiiW!a*1*X%XzfldYbipFYe zyJV5vuXI+D3}*`&6bHZy`o#f=?zdHA?||V?jhs(3gK8dJgA68_fD)HzZh@$hXL_&BCRNxAFO3D=%pc&S3bTYUiYC#$Qm4!=kKN0%+^&zvqoF>IhOLCy!q*ib(Hxv-gVagp#D2OQqX_$|Ktrc$Hld(nBhT-MAR~GM55%wkT2RVrm7e3-9zggJS2S zs3Dn3wYb$w&F2nkl6I%%##}DY_(c;-2%3uRFNZ`IXjda45o zQ_MiSDd{T_&BV4Kx?M8%>*$1bpz7A4Z8hchA%mv2=aILK$OcGWIqdp#8d~V6c+*?W zNuL8B$<&ACGX{4943fdqta$v5?2>3HSgZA}s;Ik*aSR#61L0?jsi+tUR60~}6<&UY z=cAIz_PC;=Z)rC%Rtgc6*8MLSbed-DW6JEEK$qFSJX_xw`S5kU+LM#5^Rp$rtk~I&9x9%Hf`C zKHO;5H{oFiv6PoQ)8mg1!+;X0V_j!@M&J9xOm1bv^Ne4>ELm7F`gWxTXT8`p`-L&F z4@}rT#)OWD1w zYAdSgOkfNF;Rie02bCkZW}`o-+XFG4($OEDo=SgU!SgR%-O?WuEHK7n7@Y!m6e)^R zl_t>z54i6x%N5>&?$M(f7?Ih)Cu>NK1kHQ|O-+D83NQZSpuXEW%HK_L%Ets`Q4KJ> zM|*LWZJ;r5+mDb zzjB}!pTTrNtM1ksIVeGFs=-Sp)ZxB>yzlgR{XNzuP>qlY_Qu}1g1 zfuRnCpEvu_=BS*X68oGH!QOa?;c)VHTEQ!C_W2dgoMfQGRZ}R9*yJdYT#S+G}_j~N{uZ66YV&j3^7&NY9@>{D45>iICh^vBslQ&mzm zHm%ho|J|vY{5A#Gw$~Avhj%`^R?sn`teT^QKruqpP6-7I`;!jmD0W?4LgdrK7UltA zVek!;nlbFINc&dPHFgpNz4b?E;V=@k`d;mY?3B;LB9%W&3q8z0uInagyO=z%O%wGN z*`d_iMWASl5^1qLJv0<@2d)3|U>17#<=k0mRH!b$(uS4iJb~lxPCEMCp+?pN?j~pK zy=Lk0T^*X72Q=$Z82Yjo8aMoYt~v}}n~(1N?>1Gi-28FKexP<@Shn(JqCzp8s5mrR zD^%lY0HTc{n_gd3lFglxr>z^(*LEiT! z={Pcj{u&w?yUfqErskfE_ghSzbo+q^)G{U7%Qa2&Tf|e|D0h}=hA#}1S$!T&7l2M# z9AaC4?s`UXdG_f4;yaO8cJ~kx*BtTpT^MydrN_0T>h*0#Epr>17}2EFvpudARXZ^b zi+>2_S39MTOP+_cIwT*%*al7N;QL&Ei9UJzo#c3C7ZTYZGcPB;%@|Bp3jV_{EYii@ zwbO}WR5|+P2R_2kD?Tky+nm}pb--L5r{8f2{(Gtzvh%7@=FRZD%sSuF8Xt}P>?DWI z1;ojAZzn}%Xs{ru#eqWkiHklR*5Y#RZy_CTWaek@ohl!zI+l=IM@pG@-s_^sL`}sT zK}^CgjL>FZW$wLJA)S`RJIMr+x$Ym$FuR8Oa=v`&isZhS)TGyjl95Tw%E~H>2LTJY ziwn_^hUKP>$S;%gYP8ECHCz{WWP02F+h0}FvVT1Oay(9P|4)>2)V*`<$er+WjpwiN z9^`aM5*}Apw+>BmgB)o=-)kXGk#BE^r1i_^zEhZfGvPh5&oXhzEg`TmA@ zVw$wITj#G8XnXqxtUcV?__g_E1RRU#O+HbEE%X(CS?OFFq-o?m0Yi`?1fpAa ziw5w#b@0NSwr6wmDrNi)!5%x-OBqbkV~HzreVlQZ6mPFkuDl=_&%n^OTpE3{D)LSH z?~Wjw?#1iK+^4?&Kmz2OH%CI&@S4!^%Uf0LCSQ(!(BSWrm|3q~sfJ8gia*_FVamjq zR#}^gvKNYeICn=4iDR9Y00Kw1{B*PotfWfMvZ>!DEGttb%8eixKX&3q5Qsby_*Yse zjmA~92pG!g_N$W|W5;^Gj*BP)F1tRYBlono^HZIzZU*mi+>RKC*W+BGC|>DnoI6s= zrM>6xKVHG{D=>VWX|Mg=oq>f?cPcrkiTrI>U#+yvp#mD@AlpL=#GOH&dTG9{JN`kT z{22qObiw^Q>EesZFw^<_SxU@?Zb_5h>HwZ?N@&a_%u(j8Djip_eW57*(5?3qlPaf? z@=ng|pI%fJoIq8d#K!uevJr4KO)dNh8?BQ%seQU9l_s4=r3Ccv}wwwcDK^VDsh7)TIbnpFA z&aMWGzdd%l+jM)k`HP1%^?VAp+mZX)Tr6}pIzlx$X!r+fh!g;H2?(=5HH@C1I0;SW* z>5FfqtPJDz!^vjD)W_<0*bGv~>f`Ho4`^?0RDWpWdcX1G{60d?^INUGTFsdA=`u{W z(Gq8-K)IJ3d1hA=WaG)a=GohmVF!C6))uAqr0efr?`Ac?b#^GFvMlwxxayPRKQ{qv zYiL}+dxOt|fpNx)Tmk_zR`%I8E!C@d!G{$mlt zjy<_3kmy97eTA;su%J;J?A$(ND#Xhll75pLrU3R#Z#`9zl}<2_BnZwtxaab1{hQ*+ zOc3M<)6tz`sJ`?gDWAQoyvkfFIV;F%le(+@T4A4m35bqW!!Qy+*_-RkrM}0?{#E>m*kF;f zi4LpGNKkoGLq`WY&AC|C)PbcM-!9mBCCaJMHQe+X_(I9}z+Z8_R5GPxVdO7Qgjqfa?7b^1l*TKYEJ%=$(VvaeOc>?&6MBk`HS zES&?As$`LIil2Y0?4DF#=B?tc41>XHoX3P)0`^3`RaH3}IB=EKjhxC7aLjq5(_kzs zwy@~|Z3(S{3z@7c3cBhbRuCd!+;);vmR$8EpG;$@e(y(!t>`2wI8ZHOb_E0=yVe-g z@N2wn@O)lIJIXC3^F&A%LwjI%FWv`W+VE+K4J*fpmR* zKisioWA`Mw;}2|DQwC_4jkYKiHp^7Oatxm;=*-P9)XKi%U4IgAHTNOHc>9=T{SktN z!SI~~CfXU9nU$~gv!}r2sDoAtb!u*MG_EuGb5EPEr&DPgYE#$OEjj6vYX|^wJ%UUs z1U|_N*YP)*lZ#!Q{?}ptZi9;3RM8hcHpu-;YCX}o;Qh@<&d}JXvy8Vdy##fzE`(J5 z$P9TVsZst=*(=hM<|g$tF5vWz?ac8*taS}9Uo3%RNXfm#!}RTQ6e<$#TCIvJvKV%C zT1K_E+RRw>DinX%a=Gf;2uhdZx|J>(dtHMx(EBN|>Fr{jP4YsbLK5*;?4l@Ve15NY z1HK+4puU&gRTUQ=59DvD`tGUvxAaB^~* zUg0z=e{Lp`QB;2AgB_Er>mu?3Z~T`-d^Z4~CqoR4sEh@nK2_m_d9p4!Rhp%eA3h37 z`ri1T<;^?Fw_>b@jc=$&=(9zA`V*pC_}2JMxouM+#BZ^M)(gL2ou>}T1 z+U_(vcbbBaW_kju{DOv>-Zg@W3a_&Cae2wlhAxu~yb|Q{#4j>f&p0vKs!ByG4HjEU z{6~Cxuj%9aX`Rni!&3emNSX3FjAFxOOsQ&*(vwp8aYWdTUyHDWmwBsjQU0?yLNhol zw!+J{EkeoN-Myn~*0?9{vBK<;cICp?JU;WLT|bMDC31?9;iH1Tl?(frYqlvZVzVvI zaC!$Wy0@%lzM- z{RxyA?Pvbq)K&S{_JEL9*jt%fAhJuu0*FbN0TyYIR-Tz{t|urG!W)4$-^#C0`K`<<4A8a+j;hh z8wB8jSN!OmZ#RMIm`_@f7r38vB5(Gj*{cCOU6|&%S8p@IEe)pT?;E|U;qxr>Si5NA z9L0#&=0fX?$tFnNhLv0ijbis)XR@UWMP7*~h;3$+?oZ=R1NCy>)y&8L{K?A5bnbiD z=0|5jnOQ~+ft3A$?j%o({=`+|)qB99EE`u_8!$LLd^;5Y3_c9ORW?H)i7&^OYmIFO za{o*)o#eqJblxgukEJP1&tKE*>H=h%A)&fAD-0lsuA+f?{gYbo*^9TIf6bMMKH}#2 zoy?qC1+k?!vXHtiANS-a94PLfE4m$a^5V$L;}SamJ#Ks@<43)1kdyr9lAud&`SZ*; z9IOLrDv_T1z_WQmW9I0~WXgIuX-IN?`bFb&_ejn@!yCP+wuvCwXBKh^2}wl_HBQNN znJAPdThr>U!Hw~x6Uu?CZPN+GKuQq>r*UzrsU7x9X6=)aDfYd-wtJg_$=2c&^1X7U zfptIvn^59~=Kvz_opZfl`p6vn|;kv(0Mi|%Dw|AUResXn39Cqe3@iFD1Brb26B_N>Ka*Kx!EJg z|AZW>U`bB`nNH2qK51#3bbM`|x=wSgQcP^qM74Gs+()H7x=5h8z&lJ+Z1XVBPL&x| zXkLEnN@GKn-bT^C7g4=qt5QWGRjV02P04GKf(#?*BKU z_zn%@rF6~Ftpw|fltdNjiva_}#q%-)S^gptPB_g#r2@-}$HgJ>%=y8jJZ^pkGGY?) ziH(Weg$nL34Nt`h{Guj>RllVc;FJQox!o_N^iVDTF&EbV*U;Nm^@du2 zQL$Ll3I@A7{%IV9_D-W~VlA!^ypu zwlDloD4A>%%q))JK%;b_m*X=xX8S~tpe%S>p|p0xs~mjT>;gzCY+C*4YxC4c%N!Ar zuRetb5COHP35e2?9bb$@=1rCuUhmIT28v8*ol+gB?RXZyVo@3%bT~qurwhG3ZoxlW z!i%FFAX^6IT`v+R()=T$NGGC4>1%}-V(i*#4WF2oJ(P>TJY-JkyfA^d-j>(v_cB$hdnsWoX8Sv0K%7|}Wsn_yaRKPdCK z1(aQ@1W$f?D+|tAAPsN8FkJcWj<(E4ME}sVLUU(k39AuMr%e>(5e{l6is65_uSz;r zj=adJz=>BU$xmkGJy$>63qic`rRY`|dyQ}o)$gW>Xs|MX1Jzu{8nXjo7$uH`1(eJ!TB=a{R zx$n#$LmO(-AT3LQ6&J$`wXm=P4EpbZ-wo*&o(<#*2>hbC=9%^~F^^6L;uPrBl;G2! zhS3=o&tAg9puG~~QGK<$pU)*5PPB3hv zgrFQ!0N*n~q*|^nlnO_iD>QC?I}3Gp00=H3>QCgW#o0l1?Z=ND7`t&#dHZB) zZ(2^2X4Gh?w!w1KK{GMK)9<{6RghGX%gX%r;+r_yhQgN#c_-{Y&xl+~BDdsne=hUO zcKpKwu8zO$DOQrxyJ?{_Yx^k=FT3)QydDIClHL&$>sKt4B~r?(HC5TUDXWl~kSc(5}8@;3j>&AsT)NEv!|RB|T6ZYKqS zpj6T>QDwZsB!9xb?l!F?M4*%3{G6n{Q8-5JEsC^g5Jhh9p}Gv;>lBC+IkErC@gr58 z|5y3$Fp#RVG$?`WTHt1OV&cE?Z>@kg-|@etu+hQ8<;SH9Qz>|@A{Y=yW~sr1O44;l z^ESDkDv1Py?00aJCXuyp{L_0lxNlCN%b{a0XQdXS;6#mKevnzlpm6@TWF@TZW)q31p8e&D8wRp)VPbq+;P%(_AEL4^RIBePDeeOdRB9GBXI;ecQuIok_rEYkr-Fdm~mO@%p{iOMv*(oePWRu1;)q* z0LObKdeGm?9H#=}SBYN#zXXy6uCfs^k_=14?APTW<}ngw0+=hh?zGT&Ej}lv6yIwn zx|LhV>~+OdaL9stEc?-sI}+PUkt1e~NM(kP3yrtpb7G6}y{fk;99>DA0P5?)EKppr zK7l_}xkLy~kqjl=0Wqr*^N1-XMk@eD>%wDHV_vkb2qV?zuM!O#xC1K1bK_j+_C8PE z5J09Fq~+XWq$HY;6Jv4FCiqb6X@8&m`gtL~MB9)+qAYY})jm)bq>9j;nFMm(^*SFA9Ngv>G7Wez5{XG?2%-ye@8=|y7zRx*n^0CF^Qvs`BYpLtiOc(B z)l}UQINDG1gjg;oK*Uj!MJEEUjAi-vM~y(T5cBSe3YK8esmF`+ET6d2^FP0Gug;|h zJzB0lpA*eV14aA@s^;~FRxssjc zZF2i=NC#woS)83cqF~uZ?<4VKRT&sEC7&AQ4&lH_Z_xIu7TrdIs>81XA#Xs8?}Wh+ z&rBc|eR$R&=7$Sr#a9?f0Y!q{WNqx_$@tcx(ugzsbE4LmA|lgU62u(pcj|4KKdT)) zaf=g}VDBcAk>vR!pNPRK=HJHbTjz?{R67Bhb1;CEo&^zvmCeIoO+&_mX`>nkN<@kA zC)Vh~pXvK4zq`UMg^fR5CBWMQfXjF|dy%_=Jh67ZA-O#u5n}D(-g@Z4l%q{GflIA# ztsLmX@ppPCFlsYaCGAG}Z1u|L7k<@8&n&9i&KfLv=HF6}M?p2mR#}bHZO1U%CDCv2 z;%%6H-KXM-uGE~s^;fywAbJ!35VLea8Rk%{-@F+&Q{#(Pj-m46zf|#jMD!1} zS0SVJvlJcZZSH`ELD8yZN?{Ucu%_|wT%;{Vi%`iQBOlL4R5bYBlM-qf8h-udlmGmJ z4AvE?#%%z8>N4=Au^Wp{I9_R_bW-u-qR0JqT4MHO;SZ(5`o#OPbqerGl?IfdywlRe z+S&^bw<#^npzjlGzwD3R0!aboSggE%|zbL~2Zkf{fb(b+-znm_sE_|B`S5Ot(H$`?nb^pRf__ zdSeg;KT8<{)`{atFe(PDz-HL15+QI2Cnm$M^+;_pv4?~i9ZWPckYbd*L8e2vBzn?( zlMt?zuf9qiiw>Edi2bVEkx`UU-fO4{wnFhj1!#CM&eim-CZ8v5Nw43Y+elGhE z4cevB)V!uQ*$IiT{piofDk<5oMgT@YjFM`mrY>0t=Q&I)Ue*`};u4coH#K#tn>oY8 z#46}7UtLL=g~D;qNW^_dW3mT|Zy|y4TY<7Wij0~Yun+Ez&?wT^DX0si+;!D#m6fzbJx(KHE72@6{O-)MDI>5iv`V=w6vDzq z!Wdhe_Y1{wpW&3d@D*H>-^eu0{jf2tZ^g}yY=T6~)Ufh%)A$H@f1&>9 zsV|V+CyGX`12LFl7&(Pp+dln!mtic`0y*>{$e0!7h3G*D2>FE>w2mtR{IW2L!z`;P zqo9~qrzU=JCWC1s{f(O0JcX-r9ys9DJ1IdQPS^_1?`I1AF$aYDTIdsQ{Dl3;Bk3p zh8x*b9)nv8*gWLXv@AW3@%h5G+D{)Ir9jqbtbAm#b`msytk^`X&~QLwQpTxXAt5o* z(Jh##{84q+tk3p17AsMCxzPD8;Iem#7v)tG!VtFGMmzlvV((oe`3wugpYDUut391{ zdY3;WsZ$T_#};XiSMxe+LwG|{B^ChdKPrD7T#{{a<35IewfA+V7~4g%OYF|Ydp3VR z-hdd_xL;7@hKwqhHz75IC$yI+I_d9%eE+GE^dBE*GLe2>09JVI0E&#kkJb;DD5m%K zDT0<-;lDIJEY_k>q8=3J184Zq?aMIM+L{^^R^>Bk^-kzlAO2dF^xIa6qSY;2#6(g| zT92tlfm`G?cEO}>KgU+r=j6h-=2R$sag?j;+-4=VuMQ3+0LuLIoc%hzagVb*(_8h% za{9h2y~+|xO-Z|(n{jAJf~1@BpB+HO92RiKqC7V$?OD!4M2q~p zC{qG{ngJzekM4bUphQxxm4=eCZUleLFXtS#J>&%2UDSTh1~w?J1^qQ@`$KTY4npke zSognNQh*s4&L2f}`jOhdJ@2|aT(Q5IbZ!9#3hLI93W8U$Ai!OQFAq;ZleZN7~uleRr?b zPf7pX-QTVXTa}@>jHc5!^|n#RD>+?4wm88ciPWzdh1?X=>kml9<;12}MGgOLufUrb zU7DLClq6f7L_JI0zzy>?(~a9AJILcK_>h>{puF#2Dt&Crk0zG~AW8z>=o+45=?`s( zNuXq1(goGo_So4$JO9yRh~eeQ1Na2CJW})?+l>=!R8|jVj|XLbsL)NJ8rO|c!$B3~ zj=Zl5P6>N(@{|e@%$Is||BvAIXV@ph&!J3d4<*|a$$+4(+cg?*o}MeghYX;tE0mde zS=5#E$e!jfZN5OND6bnSsF{ml>CEihzk(jU43CYF7kQ)XCwRE;7TYQxnl`YJ>zEvq zpYM5X%i~h-d5%xdX8eicuYm`dS$TA5y_{DBU+lKNQzh(J`F8+J|ByQ)GigI$E0_u`uzd!c(BuwQFz1IEF7ouyie9<=K z@r4)YuAx#ipLD%6L9J|FV{pmiAOp04T4-_MqdXxbmv>?CN<{%5~Ek zj=hYm$75olfAf2))R&EJ1@MI8(Y390%=X}!iYVQvbh;tue?t<#4n(Wp1Zu;#1fWW7 zlokDr8=7}#5>}?}<*fZj-g2!oJ2KTsj9pS$&`-*6iwEV2$oM|UgmW-Gg#qUl3LhS3 z>2^{kUQ^)rqla%X+8>~X=VKs}=GkQ1azF`?8x~ePLlG zt{L8mffPa%qx`#=(bGO}qewk1GV?RC^C@mm7!1-L9Pm48vnxV&qTLZd0_mD3XF}H4 z?;C+cV`?SNYxE#>TY^Sp{9rkJ_mQaf?sXp6MS=D08yQ1tMlRfgwlMIG77f6udjXq3 zl~L!oc;?EAE-<+r-SYkp^}wRA=9U)--^m=1#e@r&WKAaBpj)m!l9*&gd45cAyG<$h zB#3&TsJfbu7^{z&eTR2(LtBi$(Qsl>WWsh@eh+e-f>Qf~wYt#T55M3X39nxhL;5fZ zf|QS@W^yy#EU7C6D9U5o3*)68O06C}&O0u)*fDeX!y)llYW`fK1;F81=D6>4|hrYTW&eozDq zXMAsXGD!mOcrmMuc2Oz3Wj=SEM+~KjPp1z>UuW@h_?EK$uBo#1y?LkFy)8Wn&-6iQ za*I!CO?Nw84A}i06ga5C-kY|uoFLcEhQcQfKleac?YcGA1_)@@-_q^sT(V!)C5pDP z*Sgp6NG56|-Pj=7t^Gd_+?K`9E=U@8iTBXg%AYqM5&*;Io#GTu_mRA(DsKz9anhL# z>td`lDctl<^%l9vzNwmW5CGxf>h2rK`LH1xY5*@$Loc&@6P*>g=L~pl%sctsb=Oyy zbRRL&xJ!|!mKhPiBd=Y_{WHsc`TMNFsBt+a{l`eUcMql)_4;NCdH!6_L!Gn+$az9#Y$>c_u@QWsCzGS1a6 zix{e}mdq>2f`BPu>O^^8xy+hS+Of8;<*?f;|8he6x-nt73ba8nxVD)IJO+Do9PdK7 zxM;puFAbJgcWrK#c|0kT!ybH{BMi=)Bf0$D87<*{g|}dm2b`qL z+kM69cS2|8o$dg)+X*ze>xTmG&tk3I+egMo5@a{JH~FH^1|N64yBFdwm}v7)d~=1{ z8Y7{|B@m0vrUBa!iaO3Xe}=D>7G66#aS-eMvGHr#2MdhRwZvfEhiow(jl9wuRwlAs zeoAL&XEnYTfjo--jBK$6{|$Oa>LMo{sx?=>xf2M;pfwZx&aY z8}WFbAoS@*`L~-$kg?%RFxz@O8<=N~?&JAg0C+6_a#Sy~W&Lm|3yJOZSa7doN|PnI zxVV^ZctR_b$k*Q;K0l%`OrZRe-qg;^E$5N)u8DgGmlsOqRPe#V*XXkImP z%wluqcB$5j@vhZuTCoY#K-r7Q3zEw}=Xt_rfp)@}&YIKjlL(w(Mq#z;m#>GNU;w7K zgvU{@3LV@3_WBo5DCes#M)y1NxjXA&sa-V7++y_efAScTw+-=jM7JfSLdiimGxNF= z+rN74-%VB0e*KVtxko7(Iy={8DlUUlnv?xc2mnrluLZrszRoz_)%qB(Js}CJutJ08 zMq7cQbcvI~sQA=>_)(iM{l={{8X=*Z_9k>rG;bjRM@-;ri?2FjISNhM^BNRuSYM@W z@T1rH#oW$rz=tgIk}z2C2G6ANq;NXTX3lJMikYAN68>;AXORK1&*rx_;Uiq3!bi(p zt@dn9q4Az~jG`v7WxwV!wdr@QzSdc&LHTlLlWFxZVC=E1Y0m+hXiea*rQ2)+c?1Y+ zgXq2%BxOzt=(1$y=4z&KJD2`Kh11j>_9tg4fg2x^m8U!WO)ALd*78Ac-s&mM?9r3a zWiEV$ckQm`E1y#FIO!0=&E+Y*TjoHFN=hrgR{!WS5?>a0E$gjzLApL%bU3UF82hWi zXPtPkX$hGr%yt>M3wd1fs2w9wRIRoD<$FB#c@VI0S@memQXvE)k z4GaiJY2V{NR92S+fN>w*w{KZspLh~*mf9?N!`GKAOZjnrlp8$6#|~k(xJM0yfe;!lQm9XnRN}uP(OW@ z*vyz05o;Xn;Yw8m#QV8_cb>RfMkuFqD1U1qi6a2pgJay^Mra>tWUn+GokC!WD)hrr ztTbAppXz?@$Ct}i>^oDjtUD`7l}d5iceWiw%)D^QQ_XxqEkAqTzd6fggEB)#yS1+} zZzXD;POar5D!uCs?&a{XZV&8>_>QH7^mz{N=XkxF+uvN3$J%scA}^K)g)W!-|0{1_ zFVcOK!RLB6omNf0doJ^6aDupWeMx%NndqbIH4u9+dHHT+E89pCLVMcor%E?#_T1MN zl+tYK%&q7{RV8T5Q>Fe`oq6L4Db9o>iLj!NQ$N0L86r3jl_o*j_!;^2rliIsFHJIa z0^MW%DSt7;6Q$9|6DcW1e~*r4%#hBF^jm!dL`=S9`Rh3=msjh@WLvY}Wk)8eUV3bN zfre-oxEo1x_4W0^l%#1#>4F%a+4}ETO1XcSyRJgn)Ka0m&e1=6-A!DgPaGFdn?5i` zf6n`?LM5rJ!J-MAlnC79jO*pcG%+nVk=%eB*PuWNFSVz~D(@`UG@W}!G9B$w%a2l5 zNNp3P%TD!8BrRkB<+^-&Msm~nX_xDYCxx>(7wh#Bs@}>PEK^m>tBWH)G60e&8md7x zC&L;OFumXVXB@`bXE?x7aSSr#JGRGtmf>tsioICIV$6uoN}@1msxdZDX# zSXTS7d#}j)5qy0LflS@Zo_8a_yC$4@ZcSDnEA=}FP{fq|5p|s2#AFsL>12SgGPg<5DBMw7giMtFr_CNoRZCB5)olxNEihxEqN=i zWmO}i8S+q;XV)ZjjpN0Ouk$I7&c%|meG~apvPoS8il0NcuBjoBi`gtN2m2_EO~>JV zNa1JY^(OZS!JuI@Rapx)pH2-b2>lkxYU0nC5&bR0IfJQIP*dN3y6nz?4 z_gp6x5R)VwfcZj}C$W4EbkZ|W9cOX1GT*lkaH`vuVz+J{a z$TM$4g9iWvkBszmZbjs;KaZ@xX!)>*P}#iM;vc=^F>4KlCOF$r-@Z~UW=uqwKk>S4 z)ro!DS=L|mT8hiXFyusc~sv^WnzI&guT9)TW{?pmA_vs$KO=8XwG}$NCG_P!KNL zx^xi9PB25m^+GN{ka%`oC>k!F0K+10z_zY@w=}4+Q)Pv z@TL+yI~1_v22P5t75z<{bv9J?EpnAfgudxZ|F4NintTpIKgYGH3e_|8)Zg;%ZqxE3e}n z(V}qXWqOu-pOX%|c)#)EwL(Ji)GJrXb7@Bs9S@%7-o8~Vsr#;si^Q-PB9E)OVjUlV zyDx;v)TmRS+)$6HNhnUzA;~f05*wZ`L<#?4MV}0o$9d^k$9OTwcFKNXQ0vebV$uUg z$)JtDzxTB^=&8#*TQ5JPK9YbGIhiY{NpSs^cI(i)MuroRj^&2PyJBENx^#`8P=lW6 zkRQw@pPT3jM?=>sjz{~NqYy<3FrVwXkK$%CPFXkJiDSkOpG_M43GrBZtinF{*Ux|z za|MciXTU&e=HJ*AaNYaIS{#HMc#X2h&&t`eV&*^0!_dXXqHskwK+pF9oG?#%uhL5u z6A!}%BnStP80am_l}!x~87aBNTU=WD)hXNiH&qA+6nUfDS!7Nf;r~&XinnD)-;6uc zVL=n!tnY$uDmZhw>ZC%4j-)Xa9;1Yy;IF*;u|gp23lQ3jsob}(f7c0g{Tw-?m3qR^ zta^_v?r`L6ZTfp;k1JxTzEr%hq|M8Oc&Qfv3pHS9l&AI?rbr{c0ZXwePV1f z%XB@O6lfn^WXRi=eM}d@#El(MO>%_Ouz7Wwkr*~U28$2hLxD1xbFd8=phH7R62qJu zSO@Qj%tOyd_ECL`g%L0PWFa7#MB!zJ)a_JI{w7Gd#M=tGq>T%ZE!_1^S^OKixC0nyyWs2pwEt`~94Okybb31Em}k?VSd${VUO>ZbnS8J> zf@yosJcCs#Y?b`R5$li~J?Xi*YDA7v-?)>kuRgnCBS1l*;AZrlpNjfTZ)X+!*;_Bf zpn@c!%`H3Ue>+qngU-_ZTNwRM5A94BSlIih)DmDsSJ9301W!?T^#+>OnK0PXFq0sx zP5xW4tys|NhN2k#q!`gW_5cU65R}x>qNB=gfL10u8$Rz)-{rNj=qM9KW({YHq!)DW*rVrb3-I{EykBBgI-;Xsc`Sf`LH9A4Ag38LR~KI8GRDUzl1s@t z{$mdI>xXF)OSFO;csK(@WjJL5c=5aR=#$5XuegCtDJqkE6Qt3<0{x~7g@Xf8xcW|6 zZMB!LXGDOw@)H&dh`DTVuiY}e*9nQ)pf zYX4wZN_@aNDT1_D$!Y)H^Z~m8EJ8k_8Jwh)2NDU5KfH305In*{4pdQojT}R7mPMBV z(#uFXA>iy99*#ZvwDDjID%G-bjX&D&bo1fm&^fMb(O=uRI2|b5LUiLK*E18Xa>9-| zEsUC-gyRbjyGUxD)hLiWmUiAf90{9~!07OpU}4C)&M~Sv8H~;sQ;GoX9HM$Ggwc8Y zPY~_wqIxWf!3}fwU*)CghRI_QETL?MHHXw3!jb<1P@n{0#6{@63~6<8fFwamoJW7LRYMKx?ydC7bQ?Cz!?lp(k|Lo6isxe$Z`5s zAn4f7$4aaO|AoMTOQ{lC zn{1XO1{l+=sgxCQ3W~4*{S?=^iAq4|NDSb7~L|7aM;m@ z?}7=MZ5os{Z%BT%vvP&JJ!dkqXH0qKFhWpBO3$A>S`j&`?T=j)M~n;Q)gmECwRU+> z`Q>R+1Z%YQf_Jfr8KqLN%Lu3wdZAZr-?xW?s0B96Y!zu$o_t#j5Ys>hrQyOo;nvmuGxGWH6MEY~Ba9?4>`LO{Fg z8+szqLRsyJt;%Frc&^!<&ROt?DUPxdET4?v@=C9|H`!wDz+X@7 zUZhCA$n3Q#l5TEOvGDppSrcJlMT(MZ7Fy#WDxL;}uMlo-^PL7iIn-%{5(uss6&yx< z|M1D-bimB>F-R|fN3)2Ie%mr6`yDnJsZuUfrH2GbBntfu8~m`&RHLzVoBR)s6}I@r zdCX_N&*A5!cO?5kIkAAUKZt`uGAuz)GY{|gRdP|V%wL-l7ap<_>L|A=7H)#HXvOy` zMY9qlDa^a|R%0dhxkX4cU<#i28~WTZKF*B8mP8m9&&ORJX@c$CWTx1O^oiMQiR<}g z98Mb%65eaIk_IA|K&r0 zU0=?$sB4(pf-Uk^7c*e1UzcDHjalZa_{In`_E#0WJ{PW+ms>#B45RwYksrL=#5C+1 zZMytc^@%737zKY1#v&i!JzdxxPRIXU)rI;GgwNpc(mKM@%PN|nArleckXZRP#hAy|q zH351;@M&DPArV8!%Mdgz47|3v$Y+72=u6DMd9W=jifoGhp_vnX$hHcGCzU?m!15X~ zAMqB)qxFO=ET2{!{Y1|Pevpmv!j(u=Sxwq4dn6nTpB`WTG7r_KV0d3*HJpF$h;{|^ z<}9+ovAi2^A>yk$Dp%eDdJ;~_-~c8+#0{4quETc>uOP@95LZ-TqdVd~SD)R_N%3#g z$Q#rUNcNmjIFd5nu!e#zzpwMA#6L#t5Bw7^x*%t5rT#0acTAx8>*MUS$ln^ff&Nk? z1L!DbqrY@uxNT|m;PqSwBHo#1>T%jolr|k-6nO1@Wt&+mSb0y)d>9f%x9ms-O9crJ z;P$v;{6A9JG_dvV#@j8b$_LV_exh01tHdQ);~Kq-P>i=ik?MeyEp=;zaQ(&ur?2J2 z)!=rSz+c%vHyxOpYUevi^Qy<=d8!yPV*5zLxQmrOUPIATS2?d^d0C7zEzNmsRmrB= zkN^1OL{l9b)T6_q4%>(bVC8$>MY+P&yUa@2pv{fYa* zBVA2z#aXa@G9d!4gsCETiG5`)S`q5&4jTnCbaxD11e9Sp~y(cW?jO-jnAM-sdTY z3mf+Q(vQ4N`VKH<*}t#pHFL!H@OSKeHI|OGN$q%C zc(hums1pK;IgZwD%~QTn z*Jvrf`iTQ{<9W(iiXfoc)5|uif5tVtbAE>kNJF8fk$KdBdfH} zA615qGnUF~Vvk&9U86ii$!etEOTTasgdnpAY=E%?we{^LVSC|3{1>0YS$(N2I?~;` zh~rQ9R_jT?b|+o1r%gJ+^SgGxg7*HsraIwNiSGUB#Ks@D^9wXNqFN%3Iv61*1&p%o zk0W=|R8W`YHjct~AGDf~qKeI!-71+&&&v}7e0(IkIn#739xL1{*El+@PjQk9Szd}* z7-V*d^5E&{5JvFu!I}*VP)bTk)z#JYDInli{yg#Q^dq_dg~rgtq&Cf>Wj&YRwtP>) z?ft{qMEkhT(p%fAN6XR9j_wzUh&Q(xb70cE`?cc6fm?eQ~@ldj!e#ZTW}HrQit8ng^P z!m}h7yW+W|NGbLz)#|^bcY=cp7AtZ0moF_uZf*;?7;vf~))M^!fKNVI`I2yt4BX|Rh^D?8t+_{$%-u*RsOHV32`-~8R(5`CUCRJ zxOe3r`?3>?ZpkDzl_}Fjv{>LPN2q^6Qd$O5@m#6JSUy#Mc=W4>ITgTv*WBHLFN=v! zUL#5#A0PiN_t2c?$d>)FeA_|qlbDBr#g%T-@QAavS8QzQ4Vep1`fh|5F>p%TQpqa) zT|r=9uij-27M|;L3!`?b&;8DuE9Uw>P;y7^4phaHMm`6YgHDukXi{u)1;#?Ta(0M% zs}Z{P)J12*{ud4BveK(>Nhperf|5&|y80~(7FX8af`U6x$`14kTe6yi?^Ni0Wv+%s zPy@~WK5c`T>M0-Jx8L_O=MX1?dzX_iGHmGuwc4QA-2&B_Mn(Q&t#j)V+uVZ@Um~qu&~|5Ax&yH#^}WMPgG0}|^9&xv*~3!Ce8-V_eNpOAqGl*i z^kyFVN5}=xP{$|vw!(zf&3z*Vd5S$?Sg$fG9tB>RwX2d}oTppXuHK!Qj*u242@lIu zj%kM(U;q0|3RurMiR$l=OqLw!xa}X!1(5i2EN6j+)gLvkJBD~4%j_6jTU&1qy75kT z%fZyWS6;9@Y0rGRy1muNH0zN@&hDxPXXA$anJ{}H%0}hsHEqtEjq$bXJ2|jvd|}%I zlxMLy{!TbDZ)k4t?T2`K7(o0r3Rm`yV zgv3lp0V418!;TJv9y z(kZ+AjT>vrg)6-!Q99wd9@+OH_=D?@?S z7j#IXlnnjnW}}+JSDVc{kg7Xmn%0HQtIq3Ps-d5Iew80~y#y^m`xln80aw`O$3;y9 z4-fs}CnATnecI>G7PG^}GY&oBq;Dl!Q_>kOgYghV zM3NY4@?;X_G4TFBzO97}fbqa^d!O$)^v-~hF!Fg4Au@o&!x3F0;}?L^*Rgjobd%?P z>CnuX$lT)MC(jG`H?IZV-HU|ZIQ=8tFtfNsm#VbXwk#NXyz1vDTdMVm^-}GL+U{#c zra3M~MuDVR9(tHPx#ZLF?FsBcWs$(afwNTCn0nyc&&jsnSf;s#zi+rmcA-6kBu>k; z?z;w#j)LR0j_E4td^%knm0*>QfFBFiPLr3<(o3rgcjdtF|FZl$+|Jct0+S3~iCvOi z97}VZCmZNcH_PKrStojlyt>XiuVZj*C%;y-m;p*JKff<5T6d-qQ861%vitfoHDxQutdf5u;0 zr@d+fQF^1B-FnCzc)a!(B)WHmOGtPYK)QxVz%|C2xsW#eOQYwomm;mMPPlBp(bjif zkKaF74AYD`58LkRd;aujp_(-|&$In-S(S4o-HKR0&wXjCEuvOz!v zUB1TUM^lFwsmL>e-0rvlzWl;-^Px1CjX~c)pB~ey{d65Elu`2`b%L{#PY_>Y7ACoi zMgTqgXTW~pCbvV{&83HkV7pmJtxs{1W9@`k4gmbwiCl|z7Ie^x0Lom3w`w-t}E96%i#P-rPp`^f(EH-|?!8)K}V z*M+m(t-mKV??)zI)fth)<{woaQd3+sGc7iku$>pGDKJ>vm8&YhIZFT52}M*m9i_=C z)@b6q8dfE0tH9iyU2UmCN?G=8TA$!wXtSAroDn zdZDz5@*Jatr|Hj!FOsf#rz+)3@-SHCJHc!;loPm3O3kIdbutfxNPE6d{cl36hv?gr zZ8Wsk(dJ8OtDE^ZBYf;N1J%!uedjVn$9(x#FV{viO9muTUN*Z@xLkdFcs_lYtp509 zD?y#$#c`);N7uOF{9ga~J7}}4tZi8+4f_#j{CS~DS)R(v1jUtxy(0ulO&L0fVyD-a zta&rBnbNHEa?^vBZP7zh{&o%wDsCwze zK)RB^Ks>T+OWEU9P)G<1LOtH4n6~ft8a)3Rltz55!S^$nHmm)t>6oQr^p4p$#pnbWq356P(0Gd zlTN*g>1mWzlb26!ZPhv%9(nmw$G%YT@geuy)sHRlR$jGcMYY%Yzm`R%-Pi1)9to#f zG;ol^i>N|;Vk^w$Uz=Wh724lj(gGacX9NpW3=e|W|<|Lm}f@!B8H#M2u* zFGhqVLdT^$N`;Bu36z2&-HSVXMWjubmUaSM@6ew#S{m@}hdJIrSU479Lrk5Xzm=h| zSN1KKkG6#YSz1jQ4!Jp?y1fDJ?Dt;gaoIxb4ec25JE8O^e?6%H#FyuU3vu^W={q&n z!d)Z05cIBMe;BMzfhy*cS5Z%z92PB1ouf~cGTSjlwFTw(HR4ZMkgWCqx9L|@lNU>N zjm@b=QL(!Dwfc7R+hj^AG+s@}uVv}Z#l@fc!I+qeqn(INt_`pg{WP_>)4ho@{qO#l zZhRMHx$>MkKzB?rH8s^GEbId(9Z;1tE`UpX?^lHR@2AE%lWz|HjIA?an%LE=WZ-J6 zVQ`}E?i2ub@(3rc8XARq7hz!fwF*bMw8eI=DK~PbFQT+{OHV&vcozyV6nje~7$nH4 zs577yRWI!RoNo2T{1l+eSbBM3?`UCPdYmsi?agmKxtyhg7#t3Rg0eGEHw)O-zK4fn zc9hDZY6v?iO&{E3%Ez=A$|?#<4a>R#p1vxcgam_(!o0WLR3?b*3v~9oN96)OlMgYz zJW@X%p2aV3{!IkSp=@TC8oFu!EdP&It$=QGG0xR?%zcaWJ#G3EwkvMUfP8L+OF+OVnc+o6y(9f} zIlQp_Y@>JK4WMe=<)Zst7HT~-!M=Yf)-W98rfAuLJ_qQJG?4L!Rw}pXNg(s@vyjG@ zjT4U5w;r!jo4ybiUrX1{+ywVhnzTsw=*BkZ+>QfGWBrF>&j~H_qwEE&!(KTsB0_?L-^5nXDSd-71)>Jk#)92Gdt4t$uumvJ!60Kb4)-r! zB`=`fKl6xx9aicVwuXL(yFKwf(FL_q>vxfst^P(;f$*cSkRXjUc{mjd>uX*r5!!b3 g|LZIH;yI`SlJP@$RdA9Unaaf`fxa+`T>hogIB2 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 literal 0 HcmV?d00001 From 8a9baf6e11a7a944fa482c605aa63278ec390545 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 7 Mar 2018 12:55:14 +0100 Subject: [PATCH 006/385] Git: ignore compiled QML --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d67fee190..2f36a5de6 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ __pycache__ *.pro.user *.pro.user.* *.moc +*.qmlc moc_*.cpp qrc_*.cpp ui_*.h From c116dba2e8c01f1a385a1b9b05a0b68ba3e0e35a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 7 Mar 2018 23:07:15 +0100 Subject: [PATCH 007/385] QML: add navigation items - Add a NavButton, which shows a directional arrow, and fades in on hover. It can be used left- or right- by setting an image source and click handler. - Specialize NavButton to Forward and BackButton. - Add a SlideCounter navigation aid. --- src/qml/calamares/slideshow/BackButton.qml | 24 +++++++ src/qml/calamares/slideshow/ForwardButton.qml | 23 +++++++ src/qml/calamares/slideshow/NavButton.qml | 68 +++++++++++++++++++ src/qml/calamares/slideshow/SlideCounter.qml | 37 ++++++++++ src/qml/calamares/slideshow/qmldir | 6 ++ 5 files changed, 158 insertions(+) create mode 100644 src/qml/calamares/slideshow/BackButton.qml create mode 100644 src/qml/calamares/slideshow/ForwardButton.qml create mode 100644 src/qml/calamares/slideshow/NavButton.qml create mode 100644 src/qml/calamares/slideshow/SlideCounter.qml diff --git a/src/qml/calamares/slideshow/BackButton.qml b/src/qml/calamares/slideshow/BackButton.qml new file mode 100644 index 000000000..2d5f4dd5e --- /dev/null +++ b/src/qml/calamares/slideshow/BackButton.qml @@ -0,0 +1,24 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +NavButton { + id: backButton + anchors.left: parent.left + visible: parent.currentSlide > 0 + isForward: false +} diff --git a/src/qml/calamares/slideshow/ForwardButton.qml b/src/qml/calamares/slideshow/ForwardButton.qml new file mode 100644 index 000000000..9f6fecf8e --- /dev/null +++ b/src/qml/calamares/slideshow/ForwardButton.qml @@ -0,0 +1,23 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +NavButton { + id: forwardButton + anchors.right: parent.right + visible: parent.currentSlide + 1 < parent.slides.length; +} diff --git a/src/qml/calamares/slideshow/NavButton.qml b/src/qml/calamares/slideshow/NavButton.qml new file mode 100644 index 000000000..dbe211bdb --- /dev/null +++ b/src/qml/calamares/slideshow/NavButton.qml @@ -0,0 +1,68 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +/* This is a navigation (arrow) button that fades in on hover, and + * which calls forward / backward navigation on the presentation it + * is in. It should be a child item of the presentation (not of a + * single slide). Use the ForwardButton or BackButton for a pre- + * configured instance that interacts with the presentation. + */ + +import QtQuick 2.2; + +Image { + id: fade + + property bool isForward : true + + width: 100 + height: 100 + anchors.verticalCenter: parent.verticalCenter + opacity: 0.3 + + OpacityAnimator { + id: fadeIn + target: fade + from: fade.opacity + to: 1.0 + duration: 500 + running: false + } + + OpacityAnimator { + id: fadeOut + target: fade + from: fade.opacity + to: 0.3 + duration: 250 + running: false + } + + MouseArea { + anchors.fill: parent + hoverEnabled: true + onEntered: { fadeOut.running = false; fadeIn.running = true } + onExited: { fadeIn.running = false ; fadeOut.running = true } + onClicked: { + if (isForward) + fade.parent.goToNextSlide() + else + fade.parent.goToPreviousSlide() + } + } +} diff --git a/src/qml/calamares/slideshow/SlideCounter.qml b/src/qml/calamares/slideshow/SlideCounter.qml new file mode 100644 index 000000000..3252fe552 --- /dev/null +++ b/src/qml/calamares/slideshow/SlideCounter.qml @@ -0,0 +1,37 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +/* This control just shows a (non-translated) count of the slides + * in the slideshow in the format "n / total". + */ + +import QtQuick 2.2; + +Rectangle { + id: slideCounter + anchors.right: parent.right + anchors.bottom: parent.bottom + width: 100 + height: 50 + + Text { + id: slideCounterText + anchors.centerIn: parent + text: ( parent.parent.currentSlide + 1 ) + " / " + parent.parent.slides.length + } +} diff --git a/src/qml/calamares/slideshow/qmldir b/src/qml/calamares/slideshow/qmldir index 5a0c277b4..7b964b831 100644 --- a/src/qml/calamares/slideshow/qmldir +++ b/src/qml/calamares/slideshow/qmldir @@ -1,4 +1,10 @@ module calamares.slideshow + Presentation 1.0 Presentation.qml Slide 1.0 Slide.qml +NavButton 1.0 NavButton.qml +ForwardButton 1.0 ForwardButton.qml +BackButton 1.0 BackButton.qml + +SlideCounter 1.0 SlideCounter.qml From 3d89828fe15ae358711610d7e041b7577b0074eb Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 8 Mar 2018 12:03:35 +0100 Subject: [PATCH 008/385] QML: drop potentially confusing shortcuts Removed these features that make sense in a presentation slideshow (e.g. during a talk) but that are potentially confusing during a passive slideshow like Calamares has: - Using 'c' blanks the slideshow. - Entering a slide number + enter changes slides. --- src/qml/calamares/slideshow/Presentation.qml | 52 ++++---------------- 1 file changed, 10 insertions(+), 42 deletions(-) diff --git a/src/qml/calamares/slideshow/Presentation.qml b/src/qml/calamares/slideshow/Presentation.qml index b53b9fc55..da5048035 100644 --- a/src/qml/calamares/slideshow/Presentation.qml +++ b/src/qml/calamares/slideshow/Presentation.qml @@ -2,6 +2,11 @@ * * Copyright 2017, Adriaan de Groot * - added looping, keys-instead-of-shortcut + * Copyright 2018, Adriaan de Groot + * - make looping a property, drop the 'c' fade-key + * - drop navigation through entering a slide number + * (this and the 'c' key make sense in a *presentation* + * slideshow, not in a passive slideshow like Calamares) * * SPDX-License-Identifier: LGPL-2.1 * License-Filename: LICENSES/LGPLv2.1-Presentation @@ -57,6 +62,8 @@ Item { property variant slides: [] property int currentSlide: 0 + + property bool loopSlides: true property bool showNotes: false; property bool allowDelay: true; @@ -70,8 +77,6 @@ Item { property string codeFontFamily: "Courier New" // Private API - property bool _faded: false - property int _userNum; property int _lastShownSlide: 0 Component.onCompleted: { @@ -85,7 +90,6 @@ Item { } root.slides = slides; - root._userNum = 0; // Make first slide visible... if (root.slides.length > 0) @@ -106,48 +110,21 @@ Item { } function goToNextSlide() { - root._userNum = 0 - if (_faded) - return if (root.slides[currentSlide].delayPoints) { if (root.slides[currentSlide]._advance()) return; } if (currentSlide + 1 < root.slides.length) ++currentSlide; - else + else if (loopSlides) currentSlide = 0; // Loop at the end } function goToPreviousSlide() { - root._userNum = 0 - if (root._faded) - return if (currentSlide - 1 >= 0) --currentSlide; - } - - function goToUserSlide() { - --_userNum; - if (root._faded || _userNum >= root.slides.length) - return - if (_userNum < 0) - goToNextSlide() - else { - currentSlide = _userNum; - root.focus = true; - } - } - - // directly type in the slide number: depends on root having focus - Keys.onPressed: { - if (event.key >= Qt.Key_0 && event.key <= Qt.Key_9) - _userNum = 10 * _userNum + (event.key - Qt.Key_0) - else { - if (event.key == Qt.Key_Return || event.key == Qt.Key_Enter) - goToUserSlide(); - _userNum = 0; - } + else if (loopSlides) + currentSlide = root.slides.length - 1 } focus: true // Keep focus @@ -165,21 +142,12 @@ Item { // presentation-specific single-key shortcuts (which interfere with normal typing) Shortcut { sequence: " "; enabled: root.keyShortcutsEnabled; onActivated: goToNextSlide() } - Shortcut { sequence: "c"; enabled: root.keyShortcutsEnabled; onActivated: root._faded = !root._faded } // standard shortcuts Shortcut { sequence: StandardKey.MoveToNextPage; onActivated: goToNextSlide() } Shortcut { sequence: StandardKey.MoveToPreviousPage; onActivated: goToPreviousSlide() } Shortcut { sequence: StandardKey.Quit; onActivated: Qt.quit() } - Rectangle { - z: 1000 - color: "black" - anchors.fill: parent - opacity: root._faded ? 1 : 0 - Behavior on opacity { NumberAnimation { duration: 250 } } - } - MouseArea { id: mouseArea anchors.fill: parent From b6fd8de126035ee1153152b59dd00f2c290fce16 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 8 Mar 2018 12:08:07 +0100 Subject: [PATCH 009/385] QML: Use QtQuick 2.5 consistently --- src/qml/calamares/slideshow/NavButton.qml | 2 +- src/qml/calamares/slideshow/Slide.qml | 2 +- src/qml/calamares/slideshow/SlideCounter.qml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/qml/calamares/slideshow/NavButton.qml b/src/qml/calamares/slideshow/NavButton.qml index dbe211bdb..33d8cad77 100644 --- a/src/qml/calamares/slideshow/NavButton.qml +++ b/src/qml/calamares/slideshow/NavButton.qml @@ -23,7 +23,7 @@ * configured instance that interacts with the presentation. */ -import QtQuick 2.2; +import QtQuick 2.5; Image { id: fade diff --git a/src/qml/calamares/slideshow/Slide.qml b/src/qml/calamares/slideshow/Slide.qml index e033e3c17..6b32ddfbf 100644 --- a/src/qml/calamares/slideshow/Slide.qml +++ b/src/qml/calamares/slideshow/Slide.qml @@ -46,7 +46,7 @@ ****************************************************************************/ -import QtQuick 2.0 +import QtQuick 2.5 Item { /* diff --git a/src/qml/calamares/slideshow/SlideCounter.qml b/src/qml/calamares/slideshow/SlideCounter.qml index 3252fe552..7d8482b8e 100644 --- a/src/qml/calamares/slideshow/SlideCounter.qml +++ b/src/qml/calamares/slideshow/SlideCounter.qml @@ -20,7 +20,7 @@ * in the slideshow in the format "n / total". */ -import QtQuick 2.2; +import QtQuick 2.5; Rectangle { id: slideCounter From 7ab79a944b9f6ac172b35e42e336a1d2a5566b6d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 7 Mar 2018 23:07:55 +0100 Subject: [PATCH 010/385] Branding: add example SVGs from Quassel --- src/branding/fancy/go-next.svgz | Bin 0 -> 5473 bytes src/branding/fancy/go-previous.svgz | Bin 0 -> 5690 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/branding/fancy/go-next.svgz create mode 100644 src/branding/fancy/go-previous.svgz diff --git a/src/branding/fancy/go-next.svgz b/src/branding/fancy/go-next.svgz new file mode 100644 index 0000000000000000000000000000000000000000..c6dc7d0f4cb9def6cce592822ea664353275938d GIT binary patch literal 5473 zcmV-n6`txJiwFP!000000PS6Ea~rvl{+?gK(|(C6B-HO{XxB;Qyp>d{oXXWDsk?6} zS{&KBNTQ0Q*4F;|1BNd{h%_n6k`-?}mWqQ1jhBAV-M~P^_=n$pyt?fD)J&!q*m$b_4w#_zx~w@|1lW!UQe3gtQqw_ zT+H70{&fA%>Dln6>HYfsY<6>ca`NHBhj6g~!+7%U*Z#zr>CQ{ zS4Ru^o7>4{D>phjX)c?q=6W_g!GI@6o%mTNepVX4_^CM?UtNu_r)|mW>33_wlhJvW z?mF{4YI^wdUrh=ejL*_dd7b3Lq)tCxW+pz_nKpO5_00ZF z{#_MV0%1D7ot!o2xnvWro7u^afBSKjIe;*ljn=AJl3%r3jmY)zs+ryl&zkAU5-;WR zfR1MGvoVmj$@k60yZ5s$eKC4AresS64 z4sTSJZ_cJC>sl=(SQL+XC!g0E zY-HA5OSG(U;_P*>uT`?P_2ioL*`^VPwF(5l9O8I_(5EP?pJg%G$BUN4( zZIwK~mwjGm7k@0H|AaKvQN;4Ki!eg|7bMI*xMSpsHY5xpg#0P?I?bPoJtl))^EU%_ z)nL|xLliRh6?&IZ)WB>i(#cYm^^iC*r%pDbXdx;@J=Bb+HS`AP^MbuIF=klBCvA(mh;-oRg3$D(78d_Snr2=gl97 zx6|px@cKV5Z%cRgbhwIGqaT}}E{3z^lbD#QrTf!v-2$_(ulD9$dPZwXy3?8xKgFom z7AYZWZH*Ers{29K_?%8=0D2Ls6|}sz?C{9J!jW%tGllbh77LWzVV+IwI~?|+)RBE*>M+@yyNWvFxwKZqDFwosW@=||A`y)*N*u$#$0Ye;%RXg!GKPy? zs+&P9cBzCUQOd1T6c)+k3xWY+AB}@@674GlP}QXMM#%szn7Mept?L$?ELpYw+$MZp z30DiyJ#-f#;UH0>QB|K}&_pR=)wp{AA%|3N>_|v430l3VjzO6@;(jyR&$T2&P%Eqo zB&SrUj%=W5!McN4c__mW$(*(CF?fog{=fzDF3Ukq4>3SW36AzzayKMrmlrqxHJrU) zZ+M9@ayOJqaL>m3O%~bM-OZ0$m#4Rr%U^%DsnhZIC3o!)DAUl(efm^G8ji~MoADn1%c-w!8~;a$~QLEEkB zEE!N2aM#1Nhs;dYpL>H80~0#-DTX8*wfDL=K!`yNkya>X5Mzi5f%}ZX(J@*ENrS2y z^*IG~ibib(%prp=eTf-PDRBW~5D~Y&dLSah1&FD{So08L5=gx_>u@TLNg!D2?O+55 z9y$8Fu_S;6lz`+^KuW>gIdx#E*Ca$$V(s8kuR(~wlGfpYmhO5=x@xQfyN4`If?oT)?BRwW7f=#Xh;}SZa#%*g3(IojUGv@?UjV2loe17n%q1?6cjZV>Kg`U zW~UYujfthO0ttXxvXCgCMviOn>jeyew5p=Dx)dyd+p?{g3Mj#25~;g|2muhl7YcaN z3<3u;L|duKTUq(}-u}zYJcz^&?!Gm0Jsvf)yPIa3BDI#}4x*EqS zN_Th_rZIZp6d|o(Eg%KRiP(i{v>39i{<=T9IQ5Cq({znm)C=RPxulC0di8*>R634@3c_l*K6C$P_- zKuF*@9zg2C>(A?h5?PH1>wQpzAV6SRZ?#B(Xeeu4#7g!+?Kd|r{XyEBMR~OLhjp@W zlC5+%i*`U*d6M~UN;j5c8aM$$?l#=y}mdZkv(qAm%%QVUT- zC%bo34+1e0QR-tzsE`DYpTJ7^L9CgGJqc@KfyiA`MVqFKsza=43!Wkq#)`I1_Mx;H zv1QtxhA#Y~bU6i}w%X)qhpYYkvBZNhi`V2}3Wv$m6bWb7VkPJa8eFy^r zrX-!{9EBtqeeC+K4z7ZQBI-jhOswLcA7o7;Jv7>Ud zONX}xPsfrm?q$iC4`(R?M}SALWUPm?^!8jEfahaLct1;`kFurF=oaK1F1pW!(@@_eb8`F@rdeXHdL-OZDFY~Jd=QP~|z&uFOr0PS$Ab`hR#RHE#+ z-T0W<0?@=CW4rMYvjyTXJzpGT;<%3`CQgU5G}6W%Gg~kT{;SOvloIS?Da+6!Sc>J} z;Ve-~@-!^r4weo-cvPPY!e=_0r>3M%d(H*nma};;b_k8|$qp88o*Cn))t7Id_#E4d zezTScU*em!4D@2(tbNI^iW5D_8PexE)%>DoTu8rti~gB?Js!aDQyzXK)&SAbs>6?8 z;vDA-o^E5J^lx}ze18mN`sV1*`_>Saum7zfU-;ED#P;>Qn&w5L8~cHT?LTAt3q0e@ zB=Ac<;0?4}d3s7CLH729@$(#pe&K0Rst82bW3gd6|3ubIU)Rlvk#7x12y;t?^aHYh}@LkjHJ7v1g+iQ{Wc03t1lVz5*SCzHcnp(W~wjP~Q>nb0% z=TF}cN8=B9`Ex(>=kfTeluC>1etwzoSS%za){V^Epad~tPjWwVG(Nj6Z)G0b&WH8p z<3{n@$)pHe4)2<*cl&`wsCuVxDObIBr^AX-T#Tkg_v?4Lqp}UZyN@?lH;b%}kLmmI zhn!b-%!ZfK=6+90*5GD*aa|OdO>Ud@Vz;@<4zA0UyusVIZwo*gZ3R|z-$(Ciw4!?DHk;nk z;#bXVI2z7|o$D+SGQ?%?C!_Pz|Nik0t3A}Sv(x{{?_Tb z&=}5sdvTQ=qP%hYH~Gca*@>4KwQwOM168$?X8uO)Z7(6uKUWu}(8*tC`4GvUN+au= z)+dXOE;nC0J#u2HXq$R>Zw&JrpqtBAM{h3jORz7;J=`?T@$Jpkc+@OhXqi7+qziT3 ziL)K&&B__G?y9Vy6s5&pU3bz}MkCBo9IN`S;s`-mExlrh&ODI^8s40;gN z*b`~*om^<1;9NN0xCbbgv?_GTTuTauG1&q$^-%SOoPg!_ggp+C2WW@k+SO z1L|#Za(mgFHa|7lP)46V5aq!LIl8CC<@$^Vqv{h-Ph;M!OyA7=D>v_@SwJ8ab2Rz> zlL!8kmmCVs!3B2>$@*09&4s)FF zD+=|Su`GfhCXb&EW}Nt6ZhGArn;U;kR6UjC4G;MV`ZD#0fO z?iK=_3BG&iY-)7SJJ_CO(DyGKAh8iq%)oQP+k`86YEzx)n>L+NAW9f1r-@`EtrTJe=Y{-6nm8m%#8jFt zX$X;>wX`O|B_fvzhg8UUla#|=GDEmAVFWm6%CIl}xOwt!m!Flw+kI+VKqewPzNb)t z7$c*3TMyqQBK^E&ti8zdC4^+{(|`q3Bb`6ekpKY|kRfuEo_HT)5KidcCelLuO-af8 zk#6;Ax~hyYBu)aUZx+}<6?^1Cv8gm64fE*bqNpU)$9zLEQCk#JbSn^pMVLcI zS`bOpYC6Y2ynqTsgmXxQS_qkSy`T~cFAI{#7K{j_rE4XTkTK2^sbf@PNcqARq!=wO zB{(|LG9iV~xknOIN#PKM(C5jyhtyy$Ucj~w$rrs$MXN-uvqX}ZQKcXZIv+|$5$jy9 zD8=(O5mF$ZyC}$luB0IvM(kTL8}UqZTry}9#8k5G28&2w0bJW5Dq@DFRK$!EnU=~} zk=yMq)+8QFqsy>hF_|wrB4E^_5f?*V&`1`sl?C=>ZBPM?oC>C33F3O7;k2N$#bk+E zoD&#RNNqDLOQWoV(sJmP1IMJT%LtND%PHF;-l9fj?I|uw+HxFUx0t3B=OBP_3&lut zIZ|wq${P#7M9OoJF~$NRJ9!HMvBhnUT;7sdVmdE9<;^l#%zv4bDrs6uFOwmc(n_Q? z#ZM-YHOl Xw6srdKjg2a<&XadOC(EQW`h6#G`fNk literal 0 HcmV?d00001 diff --git a/src/branding/fancy/go-previous.svgz b/src/branding/fancy/go-previous.svgz new file mode 100644 index 0000000000000000000000000000000000000000..971b1d98975babba9d6a4ec572fd81c4021cdb56 GIT binary patch literal 5690 zcmV-A7RBiwiwFP!000000PTHSb6Yu*=KK5#t@@=MLqeH}yunrOiCI_lL`PJ|Z0vN$ z?pp^f9@*NKMFmNft@`x~z$6bL(xfO;R@qaOt9Xz|T=GL+fWrfvAOG#+`>T^*y6Nn4 za{cNQ1Du|8*XNV*<@MWFr+@$3pND>WGMkUC$D^ysb@%G@dUE=2fBKgn|Hp86@_O2h z=H2+@!{z+l$zQJjIXfTSbSHm&H=p0UJUjdF;X}Aw5W{5p_Uy&UaF|QZetG*ZCnqPl z+3VTM@%gLM1^>VbTZYxRvaF+9W&WCZm{CJg-_-tot z?t1GP{hR#Xs=$&EW|Q0Ld3TXZcHz34pZ)Z=pH`Ve2;=#9t(qnHO}ovAT#w#&vzyU* zH#=L>OZhyY$v-+ zyDAKg=CzfLC+E3;x%Y1;!<%XM%jM*D7IL${wiQoq=Qp?We{>(`-SwxMvSe#w*6dnt zMcioT&1ja}IeRyG-<{oDUT1lyle5uu{$Vox=h=ULynEYSpUuvvmv3%o`FnIVdUMsa zz34vPOs4bU#pP9(JH1g^zBr$qO=?Z68qP-N^W5RtSr+g*_dncRzuj8v$MH?p1$5Y& zd$-E{Q_lWz++ED__hOhziWI!&<=m`k-DvtB)6w`c+gGKnS9w0Uy6VpJP>-%YjP7Qo zy;W6h(a4-?rM24Gd~&n6F3`^Jt}+CLILtLprZ4{h_47j|O|r&a&hK9052t;Z$;HL2 z%MDi<`&Mfukp)jr&c3WQ*wz|uZ!NA``|+$5dpC@mC{dCFP}10?i;KsiM9B_9>7srf zixQ=@1EnJ?8!4O~DA?m+RQj4QDj!eTfDS@w>N^5wf}muI|xX!L#AfwtnPlpd&)`}H5I>SMs@ zF;U9bLxdn`F7~1^Iy7pm&UBT$xR-rVvm1LXqklx0S}&scvkNf7_!|VwJ-DOA1~w!N z%!F|Ry(XX>6TL_ZyW)2Q?5n{nM-0ZKvA6TPOhpMXsxbGwlzBa*m|{#lZ>FLK6EHbc zjc0i&F&h81o4=dnZf04EsJq5&UM{clI`@w}fEPW8d8$9}rVj_N#ux+w1C#~1Uugvb zMuynS_=%r5iT2?2ORf;Dr!K|l)<=?y?mtGiv)Se7`hQ;CmhSH9aO2y?KjmfD zXue#xv5IKAAE4V7V)XTS;ioP=q249gsdp(JRX?ikaxiK2mIIl%AEdWWX^zUkyI^5B z&}^#Um^j=MoMK3z9vi_CIFK|_OF)q%P7n5u5L^*hWATli{}(tay4n|;Ac{qZyu}0~ zvVv`xph--k+e}adEa5gAWR6c_gOP+2itn~TX4$a8CyShsIqiy^EYid@qW}bsv59P| zp>!L1-ixig7h8F!nFtS>s*9tN%K(F^nOZlb!H|L`SK?Gs5Zuj^(;#9hbPMW8OfQ~ul^_xR zdw8yAi^UT8Xb3|faaFKE(IG-&;{rGtM=n>4pny0SMhOxV%RnH2h$LxOxkJ>T>g?@3 zIoIH%Nt-FbHs*_lxtSB}2D>tG3~X#lO?`qv5~YMqo;iq(zMVP%epk?wa0|y4qWFbwYmiGXJ#v$3JY!^x}t-yLR_` zHlI%Z*}c4;Tz8A>VO<`)L=Bt-0GyW@Mf5D+%jx9ydc02jf0N7WmiqoOPr$D(^ViE& z@$qQ(ZZw^a?wZyLwccmUoB?G)?t8d4@6TZU^<~DaAsxz|5`#@jyh13nHfCVbz0K zVn`=Huai?TOajJIZ%;;m;1TCUVmFl96?uGid1wDyWa z60$6n1WB%*NfZPHEe#Zd#~7U|k;PKvf(j%6s$d~eK(T0Rv~%uKDRoETydV(*!Aq5n$`5D;e2z-A@x(KoD7X(*zVKG5Ec1B@0Y!)VS${0cBti{IW1?TG`3#UO%&x-Ec!HvvRr07f(U@&JMXfx%q{%TQ65eX4Anv|PGt zjAVnN2+T@xpcF`A0{!v;LJUu_0BH-auhxgfvnmm`x26;V1A(?bgD3|uMPBP7HoON) zzj-goA0)l1@uQ_bsFM{VZ=e|}G@u|z@Cd>UD48oH782YkFUN=7Pl|Sw(IyNKk)#nQ zVu+?{-iT$H)j5GTVj)WCdH3FQgFrD7Q5s-KD3BOm96?JSHpxDtPCSf#eQ0iHCp~MdiHyppBiWnDpkgat$5+Wstv6UUE5xeKwC3duji5>Ac zQO5&CN%sW87?L7zBM)Ifz?7O`TBwjXQ;+d<69mQr5e*&r0vJF_Ev6EX)ZM=mP?f(1sQbkmS`ar#>Vte49h8Ok{7`w2`2C=Qx$wrIdcqhF z8PuJy3jGFW8$)Wvrq(mKH-bjmDIvlEkL2x@aPPeW3L=SJ+edyO262cz@ndB*fGEu) z#G9<=4eNG2yBUoi@|$~zNrfa1G$fD6g559{H8w|1S`rvU6g|qI{$Ajuh=ZY~pve`F zaH}9`dYHu@Pk7IKqfHLUm!P`5)v5Vctew~xE{jK@w!Mhlu+qmP6){eAQ zNtty&O6-TDbWuN#K}ld6N{6=w$3saY?nOysJRBv1XaJ8uNuwN&(whtE0GibcO=vy^6$Znj(t$QQ;MrF4v zJ*ScQ1Ej;P(it3YRE+oQu01AN04n=qbk`mcEf7cP>HJ`%X!}sgJn3+h#?t9yqD3Ue z-&(Ywlwco9nTH;Ml9j*1QKFRiI4I!`ln&nu(r(qjC)zG0DkM&Owrb#(?NZOSFNpAX zyF!QepTLbK&7-$R-dgmm&(#v)@qpXHNw9o8EqbLE)vDuIIRkqeW!gn9m`Z}tgJeBF&RWj6I1-b?~1g+5N^CG8T7dcG&3AzS3ji0!s z!A+=YoO)}V8i<(1o^zT2h|dx7972r9+yuTP!9WnOiGQ2C7Y%O{44)TD`yI+-L79Gs z@<>q9@mE^O0U1&O(kq&r!0;=9`J7W3U}(dq24O?rm~{x#y~Vh5NUZl~9cCdiMDySN z$vkl2+~jbCJXnmJ?oZ3q(2<{4bbnUSANWxA&@d#4l;VqLMN5w0aay@xDc5(XTcXEA zYlv9DN+RDmYzjw)4Og(?_YB*ywT;$bv+ox+|J_IrUzCI4SB8zEf8uCy6ArE-*5HPT zgMf*&z*#^BOYvFt&El~`D1OgscHDbE!ATW04PuDw8p$6I8U>QX*y@;KKvz&*p!VZg zdDBU~>d);Mz3;}qTy`J&*P*-_twgvPz3u7~M;WY(`dMVWnM}vsbeW~~(_}3kN?N?K zrX8D7>nb0%=jT%e#*+`(((Y&eI+?sLwYnO*$^GoQCKL;nh~h?OZqI{KOze0+b38e} zE$>qr-hLX>n~xjCZ>Q73a5cK?ve@;jR@1xW`2dF^$b5R+trxq^RrchjT+JK4c{BOAJ^#by zbsm-BQdmI!498M-P4pR#+(K0NOlHPFZTUK$MyjQL&+p1Rn?BwZT4S_@K(c144czys zcP+JndSx}6#!~6;yZLB5nvZ(RSyD(5m%X2kFJAudpZ;7@HGO{m^8e&FCiTy|6^7B9 z$!$ifmRazP&tDdgF`EDB@_n|4@~*6Z&9AJ=HoVMenF}D9&{R9^KD`TT+v~&fzxS7= z(Aj^@^XVafDUGZ@t$4QRXeQKTFGo%+1+A&K_r@^4x2d~&b^7yVetp%|t0 zelqSBCbY~SFVY3N{-~iH2Mv|Oh5ApU1*Isldm;8m3|S0>ZZbd$sKTuI1Q-b-n0TNV zkj=atO2a|awUAsQ2%Y3?3Z5KT%XQ@$sMIZA!Yh6a$eP&uN;S9;VQI+f!+MlkM+r_6 zG1p=qfK#+g^uQu^;#{wtoas{{=EC{HGi&*9P9kcb&efC>(FvAZDt>|l<f?5#GYiWvY0|jDKggv8EQvX-zXu~Pp-zff(q^$PfY7cD?UhpSq;Ru zL0?a~*?z{&#!>8>rx4cU^!BQI+5OUGr5Jzy)Ef^<7|qiYo_W(AZgU(3juPp21^$K< zc&P#qNLU?}fB5XVO%nMV*XjLs8v(yWM!flWU%EH9^ZABwRh|X4Z7I_~b*z8u$BTOw zrJ?9^03|8fEP;s(Z}i#8NZC`KWnYDEf4vQR4xtZu8+Lc3xB zM`b^82%rd-D}>;zs%j-V3Z zI|wS@{*<7dr0r8MSR-a_d_s$O>xI%K3wYPzBGSe6B z4YJ5a2c75KE>Sn!zHuQpdgd5JfO$X|SUGVWTMGihHn12RG)by@q5&~!rb=K`0j#vh zC0n1|Apu8)=FmQKCq>>6(UM(W8{sI5-=|5^hMCJZ^$=*g3y|U$&Oguf0$_d%MHR zYT@k`wapt7k-oSmPyjQ7WY6ef(e1?{W=SA{sumA1=x2;m(@~8R?;9tXZyF~d2i!1D zLJHOzXQidaIBQ|pFitXSjFTLD<0O~fI7_NA&YW(HF%oX1dtzEPlceVgyEBtanZ%^UE?(m#hkw z;);|!BsRd@p`0avMI6-Jy?$z!lgxFIwED)hgr=q}kQzIc`UOa(;shzF(LF4GJ=yY0 z4V78hm#L!ZcdUwo0v|ays#uA_xUPzY#^Bnk;-IKv5w)r!r~I*jQh;Ps6;jbttfXX4 zqM5{i1ep|rd4ft(;#!b{M7CPcIHFV%ctplrJphZxXm4-}JnO%PP}QS0YMC)6=eW_os$2{8sd~e;8ZR~( zvDTa{BxXxIPz$c^n!9R2K@53dxNz1Y!MJo_Nh)Py3LZHj^+e*#=P~9cQi!4+i`NfG zRLZIbT814Aj Date: Wed, 7 Mar 2018 23:08:11 +0100 Subject: [PATCH 011/385] Branding: update example, use NavButtons --- src/branding/fancy/show.qml | 69 +++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 38 deletions(-) diff --git a/src/branding/fancy/show.qml b/src/branding/fancy/show.qml index 928911e7b..e05a04b7e 100644 --- a/src/branding/fancy/show.qml +++ b/src/branding/fancy/show.qml @@ -17,21 +17,35 @@ * along with Calamares. If not, see . */ -import QtQuick 2.0; +import QtQuick 2.5; import calamares.slideshow 1.0; Presentation { id: presentation - Timer { - interval: 5000 - running: false - repeat: true - onTriggered: presentation.goToNextSlide() + mouseNavigation: false /* Only the fwd/back buttons */ + loopSlides: false + + BackButton { + width: 60 + height: 60 + source: "go-previous.svgz" + } + + ForwardButton { + width: 60 + height: 60 + source: "go-next.svgz" } + + SlideCounter {} Slide { + /* This first slide ignores the "normal" slide layout and places + * an image and text by itself. The anchors need to be connected + * to place the items properly. + */ Image { id: background1 // Must be unique source: "squid.png" @@ -50,53 +64,32 @@ Presentation } Slide { - Image { - id: background2 - source: "squid2.png" - width: 200; height: 200 - fillMode: Image.PreserveAspectFit - anchors.centerIn: parent - } - Text { - id: namelabel2 - anchors.horizontalCenter: background2.horizontalCenter - anchors.top: background2.bottom - text: qsTr("Welcome to Fancy GNU/Linux.") - wrapMode: Text.WordWrap - width: presentation.width - horizontalAlignment: Text.Center - font.pointSize: 20 - } - Text { - anchors.horizontalCenter: background2.horizontalCenter - anchors.top: namelabel2.bottom - text: qsTr("This is example branding for your GNU/Linux distribution. " + + /* Make this one narrower to prevent overlap of wide text with nav buttons */ + width: parent.width * 0.9 - 120 + x: parent.width * 0.05 + 60 + /* For just a slide with text, things can be simplified using properties */ + title: qsTr("Welcome to Fancy GNU/Linux.") + centeredText: qsTr("This is example branding for your GNU/Linux distribution. " + "Long texts in the slideshow are translated and word-wrapped appropriately. " + "Calamares is a distribution-independent installer framework. ") - wrapMode: Text.WordWrap - width: presentation.width - horizontalAlignment: Text.Center - } } Slide { - Image { - id: background3 - source: "squid3.png" - width: 200; height: 200 - fillMode: Image.PreserveAspectFit - anchors.centerIn: parent - } centeredText: qsTr("This is a third Slide element.") } Slide { + /* Note that these overlap because both are centered. The z-order puts the background + * in back. While you can use the properties of the Slide, it's not easy to get at + * the anchors of the items. + */ Image { id: background4 source: "squid4.png" width: 200; height: 200 fillMode: Image.PreserveAspectFit anchors.centerIn: parent + z: -1 } centeredText: qsTr("This is a fourth Slide element.") } From e7849c5ed0692a37907818ee4d190021f10746b5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 8 Mar 2018 12:19:02 +0100 Subject: [PATCH 012/385] Branding: fix reference error --- src/branding/default/show.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/branding/default/show.qml b/src/branding/default/show.qml index 84f252d54..3bf133388 100644 --- a/src/branding/default/show.qml +++ b/src/branding/default/show.qml @@ -48,7 +48,7 @@ Presentation "To create a Calamares presentation in QML, import calamares.slideshow,
"+ "define a Presentation element with as many Slide elements as needed." wrapMode: Text.WordWrap - width: root.width + width: presentation.width horizontalAlignment: Text.Center } } From 8125698696674ad156342483beab30ccc95adad1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 8 Mar 2018 12:57:50 +0100 Subject: [PATCH 013/385] Branding: expand documentation - Auto-advance the default presentation - Add more example slides to the fancy presentation - Expand README.md explaining what the default classes can do --- src/branding/README.md | 60 ++++++++++++++++++++++++++++++++++- src/branding/default/show.qml | 3 ++ src/branding/fancy/show.qml | 16 ++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) diff --git a/src/branding/README.md b/src/branding/README.md index 8901a6b98..5514e77df 100644 --- a/src/branding/README.md +++ b/src/branding/README.md @@ -28,9 +28,67 @@ There are two examples of branding content: the default Calamares icons and a as start-page splash it provides a tag-cloud view of languages. The slideshow is a basic one with a few slides of text and a single image. No translations are provided. + - `fancy/` uses translations and offers navigation arrows. These are + provided by the standard Calamares QML classes. - `samegame/` is a similarly simple branding setup for Generic Linux, but instead of a slideshow, it lets the user play Same Game (clicking colored balls) during the installation. The game is taken from the QML examples provided by the Qt Company. - - `fancy/` uses translations and offers navigation arrows. +Since the slideshow can be **any** QML, it is limited only by your designers +imagination and your QML experience. For straightforward presentations, +see the documentation below. + +## Presentation + +The default QML classes provided by Calamares can be used for a simple +and straightforward "slideshow" presentation with static text and +pictures. To use the default slideshow classes, start with a `show.qml` +file with the following content: + +``` +import QtQuick 2.5; +import calamares.slideshow 1.0; + +Presentation +{ + id: presentation +} +``` + +After the *id*, set properties of the presentation as a whole. These include: + - *loopSlides* (default true) When set, clicking past the last slide + returns to the very first slide. + - *mouseNavigation*, *arrowNavigation*, *keyShortcutsEnabled* (all default + true) enable different ways to navigate the slideshow. + - *titleColor*, *textColor* change the look of the presentation. + - *fontFamily*, *codeFontFamily* change the look of text in the presentation. + +After setting properties, you can add elements to the presentation. +Generally, you will add a few presentation-level elements first, +then slides. + - For visible navigation arrows, add elements of class *ForwardButton* and + *BackwardButton*. Set the *source* property of each to a suitable + image. See the `fancy/` example. It is recommended to turn off other + kinds of navigation when visible navigation is used. + - To indicate where the user is, add an element of class *SlideCounter*. + This indicates in "n / total" form where the user is in the slideshow. + - To automatically advance the presentation (for a fully passive slideshow), + add a timer that calls the `goToNextSlide()` function of the presentation. + See the `default/` example -- remember to start the timer when the + presentation is completely loaded. + +After setting the presentation elements, add one or more Slide elements. +The presentation framework will make a slideshow out of the Slide +elements, displaying only one at a time. Each slide is an element in itself, +so you can put whatever visual elements you like in the slide. They have +standard properties for a boring "static text" slideshow, though: + - *title* is text to show as slide title + - *centeredText* is displayed in a large-ish font + - *writeInText* is displayed by "writing it in" to the slide, + one letter at a time. + - *content* is a list of things which are displayed as a bulleted list. + +The presentation classes can be used to produce a fairly dry slideshow +for the installation process; it is recommended to experiment with the +visual effects and classes available in QtQuick. diff --git a/src/branding/default/show.qml b/src/branding/default/show.qml index 3bf133388..ad7c92783 100644 --- a/src/branding/default/show.qml +++ b/src/branding/default/show.qml @@ -24,6 +24,7 @@ Presentation id: presentation Timer { + id: advanceTimer interval: 5000 running: false repeat: true @@ -60,4 +61,6 @@ Presentation Slide { centeredText: "This is a third Slide element." } + + Component.onCompleted: advanceTimer.running = true } diff --git a/src/branding/fancy/show.qml b/src/branding/fancy/show.qml index e05a04b7e..399434420 100644 --- a/src/branding/fancy/show.qml +++ b/src/branding/fancy/show.qml @@ -93,4 +93,20 @@ Presentation } centeredText: qsTr("This is a fourth Slide element.") } + + Slide { + title: qsTr("Slide number five") + writeInText: qsTr("This is example branding for your GNU/Linux distribution. " + + "Long texts in the slideshow are translated and word-wrapped appropriately. " + + "Calamares is a distribution-independent installer framework. ") + } + + Slide { + title: qsTr("Slide number five") + content: [ + qsTr("Welcome to Fancy GNU/Linux."), + qsTr("This is a customizable QML slideshow."), + qsTr("This is a third Slide element.") + ] + } } From 2fee85907d175d3eba90b507cb9693cb03a4a71c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 9 Mar 2018 05:35:26 -0500 Subject: [PATCH 014/385] CMake: improve documentation in the Config file --- CalamaresConfig.cmake.in | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/CalamaresConfig.cmake.in b/CalamaresConfig.cmake.in index 5d1b0635f..6d32410c6 100644 --- a/CalamaresConfig.cmake.in +++ b/CalamaresConfig.cmake.in @@ -1,8 +1,16 @@ -# - Config file for the Calamares package +# Config file for the Calamares package +# # It defines the following variables # CALAMARES_INCLUDE_DIRS - include directories for Calamares # CALAMARES_LIBRARIES - libraries to link against -# CALAMARES_EXECUTABLE - the bar executable +# CALAMARES_USE_FILE - name of a convenience include +# CALAMARES_APPLICATION_NAME - human-readable application name +# +# Typical use is: +# +# find_package(Calamares REQUIRED) +# include("${CALAMARES_USE_FILE}") +# # Compute paths get_filename_component(CALAMARES_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) @@ -18,4 +26,7 @@ include("${CALAMARES_CMAKE_DIR}/CalamaresLibraryDepends.cmake") # These are IMPORTED targets created by CalamaresLibraryDepends.cmake set(CALAMARES_LIBRARIES calamares) + +# Convenience variables set(CALAMARES_USE_FILE "${CALAMARES_CMAKE_DIR}/CalamaresUse.cmake") +set(CALAMARES_APPLICATION_NAME "Calamares") From 345118aec995683904af11e343e4718a11a180ee Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 8 Mar 2018 13:09:53 -0500 Subject: [PATCH 015/385] CMake: improve branding support - Fix broken subdirectory call - Automatically process lang/ if there isn't a CMakeLists.txt, this was a bogus restriction - Add support macros for installing branding and translations --- .../CalamaresAddBrandingSubdirectory.cmake | 118 +++++++++++++----- 1 file changed, 87 insertions(+), 31 deletions(-) diff --git a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake index bc2f6f9c9..0c58a7257 100644 --- a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake +++ b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake @@ -1,43 +1,99 @@ +include( CMakeParseArguments) + include( CMakeColors ) -function( calamares_add_branding_subdirectory ) - set( SUBDIRECTORY ${ARGV0} ) +# Usage calamares_add_branding( NAME [SUBDIRECTORY ]) +# +# Adds a branding component to the build: +# - the component's top-level files are copied into the build-dir; +# CMakeLists.txt is excluded from the glob. +# - the component's top-level files are installed into the component branding dir +# +# The branding component lives in if given, otherwise the +# current source directory. The branding component is installed +# with the given , which is usually the name of the +# directory containing the component, and which must match the +# *componentName* in `branding.desc`. +function( calamares_add_branding ) + set( _CABT_SUBDIRECTORY "." ) + cmake_parse_arguments( _CABT "" "NAME;SUBDIRECTORY" "" ${ARGN} ) + if ( NOT _CABT_NAME ) + message( FATAL_ERROR "Branding component must have a NAME" ) + endif() - if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" ) - add_subdirectory( $SUBDIRECTORY ) - message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} branding component: ${BoldRed}${SUBDIRECTORY}${ColorReset}" ) + set( NAME ${_CABT_NAME} ) + set( SUBDIRECTORY ${_CABT_SUBDIRECTORY} ) - elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/branding.desc" ) - set( BRANDING_DIR share/calamares/branding ) - set( BRANDING_COMPONENT_DESTINATION ${BRANDING_DIR}/${SUBDIRECTORY} ) + set( BRANDING_DIR share/calamares/branding ) + set( BRANDING_COMPONENT_DESTINATION ${BRANDING_DIR}/${NAME} ) - if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang" ) - message( "-- ${BoldYellow}Warning:${ColorReset} branding component ${BoldRed}${SUBDIRECTORY}${ColorReset} has a translations subdirectory but no CMakeLists.txt." ) - message( "" ) - return() + # We glob all the files inside the subdirectory, and we make sure they are + # synced with the bindir structure and installed. + file( GLOB BRANDING_COMPONENT_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY} "${SUBDIRECTORY}/*" ) + foreach( BRANDING_COMPONENT_FILE ${BRANDING_COMPONENT_FILES} ) + if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} ) + configure_file( ${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} ${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} COPYONLY ) + + install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} + DESTINATION ${BRANDING_COMPONENT_DESTINATION} ) endif() + endforeach() - # We glob all the files inside the subdirectory, and we make sure they are - # synced with the bindir structure and installed. - file( GLOB BRANDING_COMPONENT_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY} "${SUBDIRECTORY}/*" ) - foreach( BRANDING_COMPONENT_FILE ${BRANDING_COMPONENT_FILES} ) - if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} ) - configure_file( ${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} ${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} COPYONLY ) - - install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} - DESTINATION ${BRANDING_COMPONENT_DESTINATION} ) - endif() - endforeach() - - message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} branding component: ${BoldRed}${SUBDIRECTORY}${ColorReset}" ) - if( NOT CMAKE_BUILD_TYPE STREQUAL "Release" ) - message( " ${Green}TYPE:${ColorReset} branding component" ) -# message( " ${Green}FILES:${ColorReset} ${BRANDING_COMPONENT_FILES}" ) - message( " ${Green}BRANDING_COMPONENT_DESTINATION:${ColorReset} ${BRANDING_COMPONENT_DESTINATION}" ) - message( "" ) + message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} branding component: ${BoldRed}${NAME}${ColorReset}" ) + if( NOT CMAKE_BUILD_TYPE STREQUAL "Release" ) + message( " ${Green}TYPE:${ColorReset} branding component" ) + message( " ${Green}BRANDING_COMPONENT_DESTINATION:${ColorReset} ${BRANDING_COMPONENT_DESTINATION}" ) + endif() +endfunction() + +# Usage calamares_add_branding_translations( NAME [SUBDIRECTORY ]) +# +# Adds the translations for a branding component to the build: +# - the component's lang/ directory is scanned for .ts files +# - the component's translations are installed into the component branding dir +# +# Translation files must be called calamares-_.ts . Optionally +# the lang/ dir is found in the given instead of the current source +# directory. +function( calamares_add_branding_translations ) + set( _CABT_SUBDIRECTORY "." ) + cmake_parse_arguments( _CABT "" "NAME;SUBDIRECTORY" "" ${ARGN} ) + if ( NOT _CABT_NAME ) + message( FATAL_ERROR "Branding component must have a NAME" ) + endif() + + set( NAME ${_CABT_NAME} ) + set( SUBDIRECTORY ${_CABT_SUBDIRECTORY} ) + + set( BRANDING_DIR share/calamares/branding ) + set( BRANDING_COMPONENT_DESTINATION ${BRANDING_DIR}/${NAME} ) + + file( GLOB BRANDING_TRANSLATION_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${SUBDIRECTORY}/lang/calamares-${NAME}_*.ts" ) + if ( BRANDING_TRANSLATION_FILES ) + qt5_add_translation( QM_FILES ${BRANDING_TRANSLATION_FILES} ) + add_custom_target( branding-translation-${NAME} ALL DEPENDS ${QM_FILES} ) + install( FILES ${QM_FILES} DESTINATION ${BRANDING_COMPONENT_DESTINATION}/lang/ ) + list( LENGTH BRANDING_TRANSLATION_FILES _branding_count ) + message( " ${Green}BRANDING_TRANSLATIONS:${ColorReset} ${_branding_count} language(s)" ) + endif() +endfunction() + +# Usage calamares_add_branding_subdirectory( ) +# +# Adds a branding component from a subdirectory: +# - if there is a CMakeLists.txt, use that +# - otherwise assume a "standard" setup with top-level files and a lang/ dir for translations +# +function( calamares_add_branding_subdirectory SUBDIRECTORY ) + if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" ) + add_subdirectory( ${SUBDIRECTORY} ) + elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/branding.desc" ) + calamares_add_branding( NAME ${SUBDIRECTORY} SUBDIRECTORY ${SUBDIRECTORY} ) + if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang" ) + calamares_add_branding_translations( NAME ${SUBDIRECTORY} SUBDIRECTORY ${SUBDIRECTORY} ) endif() else() message( "-- ${BoldYellow}Warning:${ColorReset} tried to add branding component subdirectory ${BoldRed}${SUBDIRECTORY}${ColorReset} which has no branding.desc." ) - message( "" ) endif() + message( "" ) endfunction() From 97eff2838373ae89a9cd98d7d7d85578cdcd6e3d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 6 Mar 2018 05:18:30 -0500 Subject: [PATCH 016/385] QML: Remove binding for quit key in presentation --- src/qml/calamares/slideshow/Presentation.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/qml/calamares/slideshow/Presentation.qml b/src/qml/calamares/slideshow/Presentation.qml index da5048035..4843e15a6 100644 --- a/src/qml/calamares/slideshow/Presentation.qml +++ b/src/qml/calamares/slideshow/Presentation.qml @@ -7,6 +7,7 @@ * - drop navigation through entering a slide number * (this and the 'c' key make sense in a *presentation* * slideshow, not in a passive slideshow like Calamares) + * - remove quit key * * SPDX-License-Identifier: LGPL-2.1 * License-Filename: LICENSES/LGPLv2.1-Presentation @@ -62,7 +63,7 @@ Item { property variant slides: [] property int currentSlide: 0 - + property bool loopSlides: true property bool showNotes: false; @@ -146,7 +147,6 @@ Item { // standard shortcuts Shortcut { sequence: StandardKey.MoveToNextPage; onActivated: goToNextSlide() } Shortcut { sequence: StandardKey.MoveToPreviousPage; onActivated: goToPreviousSlide() } - Shortcut { sequence: StandardKey.Quit; onActivated: Qt.quit() } MouseArea { id: mouseArea From c1bb5e708b0e007931b35e0f82736f1977777426 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 8 Mar 2018 08:55:08 -0500 Subject: [PATCH 017/385] QML: apply translation to the slide counter --- src/qml/calamares/slideshow/SlideCounter.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/qml/calamares/slideshow/SlideCounter.qml b/src/qml/calamares/slideshow/SlideCounter.qml index 7d8482b8e..e59476f5c 100644 --- a/src/qml/calamares/slideshow/SlideCounter.qml +++ b/src/qml/calamares/slideshow/SlideCounter.qml @@ -32,6 +32,7 @@ Rectangle { Text { id: slideCounterText anchors.centerIn: parent - text: ( parent.parent.currentSlide + 1 ) + " / " + parent.parent.slides.length + //: slide counter, %1 of %2 (numeric) + text: qsTr("%L1 / %L2").arg(parent.parent.currentSlide + 1).arg(parent.parent.slides.length) } } From f8bc195fb4807059211a05d047be033517d52cd4 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 8 Mar 2018 08:14:04 -0500 Subject: [PATCH 018/385] [libcalamaresui] Improve warning when branding has no translation --- src/libcalamaresui/Branding.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcalamaresui/Branding.cpp b/src/libcalamaresui/Branding.cpp index 5677f212e..584d85c0b 100644 --- a/src/libcalamaresui/Branding.cpp +++ b/src/libcalamaresui/Branding.cpp @@ -184,7 +184,7 @@ Branding::Branding( const QString& brandingFilePath, QDir translationsDir( componentDir.filePath( "lang" ) ); if ( !translationsDir.exists() ) - cWarning() << "the selected branding component does not ship translations."; + cWarning() << "the branding component" << componentDir.absolutePath() << "does not ship translations."; m_translationsPathPrefix = translationsDir.absolutePath(); m_translationsPathPrefix.append( QString( "%1calamares-%2" ) .arg( QDir::separator() ) From 75df6a4f88d7266ac1ce6776203de404a0c3dd2d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 8 Mar 2018 08:35:24 -0500 Subject: [PATCH 019/385] Branding: add example translations to fancy/ --- src/branding/fancy/lang/calamares-fancy_en.ts | 42 +++++++++++++++++++ src/branding/fancy/lang/calamares-fancy_nl.ts | 42 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 src/branding/fancy/lang/calamares-fancy_en.ts create mode 100644 src/branding/fancy/lang/calamares-fancy_nl.ts diff --git a/src/branding/fancy/lang/calamares-fancy_en.ts b/src/branding/fancy/lang/calamares-fancy_en.ts new file mode 100644 index 000000000..945bfb532 --- /dev/null +++ b/src/branding/fancy/lang/calamares-fancy_en.ts @@ -0,0 +1,42 @@ + + + + + show + + + + This is a customizable QML slideshow. + + + + + + Welcome to Fancy GNU/Linux. + + + + + + This is example branding for your GNU/Linux distribution. Long texts in the slideshow are translated and word-wrapped appropriately. Calamares is a distribution-independent installer framework. + + + + + + This is a third Slide element. + + + + + This is a fourth Slide element. + + + + + + Slide number five + + + + diff --git a/src/branding/fancy/lang/calamares-fancy_nl.ts b/src/branding/fancy/lang/calamares-fancy_nl.ts new file mode 100644 index 000000000..088f9c0f8 --- /dev/null +++ b/src/branding/fancy/lang/calamares-fancy_nl.ts @@ -0,0 +1,42 @@ + + + + + show + + + + This is a customizable QML slideshow. + Dit is een zelf-aan-te-passen QML presentatie. + + + + + Welcome to Fancy GNU/Linux. + Welkom bij Fancy GNU/Linux. + + + + + This is example branding for your GNU/Linux distribution. Long texts in the slideshow are translated and word-wrapped appropriately. Calamares is a distribution-independent installer framework. + Dit is voorbeeld merk-materiaal voor uw GNU/Linux distributie. Lange teksten in de presentatie kunnen automatisch worden ge-layout. Calamares is een distributie-onafhankelijke installatie raamwerk. + + + + + This is a third Slide element. + Dit is de derde slide. + + + + This is a fourth Slide element. + + + + + + Slide number five + Slide nummer vijf + + + From e4cca9b83046c75297c6ae678292f6b7b221443c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 8 Mar 2018 13:10:01 -0500 Subject: [PATCH 020/385] Branding: document how to translate branding --- src/branding/README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/branding/README.md b/src/branding/README.md index 5514e77df..acf245b11 100644 --- a/src/branding/README.md +++ b/src/branding/README.md @@ -7,11 +7,14 @@ file, containing brand-specific strings in a key-value structure, plus brand-specific images or QML. Such a subdirectory, when placed here, is automatically picked up by CMake and made available to Calamares. + +## Translations + QML files in a branding component can be translated. Translations should be placed in a subdirectory `lang/` of the branding component directory. Qt translation files are supported (`.ts` sources which get compiled into `.qm`). Inside the `lang` subdirectory all translation files must be named -according to the scheme `calamares-_.qm`. +according to the scheme `calamares-_.ts`. Text in your `show.qml` (or whatever *slideshow* is set to in the descriptor file) should be enclosed in this form for translations @@ -30,14 +33,11 @@ There are two examples of branding content: slides of text and a single image. No translations are provided. - `fancy/` uses translations and offers navigation arrows. These are provided by the standard Calamares QML classes. - - `samegame/` is a similarly simple branding setup for Generic Linux, - but instead of a slideshow, it lets the user play Same Game (clicking - colored balls) during the installation. The game is taken from the - QML examples provided by the Qt Company. Since the slideshow can be **any** QML, it is limited only by your designers imagination and your QML experience. For straightforward presentations, -see the documentation below. +see the documentation below. There are more examples in the *calamares-branding* +repository. ## Presentation @@ -63,7 +63,7 @@ After the *id*, set properties of the presentation as a whole. These include: true) enable different ways to navigate the slideshow. - *titleColor*, *textColor* change the look of the presentation. - *fontFamily*, *codeFontFamily* change the look of text in the presentation. - + After setting properties, you can add elements to the presentation. Generally, you will add a few presentation-level elements first, then slides. @@ -73,13 +73,13 @@ then slides. kinds of navigation when visible navigation is used. - To indicate where the user is, add an element of class *SlideCounter*. This indicates in "n / total" form where the user is in the slideshow. - - To automatically advance the presentation (for a fully passive slideshow), + - To automatically advance the presentation (for a fully passive slideshow), add a timer that calls the `goToNextSlide()` function of the presentation. - See the `default/` example -- remember to start the timer when the + See the `default/` example -- remember to start the timer when the presentation is completely loaded. After setting the presentation elements, add one or more Slide elements. -The presentation framework will make a slideshow out of the Slide +The presentation framework will make a slideshow out of the Slide elements, displaying only one at a time. Each slide is an element in itself, so you can put whatever visual elements you like in the slide. They have standard properties for a boring "static text" slideshow, though: @@ -88,7 +88,7 @@ standard properties for a boring "static text" slideshow, though: - *writeInText* is displayed by "writing it in" to the slide, one letter at a time. - *content* is a list of things which are displayed as a bulleted list. - + The presentation classes can be used to produce a fairly dry slideshow for the installation process; it is recommended to experiment with the visual effects and classes available in QtQuick. From fdccff83c3c2a54d69a6a9bc994e8b3d4664ec6c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 8 Mar 2018 08:59:49 -0500 Subject: [PATCH 021/385] i18n: when extracting strings, skip branding --- ci/txpush.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ci/txpush.sh b/ci/txpush.sh index fe6d7170f..cf1c3b883 100755 --- a/ci/txpush.sh +++ b/ci/txpush.sh @@ -33,7 +33,10 @@ fi # sources, then push to Transifex export QT_SELECT=5 -lupdate src/ -ts -no-obsolete lang/calamares_en.ts +# Don't pull branding translations in, +# those are done separately. +_srcdirs="src/calamares src/libcalamares src/libcalamaresui src/modules src/qml" +lupdate $_srcdirs -ts -no-obsolete lang/calamares_en.ts tx push --source --no-interactive -r calamares.calamares-master tx push --source --no-interactive -r calamares.fdo From 36106348830a18e64d849d9826c6e6aade79c8ec Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 9 Mar 2018 08:39:05 -0500 Subject: [PATCH 022/385] CMake: Calamares uses linguist-tools for translation The convenience include file CalamaresUse should DTRT and set up all the bits needed to write Calamares branding components and modules. So add the bits for i18n. --- CalamaresUse.cmake.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CalamaresUse.cmake.in b/CalamaresUse.cmake.in index 474704ec1..00f3c968d 100644 --- a/CalamaresUse.cmake.in +++ b/CalamaresUse.cmake.in @@ -20,7 +20,7 @@ if( NOT CALAMARES_CMAKE_DIR ) endif() set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CALAMARES_CMAKE_DIR} ) -find_package( Qt5 @QT_VERSION@ CONFIG REQUIRED Core Widgets ) +find_package( Qt5 @QT_VERSION@ CONFIG REQUIRED Core Widgets LinguistTools ) include( CalamaresAddLibrary ) include( CalamaresAddModuleSubdirectory ) From 25b9663a40b50d65f8a40667d70c37ef50c54864 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 9 Mar 2018 08:44:20 -0500 Subject: [PATCH 023/385] Branding: remove fancy/ and samegame/ examples The examples of branding have moved to the calamares-branding repo. --- src/branding/fancy/branding.desc | 32 ---- src/branding/fancy/go-next.svgz | Bin 5473 -> 0 bytes src/branding/fancy/go-previous.svgz | Bin 5690 -> 0 bytes src/branding/fancy/lang/calamares-fancy_en.ts | 42 ----- src/branding/fancy/lang/calamares-fancy_nl.ts | 42 ----- src/branding/fancy/languages.png | Bin 86002 -> 0 bytes src/branding/fancy/show.qml | 112 ----------- src/branding/fancy/squid.png | Bin 8313 -> 0 bytes src/branding/fancy/squid2.png | Bin 8403 -> 0 bytes src/branding/fancy/squid3.png | Bin 8300 -> 0 bytes src/branding/fancy/squid4.png | Bin 8270 -> 0 bytes src/branding/samegame/Block.qml | 73 -------- src/branding/samegame/Button.qml | 91 --------- src/branding/samegame/Dialog.qml | 81 -------- src/branding/samegame/background.jpg | Bin 36473 -> 0 bytes src/branding/samegame/blueStar.png | Bin 149 -> 0 bytes src/branding/samegame/blueStone.png | Bin 3054 -> 0 bytes src/branding/samegame/branding.desc | 76 -------- src/branding/samegame/greenStar.png | Bin 149 -> 0 bytes src/branding/samegame/greenStone.png | Bin 2932 -> 0 bytes src/branding/samegame/languages.png | Bin 86002 -> 0 bytes src/branding/samegame/redStar.png | Bin 148 -> 0 bytes src/branding/samegame/redStone.png | Bin 2902 -> 0 bytes src/branding/samegame/samegame.js | 174 ------------------ src/branding/samegame/samegame.qml | 113 ------------ src/branding/samegame/squidball.png | Bin 5800 -> 0 bytes src/branding/samegame/star.png | Bin 262 -> 0 bytes src/branding/samegame/yellowStone.png | Bin 3056 -> 0 bytes 28 files changed, 836 deletions(-) delete mode 100644 src/branding/fancy/branding.desc delete mode 100644 src/branding/fancy/go-next.svgz delete mode 100644 src/branding/fancy/go-previous.svgz delete mode 100644 src/branding/fancy/lang/calamares-fancy_en.ts delete mode 100644 src/branding/fancy/lang/calamares-fancy_nl.ts delete mode 100644 src/branding/fancy/languages.png delete mode 100644 src/branding/fancy/show.qml delete mode 100644 src/branding/fancy/squid.png delete mode 100644 src/branding/fancy/squid2.png delete mode 100644 src/branding/fancy/squid3.png delete mode 100644 src/branding/fancy/squid4.png delete mode 100644 src/branding/samegame/Block.qml delete mode 100644 src/branding/samegame/Button.qml delete mode 100644 src/branding/samegame/Dialog.qml delete mode 100644 src/branding/samegame/background.jpg delete mode 100644 src/branding/samegame/blueStar.png delete mode 100644 src/branding/samegame/blueStone.png delete mode 100644 src/branding/samegame/branding.desc delete mode 100644 src/branding/samegame/greenStar.png delete mode 100644 src/branding/samegame/greenStone.png delete mode 100644 src/branding/samegame/languages.png delete mode 100644 src/branding/samegame/redStar.png delete mode 100644 src/branding/samegame/redStone.png delete mode 100644 src/branding/samegame/samegame.js delete mode 100644 src/branding/samegame/samegame.qml delete mode 100644 src/branding/samegame/squidball.png delete mode 100644 src/branding/samegame/star.png delete mode 100644 src/branding/samegame/yellowStone.png diff --git a/src/branding/fancy/branding.desc b/src/branding/fancy/branding.desc deleted file mode 100644 index 8aae1b0b7..000000000 --- a/src/branding/fancy/branding.desc +++ /dev/null @@ -1,32 +0,0 @@ ---- -componentName: fancy - -welcomeStyleCalamares: false - -strings: - productName: Fancy GNU/Linux - shortProductName: Fancy - version: 2018.3 LTS - shortVersion: 2018.3 - versionedName: Fancy GNU/Linux 2018.3 LTS "Terrible Tubas" - shortVersionedName: Fancy 2018.3 - bootloaderEntryName: Fancy - productUrl: https://calamares.io/ - supportUrl: https://github.com/calamares/calamares/issues - knownIssuesUrl: https://calamares.io/about/ - releaseNotesUrl: https://calamares.io/about/ - -welcomeExpandingLogo: true - -images: - productLogo: "squid.png" - productIcon: "squid.png" - productWelcome: "languages.png" - -slideshow: "show.qml" - -style: - sidebarBackground: "#392F34" - sidebarText: "#eFFFFF" - sidebarTextSelect: "#392F34" - sidebarTextHighlight: "#c35400" diff --git a/src/branding/fancy/go-next.svgz b/src/branding/fancy/go-next.svgz deleted file mode 100644 index c6dc7d0f4cb9def6cce592822ea664353275938d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5473 zcmV-n6`txJiwFP!000000PS6Ea~rvl{+?gK(|(C6B-HO{XxB;Qyp>d{oXXWDsk?6} zS{&KBNTQ0Q*4F;|1BNd{h%_n6k`-?}mWqQ1jhBAV-M~P^_=n$pyt?fD)J&!q*m$b_4w#_zx~w@|1lW!UQe3gtQqw_ zT+H70{&fA%>Dln6>HYfsY<6>ca`NHBhj6g~!+7%U*Z#zr>CQ{ zS4Ru^o7>4{D>phjX)c?q=6W_g!GI@6o%mTNepVX4_^CM?UtNu_r)|mW>33_wlhJvW z?mF{4YI^wdUrh=ejL*_dd7b3Lq)tCxW+pz_nKpO5_00ZF z{#_MV0%1D7ot!o2xnvWro7u^afBSKjIe;*ljn=AJl3%r3jmY)zs+ryl&zkAU5-;WR zfR1MGvoVmj$@k60yZ5s$eKC4AresS64 z4sTSJZ_cJC>sl=(SQL+XC!g0E zY-HA5OSG(U;_P*>uT`?P_2ioL*`^VPwF(5l9O8I_(5EP?pJg%G$BUN4( zZIwK~mwjGm7k@0H|AaKvQN;4Ki!eg|7bMI*xMSpsHY5xpg#0P?I?bPoJtl))^EU%_ z)nL|xLliRh6?&IZ)WB>i(#cYm^^iC*r%pDbXdx;@J=Bb+HS`AP^MbuIF=klBCvA(mh;-oRg3$D(78d_Snr2=gl97 zx6|px@cKV5Z%cRgbhwIGqaT}}E{3z^lbD#QrTf!v-2$_(ulD9$dPZwXy3?8xKgFom z7AYZWZH*Ers{29K_?%8=0D2Ls6|}sz?C{9J!jW%tGllbh77LWzVV+IwI~?|+)RBE*>M+@yyNWvFxwKZqDFwosW@=||A`y)*N*u$#$0Ye;%RXg!GKPy? zs+&P9cBzCUQOd1T6c)+k3xWY+AB}@@674GlP}QXMM#%szn7Mept?L$?ELpYw+$MZp z30DiyJ#-f#;UH0>QB|K}&_pR=)wp{AA%|3N>_|v430l3VjzO6@;(jyR&$T2&P%Eqo zB&SrUj%=W5!McN4c__mW$(*(CF?fog{=fzDF3Ukq4>3SW36AzzayKMrmlrqxHJrU) zZ+M9@ayOJqaL>m3O%~bM-OZ0$m#4Rr%U^%DsnhZIC3o!)DAUl(efm^G8ji~MoADn1%c-w!8~;a$~QLEEkB zEE!N2aM#1Nhs;dYpL>H80~0#-DTX8*wfDL=K!`yNkya>X5Mzi5f%}ZX(J@*ENrS2y z^*IG~ibib(%prp=eTf-PDRBW~5D~Y&dLSah1&FD{So08L5=gx_>u@TLNg!D2?O+55 z9y$8Fu_S;6lz`+^KuW>gIdx#E*Ca$$V(s8kuR(~wlGfpYmhO5=x@xQfyN4`If?oT)?BRwW7f=#Xh;}SZa#%*g3(IojUGv@?UjV2loe17n%q1?6cjZV>Kg`U zW~UYujfthO0ttXxvXCgCMviOn>jeyew5p=Dx)dyd+p?{g3Mj#25~;g|2muhl7YcaN z3<3u;L|duKTUq(}-u}zYJcz^&?!Gm0Jsvf)yPIa3BDI#}4x*EqS zN_Th_rZIZp6d|o(Eg%KRiP(i{v>39i{<=T9IQ5Cq({znm)C=RPxulC0di8*>R634@3c_l*K6C$P_- zKuF*@9zg2C>(A?h5?PH1>wQpzAV6SRZ?#B(Xeeu4#7g!+?Kd|r{XyEBMR~OLhjp@W zlC5+%i*`U*d6M~UN;j5c8aM$$?l#=y}mdZkv(qAm%%QVUT- zC%bo34+1e0QR-tzsE`DYpTJ7^L9CgGJqc@KfyiA`MVqFKsza=43!Wkq#)`I1_Mx;H zv1QtxhA#Y~bU6i}w%X)qhpYYkvBZNhi`V2}3Wv$m6bWb7VkPJa8eFy^r zrX-!{9EBtqeeC+K4z7ZQBI-jhOswLcA7o7;Jv7>Ud zONX}xPsfrm?q$iC4`(R?M}SALWUPm?^!8jEfahaLct1;`kFurF=oaK1F1pW!(@@_eb8`F@rdeXHdL-OZDFY~Jd=QP~|z&uFOr0PS$Ab`hR#RHE#+ z-T0W<0?@=CW4rMYvjyTXJzpGT;<%3`CQgU5G}6W%Gg~kT{;SOvloIS?Da+6!Sc>J} z;Ve-~@-!^r4weo-cvPPY!e=_0r>3M%d(H*nma};;b_k8|$qp88o*Cn))t7Id_#E4d zezTScU*em!4D@2(tbNI^iW5D_8PexE)%>DoTu8rti~gB?Js!aDQyzXK)&SAbs>6?8 z;vDA-o^E5J^lx}ze18mN`sV1*`_>Saum7zfU-;ED#P;>Qn&w5L8~cHT?LTAt3q0e@ zB=Ac<;0?4}d3s7CLH729@$(#pe&K0Rst82bW3gd6|3ubIU)Rlvk#7x12y;t?^aHYh}@LkjHJ7v1g+iQ{Wc03t1lVz5*SCzHcnp(W~wjP~Q>nb0% z=TF}cN8=B9`Ex(>=kfTeluC>1etwzoSS%za){V^Epad~tPjWwVG(Nj6Z)G0b&WH8p z<3{n@$)pHe4)2<*cl&`wsCuVxDObIBr^AX-T#Tkg_v?4Lqp}UZyN@?lH;b%}kLmmI zhn!b-%!ZfK=6+90*5GD*aa|OdO>Ud@Vz;@<4zA0UyusVIZwo*gZ3R|z-$(Ciw4!?DHk;nk z;#bXVI2z7|o$D+SGQ?%?C!_Pz|Nik0t3A}Sv(x{{?_Tb z&=}5sdvTQ=qP%hYH~Gca*@>4KwQwOM168$?X8uO)Z7(6uKUWu}(8*tC`4GvUN+au= z)+dXOE;nC0J#u2HXq$R>Zw&JrpqtBAM{h3jORz7;J=`?T@$Jpkc+@OhXqi7+qziT3 ziL)K&&B__G?y9Vy6s5&pU3bz}MkCBo9IN`S;s`-mExlrh&ODI^8s40;gN z*b`~*om^<1;9NN0xCbbgv?_GTTuTauG1&q$^-%SOoPg!_ggp+C2WW@k+SO z1L|#Za(mgFHa|7lP)46V5aq!LIl8CC<@$^Vqv{h-Ph;M!OyA7=D>v_@SwJ8ab2Rz> zlL!8kmmCVs!3B2>$@*09&4s)FF zD+=|Su`GfhCXb&EW}Nt6ZhGArn;U;kR6UjC4G;MV`ZD#0fO z?iK=_3BG&iY-)7SJJ_CO(DyGKAh8iq%)oQP+k`86YEzx)n>L+NAW9f1r-@`EtrTJe=Y{-6nm8m%#8jFt zX$X;>wX`O|B_fvzhg8UUla#|=GDEmAVFWm6%CIl}xOwt!m!Flw+kI+VKqewPzNb)t z7$c*3TMyqQBK^E&ti8zdC4^+{(|`q3Bb`6ekpKY|kRfuEo_HT)5KidcCelLuO-af8 zk#6;Ax~hyYBu)aUZx+}<6?^1Cv8gm64fE*bqNpU)$9zLEQCk#JbSn^pMVLcI zS`bOpYC6Y2ynqTsgmXxQS_qkSy`T~cFAI{#7K{j_rE4XTkTK2^sbf@PNcqARq!=wO zB{(|LG9iV~xknOIN#PKM(C5jyhtyy$Ucj~w$rrs$MXN-uvqX}ZQKcXZIv+|$5$jy9 zD8=(O5mF$ZyC}$luB0IvM(kTL8}UqZTry}9#8k5G28&2w0bJW5Dq@DFRK$!EnU=~} zk=yMq)+8QFqsy>hF_|wrB4E^_5f?*V&`1`sl?C=>ZBPM?oC>C33F3O7;k2N$#bk+E zoD&#RNNqDLOQWoV(sJmP1IMJT%LtND%PHF;-l9fj?I|uw+HxFUx0t3B=OBP_3&lut zIZ|wq${P#7M9OoJF~$NRJ9!HMvBhnUT;7sdVmdE9<;^l#%zv4bDrs6uFOwmc(n_Q? z#ZM-YHOl Xw6srdKjg2a<&XadOC(EQW`h6#G`fNk diff --git a/src/branding/fancy/go-previous.svgz b/src/branding/fancy/go-previous.svgz deleted file mode 100644 index 971b1d98975babba9d6a4ec572fd81c4021cdb56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5690 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 - - - - show - - - - This is a customizable QML slideshow. - - - - - - Welcome to Fancy GNU/Linux. - - - - - - This is example branding for your GNU/Linux distribution. Long texts in the slideshow are translated and word-wrapped appropriately. Calamares is a distribution-independent installer framework. - - - - - - This is a third Slide element. - - - - - This is a fourth Slide element. - - - - - - Slide number five - - - - diff --git a/src/branding/fancy/lang/calamares-fancy_nl.ts b/src/branding/fancy/lang/calamares-fancy_nl.ts deleted file mode 100644 index 088f9c0f8..000000000 --- a/src/branding/fancy/lang/calamares-fancy_nl.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - show - - - - This is a customizable QML slideshow. - Dit is een zelf-aan-te-passen QML presentatie. - - - - - Welcome to Fancy GNU/Linux. - Welkom bij Fancy GNU/Linux. - - - - - This is example branding for your GNU/Linux distribution. Long texts in the slideshow are translated and word-wrapped appropriately. Calamares is a distribution-independent installer framework. - Dit is voorbeeld merk-materiaal voor uw GNU/Linux distributie. Lange teksten in de presentatie kunnen automatisch worden ge-layout. Calamares is een distributie-onafhankelijke installatie raamwerk. - - - - - This is a third Slide element. - Dit is de derde slide. - - - - This is a fourth Slide element. - - - - - - Slide number five - Slide nummer vijf - - - diff --git a/src/branding/fancy/languages.png b/src/branding/fancy/languages.png deleted file mode 100644 index 53316526bc8039e4e05d2860ae5767ccbde9eb4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86002 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�==0;j%F=Kq0P>U~X0$-7~AA^Z= z+a*N*`&^{e~`k2;E=>+k2~oi>DYz9mXO^Wm*!9>B5#JZ*F0Ggz4>VU z3x6Dv%XT!XzkC(DndqFCglqX2(#qabHLRxC0Z{^7b8XtU~yj}3Mv3h~Ed*LwN z=@H3R6U zCeF6W&Eu77Vrffut>>^ccJ3|FRS9F_v z8Jd30bX6t8G-%&OC8>0qyYW*t6Ti|;w$J#ULfu^5t)?m$VvOboj)=m=eNV3I6KVl6 zm0j{Z3&i?B~#oW3Jxydgt5B{n#ntUHU zQMexpP1{P{HeHHLq7JSH{`$$K_|)1q)@u@Pb^Wn?nWw&-hc{tN5eEs@^2h41%}>LD zB927avo|Ftof>__pWiwJqI~$>P=z&Wx~n3uTMoj{c3O;LMQGVx-MEyBAG>=+%vw1p z{)(P@7}ae*nWbCR{Ya6$mi>enGQ`Aj#G%sfJ%!x;wUCd|j6kx>y6?vf^R2GF+m-=p zY!2lC3y1VHcyVTrA&lJ;{Jn%j>X#@e%Knod1!wXZa=$bcNwW+A*Z_+!(T;qzw&%+B zW4>4Y>J*dHCR^)a+CX|U+?!h_rxaJsWz!Q;7`6VZhnU^c=2a-4#X|(Mv)2R<$NqfY z_j#ty)_XZm%SDewed+vGy6osxf(p4$yq#YPpg&f-d2m42xl_@Hj)5GQIkTb4t3RpF=;3o4fG!aF#i>$!XcBfyI^STTNaaLRz^cO<+|{(D%q_&+}b z)BFh>CK5+m>9wyg2okFF4O7IvG!VMG%mFLr;>`MO`ltjG#Uh1qUM)rwL z%0BG+l%)YRZp~V+<7U_m@m{T8(OKy%=%t&rHFRpO`nu12`^>kxqS2fk69;KkRvR!R zr0=nr>I(DP?z)RfpCOwgRk=y^4|_xyxo_IwfzFD@^#0Rm?sZ02v6E;1u@_T(SwRcw zh+OH3oA1j%HdGXp7U!EZ+fuLeY|kfMeF??7-O&9EWkLg!cY#i&ur6<^AH`p^?l0dg z34$`HcIOXCU~_D3M@U6vOsM>YhGOgI9TpJFQsl+8mTCB*l`tMV7racN=uyRg<%Doq zUdy=mwM{Sy274%ad;Jk2Z{>75nQ4+-`fM4#IQ~3>XQ-JS1%Dk7p1-}Msg(%P3G)>x z_m1FlJ~}B`~&?|LA=554tZAEZGUcLs*YV zG1w5X4QW&+6N!(ed~)Sg2xABDfw46`d}@gg`(PX2tF3jcx#B#PbAPeOmUEsH+U|m0 zZvnatWFZVmT^wkIqYL5eKfEVtqaR zqegF21Br`!$}VXXurZUEaa&><3n+-fU;=wd3v-C`Ii()qwOx#mz26BkvEnR=cfYB= zB$Qx|&R^s^=tN=EtZdkcGjcT+9M&1>z}QyxODG3#IT`Kzxv%m+r%o-@xF$%xU5bsH}?8oO^^tJ+MzG|p?rH2aZB z_>b)o?SBu~$2 zT_($Xk=d32A3v6_mxZ5Gnq{c0s3ZytY*()bUk|4vELg%oH)`kHd2u*Y zPtCjA{7GF7K+pJmu?%CA+VbeSiod~eq6LG=`p(c><;bk4PDW3-pb%?CR>nY0Y;0%) z$^v?|Y3FsPABBfFDCC8-ApkItak1R>%WP|hz=_teD z3e^goTJ-<$Zbamkaz1osl~HA+s%4>R3y$V+iX~DVtFto3v4MeSr&ZvS5h=x z3;+v0+;W2^n~Rb-vcazB6x!3oJC}tBwR^9B^P!R3YFmXF88BU>fBzE&(JeWYSp}1bLyEuPriW}m!(!j~oZ+c<( zTs+`po`M@DZczsDI|>Fm0^TsW^UMz4i<^n_`%H~v`*$*wY4xFMLL0+^xwf38A-*s5 z*sYWe`3H2zquKThKK=^raGuC>x$~1Bp?LNofbTH6e#FaqliG*R(@G6_NpQ#GHC{wY<4%gKsXI4U`n z)3DZ*;h!!YMDuI9%HT8m_iapI8hT3()lmN2v~#@lGuX3ns+Vk#(ffDy%kRdOp>H*^ z4NC;gflF&uUT8xR3Veua7-N)`1=XZ^LP-9~3Lrtpbap(_{~C_s|NZQ(aAmI5!rQfL zcssH1VgD{fnjw)`i5(U%M2{4fdBA8^hLl_lf&1Y20RkX8TB{-5+8atq||H4Tm({qok#66%bg+59FZ7W{;@kzdI|h$2_5SyMcdOA?qZ4hEuH9tR_* zk5!d9Ld)ZmSUu5gB4j-5OE&{0>am>NMqGoNMqP!B5cXjDcaV@hl`+)TC^II$&Td+h zv(xPSczfcVY}#Iix}x)v;CW0Bd_#mST^c)5;E~PZ3&Tu2x)GjQiLoc5|ofub9X%oZrqM2AP_mJgW_X zBY9wUBO3a2ALDlps)oS}20&9n2|qrfIr4rvMsDl~fQlv>uuWdGYrG=Ve~#c zIg&{b1At>>zCwUpcc0x1(*0cC`toKI$(H_F8xedWyn-{!J`7by`=q_-#bYMh>(Mk` z`qBVhhC5=#9#lcK$5zwt)K5#1>)&6Z>)Fl)VV6{&h)0ZM$};cwpm@E#265uXzNEj~ z@jD;rLU@{Q9RJwcY`yrZ9j)-1}997=~}R#2nP#-PU+ zMh%e%f`{P%AV7NHD~2MMq**j}2w2o9`Wg~p)hP`NtNEawNPt1rV?Fo<=Y+(&^R^w0 zw!IG)xhu9ru+(QmGDsMcyLXRx?V^C6JO(|*p*1E3B^nvC9{@}+Rk8Hui2Sflv(#%W1B5bL^kAu80Gfp4y z-BSGZp7vUG1ASpE4C0@9lq_08~8WgYCOXwirb z#uHJT-vn2$&$8nclxdvGEuv4LfUlJVnihLplA-o~S3K{n*7_R157MP&PrwGId?F*wJsvegUj_V#lHawO12a!J94!~vw5G99-=9^q@sI|6r4t$C1sNS$la#zR_F3l@G&OA!>>u3h`of7l-<|Wn zo@6X^L?pq11s#1TsVQa8PoMgfU%N4*L54VzM^<1*D-|jG=TT=J1gS<-cend1-&)I> zE^Kg#6E_C?3%{d74YuF%Y(s@cxD;BUbEuUJ`;XcJf=}MB5rU6jA}P8a_mVQCC^o}(uWpu zGoL6#BZL+%BZwR>NmnE&2+Dj6$`QA1D$)_w=oez}F!Esn2EfGW<89XSo4NYEK!N0} z0Jj8Ht_ULWxf#LOw}sE2`XRa}Ofey!g|wHL`D`M%G_+{&t6g$YK%ZhC z3e=(O?9)26kA{G9NY2J%w*lkIa3d@b;_W1N*N@W4s005id;GQ4rf-1$@+a<4l0WK_7-z4u2HT0v2Q;RPUTMy7 zz!ym1&%+Qc6>GizO#8t}XJ^fLuF$JkTeHi#$a=G!eX}LGmnO&4Nes|ATPd)b9`xzt z)&ZyG!E&VFZ55}v0uV@qp1);q9_)YHXMHt%0^6W6p8M!~`rGZe1V6I;ml(_6Sw(5I z?+D4(O^u@%f)-yQAH{eB@4;CQPpT=c8Rdfdcb9fj!Kgz$2gWqbt(%?IQo-5Tb6Yf3 z;Y4Eq&_}FKi;|kyx{tiONxO<6GB)HJ|J$EdJnXvenHtlF#fGuG7`AAqu==kqf&_!k z{?pl+y`HmGVw~Q2xe@=j!_##1l-w8DW>kk@CE2A=QMT)L1n`tq-fKCC)K2to&mJDz zFVSYyk9BcB_TiB)DucQH^le-^D~e4?U9&5j8wc8n>B)1Eeafl>0i!!N#H*siu!2#( z29&c_eS*fPPHmqJUHR^)O)wTv@=rJ#xy?MZ|BXX{LfDeEJPb4JExdbOR@q*d7)xt!4 zdWD9vpK56dLq-wlUT{m@z3$o(tCMpa63O<-fbq|WNf?sUjxg2SpVseMzC%u|DzuMdoso!!z! zIPX$qMaN5^^_enu*{AoJhQ9^f1>p?FpPZRJ8jMWGS89l3vl6G>>Kl7hn@Iq;C&3s1HDT^$V+fzU!N+`6?>&5?q0m+1=V2B$vCZ|ImG$CV)3 zzvH~I)TVLuz#F24a4}K&DGQ_IA!V^xG=!~3NvJ8}Gfj|t;S~mQ^d$o zuYq+o79&3w5m3nKQ`9DNRC%3*mQ{IB3O!<>UKD2lr%r1VqA|m z;Xjb)#_INRpp~LXM@uFkj`wDG7pX64rtBGUo6^mD&6XSecYQ=G-S!ocal11VM@a^a zE;|o8YwSF+VezMf%1sSTNl9cgeJCPs3%A8>XE{URoOkQ^u6fGYstcVK|Cz}ZjHB&( zO~o(?H`!_3$A@?glGJR3NdDzruY2$$ZR}z3sx0Z=OWBzx!Nit2b8&MKnS-upS*@=4 z2VeurdA@semp+7OV9w&s&AG_0fIKeZUc>#Q3^QIpU5j;lTc>W zmc1{|7E{NmxV4H_Z}AQ963IoLweour!|4VZuL~x8^Yau-vq!|KXy`I5Y;4jUY|4-S zWb%rkka^sy^k%DO|0I!sP|^!`c5E)3TsqGO0AEmkGfTA`{y2_3YrC}s$IjVi8t6aG z+1h*)8rtyf&A|;#SmRYz>#^UsA|qU{&!i&~kCboH(5T{6p~3DoKmVYd@qE*O0#P`h zMJOiTO3UAjI;H|y7^PNob;|jy|H34*vYplpzunDN$5X`xkP>Op9d_x|X)3beNgow~ zx)n*vP+1QYTjn*3Tz_`4brwu%_+2CRudc4b5%h_WipITh!PhMFMC~QdBhycfjTdwa zzH>c3-O?YE=ial=sdu2n)A5zD=pD4|_(#jg6D59i8F$6AbTOJ8?yXBCy^k`pUfkXc z)p|aw(dx0!bSR;L+O!c9MVHSJJa+BrY)`>U4?cMtOa%M10GR_3okE^r+xEZcB$y^^#^tm-4ij z8t?w>UU(*->XKq~LcywDR+wie=Or5roxW~3UA)W@+YzrS=ZU04g5u)h_J2?R;M_lb z@-)Jxepgu55LOmUnLsWMpd0wt85)II7Y)Xh;n$-^JmJ4c9o{jPt6F$2q$dTAkBeC^ z;V@77q}~4R*y8?pzEe6=D_#~scQhT2dT@&~T!r2GJ$7tQwPWE_#ygn>H{nMa6HUbH z(hRYcn~(cz?A(;{<3PHt`OBQBqrKGE{2W`cwk7@?jBa@cmxE{GK-`nd=lwf)GT3TJ z5md{S46@jzsc|Qu6SOT6`fsNz(^oNfpKK{0-U_AcqzRf`{A36t>+U~E^a_bOO(dy+ zQjl1B$0gL)W$z)Ub6-1E#$`B=|K zcPydA%XQEq90LD*#?RX}qq2zx%fC3LM=O07h`ie-?}R+c@ERhySpMdwwOUi&o@COA$&P1B7op z#d#jSyg1j%IQ}ZPgNVSzNwpdlhdQDTdtp%UQOm;oX6E9Ns1y?-9XF_#uJvlSZcINX zhJqdzqHX0%t<`hitQ4VFk>gVmN*zcME(N6hgXip^Ud9wuU;``9Lb`x+vXU=P9m*6e zNoBGxHWI*yMsri@r5Bz3`yXO&hWPhM)Ys?ce%I%2>`d9`&KWYFgZ)Q582Q-vP9a9F zGma&+cdq%I_ZiIeDfzMCT+m2UBNIWQEXGp34*QZEsoUN_1Sf(lrs0@6{I3Sn0xLlp z9I@l6uNXYJL&D9j7%7tY!>tHyFV<kh^k<_z$CP-5<+{# zAAUpZ@MT(%;v$x9o~d5{wjP3cAz&&im?#l6Pl>vO&}X9Hwk^Fb(}U%Si5Z{H$6_8^r6 zW|c6`_18l-#}s`!&xO-$hC#u(2ba-a{zU_TMM!xS1w>KugbBqolD6u;TfF@F*mOv{ z2Wl(4In4E)CCzy#K>Q$vsN==eRk0xQVqKyk=nX$TIX$A^8}VeojR1eqW3g?nCmqP9w{6hvLvs%IuA-}%uV z0#*!PnxsFMbPmGZ-riDl6JW|+*>fm|d+T@{{7Y{bt{z(QNnAuqgauIYgyr>|LI-D4 zoEh!dbTsBI0ZF4BX6!JYH!}g=KqCb@NVDcpG0;?Mu4og~tGViKtFEAe9mGDXW)Ju(}Sgg(Y~m z-&7;F=u>&d65qM^_tDf6Q2A4db~>n!H94cA~^DX1uDLZ;_?p>Fb6m*skTF7pM+9TcBTOuL;u z+h3G-bZ1UxVIE4w!BYnUZvvuM+$ZncJ{vt{4exW!c--!19Pi!90baixZ+**TX>E%4jsa>^XvOh<@eip3KC>LrP{_CyU zKNFAR*B(lbTi?)dUdOVf^P?1u=)tO6S`U+&GjwP)LJiv^Xd1J*o*_p5D9U{tkL)~S zabQ#|LTXn``uojuYCxnM9B)}N`eUmpCR4Fj?HkqJsQfLCB-ohkE0=6ER4x3j9ZeR0 zX5YrbUDDtDk)EOKk80zh(i@5&0D*@20il2*o9@sun6(GqUtMigZ{wbM-gw zPYHJOh7)V&Rng%kE^`GcPe1(9e}0~>5lRhFG@f)N&_w>iYmy1#bXa~_N8y~8-74`1 zdRr`SaR6obF99>ec3ak|X%4-1DTO!(&{uiZ9OnB@oF3ivF0XOHUdXOIH`(dwY5dRL z+j-0$iKgKadx?rJT?6Z`+pOe#r@OtEyX*aDV7%PLG8>ejCARrdmtU3Rrn_mItV!$u z1fM+PvE5J_ib4%B*gf~fC=u>~ ziMn@3yAbbj9fzn74fyyXDJ7w22+Fnh7fz!-;T{hjsrP&SS0H#(fo);$-<#Q6l)>d` zJ3$-78j|Bnwt4_exY|k+2wR(-XT(QK=3s~SZBMWahw>dGBK^eA)S9h&^2;3Fm+k!^ zbJwq_9s>mx09pq>ue+oSb8Y*2AOuu*TLx6Z zzG?6lp0p3iE9Me<$`5GrkLCwe^_R)DOU<+Ybz5q{X2$jZn2Mrd7H7Ag5`C( z#fL<5PpwT|)_7O)0g21O9!_jHEEcuuCv2?eY({n-7qnm%gSNkrJnrQ=W!6*Ui7zO; z7qCa}CaJ7d{M(*TNkT*vM5Sb%-HJ0m#tFWM0<4$cI|vyv(0+qCqN$a}O+)rmJI~vf z{%sPOO;7d2NSttj6~j9wyoG0@iVX)G;=%#EZDk6qI^9d8!Fus+U5>B0az`c9r(hr8 zwf99v<|XOjTjz>}dK74{5YuCRj&0O7wJP%4W@b`&dTfinPr!n_o#ng@aMw`Orv5IW zE&HGA>3AiJEP{5kU4sS@YoZ_pPkbW+if*?vAWdKrbI0Bg{v!#mu^m${0|=}%zf$KA`@ zs5z)LM1vUTo?Asz&D~;d3j(w=ba;KG(H#SCI$v3Ziea^z%m$_+{o-ytv+3BfrS6SL1YO;I%D>I2cjZdb= zPQTS$kf)_7G5_0>FBDGvtC9{Q23aSI(nYW@^(~@C2oliGid)ymOw_G3+1Tn9V&WQ7 z<$yIQIp|r4T%W0F))+bcCuHpObvCzAnkTGhSHV`eUkX{LwLi|8^$wFGKKnI6_cjqO z$)}TX~D389bM!zvp*|=Nzn4M~Q)Z zi}Ms8c+%eN3Rn`p4(oNd>*@7>{a04>8u=D65PKa0aYXXIv0bQkwW=*x=m=tvXAc%#~A z8tJ)bQOez7kRj{&)QDPYyfbYqDh5r5(|!49=gaD8d}aarUWa#T z@`GKhdBnB5uuzByC=LV~4%bwLzLB6uoub#p{JXoPWnVYp2AU(pABkcA{%sSeWfd23!;43mO`;pb7YS#a+$hX&3J@6Sp>UjbX(J zg!&nyG2YWB??EfQ*~ky=R`_ghS%p2A5d`$N(w2Wc*PXybOfx$t5w?1dJ?(5OQ8)OX z|1!y?)vB>QO)9kEH{Xid%r!IBz6*r_D8slN0((qiAp{c&^>pi;LB2^8@XZh1JFT%N zJdSmr^>Os~>0riHqH@^jIb;Ff=8=yiB7W^{`*Yp|Ys2zT@Okjn10yB-flS-vw4~xC zH#P?k-Mp>jksQun8Yy45wqkSp!_recTx64$uyvAZTsJwq7C5_;K;M#Y4?S<)Y(>1F zx{pu$-#XrB?`06ZF13A@pVDmO0t;)t;9&|XGJLS%vMwH2D~p1~9%`QZHHN^@LwO9w zqO;1h`v+4rJ-PUSGQ&6oFz~(HgmTVebBx6SHrAQ7tcqas{&OPyDCnv;`4K?~qJS$9 zylli|WNpSyJIw)K1t}p6oap0u2Uf(a`!saaQD_NtN+II2K$$lxpGwldq5HJJ0jn8K z6-`y4@(l5tcGvy4yT1c_Mxv&^rKz5cptlwHNHH}6zWNX;s4xL@0Fd8jwhrAP3F=zb z4K%-82xWrNnz2ecKLdM*y>PL?0*NM>3qRgduGt&oP~W5a3jEr_p2 zDwn7&sk?8at#?W!5pR|zB^sYgw6>3#3H;Ua*Xr&yQ5l@XDqyb;OR++0gouQR}EE?}cr?1ZfhO$cUAj}h4{P&Q` zeb%ok`yQe45t)5eVUae%Ep|E2<3wvm=Mn?#kP!%9#ew3Y&O_$zd z`co^y(ltiU2gHY;R-P;XtI04p6UEtYMc;_UH$1a^dOqoL&GQnKiOlniA^NsuFb=AsB=epYV zw9`Xo*-@7GM~!xkW$(yr9!=Wg9*`(IBl~K7A2U zIG>lRl~C8D;Hla>=svb~?#5!cM_$CV&g3R4EctC_be^=_lSrorzLyHKb;u2-6mmO{ zIde^s8NFAg{pZ_4E7J9ao!s3~^gc5Ioz-K6&;TWKi;D{YB>(M22I4-aOJ*wSr8uYe zDZ*q?$~6_;-k!EpJ%ML<0qEqcXkRU>gp43a*%$9p3*~rxz~BTr`|Te3_-y)peEUFX zJ|t|)zwWMQw^r7$s5qT@QdNXE09OzW)zFVmIT{2*8L7Y~tn!tbfM z(#5t^=xT)XD=lRaX6>Sp91E_biysfj?7R&ea9Nxd`~`?Pj3sR?BhWI#g)u`=~Ao3igA=Kve` z;VCL<{R^|x$c_#nUn1hZnhD-ElnNqn@OO<1&P-9WDz34V*fYn`jPp5z(TYayezBIt zShDB0GO@@;GZ}rMMbfvwn=LXMgfI^rR9G4DIS4_iaxd*~Y`{b2xIlpiF7G>T86Pwd ze7WCgWv&MSxVfA^wX|YE0xRcE38~=Kgw!qHD)s5I;P{+ly|r>^?fq2Y?Ip*^%k)x3 zw?9x$mFeWL7^R+dB7O$;xgB!cxGj{MvS?6{Dn?uN=4OEf#DbYN8C{NA->K8#VuX^N zFxsA~g*?D{wVv{MKJG7`@{L&~8is@Y7#itW+eUN++8z%7&=_jH=@7Sv)@8|WnKyc@nCRIa8e7GRCs(C;RC}%f45N0jvVw* z{~kZz)?hoVvd)Nxbk{$x$T`&Q`*-bn*G-b?`!2qYTpsS{E!A&lpUf!vCkw@{ynmua z>n_;a6!>v`14~tMXlJ!2wF^Y4PEsl-P6<1{cK`+gfW3b9Eyr3u4P6`8-(_J>b2 z1Xn8G({|7D^DG>j;?{Xe)hyxz$OJt#sCv5)+q+-1+|%XzOUL!APJ0qM5wAfe2Gg98 z$KwW_E@Lzr+ibM8jK`d%E^vK>v%Ibu6ZvjaSff&Hm;47TD;>Sq<_7qamfjgV-&>eE zk2kg~-h%dE`#;}4!YsStxPE{M*M!p*#(Kx;)_v*Ngt*-CCez2J{tD}`?2GhicK6?B zw!r#;gV$ocqdzzwEod|DoGLOBw?^L#!U4dwGV{68MvnUz03fePd>2$^;s1}Q+Z;62 zuPdD6gmYOL;2btEBjga=Z?TXG4RTH7=WQ|Il`W>kF1XHry> z9W%Gr*nzg#N8emZ@pjKpsoNHBB0DZ+cWMNohFRT&v(7n2<%G~>J~QpRQq?JsywI$L zsk;(u=9Yi)AUCoMb$iBIPJy< z_)d9ry@0>21-D-=y3jpK>Kot1F5J%szU{M6H|UPOkz-~q4<%KBVoLl7=!IeY!L)vs z;FfKA6lnlgV>aHWY9&v%PKPlp{cx#V&+y66i2MN1ay|aKt7CuZ>CUljCDZ;awsQ1V zpm)>G*IwADcd`2eMlK3lFlybd7u4_y+$wzHYW58G^pVAD70VdOtr#(L0@zh_NBpZZn4ELp<#$tvpofkS1lrzGzHq> z&e-)gG($D+v*b>XrV*WNXAJ6RwNL9b>Uz`E8Xz8sn8rU7_Ze5KHoCVHxy0cB%ykX; zq#9Y%jB=U7gC>X)`Y0^@ab2eP@+4}*fU9JL7aZUv4ZNMRanV9$Qzf_NqdzvU9&Bro z+62iI&48qiuiRV$HKD}VJP|%^+9K;?xw#ct(Sx&GaSn!-M^UGhqV=lY86yfD&HhpW zzr}_45OZtvo)8bcc-e~?<)>7Q09cQ`?fkDy007S6vGkkd*nkE%Tga3!NIC}N<34!E zYsqvSb(d1W*mB`l3T|D^HcG2o8SggkzOh&0f{?Q|RfoYBz(jPz!Lz<(Egr<;G6Ppe z&B%UQ?l76d+Nj&=thzqZ*)&_0C4hYx0szEhWI~S{bc|=Ya8)c^^_5N)HcH1mpB?1c z^W$a~am15GtcbUQuz%Pb}(Fc~Ya@z*^1=uY^EU%Z=Am19Xl z=+jC3dJfvE|9vXdi_?yM?&@Ta$zrqu>>;ty9NXq@=4Ow$6_gK!*wrhiT2|!N>J|{i zQo$QqYLcBXb0!l-qkjt_niPUNEAPqcbxf)a-D{Ra7^ zBae$5D?dVk8auEb?NvNg3l4L;`nrxl1S_F{v1)Yi?IZYIbOVBk-|h*2q5=8_>bM+l zI&(~32x5GGIa2l#Vx`(MDL*gWi|K$JREI(17_tf`_azMAOALHU{i;{Gr;LiqDLXjZ zBuQ+^eevX&ySA_zJPmyta31G=6co=YlerB)$m>Uh3Jx)9tY|OZiyH3ok*hf(NvUwi z6Yt%tpv;V1JTQN!w_XjN!iH3K8lh)g;Gr|{n$!d*U2birbS;O%3U6n3?W5&b=I2=v z&VJJVaBsdht>6Y;q8=dtT7nlM%xzm2)r zp61IPIT$S4$Ms>qj!VD!0FW<*FZ+@@vj~&}+>nqTldm8)f~eq0&srbfm$mk zI{5Z7elcp3==)QW6m8&iqLWZgHZqYz_tB6yD`IbxYr4_bnKP0#i}n^V1%78;L_u4` zE^j1I5SFn485Jdz#K7iYt)t+(v*)w@{NFN=0u z{*B`(b-r1~hUzU^n4^P*)O3D-7y@@0aT_3-uw=r_TxX9}Z|f*%%z4?65~J_!*gN<^ z(`n*eJ3r^V_3w^j9q;O@Pe1TRoiW;Yee#sSE3xfSNMFa*(W7*YZqMD0#xJ)35mw1% zmC2(OIbs)#u#rQoW79_ZtEN{P&%@!;Q=0?bZJqnsXGyZA)oF8wlCMU$!QRb)3_d(CM_dt3EX#!+-COMn6pxVjR~ z+5DZk=dv4iQjQ_u{)&O zG2EV-bjG42)!JLpdF}@x7|IJ8f02T&ys%2bWAqi*4~Q~9Z*6b0B zB_(pNmjxFIbZ^fbikHI?v1Cu<7w%)6KnGihjA0h8fv(Ipw!lQ_yIfc;wW3KuaKtSn zl6{*;jOKMW2c&qqy`n$dLM!S?3wYMvyKg}FW+r2t;nw8c{3&hWl+b#SocmkkTbW(x z5_`PL4=srD^6PptbM#dap68uP3LVqze*v2XWcmtI*D8a;YY<<3UQe5zAj&ZmlC%2? zcGu*I#Bgy(#hS5qGYd5HtVZ2@R3x1j5fQn|Wzp}RoL`yJtH|BUl@@ER*U z0|Qx#kZ>#$1OVcG$+P<-D5l0F@<5j5Fq4xE;aFNEm*C-!u7(jT=`kfOE1!JzX6Ian zaNsiv&yDv|Y+sJ0#X1WS%(5JIuE8W@D8iqnnb5=`F>(MHW$&n!O!@pwrcLpW0^YmIYqrbL&V+%R!RPw?hAu|l2j&AE;fvHe4Km*pjI#W0lI_-edP zBvo1v1UTX85dxsVpPaPyr~O>|TN2V?JWyR-odN)SRATCCu{?kf$yC!1txvUy6aiU0 zLj{_3?dwro>>n4?f9_9v7E-M`dz{DA{)xwU+gCnP>?sXQb~!BIq3NRYZr;uoxuOR$9U(+zUUZ8=zXxsqJ*+4X)O9BLfv zHng0vwO?~Jb~sp6Ec=JDPt0tuO&=Z`6TL(7RG87=%SJgKfS_12$I^{XhwXI6h=}?5 z+3}TgKfD+N2&x(v7j$p6j$9p4OVdpBgV(?ErMLrPRba8rVp_Jj>{8Xj9T%VTCAA!i zi-+94s|$&X^t;;YZ?KWQD@KHO-`|Na2_o=+r|s;1JAz{S0f6^9x)Cq^2L1i|aZTBq zwJ#VPB&$}6scWUnEYmlhopz`00*XtORLQc@RAE*dkaoiTX1YsPw~Z8-Zwa%>=3xNjw|3L8{K zxh%+y_9T{J*bc9?OGCMB2x0A@Ql`!>Y`jHn4eAr_$<2I*U(spVmyrEeeKm@_AZ_rw5k?RJfhVN?jvZNDS~Jn+ zBz7Pep0PV;q#>@K|Gn4JaVx(6+GFiXeLgK^+?5t9<#al~V`*|))z%j~rxctmrAQJ> zcqV9mb;I4aajDWB9j5xC;b!Xuu~NNA^M1yRVY4^y#Kbb>a!Ky8iFrpWr3$}Jmqovz zByXxZ=cAuagaxWTF3U?U7JA~z!Gv2NAn;`P4SzMlXeZw_cQsqa4j(uOLy@Yy*GJLM zr#%B@73bmF@z0MPx?&&Mrnhfo0h{Hgl>Pn3_oix_{4%2ry3WxEhR3KBGP~L4YU4R( zgGwQv>+n#qxi7@85yfZ4dU@$9(x<|BJHeh&$Ynpa-fn+6D75cDgPjyNx851V;&T6a zOIB7@e!I&f^oEcD3JCn6BriWCkthQcQ%Cfnbr!E8P$f3zXUDSu07uI5VS3gEU|CMQ zc-NId5o)Pv!X?aZ-X?gQc_T@U%}`!M@A|9j2CkcVtbvwq!wTS2POAy3GE0mx>kzNpN^6951J M07*qoM6N<$g8o@6NdN!< diff --git a/src/branding/fancy/show.qml b/src/branding/fancy/show.qml deleted file mode 100644 index 399434420..000000000 --- a/src/branding/fancy/show.qml +++ /dev/null @@ -1,112 +0,0 @@ -/* === This file is part of Calamares - === - * - * Copyright 2015, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - */ - -import QtQuick 2.5; -import calamares.slideshow 1.0; - -Presentation -{ - id: presentation - - mouseNavigation: false /* Only the fwd/back buttons */ - loopSlides: false - - BackButton { - width: 60 - height: 60 - source: "go-previous.svgz" - } - - ForwardButton { - width: 60 - height: 60 - source: "go-next.svgz" - } - - SlideCounter {} - - Slide { - /* This first slide ignores the "normal" slide layout and places - * an image and text by itself. The anchors need to be connected - * to place the items properly. - */ - Image { - id: background1 // Must be unique - source: "squid.png" - width: 200; height: 200 - fillMode: Image.PreserveAspectFit - anchors.centerIn: parent - } - Text { - anchors.horizontalCenter: background1.horizontalCenter - anchors.top: background1.bottom - text: qsTr("This is a customizable QML slideshow.") - wrapMode: Text.WordWrap - width: presentation.width - horizontalAlignment: Text.Center - } - } - - Slide { - /* Make this one narrower to prevent overlap of wide text with nav buttons */ - width: parent.width * 0.9 - 120 - x: parent.width * 0.05 + 60 - /* For just a slide with text, things can be simplified using properties */ - title: qsTr("Welcome to Fancy GNU/Linux.") - centeredText: qsTr("This is example branding for your GNU/Linux distribution. " + - "Long texts in the slideshow are translated and word-wrapped appropriately. " + - "Calamares is a distribution-independent installer framework. ") - } - - Slide { - centeredText: qsTr("This is a third Slide element.") - } - - Slide { - /* Note that these overlap because both are centered. The z-order puts the background - * in back. While you can use the properties of the Slide, it's not easy to get at - * the anchors of the items. - */ - Image { - id: background4 - source: "squid4.png" - width: 200; height: 200 - fillMode: Image.PreserveAspectFit - anchors.centerIn: parent - z: -1 - } - centeredText: qsTr("This is a fourth Slide element.") - } - - Slide { - title: qsTr("Slide number five") - writeInText: qsTr("This is example branding for your GNU/Linux distribution. " + - "Long texts in the slideshow are translated and word-wrapped appropriately. " + - "Calamares is a distribution-independent installer framework. ") - } - - Slide { - title: qsTr("Slide number five") - content: [ - qsTr("Welcome to Fancy GNU/Linux."), - qsTr("This is a customizable QML slideshow."), - qsTr("This is a third Slide element.") - ] - } -} diff --git a/src/branding/fancy/squid.png b/src/branding/fancy/squid.png deleted file mode 100644 index 452e4450c56c10cda33dcc9c5d03753ace458862..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8313 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 g|LZIH;yI`SlJP@$RdA9Unaaf`fxa+`T>hogIB2 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 diff --git a/src/branding/samegame/Block.qml b/src/branding/samegame/Block.qml deleted file mode 100644 index 81bdd67ea..000000000 --- a/src/branding/samegame/Block.qml +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//![0] -import QtQuick 2.0 - -Item { - id: block - - property int type: 0 - - Image { - id: img - - anchors.fill: parent - source: { - if (type == 0) - return "redStone.png"; - else if (type == 1) - return "blueStone.png"; - else - return "greenStone.png"; - } - } -} -//![0] diff --git a/src/branding/samegame/Button.qml b/src/branding/samegame/Button.qml deleted file mode 100644 index 77921772d..000000000 --- a/src/branding/samegame/Button.qml +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.0 - -Rectangle { - id: container - - property string text: "Button" - - signal clicked - - width: buttonLabel.width + 20; height: buttonLabel.height + 5 - border { width: 1; color: Qt.darker(activePalette.button) } - antialiasing: true - radius: 8 - - // color the button with a gradient - gradient: Gradient { - GradientStop { - position: 0.0 - color: { - if (mouseArea.pressed) - return activePalette.dark - else - return activePalette.light - } - } - GradientStop { position: 1.0; color: activePalette.button } - } - - MouseArea { - id: mouseArea - anchors.fill: parent - onClicked: container.clicked(); - } - - Text { - id: buttonLabel - anchors.centerIn: container - color: activePalette.buttonText - text: container.text - } -} diff --git a/src/branding/samegame/Dialog.qml b/src/branding/samegame/Dialog.qml deleted file mode 100644 index 94e708f9c..000000000 --- a/src/branding/samegame/Dialog.qml +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//![0] -import QtQuick 2.0 - -Rectangle { - id: container - - function show(text) { - dialogText.text = text; - container.opacity = 1; - } - - function hide() { - container.opacity = 0; - } - - width: dialogText.width + 20 - height: dialogText.height + 20 - opacity: 0 - - Text { - id: dialogText - anchors.centerIn: parent - text: "" - } - - MouseArea { - anchors.fill: parent - onClicked: hide(); - } -} -//![0] diff --git a/src/branding/samegame/background.jpg b/src/branding/samegame/background.jpg deleted file mode 100644 index 903d395c8d04c9c1f3ceec8e38aadaccf073ff01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36473 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 S~YJ6cAChryNrla?vKGSWGwlkT#oISh*m6) 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 diff --git a/src/branding/samegame/branding.desc b/src/branding/samegame/branding.desc deleted file mode 100644 index b280e3df3..000000000 --- a/src/branding/samegame/branding.desc +++ /dev/null @@ -1,76 +0,0 @@ ---- -componentName: samegame - -# This selects between different welcome texts. When false, uses -# the traditional "Welcome to the %1 installer.", and when true, -# uses "Welcome to the Calamares installer for %1." This allows -# to distinguish this installer from other installers for the -# same distribution. -welcomeStyleCalamares: false - -# These are strings shown to the user in the user interface. -# There is no provision for translating them -- since they -# are names, the string is included as-is. -# -# The four Url strings are the Urls used by the buttons in -# the welcome screen, and are not shown to the user. Clicking -# on the "Support" button, for instance, opens the link supportUrl. -# If a Url is empty, the corresponding button is not shown. -# -# bootloaderEntryName is how this installation / distro is named -# in the boot loader (e.g. in the GRUB menu). -strings: - productName: Generic GNU/Linux - shortProductName: Generic - version: 2018.1 LTS - shortVersion: 2018.1 - versionedName: Generic GNU/Linux 2018.1 LTS "Tasseled Tambourine" - shortVersionedName: Generic 2018.1 - bootloaderEntryName: Generic - productUrl: https://calamares.io/ - supportUrl: https://github.com/calamares/calamares/issues - knownIssuesUrl: https://calamares.io/about/ - releaseNotesUrl: https://calamares.io/about/ - -# Should the welcome image (productWelcome, below) be scaled -# up beyond its natural size? If false, the image does not grow -# with the window but remains the same size throughout (this -# may have surprising effects on HiDPI monitors). -welcomeExpandingLogo: true - -# These images are loaded from the branding module directory. -# -# productIcon is used as the window icon, and will (usually) be used -# by the window manager to represent the application. This image -# should be square, and may be displayed by the window manager -# as small as 16x16 (but possibly larger). -# productLogo is used as the logo at the top of the left-hand column -# which shows the steps to be taken. The image should be square, -# and is displayed at 80x80 pixels (also on HiDPI). -# productWelcome is shown on the welcome page of the application in -# the middle of the window, below the welcome text. It can be -# any size and proportion, and will be scaled to fit inside -# the window. Use `welcomeExpandingLogo` to make it non-scaled. -# Recommended size is 320x150. -images: - productLogo: "squidball.png" - productIcon: "squidball.png" - productWelcome: "languages.png" - -# The slideshow is displayed during execution steps (e.g. when the -# installer is actually writing to disk and doing other slow things). -slideshow: "samegame.qml" - -# Colors for text and background components. -# -# - sidebarBackground is the background of the sidebar -# - sidebarText is the (foreground) text color -# - sidebarTextHighlight sets the background of the selected (current) step. -# Optional, and defaults to the application palette. -# - sidebarSelect is the text color of the selected step. -# -style: - sidebarBackground: "#292F34" - sidebarText: "#FFFFFF" - sidebarTextSelect: "#292F34" - sidebarTextHighlight: "#D35400" diff --git a/src/branding/samegame/greenStar.png b/src/branding/samegame/greenStar.png deleted file mode 100644 index 38429749b8bd4882bbf391a0010d796cd4e2c7fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`F`h1tAr_~T6C~~>9J~DT(iEu$ zj-6>{3S|sQz5=sl&RRLlVLWQ(BFz+Xg8j&{fZpi~C5}u}l~4;fTN7~f1e=J%-b3!I w#JLtkwBIQxXxP=(`=-PpFiPRpd1q+`hKR64RtIJ^cc48Cp00i_>zopr033lZ_y7O^ diff --git a/src/branding/samegame/greenStone.png b/src/branding/samegame/greenStone.png deleted file mode 100644 index b568a1900c3c656039afe3e6271a469b4b2f7603..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2932 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 ed5^LEum1ynoHFHgZzdQ30000=acq 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�==0;j%F=Kq0P>U~X0$-7~AA^Z= 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 M07*qoM6N<$g8o@6NdN!< diff --git a/src/branding/samegame/redStar.png b/src/branding/samegame/redStar.png deleted file mode 100644 index 5cdf45c4c098a148907898f947f561484f6f75e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`(Vi}jAr_~T6D00Es4w4YvXm_& zV9`w84%vnX;UjA9oB0IN9X9e^Y-14p#JEv2tDnm{r-UW|La{HG diff --git a/src/branding/samegame/redStone.png b/src/branding/samegame/redStone.png deleted file mode 100644 index 36b09a26869643fb61f0d0cb50ce39e284d9a271..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2902 zcmV-c3#s&pP)$#7O^9tKZrqx<>BSJCpyVk)UjZRi>I*_VAhj=5^T-PVq@tprBH)1+s6Zfs8XBn& zv_Panffgsmb(_X^OzNh-jP02@mwonSt@ZJ+_L(_89;Xpo+7D;%bJqH;|94scb>xLp z>|P4U?#HN5ddMs^5t%V>R)Y)e*KYsG`#p6$W=ZE+3&|!5JQUx%)l|Kk;(b zF&b`h{y$%P?mORn^^@1HeeZco^XTKJK76#-9{@0&jQH;Pf4+O+JOA>dqmO>@-#_u} zCtrPZZSCvMxq3&4_j$>E3NBpp3i=2k(p@=p@K+BUUinP5{qDz~SU<&+XU_3c>t|U# zc9P!GK|q;~H@SQB8rQF0b=q>=ucbtPXK-nsMF#;~dHQ^EHIm|GY(JQocw zoj78i`pD^Z&VKxP9$o(!2iDf<9azJ42Z+l-mFO${berkcO}1}d<=wY0aOuJ~Ise`7 z^Y*Q9mB5RA$IDIl$$)l!_2Dm-lzV05b2j74KYJoyd;Sw=dHSQzaqO`t8SFno-W_0U zmhvM6G}LHQLQ^44MW%tJJmc{GWsdX}=kKlD9Q$9J)a=iMZ)BEenxFBapJJz5Czc) z!9!C)Jw?k2Ivt^tEtqVycrw2o}MpA~Aw*kh+F?3grYXTDb8RI=Y9BH(|1c6x*0`Oea?K z;)JPJwi=!+8us@rU)!s??N6^f2vyB5#Jz9 z1N9WC3MfWU3}L(l<9q066ULipF@(uBQVcQW80V+dK`A3_)|~U6^O@nTMMk%npQ>bK zyU}-8yj8!DC$*_u=}8FLsrGGD7)KKmp3g3riW#Jko{L47w3Q8Ifj;X=ZQ{sT!oL zkgPzm4q`Jfsb5G4;A?0~OjSTNfog=7BWyXuHziGgJiw}jV_g{5tWPU`YsvAF>O*!C zRS59ewH~Zwumq@wX@sr`bm|eN3P|2y@(Pnrk*tekIhYJF22{})b}E{>#MF}(a*S_E z%BWNdMCb!64vuu;TFqyo@}~ys2NV>bQBHR(&#q=LFyK=DQwbCTP6C5^jCCHDbc!ss-OuqMTA13Qt+A-8kiKV+l~{#^D%4q)}9Im<%I(oon;3- zz{WI41x$fVAQQ#aQ(Wbdtey+618JArwjK2~rY?z1NfQDEFjXiOYK16Cp`O69h29dh$O+SNptlDmL1#`o{sZ5Xy #?4kbOf9x1)YLbkap0(F02g!D* zNh8ESh>>OnrU^{jZ#ii}H7&R+u#|v*Mk6a$xTk1Bh%(oE@`oW+|iT*c{{0V7nB@H8qA=~0&Zj%(lA#??VLfuOL{M99CdTwbIWc=!NS5O%Bs~g zc{T%-1lVoE&~24D}GV>B>dkWrFyo>twqwp7{Z7;euz z;(cZ|C|8=8v^VyC$Q|WGa5hWs+2t_nfyV3}YT7C$1|&3yugQFkgk~2GXxiJ(nPZd- z2F9}u#N{&QVwBgbkdjt3wSrlgX9Z(zhGbpHI^a6sW`Oti!33CkA;uyiSfCS|oinpcB3}^$e@Pax`G)06Ty)7UOcrx{&u;$eD_ZfIjWV*6p|) zql)v9Jca}(sfeON8KLlmT=)k&?`G!rIxF1pk*^LtpK4r6B|EEX0b^YP%3Hu4$ZR(c z(boRY)NA)>Rfqu-J(-4`PJyP-jy#ls^SN+&-eI|X-fpFq@X}_@r^XI^dlqtl6_fIA z2G?DJPCu!cyr~F>W5bpDX1G`{Y4d1RK ze|e|j(`yF2ZO;eBrsZVa1lH*%$eD^eAT6M;!By#*>_Uq#kx(Hq5`ZGYMgwK!wH3!J ziw4@g`tJP?_GfUo!{@Rke)$p0p~C{vkN|cR>_Vrv3!1lKmbM;ehSl2Ls`d>uvwSs# zkZji-4>xNj*T;Nz8qfzU|M!M_o|!hDI%t3MSQh^N2-rip&=ZR_HcjC2q*~sEP78dW zr z?x+haHRbf+JEh*bx^(oihYv5^au(O{-GUR^S_`D=4SvbV5^%nNBB+CS$gS zTfDuw$ye@_7ykH`{lcYf|F59E7Ra~W;Q`3^QZR2J`=Kfaw}+GFjo80>iQZ^Z`~A7E z_hqENWqee8@c5>osisuZg0dJh9uK*mTXu8yx>YFFSp@?@pdw?j1Tl=yz9pJ(D{p zs*$R$_3mU6u5FK}=eH)eE)L5p?-cbVt?KJ&*aS9#EnpiM0b`(Sf&DzByoZ7_pV|lZ zwfAxhx+>NkRp*WwV~*v*p-f}|nyD&LwW@=Tnh-aL@dg@hpn4m)+ky>Ss4-BqaMhfO zx)P~5SOHcMIoLkS+c7Fs$1Tj=Ik1^p(-vx`+PrcP4e?^DnOAdm z&ja`7l-<{YXYKEs7Gk`IQhVjyV(vW@a53DnpsJnAQ#a?tX1;b-bfE>P<`in?R0<1f z>0T}7y#N>A%O2on4{%}OOf&})_W*f7vBm5E0IhF_Ml((E_5c6?07*qoM6N<$g6)ir A8~^|S diff --git a/src/branding/samegame/samegame.js b/src/branding/samegame/samegame.js deleted file mode 100644 index 01edc5bd4..000000000 --- a/src/branding/samegame/samegame.js +++ /dev/null @@ -1,174 +0,0 @@ -/* This script file handles the game logic */ -var maxColumn = 10; -var maxRow = 15; -var maxIndex = maxColumn * maxRow; -var board = new Array(maxIndex); -var component; - -//Index function used instead of a 2D array -function index(column, row) { - return column + (row * maxColumn); -} - -function startNewGame() { - //Calculate board size - maxColumn = Math.floor(gameCanvas.width / gameCanvas.blockSize); - maxRow = Math.floor(gameCanvas.height / gameCanvas.blockSize); - maxIndex = maxRow * maxColumn; - - //Close dialogs - dialog.hide(); - - //Initialize Board - board = new Array(maxIndex); - gameCanvas.score = 0; - for (var column = 0; column < maxColumn; column++) { - for (var row = 0; row < maxRow; row++) { - board[index(column, row)] = null; - createBlock(column, row); - } - } -} - -function createBlock(column, row) { - if (component == null) - component = Qt.createComponent("Block.qml"); - - // Note that if Block.qml was not a local file, component.status would be - // Loading and we should wait for the component's statusChanged() signal to - // know when the file is downloaded and ready before calling createObject(). - if (component.status == Component.Ready) { - var dynamicObject = component.createObject(gameCanvas); - if (dynamicObject == null) { - console.log("error creating block"); - console.log(component.errorString()); - return false; - } - dynamicObject.type = Math.floor(Math.random() * 3); - dynamicObject.x = column * gameCanvas.blockSize; - dynamicObject.y = row * gameCanvas.blockSize; - dynamicObject.width = gameCanvas.blockSize; - dynamicObject.height = gameCanvas.blockSize; - board[index(column, row)] = dynamicObject; - } else { - console.log("error loading block component"); - console.log(component.errorString()); - return false; - } - return true; -} - -var fillFound; //Set after a floodFill call to the number of blocks found -var floodBoard; //Set to 1 if the floodFill reaches off that node - -//![1] -function handleClick(xPos, yPos) { - var column = Math.floor(xPos / gameCanvas.blockSize); - var row = Math.floor(yPos / gameCanvas.blockSize); - if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) - return; - if (board[index(column, row)] == null) - return; - //If it's a valid block, remove it and all connected (does nothing if it's not connected) - floodFill(column, row, -1); - if (fillFound <= 0) - return; - gameCanvas.score += (fillFound - 1) * (fillFound - 1); - shuffleDown(); - victoryCheck(); -} -//![1] - -function floodFill(column, row, type) { - if (board[index(column, row)] == null) - return; - var first = false; - if (type == -1) { - first = true; - type = board[index(column, row)].type; - - //Flood fill initialization - fillFound = 0; - floodBoard = new Array(maxIndex); - } - if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) - return; - if (floodBoard[index(column, row)] == 1 || (!first && type != board[index(column, row)].type)) - return; - floodBoard[index(column, row)] = 1; - floodFill(column + 1, row, type); - floodFill(column - 1, row, type); - floodFill(column, row + 1, type); - floodFill(column, row - 1, type); - if (first == true && fillFound == 0) - return; //Can't remove single blocks - board[index(column, row)].opacity = 0; - board[index(column, row)] = null; - fillFound += 1; -} - -function shuffleDown() { - //Fall down - for (var column = 0; column < maxColumn; column++) { - var fallDist = 0; - for (var row = maxRow - 1; row >= 0; row--) { - if (board[index(column, row)] == null) { - fallDist += 1; - } else { - if (fallDist > 0) { - var obj = board[index(column, row)]; - obj.y += fallDist * gameCanvas.blockSize; - board[index(column, row + fallDist)] = obj; - board[index(column, row)] = null; - } - } - } - } - //Fall to the left - var fallDist = 0; - for (var column = 0; column < maxColumn; column++) { - if (board[index(column, maxRow - 1)] == null) { - fallDist += 1; - } else { - if (fallDist > 0) { - for (var row = 0; row < maxRow; row++) { - var obj = board[index(column, row)]; - if (obj == null) - continue; - obj.x -= fallDist * gameCanvas.blockSize; - board[index(column - fallDist, row)] = obj; - board[index(column, row)] = null; - } - } - } - } -} - -//![2] -function victoryCheck() { - //Award bonus points if no blocks left - var deservesBonus = true; - for (var column = maxColumn - 1; column >= 0; column--) - if (board[index(column, maxRow - 1)] != null) - deservesBonus = false; - if (deservesBonus) - gameCanvas.score += 500; - - //Check whether game has finished - if (deservesBonus || !(floodMoveCheck(0, maxRow - 1, -1))) - dialog.show("Game Over. Your score is " + gameCanvas.score); -} -//![2] - -//only floods up and right, to see if it can find adjacent same-typed blocks -function floodMoveCheck(column, row, type) { - if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) - return false; - if (board[index(column, row)] == null) - return false; - var myType = board[index(column, row)].type; - if (type == myType) - return true; - return floodMoveCheck(column + 1, row, myType) || floodMoveCheck(column, row - 1, board[index(column, row)].type); -} - diff --git a/src/branding/samegame/samegame.qml b/src/branding/samegame/samegame.qml deleted file mode 100644 index 73ef74d1e..000000000 --- a/src/branding/samegame/samegame.qml +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//![0] -import QtQuick 2.0 -import "samegame.js" as SameGame - -Rectangle { - id: screen - - width: 490; height: 720 - - SystemPalette { id: activePalette } - - Item { - width: parent.width - anchors { top: parent.top; bottom: toolBar.top } - - Image { - id: background - anchors.fill: parent - source: "background.jpg" - fillMode: Image.PreserveAspectCrop - } - -//![1] - Item { - id: gameCanvas - - property int score: 0 - property int blockSize: 40 - - width: parent.width - (parent.width % blockSize) - height: parent.height - (parent.height % blockSize) - anchors.centerIn: parent - - MouseArea { - anchors.fill: parent - onClicked: SameGame.handleClick(mouse.x, mouse.y) - } - } -//![1] - } - -//![2] - Dialog { - id: dialog - anchors.centerIn: parent - z: 100 - } -//![2] - - Rectangle { - id: toolBar - width: parent.width; height: 30 - color: activePalette.window - anchors.bottom: screen.bottom - - Button { - anchors { left: parent.left; verticalCenter: parent.verticalCenter } - text: "New Game" - onClicked: SameGame.startNewGame() - } - } -} -//![0] diff --git a/src/branding/samegame/squidball.png b/src/branding/samegame/squidball.png deleted file mode 100644 index b7934e8ee5c471bce5589f99cab75f1395941321..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5800 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 ZwX&-T%YMus_0MGn^t6mM>(rg&{tx8-w&DN) diff --git a/src/branding/samegame/star.png b/src/branding/samegame/star.png deleted file mode 100644 index defbde53ca489900adbd2eb6b6c83a97cab11e80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 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 yti-$%;KA#12)G^sE>j8|1c`@$yiKu#+y4T!p Date: Fri, 9 Mar 2018 08:48:24 -0500 Subject: [PATCH 024/385] Branding: document preference for standalone branding --- src/branding/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/branding/README.md b/src/branding/README.md index acf245b11..5b74333cc 100644 --- a/src/branding/README.md +++ b/src/branding/README.md @@ -7,6 +7,11 @@ file, containing brand-specific strings in a key-value structure, plus brand-specific images or QML. Such a subdirectory, when placed here, is automatically picked up by CMake and made available to Calamares. +It is recommended to package branding separately, so as to avoid +forking Calamares just for adding some files. Calamares installs +CMake support macros to help create branding packages. See the +calamares-branding repository for examples of stand-alone branding. + ## Translations From 986c5f5a9a73777c219a45537598509fa5e884d6 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 9 Mar 2018 09:29:53 -0500 Subject: [PATCH 025/385] CMake: improve branding component macros - document preferred component layout - simplify parameters to the branding macros - allow structured branding components with SUBDIRECTORIES --- .../CalamaresAddBrandingSubdirectory.cmake | 81 +++++++++++-------- src/branding/README.md | 66 +++++++++++---- 2 files changed, 99 insertions(+), 48 deletions(-) diff --git a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake index 0c58a7257..60868192b 100644 --- a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake +++ b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake @@ -1,8 +1,24 @@ +# Support macros for creating Calamares branding components. +# +# Calamares branding components have two parts: +# - a branding.desc file that tells Calamares how to describe the product +# (e.g. strings like "Generic GNU/Linux") and the name of a QML file +# (the "slideshow") that is displayed during installation. +# - the QML files themselves, plus supporting images etc. +# +# Branding components can be created inside the Calamares source tree +# (there is one example the `default/` branding, which is also connected +# to the default configuration shipped with Calamares), but they can be +# built outside of, and largely independently of, Calamares by using +# these CMake macros. +# +# See the calamares-examples repository for more examples. +# include( CMakeParseArguments) include( CMakeColors ) -# Usage calamares_add_branding( NAME [SUBDIRECTORY ]) +# Usage calamares_add_branding( [DIRECTORY ] [SUBDIRECTORIES ...]) # # Adds a branding component to the build: # - the component's top-level files are copied into the build-dir; @@ -14,29 +30,30 @@ include( CMakeColors ) # with the given , which is usually the name of the # directory containing the component, and which must match the # *componentName* in `branding.desc`. -function( calamares_add_branding ) - set( _CABT_SUBDIRECTORY "." ) - cmake_parse_arguments( _CABT "" "NAME;SUBDIRECTORY" "" ${ARGN} ) - if ( NOT _CABT_NAME ) - message( FATAL_ERROR "Branding component must have a NAME" ) - endif() - - set( NAME ${_CABT_NAME} ) - set( SUBDIRECTORY ${_CABT_SUBDIRECTORY} ) +# +# If SUBDIRECTORIES are given, then those are copied (each one level deep) +# to the installation location as well, preserving the subdirectory name. +function( calamares_add_branding NAME ) + set( _CABT_DIRECTORY "." ) + cmake_parse_arguments( _CABT "" "DIRECTORY" "SUBDIRECTORIES" ${ARGN} ) + set( SUBDIRECTORY ${_CABT_DIRECTORY} ) + set( _brand_dir ${_CABT_DIRECTORY} ) set( BRANDING_DIR share/calamares/branding ) set( BRANDING_COMPONENT_DESTINATION ${BRANDING_DIR}/${NAME} ) - # We glob all the files inside the subdirectory, and we make sure they are - # synced with the bindir structure and installed. - file( GLOB BRANDING_COMPONENT_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY} "${SUBDIRECTORY}/*" ) - foreach( BRANDING_COMPONENT_FILE ${BRANDING_COMPONENT_FILES} ) - if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} ) - configure_file( ${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} ${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} COPYONLY ) + foreach( _subdir "" ${_CABT_SUBDIRECTORIES} ) + file( GLOB BRANDING_COMPONENT_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${_brand_dir} "${_brand_dir}/${_subdir}/*" ) + message(STATUS "${BRANDING_COMPONENT_FILES}") + foreach( BRANDING_COMPONENT_FILE ${BRANDING_COMPONENT_FILES} ) + set( _subpath ${_brand_dir}/${BRANDING_COMPONENT_FILE} ) + if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${_subpath} ) + configure_file( ${_subpath} ${_subpath} COPYONLY ) - install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} - DESTINATION ${BRANDING_COMPONENT_DESTINATION} ) - endif() + install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${_subpath} + DESTINATION ${BRANDING_COMPONENT_DESTINATION}/${_subdir}/ ) + endif() + endforeach() endforeach() message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} branding component: ${BoldRed}${NAME}${ColorReset}" ) @@ -46,7 +63,7 @@ function( calamares_add_branding ) endif() endfunction() -# Usage calamares_add_branding_translations( NAME [SUBDIRECTORY ]) +# Usage calamares_add_branding_translations( [DIRECTORY ]) # # Adds the translations for a branding component to the build: # - the component's lang/ directory is scanned for .ts files @@ -55,15 +72,11 @@ endfunction() # Translation files must be called calamares-_.ts . Optionally # the lang/ dir is found in the given instead of the current source # directory. -function( calamares_add_branding_translations ) - set( _CABT_SUBDIRECTORY "." ) - cmake_parse_arguments( _CABT "" "NAME;SUBDIRECTORY" "" ${ARGN} ) - if ( NOT _CABT_NAME ) - message( FATAL_ERROR "Branding component must have a NAME" ) - endif() - - set( NAME ${_CABT_NAME} ) - set( SUBDIRECTORY ${_CABT_SUBDIRECTORY} ) +function( calamares_add_branding_translations NAME ) + set( _CABT_DIRECTORY "." ) + cmake_parse_arguments( _CABT "" "DIRECTORY" "" ${ARGN} ) + set( SUBDIRECTORY ${_CABT_DIRECTORY} ) + set( _brand_dir ${_CABT_DIRECTORY} ) set( BRANDING_DIR share/calamares/branding ) set( BRANDING_COMPONENT_DESTINATION ${BRANDING_DIR}/${NAME} ) @@ -78,19 +91,23 @@ function( calamares_add_branding_translations ) endif() endfunction() -# Usage calamares_add_branding_subdirectory( ) +# Usage calamares_add_branding_subdirectory( [SUBDIRECTORIES ...]) # # Adds a branding component from a subdirectory: # - if there is a CMakeLists.txt, use that # - otherwise assume a "standard" setup with top-level files and a lang/ dir for translations # +# If SUBDIRECTORIES are given, they are relative to , and are +# copied (one level deep) to the install location as well. function( calamares_add_branding_subdirectory SUBDIRECTORY ) + cmake_parse_arguments( _CABS "" "" "SUBDIRECTORIES" ${ARGN} ) + if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" ) add_subdirectory( ${SUBDIRECTORY} ) elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/branding.desc" ) - calamares_add_branding( NAME ${SUBDIRECTORY} SUBDIRECTORY ${SUBDIRECTORY} ) + calamares_add_branding( ${SUBDIRECTORY} DIRECTORY ${SUBDIRECTORY} SUBDIRECTORIES ${_CABS_SUBDIRECTORIES} ) if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang" ) - calamares_add_branding_translations( NAME ${SUBDIRECTORY} SUBDIRECTORY ${SUBDIRECTORY} ) + calamares_add_branding_translations( ${SUBDIRECTORY} DIRECTORY ${SUBDIRECTORY} ) endif() else() message( "-- ${BoldYellow}Warning:${ColorReset} tried to add branding component subdirectory ${BoldRed}${SUBDIRECTORY}${ColorReset} which has no branding.desc." ) diff --git a/src/branding/README.md b/src/branding/README.md index 5b74333cc..6503bef49 100644 --- a/src/branding/README.md +++ b/src/branding/README.md @@ -12,6 +12,20 @@ forking Calamares just for adding some files. Calamares installs CMake support macros to help create branding packages. See the calamares-branding repository for examples of stand-alone branding. +## Examples + +There is one example of a branding component included with Calamares, +so that it can be run directly from the build directory for testing purposes: + + - `default/` is a sample brand for the Generic Linux distribution. It uses + the default Calamares icons and a as start-page splash it provides a + tag-cloud view of languages. The slideshow is a basic one with a few + slides of text and a single image. No translations are provided. + +Since the slideshow can be **any** QML, it is limited only by your designers +imagination and your QML experience. For straightforward presentations, +see the documentation below. There are more examples in the *calamares-branding* +repository. ## Translations @@ -28,22 +42,6 @@ file) should be enclosed in this form for translations text: qsTr("This is an example text.") ``` -## Examples - -There are two examples of branding content: - - - `default/` is a sample brand for the Generic Linux distribution. It uses - the default Calamares icons and a as start-page splash it provides a - tag-cloud view of languages. The slideshow is a basic one with a few - slides of text and a single image. No translations are provided. - - `fancy/` uses translations and offers navigation arrows. These are - provided by the standard Calamares QML classes. - -Since the slideshow can be **any** QML, it is limited only by your designers -imagination and your QML experience. For straightforward presentations, -see the documentation below. There are more examples in the *calamares-branding* -repository. - ## Presentation The default QML classes provided by Calamares can be used for a simple @@ -97,3 +95,39 @@ standard properties for a boring "static text" slideshow, though: The presentation classes can be used to produce a fairly dry slideshow for the installation process; it is recommended to experiment with the visual effects and classes available in QtQuick. + +## Project Layout + +A branding component that is created and installed outside of Calamares +will have a top-level `CMakeLists.txt` that includes some boilerplate +to find Calamares, and then adds a subdirectory which contains the +actual branding component. + +Adding the subdirectory can be done as follows: + + - If the directory contains files only, and optionally has a single + subdirectory lang/ which contains the translation files for the + component, then `calamares_add_branding_subdirectory()` can be + used, which takes only the name of the subdirectory. + +The file layout in a typical branding component repository is: + +``` + / + - CMakeLists.txt + - componentname/ + - show.qml + - image1.png + ... + - lang/ + - calamares-componentname_en.ts + - calamares-componentname_de.ts + ... +``` + + - If the branding component has many files which are organized into + subdirectories, use the SUBDIRECTORIES argument to the CMake function + to additionally install files from those subdirectories. For example, + if the component places all of its images in an `img/` subdirectory, + then call `calamares_add_branding_subdirectory( ... SUBDIRECTORIES img)`. + It is a bad idea to include `lang/` in the SUBDIRECTORIES list. From 42ba505ceb6ae323afb12b07dcec11255ba8f4b7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 9 Mar 2018 11:13:42 -0500 Subject: [PATCH 026/385] CMake: add license headers, copyright Since we install the CMake files now, also put license headers in them. These files are intended to help plugin and branding component authors write them in a simple Calamares-idiomatic way. --- .../CalamaresAddBrandingSubdirectory.cmake | 20 ++++++++++++++++ CMakeModules/CalamaresAddLibrary.cmake | 24 ++++++++++++++++++- .../CalamaresAddModuleSubdirectory.cmake | 23 ++++++++++++++++++ CMakeModules/CalamaresAddPlugin.cmake | 20 ++++++++++++++++ CMakeModules/CalamaresAddTranslations.cmake | 22 +++++++++++++++++ 5 files changed, 108 insertions(+), 1 deletion(-) diff --git a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake index 60868192b..40c153ef7 100644 --- a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake +++ b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake @@ -1,3 +1,23 @@ +# === This file is part of Calamares - === +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . +# +# SPDX-License-Identifier: GPL-3.0+ +# License-Filename: LICENSE +# +### +# # Support macros for creating Calamares branding components. # # Calamares branding components have two parts: diff --git a/CMakeModules/CalamaresAddLibrary.cmake b/CMakeModules/CalamaresAddLibrary.cmake index f183277c8..f6e96d12a 100644 --- a/CMakeModules/CalamaresAddLibrary.cmake +++ b/CMakeModules/CalamaresAddLibrary.cmake @@ -1,3 +1,25 @@ +# === This file is part of Calamares - === +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . +# +# SPDX-License-Identifier: GPL-3.0+ +# License-Filename: LICENSE +# +### +# +# Support functions for building plugins. + include( CMakeParseArguments ) function(calamares_add_library) @@ -64,7 +86,7 @@ function(calamares_add_library) endif() # add link targets - target_link_libraries(${target} + target_link_libraries(${target} LINK_PUBLIC ${CALAMARES_LIBRARIES} Qt5::Core Qt5::Gui diff --git a/CMakeModules/CalamaresAddModuleSubdirectory.cmake b/CMakeModules/CalamaresAddModuleSubdirectory.cmake index 32d9ea952..af26f5a74 100644 --- a/CMakeModules/CalamaresAddModuleSubdirectory.cmake +++ b/CMakeModules/CalamaresAddModuleSubdirectory.cmake @@ -1,3 +1,26 @@ +# === This file is part of Calamares - === +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . +# +# SPDX-License-Identifier: GPL-3.0+ +# License-Filename: LICENSE +# +### +# +# Function and support code for adding a Calamares module (either a Qt / C++ plugin, +# or a Python module, or whatever) to the build. +# include( CalamaresAddTranslations ) set( MODULE_DATA_DESTINATION share/calamares/modules ) diff --git a/CMakeModules/CalamaresAddPlugin.cmake b/CMakeModules/CalamaresAddPlugin.cmake index 658fd364a..e02102829 100644 --- a/CMakeModules/CalamaresAddPlugin.cmake +++ b/CMakeModules/CalamaresAddPlugin.cmake @@ -1,3 +1,23 @@ +# === This file is part of Calamares - === +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . +# +# SPDX-License-Identifier: GPL-3.0+ +# License-Filename: LICENSE +# +### +# # Convenience function for creating a C++ (qtplugin) module for Calamares. # This function provides cmake-time feedback about the plugin, adds # targets for compilation and boilerplate information, and creates diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index b0a623908..63bf63189 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -1,3 +1,25 @@ +# === This file is part of Calamares - === +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . +# +# SPDX-License-Identifier: GPL-3.0+ +# License-Filename: LICENSE +# +### +# +# This file has not yet been documented for use outside of Calamares itself. + include( CMakeParseArguments ) # Internal macro for adding the C++ / Qt translations to the From 2f66aa9b07986a721124c9e738d6daf28446a7e7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 9 Mar 2018 11:24:41 -0500 Subject: [PATCH 027/385] [plasmalnf] Change to IgnoreAspectRatio It is the distro's responsibility to produce screenshots that look good; previously I chose to preserve the aspect ratio on the grounds that this would keep the look of the screenshot even if the distro had done one in a weird size. This makes the screenshot part of the LNF selection look weird, though, since then you get blank parts. Switch to ignoring the aspect ration; distro's should produce screenshots in a 12x8 (i.e. 3:2) aspect ratio, preferrably at least 120x80 pixels -- but keep in mind hiDPI and the default font sizes of the distro, which may make other sizes look better. (this follows discussion with BlueStar Linux) --- src/modules/plasmalnf/ThemeWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/plasmalnf/ThemeWidget.cpp b/src/modules/plasmalnf/ThemeWidget.cpp index f2a038030..0dd73dbd3 100644 --- a/src/modules/plasmalnf/ThemeWidget.cpp +++ b/src/modules/plasmalnf/ThemeWidget.cpp @@ -58,7 +58,7 @@ ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent) image.fill( QColor( QRgb( hash_color ) ) ); } - image = image.scaled( image_size, Qt::KeepAspectRatio, Qt::SmoothTransformation ); + image = image.scaled( image_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); QLabel* image_label = new QLabel( this ); image_label->setPixmap( image ); From 37e6f92c242ee4cd6aaf54dd795bdaa338daf740 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Fri, 9 Mar 2018 11:34:28 -0500 Subject: [PATCH 028/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_bg.ts | 68 +++++++++++------------ lang/calamares_ca.ts | 14 ++--- lang/calamares_da.ts | 12 ++-- lang/calamares_nb.ts | 118 ++++++++++++++++++++-------------------- lang/calamares_pt_BR.ts | 10 ++-- lang/calamares_tr_TR.ts | 95 ++++++++++++++++---------------- 6 files changed, 159 insertions(+), 158 deletions(-) diff --git a/lang/calamares_bg.ts b/lang/calamares_bg.ts index 18fe9de6c..f9aceecf9 100644 --- a/lang/calamares_bg.ts +++ b/lang/calamares_bg.ts @@ -178,7 +178,7 @@ Cancel installation without changing the system. - Отказ от инсталацията без промяна на системата + Отказ от инсталацията без промяна на системата. @@ -525,7 +525,7 @@ The installer will quit and all changes will be lost. LVM LV name - + LVM LV име @@ -565,7 +565,7 @@ The installer will quit and all changes will be lost. Mountpoint already in use. Please select another one. - Точкака на монтиране вече се използва. Моля изберете друга. + Точката за монтиране вече се използва. Моля изберете друга. @@ -692,7 +692,7 @@ The installer will quit and all changes will be lost. Cannot add user %1 to groups: %2. - Не може да бъе добавен потребител %1 към групи: %2. + Не може да се добави потребител %1 към групи: %2. @@ -789,7 +789,7 @@ The installer will quit and all changes will be lost. Failed to open %1 - + Неуспешно отваряне на %1 @@ -797,7 +797,7 @@ The installer will quit and all changes will be lost. Dummy C++ Job - + Фиктивна С++ задача @@ -855,7 +855,7 @@ The installer will quit and all changes will be lost. Mountpoint already in use. Please select another one. - Точкака на монтиране вече се използва. Моля изберете друга. + Точката за монтиране вече се използва. Моля изберете друга. @@ -883,7 +883,7 @@ The installer will quit and all changes will be lost. Please enter the same passphrase in both boxes. - + Моля, въведете еднаква парола в двете полета. @@ -1003,7 +1003,7 @@ The installer will quit and all changes will be lost. Please install KDE Konsole and try again! - + Моля, инсталирайте KDE Konsole и опитайте отново! @@ -1060,7 +1060,7 @@ The installer will quit and all changes will be lost. &OK - + &ОК @@ -1146,7 +1146,7 @@ The installer will quit and all changes will be lost. The system language will be set to %1. - + Системният език ще бъде %1. @@ -1204,7 +1204,7 @@ The installer will quit and all changes will be lost. Description - + Описание @@ -1222,7 +1222,7 @@ The installer will quit and all changes will be lost. Package selection - + Избор на пакети @@ -1230,17 +1230,17 @@ The installer will quit and all changes will be lost. Password is too short - + Паролата е твърде кратка Password is too long - + Паролата е твърде дълга Password is too weak - + Паролата е твърде слаба @@ -1255,12 +1255,12 @@ The installer will quit and all changes will be lost. The password is the same as the old one - + Паролата съвпада с предишната The password is a palindrome - + Паролата е палиндром @@ -1270,7 +1270,7 @@ The installer will quit and all changes will be lost. The password is too similar to the old one - + Паролата е твърде сходна с предишната @@ -1335,7 +1335,7 @@ The installer will quit and all changes will be lost. The password is too short - + Паролата е твърде кратка @@ -1385,7 +1385,7 @@ The installer will quit and all changes will be lost. No password supplied - + Липсва парола @@ -1465,7 +1465,7 @@ The installer will quit and all changes will be lost. Unknown error - + Неизвестна грешка @@ -2151,7 +2151,7 @@ Output: Failed to write keyboard configuration to existing /etc/default directory. - + Неуспешно записване на клавиатурна конфигурация в съществуващата директория /etc/default. @@ -2164,12 +2164,12 @@ Output: Set flags on %1MB %2 partition. - + Задай флагове на дял %1MB %2. Set flags on new partition. - + Задай флагове на нов дял. @@ -2179,12 +2179,12 @@ Output: Clear flags on %1MB <strong>%2</strong> partition. - + Изчисти флагове на дял %1MB <strong>%2</strong>. Clear flags on new partition. - + Изчисти флагове на нов дял. @@ -2194,12 +2194,12 @@ Output: Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. - + Сложи флаг на дял %1MB <strong>%2</strong> като <strong>%3</strong>. Flag new partition as <strong>%1</strong>. - + Сложи флаг на новия дял като <strong>%1</strong>. @@ -2209,12 +2209,12 @@ Output: Clearing flags on %1MB <strong>%2</strong> partition. - + Изчистване флаговете на дял %1MB <strong>%2</strong>. Clearing flags on new partition. - + Изчистване на флаговете на новия дял. @@ -2224,12 +2224,12 @@ Output: Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. - + Задаване на флагове <strong>%3</strong> на дял %1MB <strong>%2</strong>. Setting flags <strong>%1</strong> on new partition. - + Задаване на флагове <strong>%1</strong> на новия дял. @@ -2423,7 +2423,7 @@ Output: ... - + ... diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index c9f76e58e..84243b5ec 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -9,12 +9,12 @@ This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>EFI</strong>. <br><br> Per configurar una arrencada des d'un entorn EFI, aquest instal·lador ha de desplegar una aplicació de càrrega d'arrencada, com ara el <strong>GRUB</strong> o el <strong>systemd-boot</strong> en una <strong>partició EFI del sistema</strong>. Això és automàtic, llevat que trieu un partiment manual, en què caldrà que ho configureu vosaltres mateixos. + Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>EFI</strong>. <br><br> Per configurar una arrencada des d'un entorn EFI, aquest instal·lador ha de desplegar una aplicació de càrrega d'arrencada, com ara el <strong>GRUB</strong> o el <strong>systemd-boot</strong> en una <strong>partició EFI del sistema</strong>. Això és automàtic, llevat que trieu fer les particions manualment, en què caldrà que ho configureu vosaltres mateixos. This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>BIOS </strong>. Per configurar una arrencada des d'un entorn BIOS, aquest instal·lador ha d'instal·lar un carregador d'arrencada, com ara el <strong>GRUB</strong>, ja sigui al començament d'una partició o al <strong>Registre d'Arrencada Mestre</strong>, a prop del començament de la taula de particions (millor). Això és automàtic, llevat que trieu un partiment manual, en què caldrà que ho configureu pel vostre compte. + Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>BIOS </strong>. Per configurar una arrencada des d'un entorn BIOS, aquest instal·lador ha d'instal·lar un carregador d'arrencada, com ara el <strong>GRUB</strong>, ja sigui al començament d'una partició o al <strong>Registre d'Arrencada Mestre</strong>, a prop del començament de la taula de particions (millor). Això és automàtic, llevat que trieu fer les particions manualment, en què caldrà que ho configureu pel vostre compte. @@ -327,7 +327,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - <strong>Partiment manual</strong><br/>Podeu crear o redimensionar les particions vosaltres mateixos. + <strong>Particions manuals</strong><br/>Podeu crear o redimensionar les particions vosaltres mateixos. @@ -370,7 +370,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - No s'ha pogut trobar enlloc una partició EFI en aquest sistema. Si us plau, torneu enrere i useu el partiment manual per configurar %1. + No s'ha pogut trobar enlloc una partició EFI en aquest sistema. Si us plau, torneu enrere i use les particions manuals per configurar %1. @@ -1711,7 +1711,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. <strong>Manual</strong> partitioning. - Partiment <strong>manual</strong>. + Particions <strong>manuals</strong>. @@ -1731,7 +1731,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - Partiment <strong>manual</strong> del disc <strong>%1</strong> (%2). + Particions <strong>manuals</strong> del disc <strong>%1</strong> (%2). @@ -1982,7 +1982,7 @@ Sortida: <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - <strong>%2</strong><br/><br/>No es pot trobar cap partició EFI enlloc del sistema. Si us plau, torneu enrere i useu el partiment manual per establir %1. + <strong>%2</strong><br/><br/>No es pot trobar cap partició EFI enlloc del sistema. Si us plau, torneu enrere i useu les particions manuals per establir %1. diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts index c1122d135..38eed0dd4 100644 --- a/lang/calamares_da.ts +++ b/lang/calamares_da.ts @@ -1274,7 +1274,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. The password contains the user name in some form - Adgangskoden indeholde i nogen form brugernavnet + Adgangskoden indeholder i nogen form brugernavnet @@ -1289,12 +1289,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. The password contains less than %1 digits - Adgangskoden indeholder færre end %1 tal + Adgangskoden indeholder færre end %1 cifre The password contains too few digits - Adgangskoden indeholder for få tal + Adgangskoden indeholder for få cifre @@ -1419,7 +1419,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Bad integer value of setting - %1 - Dårlig heltalsværdi til indstilling - %1 + Ugyldig heltalsværdi til indstilling - %1 @@ -1845,7 +1845,7 @@ Output: Command <i>%1</i> crashed. - Kommandoen <i>%1</i> holdet op med at virke. + Kommandoen <i>%1</i> holdte op med at virke. @@ -1860,7 +1860,7 @@ Output: Internal error when starting command. - Intern kommando ved start af kommando. + Intern fejl ved start af kommando. diff --git a/lang/calamares_nb.ts b/lang/calamares_nb.ts index 1f4c25f0d..ec19dfe68 100644 --- a/lang/calamares_nb.ts +++ b/lang/calamares_nb.ts @@ -42,7 +42,7 @@ %1 (%2) - + %1 (%2) @@ -120,7 +120,7 @@ Running command %1 %2 - + Kjører kommando %1 %2 @@ -195,17 +195,17 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. &Yes - + &Ja &No - + &Nei &Close - + &Lukk @@ -230,12 +230,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. &Done - + &Ferdig The installation is complete. Close the installer. - + Installasjonen er fullført. Lukk installeringsprogrammet. @@ -289,7 +289,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - + Denne datamaskinen oppfyller ikke minimumskravene for installering %1.<br/> Installeringen kan ikke fortsette. <a href="#details">Detaljer..</a> @@ -309,7 +309,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. System requirements - + Systemkrav @@ -327,7 +327,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + <strong>Manuell partisjonering</strong><br/>Du kan opprette eller endre størrelse på partisjoner selv. @@ -460,7 +460,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Cannot get list of temporary mounts. - Klarer ikke å få tak i listen over midlertidige monterte disker. + Klarte ikke å få tak i listen over midlertidige monterte disker. @@ -656,7 +656,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Creating user %1. - + Oppretter bruker %1. @@ -681,7 +681,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Cannot create user %1. - Klarte ikke å opprette bruker %1 + Klarte ikke opprette bruker %1 @@ -938,7 +938,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. &Restart now - + &Start på nytt nå @@ -948,7 +948,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. - + <h1>Innnstallasjonen mislyktes</h1><br/>%1 har ikke blitt installert på datamaskinen din.<br/>Feilmeldingen var: %2. @@ -961,12 +961,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Installation Complete - + Installasjon fullført The installation of %1 is complete. - + Installasjonen av %1 er fullført. @@ -984,7 +984,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Formatting partition %1 with file system %2. - + Formaterer partisjon %1 med filsystem %2. @@ -1023,12 +1023,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Set keyboard model to %1.<br/> - + Sett tastaturmodell til %1.<br/> Set keyboard layout to %1/%2. - + Sett tastaturoppsett til %1/%2. @@ -1059,7 +1059,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. &OK - + &OK @@ -1098,18 +1098,18 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 driver</strong><br/>fra %2 <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 grafikkdriver</strong><br/><font color="Grey">fra %2</font> <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 nettlesertillegg</strong><br/><font color="Grey">fra %2</font> @@ -1124,7 +1124,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. <strong>%1</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">fra %2</font> @@ -1137,7 +1137,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. License - + Lisens @@ -1166,7 +1166,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. &Change... - + &Endre... @@ -1177,7 +1177,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. %1 (%2) Language (Country) - + %1 (%2) @@ -1229,17 +1229,17 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Password is too short - + Passordet er for kort Password is too long - + Passordet er for langt Password is too weak - + Passordet er for svakt @@ -1254,7 +1254,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. The password is the same as the old one - + Passordet er det samme som det gamle @@ -1269,7 +1269,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. The password is too similar to the old one - + Passordet likner for mye på det gamle @@ -1299,22 +1299,22 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. The password contains less than %1 uppercase letters - + Passordet inneholder mindre enn %1 store bokstaver The password contains too few uppercase letters - + Passordet inneholder for få store bokstaver The password contains less than %1 lowercase letters - + Passordet inneholder mindre enn %1 små bokstaver The password contains too few lowercase letters - + Passordet inneholder for få små bokstaver @@ -1334,7 +1334,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. The password is too short - + Passordet er for kort @@ -1359,7 +1359,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. The password contains too many same characters consecutively - + Passordet inneholder for mange like tegn etter hverandre @@ -1444,7 +1444,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Setting is not of string type - + Innstillingen er ikke av type streng @@ -1464,7 +1464,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Unknown error - + Ukjent feil @@ -1477,12 +1477,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Keyboard Model: - + Tastaturmodell: Type here to test your keyboard - + Skriv her for å teste tastaturet ditt @@ -1495,12 +1495,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. What is your name? - + Hva heter du? What name do you want to use to log in? - + Hvilket navn vil du bruke for å logge inn? @@ -1890,13 +1890,13 @@ Output: Default Keyboard Model - + Standard tastaturmodell Default - + Standard @@ -1954,7 +1954,7 @@ Output: %1 cannot be installed on this partition. - + %1 kan ikke bli installert på denne partisjonen. @@ -2029,22 +2029,22 @@ Output: is plugged in to a power source - + er koblet til en strømkilde The system is not plugged in to a power source. - + Systemet er ikke koblet til en strømkilde. is connected to the Internet - + er tilkoblet Internett The system is not connected to the Internet. - + Systemet er ikke tilkoblet Internett. @@ -2114,7 +2114,7 @@ Output: Internal Error - + Intern feil @@ -2314,7 +2314,7 @@ Output: Cannot open /etc/timezone for writing - + Klarte ikke åpne /etc/timezone for skriving @@ -2463,7 +2463,7 @@ Output: Your username is too long. - + Brukernavnet ditt er for langt. @@ -2497,7 +2497,7 @@ Output: Users - + Brukere @@ -2510,7 +2510,7 @@ Output: &Language: - + &Språk: @@ -2530,7 +2530,7 @@ Output: &About - + &Om @@ -2563,7 +2563,7 @@ Output: Welcome - + Velkommen \ No newline at end of file diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index 1caabe62b..ea326e6a6 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -9,12 +9,12 @@ This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - Este sistema foi iniciado com um ambiente de inicialização <strong>EFI</strong>.<br><br>Para configurar o início a partir de um ambiente EFI, este instalador deverá instalar um gerenciador de inicialização, como o <strong>GRUB</strong> ou <strong>systemd-boot</strong> em uma <strong>Partição de Sistema EFI</strong>. Este processo é automático, a não ser que escolha o particionamento manual, que no caso permite-lhe escolher ou criá-lo manualmente. + Este sistema foi iniciado com um ambiente de inicialização <strong>EFI</strong>.<br><br>Para configurar o início a partir de um ambiente EFI, este instalador deverá instalar um gerenciador de inicialização, como o <strong>GRUB</strong> ou <strong>systemd-boot</strong> em uma <strong>Partição de Sistema EFI</strong>. Esse processo é automático, a não ser que escolha o particionamento manual, que no caso fará você escolher ou criar o gerenciador de inicialização por conta própria. This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - Este sistema foi iniciado utilizando o <strong>BIOS</strong> como ambiente de inicialização.<br><br>Para configurar a inicialização em um ambiente BIOS, este instalador deve instalar um gerenciador de boot, como o <strong>GRUB</strong>, no começo de uma partição ou no <strong>Master Boot Record</strong>, perto do começo da tabela de partições (recomendado). Este processo é automático, a não ser que você escolha o particionamento manual, onde você deverá configurá-lo manualmente. + Este sistema foi iniciado utilizando o <strong>BIOS</strong> como ambiente de inicialização.<br><br>Para configurar a inicialização em um ambiente BIOS, este instalador deve instalar um gerenciador de boot, como o <strong>GRUB</strong>, no começo de uma partição ou no <strong>Master Boot Record</strong>, perto do começo da tabela de partições (recomendado). Esse processo é automático, a não ser que você escolha o particionamento manual, onde você deverá configurá-lo manualmente. @@ -387,7 +387,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - Parece que não há um sistema operacional neste dispositivo. O que você gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. + Parece que não há um sistema operacional neste dispositivo de armazenamento. O que você gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. @@ -1514,7 +1514,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - <small>Se mais de uma pessoa usará este computador, você pode definir múltiplas contas após a instalação.</small> + <small>Se mais de uma pessoa utilizará este computador, você pode definir múltiplas contas após a instalação.</small> @@ -1534,7 +1534,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. <small>This name will be used if you make the computer visible to others on a network.</small> - <small>Este nome será usado caso você deixe o computador visível a outros na rede.</small> + <small>Esse nome será usado caso você deixe o computador visível a outros na rede.</small> diff --git a/lang/calamares_tr_TR.ts b/lang/calamares_tr_TR.ts index 5c4afeb74..1e028db31 100644 --- a/lang/calamares_tr_TR.ts +++ b/lang/calamares_tr_TR.ts @@ -1242,232 +1242,232 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. Password is too weak - + Şifre çok zayıf Memory allocation error when setting '%1' - + '%1' ayarlanırken bellek ayırma hatası Memory allocation error - + Bellek ayırma hatası The password is the same as the old one - + Şifre eski şifreyle aynı The password is a palindrome - + Parola eskilerden birinin ters okunuşu olabilir The password differs with case changes only - + Parola sadece vaka değişiklikleri ile farklılık gösterir The password is too similar to the old one - + Parola eski parolaya çok benzer The password contains the user name in some form - + Parola kullanıcı adını bir biçimde içeriyor The password contains words from the real name of the user in some form - + Şifre, kullanıcının gerçek adına ait kelimeleri bazı biçimde içerir The password contains forbidden words in some form - + Şifre, bazı biçimde yasak kelimeler içeriyor The password contains less than %1 digits - + Şifre %1 den az hane içeriyor The password contains too few digits - + Parola çok az basamak içeriyor The password contains less than %1 uppercase letters - + Parola %1 den az büyük harf içeriyor The password contains too few uppercase letters - + Parola çok az harf içermektedir The password contains less than %1 lowercase letters - + Parola %1 den daha küçük harf içermektedir The password contains too few lowercase letters - + Parola çok az küçük harf içeriyor The password contains less than %1 non-alphanumeric characters - + Şifre %1 den az alfasayısal olmayan karakter içeriyor The password contains too few non-alphanumeric characters - + Parola çok az sayıda alfasayısal olmayan karakter içeriyor The password is shorter than %1 characters - + Parola %1 karakterden kısa The password is too short - + Parola çok kısa The password is just rotated old one - + Şifre önceden kullanıldı The password contains less than %1 character classes - + Parola %1 den az karakter sınıfı içeriyor The password does not contain enough character classes - + Parola yeterli sayıda karakter sınıfı içermiyor The password contains more than %1 same characters consecutively - + Şifre, %1 den fazla aynı karakteri ardışık olarak içeriyor The password contains too many same characters consecutively - + Parola ardışık olarak aynı sayıda çok karakter içeriyor The password contains more than %1 characters of the same class consecutively - + Parola, aynı sınıftan %1 den fazla karakter ardışık olarak içeriyor The password contains too many characters of the same class consecutively - + Parola aynı sınıfta çok fazla karakter içeriyor The password contains monotonic sequence longer than %1 characters - + Şifre, %1 karakterden daha uzun monoton dizilim içeriyor The password contains too long of a monotonic character sequence - + Parola çok uzun monoton karakter dizisi içeriyor No password supplied - + Parola sağlanmadı Cannot obtain random numbers from the RNG device - + RNG cihazından rastgele sayılar elde edemiyor Password generation failed - required entropy too low for settings - + Şifre üretimi başarısız oldu - ayarlar için entropi çok düşük gerekli The password fails the dictionary check - %1 - + Parola, sözlüğü kontrolü başarısız - %1 The password fails the dictionary check - + Parola, sözlük onayı başarısız Unknown setting - %1 - + Bilinmeyen ayar - %1 Unknown setting - + Bilinmeyen ayar Bad integer value of setting - %1 - + Ayarın bozuk tam sayı değeri - %1 Bad integer value - + Yanlış tamsayı değeri Setting %1 is not of integer type - + %1 ayarı tamsayı tipi değil Setting is not of integer type - + Ayar tamsayı tipi değil Setting %1 is not of string type - + Ayar %1, dize tipi değil Setting is not of string type - + Ayar, dize tipi değil Opening the configuration file failed - + Yapılandırma dosyasını açma başarısız oldu The configuration file is malformed - + Yapılandırma dosyası hatalı biçimlendirildi Fatal failure - + Ölümcül arıza Unknown error - + Bilinmeyen hata @@ -1829,7 +1829,8 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. There was no output from the command. - + +Komut çıktısı yok. From 7e2f7dc4146148cc0732a786d294f8c5ff8800c2 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Fri, 9 Mar 2018 11:34:28 -0500 Subject: [PATCH 029/385] i18n: [desktop] Automatic merge of Transifex translations --- calamares.desktop | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/calamares.desktop b/calamares.desktop index fb7647a47..1bb0c0168 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -23,6 +23,10 @@ Categories=Qt;System; +Name[bg]=Calamares +Icon[bg]=calamares +GenericName[bg]=Системен Инсталатор +Comment[bg]=Calamares — Системен Инсталатор Name[ca]=Calamares Icon[ca]=calamares GenericName[ca]=Instal·lador de sistema From 1791ac2d43a18c1c61689dcbec3c0532367f8289 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Fri, 9 Mar 2018 11:34:30 -0500 Subject: [PATCH 030/385] i18n: [dummypythonqt] Automatic merge of Transifex translations --- .../lang/bg/LC_MESSAGES/dummypythonqt.mo | Bin 423 -> 585 bytes .../lang/bg/LC_MESSAGES/dummypythonqt.po | 7 ++++--- .../lang/tr_TR/LC_MESSAGES/dummypythonqt.mo | Bin 991 -> 997 bytes .../lang/tr_TR/LC_MESSAGES/dummypythonqt.po | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.mo index 470525ae3c03bfc99adf9ede7a19efd849d2daf4..348cc26294c8cb7f4ad5b1d04b0a3c36757650f5 100644 GIT binary patch delta 255 zcmZ3^e3GU9o)F7a1|VPtVi_Pd0b*7l_5orLNC0A9AWj5gP9V+);?;}{43$8d4~SKn z7#Ku=v`2C0F8i4{Qt=DG%!x&|f+ T1{PL^W, 2018\n" "Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,11 +20,11 @@ msgstr "" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" -msgstr "" +msgstr "Натисни ме!" #: src/modules/dummypythonqt/main.py:94 msgid "A new QLabel." -msgstr "" +msgstr "Нов QLabel." #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" diff --git a/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.mo index 12c4645f65f7e37608731a4b5759232956ab5261..57e8ac336a81599713f72037dedeced41d905e6a 100644 GIT binary patch delta 105 zcmcc5{*-+}i0NTQ28IM67GPjtP+?|ZFa^@4K$;IoX9H, 2016\n" "Language-Team: Turkish (Turkey) (https://www.transifex.com/calamares/teams/20061/tr_TR/)\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr_TR\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" From a519be130cf68f97054553d276440dd19e9e0971 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Fri, 9 Mar 2018 11:34:31 -0500 Subject: [PATCH 031/385] i18n: [python] Automatic merge of Transifex translations --- lang/python/bg/LC_MESSAGES/python.mo | Bin 423 -> 894 bytes lang/python/bg/LC_MESSAGES/python.po | 11 ++++++----- lang/python/ru/LC_MESSAGES/python.mo | Bin 559 -> 740 bytes lang/python/ru/LC_MESSAGES/python.po | 3 ++- lang/python/tr_TR/LC_MESSAGES/python.mo | Bin 1054 -> 1117 bytes lang/python/tr_TR/LC_MESSAGES/python.po | 4 +++- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lang/python/bg/LC_MESSAGES/python.mo b/lang/python/bg/LC_MESSAGES/python.mo index 98846ddf8564d3191e4d3f2154d33fc173c9b0cc..20ac27ce5d77fcf2b1e8e992eded0b4371a652bc 100644 GIT binary patch literal 894 zcmaiy&2G~`5XTLai*MzO#Bu;7D(jD^KizY+ZxBYj!tDx$z+$ zp%OP9fJ=pl6rd5Wuz3OQyakicv_&nj(ocVTX8tql_5Qdpw`;(f11tfwzDI41tel4C5#0Rbcn5VFaN2pie+Aoihwb8z9r(AO@riqsF8nNrEyGJ|_{C z)+`dU2ysSdi9h03a;%%?JF^^^S~TUo6PCm1NkdccXEao}*1?-p$e1$^H7nJ-m31F& z`mOu5#)jFV85auIWfXVtN;i_Y%{^o`8*N+_lqfLaRidbe3XWUEP60bNkz4ex7Z)7Y zai9>lXfK{LKd5`?S6aBr{UFW3y&HbzIl&Gh1-HKnGnT=ht??oOGwO0DBLDO zQdNG?Uc<$sy2+?5DzMK&-hrRup<)oL!;N|=+AnnN5^dc gHq36!@iE}|0MiG0U+<0I=})kM{|xwR`RVO{0Ua(>umAu6 delta 68 zcmeyzww&4Go)F7a1|VPrVi_P-0b*t#)&XJ=umIv*prj>`2C0F8i7)ymZ)JP{02;ao A@c;k- diff --git a/lang/python/bg/LC_MESSAGES/python.po b/lang/python/bg/LC_MESSAGES/python.po index c64d4dc1c..a86edb07c 100644 --- a/lang/python/bg/LC_MESSAGES/python.po +++ b/lang/python/bg/LC_MESSAGES/python.po @@ -10,6 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-07 18:58+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Georgi Georgiev , 2018\n" "Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -36,18 +37,18 @@ msgstr "" #: src/modules/packages/main.py:62 src/modules/packages/main.py:72 msgid "Install packages." -msgstr "" +msgstr "Инсталирай пакетите." #: src/modules/packages/main.py:65 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Инсталиране на един пакет." +msgstr[1] "Инсталиране на %(num)d пакети." #: src/modules/packages/main.py:68 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Премахване на един пакет." +msgstr[1] "Премахване на %(num)d пакети." diff --git a/lang/python/ru/LC_MESSAGES/python.mo b/lang/python/ru/LC_MESSAGES/python.mo index ffbafcfcc5c0ca3553671755dc1dfce9afc7e5ab..493a6c00bf495f41b073ef65e234b30c4627d406 100644 GIT binary patch delta 251 zcmZ3_@`Sbio)F7a1|VPpVi_RT0b*7lwgF-g2moSjAPxj#9iXCGAZ-c6tAK1qAPoW_ zy>Jjvl%JehT%4Jgu27JeoSm4STCAX, 2018\n" "Language-Team: Russian (https://www.transifex.com/calamares/teams/20061/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,7 +33,7 @@ msgstr "" #: src/modules/packages/main.py:60 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" +msgstr "Обработка пакетов (%(count)d / %(total)d)" #: src/modules/packages/main.py:62 src/modules/packages/main.py:72 msgid "Install packages." diff --git a/lang/python/tr_TR/LC_MESSAGES/python.mo b/lang/python/tr_TR/LC_MESSAGES/python.mo index a95ca03ad5a130c3ac4757fc58e146758ca95e1a..fa297fff9263b5f1bc9a597c23248f58551c3120 100644 GIT binary patch delta 108 zcmbQoahGF4jNM^I28NYDEXcsXkju=#AOfW8fwUx$o&ux=fb=>bZ49LM18Hp_{TWEx w0%>`cjkESM2^(1}6y%f^CFa;_ delta 93 zcmcc1F^^+HjNM*F28NYDEXcsXkj~7&AOfT-fwUx$?gP>SKzap~zY|Dn1NoPMv>cHB f&%ANgekN{1YlVWG(xSv1TZ742%=wc)GkXI7)Eg3K diff --git a/lang/python/tr_TR/LC_MESSAGES/python.po b/lang/python/tr_TR/LC_MESSAGES/python.po index 9c7d98b8f..2acfdf7f9 100644 --- a/lang/python/tr_TR/LC_MESSAGES/python.po +++ b/lang/python/tr_TR/LC_MESSAGES/python.po @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr_TR\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/modules/dummypython/main.py:44 msgid "Dummy python job." @@ -44,9 +44,11 @@ msgstr "Paketleri yükle" msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "%(num)d paket yükleniyor" +msgstr[1] "%(num)d paket yükleniyor" #: src/modules/packages/main.py:68 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." msgstr[0] "%(num)d paket kaldırılıyor." +msgstr[1] "%(num)d paket kaldırılıyor." From d4f0be02d3f01ca5574a2bc50298a38183f4bfbf Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 12 Mar 2018 09:09:29 -0400 Subject: [PATCH 032/385] i18n: make build reproducible The RCC output files in version 2 contain a timestamp of the source file, which changes per build. Drop down to version 1, which just removes the timestamp. See reproducible builds note 'timestamps in source generated by rcc'. FIXES #917 --- CMakeModules/CalamaresAddTranslations.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index 63bf63189..f5dd8c50c 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -61,7 +61,7 @@ macro(add_calamares_translations language) add_custom_command( OUTPUT ${trans_outfile} COMMAND "${Qt5Core_RCC_EXECUTABLE}" - ARGS ${rcc_options} -name ${trans_file} -o ${trans_outfile} ${trans_infile} + ARGS ${rcc_options} --format-version 1 -name ${trans_file} -o ${trans_outfile} ${trans_infile} MAIN_DEPENDENCY ${trans_infile} DEPENDS ${QM_FILES} ) From 902e392b6d422118e4de59ec0d4ccf38629cf119 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 12 Mar 2018 10:13:33 -0400 Subject: [PATCH 033/385] CMake: bump version for -rc4 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5f8c96777..f3c5baca8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -198,7 +198,7 @@ set( CALAMARES_TRANSLATION_LANGUAGES ar ast bg ca cs_CZ da de el en en_GB es_MX set( CALAMARES_VERSION_MAJOR 3 ) set( CALAMARES_VERSION_MINOR 2 ) set( CALAMARES_VERSION_PATCH 0 ) -set( CALAMARES_VERSION_RC 3 ) +set( CALAMARES_VERSION_RC 4 ) set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} ) set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" ) From b95fe2227ffc5bc07d41e1c627fee0020d87d1d8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 14 Mar 2018 08:54:55 -0400 Subject: [PATCH 034/385] CMake: remove debugging from macro --- CMakeModules/CalamaresAddBrandingSubdirectory.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake index 40c153ef7..f5219ca99 100644 --- a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake +++ b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake @@ -64,7 +64,6 @@ function( calamares_add_branding NAME ) foreach( _subdir "" ${_CABT_SUBDIRECTORIES} ) file( GLOB BRANDING_COMPONENT_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${_brand_dir} "${_brand_dir}/${_subdir}/*" ) - message(STATUS "${BRANDING_COMPONENT_FILES}") foreach( BRANDING_COMPONENT_FILE ${BRANDING_COMPONENT_FILES} ) set( _subpath ${_brand_dir}/${BRANDING_COMPONENT_FILE} ) if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${_subpath} ) From abe05ac8abae4662823cbbaab02952ca5fc50434 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 14 Mar 2018 09:12:27 -0400 Subject: [PATCH 035/385] CMake: document add_branding_subdirectory() - add feature to allow (re)naming and to support greater directory depths. --- .../CalamaresAddBrandingSubdirectory.cmake | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake index f5219ca99..77e1b7892 100644 --- a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake +++ b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake @@ -110,23 +110,31 @@ function( calamares_add_branding_translations NAME ) endif() endfunction() -# Usage calamares_add_branding_subdirectory( [SUBDIRECTORIES ...]) +# Usage calamares_add_branding_subdirectory( [NAME ] [SUBDIRECTORIES ...]) # # Adds a branding component from a subdirectory: -# - if there is a CMakeLists.txt, use that -# - otherwise assume a "standard" setup with top-level files and a lang/ dir for translations +# - if there is a CMakeLists.txt, use that (that CMakeLists.txt should +# call suitable calamares_add_branding() and other macros to install +# the branding component). +# - otherwise assume a "standard" setup with top-level files and a lang/ +# subdirectory for translations. +# +# If NAME is given, this is used instead of as the name of +# the branding component. This is needed if is more than +# one level deep, or to rename a component as it gets installed. # # If SUBDIRECTORIES are given, they are relative to , and are # copied (one level deep) to the install location as well. function( calamares_add_branding_subdirectory SUBDIRECTORY ) - cmake_parse_arguments( _CABS "" "" "SUBDIRECTORIES" ${ARGN} ) + set( _CABS_NAME "${SUBDIRECTORY}" ) + cmake_parse_arguments( _CABS "" "NAME" "SUBDIRECTORIES" ${ARGN} ) if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" ) add_subdirectory( ${SUBDIRECTORY} ) elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/branding.desc" ) - calamares_add_branding( ${SUBDIRECTORY} DIRECTORY ${SUBDIRECTORY} SUBDIRECTORIES ${_CABS_SUBDIRECTORIES} ) + calamares_add_branding( ${_CABS_NAME} DIRECTORY ${SUBDIRECTORY} SUBDIRECTORIES ${_CABS_SUBDIRECTORIES} ) if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang" ) - calamares_add_branding_translations( ${SUBDIRECTORY} DIRECTORY ${SUBDIRECTORY} ) + calamares_add_branding_translations( ${_CABS_NAME} DIRECTORY ${SUBDIRECTORY} ) endif() else() message( "-- ${BoldYellow}Warning:${ColorReset} tried to add branding component subdirectory ${BoldRed}${SUBDIRECTORY}${ColorReset} which has no branding.desc." ) From ace30e149a7a3d392fb03650d5e1628fe86612e0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 16 Mar 2018 11:51:50 -0400 Subject: [PATCH 036/385] CMake: fix defaults-handling which was breaking in-tree build --- .../CalamaresAddBrandingSubdirectory.cmake | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake index 77e1b7892..f4eb349f2 100644 --- a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake +++ b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake @@ -54,8 +54,11 @@ include( CMakeColors ) # If SUBDIRECTORIES are given, then those are copied (each one level deep) # to the installation location as well, preserving the subdirectory name. function( calamares_add_branding NAME ) - set( _CABT_DIRECTORY "." ) cmake_parse_arguments( _CABT "" "DIRECTORY" "SUBDIRECTORIES" ${ARGN} ) + if (NOT _CABT_DIRECTORY) + set(_CABT_DIRECTORY ".") + endif() + set( SUBDIRECTORY ${_CABT_DIRECTORY} ) set( _brand_dir ${_CABT_DIRECTORY} ) @@ -92,8 +95,11 @@ endfunction() # the lang/ dir is found in the given instead of the current source # directory. function( calamares_add_branding_translations NAME ) - set( _CABT_DIRECTORY "." ) cmake_parse_arguments( _CABT "" "DIRECTORY" "" ${ARGN} ) + if (NOT _CABT_DIRECTORY) + set(_CABT_DIRECTORY ".") + endif() + set( SUBDIRECTORY ${_CABT_DIRECTORY} ) set( _brand_dir ${_CABT_DIRECTORY} ) @@ -126,8 +132,10 @@ endfunction() # If SUBDIRECTORIES are given, they are relative to , and are # copied (one level deep) to the install location as well. function( calamares_add_branding_subdirectory SUBDIRECTORY ) - set( _CABS_NAME "${SUBDIRECTORY}" ) cmake_parse_arguments( _CABS "" "NAME" "SUBDIRECTORIES" ${ARGN} ) + if (NOT _CABS_NAME) + set(_CABS_NAME "${SUBDIRECTORY}") + endif() if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" ) add_subdirectory( ${SUBDIRECTORY} ) From 24305bd58fe2aa1ba1744e98b415f6d20596ac44 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 27 Mar 2018 11:10:14 -0400 Subject: [PATCH 037/385] CMake: make the translations more transparent; easier to update --- CMakeLists.txt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f3c5baca8..9d004c9d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -185,6 +185,18 @@ if( NOT PYTHONLIBS_FOUND OR NOT PYTHONQT_FOUND ) set( WITH_PYTHONQT OFF ) endif() +### Transifex Translation status +# +# complete = 100% translated +# good = nearly complete (use own judgement) +# ok = incomplete +# bad = 0% translated, placeholder in tx +set( _tx_complete ca zh_CN zh_TW hr cs_CZ da fr lt pt_BR pt_PT es tr_TR) +set( _tx_good sq ja pl sk ro it_IT hu he ru id de nl ) +set( _tx_ok bg uk ast is ar sv el es_MX gl en_GB es_ES th fi_FI hi pl_PL + eu nb sr sl sr@latin mr es_PR kn kk et ) +set( _tx_bad fr_CH gu lo fa ur uz ) + ### ### Calamares application info ### @@ -192,7 +204,8 @@ set( CALAMARES_ORGANIZATION_NAME "Calamares" ) set( CALAMARES_ORGANIZATION_DOMAIN "github.com/calamares" ) set( CALAMARES_APPLICATION_NAME "Calamares" ) set( CALAMARES_DESCRIPTION_SUMMARY "The distribution-independent installer framework" ) -set( CALAMARES_TRANSLATION_LANGUAGES ar ast bg ca cs_CZ da de el en en_GB es_MX es eu fr he hi hr hu id is it_IT ja lt mr nl pl pt_BR pt_PT ro ru sk sq sv th tr_TR zh_CN zh_TW ) +set( CALAMARES_TRANSLATION_LANGUAGES ${_tx_complete} ${_tx_good} ${_tx_ok} ) +list( SORT CALAMARES_TRANSLATION_LANGUAGES ) ### Bump version here set( CALAMARES_VERSION_MAJOR 3 ) From 0f289e25520176e7990aaf48c6765c59bec09a51 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 28 Mar 2018 05:01:07 -0400 Subject: [PATCH 038/385] [calamares]: Improve startup logging - Don't bother with the address of the main thread - Do put a marker on restart into the log file - Do put the Calamares version into the log file (previously, the version was printed through cDebug() before the log file was opened, so it was lost to the on-disk log). --- src/calamares/CalamaresApplication.cpp | 3 --- src/libcalamares/utils/Logger.cpp | 10 ++++++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index f606bb78b..601f6b388 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -65,9 +65,6 @@ CalamaresApplication::CalamaresApplication( int& argc, char* argv[] ) void CalamaresApplication::init() { - cDebug() << "CalamaresApplication thread:" << thread(); - - //TODO: Icon loader Logger::setupLogfile(); setQuitOnLastWindowClosed( false ); diff --git a/src/libcalamares/utils/Logger.cpp b/src/libcalamares/utils/Logger.cpp index fe95ad36b..85a05d22b 100644 --- a/src/libcalamares/utils/Logger.cpp +++ b/src/libcalamares/utils/Logger.cpp @@ -31,6 +31,7 @@ #include #include "utils/CalamaresUtils.h" +#include "CalamaresVersion.h" #define LOGFILE_SIZE 1024 * 256 @@ -145,9 +146,18 @@ setupLogfile() } } + // Since the log isn't open yet, this probably only goes to stdout cDebug() << "Using log file:" << logFile(); + // Lock while (re-)opening the logfile + { + QMutexLocker lock( &s_mutex ); logfile.open( logFile().toLocal8Bit(), std::ios::app ); + if ( logfile.tellp() ) + logfile << "\n\n" << std::endl; + logfile << "=== START CALAMARES " << CALAMARES_VERSION << std::endl; + } + qInstallMessageHandler( CalamaresLogHandler ); } From cdf80615b84bcae215de630055b6b08783544224 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 28 Mar 2018 05:11:34 -0400 Subject: [PATCH 039/385] [libcalamares] Rename the log file --- src/calamares/CalamaresApplication.cpp | 7 ++++++- src/libcalamares/utils/Logger.cpp | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index 601f6b388..2bb0af8df 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -44,7 +44,12 @@ CalamaresApplication::CalamaresApplication( int& argc, char* argv[] ) , m_moduleManager( nullptr ) , m_debugMode( false ) { - setOrganizationName( QLatin1String( CALAMARES_ORGANIZATION_NAME ) ); + // Setting the organization name makes the default cache + // directory -- where Calamares stores logs, for instance -- + // //, so we end up with ~/.cache/Calamares/calamares/ + // which is excessively squidly. + // + // setOrganizationName( QLatin1String( CALAMARES_ORGANIZATION_NAME ) ); setOrganizationDomain( QLatin1String( CALAMARES_ORGANIZATION_DOMAIN ) ); setApplicationName( QLatin1String( CALAMARES_APPLICATION_NAME ) ); setApplicationVersion( QLatin1String( CALAMARES_VERSION ) ); diff --git a/src/libcalamares/utils/Logger.cpp b/src/libcalamares/utils/Logger.cpp index 85a05d22b..5c17cdddc 100644 --- a/src/libcalamares/utils/Logger.cpp +++ b/src/libcalamares/utils/Logger.cpp @@ -119,7 +119,7 @@ CalamaresLogHandler( QtMsgType type, const QMessageLogContext& context, const QS QString logFile() { - return CalamaresUtils::appLogDir().filePath( "Calamares.log" ); + return CalamaresUtils::appLogDir().filePath( "session.log" ); } From d9a1f6b18bc879a398829a2612737538988912ed Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 28 Mar 2018 07:25:22 -0400 Subject: [PATCH 040/385] CMake: restore en to translations list --- CMakeLists.txt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d004c9d0..d74148978 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -187,13 +187,17 @@ endif() ### Transifex Translation status # -# complete = 100% translated -# good = nearly complete (use own judgement) -# ok = incomplete -# bad = 0% translated, placeholder in tx +# complete = 100% translated, +# good = nearly complete (use own judgement, right now < 100 untranslated strings), +# ok = incomplete (100 or more untranslated), +# bad = 0% translated, placeholder in tx; these are not included. +# +# Language en (source language) is added later. It isn't listed in +# Transifex either. Get the list of languages and their status +# from https://transifex.com/calamares/calamares/ . set( _tx_complete ca zh_CN zh_TW hr cs_CZ da fr lt pt_BR pt_PT es tr_TR) set( _tx_good sq ja pl sk ro it_IT hu he ru id de nl ) -set( _tx_ok bg uk ast is ar sv el es_MX gl en_GB es_ES th fi_FI hi pl_PL +set( _tx_ok bg uk ast is ar sv el es_MX gl en_GB es_ES th fi_FI hi pl_PL eu nb sr sl sr@latin mr es_PR kn kk et ) set( _tx_bad fr_CH gu lo fa ur uz ) @@ -204,7 +208,7 @@ set( CALAMARES_ORGANIZATION_NAME "Calamares" ) set( CALAMARES_ORGANIZATION_DOMAIN "github.com/calamares" ) set( CALAMARES_APPLICATION_NAME "Calamares" ) set( CALAMARES_DESCRIPTION_SUMMARY "The distribution-independent installer framework" ) -set( CALAMARES_TRANSLATION_LANGUAGES ${_tx_complete} ${_tx_good} ${_tx_ok} ) +set( CALAMARES_TRANSLATION_LANGUAGES en ${_tx_complete} ${_tx_good} ${_tx_ok} ) list( SORT CALAMARES_TRANSLATION_LANGUAGES ) ### Bump version here From e2b8fb0afed3c0df351d8bd1da675149674f2ad1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 28 Mar 2018 07:47:13 -0400 Subject: [PATCH 041/385] [welcome] Log if no translations matched at all --- src/modules/welcome/WelcomePage.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index 852a5bfb9..5781b3a58 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -162,6 +162,7 @@ WelcomePage::initLanguages() QLocale thisLocale = ui->languageWidget->itemData( i, Qt::UserRole ).toLocale(); if ( thisLocale == QLocale( QLocale::English, QLocale::UnitedStates ) ) { + isTranslationAvailable = true; ui->languageWidget->setCurrentIndex( i ); cDebug() << "Translation unavailable, so initial locale set to " << thisLocale.name(); QLocale::setDefault( thisLocale ); @@ -173,6 +174,9 @@ WelcomePage::initLanguages() } } + if ( !isTranslationAvailable ) + cWarning() << "No available translation matched" << defaultLocale; + connect( ui->languageWidget, static_cast< void ( QComboBox::* )( int ) >( &QComboBox::currentIndexChanged ), this, [ & ]( int newIndex ) From 3e30bb682e0b78ea5fe10691062d5cfbf509827b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 28 Mar 2018 09:22:37 -0400 Subject: [PATCH 042/385] [libcalamaresui] Use cError() for logging errors, not cLog() --- src/libcalamaresui/modulesystem/Module.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index 91642f415..f80f4d48b 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -72,8 +72,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, if ( typeString.isEmpty() || intfString.isEmpty() ) { - cLog() << Q_FUNC_INFO << "bad module descriptor format" - << instanceId; + cError() << "Bad module descriptor format" << instanceId; return nullptr; } if ( ( typeString == "view" ) || ( typeString == "viewmodule" ) ) @@ -87,11 +86,11 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, #ifdef WITH_PYTHONQT m = new PythonQtViewModule(); #else - cLog() << "PythonQt modules are not supported in this version of Calamares."; + cError() << "PythonQt modules are not supported in this version of Calamares."; #endif } else - cLog() << "Bad interface" << intfString << "for module type" << typeString; + cError() << "Bad interface" << intfString << "for module type" << typeString; } else if ( typeString == "job" ) { @@ -108,18 +107,18 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, #ifdef WITH_PYTHON m = new PythonJobModule(); #else - cLog() << "Python modules are not supported in this version of Calamares."; + cError() << "Python modules are not supported in this version of Calamares."; #endif } else - cLog() << "Bad interface" << intfString << "for module type" << typeString; + cError() << "Bad interface" << intfString << "for module type" << typeString; } else - cLog() << "Bad module type" << typeString; + cError() << "Bad module type" << typeString; if ( !m ) { - cLog() << "Bad module type (" << typeString + cDebug() << "Bad module type (" << typeString << ") or interface string (" << intfString << ") for module " << instanceId; return nullptr; @@ -130,8 +129,8 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, m->m_directory = moduleDir.absolutePath(); else { - cLog() << Q_FUNC_INFO << "bad module directory" - << instanceId; + cError() << "Bad module directory" << moduleDirectory + << "for" << instanceId; delete m; return nullptr; } From ad6227ce2153117b82040f080cd89c0e769f46ca Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 28 Mar 2018 09:27:11 -0400 Subject: [PATCH 043/385] [libcalamares] Remove internal functions from the logging API --- src/libcalamares/utils/Logger.cpp | 4 ++-- src/libcalamares/utils/Logger.h | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/libcalamares/utils/Logger.cpp b/src/libcalamares/utils/Logger.cpp index 5c17cdddc..17ccb60ad 100644 --- a/src/libcalamares/utils/Logger.cpp +++ b/src/libcalamares/utils/Logger.cpp @@ -86,7 +86,7 @@ log( const char* msg, unsigned int debugLevel, bool toDisk = true ) } -void +static void CalamaresLogHandler( QtMsgType type, const QMessageLogContext& context, const QString& msg ) { static QMutex s_mutex; @@ -116,7 +116,7 @@ CalamaresLogHandler( QtMsgType type, const QMessageLogContext& context, const QS } -QString +static QString logFile() { return CalamaresUtils::appLogDir().filePath( "session.log" ); diff --git a/src/libcalamares/utils/Logger.h b/src/libcalamares/utils/Logger.h index b6211c4fe..2c8cb0809 100644 --- a/src/libcalamares/utils/Logger.h +++ b/src/libcalamares/utils/Logger.h @@ -58,9 +58,14 @@ namespace Logger virtual ~CDebug(); }; - DLLEXPORT void CalamaresLogHandler( QtMsgType type, const QMessageLogContext& context, const QString& msg ); + /** + * @brief Start logging to the log file. + * + * Call this (once) to start logging to the log file (usually + * ~/.cache/calamares/session.log ). An existing log file is + * rolled over if it is too large. + */ DLLEXPORT void setupLogfile(); - DLLEXPORT QString logFile(); /** * @brief Set a log level for future logging. From 6bb72d173d8bb5ef45aed983e5c89620e134d6ab Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 28 Mar 2018 09:31:45 -0400 Subject: [PATCH 044/385] [libcalamares] Drop generic cLog() - Use cWarning or cError() for errors - Use cDebug(level) for other uses (but there aren't any) --- src/libcalamares/JobQueue.cpp | 2 +- src/libcalamares/utils/Logger.h | 3 +-- src/libcalamaresui/ViewManager.cpp | 8 ++++---- src/modules/partition/core/PartitionModel.cpp | 2 +- src/modules/users/SetHostNameJob.cpp | 8 ++++---- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp index b5bdf0543..339fd8457 100644 --- a/src/libcalamares/JobQueue.cpp +++ b/src/libcalamares/JobQueue.cpp @@ -54,7 +54,7 @@ public: for( auto job : m_jobs ) { emitProgress(); - cLog() << "Starting job" << job->prettyName(); + cDebug() << "Starting job" << job->prettyName(); connect( job.data(), &Job::progress, this, &JobThread::emitProgress ); JobResult result = job->exec(); if ( !result ) diff --git a/src/libcalamares/utils/Logger.h b/src/libcalamares/utils/Logger.h index 2c8cb0809..2da602d23 100644 --- a/src/libcalamares/utils/Logger.h +++ b/src/libcalamares/utils/Logger.h @@ -41,7 +41,7 @@ namespace Logger class DLLEXPORT CLog : public QDebug { public: - CLog( unsigned int debugLevel = 0 ); + explicit CLog( unsigned int debugLevel ); virtual ~CLog(); private: @@ -79,7 +79,6 @@ namespace Logger DLLEXPORT void setupLogLevel( unsigned int level ); } -#define cLog Logger::CLog #define cDebug Logger::CDebug #define cWarning() Logger::CDebug(Logger::LOGWARNING) << "WARNING:" #define cError() Logger::CDebug(Logger::LOGERROR) << "ERROR:" diff --git a/src/libcalamaresui/ViewManager.cpp b/src/libcalamaresui/ViewManager.cpp index 2be3e3832..e597bf6a3 100644 --- a/src/libcalamaresui/ViewManager.cpp +++ b/src/libcalamaresui/ViewManager.cpp @@ -150,9 +150,9 @@ ViewManager::insertViewStep( int before, ViewStep* step ) void ViewManager::onInstallationFailed( const QString& message, const QString& details ) { - cLog() << "Installation failed:"; - cLog() << "- message:" << message; - cLog() << "- details:" << details; + cError() << "Installation failed:"; + cDebug() << "- message:" << message; + cDebug() << "- details:" << details; QMessageBox* msgBox = new QMessageBox(); msgBox->setIcon( QMessageBox::Critical ); @@ -167,7 +167,7 @@ ViewManager::onInstallationFailed( const QString& message, const QString& detail msgBox->setInformativeText( text ); connect( msgBox, &QMessageBox::buttonClicked, qApp, &QApplication::quit ); - cLog() << "Calamares will quit when the dialog closes."; + cDebug() << "Calamares will quit when the dialog closes."; msgBox->show(); } diff --git a/src/modules/partition/core/PartitionModel.cpp b/src/modules/partition/core/PartitionModel.cpp index bf61843d0..0265da29d 100644 --- a/src/modules/partition/core/PartitionModel.cpp +++ b/src/modules/partition/core/PartitionModel.cpp @@ -115,7 +115,7 @@ PartitionModel::parent( const QModelIndex& child ) const return createIndex( row, 0, parentNode ); ++row; } - cLog() << "No parent found!"; + cWarning() << "No parent found!"; return QModelIndex(); } diff --git a/src/modules/users/SetHostNameJob.cpp b/src/modules/users/SetHostNameJob.cpp index 948f78d17..87c89c3b8 100644 --- a/src/modules/users/SetHostNameJob.cpp +++ b/src/modules/users/SetHostNameJob.cpp @@ -57,21 +57,21 @@ Calamares::JobResult SetHostNameJob::exec() if ( !gs || !gs->contains( "rootMountPoint" ) ) { - cLog() << "No rootMountPoint in global storage"; + cError() << "No rootMountPoint in global storage"; return Calamares::JobResult::error( tr( "Internal Error" ) ); } QString destDir = gs->value( "rootMountPoint" ).toString(); if ( !QDir( destDir ).exists() ) { - cLog() << "rootMountPoint points to a dir which does not exist"; + cError() << "rootMountPoint points to a dir which does not exist"; return Calamares::JobResult::error( tr( "Internal Error" ) ); } QFile hostfile( destDir + "/etc/hostname" ); if ( !hostfile.open( QFile::WriteOnly ) ) { - cLog() << "Can't write to hostname file"; + cError() << "Can't write to hostname file"; return Calamares::JobResult::error( tr( "Cannot write hostname to target system" ) ); } @@ -82,7 +82,7 @@ Calamares::JobResult SetHostNameJob::exec() QFile hostsfile( destDir + "/etc/hosts" ); if ( !hostsfile.open( QFile::WriteOnly ) ) { - cLog() << "Can't write to hosts file"; + cError() << "Can't write to hosts file"; return Calamares::JobResult::error( tr( "Cannot write hostname to target system" ) ); } From 94000b6847c01b947b8a8a5b572bddbc7ddfcf4a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 29 Mar 2018 04:33:55 -0400 Subject: [PATCH 045/385] [plasmalnf] Improve wording of LnF explanation. --- src/modules/plasmalnf/PlasmaLnfPage.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/plasmalnf/PlasmaLnfPage.cpp b/src/modules/plasmalnf/PlasmaLnfPage.cpp index 2b171cc40..8462261c9 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.cpp +++ b/src/modules/plasmalnf/PlasmaLnfPage.cpp @@ -61,7 +61,11 @@ PlasmaLnfPage::PlasmaLnfPage( QWidget* parent ) CALAMARES_RETRANSLATE( { ui->retranslateUi( this ); - ui->generalExplanation->setText( tr( "Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed." ) ); + ui->generalExplanation->setText( tr( + "Please choose a look-and-feel for the KDE Plasma Desktop. " + "You can also skip this step and configure the look-and-feel " + "once the system is installed. Clicking on a look-and-feel " + "selection will give you a live preview of that look-and-feel.") ); updateThemeNames(); fillUi(); } From 11652c585669d3d25615f1fbd3edaf7d6e17142c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 29 Mar 2018 04:45:34 -0400 Subject: [PATCH 046/385] [plasmalnf] Add pre-selected theme - For OEM modes where there is already a theme, add a preselect: key to pick a specific theme and have that one come up as already- selected in the list. - Don't re-run the lnftool if an already-selected theme is clicked again. Use toggled() instead of clicked(). --- src/modules/plasmalnf/PlasmaLnfPage.cpp | 15 +++++++++++++++ src/modules/plasmalnf/PlasmaLnfPage.h | 3 +++ src/modules/plasmalnf/PlasmaLnfViewStep.cpp | 6 ++++++ src/modules/plasmalnf/PlasmaLnfViewStep.h | 6 +++--- src/modules/plasmalnf/ThemeWidget.cpp | 2 +- src/modules/plasmalnf/plasmalnf.conf | 12 ++++++++++++ 6 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/modules/plasmalnf/PlasmaLnfPage.cpp b/src/modules/plasmalnf/PlasmaLnfPage.cpp index 8462261c9..2638ca9b1 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.cpp +++ b/src/modules/plasmalnf/PlasmaLnfPage.cpp @@ -23,6 +23,8 @@ #include "utils/Logger.h" #include "utils/Retranslator.h" +#include + #include #include @@ -94,6 +96,14 @@ PlasmaLnfPage::setEnabledThemesAll() setEnabledThemes( plasma_themes() ); } +void +PlasmaLnfPage::setPreselect( const QString& id ) +{ + m_preselect = id; + if ( !m_enabledThemes.isEmpty() ) + fillUi(); +} + void PlasmaLnfPage::updateThemeNames() { @@ -166,6 +176,11 @@ void PlasmaLnfPage::fillUi() { theme.widget->updateThemeName( theme ); } + if ( theme.id == m_preselect ) + { + const QSignalBlocker b( theme.widget->button() ); + theme.widget->button()->setChecked( true ); + } ++c; } } diff --git a/src/modules/plasmalnf/PlasmaLnfPage.h b/src/modules/plasmalnf/PlasmaLnfPage.h index e489e99a7..104fca83d 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.h +++ b/src/modules/plasmalnf/PlasmaLnfPage.h @@ -50,6 +50,8 @@ public: void setEnabledThemes( const ThemeInfoList& themes ); /** @brief enable all installed plasma themes. */ void setEnabledThemesAll(); + /** @brief set which theme is to be preselected. */ + void setPreselect( const QString& id ); signals: void plasmaThemeSelected( const QString& id ); @@ -64,6 +66,7 @@ private: Ui::PlasmaLnfPage* ui; QString m_lnfPath; + QString m_preselect; ThemeInfoList m_enabledThemes; QButtonGroup *m_buttonGroup; diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp index db8529d56..a14b8e338 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp @@ -137,6 +137,12 @@ PlasmaLnfViewStep::setConfigurationMap( const QVariantMap& configurationMap ) liveUser = configurationMap.value( "liveuser" ).toString(); m_liveUser = liveUser; + QString preselect; + if ( configurationMap.contains( "preselect" ) && configurationMap.value( "preselect" ).type() == QVariant::String ) + preselect = configurationMap.value( "preselect" ).toString(); + if ( !preselect.isEmpty() ) + m_widget->setPreselect( preselect ); + if ( configurationMap.contains( "themes" ) && configurationMap.value( "themes" ).type() == QVariant::List ) { diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.h b/src/modules/plasmalnf/PlasmaLnfViewStep.h index 7fcfc50cc..1fa4139e1 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.h +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.h @@ -61,9 +61,9 @@ public slots: private: PlasmaLnfPage* m_widget; - QString m_lnfPath; - QString m_themeId; - QString m_liveUser; + QString m_lnfPath; // Path to the lnf tool + QString m_themeId; // Id of selected theme + QString m_liveUser; // Name of the live user (for OEM mode) }; CALAMARES_PLUGIN_FACTORY_DECLARATION( PlasmaLnfViewStepFactory ) diff --git a/src/modules/plasmalnf/ThemeWidget.cpp b/src/modules/plasmalnf/ThemeWidget.cpp index 28e01c2ff..68a8c5f83 100644 --- a/src/modules/plasmalnf/ThemeWidget.cpp +++ b/src/modules/plasmalnf/ThemeWidget.cpp @@ -62,7 +62,7 @@ ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent) layout->addWidget( image_label, 1 ); layout->addWidget( m_description, 3 ); - connect( m_check, &QRadioButton::clicked, this, &ThemeWidget::clicked ); + connect( m_check, &QRadioButton::toggled, this, &ThemeWidget::clicked ); } void diff --git a/src/modules/plasmalnf/plasmalnf.conf b/src/modules/plasmalnf/plasmalnf.conf index aa9865117..49a91b3b5 100644 --- a/src/modules/plasmalnf/plasmalnf.conf +++ b/src/modules/plasmalnf/plasmalnf.conf @@ -27,3 +27,15 @@ themes: - theme: org.kde.breezedark.desktop image: "breeze-dark.png" - org.kde.fluffy-bunny.desktop + +# You can pre-select one of the themes; it is not applied +# immediately, but its radio-button is switched on to indicate +# that that is the theme (that is most likely) currently in use. +# Do this only on Live images where you are reasonably sure +# that the user is not going to change the theme out from under +# themselves before running the installer. +# +# If this key is present, its value should be the id of the theme +# which should be pre-selected. If absent, empty, or the pre-selected +# theme is not found on the live system, no theme will be pre-selected. +preselect: org.kde.breeze.desktop From c2efae765da30d3c3e28518ed8f8a976143bc007 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 29 Mar 2018 08:49:22 -0400 Subject: [PATCH 047/385] [plasmalnf] Add auto-detection of Plasma theme. - Although it's not necessarily accurate for an extensively-modified Plasma configuration, we can read the Look-and-Feel from the configuration files. Allows auto-detection. --- src/modules/plasmalnf/CMakeLists.txt | 16 +++++++++++++++- src/modules/plasmalnf/PlasmaLnfViewStep.cpp | 19 +++++++++++++++++++ src/modules/plasmalnf/plasmalnf.conf | 6 +++++- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/modules/plasmalnf/CMakeLists.txt b/src/modules/plasmalnf/CMakeLists.txt index 15897f98c..e39b1af9f 100644 --- a/src/modules/plasmalnf/CMakeLists.txt +++ b/src/modules/plasmalnf/CMakeLists.txt @@ -4,8 +4,13 @@ find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE) # needs a runtime support component (which we don't test for). set( lnf_ver 5.41 ) +find_package( KF5Config ${lnf_ver} ) find_package( KF5Plasma ${lnf_ver} ) find_package( KF5Package ${lnf_ver} ) +set_package_properties( + KF5Config PROPERTIES + PURPOSE "For finding default Plasma Look-and-Feel" +) set_package_properties( KF5Plasma PROPERTIES PURPOSE "For Plasma Look-and-Feel selection" @@ -16,11 +21,19 @@ set_package_properties( ) if ( KF5Plasma_FOUND AND KF5Package_FOUND ) - find_package( KF5 ${lnf_ver} REQUIRED CoreAddons Plasma Package ) + if ( KF5Config_FOUND ) + set( option_kf5 Config ) + set( option_defs WITH_KCONFIG ) + # set( option_libs KF5::Config ) # Not needed anyway + endif() + + find_package( KF5 ${lnf_ver} REQUIRED CoreAddons Plasma Package ${option_kf5} ) calamares_add_plugin( plasmalnf TYPE viewmodule EXPORT_MACRO PLUGINDLLEXPORT_PRO + COMPILE_DEFINITIONS + ${option_defs} SOURCES PlasmaLnfViewStep.cpp PlasmaLnfPage.cpp @@ -32,6 +45,7 @@ if ( KF5Plasma_FOUND AND KF5Package_FOUND ) page_plasmalnf.ui LINK_PRIVATE_LIBRARIES calamaresui + ${option_libs} KF5::Package KF5::Plasma SHARED_LIB diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp index a14b8e338..2ba4f7bca 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp @@ -26,8 +26,25 @@ #include #include +#ifdef WITH_KCONFIG +#include +#include +#endif + CALAMARES_PLUGIN_FACTORY_DEFINITION( PlasmaLnfViewStepFactory, registerPlugin(); ) +static QString +currentPlasmaTheme() +{ +#ifdef WITH_KCONFIG + KConfigGroup cg( KSharedConfig::openConfig( QStringLiteral( "kdeglobals" ) ), "KDE" ); + return cg.readEntry( "LookAndFeelPackage", QString() ); +#else + cWarning() << "No KConfig support, cannot determine Plasma theme."; + return QString(); +#endif +} + PlasmaLnfViewStep::PlasmaLnfViewStep( QObject* parent ) : Calamares::ViewStep( parent ) , m_widget( new PlasmaLnfPage ) @@ -140,6 +157,8 @@ PlasmaLnfViewStep::setConfigurationMap( const QVariantMap& configurationMap ) QString preselect; if ( configurationMap.contains( "preselect" ) && configurationMap.value( "preselect" ).type() == QVariant::String ) preselect = configurationMap.value( "preselect" ).toString(); + if ( preselect == QStringLiteral( "*" ) ) + preselect = currentPlasmaTheme(); if ( !preselect.isEmpty() ) m_widget->setPreselect( preselect ); diff --git a/src/modules/plasmalnf/plasmalnf.conf b/src/modules/plasmalnf/plasmalnf.conf index 49a91b3b5..e6ed88e77 100644 --- a/src/modules/plasmalnf/plasmalnf.conf +++ b/src/modules/plasmalnf/plasmalnf.conf @@ -38,4 +38,8 @@ themes: # If this key is present, its value should be the id of the theme # which should be pre-selected. If absent, empty, or the pre-selected # theme is not found on the live system, no theme will be pre-selected. -preselect: org.kde.breeze.desktop +# +# As a special setting, use "*", to try to find the currently- +# selected theme by reading the Plasma configuration. This requires +# KF5::Config at build- and run-time. +preselect: "*" From b0828faadb4eccbd4c2441d23860e452b406a434 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 29 Mar 2018 09:57:19 -0400 Subject: [PATCH 048/385] [plasmalnf] New setting to show all installed LnF themes - This enables working in three modes: - No themes listed; all are shown without screenshots, - Themes listed, showAll false; only those are shown, - Themes listed, showAll true; the installed-but-not-listed themes are shown after the listed ones, and have limited info. --- src/modules/plasmalnf/PlasmaLnfPage.cpp | 15 +++++++++++++++ src/modules/plasmalnf/PlasmaLnfPage.h | 3 +++ src/modules/plasmalnf/PlasmaLnfViewStep.cpp | 5 +++++ src/modules/plasmalnf/plasmalnf.conf | 12 ++++++++++-- 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/modules/plasmalnf/PlasmaLnfPage.cpp b/src/modules/plasmalnf/PlasmaLnfPage.cpp index 2638ca9b1..247fa950b 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.cpp +++ b/src/modules/plasmalnf/PlasmaLnfPage.cpp @@ -57,6 +57,7 @@ static ThemeInfoList plasma_themes() PlasmaLnfPage::PlasmaLnfPage( QWidget* parent ) : QWidget( parent ) , ui( new Ui::PlasmaLnfPage ) + , m_showAll( false ) , m_buttonGroup( nullptr ) { ui->setupUi( this ); @@ -85,6 +86,14 @@ PlasmaLnfPage::setEnabledThemes(const ThemeInfoList& themes) { m_enabledThemes = themes; + if ( m_showAll ) + { + auto plasmaThemes = plasma_themes(); + for ( auto& installed_theme : plasmaThemes ) + if ( !m_enabledThemes.findById( installed_theme.id ) ) + m_enabledThemes.append( installed_theme ); + } + updateThemeNames(); winnowThemes(); fillUi(); @@ -104,6 +113,12 @@ PlasmaLnfPage::setPreselect( const QString& id ) fillUi(); } +void +PlasmaLnfPage::setShowAll(bool b) +{ + m_showAll = b; +} + void PlasmaLnfPage::updateThemeNames() { diff --git a/src/modules/plasmalnf/PlasmaLnfPage.h b/src/modules/plasmalnf/PlasmaLnfPage.h index 104fca83d..564b61fef 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.h +++ b/src/modules/plasmalnf/PlasmaLnfPage.h @@ -52,6 +52,8 @@ public: void setEnabledThemesAll(); /** @brief set which theme is to be preselected. */ void setPreselect( const QString& id ); + /** @brief set whether to show all themes, not just the listed ones. */ + void setShowAll( bool b ); signals: void plasmaThemeSelected( const QString& id ); @@ -67,6 +69,7 @@ private: Ui::PlasmaLnfPage* ui; QString m_lnfPath; QString m_preselect; + bool m_showAll; // If true, don't winnow according to enabledThemes ThemeInfoList m_enabledThemes; QButtonGroup *m_buttonGroup; diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp index 2ba4f7bca..929d57360 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp @@ -162,6 +162,11 @@ PlasmaLnfViewStep::setConfigurationMap( const QVariantMap& configurationMap ) if ( !preselect.isEmpty() ) m_widget->setPreselect( preselect ); + bool showAll( false ); + if ( configurationMap.contains( "showAll" ) && configurationMap.value( "showAll" ).type() == QVariant::Bool ) + showAll = configurationMap.value( "showAll" ).toBool(); + m_widget->setShowAll( showAll ); + if ( configurationMap.contains( "themes" ) && configurationMap.value( "themes" ).type() == QVariant::List ) { diff --git a/src/modules/plasmalnf/plasmalnf.conf b/src/modules/plasmalnf/plasmalnf.conf index e6ed88e77..a3a80fcff 100644 --- a/src/modules/plasmalnf/plasmalnf.conf +++ b/src/modules/plasmalnf/plasmalnf.conf @@ -13,8 +13,9 @@ lnftool: "/usr/bin/lookandfeeltool" # You can limit the list of Plasma look-and-feel themes by listing ids # here. If this key is not present, all of the installed themes are listed. -# If the key is present, only installed themes that are *also* included -# in the list are shown (could be none!). +# If the key is present, only installed themes that are **also** included +# in the list are shown (could be none!). See the *showAll* key, below, +# to change that. # # Themes may be listed by id, (e.g. fluffy-bunny, below) or as a theme # and an image (e.g. breeze) which will be used to show a screenshot. @@ -28,6 +29,13 @@ themes: image: "breeze-dark.png" - org.kde.fluffy-bunny.desktop +# If *showAll* is true, then all installed themes are shown in the +# UI for selection, even if they are not listed in *themes*. This +# allows selection of all themes even while not all of them are +# listed in *themes* -- which is useful to show screenshots for those +# you do have a screenshot for. +showAll: false + # You can pre-select one of the themes; it is not applied # immediately, but its radio-button is switched on to indicate # that that is the theme (that is most likely) currently in use. From fb93a8288e74cdbcca90b905dadc72649d9e76ff Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 29 Mar 2018 10:09:45 -0400 Subject: [PATCH 049/385] [plasmalnf] Simplify showAll handling - Only need the showAll parameter once, when passing in the list of themes to show. --- src/modules/plasmalnf/PlasmaLnfPage.cpp | 15 +++++---------- src/modules/plasmalnf/PlasmaLnfPage.h | 11 +++++++---- src/modules/plasmalnf/PlasmaLnfViewStep.cpp | 11 +++++------ 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/src/modules/plasmalnf/PlasmaLnfPage.cpp b/src/modules/plasmalnf/PlasmaLnfPage.cpp index 247fa950b..c65e79ba2 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.cpp +++ b/src/modules/plasmalnf/PlasmaLnfPage.cpp @@ -82,11 +82,11 @@ PlasmaLnfPage::setLnfPath( const QString& path ) } void -PlasmaLnfPage::setEnabledThemes(const ThemeInfoList& themes) +PlasmaLnfPage::setEnabledThemes(const ThemeInfoList& themes, bool showAll ) { m_enabledThemes = themes; - if ( m_showAll ) + if ( showAll ) { auto plasmaThemes = plasma_themes(); for ( auto& installed_theme : plasmaThemes ) @@ -102,7 +102,9 @@ PlasmaLnfPage::setEnabledThemes(const ThemeInfoList& themes) void PlasmaLnfPage::setEnabledThemesAll() { - setEnabledThemes( plasma_themes() ); + // Don't need to set showAll=true, because we're already passing in + // the complete list of installed themes. + setEnabledThemes( plasma_themes(), false ); } void @@ -113,13 +115,6 @@ PlasmaLnfPage::setPreselect( const QString& id ) fillUi(); } -void -PlasmaLnfPage::setShowAll(bool b) -{ - m_showAll = b; -} - - void PlasmaLnfPage::updateThemeNames() { auto plasmaThemes = plasma_themes(); diff --git a/src/modules/plasmalnf/PlasmaLnfPage.h b/src/modules/plasmalnf/PlasmaLnfPage.h index 564b61fef..49a6ff69a 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.h +++ b/src/modules/plasmalnf/PlasmaLnfPage.h @@ -46,14 +46,17 @@ public: explicit PlasmaLnfPage( QWidget* parent = nullptr ); void setLnfPath( const QString& path ); - /** @brief enable only the listed themes. */ - void setEnabledThemes( const ThemeInfoList& themes ); + /** @brief enable only the listed themes. + * + * Shows the listed @p themes with full information (e.g. screenshot). + * If @p showAll is true, then also show all installed themes + * not explicitly listed (without a screenshot). + */ + void setEnabledThemes( const ThemeInfoList& themes, bool showAll ); /** @brief enable all installed plasma themes. */ void setEnabledThemesAll(); /** @brief set which theme is to be preselected. */ void setPreselect( const QString& id ); - /** @brief set whether to show all themes, not just the listed ones. */ - void setShowAll( bool b ); signals: void plasmaThemeSelected( const QString& id ); diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp index 929d57360..498a40fe0 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp @@ -165,12 +165,11 @@ PlasmaLnfViewStep::setConfigurationMap( const QVariantMap& configurationMap ) bool showAll( false ); if ( configurationMap.contains( "showAll" ) && configurationMap.value( "showAll" ).type() == QVariant::Bool ) showAll = configurationMap.value( "showAll" ).toBool(); - m_widget->setShowAll( showAll ); if ( configurationMap.contains( "themes" ) && configurationMap.value( "themes" ).type() == QVariant::List ) { - ThemeInfoList allThemes; + ThemeInfoList listedThemes; auto themeList = configurationMap.value( "themes" ).toList(); // Create the ThemInfo objects for the listed themes; information // about the themes from Plasma (e.g. human-readable name and description) @@ -179,14 +178,14 @@ PlasmaLnfViewStep::setConfigurationMap( const QVariantMap& configurationMap ) if ( i.type() == QVariant::Map ) { auto iv = i.toMap(); - allThemes.append( ThemeInfo( iv.value( "theme" ).toString(), iv.value( "image" ).toString() ) ); + listedThemes.append( ThemeInfo( iv.value( "theme" ).toString(), iv.value( "image" ).toString() ) ); } else if ( i.type() == QVariant::String ) - allThemes.append( ThemeInfo( i.toString() ) ); + listedThemes.append( ThemeInfo( i.toString() ) ); - if ( allThemes.length() == 1 ) + if ( listedThemes.length() == 1 ) cDebug() << "WARNING: only one theme enabled in plasmalnf"; - m_widget->setEnabledThemes( allThemes ); + m_widget->setEnabledThemes( listedThemes, showAll ); } else m_widget->setEnabledThemesAll(); // All of them From 32a1c849352c6e5650dc0cf17e3e90bf397a172d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 29 Mar 2018 16:50:02 -0400 Subject: [PATCH 050/385] [locale] Document the settings in locale.conf - The geoipUrl is weird, because it is not a complete URL. Document that, and what kind of data is expected. FIXES #920 --- src/modules/locale/locale.conf | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/modules/locale/locale.conf b/src/modules/locale/locale.conf index 824c8abeb..88148f47a 100644 --- a/src/modules/locale/locale.conf +++ b/src/modules/locale/locale.conf @@ -1,7 +1,33 @@ --- +# The starting timezone (e.g. the pin-on-the-map) when entering +# the locale page can be set through keys *region* and *zone*. +# If either is not set, defaults to America/New_York. +# region: "America" zone: "New_York" -# GeoIP settings. Leave commented out to disable GeoIP. +# Some distros come with a meaningfully commented and easy to parse +# `/etc/locale.gen`, and others ship a separate file +# `/usr/share/i18n/SUPPORTED` with a clean list of supported locales. +# We first try SUPPORTED, and if it doesn't exist, we fall back +# to parsing the lines from `locale.gen`. For distro's that ship +# the `locale.gen` file installed elsewhere, the key *localeGenPath* +# can be used to specify where it is. If not set, the default +# `/etc/locale.gen` is used. +# #localeGenPath: "/etc/locale.gen" + +# GeoIP settings. Leave commented out to disable GeoIP. +# +# An HTTP request is made to http://*geoipUrl*/json (which just happens +# to be the GET path needed by freegeoip.net, so calling this a URL +# is a stretch). The request must return valid JSON data; there should +# be an attribute *time_zone*, with a string value set to the +# timezone, in / form. +# +# Suitable data looks like +# ``` +# {"time_zone":"America/New_York"} +# ``` +# #geoipUrl: "freegeoip.net" From 240efd30f170f7f668c63ee487eea8fd908cc4c8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 28 Mar 2018 09:59:26 -0400 Subject: [PATCH 051/385] [libcalamares] Add support for formatted, table-like output - Use DebugRow for one-row-at-a-time output with continuations. - Use DebugList for one-item-per-line with continuations. - Use DebugMap for one-row-at-a-time output of a QVariantMap. --- src/libcalamares/utils/Logger.cpp | 18 ++++ src/libcalamares/utils/Logger.h | 95 ++++++++++++++++++- src/libcalamaresui/ExecutionViewStep.cpp | 3 +- .../welcome/checker/RequirementsChecker.cpp | 18 ++-- 4 files changed, 125 insertions(+), 9 deletions(-) diff --git a/src/libcalamares/utils/Logger.cpp b/src/libcalamares/utils/Logger.cpp index 17ccb60ad..0a13881d3 100644 --- a/src/libcalamares/utils/Logger.cpp +++ b/src/libcalamares/utils/Logger.cpp @@ -177,4 +177,22 @@ CDebug::~CDebug() { } +const char* continuation = "\n "; + +QString toString( const QVariant& v ) +{ + auto t = v.type(); + + if ( t == QVariant::List ) + { + QStringList s; + auto l = v.toList(); + for ( auto lit = l.constBegin(); lit != l.constEnd(); ++lit ) + s << lit->toString(); + return s.join(", "); + } + else + return v.toString(); +} + } // namespace diff --git a/src/libcalamares/utils/Logger.h b/src/libcalamares/utils/Logger.h index 2da602d23..5db7253bb 100644 --- a/src/libcalamares/utils/Logger.h +++ b/src/libcalamares/utils/Logger.h @@ -2,7 +2,7 @@ * * Copyright 2010-2011, Christian Muehlhaeuser * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,6 +27,8 @@ namespace Logger { + extern const char* continuation; + enum { LOG_DISABLE = 0, @@ -77,6 +79,97 @@ namespace Logger * Practical values are 0, 1, 2, and 6. */ DLLEXPORT void setupLogLevel( unsigned int level ); + + /** + * @brief Row-oriented formatted logging. + * + * Use DebugRow to produce multiple rows of 2-column output + * in a debugging statement. For instance, + * cDebug() << DebugRow(1,12) + * << DebugRow(2,24) + * will produce a single timestamped debug line with continuations. + * Each DebugRow produces one line of output, with the two values. + */ + template + struct DebugRow + { + public: + explicit DebugRow(const T& t, const U& u) + : first(t) + , second(u) + {} + + const T& first; + const U& second; + } ; + + /** + * @brief List-oriented formatted logging. + * + * Use DebugList to produce multiple rows of output in a debugging + * statement. For instance, + * cDebug() << DebugList( QStringList() << "foo" << "bar" ) + * will produce a single timestamped debug line with continuations. + * Each element of the list of strings will be logged on a separate line. + */ + struct DebugList + { + explicit DebugList( const QStringList& l ) + : list(l) + {} + + const QStringList& list; + } ; + + /** + * @brief Map-oriented formatted logging. + * + * Use DebugMap to produce multiple rows of output in a debugging + * statement from a map. The output is intentionally a bit-yaml-ish. + * cDebug() << DebugMap( map ) + * will produce a single timestamped debug line with continuations. + * The continued lines will have a key (from the map) and a value + * on each line. + */ + struct DebugMap + { + public: + explicit DebugMap(const QVariantMap& m) + : map( m ) + {} + + const QVariantMap& map; + } ; + + /** @brief output operator for DebugRow */ + template + inline QDebug& + operator <<( QDebug& s, const DebugRow& t ) + { + s << continuation << t.first << ':' << ' ' << t.second; + return s; + } + + /** @brief output operator for DebugList */ + inline QDebug& + operator <<( QDebug& s, const DebugList& c ) + { + for( const auto& i : c.list ) + s << continuation << i; + return s; + } + + /** @brief supporting method for outputting a DebugMap */ + QString toString( const QVariant& v ); + + /** @brief output operator for DebugMap */ + inline QDebug& + operator <<( QDebug& s, const DebugMap& t ) + { + for ( auto it = t.map.constBegin(); it != t.map.constEnd(); ++it ) + s << continuation << it.key().toUtf8().constData() << ':' << ' ' << toString( it.value() ).toUtf8().constData(); + return s; + } } #define cDebug Logger::CDebug diff --git a/src/libcalamaresui/ExecutionViewStep.cpp b/src/libcalamaresui/ExecutionViewStep.cpp index 0a9850fd7..109bd1384 100644 --- a/src/libcalamaresui/ExecutionViewStep.cpp +++ b/src/libcalamaresui/ExecutionViewStep.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -64,7 +65,7 @@ ExecutionViewStep::ExecutionViewStep( QObject* parent ) innerLayout->addWidget( m_progressBar ); innerLayout->addWidget( m_label ); - cDebug() << "QML import paths:" << m_slideShow->engine()->importPathList(); + cDebug() << "QML import paths:" << Logger::DebugList( m_slideShow->engine()->importPathList() ); connect( JobQueue::instance(), &JobQueue::progress, this, &ExecutionViewStep::updateFromJobQueue ); diff --git a/src/modules/welcome/checker/RequirementsChecker.cpp b/src/modules/welcome/checker/RequirementsChecker.cpp index 9ccdfae33..a5255058d 100644 --- a/src/modules/welcome/checker/RequirementsChecker.cpp +++ b/src/modules/welcome/checker/RequirementsChecker.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * Copyright 2017, Gabriel Craciunescu * * Calamares is free software: you can redistribute it and/or modify @@ -100,12 +100,14 @@ RequirementsChecker::RequirementsChecker( QObject* parent ) if ( m_entriesToCheck.contains( "root" ) ) isRoot = checkIsRoot(); + using TR = Logger::DebugRow; + cDebug() << "RequirementsChecker output:" - << " enoughStorage:" << enoughStorage - << " enoughRam:" << enoughRam - << " hasPower:" << hasPower - << " hasInternet:" << hasInternet - << " isRoot:" << isRoot; + << TR("enoughStorage", enoughStorage) + << TR("enoughRam", enoughRam) + << TR("hasPower", hasPower) + << TR("hasInternet", hasInternet) + << TR("isRoot", isRoot); QList< PrepareEntry > checkEntries; foreach ( const QString& entry, m_entriesToCheck ) @@ -305,7 +307,9 @@ RequirementsChecker::setConfigurationMap( const QVariantMap& configurationMap ) } if ( incompleteConfiguration ) - cWarning() << "RequirementsChecker configuration map:\n" << configurationMap; + { + cWarning() << "RequirementsChecker configuration map:" << Logger::DebugMap( configurationMap ); + } } From 9cdb6734bfa83fe3476b096f8bbe851567330240 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 3 Apr 2018 08:02:16 -0400 Subject: [PATCH 052/385] [packages] If locale is empty, pretend it is 'en'. - Otherwise packages like vi-$LOCALE will be retained in the package list, which will cause install problems. --- src/modules/packages/main.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py index 60ede34fa..3105474f8 100644 --- a/src/modules/packages/main.py +++ b/src/modules/packages/main.py @@ -318,7 +318,10 @@ def subst_locale(plist): """ locale = libcalamares.globalstorage.value("locale") if not locale: - return plist + # It is possible to skip the locale-setting entirely. + # Then pretend it is "en", so that {LOCALE}-decorated + # package names are removed from the list. + locale = "en" ret = [] for packagedata in plist: From fd1279dbe36aef6665d04eb78b413434dfc8b3f2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 3 Apr 2018 08:19:45 -0400 Subject: [PATCH 053/385] [welcome] Make the example configuration less strict --- src/modules/welcome/welcome.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/welcome/welcome.conf b/src/modules/welcome/welcome.conf index 18e71b1ef..b7ce5cfcd 100644 --- a/src/modules/welcome/welcome.conf +++ b/src/modules/welcome/welcome.conf @@ -25,6 +25,6 @@ requirements: # If any of these conditions are not met, the user cannot # continue past the welcome page. required: - - storage + # - storage - ram - - root + # - root From 36aede52ef6c0d4ddb3b8cf5f752f798446ba769 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 3 Apr 2018 08:20:01 -0400 Subject: [PATCH 054/385] [packages] Example configuration installs a localization package --- src/modules/packages/packages.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/packages/packages.conf b/src/modules/packages/packages.conf index 2d6ca116f..38497c2f5 100644 --- a/src/modules/packages/packages.conf +++ b/src/modules/packages/packages.conf @@ -127,6 +127,7 @@ update_db: true operations: - install: - vi + - vi-${LOCALE} - wget - binutils - remove: From 4c04260b9783d3c14c6187fced640292d41725e8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 3 Apr 2018 08:28:29 -0400 Subject: [PATCH 055/385] [packages] Don't change the global package list. - Count only the packages that will be changed, given the current locale settings. - Preserve global storage unchanged (don't remove any locale-packages). --- src/modules/packages/main.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py index 3105474f8..f252bc15f 100644 --- a/src/modules/packages/main.py +++ b/src/modules/packages/main.py @@ -367,20 +367,20 @@ def run_operations(pkgman, entry): global group_packages, completed_packages, mode_packages for key in entry.keys(): - entry[key] = subst_locale(entry[key]) - group_packages = len(entry[key]) + package_list = subst_locale(entry[key]) + group_packages = len(package_list) if key == "install": _change_mode(INSTALL) - if all([isinstance(x, str) for x in entry[key]]): - pkgman.install(entry[key]) + if all([isinstance(x, str) for x in package_list]): + pkgman.install(package_list) else: - for package in entry[key]: + for package in package_list: pkgman.install_package(package) elif key == "try_install": _change_mode(INSTALL) # we make a separate package manager call for each package so a # single failing package won't stop all of them - for package in entry[key]: + for package in package_list: try: pkgman.install_package(package) except subprocess.CalledProcessError: @@ -389,10 +389,10 @@ def run_operations(pkgman, entry): libcalamares.utils.debug(warn_text) elif key == "remove": _change_mode(REMOVE) - pkgman.remove(entry[key]) + pkgman.remove(package_list) elif key == "try_remove": _change_mode(REMOVE) - for package in entry[key]: + for package in package_list: try: pkgman.remove([package]) except subprocess.CalledProcessError: @@ -401,9 +401,9 @@ def run_operations(pkgman, entry): libcalamares.utils.debug(warn_text) elif key == "localInstall": _change_mode(INSTALL) - pkgman.install(entry[key], from_local=True) + pkgman.install(package_list, from_local=True) - completed_packages += len(entry[key]) + completed_packages += len(package_list) libcalamares.job.setprogress(completed_packages * 1.0 / total_packages) libcalamares.utils.debug(pretty_name()) @@ -447,7 +447,7 @@ def run(): completed_packages = 0 for op in operations: for packagelist in op.values(): - total_packages += len(packagelist) + total_packages += len(subst_locale(packagelist)) if not total_packages: # Avoids potential divide-by-zero in progress reporting From b8e61445531f2ec1a56d3720a16755df6c69aafa Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 3 Apr 2018 12:10:05 -0400 Subject: [PATCH 056/385] [locale] Document how the locale entry in Global Storage works. - Make the BCP47 value explicitly lower-case. - Add some constness and encapsulation. - Fix up documentation in the packages module explaining the format of the ${LOCALE} replacement (now forced to lower-case, but it is also only the language part, not e.g. en-UK). FIXES #922 --- src/modules/locale/LocaleConfiguration.cpp | 14 +++++++++++--- src/modules/locale/LocaleConfiguration.h | 9 +++++++-- src/modules/locale/LocalePage.cpp | 6 ++++-- src/modules/packages/packages.conf | 17 +++++++++++------ 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/modules/locale/LocaleConfiguration.cpp b/src/modules/locale/LocaleConfiguration.cpp index b8f5f6a9e..c612c50c4 100644 --- a/src/modules/locale/LocaleConfiguration.cpp +++ b/src/modules/locale/LocaleConfiguration.cpp @@ -43,9 +43,11 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale, const QStringList& availableLocales, const QString& countryCode ) { - LocaleConfiguration lc = LocaleConfiguration(); + LocaleConfiguration lc; + + // Note that the documentation how this works is in packages.conf QString language = languageLocale.split( '_' ).first(); - lc.myLanguageLocaleBcp47 = QLocale(language).bcp47Name(); + lc.myLanguageLocaleBcp47 = QLocale(language).bcp47Name().toLower(); QStringList linesForLanguage; for ( const QString &line : availableLocales ) @@ -288,7 +290,7 @@ LocaleConfiguration::isEmpty() const QMap< QString, QString > -LocaleConfiguration::toMap() +LocaleConfiguration::toMap() const { QMap< QString, QString > map; @@ -324,3 +326,9 @@ LocaleConfiguration::toMap() return map; } + +QString +LocaleConfiguration::toBcp47() const +{ + return myLanguageLocaleBcp47; +} diff --git a/src/modules/locale/LocaleConfiguration.h b/src/modules/locale/LocaleConfiguration.h index 073d19a5b..04d1db456 100644 --- a/src/modules/locale/LocaleConfiguration.h +++ b/src/modules/locale/LocaleConfiguration.h @@ -35,16 +35,21 @@ public: bool isEmpty() const; + QMap< QString, QString > toMap() const; + // Note that the documentation how this works is in packages.conf + QString toBcp47() const; + // These become all uppercase in locale.conf, but we keep them lowercase here to // avoid confusion with locale.h. QString lang, lc_numeric, lc_time, lc_monetary, lc_paper, lc_name, lc_address, lc_telephone, lc_measurement, lc_identification; - QString myLanguageLocaleBcp47; - QMap< QString, QString > toMap(); // If the user has explicitly selected language (from the dialog) // or numbers format, set these to avoid implicit changes to them. bool explicit_lang, explicit_lc; + +private: + QString myLanguageLocaleBcp47; }; #endif // LOCALECONFIGURATION_H diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index 2172586ff..8b05ccfba 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -489,8 +489,10 @@ LocalePage::updateGlobalStorage() ->insert( "locationRegion", location.region ); Calamares::JobQueue::instance()->globalStorage() ->insert( "locationZone", location.zone ); - Calamares::JobQueue::instance()->globalStorage() - ->insert( "locale", m_selectedLocaleConfiguration.myLanguageLocaleBcp47); + + const QString bcp47 = m_selectedLocaleConfiguration.toBcp47(); + Calamares::JobQueue::instance()->globalStorage()->insert( "locale", bcp47 ); + cDebug() << "Updated locale globals, BCP47=" << bcp47; // If we're in chroot mode (normal install mode), then we immediately set the // timezone on the live system. diff --git a/src/modules/packages/packages.conf b/src/modules/packages/packages.conf index 38497c2f5..7e5717b7c 100644 --- a/src/modules/packages/packages.conf +++ b/src/modules/packages/packages.conf @@ -76,7 +76,7 @@ update_db: true # pre-script: touch /tmp/installing-vi # post-script: rm -f /tmp/installing-vi # -# The pre- and post-scripts are optional, but not both optional: using +# The pre- and post-scripts are optional, but you cannot leave both out: using # "package: vi" with neither script option will trick Calamares into # trying to install a package named "package: vi", which is unlikely to work. # @@ -84,11 +84,16 @@ update_db: true # packages for software based on the selected system locale. By including # the string LOCALE in the package name, the following happens: # -# - if the system locale is English (generally US English; en_GB is a valid -# localization), then the package is not installed at all, -# - otherwise $LOCALE or ${LOCALE} is replaced by the Bcp47 name of the selected -# system locale, e.g. nl_BE. Note that just plain LOCALE will not be replaced, -# so foo-LOCALE will be unchanged, while foo-$LOCALE will be changed. +# - if the system locale is English (any variety), then the package is not +# installed at all, +# - otherwise $LOCALE or ${LOCALE} is replaced by the **lower-cased** BCP47 +# name of the **language** part of the selected system locale (not the +# country/region/dialect part), e.g. selecting *nl_BE* will use *nl* +# here. +# +# 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 +# **will** be removed from the list of packages, if English is selected. # # The following installs localizations for vi, if they are relevant; if # there is no localization, installation continues normally. From 032b33f56f20c2cc7080ba240e2905e14e901384 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 4 Apr 2018 11:25:28 -0400 Subject: [PATCH 057/385] [libcalamaresui] Improve logging. - Put the (constant) 'Calamares will now quit' on its own debug line. - Tell the user what the search paths are if a module is not found (prompted by a mis-configuration in a Neon live image). --- src/libcalamaresui/modulesystem/ModuleManager.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 60b9b2ce9..7afe5eef8 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -200,8 +200,8 @@ ModuleManager::loadModules() if ( moduleEntrySplit.length() < 1 || moduleEntrySplit.length() > 2 ) { - cError() << "Wrong module entry format for module" << moduleEntry << "." - << "\nCalamares will now quit."; + cError() << "Wrong module entry format for module" << moduleEntry << '.'; + cError() << "Calamares will now quit."; qApp->exit( 1 ); return; } @@ -213,7 +213,8 @@ ModuleManager::loadModules() m_availableDescriptorsByModuleName.value( moduleName ).isEmpty() ) { cError() << "Module" << moduleName << "not found in module search paths." - << "\nCalamares will now quit."; + << Logger::DebugList( m_paths ); + cError() << "Calamares will now quit."; qApp->exit( 1 ); return; } @@ -240,8 +241,8 @@ ModuleManager::loadModules() } else //ought to be a custom instance, but cannot find instance entry { - cError() << "Custom instance" << moduleEntry << "not found in custom instances section." - << "\nCalamares will now quit."; + cError() << "Custom instance" << moduleEntry << "not found in custom instances section."; + cError() << "Calamares will now quit."; qApp->exit( 1 ); return; } From 7e5c91aae654d41b836d90433754406fcd196fa1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 4 Apr 2018 11:42:38 -0400 Subject: [PATCH 058/385] [locale] Reduce debugging bla bla --- src/modules/locale/LocalePage.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index aeda2c44a..e2571d085 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -492,7 +492,6 @@ LocalePage::updateGlobalStorage() const QString bcp47 = m_selectedLocaleConfiguration.toBcp47(); Calamares::JobQueue::instance()->globalStorage()->insert( "locale", bcp47 ); - cDebug() << "Updated locale globals, BCP47=" << bcp47; // If we're in chroot mode (normal install mode), then we immediately set the // timezone on the live system. From 4d459f7fc06dc832ed7f639914262e7f18e3e64a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 5 Apr 2018 04:31:13 -0400 Subject: [PATCH 059/385] [libcalamares] Move non-UI stuff from libcalamaresui - Settings is just a settings class, no UI involved, so move to libcalamares where it can be used also from system helpers. - YAML utilities are useful at a lower level of the stack, too. --- src/libcalamares/CMakeLists.txt | 9 +++++++-- src/{libcalamaresui => libcalamares}/Settings.cpp | 0 src/{libcalamaresui => libcalamares}/Settings.h | 0 src/{libcalamaresui => libcalamares}/utils/YamlUtils.cpp | 0 src/{libcalamaresui => libcalamares}/utils/YamlUtils.h | 0 src/libcalamaresui/CMakeLists.txt | 3 --- 6 files changed, 7 insertions(+), 5 deletions(-) rename src/{libcalamaresui => libcalamares}/Settings.cpp (100%) rename src/{libcalamaresui => libcalamares}/Settings.h (100%) rename src/{libcalamaresui => libcalamares}/utils/YamlUtils.cpp (100%) rename src/{libcalamaresui => libcalamares}/utils/YamlUtils.h (100%) diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 2a1cfeb20..cbc049ac6 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -18,6 +18,7 @@ set( libSources Job.cpp JobQueue.cpp ProcessJob.cpp + Settings.cpp ) set( utilsSources utils/CalamaresUtils.cpp @@ -26,6 +27,7 @@ set( utilsSources utils/Logger.cpp utils/PluginFactory.cpp utils/Retranslator.cpp + utils/YamlUtils.cpp ) set( kdsagSources kdsingleapplicationguard/kdsingleapplicationguard.cpp @@ -88,8 +90,11 @@ set_target_properties( calamares ) target_link_libraries( calamares - LINK_PRIVATE ${OPTIONAL_PRIVATE_LIBRARIES} - LINK_PUBLIC Qt5::Core + LINK_PRIVATE + ${OPTIONAL_PRIVATE_LIBRARIES} + LINK_PUBLIC + ${YAMLCPP_LIBRARY} + Qt5::Core ) install( TARGETS calamares diff --git a/src/libcalamaresui/Settings.cpp b/src/libcalamares/Settings.cpp similarity index 100% rename from src/libcalamaresui/Settings.cpp rename to src/libcalamares/Settings.cpp diff --git a/src/libcalamaresui/Settings.h b/src/libcalamares/Settings.h similarity index 100% rename from src/libcalamaresui/Settings.h rename to src/libcalamares/Settings.h diff --git a/src/libcalamaresui/utils/YamlUtils.cpp b/src/libcalamares/utils/YamlUtils.cpp similarity index 100% rename from src/libcalamaresui/utils/YamlUtils.cpp rename to src/libcalamares/utils/YamlUtils.cpp diff --git a/src/libcalamaresui/utils/YamlUtils.h b/src/libcalamares/utils/YamlUtils.h similarity index 100% rename from src/libcalamaresui/utils/YamlUtils.h rename to src/libcalamares/utils/YamlUtils.h diff --git a/src/libcalamaresui/CMakeLists.txt b/src/libcalamaresui/CMakeLists.txt index 7c3e8fca2..6bbb285bb 100644 --- a/src/libcalamaresui/CMakeLists.txt +++ b/src/libcalamaresui/CMakeLists.txt @@ -10,7 +10,6 @@ set( calamaresui_SOURCES utils/CalamaresUtilsGui.cpp utils/DebugWindow.cpp utils/ImageRegistry.cpp - utils/YamlUtils.cpp utils/qjsonmodel.cpp utils/qjsonitem.cpp @@ -25,7 +24,6 @@ set( calamaresui_SOURCES ExecutionViewStep.cpp Branding.cpp - Settings.cpp ViewManager.cpp ) @@ -71,7 +69,6 @@ calamares_add_library( calamaresui UI ${calamaresui_UI} EXPORT_MACRO UIDLLEXPORT_PRO LINK_PRIVATE_LIBRARIES - ${YAMLCPP_LIBRARY} ${OPTIONAL_PRIVATE_LIBRARIES} LINK_LIBRARIES Qt5::Svg From b5c3fc8cf69274f326f5ba5d554f38f71019e9d2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 5 Apr 2018 04:51:51 -0400 Subject: [PATCH 060/385] [libcalamares] Improve process logging - Log output on crash - If debugging is on (-d) then also log output on success FIXES #925 --- src/libcalamares/utils/CalamaresUtilsSystem.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.cpp b/src/libcalamares/utils/CalamaresUtilsSystem.cpp index 54243553a..ba0de827a 100644 --- a/src/libcalamares/utils/CalamaresUtilsSystem.cpp +++ b/src/libcalamares/utils/CalamaresUtilsSystem.cpp @@ -20,8 +20,9 @@ #include "CalamaresUtilsSystem.h" #include "utils/Logger.h" -#include "JobQueue.h" #include "GlobalStorage.h" +#include "JobQueue.h" +#include "Settings.h" #include #include @@ -173,7 +174,7 @@ System::runCommand( if ( !process.waitForFinished( timeoutSec ? ( timeoutSec * 1000 ) : -1 ) ) { - cWarning() << "Timed out. output so far:\n" << + cWarning() << "Timed out. Output so far:\n" << process.readAllStandardOutput(); return -4; } @@ -182,13 +183,13 @@ System::runCommand( if ( process.exitStatus() == QProcess::CrashExit ) { - cWarning() << "Process crashed"; + cWarning() << "Process crashed. Output so far:\n" << output; return -1; } auto r = process.exitCode(); cDebug() << "Finished. Exit code:" << r; - if ( r != 0 ) + if ( ( r != 0 ) || Calamares::Settings::instance()->debugMode() ) { cDebug() << "Target cmd:" << args; cDebug().noquote() << "Target output:\n" << output; From 00a5baa3d9ce321bd3cbc9f32173c1709c96c820 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 5 Apr 2018 05:17:21 -0400 Subject: [PATCH 061/385] [libcalamares] Improve process logging - Don't insert a space before the output of a process - To do this, suppress space and quoting on the output, and to do that move the labeling-output for warnings and errors into the constructor (so that an idiomatic .nospace() does the right thing). --- src/libcalamares/utils/CalamaresUtilsSystem.cpp | 6 +++--- src/libcalamares/utils/Logger.h | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.cpp b/src/libcalamares/utils/CalamaresUtilsSystem.cpp index ba0de827a..cb4bbd66a 100644 --- a/src/libcalamares/utils/CalamaresUtilsSystem.cpp +++ b/src/libcalamares/utils/CalamaresUtilsSystem.cpp @@ -174,7 +174,7 @@ System::runCommand( if ( !process.waitForFinished( timeoutSec ? ( timeoutSec * 1000 ) : -1 ) ) { - cWarning() << "Timed out. Output so far:\n" << + cWarning().noquote().nospace() << "Timed out. Output so far:\n" << process.readAllStandardOutput(); return -4; } @@ -183,7 +183,7 @@ System::runCommand( if ( process.exitStatus() == QProcess::CrashExit ) { - cWarning() << "Process crashed. Output so far:\n" << output; + cWarning().noquote().nospace() << "Process crashed. Output so far:\n" << output; return -1; } @@ -192,7 +192,7 @@ System::runCommand( if ( ( r != 0 ) || Calamares::Settings::instance()->debugMode() ) { cDebug() << "Target cmd:" << args; - cDebug().noquote() << "Target output:\n" << output; + cDebug().noquote().nospace() << "Target output:\n" << output; } return ProcessResult(r, output); } diff --git a/src/libcalamares/utils/Logger.h b/src/libcalamares/utils/Logger.h index 5db7253bb..f7488b553 100644 --- a/src/libcalamares/utils/Logger.h +++ b/src/libcalamares/utils/Logger.h @@ -56,6 +56,10 @@ namespace Logger public: CDebug( unsigned int debugLevel = LOGDEBUG ) : CLog( debugLevel ) { + if ( debugLevel <= LOGERROR ) + *this << "ERROR:"; + else if ( debugLevel <= LOGWARNING ) + *this << "WARNING:"; } virtual ~CDebug(); }; @@ -173,7 +177,7 @@ namespace Logger } #define cDebug Logger::CDebug -#define cWarning() Logger::CDebug(Logger::LOGWARNING) << "WARNING:" -#define cError() Logger::CDebug(Logger::LOGERROR) << "ERROR:" +#define cWarning() Logger::CDebug(Logger::LOGWARNING) +#define cError() Logger::CDebug(Logger::LOGERROR) #endif // CALAMARES_LOGGER_H From 06e43a731278edd894319bb04ce5b91587bc57cc Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 9 Apr 2018 11:20:40 -0400 Subject: [PATCH 062/385] CI: Switch to stable Neon, to avoid all-builds-failing. The dev-unstable Neon branch now has a too-new KPMCore for this branch of Calamares. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index cd0e4f365..a4d424f45 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,2 +1,2 @@ -FROM kdeneon/all +FROM kdeneon/all:dev-stable RUN sudo apt-get update && sudo apt-get -y install build-essential cmake extra-cmake-modules gettext kio-dev libatasmart-dev libboost-python-dev libkf5config-dev libkf5coreaddons-dev libkf5i18n-dev libkf5iconthemes-dev libkf5parts-dev libkf5service-dev libkf5solid-dev libkpmcore-dev libparted-dev libpolkit-qt5-1-dev libqt5svg5-dev libqt5webkit5-dev libyaml-cpp-dev os-prober pkg-config python3-dev qtbase5-dev qtdeclarative5-dev qttools5-dev qttools5-dev-tools From 5ab01eba9f0ba5e5ec73d8abd4f6c6af8927c057 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 9 Apr 2018 11:26:43 -0400 Subject: [PATCH 063/385] [plasmalnf] Don't even try to load an empty filename for screenshot. - Avoid one attempt-to-load if the filename is empty, and one re-creating of the Pixmap. --- src/modules/plasmalnf/ThemeWidget.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/modules/plasmalnf/ThemeWidget.cpp b/src/modules/plasmalnf/ThemeWidget.cpp index 125085db4..9f892c6d9 100644 --- a/src/modules/plasmalnf/ThemeWidget.cpp +++ b/src/modules/plasmalnf/ThemeWidget.cpp @@ -42,13 +42,8 @@ ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent) qMax(12 * CalamaresUtils::defaultFontHeight(), 120), qMax(8 * CalamaresUtils::defaultFontHeight(), 80) }; - QPixmap image( info.imagePath ); - if ( info.imagePath.isEmpty() ) - { - // Image can't possibly be valid - image = QPixmap( ":/view-preview.png" ); - } - else if ( image.isNull() ) + QPixmap image( info.imagePath.isEmpty() ? ":/view-preview.png" : info.imagePath ); + if ( image.isNull() ) { // Not found or not specified, so convert the name into some (horrible, likely) // color instead. From cb616ec1bbd1d8eb0e67d5590bba3daa00c548fd Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 9 Apr 2018 11:38:34 -0400 Subject: [PATCH 064/385] [plasmalnf] Keep fixed size of screenshots (relative to font size) --- src/modules/plasmalnf/ThemeWidget.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/plasmalnf/ThemeWidget.cpp b/src/modules/plasmalnf/ThemeWidget.cpp index 9f892c6d9..6f0cc5fdb 100644 --- a/src/modules/plasmalnf/ThemeWidget.cpp +++ b/src/modules/plasmalnf/ThemeWidget.cpp @@ -57,6 +57,8 @@ ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent) QLabel* image_label = new QLabel( this ); image_label->setPixmap( image ); + image_label->setMinimumSize( image_size ); + image_label->setMaximumSize( image_size ); layout->addWidget( image_label, 1 ); layout->addWidget( m_description, 3 ); From bfb37e6b374350dba5d0cbe07db65103c0f7ed3f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 9 Apr 2018 11:39:45 -0400 Subject: [PATCH 065/385] [plasmalnf] Avoid use of 'uint' --- src/modules/plasmalnf/ThemeWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/plasmalnf/ThemeWidget.cpp b/src/modules/plasmalnf/ThemeWidget.cpp index 6f0cc5fdb..6a09dceb9 100644 --- a/src/modules/plasmalnf/ThemeWidget.cpp +++ b/src/modules/plasmalnf/ThemeWidget.cpp @@ -48,7 +48,7 @@ ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent) // Not found or not specified, so convert the name into some (horrible, likely) // color instead. image = QPixmap( image_size ); - uint hash_color = qHash( info.imagePath.isEmpty() ? info.id : info.imagePath ); + auto hash_color = qHash( info.imagePath.isEmpty() ? info.id : info.imagePath ); cDebug() << "Theme image" << info.imagePath << "not found, hash" << hash_color; image.fill( QColor( QRgb( hash_color ) ) ); } From fa933b9a16f54604294e53f1fabb00e0c759e0f9 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 10 Apr 2018 08:54:47 -0400 Subject: [PATCH 066/385] [plasmalnf] Search for theme screenshots - Search in branding dir, and ., for relative paths, - Absolute paths used as-is. - Document search as such. --- src/modules/plasmalnf/ThemeWidget.cpp | 31 ++++++++++++++++++++++++++- src/modules/plasmalnf/plasmalnf.conf | 4 ++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/modules/plasmalnf/ThemeWidget.cpp b/src/modules/plasmalnf/ThemeWidget.cpp index 6a09dceb9..eb4e5c356 100644 --- a/src/modules/plasmalnf/ThemeWidget.cpp +++ b/src/modules/plasmalnf/ThemeWidget.cpp @@ -22,10 +22,39 @@ #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" +#include "Branding.h" +#include +#include #include #include #include +#include + +/** + * Massage the given @p path to the most-likely + * path that actually contains a screenshot. For + * empty image paths, returns the QRC path for an + * empty screenshot. Returns blank if the path + * doesn't exist anywhere in the search paths. + */ +static QString _munge_imagepath( const QString& path ) +{ + if ( path.isEmpty() ) + return ":/view-preview.png"; + + if ( path.startsWith( '/' ) ) + return path; + + if ( QFileInfo::exists( path ) ) + return path; + + QFileInfo fi( QDir( Calamares::Branding::instance()->componentDirectory() ), path ); + if ( fi.exists() ) + return fi.absoluteFilePath(); + + return QString(); +} ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent) : QWidget( parent ) @@ -42,7 +71,7 @@ ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent) qMax(12 * CalamaresUtils::defaultFontHeight(), 120), qMax(8 * CalamaresUtils::defaultFontHeight(), 80) }; - QPixmap image( info.imagePath.isEmpty() ? ":/view-preview.png" : info.imagePath ); + QPixmap image( _munge_imagepath( info.imagePath ) ); if ( image.isNull() ) { // Not found or not specified, so convert the name into some (horrible, likely) diff --git a/src/modules/plasmalnf/plasmalnf.conf b/src/modules/plasmalnf/plasmalnf.conf index 85df64f0a..a954c685a 100644 --- a/src/modules/plasmalnf/plasmalnf.conf +++ b/src/modules/plasmalnf/plasmalnf.conf @@ -32,6 +32,10 @@ lnftool: "/usr/bin/lookandfeeltool" # Themes with no image set at all get a "missing screenshot" image; if the # image file is not found, they get a color swatch based on the image name. # +# The image may be an absolute path. If it is a relative path, though, +# it is searched in the current directory and in the branding directory +# (i.e. relative to the directory where your branding.desc lives). +# # Valid forms of entries in the *themes* key: # - A single string (unquoted), which is the theme id # - A pair of *theme* and *image* keys, e.g. From 445f181cc3296a98e68d31ac90b8d027b0588898 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 12 Apr 2018 09:45:48 -0400 Subject: [PATCH 067/385] [locale] Start refactoring geoip handling - Introduce a handler interface for GeoIP providers - Move the implementation of FreeGeoIP into a struct of its own --- src/modules/locale/CMakeLists.txt | 1 + src/modules/locale/GeoIP.h | 61 ++++++++++++++++++++++ src/modules/locale/GeoIPFreeGeoIP.cpp | 74 +++++++++++++++++++++++++++ src/modules/locale/GeoIPFreeGeoIP.h | 30 +++++++++++ src/modules/locale/LocaleViewStep.cpp | 56 +++++++------------- 5 files changed, 185 insertions(+), 37 deletions(-) create mode 100644 src/modules/locale/GeoIP.h create mode 100644 src/modules/locale/GeoIPFreeGeoIP.cpp create mode 100644 src/modules/locale/GeoIPFreeGeoIP.h diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index e32f6e613..f35a9b4bd 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -4,6 +4,7 @@ calamares_add_plugin( locale TYPE viewmodule EXPORT_MACRO PLUGINDLLEXPORT_PRO SOURCES + GeoIPFreeGeoIP.cpp LCLocaleDialog.cpp LocaleConfiguration.cpp LocalePage.cpp diff --git a/src/modules/locale/GeoIP.h b/src/modules/locale/GeoIP.h new file mode 100644 index 000000000..e9e0fadfd --- /dev/null +++ b/src/modules/locale/GeoIP.h @@ -0,0 +1,61 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef GEOIP_H +#define GEOIP_H + +#include +#include +#include + +class QNetworkReply; + +/** + * @brief Interface for GeoIP retrievers. + * + * A GeoIP retriever takes a configured URL (from the config file) + * and can handle the data returned from its interpretation of that + * configured URL, returning a region and zone. + */ +struct GeoIP +{ + using RegionZonePair = QPair; + + /** @brief Convert configured URL to a complete URL. + * + * Some GeoIP providers are configured with one URL, but actually + * do retrieval with another (e.g. when using the original + * implementation of FreeGeoIP, or when adding an API key). + */ + virtual QUrl fullUrl( const QString& configUrl ) = 0; + + /** @brief Handle a (successful) request by interpreting the data. + * + * Should return a ( , ) pair, e.g. + * ( "Europe", "Amsterdam" ). This is called **only** if the + * request to the fullUrl was successful; the handler + * is free to read as much, or as little, data as it + * likes. On error, returns a RegionZonePair with empty + * strings (e.g. ( "", "" ) ). + */ + virtual RegionZonePair processReply( QNetworkReply* ) = 0; + + virtual ~GeoIP(); // Defined in LocaleViewStep +} ; + +#endif diff --git a/src/modules/locale/GeoIPFreeGeoIP.cpp b/src/modules/locale/GeoIPFreeGeoIP.cpp new file mode 100644 index 000000000..be77dc2e4 --- /dev/null +++ b/src/modules/locale/GeoIPFreeGeoIP.cpp @@ -0,0 +1,74 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "GeoIPFreeGeoIP.h" + +#include "utils/Logger.h" +#include "utils/YamlUtils.h" + +#include + +#include + +QUrl +FreeGeoIP::fullUrl( const QString& configUrl ) +{ + // FIXME: derpy way to append "/json" to the user-specified config URL + QString requestUrl = QString( "%1/json" ) + .arg( QUrl::fromUserInput( configUrl ).toString() ); + return QUrl( requestUrl ); +} + +GeoIP::RegionZonePair +FreeGeoIP::processReply( QNetworkReply* reply ) +{ + QByteArray data = reply->readAll(); + + try + { + YAML::Node doc = YAML::Load( data ); + + QVariant var = CalamaresUtils::yamlToVariant( doc ); + if ( !var.isNull() && + var.isValid() && + var.type() == QVariant::Map ) + { + QVariantMap map = var.toMap(); + if ( map.contains( "time_zone" ) && + !map.value( "time_zone" ).toString().isEmpty() ) + { + QString timezoneString = map.value( "time_zone" ).toString(); + QStringList tzParts = timezoneString.split( '/', QString::SkipEmptyParts ); + if ( tzParts.size() >= 2 ) + { + cDebug() << "GeoIP reporting" << timezoneString; + QString region = tzParts.takeFirst(); + QString zone = tzParts.join( '/' ); + return qMakePair( region, zone ); + } + } + } + } + catch ( YAML::Exception& e ) + { + CalamaresUtils::explainYamlException( e, data, "GeoIP data"); + } + + return qMakePair( QString(), QString() ); +} diff --git a/src/modules/locale/GeoIPFreeGeoIP.h b/src/modules/locale/GeoIPFreeGeoIP.h new file mode 100644 index 000000000..3fe6157a2 --- /dev/null +++ b/src/modules/locale/GeoIPFreeGeoIP.h @@ -0,0 +1,30 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef GEOIPFREEGEOIP_H +#define GEOIPFREEGEOIP_H + +#include "GeoIP.h" + +struct FreeGeoIP : public GeoIP +{ + virtual QUrl fullUrl( const QString& configUrl ); + virtual RegionZonePair processReply( QNetworkReply* ); +} ; + +#endif diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 73efc266f..d9f5d1338 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,11 +19,14 @@ #include "LocaleViewStep.h" +#include "GeoIP.h" +#include "GeoIPFreeGeoIP.h" +#include "GlobalStorage.h" +#include "JobQueue.h" #include "LocalePage.h" + #include "timezonewidget/localeglobal.h" #include "widgets/WaitingWidget.h" -#include "JobQueue.h" -#include "GlobalStorage.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" @@ -111,53 +115,25 @@ void LocaleViewStep::fetchGeoIpTimezone() { QNetworkAccessManager *manager = new QNetworkAccessManager( this ); + GeoIP *handler = new FreeGeoIP; + connect( manager, &QNetworkAccessManager::finished, [=]( QNetworkReply* reply ) { if ( reply->error() == QNetworkReply::NoError ) { - QByteArray data = reply->readAll(); - - try - { - YAML::Node doc = YAML::Load( data ); - - QVariant var = CalamaresUtils::yamlToVariant( doc ); - if ( !var.isNull() && - var.isValid() && - var.type() == QVariant::Map ) - { - QVariantMap map = var.toMap(); - if ( map.contains( "time_zone" ) && - !map.value( "time_zone" ).toString().isEmpty() ) - { - QString timezoneString = map.value( "time_zone" ).toString(); - QStringList tzParts = timezoneString.split( '/', QString::SkipEmptyParts ); - if ( tzParts.size() >= 2 ) - { - cDebug() << "GeoIP reporting" << timezoneString; - QString region = tzParts.takeFirst(); - QString zone = tzParts.join( '/' ); - m_startingTimezone = qMakePair( region, zone ); - } - } - } - } - catch ( YAML::Exception& e ) - { - CalamaresUtils::explainYamlException( e, data, "GeoIP data"); - } + auto tz = handler->processReply( reply ); + if ( !tz.first.isEmpty() ) + m_startingTimezone = tz; } - + delete handler; reply->deleteLater(); manager->deleteLater(); setUpPage(); } ); QNetworkRequest request; - QString requestUrl = QString( "%1/json" ) - .arg( QUrl::fromUserInput( m_geoipUrl ).toString() ); - request.setUrl( QUrl( requestUrl ) ); + request.setUrl( handler->fullUrl( m_geoipUrl ) ); request.setAttribute( QNetworkRequest::FollowRedirectsAttribute, true ); manager->get( request ); } @@ -294,3 +270,9 @@ LocaleViewStep::setConfigurationMap( const QVariantMap& configurationMap ) m_geoipUrl = configurationMap.value( "geoipUrl" ).toString(); } } + + +// Defined here since the struct has nothing else in it +GeoIP::~GeoIP() +{ +} From c0d5a153d4499fc283fcc56b2664e1ef84db2bac Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 12 Apr 2018 09:54:22 -0400 Subject: [PATCH 068/385] [locale] Refactor GeoIP handler - Move GeoIP to its own cpp file - Provide a default implementation of the URL mangler --- src/modules/locale/CMakeLists.txt | 1 + src/modules/locale/GeoIP.cpp | 29 +++++++++++++++++++++++++++ src/modules/locale/GeoIP.h | 6 ++++-- src/modules/locale/LocaleViewStep.cpp | 6 ------ 4 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 src/modules/locale/GeoIP.cpp diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index f35a9b4bd..774868a28 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -4,6 +4,7 @@ calamares_add_plugin( locale TYPE viewmodule EXPORT_MACRO PLUGINDLLEXPORT_PRO SOURCES + GeoIP.cpp GeoIPFreeGeoIP.cpp LCLocaleDialog.cpp LocaleConfiguration.cpp diff --git a/src/modules/locale/GeoIP.cpp b/src/modules/locale/GeoIP.cpp new file mode 100644 index 000000000..d20d398c7 --- /dev/null +++ b/src/modules/locale/GeoIP.cpp @@ -0,0 +1,29 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "GeoIP.h" + +GeoIP::~GeoIP() +{ +} + +QUrl +GeoIP::fullUrl(const QString& configUrl) +{ + return QUrl::fromUserInput( configUrl ); +} diff --git a/src/modules/locale/GeoIP.h b/src/modules/locale/GeoIP.h index e9e0fadfd..6d4992781 100644 --- a/src/modules/locale/GeoIP.h +++ b/src/modules/locale/GeoIP.h @@ -41,8 +41,10 @@ struct GeoIP * Some GeoIP providers are configured with one URL, but actually * do retrieval with another (e.g. when using the original * implementation of FreeGeoIP, or when adding an API key). + * + * The default implementation uses the @p configUrl unchanged. */ - virtual QUrl fullUrl( const QString& configUrl ) = 0; + virtual QUrl fullUrl( const QString& configUrl ); /** @brief Handle a (successful) request by interpreting the data. * @@ -55,7 +57,7 @@ struct GeoIP */ virtual RegionZonePair processReply( QNetworkReply* ) = 0; - virtual ~GeoIP(); // Defined in LocaleViewStep + virtual ~GeoIP(); } ; #endif diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index d9f5d1338..bd9bef2fe 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -270,9 +270,3 @@ LocaleViewStep::setConfigurationMap( const QVariantMap& configurationMap ) m_geoipUrl = configurationMap.value( "geoipUrl" ).toString(); } } - - -// Defined here since the struct has nothing else in it -GeoIP::~GeoIP() -{ -} From d5623af8efb6f0e00b172254be067fd0d14265d4 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 12 Apr 2018 10:11:48 -0400 Subject: [PATCH 069/385] [locale] Refactor geoip handling - Configuration **must** be a complete URL. The implementation no longer appends /json to the URL. --- src/modules/locale/GeoIP.cpp | 6 ------ src/modules/locale/GeoIP.h | 10 ---------- src/modules/locale/GeoIPFreeGeoIP.cpp | 9 --------- src/modules/locale/GeoIPFreeGeoIP.h | 9 ++++++++- src/modules/locale/LocaleViewStep.cpp | 2 +- 5 files changed, 9 insertions(+), 27 deletions(-) diff --git a/src/modules/locale/GeoIP.cpp b/src/modules/locale/GeoIP.cpp index d20d398c7..5ada6e10c 100644 --- a/src/modules/locale/GeoIP.cpp +++ b/src/modules/locale/GeoIP.cpp @@ -21,9 +21,3 @@ GeoIP::~GeoIP() { } - -QUrl -GeoIP::fullUrl(const QString& configUrl) -{ - return QUrl::fromUserInput( configUrl ); -} diff --git a/src/modules/locale/GeoIP.h b/src/modules/locale/GeoIP.h index 6d4992781..f05c4d383 100644 --- a/src/modules/locale/GeoIP.h +++ b/src/modules/locale/GeoIP.h @@ -36,16 +36,6 @@ struct GeoIP { using RegionZonePair = QPair; - /** @brief Convert configured URL to a complete URL. - * - * Some GeoIP providers are configured with one URL, but actually - * do retrieval with another (e.g. when using the original - * implementation of FreeGeoIP, or when adding an API key). - * - * The default implementation uses the @p configUrl unchanged. - */ - virtual QUrl fullUrl( const QString& configUrl ); - /** @brief Handle a (successful) request by interpreting the data. * * Should return a ( , ) pair, e.g. diff --git a/src/modules/locale/GeoIPFreeGeoIP.cpp b/src/modules/locale/GeoIPFreeGeoIP.cpp index be77dc2e4..354e6c011 100644 --- a/src/modules/locale/GeoIPFreeGeoIP.cpp +++ b/src/modules/locale/GeoIPFreeGeoIP.cpp @@ -26,15 +26,6 @@ #include -QUrl -FreeGeoIP::fullUrl( const QString& configUrl ) -{ - // FIXME: derpy way to append "/json" to the user-specified config URL - QString requestUrl = QString( "%1/json" ) - .arg( QUrl::fromUserInput( configUrl ).toString() ); - return QUrl( requestUrl ); -} - GeoIP::RegionZonePair FreeGeoIP::processReply( QNetworkReply* reply ) { diff --git a/src/modules/locale/GeoIPFreeGeoIP.h b/src/modules/locale/GeoIPFreeGeoIP.h index 3fe6157a2..474ce8496 100644 --- a/src/modules/locale/GeoIPFreeGeoIP.h +++ b/src/modules/locale/GeoIPFreeGeoIP.h @@ -21,9 +21,16 @@ #include "GeoIP.h" +/** @brief GeoIP lookup via freegeoip.com + * + * This is the original implementation of GeoIP lookup, + * using the FreeGeoIP service, or similar which returns + * data in the same format. + * + * The data is assumed to be in JSON format with a time_zone attribute. + */ struct FreeGeoIP : public GeoIP { - virtual QUrl fullUrl( const QString& configUrl ); virtual RegionZonePair processReply( QNetworkReply* ); } ; diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index bd9bef2fe..7eaaebbf8 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -133,7 +133,7 @@ LocaleViewStep::fetchGeoIpTimezone() } ); QNetworkRequest request; - request.setUrl( handler->fullUrl( m_geoipUrl ) ); + request.setUrl( QUrl::fromUserInput( m_geoipUrl ) ); request.setAttribute( QNetworkRequest::FollowRedirectsAttribute, true ); manager->get( request ); } From fe98b789f0bb6714a13de30ca056267de62950df Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 29 Mar 2018 16:50:02 -0400 Subject: [PATCH 070/385] [locale] Document the settings in locale.conf - The geoipUrl is weird, because it is not a complete URL. Document that, and what kind of data is expected. FIXES #920 --- src/modules/locale/locale.conf | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/modules/locale/locale.conf b/src/modules/locale/locale.conf index 824c8abeb..88148f47a 100644 --- a/src/modules/locale/locale.conf +++ b/src/modules/locale/locale.conf @@ -1,7 +1,33 @@ --- +# The starting timezone (e.g. the pin-on-the-map) when entering +# the locale page can be set through keys *region* and *zone*. +# If either is not set, defaults to America/New_York. +# region: "America" zone: "New_York" -# GeoIP settings. Leave commented out to disable GeoIP. +# Some distros come with a meaningfully commented and easy to parse +# `/etc/locale.gen`, and others ship a separate file +# `/usr/share/i18n/SUPPORTED` with a clean list of supported locales. +# We first try SUPPORTED, and if it doesn't exist, we fall back +# to parsing the lines from `locale.gen`. For distro's that ship +# the `locale.gen` file installed elsewhere, the key *localeGenPath* +# can be used to specify where it is. If not set, the default +# `/etc/locale.gen` is used. +# #localeGenPath: "/etc/locale.gen" + +# GeoIP settings. Leave commented out to disable GeoIP. +# +# An HTTP request is made to http://*geoipUrl*/json (which just happens +# to be the GET path needed by freegeoip.net, so calling this a URL +# is a stretch). The request must return valid JSON data; there should +# be an attribute *time_zone*, with a string value set to the +# timezone, in / form. +# +# Suitable data looks like +# ``` +# {"time_zone":"America/New_York"} +# ``` +# #geoipUrl: "freegeoip.net" From 363622642592561dc773d7828c7fe4484c84d239 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 12 Apr 2018 10:18:15 -0400 Subject: [PATCH 071/385] [locale] Document change to the way GeoIPURL is handled. --- src/modules/locale/locale.conf | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/modules/locale/locale.conf b/src/modules/locale/locale.conf index 88148f47a..c51a5d1bc 100644 --- a/src/modules/locale/locale.conf +++ b/src/modules/locale/locale.conf @@ -19,15 +19,18 @@ zone: "New_York" # GeoIP settings. Leave commented out to disable GeoIP. # -# An HTTP request is made to http://*geoipUrl*/json (which just happens -# to be the GET path needed by freegeoip.net, so calling this a URL -# is a stretch). The request must return valid JSON data; there should +# An HTTP request is made to *geoipUrl* -- prior to Calamares 3.1.13, +# an implicit "/json" was added at the end.. The request must return +# valid JSON data in the FreeGeoIP format; there should # be an attribute *time_zone*, with a string value set to the -# timezone, in / form. +# timezone, in / format. +# +# Note that this example URL works, but the service is shutting +# down in June 2018. # # Suitable data looks like # ``` # {"time_zone":"America/New_York"} # ``` # -#geoipUrl: "freegeoip.net" +#geoipUrl: "freegeoip.net/json" From aaae1507cda8a0a80d384099f3ab776765d6b81a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 12 Apr 2018 11:51:50 -0400 Subject: [PATCH 072/385] [locale] Convenience function for TZ splitting --- src/modules/locale/GeoIP.cpp | 17 +++++++++++++++++ src/modules/locale/GeoIP.h | 5 ++++- src/modules/locale/GeoIPFreeGeoIP.cpp | 10 +--------- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/modules/locale/GeoIP.cpp b/src/modules/locale/GeoIP.cpp index 5ada6e10c..1bed7d3f4 100644 --- a/src/modules/locale/GeoIP.cpp +++ b/src/modules/locale/GeoIP.cpp @@ -18,6 +18,23 @@ #include "GeoIP.h" +#include "utils/Logger.h" + GeoIP::~GeoIP() { } + +GeoIP::RegionZonePair +GeoIP::splitTZString( const QString& timezoneString ) +{ + QStringList tzParts = timezoneString.split( '/', QString::SkipEmptyParts ); + if ( tzParts.size() >= 2 ) + { + cDebug() << "GeoIP reporting" << timezoneString; + QString region = tzParts.takeFirst(); + QString zone = tzParts.join( '/' ); + return qMakePair( region, zone ); + } + + return qMakePair( QString(), QString() ); +} diff --git a/src/modules/locale/GeoIP.h b/src/modules/locale/GeoIP.h index f05c4d383..b3d84c118 100644 --- a/src/modules/locale/GeoIP.h +++ b/src/modules/locale/GeoIP.h @@ -36,6 +36,8 @@ struct GeoIP { using RegionZonePair = QPair; + virtual ~GeoIP(); + /** @brief Handle a (successful) request by interpreting the data. * * Should return a ( , ) pair, e.g. @@ -47,7 +49,8 @@ struct GeoIP */ virtual RegionZonePair processReply( QNetworkReply* ) = 0; - virtual ~GeoIP(); + /** @brief Splits a region/zone string into a pair. */ + static RegionZonePair splitTZString( const QString& s ); } ; #endif diff --git a/src/modules/locale/GeoIPFreeGeoIP.cpp b/src/modules/locale/GeoIPFreeGeoIP.cpp index 354e6c011..d7e724145 100644 --- a/src/modules/locale/GeoIPFreeGeoIP.cpp +++ b/src/modules/locale/GeoIPFreeGeoIP.cpp @@ -44,15 +44,7 @@ FreeGeoIP::processReply( QNetworkReply* reply ) if ( map.contains( "time_zone" ) && !map.value( "time_zone" ).toString().isEmpty() ) { - QString timezoneString = map.value( "time_zone" ).toString(); - QStringList tzParts = timezoneString.split( '/', QString::SkipEmptyParts ); - if ( tzParts.size() >= 2 ) - { - cDebug() << "GeoIP reporting" << timezoneString; - QString region = tzParts.takeFirst(); - QString zone = tzParts.join( '/' ); - return qMakePair( region, zone ); - } + return splitTZString( map.value( "time_zone" ).toString() ); } } } From 939cdff93b7efaf7764dcbe41a321095a37fd710 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 12 Apr 2018 12:18:43 -0400 Subject: [PATCH 073/385] [locale] Add alternate GeoIP data format --- src/modules/locale/CMakeLists.txt | 13 ++++++-- src/modules/locale/GeoIPXML.cpp | 52 +++++++++++++++++++++++++++++++ src/modules/locale/GeoIPXML.h | 36 +++++++++++++++++++++ 3 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 src/modules/locale/GeoIPXML.cpp create mode 100644 src/modules/locale/GeoIPXML.h diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index 774868a28..442ca0d18 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -1,11 +1,19 @@ include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) +set( geoip_src GeoIP.cpp GeoIPFreeGeoIP.cpp ) +set( geoip_libs ) + +find_package(Qt5 COMPONENTS Xml) +if( Qt5Xml_FOUND ) + list( APPEND geoip_src GeoIPXML.cpp ) + list( APPEND geoip_libs Qt5::Xml ) +endif() + calamares_add_plugin( locale TYPE viewmodule EXPORT_MACRO PLUGINDLLEXPORT_PRO SOURCES - GeoIP.cpp - GeoIPFreeGeoIP.cpp + ${geoip_src} LCLocaleDialog.cpp LocaleConfiguration.cpp LocalePage.cpp @@ -19,6 +27,7 @@ calamares_add_plugin( locale LINK_PRIVATE_LIBRARIES calamaresui Qt5::Network + ${geoip_libs} ${YAMLCPP_LIBRARY} SHARED_LIB ) diff --git a/src/modules/locale/GeoIPXML.cpp b/src/modules/locale/GeoIPXML.cpp new file mode 100644 index 000000000..0b52c9612 --- /dev/null +++ b/src/modules/locale/GeoIPXML.cpp @@ -0,0 +1,52 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "GeoIPXML.h" + +#include "utils/Logger.h" + +#include +#include + +GeoIP::RegionZonePair +XMLGeoIP::processReply( QNetworkReply* reply ) +{ + QString domError; + int errorLine, errorColumn; + + QDomDocument doc; + if ( doc.setContent( reply->readAll(), false, &domError, &errorLine, &errorColumn ) ) + { + const auto tzElements = doc.elementsByTagName( "TimeZone" ); + cDebug() << "GeoIP found" << tzElements.length() << "elements"; + for ( int it = 0; it < tzElements.length(); ++it ) + { + if ( tzElements.at(it).isText() ) + { + return splitTZString( tzElements.at(it).nodeValue() ); + } + } + } + else + { + cDebug() << "GeoIP XML data error:" << domError << "(line" << errorLine << errorColumn << ')'; + } + + return qMakePair( QString(), QString() ); + +} diff --git a/src/modules/locale/GeoIPXML.h b/src/modules/locale/GeoIPXML.h new file mode 100644 index 000000000..d83a46daa --- /dev/null +++ b/src/modules/locale/GeoIPXML.h @@ -0,0 +1,36 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef GEOIPXML_H +#define GEOIPXML_H + +#include "GeoIP.h" + +/** @brief GeoIP lookup with XML data + * + * The data is assumed to be in XML format with a + * + * element, which contains the text (string) for the region/zone. This + * format is expected by, e.g. the Ubiquity installer. + */ +struct XMLGeoIP : public GeoIP +{ + virtual RegionZonePair processReply( QNetworkReply* ); +} ; + +#endif From 5b98e58ae71d09895fbc0ed56e687dab40e82607 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 12 Apr 2018 12:22:43 -0400 Subject: [PATCH 074/385] [locale] Refactor GeoIP handlers - Read the data in the caller of the handler, instead of in the callers --- src/modules/locale/GeoIP.h | 4 ++-- src/modules/locale/GeoIPFreeGeoIP.cpp | 6 ++---- src/modules/locale/GeoIPFreeGeoIP.h | 2 +- src/modules/locale/GeoIPXML.cpp | 4 ++-- src/modules/locale/GeoIPXML.h | 2 +- src/modules/locale/LocaleViewStep.cpp | 2 +- 6 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/modules/locale/GeoIP.h b/src/modules/locale/GeoIP.h index b3d84c118..c84a9b5e4 100644 --- a/src/modules/locale/GeoIP.h +++ b/src/modules/locale/GeoIP.h @@ -23,7 +23,7 @@ #include #include -class QNetworkReply; +class QByteArray; /** * @brief Interface for GeoIP retrievers. @@ -47,7 +47,7 @@ struct GeoIP * likes. On error, returns a RegionZonePair with empty * strings (e.g. ( "", "" ) ). */ - virtual RegionZonePair processReply( QNetworkReply* ) = 0; + virtual RegionZonePair processReply( const QByteArray& ) = 0; /** @brief Splits a region/zone string into a pair. */ static RegionZonePair splitTZString( const QString& s ); diff --git a/src/modules/locale/GeoIPFreeGeoIP.cpp b/src/modules/locale/GeoIPFreeGeoIP.cpp index d7e724145..9ef534a5d 100644 --- a/src/modules/locale/GeoIPFreeGeoIP.cpp +++ b/src/modules/locale/GeoIPFreeGeoIP.cpp @@ -22,15 +22,13 @@ #include "utils/Logger.h" #include "utils/YamlUtils.h" -#include +#include #include GeoIP::RegionZonePair -FreeGeoIP::processReply( QNetworkReply* reply ) +FreeGeoIP::processReply( const QByteArray& data ) { - QByteArray data = reply->readAll(); - try { YAML::Node doc = YAML::Load( data ); diff --git a/src/modules/locale/GeoIPFreeGeoIP.h b/src/modules/locale/GeoIPFreeGeoIP.h index 474ce8496..e8986db3f 100644 --- a/src/modules/locale/GeoIPFreeGeoIP.h +++ b/src/modules/locale/GeoIPFreeGeoIP.h @@ -31,7 +31,7 @@ */ struct FreeGeoIP : public GeoIP { - virtual RegionZonePair processReply( QNetworkReply* ); + virtual RegionZonePair processReply( const QByteArray& ); } ; #endif diff --git a/src/modules/locale/GeoIPXML.cpp b/src/modules/locale/GeoIPXML.cpp index 0b52c9612..1bba559d0 100644 --- a/src/modules/locale/GeoIPXML.cpp +++ b/src/modules/locale/GeoIPXML.cpp @@ -24,13 +24,13 @@ #include GeoIP::RegionZonePair -XMLGeoIP::processReply( QNetworkReply* reply ) +XMLGeoIP::processReply( const QByteArray& data ) { QString domError; int errorLine, errorColumn; QDomDocument doc; - if ( doc.setContent( reply->readAll(), false, &domError, &errorLine, &errorColumn ) ) + if ( doc.setContent( data, false, &domError, &errorLine, &errorColumn ) ) { const auto tzElements = doc.elementsByTagName( "TimeZone" ); cDebug() << "GeoIP found" << tzElements.length() << "elements"; diff --git a/src/modules/locale/GeoIPXML.h b/src/modules/locale/GeoIPXML.h index d83a46daa..8eec22a75 100644 --- a/src/modules/locale/GeoIPXML.h +++ b/src/modules/locale/GeoIPXML.h @@ -30,7 +30,7 @@ */ struct XMLGeoIP : public GeoIP { - virtual RegionZonePair processReply( QNetworkReply* ); + virtual RegionZonePair processReply( const QByteArray& ); } ; #endif diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 7eaaebbf8..04870ff76 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -122,7 +122,7 @@ LocaleViewStep::fetchGeoIpTimezone() { if ( reply->error() == QNetworkReply::NoError ) { - auto tz = handler->processReply( reply ); + auto tz = handler->processReply( reply->readAll() ); if ( !tz.first.isEmpty() ) m_startingTimezone = tz; } From 6b7c8a694abebae5a3334d575ddce54421ac3282 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 12 Apr 2018 14:37:38 -0400 Subject: [PATCH 075/385] [locale] Make the style of GeoIP retrieval selectable - Unchanged config files will continue to use the weird addition of /json, and interpret JSON data. - Allow to specify full URL with data format through one of geoipStyle: json geoipStyle: xml - XML support is optional --- src/modules/locale/CMakeLists.txt | 1 + src/modules/locale/LocaleViewStep.cpp | 36 +++++++++++++++++++++++++-- src/modules/locale/LocaleViewStep.h | 1 + src/modules/locale/locale.conf | 20 +++++++++++++-- 4 files changed, 54 insertions(+), 4 deletions(-) diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index 442ca0d18..376c19b00 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -7,6 +7,7 @@ find_package(Qt5 COMPONENTS Xml) if( Qt5Xml_FOUND ) list( APPEND geoip_src GeoIPXML.cpp ) list( APPEND geoip_libs Qt5::Xml ) + add_definitions( -DHAVE_XML ) endif() calamares_add_plugin( locale diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 04870ff76..09589a732 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -21,6 +21,9 @@ #include "GeoIP.h" #include "GeoIPFreeGeoIP.h" +#ifdef HAVE_XML +#include "GeoIPXML.h" +#endif #include "GlobalStorage.h" #include "JobQueue.h" #include "LocalePage.h" @@ -114,9 +117,32 @@ LocaleViewStep::setUpPage() void LocaleViewStep::fetchGeoIpTimezone() { - QNetworkAccessManager *manager = new QNetworkAccessManager( this ); - GeoIP *handler = new FreeGeoIP; + QString actualUrl( m_geoipUrl ); + GeoIP *handler = nullptr; + if ( m_geoipStyle.isEmpty() || m_geoipStyle == "legacy" ) + { + actualUrl.append( "/json" ); + handler = new FreeGeoIP; + } + else if ( m_geoipStyle == "json" ) + { + handler = new FreeGeoIP; + } +#if defined(HAVE_XML) + else if ( m_geoipStyle == "xml" ) + { + handler = new XMLGeoIP; + } +#endif + else + { + cDebug() << "WARNING: GeoIP Style" << m_geoipStyle << "is not recognized."; + setUpPage(); + return; + } + + QNetworkAccessManager *manager = new QNetworkAccessManager( this ); connect( manager, &QNetworkAccessManager::finished, [=]( QNetworkReply* reply ) { @@ -269,4 +295,10 @@ LocaleViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { m_geoipUrl = configurationMap.value( "geoipUrl" ).toString(); } + if ( configurationMap.contains( "geoipStyle" ) && + configurationMap.value( "geoipStyle" ).type() == QVariant::String && + !configurationMap.value( "geoipStyle" ).toString().isEmpty() ) + { + m_geoipStyle = configurationMap.value( "geoipStyle" ).toString(); + } } diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index 402fb7ce9..e6983ef15 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -76,6 +76,7 @@ private: QPair< QString, QString > m_startingTimezone; QString m_localeGenPath; QString m_geoipUrl; + QString m_geoipStyle; QList< Calamares::job_ptr > m_jobs; }; diff --git a/src/modules/locale/locale.conf b/src/modules/locale/locale.conf index c51a5d1bc..54a7b584c 100644 --- a/src/modules/locale/locale.conf +++ b/src/modules/locale/locale.conf @@ -19,8 +19,8 @@ zone: "New_York" # GeoIP settings. Leave commented out to disable GeoIP. # -# An HTTP request is made to *geoipUrl* -- prior to Calamares 3.1.13, -# an implicit "/json" was added at the end.. The request must return +# An HTTP request is made to *geoipUrl* -- depending on the geoipStyle, +# the URL may be modified before use. The request must return # valid JSON data in the FreeGeoIP format; there should # be an attribute *time_zone*, with a string value set to the # timezone, in / format. @@ -34,3 +34,19 @@ zone: "New_York" # ``` # #geoipUrl: "freegeoip.net/json" + +# GeoIP style. Leave commented out for the "legacy" interpretation. +# This setting only makes sense if geoipUrl is set, enabliing geoIP. +# +# Possible values are: +# unset same as "legacy" +# blank same as "legacy" +# "legacy" appends "/json" to geoipUrl, above, and uses JSON format +# (which is what freegeoip.net provides there). +# "json" URL is not modified, uses JSON format. +# "xml" URL is not modified, uses XML format. +# +# The JSON format is provided by freegeoip.net, but that service is +# shutting down in June 2018. There are other providers with the same +# format. XML format is provided for Ubiquity. +#geoipStyle: "legacy" From eea421f499f043524e1732dca53d47f7d5580e6c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 12 Apr 2018 16:05:02 -0400 Subject: [PATCH 076/385] [locale] Add tests for GeoIP handlers - One sample JSON result - Two sample XML results --- src/modules/locale/CMakeLists.txt | 23 ++++++++ src/modules/locale/GeoIPTests.cpp | 98 +++++++++++++++++++++++++++++++ src/modules/locale/GeoIPTests.h | 38 ++++++++++++ 3 files changed, 159 insertions(+) create mode 100644 src/modules/locale/GeoIPTests.cpp create mode 100644 src/modules/locale/GeoIPTests.h diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index 376c19b00..df758ac8e 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -1,3 +1,10 @@ +find_package(ECM ${ECM_VERSION} NO_MODULE) +if( ECM_FOUND ) + include( ECMAddTests ) +endif() + +find_package( Qt5 COMPONENTS Core Test REQUIRED ) + include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) set( geoip_src GeoIP.cpp GeoIPFreeGeoIP.cpp ) @@ -32,3 +39,19 @@ calamares_add_plugin( locale ${YAMLCPP_LIBRARY} SHARED_LIB ) + +if( ECM_FOUND ) + ecm_add_test( + GeoIPTests.cpp + ${geoip_src} + TEST_NAME + geoiptest + LINK_LIBRARIES + calamaresui + Qt5::Network + Qt5::Test + ${geoip_libs} + ${YAMLCPP_LIBRARY} + ) + set_target_properties( geoiptest PROPERTIES AUTOMOC TRUE ) +endif() diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp new file mode 100644 index 000000000..9ad7ad7fc --- /dev/null +++ b/src/modules/locale/GeoIPTests.cpp @@ -0,0 +1,98 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "GeoIPTests.h" + +#include "GeoIPFreeGeoIP.h" +#ifdef HAVE_XML +#include "GeoIPXML.h" +#endif + +#include + +QTEST_GUILESS_MAIN( GeoIPTests ) + +GeoIPTests::GeoIPTests() +{ +} + +GeoIPTests::~GeoIPTests() +{ +} + +void +GeoIPTests::initTestCase() +{ +} + +void +GeoIPTests::testJSON() +{ + static const char data[] = + "{\"time_zone\":\"Europe/Amsterdam\"}"; + + FreeGeoIP handler; + auto tz = handler.processReply( data ); + + QCOMPARE( tz.first, QLatin1String( "Europe" ) ); + QCOMPARE( tz.second, QLatin1String( "Amsterdam" ) ); +} + +void +GeoIPTests::testXML() +{ + static const char data[] = + R"( + 85.150.1.1 + OK + NL + NLD + Netherlands + None + None + None + + 50.0 + 4.0 + 0 + Europe/Amsterdam +)"; + +#ifdef HAVE_XML + XMLGeoIP handler; + auto tz = handler.processReply( data ); + + QCOMPARE( tz.first, QLatin1String( "Europe" ) ); + QCOMPARE( tz.second, QLatin1String( "Amsterdam" ) ); +#endif +} + +void +GeoIPTests::testXML2() +{ + static const char data[] = + "America/North Dakota/Beulah"; + +#ifdef HAVE_XML + XMLGeoIP handler; + auto tz = handler.processReply( data ); + + QCOMPARE( tz.first, QLatin1String( "America" ) ); + QCOMPARE( tz.second, QLatin1String( "North Dakota/Beulah" ) ); +#endif +} diff --git a/src/modules/locale/GeoIPTests.h b/src/modules/locale/GeoIPTests.h new file mode 100644 index 000000000..b153d5c5f --- /dev/null +++ b/src/modules/locale/GeoIPTests.h @@ -0,0 +1,38 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef GEOIPTESTS_H +#define GEOIPTESTS_H + +#include + +class GeoIPTests : public QObject +{ + Q_OBJECT +public: + GeoIPTests(); + ~GeoIPTests() override; + +private Q_SLOTS: + void initTestCase(); + void testJSON(); + void testXML(); + void testXML2(); +}; + +#endif From 0c1453ff1812cb672c06aa4e8cc0ac748df6f917 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 12 Apr 2018 16:05:38 -0400 Subject: [PATCH 077/385] [locale] Fix string value handled by XML parser --- src/modules/locale/GeoIPXML.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/modules/locale/GeoIPXML.cpp b/src/modules/locale/GeoIPXML.cpp index 1bba559d0..f6b3ff342 100644 --- a/src/modules/locale/GeoIPXML.cpp +++ b/src/modules/locale/GeoIPXML.cpp @@ -36,10 +36,8 @@ XMLGeoIP::processReply( const QByteArray& data ) cDebug() << "GeoIP found" << tzElements.length() << "elements"; for ( int it = 0; it < tzElements.length(); ++it ) { - if ( tzElements.at(it).isText() ) - { - return splitTZString( tzElements.at(it).nodeValue() ); - } + auto e = tzElements.at(it).toElement(); + return splitTZString( e.text() ); } } else From 76e37402b3ec5ee66c4918a43c5afa7f60fb55d1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 12 Apr 2018 16:22:35 -0400 Subject: [PATCH 078/385] [locale] Extend tests with negative results --- src/modules/locale/GeoIPTests.cpp | 42 +++++++++++++++++++++++++++++++ src/modules/locale/GeoIPTests.h | 2 ++ 2 files changed, 44 insertions(+) diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp index 9ad7ad7fc..2c59aa729 100644 --- a/src/modules/locale/GeoIPTests.cpp +++ b/src/modules/locale/GeoIPTests.cpp @@ -51,8 +51,34 @@ GeoIPTests::testJSON() QCOMPARE( tz.first, QLatin1String( "Europe" ) ); QCOMPARE( tz.second, QLatin1String( "Amsterdam" ) ); + + // JSON is quite tolerant + tz = handler.processReply( "time_zone: \"Europe/Brussels\"" ); + QCOMPARE( tz.second, QLatin1String( "Brussels" ) ); + + tz = handler.processReply( "time_zone: America/New_York\n" ); + QCOMPARE( tz.first, "America" ); +} + +void +GeoIPTests::testJSONbad() +{ + static const char data[] = "time_zone: 1"; + + FreeGeoIP handler; + auto tz = handler.processReply( data ); + + tz = handler.processReply( data ); + QCOMPARE( tz.first, QString() ); + + tz = handler.processReply( "" ); + QCOMPARE( tz.first, QString() ); + + tz = handler.processReply( "404 Forbidden" ); + QCOMPARE( tz.first, QString() ); } + void GeoIPTests::testXML() { @@ -96,3 +122,19 @@ GeoIPTests::testXML2() QCOMPARE( tz.second, QLatin1String( "North Dakota/Beulah" ) ); #endif } + +void +GeoIPTests::testXMLbad() +{ +#ifdef HAVE_XML + XMLGeoIP handler; + auto tz = handler.processReply( "{time_zone: \"Europe/Paris\"}" ); + QCOMPARE( tz.first, QString() ); + + tz = handler.processReply( "" ); + QCOMPARE( tz.first, QString() ); + + tz = handler.processReply( "fnord" ); + QCOMPARE( tz.first, QString() ); +#endif +} diff --git a/src/modules/locale/GeoIPTests.h b/src/modules/locale/GeoIPTests.h index b153d5c5f..e673a0740 100644 --- a/src/modules/locale/GeoIPTests.h +++ b/src/modules/locale/GeoIPTests.h @@ -31,8 +31,10 @@ public: private Q_SLOTS: void initTestCase(); void testJSON(); + void testJSONbad(); void testXML(); void testXML2(); + void testXMLbad(); }; #endif From 1340613ef56dd1a0b88dcdaa0a1a66d69642b827 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 12 Apr 2018 16:55:24 -0400 Subject: [PATCH 079/385] [locale] Additional test application for GeoIP processing --- src/modules/locale/CMakeLists.txt | 12 +++-- src/modules/locale/test_geoip.cpp | 73 +++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 src/modules/locale/test_geoip.cpp diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index df758ac8e..3c0cc3712 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -1,10 +1,9 @@ find_package(ECM ${ECM_VERSION} NO_MODULE) -if( ECM_FOUND ) +if( ECM_FOUND AND BUILD_TESTING ) include( ECMAddTests ) + find_package( Qt5 COMPONENTS Core Test REQUIRED ) endif() -find_package( Qt5 COMPONENTS Core Test REQUIRED ) - include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) set( geoip_src GeoIP.cpp GeoIPFreeGeoIP.cpp ) @@ -40,7 +39,7 @@ calamares_add_plugin( locale SHARED_LIB ) -if( ECM_FOUND ) +if( ECM_FOUND AND BUILD_TESTING ) ecm_add_test( GeoIPTests.cpp ${geoip_src} @@ -55,3 +54,8 @@ if( ECM_FOUND ) ) set_target_properties( geoiptest PROPERTIES AUTOMOC TRUE ) endif() + +if( BUILD_TESTING ) + add_executable( test_geoip test_geoip.cpp ${geoip_src} ) + target_link_libraries( test_geoip calamaresui Qt5::Network ${geoip_libs} ${YAMLCPP_LIBRARY} ) +endif() diff --git a/src/modules/locale/test_geoip.cpp b/src/modules/locale/test_geoip.cpp new file mode 100644 index 000000000..5797ad9ff --- /dev/null +++ b/src/modules/locale/test_geoip.cpp @@ -0,0 +1,73 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +/** + * This is a test-application that does one GeoIP parse. + */ + +#include + +#include "GeoIPFreeGeoIP.h" +#ifdef HAVE_XML +#include "GeoIPXML.h" +#endif + +using std::cerr; + +int main(int argc, char** argv) +{ + if (argc != 2) + { + cerr << "Usage: curl url | test_geoip \n"; + return 1; + } + + GeoIP* handler = nullptr; + if ( QLatin1String( "json" ) == argv[1] ) + handler = new FreeGeoIP; +#ifdef HAVE_XML + else if ( QLatin1String( "xml" ) == argv[1] ) + handler = new XMLGeoIP; +#endif + + if ( !handler ) + { + cerr << "Unknown format '" << argv[1] << "'\n"; + return 1; + } + + QByteArray ba; + while( !std::cin.eof() ) { + char arr[1024]; + std::cin.read(arr,sizeof(arr)); + int s = std::cin.gcount(); + ba.append(arr, s); + } + + auto tz = handler->processReply( ba ); + if ( tz.first.isEmpty() ) + { + std::cout << "No TimeZone determined from input.\n"; + } + else + { + std::cout << "TimeZone Region=" << tz.first.toLatin1().constData() << "\nTimeZone Zone=" << tz.second.toLatin1().constData() << '\n'; + } + + return 0; +} From 14fcc2fad647ddf73f83e82f6df812e603ca788b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 13 Apr 2018 08:44:02 -0400 Subject: [PATCH 080/385] [plasmalnf] Continue fighting with layout - The screenshot stays one size, but different ThemeWidgets may overlap partially when you shrink the screen or have more than three / four themes listed. - Probably needs work in the surrounding container and overall better page-scrollbar support. --- src/modules/plasmalnf/ThemeWidget.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/modules/plasmalnf/ThemeWidget.cpp b/src/modules/plasmalnf/ThemeWidget.cpp index eb4e5c356..92a88197f 100644 --- a/src/modules/plasmalnf/ThemeWidget.cpp +++ b/src/modules/plasmalnf/ThemeWidget.cpp @@ -62,15 +62,15 @@ ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent) , m_check( new QRadioButton( info.name.isEmpty() ? info.id : info.name, parent ) ) , m_description( new QLabel( info.description, parent ) ) { + const QSize image_size{ + qMax(12 * CalamaresUtils::defaultFontHeight(), 120), + qMax(8 * CalamaresUtils::defaultFontHeight(), 80) }; + QHBoxLayout* layout = new QHBoxLayout( this ); this->setLayout( layout ); layout->addWidget( m_check, 1 ); - const QSize image_size{ - qMax(12 * CalamaresUtils::defaultFontHeight(), 120), - qMax(8 * CalamaresUtils::defaultFontHeight(), 80) }; - QPixmap image( _munge_imagepath( info.imagePath ) ); if ( image.isNull() ) { @@ -88,6 +88,7 @@ ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent) image_label->setPixmap( image ); image_label->setMinimumSize( image_size ); image_label->setMaximumSize( image_size ); + image_label->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ); layout->addWidget( image_label, 1 ); layout->addWidget( m_description, 3 ); From 47b7040897a7972ab9d9b8f67dbd08ee1eb3f42b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 13 Apr 2018 09:24:59 -0400 Subject: [PATCH 081/385] [locale] Adjust to Calamares 3.2 idiom --- src/modules/locale/GeoIPXML.cpp | 2 +- src/modules/locale/LocaleViewStep.cpp | 17 ++++------------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/modules/locale/GeoIPXML.cpp b/src/modules/locale/GeoIPXML.cpp index f6b3ff342..a0f9b7a2d 100644 --- a/src/modules/locale/GeoIPXML.cpp +++ b/src/modules/locale/GeoIPXML.cpp @@ -42,7 +42,7 @@ XMLGeoIP::processReply( const QByteArray& data ) } else { - cDebug() << "GeoIP XML data error:" << domError << "(line" << errorLine << errorColumn << ')'; + cWarning() << "GeoIP XML data error:" << domError << "(line" << errorLine << errorColumn << ')'; } return qMakePair( QString(), QString() ); diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 6da0b3367..76e89babb 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -31,6 +31,7 @@ #include "timezonewidget/localeglobal.h" #include "widgets/WaitingWidget.h" +#include "utils/CalamaresUtils.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" #include "utils/YamlUtils.h" @@ -137,7 +138,7 @@ LocaleViewStep::fetchGeoIpTimezone() #endif else { - cDebug() << "WARNING: GeoIP Style" << m_geoipStyle << "is not recognized."; + cWarning() << "GeoIP Style" << m_geoipStyle << "is not recognized."; setUpPage(); return; } @@ -289,16 +290,6 @@ LocaleViewStep::setConfigurationMap( const QVariantMap& configurationMap ) } // Optional - if ( configurationMap.contains( "geoipUrl" ) && - configurationMap.value( "geoipUrl" ).type() == QVariant::String && - !configurationMap.value( "geoipUrl" ).toString().isEmpty() ) - { - m_geoipUrl = configurationMap.value( "geoipUrl" ).toString(); - } - if ( configurationMap.contains( "geoipStyle" ) && - configurationMap.value( "geoipStyle" ).type() == QVariant::String && - !configurationMap.value( "geoipStyle" ).toString().isEmpty() ) - { - m_geoipStyle = configurationMap.value( "geoipStyle" ).toString(); - } + m_geoipUrl = CalamaresUtils::getString( configurationMap, "geoipUrl" ); + m_geoipStyle = CalamaresUtils::getString( configurationMap, "geoipStyle" ); } From d6f082752d69e5456271e7d94236062510474d8f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 13 Apr 2018 09:36:39 -0400 Subject: [PATCH 082/385] [locale] On GeoIP failure, log URL --- src/modules/locale/LocaleViewStep.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 76e89babb..53dea05c7 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -152,6 +152,8 @@ LocaleViewStep::fetchGeoIpTimezone() auto tz = handler->processReply( reply->readAll() ); if ( !tz.first.isEmpty() ) m_startingTimezone = tz; + else + cWarning() << "GeoIP lookup at" << reply->url() << "failed."; } delete handler; reply->deleteLater(); From ec113e3df3427925ddae077b4b4991e9f6b6e4a3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 13 Apr 2018 09:42:28 -0400 Subject: [PATCH 083/385] [locale] Log GeoIP attempt URL, use possibly-modified form --- src/modules/locale/LocaleViewStep.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 53dea05c7..7cafd8793 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -123,7 +123,7 @@ LocaleViewStep::fetchGeoIpTimezone() if ( m_geoipStyle.isEmpty() || m_geoipStyle == "legacy" ) { - actualUrl.append( "/json" ); + actualUrl.append( "/json/" ); handler = new FreeGeoIP; } else if ( m_geoipStyle == "json" ) @@ -142,6 +142,7 @@ LocaleViewStep::fetchGeoIpTimezone() setUpPage(); return; } + cDebug() << "Fetching GeoIP data from" << actualUrl; QNetworkAccessManager *manager = new QNetworkAccessManager( this ); connect( manager, &QNetworkAccessManager::finished, @@ -162,7 +163,7 @@ LocaleViewStep::fetchGeoIpTimezone() } ); QNetworkRequest request; - request.setUrl( QUrl::fromUserInput( m_geoipUrl ) ); + request.setUrl( QUrl::fromUserInput( actualUrl ) ); request.setAttribute( QNetworkRequest::FollowRedirectsAttribute, true ); manager->get( request ); } From 4ed65c290de08fe9974ff446d529a4d5bac661ce Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Fri, 13 Apr 2018 10:25:37 -0400 Subject: [PATCH 084/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_hi.ts | 283 ++++++++++++++++++++++--------------------- lang/calamares_id.ts | 38 +++--- lang/calamares_lt.ts | 6 +- lang/calamares_sk.ts | 19 +-- 4 files changed, 174 insertions(+), 172 deletions(-) diff --git a/lang/calamares_hi.ts b/lang/calamares_hi.ts index 5e36c160c..78adb1e1d 100644 --- a/lang/calamares_hi.ts +++ b/lang/calamares_hi.ts @@ -4,17 +4,17 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + इस सिस्टम का <strong>boot वातावरण</strong>।<br><br>पुराने x86 सिस्टम केवल <strong>BIOS</strong> का समर्थन करते हैं।<br>आधुनिक सिस्टम आमतौर पर <strong>EFI</strong> का उपयोग करते हैं, लेकिन compatibilty मोड में शुरू होने पर BIOS के रूप में दिखाई दे सकते हैं। This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - + यह सिस्टम <strong>EFI</strong> boot वातावरण के साथ शुरू किया गया।<br><br>EFI वातावरण से स्टार्टअप विन्यस्त करने के लिए इंस्टॉलर को <strong>GRUB</strong> या <strong>systemd-boot</strong> जैसे boot loader अनुप्रयोग <strong>EFI सिस्टम विभाजन</strong> पर स्थापित करने जरूरी हैं। यह स्वत: होता है, परंतु अगर आप मैनुअल विभाजन करना चुनते है; तो आपको या तो इसे चुनना होगा या फिर खुद ही बनाना होगा। This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - + यह सिस्टम <strong>BIOS</strong> boot वातावरण के साथ शुरू किया गया।<br><br>BIOS वातावरण से स्टार्टअप विन्यस्त करने के लिए इंस्टॉलर को <strong>GRUB</strong> जैसे boot loader को, या तो विभाजन की शुरुआत में या फिर <strong>Master Boot Record</strong> पर विभाजन तालिका की शुरुआत में इंस्टॉल (preferred) करना होगा। यह स्वत: होता है, परंतु अगर आप मैनुअल विभाजन करना चुनते है; तो आपको इसे खुद ही बनाना होगा। @@ -22,27 +22,27 @@ Master Boot Record of %1 - + %1 का Master Boot Record Boot Partition - + Boot विभाजन System Partition - + सिस्टम विभाजन Do not install a boot loader - + Boot loader इंस्टॉल न करें %1 (%2) - + %1 (%2) @@ -50,48 +50,48 @@ Form - + रूप GlobalStorage - + GlobalStorage JobQueue - + JobQueue Modules - + Modules Type: - + प्रकार none - + कुछ नहीं Interface: - + अंतरफलक : Tools - + साधन Debug information - + डीबग संबंधी जानकारी @@ -99,7 +99,7 @@ Install - + इंस्टॉल करें @@ -107,7 +107,7 @@ Done - + हो गया @@ -115,12 +115,12 @@ Run command %1 %2 - + कमांड %1%2 चलाएँ Running command %1 %2 - + कमांड %1%2 चल रही हैं @@ -128,32 +128,32 @@ Running %1 operation. - + %1 चल रहा है। Bad working directory path - + कार्यरत फोल्डर का पथ गलत है Working directory %1 for python job %2 is not readable. - + Python job %2 के लिए कार्यरत डायरेक्टरी %1 read करने योग्य नहीं है। Bad main script file - + मुख्य script फ़ाइल गलत है Main script file %1 for python job %2 is not readable. - + Python job %2 के लिए मुख्य script फ़ाइल %1 read करने योग्य नहीं है। Boost.Python error in job "%1". - + Job "%1" में Boost.Python error। @@ -161,90 +161,91 @@ &Back - + &वापस &Next - + &आगे &Cancel - + &रद्द करें Cancel installation without changing the system. - + सिस्टम में बदलाव किये बिना इंस्टॉल रद्द करें। Cancel installation? - + इंस्टॉल रद्द करें? Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + क्या आप वाकई वर्तमान इंस्टॉल प्रक्रिया रद्द करना चाहते हैं? +इंस्टॉलर बंद हो जाएगा व सभी बदलाव नष्ट। &Yes - + &हाँ &No - + &नहीं &Close - + &बंद करें Continue with setup? - + सेटअप करना जारी रखें? The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + %2 इंस्टॉल करने के लिए %1 इंस्टॉलर आपकी डिस्क में बदलाव करने वाला है।<br/><strong>आप इन बदलावों को पूर्ववत नहीं कर पाएंगे।</strong> &Install now - + अभी &इंस्टॉल करें Go &back - + &वापस जाएँ &Done - + हो &गया The installation is complete. Close the installer. - + इंस्टॉल पूर्ण हुआ।अब इंस्टॉलर को बंद करें। Error - + Error Installation Failed - + इंस्टॉल विफल रहा। @@ -252,22 +253,22 @@ The installer will quit and all changes will be lost. Unknown exception type - + अपवाद का प्रकार अज्ञात है unparseable Python error - + unparseable Python error unparseable Python traceback - + unparseable Python traceback Unfetchable Python error. - + Unfetchable Python error. @@ -275,12 +276,12 @@ The installer will quit and all changes will be lost. %1 Installer - + %1 इंस्टॉलर Show debug information - + डीबग संबंधी जानकारी दिखाएँ @@ -288,27 +289,27 @@ The installer will quit and all changes will be lost. This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - + यह कंप्यूटर %1 को इंस्टॉल करने की न्यूनतम आवश्यकताओं को पूरा नहीं करता।<br/>इंस्टॉल जारी नहीं रखा जा सकता।<a href="#details">विवरण...</a> This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - + यह कंप्यूटर %1 को इंस्टॉल करने की सुझायी गई आवश्यकताओं को पूरा नहीं करता।<br/>इंस्टॉल जारी रखा जा सकता, लेकिन कुछ विशेषताएँ निष्क्रिय हो सकती हैं। This program will ask you some questions and set up %2 on your computer. - + यह program आपसे कुछ सवाल पूछेगा व आपके कंप्यूटर पर %2 को सेट करेगा। For best results, please ensure that this computer: - + उत्तम परिणामों के लिए, कृपया सुनिश्चित करें कि यह कंप्यूटर: System requirements - + सिस्टम की आवश्यकताएँ @@ -316,32 +317,32 @@ The installer will quit and all changes will be lost. Form - + रूप After: - + बाद में: <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + <strong>मैनुअल विभाजन</strong><br/> आप स्वयं भी विभाजन बना व उनका आकार बदल सकते है। Boot loader location: - + Boot loader की location: %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + %1 को छोटा करके %2MB किया जाएगा व %4 के लिए %3MB का एक नया विभाजन बनेगा। Select storage de&vice: - + Storage डि&वाइस चुनें : @@ -349,42 +350,42 @@ The installer will quit and all changes will be lost. Current: - + मौजूदा : Reuse %1 as home partition for %2. - + %2 के होम विभाजन के लिए %1 को पुनः उपयोग करें। <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>छोटा करने के लिए विभाजन चुनें, फिर नीचे bar से उसका आकर सेट करें</strong> <strong>Select a partition to install on</strong> - + <strong>इंस्टॉल के लिए विभाजन चुनें</strong> An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + इस सिस्टम पर कहीं भी कोई EFI सिस्टम विभाजन नहीं मिला। कृपया वापस जाएँ व %1 को सेट करने के लिए मैनुअल रूप से विभाजन करें। The EFI system partition at %1 will be used for starting %2. - + %1 वाले EFI सिस्टम विभाजन का उपयोग %2 को शुरू करने के लिए किया जाएगा। EFI system partition: - + EFI सिस्टम विभाजन: This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + इस storage डिवाइस पर लगता है कि कोई ऑपरेटिंग सिस्टम नहीं है। आप क्या करना चाहेंगे?<br/>आप storage डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। @@ -392,12 +393,12 @@ The installer will quit and all changes will be lost. <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + <strong>डिस्क erase करें</strong><br/>इससे चयनित storage डिवाइस पर मौजूद सारा डाटा <font color="red">delete</font> हो जाएगा। This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + इस storage डिवाइस पर %1 है। आप क्या करना चाहेंगे?<br/>आप storage डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। @@ -405,7 +406,7 @@ The installer will quit and all changes will be lost. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - + <strong>साथ में इंस्टॉल करें</strong><br/>इंस्टॉलर %1 के लिए स्थान बनाने हेतु एक विभाजन को छोटा कर देगा। @@ -413,17 +414,17 @@ The installer will quit and all changes will be lost. <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + <strong>विभाजन को बदलें</strong>एक विभाजन को %1 से बदलें। This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + इस storage डिवाइस पर पहले से एक ऑपरेटिंग सिस्टम है। आप क्या करना चाहेंगे?<br/>आप storage डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + इस storage डिवाइस पर एक से अधिक ऑपरेटिंग सिस्टम है। आप क्या करना चाहेंगे?<br/>आप storage डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। @@ -431,17 +432,17 @@ The installer will quit and all changes will be lost. Clear mounts for partitioning operations on %1 - + %1 पर विभाजन कार्य हेतु mount हटाएँ Clearing mounts for partitioning operations on %1. - + %1 पर विभाजन कार्य हेतु mount हटाएँ जा रहे हैं। Cleared all mounts for %1 - + %1 के लिए सभी mount हटा दिए गए @@ -449,22 +450,22 @@ The installer will quit and all changes will be lost. Clear all temporary mounts. - + सभी अस्थायी mount हटाएँ। Clearing all temporary mounts. - + सभी अस्थायी mount हटाएँ जा रहे हैं। Cannot get list of temporary mounts. - + अस्थाई mount की सूची नहीं मिली। Cleared all temporary mounts. - + सभी अस्थायी mount हटा दिए गए। @@ -472,12 +473,12 @@ The installer will quit and all changes will be lost. Could not run command. - + कमांड run नहीं की जा सकी। No rootMountPoint is defined, so command cannot be run in the target environment. - + कोई rootMountPoint परिभाषित नहीं है, इसलिए कमांड को लक्ष्य वातावरण में run नहीं किया जा सकता है। @@ -485,7 +486,7 @@ The installer will quit and all changes will be lost. Contextual Processes Job - + Contextual Processes Job @@ -493,22 +494,22 @@ The installer will quit and all changes will be lost. Create a Partition - + एक विभाजन बनाएँ MiB - + MiB Partition &Type: - + विभाजन का प्र&कार : &Primary - + &मुख्य @@ -528,7 +529,7 @@ The installer will quit and all changes will be lost. Flags: - + Flags: @@ -543,7 +544,7 @@ The installer will quit and all changes will be lost. En&crypt - + En&crypt @@ -553,12 +554,12 @@ The installer will quit and all changes will be lost. Primary - + मुख्य GPT - + GPT @@ -609,12 +610,12 @@ The installer will quit and all changes will be lost. Master Boot Record (MBR) - + Master Boot Record (MBR) GUID Partition Table (GPT) - + GUID Partition Table (GPT) @@ -769,7 +770,7 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) - + %1 - %2 (%3) @@ -795,7 +796,7 @@ The installer will quit and all changes will be lost. Dummy C++ Job - + Dummy C++ Job @@ -818,12 +819,12 @@ The installer will quit and all changes will be lost. Format - + फॉर्मेट करें Warning: Formatting the partition will erase all existing data. - + चेतावनी: विभाजन फॉर्मेट करने से सारा मौजूदा डाटा मिट जायेगा। @@ -838,7 +839,7 @@ The installer will quit and all changes will be lost. MiB - + MiB @@ -848,7 +849,7 @@ The installer will quit and all changes will be lost. Flags: - + Flags: @@ -861,7 +862,7 @@ The installer will quit and all changes will be lost. Form - + रूप @@ -889,7 +890,7 @@ The installer will quit and all changes will be lost. Set partition information - + विभाजन संबंधी जानकारी सेट करें @@ -927,7 +928,7 @@ The installer will quit and all changes will be lost. Form - + रूप @@ -1014,7 +1015,7 @@ The installer will quit and all changes will be lost. Script - + Script @@ -1035,7 +1036,7 @@ The installer will quit and all changes will be lost. Keyboard - कीबोर्ड + कुंजीपटल @@ -1053,7 +1054,7 @@ The installer will quit and all changes will be lost. &Cancel - + &रद्द करें @@ -1066,7 +1067,7 @@ The installer will quit and all changes will be lost. Form - + रूप @@ -1176,7 +1177,7 @@ The installer will quit and all changes will be lost. %1 (%2) Language (Country) - + %1 (%2) @@ -1453,7 +1454,7 @@ The installer will quit and all changes will be lost. The configuration file is malformed - + विन्यास फाइल ख़राब है @@ -1471,7 +1472,7 @@ The installer will quit and all changes will be lost. Form - + रूप @@ -1489,7 +1490,7 @@ The installer will quit and all changes will be lost. Form - + रूप @@ -1506,7 +1507,7 @@ The installer will quit and all changes will be lost. font-weight: normal - + font-weight: normal @@ -1559,7 +1560,7 @@ The installer will quit and all changes will be lost. Root - + Root @@ -1569,7 +1570,7 @@ The installer will quit and all changes will be lost. Boot - + Boot @@ -1594,7 +1595,7 @@ The installer will quit and all changes will be lost. %1 %2 - + %1 %2 @@ -1637,7 +1638,7 @@ The installer will quit and all changes will be lost. Form - + रूप @@ -1685,12 +1686,12 @@ The installer will quit and all changes will be lost. Gathering system information... - + सिस्टम की जानकारी प्राप्त की जा रही है... Partitions - + विभाजन @@ -1740,12 +1741,12 @@ The installer will quit and all changes will be lost. Current: - + मौजूदा : After: - + बाद में: @@ -1783,7 +1784,7 @@ The installer will quit and all changes will be lost. Plasma Look-and-Feel Job - + Plasma Look-and-Feel Job @@ -1797,12 +1798,12 @@ The installer will quit and all changes will be lost. Form - + रूप Placeholder - + Placeholder @@ -1905,12 +1906,12 @@ Output: extended - + विस्तृत unformatted - + फॉर्मेट नहीं हो रखा है @@ -1928,7 +1929,7 @@ Output: Form - + रूप @@ -1990,12 +1991,12 @@ Output: The EFI system partition at %1 will be used for starting %2. - + %1 वाले EFI सिस्टम विभाजन का उपयोग %2 को शुरू करने के लिए किया जाएगा। EFI system partition: - + EFI सिस्टम विभाजन: @@ -2003,7 +2004,7 @@ Output: Gathering system information... - + सिस्टम की जानकारी प्राप्त की जा रही है... @@ -2397,12 +2398,12 @@ Output: Form - + रूप Placeholder - + Placeholder @@ -2414,14 +2415,14 @@ Output: TextLabel - + TextLabel ... - + ... @@ -2504,7 +2505,7 @@ Output: Form - + रूप @@ -2534,27 +2535,27 @@ Output: <h1>Welcome to the %1 installer.</h1> - + <h1>%1 इंस्टॉलर में आपका स्वागत है।</h1> <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>%1 के लिए Calamares इंस्टॉलर में आपका स्वागत है।</h1> About %1 installer - + %1 इंस्टॉलर के बारे में <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, रोहन गर्ग व <a href="https://www.transifex.com/calamares/calamares/">Calamares अनुवादक टीम</a> का धन्यवाद।<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. %1 support - + %1 सहायता @@ -2562,7 +2563,7 @@ Output: Welcome - + स्वागतं \ No newline at end of file diff --git a/lang/calamares_id.ts b/lang/calamares_id.ts index 1256b7be5..0ea8a0218 100644 --- a/lang/calamares_id.ts +++ b/lang/calamares_id.ts @@ -475,12 +475,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. Could not run command. - + Tidak dapat menjalankan perintah No rootMountPoint is defined, so command cannot be run in the target environment. - + rootMountPoint tidak didefiniskan, sehingga perintah tidak dapat dijalankan dalam lingkungan environment @@ -488,7 +488,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. Contextual Processes Job - + Memproses tugas kontekstual @@ -526,7 +526,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. LVM LV name - + Nama LV LVM @@ -935,7 +935,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - + Ketika kotak ini dicentang, sistem kamu akan segera dimulai kembali saat mengklik Selesai atau menutup pemasang. @@ -1004,7 +1004,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. Please install KDE Konsole and try again! - + Silahkan pasang KDE Konsole dan ulangi lagi! @@ -1061,7 +1061,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. &OK - + &OK @@ -1215,7 +1215,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. Network Installation. (Disabled: Received invalid groups data) - + Pemasangan jaringan. (Menonaktifkan: Penerimaan kelompok data yang tidak sah) @@ -1231,57 +1231,57 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. Password is too short - + Kata sandi terlalu pendek Password is too long - + Kata sandi terlalu panjang Password is too weak - + kata sandi terlalu lemah Memory allocation error when setting '%1' - + Kesalahan alokasi memori saat menyetel '%1' Memory allocation error - + Kesalahan alokasi memori The password is the same as the old one - + Kata sandi sama dengan yang lama The password is a palindrome - + Kata sandi palindrom The password differs with case changes only - + Kata sandi berbeda hanya dengan perubahan huruf saja The password is too similar to the old one - + Kata sandi terlalu mirip dengan yang lama The password contains the user name in some form - + Kata sandi berisi nama pengguna dalam beberapa form The password contains words from the real name of the user in some form - + Kata sandi berisi kata-kata dari nama asli pengguna dalam beberapa form diff --git a/lang/calamares_lt.ts b/lang/calamares_lt.ts index c8ca26668..8024763e3 100644 --- a/lang/calamares_lt.ts +++ b/lang/calamares_lt.ts @@ -172,7 +172,7 @@ &Cancel - A&tšaukti + A&tsisakyti @@ -189,7 +189,7 @@ Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - Ar tikrai norite atšaukti dabartinio diegimo procesą? + Ar tikrai norite atsisakyti dabartinio diegimo proceso? Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. @@ -1648,7 +1648,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. &Revert All Changes - &Atšaukti visus pakeitimus + &Sugrąžinti visus pakeitimus diff --git a/lang/calamares_sk.ts b/lang/calamares_sk.ts index b196209c4..4312b4124 100644 --- a/lang/calamares_sk.ts +++ b/lang/calamares_sk.ts @@ -1244,7 +1244,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Memory allocation error when setting '%1' - + Chyba počas vyhradzovania pamäte pri nastavovaní „%1“ @@ -1259,12 +1259,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. The password is a palindrome - + Heslo je palindróm The password differs with case changes only - + Heslo sa odlišuje iba vo veľkosti písmen @@ -1289,7 +1289,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. The password contains less than %1 digits - + Heslo obsahuje menej ako %1 číslic @@ -1299,7 +1299,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. The password contains less than %1 uppercase letters - + Heslo obsahuje menej ako %1 veľkých písmen @@ -1309,7 +1309,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. The password contains less than %1 lowercase letters - + Heslo obsahuje menej ako %1 malých písmen @@ -1399,12 +1399,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. The password fails the dictionary check - %1 - + Heslo zlyhalo pri slovníkovej kontrole - %1 The password fails the dictionary check - + Heslo zlyhalo pri slovníkovej kontrole @@ -1825,7 +1825,8 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. There was no output from the command. - + +Žiadny výstup z príkazu. From ef2a15b45bb4a41bd8bc924fbb15a61bb4aec212 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Fri, 13 Apr 2018 10:25:37 -0400 Subject: [PATCH 085/385] i18n: [desktop] Automatic merge of Transifex translations --- calamares.desktop | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/calamares.desktop b/calamares.desktop index 1bb0c0168..d0a46d5e2 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -59,6 +59,10 @@ Name[he]=קלמארס Icon[he]=קלמארס GenericName[he]=אשף התקנה Comment[he]=קלמארס - אשף התקנה +Name[hi]=Calamares +Icon[hi]=calamares +GenericName[hi]=सिस्टम इंस्टॉलर +Comment[hi]=Calamares — सिस्टम इंस्टॉलर Name[hr]=Calamares Icon[hr]=calamares GenericName[hr]=Instalacija sustava From 8ba4de6d0ab95bcb12841cf718785b3b12ce6093 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Fri, 13 Apr 2018 10:25:38 -0400 Subject: [PATCH 086/385] i18n: [dummypythonqt] Automatic merge of Transifex translations --- .../lang/hi/LC_MESSAGES/dummypythonqt.mo | Bin 419 -> 1014 bytes .../lang/hi/LC_MESSAGES/dummypythonqt.po | 15 ++++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo index 198aba348e83eb9ea74cc86b0ba91e36eb1af704..74b0fba49d89b9d574192e9eeaa158b8f60746c6 100644 GIT binary patch literal 1014 zcmb7?&u`N(6vqP$(1N%O2`(Ucw~gT@t;AL`iYRTz3hUZ+VG^8hQ?K<%>?n5ERfq$- zz=3I}{Rb)94a5Ph5`rWD1@fQ3nG-MVen`_eVD*!)pYy)YuJe9PjO`gPE(13K7q|j^ z0FrS4Tm=Te6z~%m2Yv%LfIq->VB(x%%z{pX?gKA@YY>lLFpMJTEzsMb4ba551Dg2y zp!Yz(fr4c?&chQzV{8;2KQF;7Ip@V>C674mqLn4mpneJ>sfg-G6i_Kii=uTAp<*Wp zdZ^Y@ZNXO*dLkMrqu?{|6=Y2sr{1nH+FeyNG~6~l!wJhwBKWB@U#C!FYYsQu5Dg?r zPde!J8>1G94eBXeZsIi>NhY|1YWc#`{NoZ@E7e!a)n&6zLlG%lkuBE5k2)=hUEv_J zR&{Y9qC|lS7m1<{%Gl{FwlmnCL+Pw@H#=jeZ5tACoo=$E_+j4jQofEWRb0%Y#i~;& z&%CHEm&_$16?P-SrB9TI98~ob*<^&n9r;3{`yP=YgmWR~T?Wo&ykZMB&-ZC1*a z(#d_KQ?^+UTu~0k>xJ+?72Q%+=o7~0k=G`Xq$>B!UBKCsykx6&8sQT6M3eEBgR%{# zjt}XeHZyB}Cn7#x5K#bMgNMUV<}&kWG|f$MG?_!`>3P%8@xG2f>G=C$Pw9Sqx<#OY zkdF6s{~gE|9skhrF3fge?Wp~9e4yiP9e;!*9e+)V466>Hu#Vr3>^n#9y`2C0F8$?=Rq0_M5~mbwNe V3I-NdhGsy<, 2018\n" "Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,24 +20,24 @@ msgstr "" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" -msgstr "" +msgstr "यहाँ क्लिक करें!" #: src/modules/dummypythonqt/main.py:94 msgid "A new QLabel." -msgstr "" +msgstr "नया QLabel।" #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" -msgstr "" +msgstr "Dummy PythonQt ViewStep" #: src/modules/dummypythonqt/main.py:183 msgid "The Dummy PythonQt Job" -msgstr "" +msgstr "The Dummy PythonQt Job" #: src/modules/dummypythonqt/main.py:186 msgid "This is the Dummy PythonQt Job. The dummy job says: {}" -msgstr "" +msgstr "यह Dummy PythonQt Job है।The dummy job says: {}" #: src/modules/dummypythonqt/main.py:190 msgid "A status message for Dummy PythonQt Job." -msgstr "" +msgstr "Dummy PythonQt Job के लिए एक status संदेश।" From 4161120385c094e5c4d2b7e098ff54d8f31823fb Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Fri, 13 Apr 2018 10:25:38 -0400 Subject: [PATCH 087/385] i18n: [python] Automatic merge of Transifex translations --- lang/python/hi/LC_MESSAGES/python.mo | Bin 419 -> 1368 bytes lang/python/hi/LC_MESSAGES/python.po | 19 ++++++++++--------- lang/python/id/LC_MESSAGES/python.mo | Bin 645 -> 987 bytes lang/python/id/LC_MESSAGES/python.po | 16 ++++++++-------- lang/python/is/LC_MESSAGES/python.mo | Bin 1052 -> 1066 bytes lang/python/is/LC_MESSAGES/python.po | 2 +- lang/python/pl/LC_MESSAGES/python.mo | Bin 1370 -> 1362 bytes lang/python/pl/LC_MESSAGES/python.po | 2 +- 8 files changed, 20 insertions(+), 19 deletions(-) diff --git a/lang/python/hi/LC_MESSAGES/python.mo b/lang/python/hi/LC_MESSAGES/python.mo index 57a9d3d2ca96489a0a1e9fff46f2cb2d06838f7b..30ae668804055e50440d604f4f6213396889d9d8 100644 GIT binary patch literal 1368 zcmbtTK~EDw6kZk7)RV@iNq_nA(MB`=H9ooU&na$1=XpA0= z33@P`xM8?#6XhcDBp1Ev*`tY>pWsjMZEH(FAQ~t6_S^YpzBlj9zWs4wV8eiM7H}Ex z2yhOt35drRzjM-pjDp4wy3VZjFNn42t!4>6@UMqk)6L+QV21``DW=K3dB|=}?hzFgi z%#Dnr?rSc|(Uly^q{b8b+wSN_-0MG7@AagPHgvS3+iN;{uG^8Jqix-O8LP3hiFDLi zi9YJ~YaMOr_A4EI0QI129VC$d+Wc8Z?{)MEESp{0(a~=AZ8uH;Qt371zeQa?5VE}n rLMP$g;!1CesLrGgu)&CUR4{=-u@qPUQKR+7a delta 69 zcmcb?wV2uBo)F7a1|VPrVi_P-0b*t#)&XJ=umIvrprj>`2C0F8$txK9CzmnZ0RR)= B2uJ_` diff --git a/lang/python/hi/LC_MESSAGES/python.po b/lang/python/hi/LC_MESSAGES/python.po index 21403be21..aabb581aa 100644 --- a/lang/python/hi/LC_MESSAGES/python.po +++ b/lang/python/hi/LC_MESSAGES/python.po @@ -10,6 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-07 18:58+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Octavian Pylos , 2018\n" "Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,35 +20,35 @@ msgstr "" #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "" +msgstr "Dummy python job." #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "" +msgstr "Dummy python step {}" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "" +msgstr "machine-id generate करें।" #: src/modules/packages/main.py:60 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" +msgstr "पैकेज (%(count)d / %(total)d) process किए जा रहे हैं" #: src/modules/packages/main.py:62 src/modules/packages/main.py:72 msgid "Install packages." -msgstr "" +msgstr "पैकेज इंस्टॉल करें।" #: src/modules/packages/main.py:65 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "एक पैकेज इंस्टॉल किया जा रहा है।" +msgstr[1] "%(num)d पैकेज इंस्टॉल किए जा रहे हैं।" #: src/modules/packages/main.py:68 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "एक पैकेज हटाया जा रहा है।" +msgstr[1] "%(num)d पैकेज हटाए जा रहे हैं।" diff --git a/lang/python/id/LC_MESSAGES/python.mo b/lang/python/id/LC_MESSAGES/python.mo index 66d329c779dc15fe9bf3b1f69e2d8d1a980737e1..865533faca9acc56b58ce79af9f3ad75a4f712d6 100644 GIT binary patch delta 554 zcmZ9Hze)o^5Qit47(p!*Q45O&Nk|Yc7Gm$8CJ-TrrG@L=dbix|?vcF{gGef^Y=YP+ z*5Yee=raUtd;uT9-^m?D7ry(LnVq?v>&mD)_*f|46V5bP1;=0pJb>)HfqC!_7Qra@ z7o6oQC88~O8D57w@Fsi#--2hbfOvb7XbEn^EARmh zra&2FkIl|R_8H3kL0j8|M-hv;8**P*hw_ZnJ~LVrg+KXPL#L|g6*V+Bvp*yYuDo(_ce18!v$a?KQX1F6M^^c;%0MF(CGiiDI|M?>iXAPtmeU, 2017\n" +"Last-Translator: Choiril Abdul, 2017\n" "Language-Team: Indonesian (https://www.transifex.com/calamares/teams/20061/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,33 +20,33 @@ msgstr "" #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "Dummy python job." +msgstr "Tugas dumi python." #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "Dummy python step {}" +msgstr "Langkah {} dumi python" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "Generate machine-id." +msgstr "Menghasilkan machine-id." #: src/modules/packages/main.py:60 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" +msgstr "Paket pemrosesan (%(count)d/%(total)d)" #: src/modules/packages/main.py:62 src/modules/packages/main.py:72 msgid "Install packages." -msgstr "" +msgstr "pasang paket" #: src/modules/packages/main.py:65 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" +msgstr[0] "memasang paket %(num)d" #: src/modules/packages/main.py:68 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" +msgstr[0] "mencopot %(num)d paket" diff --git a/lang/python/is/LC_MESSAGES/python.mo b/lang/python/is/LC_MESSAGES/python.mo index 76412409d86cb6d2398982ffb2918000eac55525..d59f915de02c17d8a72cbd2fcb4a4b8bc5ad4616 100644 GIT binary patch delta 94 zcmbQkv5I3tjO}_x28NYDEXcsX5XsEIAOfVbp>zX~769_60%<)Uy$ndJ0_m$z{_l-5 dH!=#8WF20Zr{J5Io_BaxadCd$W*?>ti~!}q6m|dr delta 80 zcmZ3*F^6M9jO{{328NYDEXcsX;LXgyAOfUgp>z?D769_wfwUfwo&ls)f%I`G|Lw+^ P8yT63GdD*uU0?(N*c}Z| diff --git a/lang/python/is/LC_MESSAGES/python.po b/lang/python/is/LC_MESSAGES/python.po index 91e8eb121..064735626 100644 --- a/lang/python/is/LC_MESSAGES/python.po +++ b/lang/python/is/LC_MESSAGES/python.po @@ -10,7 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-07 18:58+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Krissi, 2017\n" +"Last-Translator: Kristján Magnússon, 2017\n" "Language-Team: Icelandic (https://www.transifex.com/calamares/teams/20061/is/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/lang/python/pl/LC_MESSAGES/python.mo b/lang/python/pl/LC_MESSAGES/python.mo index d8a064d3528df88f98c0b331456571b1ea43f7aa..27720b059c9aea0a7598b7dcb22d0ccfd20c8193 100644 GIT binary patch delta 87 zcmcb`b%|?2jI9Y11H(#21_lWR28Mgg3=HBx`a6&o2Gaa25Ly{X*8utEKw2M2ZvoP| bK>EqXnTHuUQyp?minH}H^ET%)y=4LbY&#Hi delta 95 zcmcb_b&G34jI9k51H(#21_lWR28L(M3=HBx`ah5s2GZgz5Lz2Z*8utUKw2M2?*Y=e jK>E$bnTHt#O^UM(^Bl@D%Mx=^GWGIOOE#x6y=4Lb3`rB< diff --git a/lang/python/pl/LC_MESSAGES/python.po b/lang/python/pl/LC_MESSAGES/python.po index b7a5fadc3..a29efca8d 100644 --- a/lang/python/pl/LC_MESSAGES/python.po +++ b/lang/python/pl/LC_MESSAGES/python.po @@ -10,7 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-07 18:58+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Marcin Mikołajczak , 2017\n" +"Last-Translator: Marcin Mikołajczak , 2017\n" "Language-Team: Polish (https://www.transifex.com/calamares/teams/20061/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" From 2cd4461b57fed9275badb351c52dffd2dcb7b34f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 16 Apr 2018 04:32:49 -0400 Subject: [PATCH 088/385] [locale] Rename JSON handler - The handler for JSON data should be called that, not named specially after the original provider it was implemented for. - Make filename and classname consistent, GeoIPJSON. --- src/modules/locale/CMakeLists.txt | 2 +- .../locale/{GeoIPFreeGeoIP.cpp => GeoIPJSON.cpp} | 4 ++-- src/modules/locale/{GeoIPFreeGeoIP.h => GeoIPJSON.h} | 11 +++++------ src/modules/locale/GeoIPTests.cpp | 6 +++--- src/modules/locale/LocaleViewStep.cpp | 6 +++--- src/modules/locale/test_geoip.cpp | 4 ++-- 6 files changed, 16 insertions(+), 17 deletions(-) rename src/modules/locale/{GeoIPFreeGeoIP.cpp => GeoIPJSON.cpp} (95%) rename src/modules/locale/{GeoIPFreeGeoIP.h => GeoIPJSON.h} (83%) diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index 3c0cc3712..384135d4c 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -6,7 +6,7 @@ endif() include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) -set( geoip_src GeoIP.cpp GeoIPFreeGeoIP.cpp ) +set( geoip_src GeoIP.cpp GeoIPJSON.cpp ) set( geoip_libs ) find_package(Qt5 COMPONENTS Xml) diff --git a/src/modules/locale/GeoIPFreeGeoIP.cpp b/src/modules/locale/GeoIPJSON.cpp similarity index 95% rename from src/modules/locale/GeoIPFreeGeoIP.cpp rename to src/modules/locale/GeoIPJSON.cpp index 9ef534a5d..78f6c67a7 100644 --- a/src/modules/locale/GeoIPFreeGeoIP.cpp +++ b/src/modules/locale/GeoIPJSON.cpp @@ -17,7 +17,7 @@ * along with Calamares. If not, see . */ -#include "GeoIPFreeGeoIP.h" +#include "GeoIPJSON.h" #include "utils/Logger.h" #include "utils/YamlUtils.h" @@ -27,7 +27,7 @@ #include GeoIP::RegionZonePair -FreeGeoIP::processReply( const QByteArray& data ) +GeoIPJSON::processReply( const QByteArray& data ) { try { diff --git a/src/modules/locale/GeoIPFreeGeoIP.h b/src/modules/locale/GeoIPJSON.h similarity index 83% rename from src/modules/locale/GeoIPFreeGeoIP.h rename to src/modules/locale/GeoIPJSON.h index e8986db3f..26a0560f6 100644 --- a/src/modules/locale/GeoIPFreeGeoIP.h +++ b/src/modules/locale/GeoIPJSON.h @@ -16,20 +16,19 @@ * along with Calamares. If not, see . */ -#ifndef GEOIPFREEGEOIP_H -#define GEOIPFREEGEOIP_H +#ifndef GEOIPJSON_H +#define GEOIPJSON_H #include "GeoIP.h" -/** @brief GeoIP lookup via freegeoip.com +/** @brief GeoIP lookup for services that return JSON. * * This is the original implementation of GeoIP lookup, - * using the FreeGeoIP service, or similar which returns - * data in the same format. + * (e.g. using the FreeGeoIP.net service), or similar. * * The data is assumed to be in JSON format with a time_zone attribute. */ -struct FreeGeoIP : public GeoIP +struct GeoIPJSON : public GeoIP { virtual RegionZonePair processReply( const QByteArray& ); } ; diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp index 2c59aa729..4f946b8b7 100644 --- a/src/modules/locale/GeoIPTests.cpp +++ b/src/modules/locale/GeoIPTests.cpp @@ -18,7 +18,7 @@ #include "GeoIPTests.h" -#include "GeoIPFreeGeoIP.h" +#include "GeoIPJSON.h" #ifdef HAVE_XML #include "GeoIPXML.h" #endif @@ -46,7 +46,7 @@ GeoIPTests::testJSON() static const char data[] = "{\"time_zone\":\"Europe/Amsterdam\"}"; - FreeGeoIP handler; + GeoIPJSON handler; auto tz = handler.processReply( data ); QCOMPARE( tz.first, QLatin1String( "Europe" ) ); @@ -65,7 +65,7 @@ GeoIPTests::testJSONbad() { static const char data[] = "time_zone: 1"; - FreeGeoIP handler; + GeoIPJSON handler; auto tz = handler.processReply( data ); tz = handler.processReply( data ); diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 7cafd8793..243ad436c 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -20,7 +20,7 @@ #include "LocaleViewStep.h" #include "GeoIP.h" -#include "GeoIPFreeGeoIP.h" +#include "GeoIPJSON.h" #ifdef HAVE_XML #include "GeoIPXML.h" #endif @@ -124,11 +124,11 @@ LocaleViewStep::fetchGeoIpTimezone() if ( m_geoipStyle.isEmpty() || m_geoipStyle == "legacy" ) { actualUrl.append( "/json/" ); - handler = new FreeGeoIP; + handler = new GeoIPJSON; } else if ( m_geoipStyle == "json" ) { - handler = new FreeGeoIP; + handler = new GeoIPJSON; } #if defined(HAVE_XML) else if ( m_geoipStyle == "xml" ) diff --git a/src/modules/locale/test_geoip.cpp b/src/modules/locale/test_geoip.cpp index 5797ad9ff..70c205b40 100644 --- a/src/modules/locale/test_geoip.cpp +++ b/src/modules/locale/test_geoip.cpp @@ -22,7 +22,7 @@ #include -#include "GeoIPFreeGeoIP.h" +#include "GeoIPJSON.h" #ifdef HAVE_XML #include "GeoIPXML.h" #endif @@ -39,7 +39,7 @@ int main(int argc, char** argv) GeoIP* handler = nullptr; if ( QLatin1String( "json" ) == argv[1] ) - handler = new FreeGeoIP; + handler = new GeoIPJSON; #ifdef HAVE_XML else if ( QLatin1String( "xml" ) == argv[1] ) handler = new XMLGeoIP; From 79a6d7ccbdfa13e5399afc79adfc8ce8af82c346 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 16 Apr 2018 04:35:32 -0400 Subject: [PATCH 089/385] [locale] Make file and class consistent GeoIPXML - Rename the class to match the filename. --- src/modules/locale/GeoIPTests.cpp | 6 +++--- src/modules/locale/GeoIPXML.cpp | 2 +- src/modules/locale/GeoIPXML.h | 2 +- src/modules/locale/LocaleViewStep.cpp | 2 +- src/modules/locale/test_geoip.cpp | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp index 4f946b8b7..d4522836c 100644 --- a/src/modules/locale/GeoIPTests.cpp +++ b/src/modules/locale/GeoIPTests.cpp @@ -100,7 +100,7 @@ GeoIPTests::testXML() )"; #ifdef HAVE_XML - XMLGeoIP handler; + GeoIPXML handler; auto tz = handler.processReply( data ); QCOMPARE( tz.first, QLatin1String( "Europe" ) ); @@ -115,7 +115,7 @@ GeoIPTests::testXML2() "America/North Dakota/Beulah"; #ifdef HAVE_XML - XMLGeoIP handler; + GeoIPXML handler; auto tz = handler.processReply( data ); QCOMPARE( tz.first, QLatin1String( "America" ) ); @@ -127,7 +127,7 @@ void GeoIPTests::testXMLbad() { #ifdef HAVE_XML - XMLGeoIP handler; + GeoIPXML handler; auto tz = handler.processReply( "{time_zone: \"Europe/Paris\"}" ); QCOMPARE( tz.first, QString() ); diff --git a/src/modules/locale/GeoIPXML.cpp b/src/modules/locale/GeoIPXML.cpp index a0f9b7a2d..28761e163 100644 --- a/src/modules/locale/GeoIPXML.cpp +++ b/src/modules/locale/GeoIPXML.cpp @@ -24,7 +24,7 @@ #include GeoIP::RegionZonePair -XMLGeoIP::processReply( const QByteArray& data ) +GeoIPXML::processReply( const QByteArray& data ) { QString domError; int errorLine, errorColumn; diff --git a/src/modules/locale/GeoIPXML.h b/src/modules/locale/GeoIPXML.h index 8eec22a75..adffc5bca 100644 --- a/src/modules/locale/GeoIPXML.h +++ b/src/modules/locale/GeoIPXML.h @@ -28,7 +28,7 @@ * element, which contains the text (string) for the region/zone. This * format is expected by, e.g. the Ubiquity installer. */ -struct XMLGeoIP : public GeoIP +struct GeoIPXML : public GeoIP { virtual RegionZonePair processReply( const QByteArray& ); } ; diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 243ad436c..73121581c 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -133,7 +133,7 @@ LocaleViewStep::fetchGeoIpTimezone() #if defined(HAVE_XML) else if ( m_geoipStyle == "xml" ) { - handler = new XMLGeoIP; + handler = new GeoIPXML; } #endif else diff --git a/src/modules/locale/test_geoip.cpp b/src/modules/locale/test_geoip.cpp index 70c205b40..7b6584f0c 100644 --- a/src/modules/locale/test_geoip.cpp +++ b/src/modules/locale/test_geoip.cpp @@ -42,7 +42,7 @@ int main(int argc, char** argv) handler = new GeoIPJSON; #ifdef HAVE_XML else if ( QLatin1String( "xml" ) == argv[1] ) - handler = new XMLGeoIP; + handler = new GeoIPXML; #endif if ( !handler ) From fe20416a54184ef913fab5958e53e3f6c8b4fbe9 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 16 Apr 2018 04:55:37 -0400 Subject: [PATCH 090/385] [locale] Make the selector configurable - GeoIP gets a string selector; the interpretation is up to derived classes. - GeoIPXML and GeoIPJSON use the selector to select an element by tag or an attribute, respectively. --- src/modules/locale/GeoIP.cpp | 5 +++++ src/modules/locale/GeoIP.h | 8 +++++++- src/modules/locale/GeoIPJSON.cpp | 19 ++++++++++++++++--- src/modules/locale/GeoIPJSON.h | 6 +++++- src/modules/locale/GeoIPTests.cpp | 3 +++ src/modules/locale/GeoIPXML.cpp | 13 ++++++++++++- src/modules/locale/GeoIPXML.h | 8 +++++++- 7 files changed, 55 insertions(+), 7 deletions(-) diff --git a/src/modules/locale/GeoIP.cpp b/src/modules/locale/GeoIP.cpp index 1bed7d3f4..f11a44db7 100644 --- a/src/modules/locale/GeoIP.cpp +++ b/src/modules/locale/GeoIP.cpp @@ -20,6 +20,11 @@ #include "utils/Logger.h" +GeoIP::GeoIP(const QString& e) + : m_element( e ) +{ +} + GeoIP::~GeoIP() { } diff --git a/src/modules/locale/GeoIP.h b/src/modules/locale/GeoIP.h index c84a9b5e4..6088c8a45 100644 --- a/src/modules/locale/GeoIP.h +++ b/src/modules/locale/GeoIP.h @@ -32,8 +32,9 @@ class QByteArray; * and can handle the data returned from its interpretation of that * configured URL, returning a region and zone. */ -struct GeoIP +class GeoIP { +public: using RegionZonePair = QPair; virtual ~GeoIP(); @@ -51,6 +52,11 @@ struct GeoIP /** @brief Splits a region/zone string into a pair. */ static RegionZonePair splitTZString( const QString& s ); + +protected: + GeoIP( const QString& e = QString() ); + + QString m_element; // string for selecting from data } ; #endif diff --git a/src/modules/locale/GeoIPJSON.cpp b/src/modules/locale/GeoIPJSON.cpp index 78f6c67a7..aa5a2b411 100644 --- a/src/modules/locale/GeoIPJSON.cpp +++ b/src/modules/locale/GeoIPJSON.cpp @@ -26,6 +26,17 @@ #include +GeoIPJSON::GeoIPJSON(const QString& attribute) + : GeoIP( attribute ) +{ +} + +GeoIPJSON::GeoIPJSON() + : GeoIPJSON( QLatin1Literal( "time_zone" ) ) +{ +} + + GeoIP::RegionZonePair GeoIPJSON::processReply( const QByteArray& data ) { @@ -39,12 +50,14 @@ GeoIPJSON::processReply( const QByteArray& data ) var.type() == QVariant::Map ) { QVariantMap map = var.toMap(); - if ( map.contains( "time_zone" ) && - !map.value( "time_zone" ).toString().isEmpty() ) + if ( map.contains( m_element ) && + !map.value( m_element ).toString().isEmpty() ) { - return splitTZString( map.value( "time_zone" ).toString() ); + return splitTZString( map.value( m_element ).toString() ); } } + else + cWarning() << "Invalid YAML data for GeoIPJSON"; } catch ( YAML::Exception& e ) { diff --git a/src/modules/locale/GeoIPJSON.h b/src/modules/locale/GeoIPJSON.h index 26a0560f6..dbe1eeffa 100644 --- a/src/modules/locale/GeoIPJSON.h +++ b/src/modules/locale/GeoIPJSON.h @@ -28,8 +28,12 @@ * * The data is assumed to be in JSON format with a time_zone attribute. */ -struct GeoIPJSON : public GeoIP +class GeoIPJSON : public GeoIP { +public: + explicit GeoIPJSON( const QString& attribute ); + explicit GeoIPJSON(); + virtual RegionZonePair processReply( const QByteArray& ); } ; diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp index d4522836c..4848f1a2d 100644 --- a/src/modules/locale/GeoIPTests.cpp +++ b/src/modules/locale/GeoIPTests.cpp @@ -76,6 +76,9 @@ GeoIPTests::testJSONbad() tz = handler.processReply( "404 Forbidden" ); QCOMPARE( tz.first, QString() ); + + tz = handler.processReply( "{ time zone = 'America/LosAngeles'}" ); + QCOMPARE( tz.first, QString() ); } diff --git a/src/modules/locale/GeoIPXML.cpp b/src/modules/locale/GeoIPXML.cpp index 28761e163..a2117b2f2 100644 --- a/src/modules/locale/GeoIPXML.cpp +++ b/src/modules/locale/GeoIPXML.cpp @@ -23,6 +23,17 @@ #include #include +GeoIPXML::GeoIPXML( const QString& element ) + : GeoIP( element ) +{ +} + +GeoIPXML::GeoIPXML() + : GeoIPXML( QLatin1Literal( "TimeZone" ) ) +{ +} + + GeoIP::RegionZonePair GeoIPXML::processReply( const QByteArray& data ) { @@ -32,7 +43,7 @@ GeoIPXML::processReply( const QByteArray& data ) QDomDocument doc; if ( doc.setContent( data, false, &domError, &errorLine, &errorColumn ) ) { - const auto tzElements = doc.elementsByTagName( "TimeZone" ); + const auto tzElements = doc.elementsByTagName( m_element ); cDebug() << "GeoIP found" << tzElements.length() << "elements"; for ( int it = 0; it < tzElements.length(); ++it ) { diff --git a/src/modules/locale/GeoIPXML.h b/src/modules/locale/GeoIPXML.h index adffc5bca..bda359485 100644 --- a/src/modules/locale/GeoIPXML.h +++ b/src/modules/locale/GeoIPXML.h @@ -28,8 +28,14 @@ * element, which contains the text (string) for the region/zone. This * format is expected by, e.g. the Ubiquity installer. */ -struct GeoIPXML : public GeoIP +class GeoIPXML : public GeoIP { +public: + /** @brief Configure the element name which is selected. */ + explicit GeoIPXML( const QString& element ); + /** @brief Use default TimeZone element. */ + explicit GeoIPXML(); + virtual RegionZonePair processReply( const QByteArray& ); } ; From b1b59b27b277d9d294da5c16eece56754395a951 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 16 Apr 2018 05:05:06 -0400 Subject: [PATCH 091/385] [locale] Expand tests for alternate selectors - Check that the alternate selectors are used --- src/modules/locale/GeoIPTests.cpp | 42 ++++++++++++++++++++++++------- src/modules/locale/GeoIPTests.h | 2 ++ 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp index 4848f1a2d..554e6f0c0 100644 --- a/src/modules/locale/GeoIPTests.cpp +++ b/src/modules/locale/GeoIPTests.cpp @@ -40,14 +40,14 @@ GeoIPTests::initTestCase() { } +static const char json_data_attribute[] = + "{\"time_zone\":\"Europe/Amsterdam\"}"; + void GeoIPTests::testJSON() { - static const char data[] = - "{\"time_zone\":\"Europe/Amsterdam\"}"; - GeoIPJSON handler; - auto tz = handler.processReply( data ); + auto tz = handler.processReply( json_data_attribute ); QCOMPARE( tz.first, QLatin1String( "Europe" ) ); QCOMPARE( tz.second, QLatin1String( "Amsterdam" ) ); @@ -60,6 +60,18 @@ GeoIPTests::testJSON() QCOMPARE( tz.first, "America" ); } +void GeoIPTests::testJSONalt() +{ + GeoIPJSON handler( "zona_de_hora" ); + + auto tz = handler.processReply( json_data_attribute ); + QCOMPARE( tz.first, QString() ); // Not found + + tz = handler.processReply( "tarifa: 12\nzona_de_hora: Europe/Madrid" ); + QCOMPARE( tz.first, QLatin1String( "Europe" ) ); + QCOMPARE( tz.second, QLatin1String( "Madrid" ) ); +} + void GeoIPTests::testJSONbad() { @@ -82,10 +94,7 @@ GeoIPTests::testJSONbad() } -void -GeoIPTests::testXML() -{ - static const char data[] = +static const char xml_data_ubiquity[] = R"( 85.150.1.1 OK @@ -102,9 +111,12 @@ GeoIPTests::testXML() Europe/Amsterdam )"; +void +GeoIPTests::testXML() +{ #ifdef HAVE_XML GeoIPXML handler; - auto tz = handler.processReply( data ); + auto tz = handler.processReply( xml_data_ubiquity ); QCOMPARE( tz.first, QLatin1String( "Europe" ) ); QCOMPARE( tz.second, QLatin1String( "Amsterdam" ) ); @@ -126,6 +138,18 @@ GeoIPTests::testXML2() #endif } + +void GeoIPTests::testXMLalt() +{ +#ifdef HAvE_XML + GeoIPXML handler( "ZT" ); + + auto tz = handler.processReply( "Moon/Dark_side" ); + QCOMPARE( tz.first, QLatin1String( "Moon" ) ); + QCOMPARE( tz.second, QLatin1String( "Dark_side" ) ); +#endif +} + void GeoIPTests::testXMLbad() { diff --git a/src/modules/locale/GeoIPTests.h b/src/modules/locale/GeoIPTests.h index e673a0740..87918ace0 100644 --- a/src/modules/locale/GeoIPTests.h +++ b/src/modules/locale/GeoIPTests.h @@ -31,9 +31,11 @@ public: private Q_SLOTS: void initTestCase(); void testJSON(); + void testJSONalt(); void testJSONbad(); void testXML(); void testXML2(); + void testXMLalt(); void testXMLbad(); }; From 352b385b121e447c11db80ec0d9c6b541342a084 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 16 Apr 2018 05:16:23 -0400 Subject: [PATCH 092/385] [locale] Make the selector configurable via the config file --- src/modules/locale/LocaleViewStep.cpp | 7 ++++--- src/modules/locale/LocaleViewStep.h | 6 ++++-- src/modules/locale/locale.conf | 13 ++++++++++++- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 73121581c..4a6eb229a 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -124,16 +124,16 @@ LocaleViewStep::fetchGeoIpTimezone() if ( m_geoipStyle.isEmpty() || m_geoipStyle == "legacy" ) { actualUrl.append( "/json/" ); - handler = new GeoIPJSON; + handler = new GeoIPJSON( m_geoipSelector ); } else if ( m_geoipStyle == "json" ) { - handler = new GeoIPJSON; + handler = new GeoIPJSON( m_geoipSelector ); } #if defined(HAVE_XML) else if ( m_geoipStyle == "xml" ) { - handler = new GeoIPXML; + handler = new GeoIPXML( m_geoipSelector ); } #endif else @@ -295,4 +295,5 @@ LocaleViewStep::setConfigurationMap( const QVariantMap& configurationMap ) // Optional m_geoipUrl = CalamaresUtils::getString( configurationMap, "geoipUrl" ); m_geoipStyle = CalamaresUtils::getString( configurationMap, "geoipStyle" ); + m_geoipSelector = CalamaresUtils::getString( configurationMap, "geoipSelector" ); } diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index 003978d6a..b02f6adbd 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -75,8 +75,10 @@ private: QPair< QString, QString > m_startingTimezone; QString m_localeGenPath; - QString m_geoipUrl; - QString m_geoipStyle; + + QString m_geoipUrl; // The URL, depening on style might be modified on lookup + QString m_geoipStyle; // String selecting which kind of geoip data to expect + QString m_geoipSelector; // String selecting data from the geoip lookup QList< Calamares::job_ptr > m_jobs; }; diff --git a/src/modules/locale/locale.conf b/src/modules/locale/locale.conf index 327b53784..643ccd7c1 100644 --- a/src/modules/locale/locale.conf +++ b/src/modules/locale/locale.conf @@ -37,7 +37,9 @@ zone: "New_York" # the URL may be modified before use. The request should return # valid data in a suitable format, depending on geoipStyle; # generally this includes a string value with the timezone -# in / format. +# in / format. For services that return data which +# does not follow the conventions of "suitable data" described +# below, *geoIPSelector* may be used to pick different data. # # Note that this example URL works, but the service is shutting # down in June 2018. @@ -68,3 +70,12 @@ zone: "New_York" # shutting down in June 2018. There are other providers with the same # format. XML format is provided for Ubiquity. #geoipStyle: "legacy" + +# GeoIP selector. Leave commented out for the default selector +# (which depends on the style: JSON uses "time_zone" and XML +# uses TimeZone, for the FreeGeoIP-alike and the Ubiquity-alike +# respectively). If the service configured via *geoipUrl* uses +# a different attribute name (e.g. "timezone") in JSON or a +# different element tag (e.g. "") in XML, set this +# string to the name or tag to be used. +#geoipSelector: "" From fa5d40006cc22b51dd231052367684eb107e3915 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 16 Apr 2018 05:27:01 -0400 Subject: [PATCH 093/385] [locale] Fix interpretation of configured selector - In GeoIP handler constructors that take a string (to configure the selector to use), interpret the empty string (which generally isn't a meaningful selector) as meaning "use the default". - Drop the no-argument constructors in favor of a default-argument which is empty. --- src/modules/locale/GeoIPJSON.cpp | 8 +------- src/modules/locale/GeoIPJSON.h | 8 ++++++-- src/modules/locale/GeoIPXML.cpp | 8 +------- src/modules/locale/GeoIPXML.h | 10 ++++++---- 4 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/modules/locale/GeoIPJSON.cpp b/src/modules/locale/GeoIPJSON.cpp index aa5a2b411..b5cf40214 100644 --- a/src/modules/locale/GeoIPJSON.cpp +++ b/src/modules/locale/GeoIPJSON.cpp @@ -27,16 +27,10 @@ #include GeoIPJSON::GeoIPJSON(const QString& attribute) - : GeoIP( attribute ) + : GeoIP( attribute.isEmpty() ? QLatin1String( "time_zone" ) : attribute ) { } -GeoIPJSON::GeoIPJSON() - : GeoIPJSON( QLatin1Literal( "time_zone" ) ) -{ -} - - GeoIP::RegionZonePair GeoIPJSON::processReply( const QByteArray& data ) { diff --git a/src/modules/locale/GeoIPJSON.h b/src/modules/locale/GeoIPJSON.h index dbe1eeffa..3c08f577b 100644 --- a/src/modules/locale/GeoIPJSON.h +++ b/src/modules/locale/GeoIPJSON.h @@ -31,8 +31,12 @@ class GeoIPJSON : public GeoIP { public: - explicit GeoIPJSON( const QString& attribute ); - explicit GeoIPJSON(); + /** @brief Configure the attribute name which is selected. + * + * If an empty string is passed in (not a valid attribute name), + * then "time_zone" is used. + */ + explicit GeoIPJSON( const QString& attribute = QString() ); virtual RegionZonePair processReply( const QByteArray& ); } ; diff --git a/src/modules/locale/GeoIPXML.cpp b/src/modules/locale/GeoIPXML.cpp index a2117b2f2..a9aa43f76 100644 --- a/src/modules/locale/GeoIPXML.cpp +++ b/src/modules/locale/GeoIPXML.cpp @@ -24,16 +24,10 @@ #include GeoIPXML::GeoIPXML( const QString& element ) - : GeoIP( element ) + : GeoIP( element.isEmpty() ? QLatin1String( "TimeZone" ) : element ) { } -GeoIPXML::GeoIPXML() - : GeoIPXML( QLatin1Literal( "TimeZone" ) ) -{ -} - - GeoIP::RegionZonePair GeoIPXML::processReply( const QByteArray& data ) { diff --git a/src/modules/locale/GeoIPXML.h b/src/modules/locale/GeoIPXML.h index bda359485..bc3f23bec 100644 --- a/src/modules/locale/GeoIPXML.h +++ b/src/modules/locale/GeoIPXML.h @@ -31,10 +31,12 @@ class GeoIPXML : public GeoIP { public: - /** @brief Configure the element name which is selected. */ - explicit GeoIPXML( const QString& element ); - /** @brief Use default TimeZone element. */ - explicit GeoIPXML(); + /** @brief Configure the element tag which is selected. + * + * If an empty string is passed in (not a valid element tag), + * then "TimeZone" is used. + */ + explicit GeoIPXML( const QString& element = QString() ); virtual RegionZonePair processReply( const QByteArray& ); } ; From d04e243c4e1ce57237516de51d605a089c96d3d9 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 16 Apr 2018 05:45:48 -0400 Subject: [PATCH 094/385] [locale] Auto-clean up time zone data - Some providers return weirdly escaped data; strip out useless escaping before splitting (there are no characters in correct time zone names that need escaping) - Add some tests for TZ splitting --- src/modules/locale/GeoIP.cpp | 5 ++++- src/modules/locale/GeoIPTests.cpp | 24 ++++++++++++++++++++++++ src/modules/locale/GeoIPTests.h | 1 + 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/modules/locale/GeoIP.cpp b/src/modules/locale/GeoIP.cpp index f11a44db7..3001273bb 100644 --- a/src/modules/locale/GeoIP.cpp +++ b/src/modules/locale/GeoIP.cpp @@ -30,8 +30,11 @@ GeoIP::~GeoIP() } GeoIP::RegionZonePair -GeoIP::splitTZString( const QString& timezoneString ) +GeoIP::splitTZString( const QString& tz ) { + QString timezoneString( tz ); + timezoneString.remove( '\\' ); + QStringList tzParts = timezoneString.split( '/', QString::SkipEmptyParts ); if ( tzParts.size() >= 2 ) { diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp index 554e6f0c0..5b5c27bff 100644 --- a/src/modules/locale/GeoIPTests.cpp +++ b/src/modules/locale/GeoIPTests.cpp @@ -165,3 +165,27 @@ GeoIPTests::testXMLbad() QCOMPARE( tz.first, QString() ); #endif } + +void GeoIPTests::testSplitTZ() +{ + auto tz = GeoIP::splitTZString( QLatin1String("Moon/Dark_side") ); + QCOMPARE( tz.first, QLatin1String("Moon") ); + QCOMPARE( tz.second, QLatin1String("Dark_side") ); + + // Some providers return weirdly escaped data + tz = GeoIP::splitTZString( QLatin1String("America\\/NewYork") ); + QCOMPARE( tz.first, QLatin1String("America") ); + QCOMPARE( tz.second, QLatin1String("NewYork") ); // That's not actually the zone name + + // Check that bogus data fails + tz = GeoIP::splitTZString( QString() ); + QCOMPARE( tz.first, QString() ); + + tz = GeoIP::splitTZString( QLatin1String("America.NewYork") ); + QCOMPARE( tz.first, QString() ); + + // Check that three-level is split properly + tz = GeoIP::splitTZString( QLatin1String("America/North Dakota/Beulah") ); + QCOMPARE( tz.first, QLatin1String("America") ); + QCOMPARE( tz.second, QLatin1String("North Dakota/Beulah") ); +} diff --git a/src/modules/locale/GeoIPTests.h b/src/modules/locale/GeoIPTests.h index 87918ace0..7aaefee81 100644 --- a/src/modules/locale/GeoIPTests.h +++ b/src/modules/locale/GeoIPTests.h @@ -37,6 +37,7 @@ private Q_SLOTS: void testXML2(); void testXMLalt(); void testXMLbad(); + void testSplitTZ(); }; #endif From 0f5e061c4ae50d4db643a598846fce820fb43f7d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 16 Apr 2018 09:13:06 -0400 Subject: [PATCH 095/385] [locale] Support multi-level selection from JSON data - Some providers don't provide a single flat JSON object (e.g. "{time_zone: foo}") but a nested structure (e.g. "{location: {time_zone: foo}}"), so allow dots in the selector to do multi-level selection. --- src/modules/locale/GeoIPJSON.cpp | 26 ++++++++++++++++++++------ src/modules/locale/locale.conf | 11 +++++++++++ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/modules/locale/GeoIPJSON.cpp b/src/modules/locale/GeoIPJSON.cpp index b5cf40214..ee99e6c11 100644 --- a/src/modules/locale/GeoIPJSON.cpp +++ b/src/modules/locale/GeoIPJSON.cpp @@ -19,6 +19,7 @@ #include "GeoIPJSON.h" +#include "utils/CalamaresUtils.h" #include "utils/Logger.h" #include "utils/YamlUtils.h" @@ -31,6 +32,24 @@ GeoIPJSON::GeoIPJSON(const QString& attribute) { } +static QString +selectMap( const QVariantMap& m, const QStringList& l, int index) +{ + if ( index >= l.count() ) + return QString(); + + QString attributeName = l[index]; + if ( index == l.count() - 1 ) + return CalamaresUtils::getString( m, attributeName ); + else + { + bool success = false; // bogus + if ( m.contains( attributeName ) ) + return selectMap( CalamaresUtils::getSubMap( m, attributeName, success ), l, index+1 ); + return QString(); + } +} + GeoIP::RegionZonePair GeoIPJSON::processReply( const QByteArray& data ) { @@ -43,12 +62,7 @@ GeoIPJSON::processReply( const QByteArray& data ) var.isValid() && var.type() == QVariant::Map ) { - QVariantMap map = var.toMap(); - if ( map.contains( m_element ) && - !map.value( m_element ).toString().isEmpty() ) - { - return splitTZString( map.value( m_element ).toString() ); - } + return splitTZString( selectMap( var.toMap(), m_element.split('.'), 0 ) ); } else cWarning() << "Invalid YAML data for GeoIPJSON"; diff --git a/src/modules/locale/locale.conf b/src/modules/locale/locale.conf index 643ccd7c1..262345c7e 100644 --- a/src/modules/locale/locale.conf +++ b/src/modules/locale/locale.conf @@ -78,4 +78,15 @@ zone: "New_York" # a different attribute name (e.g. "timezone") in JSON or a # different element tag (e.g. "") in XML, set this # string to the name or tag to be used. +# +# In JSON: +# - if the string contains "." characters, this is used as a +# multi-level selector, e.g. "a.b" will select the timezone +# from data "{a: {b: "Europe/Amsterdam" } }". +# - each part of the string split by "." characters is used as +# a key into the JSON data. +# In XML: +# - all elements with the named tag (e.g. all TimeZone) elements +# from the document are checked; the first one with non-empty +# text value is used. #geoipSelector: "" From 3ef0fbe892ce981f83b4137b7ffc4ea159196cb8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 16 Apr 2018 09:17:18 -0400 Subject: [PATCH 096/385] [locale] Add tests for a bunch of GeoIP providers - Since these tests use network resources, they are not enabled by default. Set the environment variable TEST_HTTP_GET to actually do them. - Do one request for each provider and check that they are all consistent. (This works for me, yielding Europe/Amsterdam for all). --- src/modules/locale/GeoIPTests.cpp | 63 ++++++++++++++++++++++++++++++- src/modules/locale/GeoIPTests.h | 2 + 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp index 5b5c27bff..32faf7138 100644 --- a/src/modules/locale/GeoIPTests.cpp +++ b/src/modules/locale/GeoIPTests.cpp @@ -141,7 +141,7 @@ GeoIPTests::testXML2() void GeoIPTests::testXMLalt() { -#ifdef HAvE_XML +#ifdef HAVE_XML GeoIPXML handler( "ZT" ); auto tz = handler.processReply( "Moon/Dark_side" ); @@ -189,3 +189,64 @@ void GeoIPTests::testSplitTZ() QCOMPARE( tz.first, QLatin1String("America") ); QCOMPARE( tz.second, QLatin1String("North Dakota/Beulah") ); } + + +static QByteArray +synchronous_get( const char* urlstring ) +{ + QUrl url( urlstring ); + QNetworkAccessManager manager; + QEventLoop loop; + + QObject::connect( &manager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit ); + + QNetworkRequest request( url ); + QNetworkReply* reply = manager.get( request ); + loop.exec(); + reply->deleteLater(); + return reply->readAll(); +} + +#define CHECK_GET(t, selector, url) \ + { \ + auto tz = GeoIP##t( selector ).processReply( synchronous_get( url ) ); \ + QCOMPARE( default_tz, tz ); \ + qDebug() << "Checked" << url; \ + } + +void GeoIPTests::testGet() +{ + if ( !QProcessEnvironment::systemEnvironment().contains( QLatin1String("TEST_HTTP_GET") ) ) + { + qDebug() << "Skipping HTTP GET tests"; + return; + } + + GeoIPJSON default_handler; + // Call the KDE service the definitive source, even though this + // service is temporary and might go away any time. + auto default_tz = default_handler.processReply( synchronous_get( "http://drax.kde.org:9129/calamares" ) ); + + // This is bogus, because the test isn't always run by me + // QCOMPARE( default_tz.first, QLatin1String("Europe") ); + // QCOMPARE( default_tz.second, QLatin1String("Amsterdam") ); + QVERIFY( !default_tz.first.isEmpty() ); + QVERIFY( !default_tz.second.isEmpty() ); + + // Each expansion of CHECK_GET does a synchronous GET, then checks that + // the TZ data is the same as the default_tz; this is fragile if the + // services don't agree on the location of where the test is run. + CHECK_GET( JSON, QString(), "http://drax.kde.org:9129/calamares" ) // Temporary KDE service + CHECK_GET( JSON, QString(), "http://freegeoip.net/json/" ) // Original FreeGeoIP service + CHECK_GET( JSON, QLatin1String("timezone"), "https://ipapi.co/json" ) // Different JSON + CHECK_GET( JSON, QLatin1String("timezone"), "http://ip-api.com/json" ) + + CHECK_GET( JSON, QLatin1String("location.time_zone"), "http://geoip.nekudo.com/api/" ) // 2-level JSON + + CHECK_GET( JSON, QLatin1String("Location.TimeZone"), "http://drax.kde.org:9129/" ) // 2-level JSON + +#ifdef HAVE_XML + CHECK_GET( XML, QString(), "http://geoip.ubuntu.com/lookup" ) // Ubiquity's XML format + CHECK_GET( XML, QString(), "http://drax.kde.org:9129/ubiquity" ) // Temporary KDE service +#endif +} diff --git a/src/modules/locale/GeoIPTests.h b/src/modules/locale/GeoIPTests.h index 7aaefee81..a320e3263 100644 --- a/src/modules/locale/GeoIPTests.h +++ b/src/modules/locale/GeoIPTests.h @@ -38,6 +38,8 @@ private Q_SLOTS: void testXMLalt(); void testXMLbad(); void testSplitTZ(); + + void testGet(); }; #endif From b4e4b691fdf2e9217de397f2d9edbc513985daa9 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 17 Apr 2018 07:32:27 -0400 Subject: [PATCH 097/385] [locale] Accomodate more dodgy GeoIP providers - Force spaces to _ - Document the bits FIXES #933 --- src/modules/locale/GeoIP.cpp | 1 + src/modules/locale/GeoIP.h | 10 +++++++++- src/modules/locale/locale.conf | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/modules/locale/GeoIP.cpp b/src/modules/locale/GeoIP.cpp index 3001273bb..4c031f286 100644 --- a/src/modules/locale/GeoIP.cpp +++ b/src/modules/locale/GeoIP.cpp @@ -34,6 +34,7 @@ GeoIP::splitTZString( const QString& tz ) { QString timezoneString( tz ); timezoneString.remove( '\\' ); + timezoneString.replace( ' ', '_' ); QStringList tzParts = timezoneString.split( '/', QString::SkipEmptyParts ); if ( tzParts.size() >= 2 ) diff --git a/src/modules/locale/GeoIP.h b/src/modules/locale/GeoIP.h index 6088c8a45..41abd2042 100644 --- a/src/modules/locale/GeoIP.h +++ b/src/modules/locale/GeoIP.h @@ -50,7 +50,15 @@ public: */ virtual RegionZonePair processReply( const QByteArray& ) = 0; - /** @brief Splits a region/zone string into a pair. */ + /** @brief Splits a region/zone string into a pair. + * + * Cleans up the string by removing backslashes (\\) + * since some providers return silly-escaped names. Replaces + * spaces with _ since some providers return human-readable names. + * Splits on the first / in the resulting string, or returns a + * pair of empty QStrings if it can't. (e.g. America/North Dakota/Beulah + * will return "America", "North_Dakota/Beulah"). + */ static RegionZonePair splitTZString( const QString& s ); protected: diff --git a/src/modules/locale/locale.conf b/src/modules/locale/locale.conf index 262345c7e..ddd0bc97e 100644 --- a/src/modules/locale/locale.conf +++ b/src/modules/locale/locale.conf @@ -53,6 +53,11 @@ zone: "New_York" # Europe/Brussels # ``` # +# To accomodate providers of GeoIP timezone data with peculiar timezone +# naming conventions, the following cleanups are performed automatically: +# - backslashes are removed +# - spaces are replaced with _ +# #geoipUrl: "freegeoip.net" # GeoIP style. Leave commented out for the "legacy" interpretation. From 5acf67a05778079b57586e13f5ffa3066742a46a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 17 Apr 2018 07:39:51 -0400 Subject: [PATCH 098/385] [locale] Fix tests with spaces in zone names - "North Dakota" -> "North_Dakota" following the change that fixes up dodgy names automatically. --- src/modules/locale/GeoIPTests.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp index 32faf7138..a98aa25ee 100644 --- a/src/modules/locale/GeoIPTests.cpp +++ b/src/modules/locale/GeoIPTests.cpp @@ -127,14 +127,14 @@ void GeoIPTests::testXML2() { static const char data[] = - "America/North Dakota/Beulah"; + "America/North Dakota/Beulah"; // With a space! #ifdef HAVE_XML GeoIPXML handler; auto tz = handler.processReply( data ); QCOMPARE( tz.first, QLatin1String( "America" ) ); - QCOMPARE( tz.second, QLatin1String( "North Dakota/Beulah" ) ); + QCOMPARE( tz.second, QLatin1String( "North_Dakota/Beulah" ) ); // Without space #endif } @@ -184,10 +184,10 @@ void GeoIPTests::testSplitTZ() tz = GeoIP::splitTZString( QLatin1String("America.NewYork") ); QCOMPARE( tz.first, QString() ); - // Check that three-level is split properly + // Check that three-level is split properly and space is replaced tz = GeoIP::splitTZString( QLatin1String("America/North Dakota/Beulah") ); QCOMPARE( tz.first, QLatin1String("America") ); - QCOMPARE( tz.second, QLatin1String("North Dakota/Beulah") ); + QCOMPARE( tz.second, QLatin1String("North_Dakota/Beulah") ); } From 522adf766a2ce8b40ba88bc328c837d8e5df8005 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 17 Apr 2018 07:38:19 -0400 Subject: [PATCH 099/385] [locale] Switch HTTP GET test to KDE servers - Use the official name of the KDE GeoIP service - Log the URL *before* the check, in case one fails --- src/modules/locale/GeoIPTests.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp index a98aa25ee..8739b47ac 100644 --- a/src/modules/locale/GeoIPTests.cpp +++ b/src/modules/locale/GeoIPTests.cpp @@ -198,6 +198,8 @@ synchronous_get( const char* urlstring ) QNetworkAccessManager manager; QEventLoop loop; + qDebug() << "Fetching" << url; + QObject::connect( &manager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit ); QNetworkRequest request( url ); @@ -211,7 +213,6 @@ synchronous_get( const char* urlstring ) { \ auto tz = GeoIP##t( selector ).processReply( synchronous_get( url ) ); \ QCOMPARE( default_tz, tz ); \ - qDebug() << "Checked" << url; \ } void GeoIPTests::testGet() @@ -223,9 +224,8 @@ void GeoIPTests::testGet() } GeoIPJSON default_handler; - // Call the KDE service the definitive source, even though this - // service is temporary and might go away any time. - auto default_tz = default_handler.processReply( synchronous_get( "http://drax.kde.org:9129/calamares" ) ); + // Call the KDE service the definitive source. + auto default_tz = default_handler.processReply( synchronous_get( "https://geoip.kde.org/v1/calamares" ) ); // This is bogus, because the test isn't always run by me // QCOMPARE( default_tz.first, QLatin1String("Europe") ); @@ -236,17 +236,17 @@ void GeoIPTests::testGet() // Each expansion of CHECK_GET does a synchronous GET, then checks that // the TZ data is the same as the default_tz; this is fragile if the // services don't agree on the location of where the test is run. - CHECK_GET( JSON, QString(), "http://drax.kde.org:9129/calamares" ) // Temporary KDE service + CHECK_GET( JSON, QString(), "https://geoip.kde.org/v1/calamares" ) // Check it's consistent CHECK_GET( JSON, QString(), "http://freegeoip.net/json/" ) // Original FreeGeoIP service CHECK_GET( JSON, QLatin1String("timezone"), "https://ipapi.co/json" ) // Different JSON CHECK_GET( JSON, QLatin1String("timezone"), "http://ip-api.com/json" ) CHECK_GET( JSON, QLatin1String("location.time_zone"), "http://geoip.nekudo.com/api/" ) // 2-level JSON - CHECK_GET( JSON, QLatin1String("Location.TimeZone"), "http://drax.kde.org:9129/" ) // 2-level JSON + CHECK_GET( JSON, QLatin1String("Location.TimeZone"), "https://geoip.kde.org/debug" ) // 2-level JSON #ifdef HAVE_XML CHECK_GET( XML, QString(), "http://geoip.ubuntu.com/lookup" ) // Ubiquity's XML format - CHECK_GET( XML, QString(), "http://drax.kde.org:9129/ubiquity" ) // Temporary KDE service + CHECK_GET( XML, QString(), "https://geoip.kde.org/v1/ubiquity" ) // Temporary KDE service #endif } From 4b7465696d05ed61a968f54db04f258d54a119f1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 18 Apr 2018 10:42:58 -0400 Subject: [PATCH 100/385] [welcome] Refactor the code that picks a locale to use - Much like std::find_if, but slightly muddled because there's no iterator that we can sensibly use. - Scan the ComboBox for a locale that matches a predicate. - Log more as the search for a good locale progresses. - Don't mix matching the locale with filling the ComboBox (even though that's slightly more efficient). --- src/modules/welcome/WelcomePage.cpp | 134 ++++++++++++++++------------ 1 file changed, 75 insertions(+), 59 deletions(-) diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index 5781b3a58..8bee436e6 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -106,90 +106,106 @@ WelcomePage::WelcomePage( RequirementsChecker* requirementsChecker, QWidget* par } +/** @brief Match the combobox of languages with a predicate + * + * Scans the entries in the @p list (actually a ComboBox) and if one + * matches the given @p predicate, returns true and sets @p matchFound + * to the locale that matched. + * + * If none match, returns false and leaves @p matchFound unchanged. + */ +static +bool matchLocale( QComboBox& list, QLocale& matchFound, std::function predicate) +{ + for (int i = 0; i < list.count(); i++) + { + QLocale thisLocale = list.itemData( i, Qt::UserRole ).toLocale(); + if ( predicate(thisLocale) ) + { + list.setCurrentIndex( i ); + cDebug() << " .. Matched locale " << thisLocale.name(); + matchFound = thisLocale; + return true; + } + } + + return false; +} + void WelcomePage::initLanguages() { ui->languageWidget->setInsertPolicy( QComboBox::InsertAlphabetically ); QLocale defaultLocale = QLocale( QLocale::system().name() ); - { - bool isTranslationAvailable = false; + // Fill the list of translations + { const auto locales = QString( CALAMARES_TRANSLATION_LANGUAGES ).split( ';'); for ( const QString& locale : locales ) { QLocale thisLocale = QLocale( locale ); QString lang = QLocale::languageToString( thisLocale.language() ); + if ( QLocale::countriesForLanguage( thisLocale.language() ).count() > 2 ) lang.append( QString( " (%1)" ) .arg( QLocale::countryToString( thisLocale.country() ) ) ); ui->languageWidget->addItem( lang, thisLocale ); - if ( thisLocale.language() == defaultLocale.language() && - thisLocale.country() == defaultLocale.country() ) - { - isTranslationAvailable = true; - ui->languageWidget->setCurrentIndex( ui->languageWidget->count() - 1 ); - cDebug() << "Initial locale " << thisLocale.name(); - CalamaresUtils::installTranslator( thisLocale.name(), - Calamares::Branding::instance()->translationsPathPrefix(), - qApp ); - } } + } - if ( !isTranslationAvailable ) - { - for (int i = 0; i < ui->languageWidget->count(); i++) - { - QLocale thisLocale = ui->languageWidget->itemData( i, Qt::UserRole ).toLocale(); - if ( thisLocale.language() == defaultLocale.language() ) - { - isTranslationAvailable = true; - ui->languageWidget->setCurrentIndex( i ); - cDebug() << "Initial locale " << thisLocale.name(); - CalamaresUtils::installTranslator( thisLocale.name(), - Calamares::Branding::instance()->translationsPathPrefix(), - qApp ); - break; - } - } - } + // Find the best initial translation + QLocale selectedLocale; - if ( !isTranslationAvailable ) - { - for (int i = 0; i < ui->languageWidget->count(); i++) - { - QLocale thisLocale = ui->languageWidget->itemData( i, Qt::UserRole ).toLocale(); - if ( thisLocale == QLocale( QLocale::English, QLocale::UnitedStates ) ) - { - isTranslationAvailable = true; - ui->languageWidget->setCurrentIndex( i ); - cDebug() << "Translation unavailable, so initial locale set to " << thisLocale.name(); - QLocale::setDefault( thisLocale ); - CalamaresUtils::installTranslator( thisLocale.name(), - Calamares::Branding::instance()->translationsPathPrefix(), - qApp ); - break; - } - } - } + cDebug() << "Matching exact locale" << defaultLocale; + bool isTranslationAvailable = + matchLocale( *(ui->languageWidget), selectedLocale, + [&](const QLocale& x){ return x.language() == defaultLocale.language() && x.country() == defaultLocale.country(); } ); - if ( !isTranslationAvailable ) - cWarning() << "No available translation matched" << defaultLocale; + if ( !isTranslationAvailable ) + { + cDebug() << "Matching approximate locale" << defaultLocale.language(); - connect( ui->languageWidget, - static_cast< void ( QComboBox::* )( int ) >( &QComboBox::currentIndexChanged ), - this, [ & ]( int newIndex ) - { - QLocale selectedLocale = ui->languageWidget->itemData( newIndex, Qt::UserRole ).toLocale(); - cDebug() << "Selected locale" << selectedLocale.name(); + isTranslationAvailable = + matchLocale( *(ui->languageWidget), selectedLocale, + [&](const QLocale& x){ return x.language() == defaultLocale.language(); } ) ; + } + if ( !isTranslationAvailable ) + { + QLocale en_us( QLocale::English, QLocale::UnitedStates ); + + cDebug() << "Matching English (US)"; + isTranslationAvailable = + matchLocale( *(ui->languageWidget), selectedLocale, + [&](const QLocale& x){ return x == en_us; } ); + + // Now, if it matched, because we didn't match the system locale, switch to the one found + if ( isTranslationAvailable ) QLocale::setDefault( selectedLocale ); - CalamaresUtils::installTranslator( selectedLocale, - Calamares::Branding::instance()->translationsPathPrefix(), - qApp ); - } ); } + + if ( isTranslationAvailable ) + CalamaresUtils::installTranslator( selectedLocale.name(), + Calamares::Branding::instance()->translationsPathPrefix(), + qApp ); + else + cWarning() << "No available translation matched" << defaultLocale; + + connect( ui->languageWidget, + static_cast< void ( QComboBox::* )( int ) >( &QComboBox::currentIndexChanged ), + this, + [&]( int newIndex ) + { + QLocale selectedLocale = ui->languageWidget->itemData( newIndex, Qt::UserRole ).toLocale(); + cDebug() << "Selected locale" << selectedLocale.name(); + + QLocale::setDefault( selectedLocale ); + CalamaresUtils::installTranslator( selectedLocale, + Calamares::Branding::instance()->translationsPathPrefix(), + qApp ); + } ); } From 6930400b67faaf7e19a9a373c1018e4594f64263 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 18 Apr 2018 11:34:09 -0400 Subject: [PATCH 101/385] DEBUG logging --- src/modules/welcome/WelcomePage.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index 8bee436e6..e35ec1d55 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -147,6 +147,10 @@ WelcomePage::initLanguages() QLocale thisLocale = QLocale( locale ); QString lang = QLocale::languageToString( thisLocale.language() ); + cDebug() << "LOCALE" << locale << "lang" << lang << "country" << QLocale::countryToString( thisLocale.country() ); + cDebug() << " .. countries=" << thisLocale.language() << QLocale::countriesForLanguage( thisLocale.language() ); + cDebug() << " .. " << thisLocale.nativeLanguageName() << thisLocale.nativeCountryName(); + if ( QLocale::countriesForLanguage( thisLocale.language() ).count() > 2 ) lang.append( QString( " (%1)" ) .arg( QLocale::countryToString( thisLocale.country() ) ) ); From 1b21668bffba75e1fd1c0d5d5c50ee8e2ca592ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Wed, 18 Apr 2018 23:59:15 +0300 Subject: [PATCH 102/385] [partition] Switch to scoped Device enums. --- src/modules/partition/gui/CreatePartitionDialog.cpp | 6 +++--- src/modules/partition/gui/PartitionPage.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index 2dcc16bf0..8804eb177 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -68,11 +68,11 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par m_ui->encryptWidget->setText( tr( "En&crypt" ) ); m_ui->encryptWidget->hide(); - if (m_device->type() == Device::Disk_Device) { + if (m_device->type() == Device::Type::Disk_Device) { m_ui->lvNameLabel->hide(); m_ui->lvNameLineEdit->hide(); } - if (m_device->type() == Device::LVM_Device) { + if (m_device->type() == Device::Type::LVM_Device) { /* LVM logical volume name can consist of: letters numbers _ . - + * It cannot start with underscore _ and must not be equal to . or .. or any entry in /dev/ * QLineEdit accepts QValidator::Intermediate, so we just disable . at the beginning */ @@ -242,7 +242,7 @@ CreatePartitionDialog::createPartition() ); } - if (m_device->type() == Device::LVM_Device) { + if (m_device->type() == Device::Type::LVM_Device) { partition->setPartitionPath(m_device->deviceNode() + QStringLiteral("/") + m_ui->lvNameLineEdit->text().trimmed()); } diff --git a/src/modules/partition/gui/PartitionPage.cpp b/src/modules/partition/gui/PartitionPage.cpp index 33b9e6209..c521604fb 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -145,7 +145,7 @@ PartitionPage::updateButtons() if ( m_ui->deviceComboBox->currentIndex() >= 0 ) { QModelIndex deviceIndex = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 ); - if ( m_core->deviceModel()->deviceForIndex( deviceIndex )->type() != Device::LVM_Device ) + if ( m_core->deviceModel()->deviceForIndex( deviceIndex )->type() != Device::Type::LVM_Device ) createTable = true; } From b8b607c4212a43a3cfa05133d6aac6ac8b7d6a6f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 18 Apr 2018 18:28:37 -0400 Subject: [PATCH 103/385] [locale] Fix QString-vs-char* confusion --- src/modules/locale/GeoIPTests.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp index 8739b47ac..42779ede0 100644 --- a/src/modules/locale/GeoIPTests.cpp +++ b/src/modules/locale/GeoIPTests.cpp @@ -57,7 +57,7 @@ GeoIPTests::testJSON() QCOMPARE( tz.second, QLatin1String( "Brussels" ) ); tz = handler.processReply( "time_zone: America/New_York\n" ); - QCOMPARE( tz.first, "America" ); + QCOMPARE( tz.first, QLatin1String( "America" ) ); } void GeoIPTests::testJSONalt() From 8ee4cc1966eb9335d8dee18457cf673908e6841b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 19 Apr 2018 06:59:17 -0400 Subject: [PATCH 104/385] Desktop: increase redundancy of repetitions FIXES #936 --- calamares.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/calamares.desktop b/calamares.desktop index d0a46d5e2..e33ebcec3 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -1,7 +1,7 @@ [Desktop Entry] Type=Application Version=1.0 -Name=Calamares +Name=Install System GenericName=System Installer Keywords=calamares;system;installer TryExec=calamares From 59537d86d65ffc190cd2f74587b2893161065c19 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 18 Apr 2018 18:18:00 -0400 Subject: [PATCH 105/385] [welcome] Present languages in native format - Introduce intermediate data class for building up the list of languages to present. - Sort on the English names, with en_US at the top (ugh). - Show the native names. --- src/modules/welcome/WelcomePage.cpp | 86 ++++++++++++++++++++++------- 1 file changed, 66 insertions(+), 20 deletions(-) diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index e35ec1d55..eff0aeb47 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -132,39 +132,85 @@ bool matchLocale( QComboBox& list, QLocale& matchFound, std::functionlanguageWidget->setInsertPolicy( QComboBox::InsertAlphabetically ); + LocaleLabel( const QString& locale ) + : m_locale( locale ) + { + QLocale thisLocale( locale ); + QString sortKey = QLocale::languageToString( thisLocale.language() ); + QString label = thisLocale.nativeLanguageName(); - QLocale defaultLocale = QLocale( QLocale::system().name() ); + if ( QLocale::countriesForLanguage( thisLocale.language() ).count() > 2 ) + { + sortKey.append( QString( " (%1)" ) + .arg( QLocale::countryToString( thisLocale.country() ) ) ); + label.append( QString( " (%1)" ).arg( thisLocale.nativeCountryName() ) ); + } + + m_sortKey = sortKey; + m_label = label; + } + + QString m_locale; // the locale identifier, e.g. "en_GB" + QString m_sortKey; // the English name of the locale + QString m_label; // the native name of the locale + + /** @brief Define a sorting order. + * + * English (@see isEnglish() -- it means en_US) is sorted at the top. + */ + bool operator <(const LocaleLabel& other) const + { + if ( isEnglish() ) + return !other.isEnglish(); + if ( other.isEnglish() ) + return false; + return m_sortKey < other.m_sortKey; + } + /** @brief Is this locale English? + * + * en_US and en (American English) is defined as English. The Queen's + * English -- proper English -- is relegated to non-English status. + */ + constexpr bool isEnglish() const + { + return m_locale == QLatin1Literal( "en_US" ) || m_locale == QLatin1Literal( "en" ); + } +} ; + +void +WelcomePage::initLanguages() +{ // Fill the list of translations + ui->languageWidget->clear(); + ui->languageWidget->setInsertPolicy( QComboBox::InsertAtBottom ); + { + std::list< LocaleLabel > localeList; const auto locales = QString( CALAMARES_TRANSLATION_LANGUAGES ).split( ';'); for ( const QString& locale : locales ) { - QLocale thisLocale = QLocale( locale ); - QString lang = QLocale::languageToString( thisLocale.language() ); - - cDebug() << "LOCALE" << locale << "lang" << lang << "country" << QLocale::countryToString( thisLocale.country() ); - cDebug() << " .. countries=" << thisLocale.language() << QLocale::countriesForLanguage( thisLocale.language() ); - cDebug() << " .. " << thisLocale.nativeLanguageName() << thisLocale.nativeCountryName(); + localeList.emplace_back( locale ); + } - if ( QLocale::countriesForLanguage( thisLocale.language() ).count() > 2 ) - lang.append( QString( " (%1)" ) - .arg( QLocale::countryToString( thisLocale.country() ) ) ); + localeList.sort(); // According to the sortkey, which is english - ui->languageWidget->addItem( lang, thisLocale ); + for ( const auto& locale : localeList ) + { + cDebug() << locale.m_locale << locale.m_sortKey; + ui->languageWidget->addItem( locale.m_label, QLocale( locale.m_locale ) ); } } // Find the best initial translation - QLocale selectedLocale; + QLocale defaultLocale = QLocale( QLocale::system().name() ); + QLocale matchedLocale; cDebug() << "Matching exact locale" << defaultLocale; bool isTranslationAvailable = - matchLocale( *(ui->languageWidget), selectedLocale, + matchLocale( *(ui->languageWidget), matchedLocale, [&](const QLocale& x){ return x.language() == defaultLocale.language() && x.country() == defaultLocale.country(); } ); if ( !isTranslationAvailable ) @@ -172,7 +218,7 @@ WelcomePage::initLanguages() cDebug() << "Matching approximate locale" << defaultLocale.language(); isTranslationAvailable = - matchLocale( *(ui->languageWidget), selectedLocale, + matchLocale( *(ui->languageWidget), matchedLocale, [&](const QLocale& x){ return x.language() == defaultLocale.language(); } ) ; } @@ -182,16 +228,16 @@ WelcomePage::initLanguages() cDebug() << "Matching English (US)"; isTranslationAvailable = - matchLocale( *(ui->languageWidget), selectedLocale, + matchLocale( *(ui->languageWidget), matchedLocale, [&](const QLocale& x){ return x == en_us; } ); // Now, if it matched, because we didn't match the system locale, switch to the one found if ( isTranslationAvailable ) - QLocale::setDefault( selectedLocale ); + QLocale::setDefault( matchedLocale ); } if ( isTranslationAvailable ) - CalamaresUtils::installTranslator( selectedLocale.name(), + CalamaresUtils::installTranslator( matchedLocale.name(), Calamares::Branding::instance()->translationsPathPrefix(), qApp ); else From 7c944760fc73772c1d117670269c1066149ad230 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 19 Apr 2018 07:19:10 -0400 Subject: [PATCH 106/385] [welcome] Only show (country) in list if the locale suggests it - A locale suggests it is country-specific by having the form _ - This mostly fixes locale "ar" being presented as "Arabiy (Misr)" when there is no need to (and the RTL is messed up then, too). --- src/modules/welcome/WelcomePage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index eff0aeb47..46041e063 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -141,7 +141,7 @@ struct LocaleLabel QString sortKey = QLocale::languageToString( thisLocale.language() ); QString label = thisLocale.nativeLanguageName(); - if ( QLocale::countriesForLanguage( thisLocale.language() ).count() > 2 ) + if ( locale.contains( '_' ) && QLocale::countriesForLanguage( thisLocale.language() ).count() > 2 ) { sortKey.append( QString( " (%1)" ) .arg( QLocale::countryToString( thisLocale.country() ) ) ); From 7cc2b222d93df33b65144c99b3c373b3f3bb111b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 19 Apr 2018 07:30:54 -0400 Subject: [PATCH 107/385] [welcome] Present RTL (country) annotations better - The (RTL) text "Arabiy (Misr)" should be entirely RTL, so make the parenthetical insert -- which would otherwise be LTR and so mess up the placing of those parenthesis around the country -- explicitly RTL. - Since there are no RTL languages in Calamares right now with country-local translations, this isn't visible. --- src/modules/welcome/WelcomePage.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index 46041e063..48f5e5f1c 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -145,7 +145,11 @@ struct LocaleLabel { sortKey.append( QString( " (%1)" ) .arg( QLocale::countryToString( thisLocale.country() ) ) ); - label.append( QString( " (%1)" ).arg( thisLocale.nativeCountryName() ) ); + + // If the language name is RTL, make this parenthetical addition RTL as well. + QString countryFormat = label.isRightToLeft() ? QString( QChar( 0x202B ) ) : QString(); + countryFormat.append( QLatin1String( " (%1)" ) ); + label.append( countryFormat.arg( thisLocale.nativeCountryName() ) ); } m_sortKey = sortKey; From a9ffd3351da3bc94e52784b34fd1daa3a3e8078d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 19 Apr 2018 08:40:04 -0400 Subject: [PATCH 108/385] [welcome] Support sr@latin - The QLocale constructor which takes a string (locale name) doesn't understand sr@latin, and returns the Cyrillic locale. Fix that by creating locales ourselves for @latin locales. - sr and sr@latin now display correctly in the right script in the native language dropdown. --- src/modules/welcome/WelcomePage.cpp | 36 +++++++++++++++++++---------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index 48f5e5f1c..95569318d 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -135,28 +135,29 @@ bool matchLocale( QComboBox& list, QLocale& matchFound, std::function 2 ) + if ( locale.contains( '_' ) && QLocale::countriesForLanguage( m_locale.language() ).count() > 2 ) { sortKey.append( QString( " (%1)" ) - .arg( QLocale::countryToString( thisLocale.country() ) ) ); + .arg( QLocale::countryToString( m_locale.country() ) ) ); // If the language name is RTL, make this parenthetical addition RTL as well. QString countryFormat = label.isRightToLeft() ? QString( QChar( 0x202B ) ) : QString(); countryFormat.append( QLatin1String( " (%1)" ) ); - label.append( countryFormat.arg( thisLocale.nativeCountryName() ) ); + label.append( countryFormat.arg( m_locale.nativeCountryName() ) ); } m_sortKey = sortKey; m_label = label; } - QString m_locale; // the locale identifier, e.g. "en_GB" + QLocale m_locale; + QString m_localeId; // the locale identifier, e.g. "en_GB" QString m_sortKey; // the English name of the locale QString m_label; // the native name of the locale @@ -180,7 +181,18 @@ struct LocaleLabel */ constexpr bool isEnglish() const { - return m_locale == QLatin1Literal( "en_US" ) || m_locale == QLatin1Literal( "en" ); + return m_localeId == QLatin1Literal( "en_US" ) || m_localeId == QLatin1Literal( "en" ); + } + + static QLocale getLocale( const QString& localeName ) + { + if ( localeName.contains( "@latin" ) ) + { + QLocale loc( localeName ); + return QLocale( loc.language(), QLocale::Script::LatinScript, loc.country() ); + } + else + return QLocale( localeName ); } } ; @@ -203,8 +215,8 @@ WelcomePage::initLanguages() for ( const auto& locale : localeList ) { - cDebug() << locale.m_locale << locale.m_sortKey; - ui->languageWidget->addItem( locale.m_label, QLocale( locale.m_locale ) ); + cDebug() << locale.m_localeId << locale.m_sortKey; + ui->languageWidget->addItem( locale.m_label, locale.m_locale ); } } @@ -253,7 +265,7 @@ WelcomePage::initLanguages() [&]( int newIndex ) { QLocale selectedLocale = ui->languageWidget->itemData( newIndex, Qt::UserRole ).toLocale(); - cDebug() << "Selected locale" << selectedLocale.name(); + cDebug() << "Selected locale" << selectedLocale; QLocale::setDefault( selectedLocale ); CalamaresUtils::installTranslator( selectedLocale, From b9ed96d4f82e76cfa4595dbad05ebd4fa6c02934 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 19 Apr 2018 09:04:29 -0400 Subject: [PATCH 109/385] [libcalamares] Special case sr@latin QLocale::name() doesn't include script information, and if it did it would probably use sr_RS@Latin; when searching for translation files it won't consider dropping just the country. --- src/libcalamares/utils/CalamaresUtils.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/libcalamares/utils/CalamaresUtils.cpp b/src/libcalamares/utils/CalamaresUtils.cpp index fe07c62a0..14228ece0 100644 --- a/src/libcalamares/utils/CalamaresUtils.cpp +++ b/src/libcalamares/utils/CalamaresUtils.cpp @@ -147,6 +147,12 @@ installTranslator( const QLocale& locale, if ( localeName == "C" ) localeName = "en"; + // Special case of sr@latin + if ( locale.language() == QLocale::Language::Serbian && locale.script() == QLocale::Script::LatinScript ) + localeName = QStringLiteral( "sr@latin" ); + + cDebug() << "Looking for translations for" << localeName; + QTranslator* translator = nullptr; // Branding translations @@ -167,11 +173,11 @@ installTranslator( const QLocale& locale, "_", brandingTranslationsDir.absolutePath() ) ) { - cDebug() << "Translation: Branding using locale:" << localeName; + cDebug() << " .. Branding using locale:" << localeName; } else { - cDebug() << "Translation: Branding using default, system locale not found:" << localeName; + cDebug() << " .. Branding using default, system locale not found:" << localeName; translator->load( brandingTranslationsPrefix + "en" ); } @@ -190,11 +196,11 @@ installTranslator( const QLocale& locale, translator = new QTranslator( parent ); if ( translator->load( QString( ":/lang/calamares_" ) + localeName ) ) { - cDebug() << "Translation: Calamares using locale:" << localeName; + cDebug() << " .. Calamares using locale:" << localeName; } else { - cDebug() << "Translation: Calamares using default, system locale not found:" << localeName; + cDebug() << " .. Calamares using default, system locale not found:" << localeName; translator->load( QString( ":/lang/calamares_en" ) ); } From a47b3f8d14ebeb31132a98c3007368fbab07a325 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 19 Apr 2018 09:10:13 -0400 Subject: [PATCH 110/385] [libcalamares] Document special-case translations --- CMakeLists.txt | 6 ++++++ src/libcalamares/utils/CalamaresUtils.cpp | 2 ++ 2 files changed, 8 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index d74148978..e8075c857 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -195,6 +195,12 @@ endif() # Language en (source language) is added later. It isn't listed in # Transifex either. Get the list of languages and their status # from https://transifex.com/calamares/calamares/ . +# +# When adding a new language, take care that it is properly loaded +# by the translation framework. Languages with alternate scripts +# (sr@latin in particular) may need special handling in CalamaresUtils.cpp. +# +# TODO: pl and pl_PL overlap set( _tx_complete ca zh_CN zh_TW hr cs_CZ da fr lt pt_BR pt_PT es tr_TR) set( _tx_good sq ja pl sk ro it_IT hu he ru id de nl ) set( _tx_ok bg uk ast is ar sv el es_MX gl en_GB es_ES th fi_FI hi pl_PL diff --git a/src/libcalamares/utils/CalamaresUtils.cpp b/src/libcalamares/utils/CalamaresUtils.cpp index 14228ece0..dde3f9a13 100644 --- a/src/libcalamares/utils/CalamaresUtils.cpp +++ b/src/libcalamares/utils/CalamaresUtils.cpp @@ -148,6 +148,8 @@ installTranslator( const QLocale& locale, localeName = "en"; // Special case of sr@latin + // + // See top-level CMakeLists.txt about special cases for translation loading. if ( locale.language() == QLocale::Language::Serbian && locale.script() == QLocale::Script::LatinScript ) localeName = QStringLiteral( "sr@latin" ); From e5b599fbe3a8a8d0ea35f41aee0b5fae08e7aec1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 19 Apr 2018 09:24:59 -0400 Subject: [PATCH 111/385] [welcome] Drop accidental logging --- src/modules/welcome/WelcomePage.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index 95569318d..5d47e2150 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -215,7 +215,6 @@ WelcomePage::initLanguages() for ( const auto& locale : localeList ) { - cDebug() << locale.m_localeId << locale.m_sortKey; ui->languageWidget->addItem( locale.m_label, locale.m_locale ); } } From 42f5ed5d4138b1e3682df4a7b5ce1da587d0f511 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 23 Apr 2018 10:47:25 -0400 Subject: [PATCH 112/385] [welcome] Fix build, reduce redundancy - constexpr isn't applicable because of non-trivial destructor - May as well only create " (%1)" once. FIXES #938 --- CMakeLists.txt | 2 ++ src/modules/welcome/WelcomePage.cpp | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e8075c857..3071f626a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,6 +52,8 @@ if(NOT CMAKE_VERSION VERSION_LESS "3.10.0") ) endif() + set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" ) + if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) message( STATUS "Found Clang ${CMAKE_CXX_COMPILER_VERSION}, setting up Clang-specific compiler flags." ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" ) diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index 5d47e2150..16e44d72e 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -143,12 +143,13 @@ struct LocaleLabel if ( locale.contains( '_' ) && QLocale::countriesForLanguage( m_locale.language() ).count() > 2 ) { - sortKey.append( QString( " (%1)" ) - .arg( QLocale::countryToString( m_locale.country() ) ) ); + QLatin1Literal countrySuffix( " (%1)" ); + + sortKey.append( QString( countrySuffix ).arg( QLocale::countryToString( m_locale.country() ) ) ); // If the language name is RTL, make this parenthetical addition RTL as well. QString countryFormat = label.isRightToLeft() ? QString( QChar( 0x202B ) ) : QString(); - countryFormat.append( QLatin1String( " (%1)" ) ); + countryFormat.append( countrySuffix ); label.append( countryFormat.arg( m_locale.nativeCountryName() ) ); } @@ -179,7 +180,7 @@ struct LocaleLabel * en_US and en (American English) is defined as English. The Queen's * English -- proper English -- is relegated to non-English status. */ - constexpr bool isEnglish() const + bool isEnglish() const { return m_localeId == QLatin1Literal( "en_US" ) || m_localeId == QLatin1Literal( "en" ); } From e36d6d5d97a81d944568ecdc04f9d28498e5e583 Mon Sep 17 00:00:00 2001 From: Matthias Klumpp Date: Thu, 26 Apr 2018 06:46:30 +0200 Subject: [PATCH 113/385] Never show Calamares in software centers Users will never want to install the distribution installer from a software center like KDE Discover or GNOME Software, so exclude it from the AppStream metadata collection. --- calamares.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/calamares.desktop b/calamares.desktop index e33ebcec3..6fefa32fd 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -11,7 +11,7 @@ Icon=calamares Terminal=false StartupNotify=true Categories=Qt;System; - +X-AppStream-Ignore=true From a4bc98742a4c7f331ace215cc5069d066c037896 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 26 Apr 2018 10:07:26 -0400 Subject: [PATCH 114/385] ci: switch to less volatile KDE Neon version --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d6ca0926d..a744fd70a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,2 +1,2 @@ -FROM kdeneon/all +FROM kdeneon/all:dev-stable RUN sudo apt-get update && sudo apt-get -y install build-essential cmake extra-cmake-modules gettext libatasmart-dev libboost-python-dev libkf5config-dev libkf5coreaddons-dev libkf5i18n-dev libkf5parts-dev libkf5service-dev libkf5widgetsaddons-dev libkpmcore-dev libparted-dev libpolkit-qt5-1-dev libqt5svg5-dev libqt5webkit5-dev libyaml-cpp-dev os-prober pkg-config python3-dev qtbase5-dev qtdeclarative5-dev qttools5-dev qttools5-dev-tools From 8726b70574dc9f3fb5003d39155d58e83338f7f0 Mon Sep 17 00:00:00 2001 From: Caio Carvalho Date: Mon, 30 Apr 2018 00:40:54 -0300 Subject: [PATCH 115/385] [partition] Ignoring LVM devices in PartUtils::getDevices to prevent installing bootloader in LVM VG. --- src/modules/partition/core/DeviceList.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/modules/partition/core/DeviceList.cpp b/src/modules/partition/core/DeviceList.cpp index d7e6bab29..1a070773e 100644 --- a/src/modules/partition/core/DeviceList.cpp +++ b/src/modules/partition/core/DeviceList.cpp @@ -152,6 +152,11 @@ QList< Device* > getDevices( DeviceType which, qint64 minimumSize ) cDebug() << " .. Removing too-small" << it; it = erase(devices, it ); } + else if ( (*it)->type() == Device::LVM_Device ) + { + cDebug() << " .. Removing LVM device from list " << it; + it = erase(devices, it ); + } else ++it; From f561f0459174f98af80e43da6b2b96b8c202f86c Mon Sep 17 00:00:00 2001 From: Caio Carvalho Date: Thu, 3 May 2018 14:50:13 -0300 Subject: [PATCH 116/385] [partition] Changing PartUtils::getDevices to ignore devices that aren't of Disk_Device type. --- src/modules/partition/core/DeviceList.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/modules/partition/core/DeviceList.cpp b/src/modules/partition/core/DeviceList.cpp index 1a070773e..3695193b4 100644 --- a/src/modules/partition/core/DeviceList.cpp +++ b/src/modules/partition/core/DeviceList.cpp @@ -129,7 +129,12 @@ QList< Device* > getDevices( DeviceType which, qint64 minimumSize ) // Remove the device which contains / from the list for ( DeviceList::iterator it = devices.begin(); it != devices.end(); ) - if ( ! ( *it ) || + if ( (*it)->type() != Device::Type::Disk_Device ) + { + cDebug() << " .. Removing device that is not a Disk_Device from list " << it; + it = erase(devices, it ); + } + else if ( ! ( *it ) || ( *it )->deviceNode().startsWith( "/dev/zram" ) ) { @@ -152,11 +157,6 @@ QList< Device* > getDevices( DeviceType which, qint64 minimumSize ) cDebug() << " .. Removing too-small" << it; it = erase(devices, it ); } - else if ( (*it)->type() == Device::LVM_Device ) - { - cDebug() << " .. Removing LVM device from list " << it; - it = erase(devices, it ); - } else ++it; From 48b7c312f839587dc1fadb7e2e97775e8e886f73 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 7 May 2018 04:56:43 -0400 Subject: [PATCH 117/385] ci: switch to less volatile KDE Neon version --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index a744fd70a..2c8be23a0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,2 +1,2 @@ -FROM kdeneon/all:dev-stable -RUN sudo apt-get update && sudo apt-get -y install build-essential cmake extra-cmake-modules gettext libatasmart-dev libboost-python-dev libkf5config-dev libkf5coreaddons-dev libkf5i18n-dev libkf5parts-dev libkf5service-dev libkf5widgetsaddons-dev libkpmcore-dev libparted-dev libpolkit-qt5-1-dev libqt5svg5-dev libqt5webkit5-dev libyaml-cpp-dev os-prober pkg-config python3-dev qtbase5-dev qtdeclarative5-dev qttools5-dev qttools5-dev-tools +FROM kdeneon/all:user +RUN sudo apt-get update && sudo apt-get -y install build-essential cmake extra-cmake-modules gettext kio-dev libatasmart-dev libboost-python-dev libkf5config-dev libkf5coreaddons-dev libkf5i18n-dev libkf5iconthemes-dev libkf5parts-dev libkf5service-dev libkf5solid-dev libkpmcore-dev libparted-dev libpolkit-qt5-1-dev libqt5svg5-dev libqt5webkit5-dev libyaml-cpp-dev os-prober pkg-config python3-dev qtbase5-dev qtdeclarative5-dev qttools5-dev qttools5-dev-tools From c7533800b2586b17c1da773d1428455157bfc4b4 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 7 May 2018 05:01:48 -0400 Subject: [PATCH 118/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_ar.ts | 223 +++++++++++++------------ lang/calamares_ast.ts | 223 +++++++++++++------------ lang/calamares_bg.ts | 223 +++++++++++++------------ lang/calamares_ca.ts | 291 +++++++++++++++++---------------- lang/calamares_cs_CZ.ts | 225 +++++++++++++------------ lang/calamares_da.ts | 225 +++++++++++++------------ lang/calamares_de.ts | 223 +++++++++++++------------ lang/calamares_el.ts | 229 ++++++++++++++------------ lang/calamares_en.ts | 225 +++++++++++++------------ lang/calamares_en_GB.ts | 223 +++++++++++++------------ lang/calamares_es.ts | 225 +++++++++++++------------ lang/calamares_es_ES.ts | 225 +++++++++++++------------ lang/calamares_es_MX.ts | 223 +++++++++++++------------ lang/calamares_es_PR.ts | 223 +++++++++++++------------ lang/calamares_et.ts | 223 +++++++++++++------------ lang/calamares_eu.ts | 223 +++++++++++++------------ lang/calamares_fa.ts | 223 +++++++++++++------------ lang/calamares_fi_FI.ts | 223 +++++++++++++------------ lang/calamares_fr.ts | 226 ++++++++++++++------------ lang/calamares_fr_CH.ts | 223 +++++++++++++------------ lang/calamares_gl.ts | 223 +++++++++++++------------ lang/calamares_gu.ts | 223 +++++++++++++------------ lang/calamares_he.ts | 223 +++++++++++++------------ lang/calamares_hi.ts | 223 +++++++++++++------------ lang/calamares_hr.ts | 225 +++++++++++++------------ lang/calamares_hu.ts | 223 +++++++++++++------------ lang/calamares_id.ts | 267 ++++++++++++++++-------------- lang/calamares_is.ts | 223 +++++++++++++------------ lang/calamares_it_IT.ts | 243 ++++++++++++++------------- lang/calamares_ja.ts | 225 +++++++++++++------------ lang/calamares_kk.ts | 223 +++++++++++++------------ lang/calamares_kn.ts | 223 +++++++++++++------------ lang/calamares_lo.ts | 223 +++++++++++++------------ lang/calamares_lt.ts | 225 +++++++++++++------------ lang/calamares_mr.ts | 223 +++++++++++++------------ lang/calamares_nb.ts | 223 +++++++++++++------------ lang/calamares_nl.ts | 223 +++++++++++++------------ lang/calamares_pl.ts | 225 +++++++++++++------------ lang/calamares_pl_PL.ts | 223 +++++++++++++------------ lang/calamares_pt_BR.ts | 225 +++++++++++++------------ lang/calamares_pt_PT.ts | 235 ++++++++++++++------------- lang/calamares_ro.ts | 325 ++++++++++++++++++++----------------- lang/calamares_ru.ts | 225 +++++++++++++------------ lang/calamares_sk.ts | 225 +++++++++++++------------ lang/calamares_sl.ts | 223 +++++++++++++------------ lang/calamares_sq.ts | 225 +++++++++++++------------ lang/calamares_sr.ts | 223 +++++++++++++------------ lang/calamares_sr@latin.ts | 223 +++++++++++++------------ lang/calamares_sv.ts | 223 +++++++++++++------------ lang/calamares_th.ts | 223 +++++++++++++------------ lang/calamares_tr_TR.ts | 225 +++++++++++++------------ lang/calamares_uk.ts | 223 +++++++++++++------------ lang/calamares_ur.ts | 223 +++++++++++++------------ lang/calamares_uz.ts | 223 +++++++++++++------------ lang/calamares_zh_CN.ts | 225 +++++++++++++------------ lang/calamares_zh_TW.ts | 225 +++++++++++++------------ 56 files changed, 6810 insertions(+), 5965 deletions(-) diff --git a/lang/calamares_ar.ts b/lang/calamares_ar.ts index 5958f541f..70c4ab6d9 100644 --- a/lang/calamares_ar.ts +++ b/lang/calamares_ar.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install ثبت @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. يشغّل عمليّة %1. - + Bad working directory path مسار سيء لمجلد العمل - + Working directory %1 for python job %2 is not readable. لا يمكن القراءة من مجلد العمل %1 الخاص بعملية بايثون %2. - + Bad main script file ملفّ السّكربت الرّئيس سيّء. - + Main script file %1 for python job %2 is not readable. ملفّ السّكربت الرّئيس %1 لمهمّة بايثون %2 لا يمكن قراءته. - + Boost.Python error in job "%1". خطأ Boost.Python في العمل "%1". @@ -165,40 +165,46 @@ + &Next &التالي - + &Cancel &إلغاء - + Cancel installation without changing the system. الغاء الـ تثبيت من دون احداث تغيير في النظام - + + &Install + + + + Cancel installation? إلغاء التثبيت؟ - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. أتريد إلغاء عمليّة التّثبيت الحاليّة؟ سيخرج المثبّت وتضيع كلّ التّغييرات. - + &Yes &نعم - + &No &لا @@ -208,32 +214,32 @@ The installer will quit and all changes will be lost. &اغلاق - + Continue with setup? الإستمرار في التثبيت؟ - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> مثبّت %1 على وشك بإجراء تعديلات على قرصك لتثبيت %2.<br/><strong>لن تستطيع التّراجع عن هذا.</strong> - + &Install now &ثبت الأن - + Go &back &إرجع - + &Done - + The installation is complete. Close the installer. اكتمل التثبيت , اغلق المثبِت @@ -484,7 +490,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ The installer will quit and all changes will be lost. أ&عد التّشغيل الآن - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>انتهينا.</h1><br/>لقد ثُبّت %1 على حاسوبك.<br/>يمكنك إعادة التّشغيل وفتح النّظام الجديد، أو متابعة استخدام بيئة %2 الحيّة. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... يحمّل بيانات المواقع... - + Location الموقع @@ -1227,242 +1233,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. معاملات نداء المهمة سيّئة. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: الافتراضي - + unknown مجهول - + extended ممتدّ - + unformatted غير مهيّأ - + swap @@ -2007,52 +2013,52 @@ Output: يجمع معلومات النّظام... - + has at least %1 GB available drive space فيه على الأقل مساحة بحجم %1 غ.بايت حرّة - + There is not enough drive space. At least %1 GB is required. ليست في القرص مساحة كافية. المطلوب هو %1 غ.بايت على الأقلّ. - + has at least %1 GB working memory فيه ذاكرة شاغرة بحجم %1 غ.بايت على الأقلّ - + The system does not have enough working memory. At least %1 GB is required. ليس في النّظام ذاكرة شاغرة كافية. المطلوب هو %1 غ.بايت على الأقلّ. - + is plugged in to a power source موصول بمصدر للطّاقة - + The system is not plugged in to a power source. النّظام ليس متّصلًا بمصدر للطّاقة. - + is connected to the Internet موصول بالإنترنت - + The system is not connected to the Internet. النّظام ليس موصولًا بالإنترنت - + The installer is not running with administrator rights. المثبّت لا يعمل بصلاحيّات المدير. - + The screen is too small to display the installer. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support 1% الدعم diff --git a/lang/calamares_ast.ts b/lang/calamares_ast.ts index b2fc47904..ca1ce2d5a 100644 --- a/lang/calamares_ast.ts +++ b/lang/calamares_ast.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Instalación @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Executando operación %1. - + Bad working directory path Camín incorreutu del direutoriu de trabayu - + Working directory %1 for python job %2 is not readable. El direutoriu de trabayu %1 pal trabayu python %2 nun ye lleible. - + Bad main script file Ficheru incorreutu del script principal - + Main script file %1 for python job %2 is not readable. El ficheru de script principal %1 pal trabayu python %2 nun ye lleible. - + Boost.Python error in job "%1". Fallu Boost.Python nel trabayu «%1». @@ -165,40 +165,46 @@ + &Next &Siguiente - + &Cancel &Encaboxar - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? ¿Encaboxar instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. ¿De xuru que quies encaboxar el procesu actual d'instalación? L'instalador colará y perderánse toles camudancies. - + &Yes &Sí - + &No &Non @@ -208,32 +214,32 @@ L'instalador colará y perderánse toles camudancies. &Zarrar - + Continue with setup? ¿Siguir cola configuración? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> L'instalador %1 ta a piques de facer camudancies al to discu pa instalar %2.<br/><strong>Nun sedrás capaz a desfacer estes camudancies.</strong> - + &Install now &Instalar agora - + Go &back &Dir p'atrás - + &Done &Fecho - + The installation is complete. Close the installer. Completóse la operación. Zarra l'instalador. @@ -484,7 +490,7 @@ L'instalador colará y perderánse toles camudancies. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ L'instalador colará y perderánse toles camudancies. &Reaniciar agora - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Too fecho.</h1><br/>%1 instalóse nel to ordenador.<br/>Quiciabes quieras reaniciar agora al to sistema nuevu, o siguir usando l'entornu live %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ L'instalador colará y perderánse toles camudancies. LocaleViewStep - + Loading location data... Cargando datos d'allugamientu... - + Location Allugamientu @@ -1227,242 +1233,242 @@ L'instalador colará y perderánse toles camudancies. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ L'instalador colará y perderánse toles camudancies. Precísase una partición del sistema EFI p'aniciar %1.<br/><br/>Configuróse una partición col puntu montaxe <strong>%2</strong> pero nun s'afitó la so bandera <strong>esp</strong>.<br/>P'afitar la bandera, volvi y edita la partición.<br/><br/>Pues siguir ensin afitar la bandera pero'l to sistema pue fallar al aniciase. - + Boot partition not encrypted /boot non cifráu - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ L'instalador colará y perderánse toles camudancies. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ L'instalador colará y perderánse toles camudancies. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Parámetros incorreutos pa la llamada del trabayu del procesu. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: Por defeutu - + unknown - + extended - + unformatted ensin formatiar - + swap intercambéu @@ -2007,52 +2013,52 @@ Output: Axuntando información del sistema... - + has at least %1 GB available drive space tien polo menos %1 GB disponibles d'espaciu en discu - + There is not enough drive space. At least %1 GB is required. Nun hai espaciu abondu na unidá. Ríquense polo menos %1 GB. - + has at least %1 GB working memory polo menos %1 GB de memoria de trabayu - + The system does not have enough working memory. At least %1 GB is required. El sistema nun tien abonda memoria de trabayu. Ríquense polo menos %1 GB. - + is plugged in to a power source ta enchufáu a una fonte d'enerxía - + The system is not plugged in to a power source. El sistema nun ta enchufáu a una fonte d'enerxía. - + is connected to the Internet ta coneutáu a internet - + The system is not connected to the Internet. El sistema nun ta coneutáu a internet. - + The installer is not running with administrator rights. L'instalador nun ta executándose con drechos alministrativos. - + The screen is too small to display the installer. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support Sofitu %1 diff --git a/lang/calamares_bg.ts b/lang/calamares_bg.ts index f9aceecf9..31e629ef0 100644 --- a/lang/calamares_bg.ts +++ b/lang/calamares_bg.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Инсталирай @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Изпълнение на %1 операция. - + Bad working directory path Невалиден път на работната директория - + Working directory %1 for python job %2 is not readable. Работна директория %1 за python задача %2 не се чете. - + Bad main script file Невалиден файл на главен скрипт - + Main script file %1 for python job %2 is not readable. Файлът на главен скрипт %1 за python задача %2 не се чете. - + Boost.Python error in job "%1". Boost.Python грешка в задача "%1". @@ -165,40 +165,46 @@ + &Next &Напред - + &Cancel &Отказ - + Cancel installation without changing the system. Отказ от инсталацията без промяна на системата. - + + &Install + + + + Cancel installation? Отмяна на инсталацията? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Наистина ли искате да отмените текущият процес на инсталиране? Инсталатора ще прекъсне и всичките промени ще бъдат загубени. - + &Yes &Да - + &No &Не @@ -208,32 +214,32 @@ The installer will quit and all changes will be lost. &Затвори - + Continue with setup? Продължаване? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Инсталатора на %1 ще направи промени по вашия диск за да инсталира %2. <br><strong>Промените ще бъдат окончателни.</strong> - + &Install now &Инсталирай сега - + Go &back В&ръщане - + &Done &Готово - + The installation is complete. Close the installer. Инсталацията е завършена. Затворете инсталаторa. @@ -485,7 +491,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -942,12 +948,12 @@ The installer will quit and all changes will be lost. &Рестартирай сега - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Завършено.</h1><br/>%1 беше инсталирана на вашият компютър.<br/>Вече можете да рестартирате в новата си система или да продължите да използвате %2 Живата среда. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1184,12 +1190,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... Зареждане на данните за местоположение - + Location Местоположение @@ -1228,242 +1234,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short Паролата е твърде кратка - + Password is too long Паролата е твърде дълга - + Password is too weak Паролата е твърде слаба - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one Паролата съвпада с предишната - + The password is a palindrome Паролата е палиндром - + The password differs with case changes only - + The password is too similar to the old one Паролата е твърде сходна с предишната - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short Паролата е твърде кратка - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied Липсва парола - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error Неизвестна грешка @@ -1770,12 +1776,12 @@ The installer will quit and all changes will be lost. EFI системен дял е нужен за стартиране на %1.<br/><br/>Дялът беше конфигуриран с точка на монтиране <strong>%2</strong>, но неговия <strong>esp</strong> флаг не е включен.<br/>За да включите флага се върнете назад и редактирайте дяла.<br/><br/>Може да продължите без флага, но системата може да не успее да стартира. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1807,15 +1813,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1823,65 +1829,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Невалидни параметри за извикване на задача за процес. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1900,22 +1906,22 @@ Output: По подразбиране - + unknown неизвестна - + extended разширена - + unformatted неформатирана - + swap swap @@ -2008,52 +2014,52 @@ Output: Събиране на системна информация... - + has at least %1 GB available drive space има поне %1 ГБ свободено дисково пространство - + There is not enough drive space. At least %1 GB is required. Няма достатъчно дисково пространство. Необходимо е поне %1 ГБ. - + has at least %1 GB working memory има поне %1 ГБ работна памет - + The system does not have enough working memory. At least %1 GB is required. Системата не разполага с достатъчно работна памет. Необходима е поне %1 ГБ. - + is plugged in to a power source е включен към източник на захранване - + The system is not plugged in to a power source. Системата не е включена към източник на захранване. - + is connected to the Internet е свързан към интернет - + The system is not connected to the Internet. Системата не е свързана с интернет. - + The installer is not running with administrator rights. Инсталаторът не е стартиран с права на администратор. - + The screen is too small to display the installer. @@ -2326,6 +2332,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2554,7 +2569,7 @@ Output: - + %1 support %1 поддръжка diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index 84243b5ec..566b6587d 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -9,12 +9,12 @@ This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>EFI</strong>. <br><br> Per configurar una arrencada des d'un entorn EFI, aquest instal·lador ha de desplegar una aplicació de càrrega d'arrencada, com ara el <strong>GRUB</strong> o el <strong>systemd-boot</strong> en una <strong>partició EFI del sistema</strong>. Això és automàtic, llevat que trieu fer les particions manualment, en què caldrà que ho configureu vosaltres mateixos. + Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>EFI</strong>. <br><br> Per configurar una arrencada des d'un entorn EFI, aquest instal·lador ha de desplegar l'aplicació d'un gestor d'arrencada, com ara el <strong>GRUB</strong> o el <strong>systemd-boot</strong> en una <strong>partició EFI del sistema</strong>. Això és automàtic, llevat que trieu fer les particions manualment, en què caldrà que ho configureu vosaltres mateixos. This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>BIOS </strong>. Per configurar una arrencada des d'un entorn BIOS, aquest instal·lador ha d'instal·lar un carregador d'arrencada, com ara el <strong>GRUB</strong>, ja sigui al començament d'una partició o al <strong>Registre d'Arrencada Mestre</strong>, a prop del començament de la taula de particions (millor). Això és automàtic, llevat que trieu fer les particions manualment, en què caldrà que ho configureu pel vostre compte. + Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>BIOS </strong>.<br><br>Per configurar una arrencada des d'un entorn BIOS, aquest instal·lador ha d'instal·lar un gestor d'arrencada, com ara el <strong>GRUB</strong>, ja sigui al començament d'una partició o al <strong>MBR</strong>, a prop del començament de la taula de particions (millor). Això és automàtic, llevat que trieu fer les particions manualment, en què caldrà que ho configureu pel vostre compte. @@ -37,7 +37,7 @@ Do not install a boot loader - No instal·lis cap carregador d'arrencada + No instal·lis cap gestor d'arrencada @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Instal·la @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Executant l'operació %1. - + Bad working directory path - Ruta errònia del directori de treball + Camí incorrecte al directori de treball - + Working directory %1 for python job %2 is not readable. El directori de treball %1 per a la tasca python %2 no és llegible. - + Bad main script file Fitxer erroni d'script principal - + Main script file %1 for python job %2 is not readable. El fitxer de script principal %1 per a la tasca de python %2 no és llegible. - + Boost.Python error in job "%1". Error de Boost.Python a la tasca "%1". @@ -165,40 +165,46 @@ + &Next &Següent - + &Cancel &Cancel·la - + Cancel installation without changing the system. Cancel·leu la instal·lació sense canviar el sistema. - + + &Install + &Instal·la + + + Cancel installation? Cancel·lar la instal·lació? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Voleu cancel·lar el procés d'instal·lació actual? L'instal·lador es tancarà i tots els canvis es perdran. - + &Yes &Sí - + &No &No @@ -208,32 +214,32 @@ L'instal·lador es tancarà i tots els canvis es perdran. Tan&ca - + Continue with setup? Voleu continuar la configuració? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> L'instal·lador de %1 està a punt de fer canvis al disc per tal d'instal·lar-hi %2.<br/><strong>No podreu desfer aquests canvis.</strong> - + &Install now &Instal·la ara - + Go &back Vés &enrere - + &Done &Fet - + The installation is complete. Close the installer. La instal·lació s'ha acabat. Tanqueu l'instal·lador. @@ -332,12 +338,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. Boot loader location: - Ubicació del carregador d'arrencada: + Ubicació del gestor d'arrencada: %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - %1 s'encongirà a %2MB i es crearà una partició nova de %3MB per a %4. + %1 s'encongirà a %2 MB i es crearà una partició nova de %3 MB per a %4. @@ -450,7 +456,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Clear all temporary mounts. - Neteja tots els muntatges temporals + Neteja tots els muntatges temporals. @@ -484,7 +490,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. ContextualProcessJob - + Contextual Processes Job Tasca de procés contextual @@ -504,7 +510,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Partition &Type: - Partició & tipus: + &Tipus de partició: @@ -524,12 +530,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. LVM LV name - Nom per a LV LVM + Nom del volum lògic LVM Flags: - Banderes: + Indicadors: @@ -544,7 +550,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. En&crypt - En&cripta + &Xifra @@ -564,7 +570,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Mountpoint already in use. Please select another one. - El punt de muntatge ja s'usa. Si us plau, seleccioneu-ne un altre. + El punt de muntatge ja està en ús. Si us plau, seleccioneu-ne un altre. @@ -572,12 +578,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. Create new %2MB partition on %4 (%3) with file system %1. - Crea una partició nova de %2MB a %4 (%3) amb el sistema de fitxers %1. + Crea una partició nova de %2 MB a %4 (%3) amb el sistema de fitxers %1. Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - Crea una partició nova de <strong>%2MB</strong> a <strong>%4</strong> (%3) amb el sistema de fitxers <strong>%1</strong>. + Crea una partició nova de <strong>%2 MB</strong> a <strong>%4</strong> (%3) amb el sistema de fitxers <strong>%1</strong>. @@ -623,12 +629,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. Create new %1 partition table on %2. - Crea una taula de particions %1 nova a %2. + Crea una nova taula de particions %1 a %2. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - Crea una taula de particions <strong>%1</strong> nova a <strong>%2</strong> (%3). + Crea una nova taula de particions <strong>%1</strong> a <strong>%2</strong> (%3). @@ -783,12 +789,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. Skip writing LUKS configuration for Dracut: "/" partition is not encrypted - Omet l'escriptura de la configuració de LUKS per a Dracut: la partició "/" no està encriptada + Omet l'escriptura de la configuració de LUKS per a Dracut: la partició "/" no està xifrada Failed to open %1 - Ha fallat obrir %1 + No s'ha pogut obrir %1 @@ -819,7 +825,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Format - Formatar + Formata @@ -849,12 +855,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. Flags: - Banderes: + Indicadors: Mountpoint already in use. Please select another one. - El punt de muntatge ja s'usa. Si us plau, seleccioneu-ne un altre. + El punt de muntatge ja està en ús. Si us plau, seleccioneu-ne un altre. @@ -867,7 +873,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. En&crypt system - En&cripta el sistema + &Xifra el sistema @@ -882,7 +888,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Please enter the same passphrase in both boxes. - Si us plau, escriviu la mateixa constrasenya a les dues caselles. + Si us plau, introduïu la mateixa contrasenya a les dues caselles. @@ -915,7 +921,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Install boot loader on <strong>%1</strong>. - Instal·la el carregador d'arrencada a <strong>%1</strong>. + Instal·la el gestor d'arrencada a <strong>%1</strong>. @@ -933,7 +939,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - <html><head/><body><p>Quan aquesta casella està marcada, el sistema es reiniciarà immediatament quan cliqueu a <span style=" font-style:italic;">Fet</span> o tanqueu l'instal·lador.</p></body></html> + <html><head/><body><p>Quan aquesta casella està marcada, el sistema es reiniciarà immediatament quan feu clic a <span style=" font-style:italic;">Fet</span> o tanqueu l'instal·lador.</p></body></html> @@ -941,12 +947,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. &Reinicia ara - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - <h1>Tot fet.</h1><br/>%1 s'ha instal·lat al vostre ordinador.<br/>Ara podeu reiniciar-lo per tal d'accedir al sistema operatiu nou o bé continuar utilitzant l'entorn Live de %2. + <h1>Tot fet.</h1><br/>%1 s'ha instal·lat al vostre ordinador.<br/>Ara podeu reiniciar-lo per tal d'accedir al sistema operatiu nou o bé continuar utilitzant l'entorn autònom de %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>La instal·lació ha fallat</h1><br/>No s'ha instal·lat %1 a l'ordinador.<br/>El missatge d'error ha estat el següent: %2. @@ -979,12 +985,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - Formata la partició de <strong>%3MB</strong> <strong>%1</strong> amb el sistema de fitxers <strong>%2</strong>. + Formata la partició de <strong>%3 MB</strong> <strong>%1</strong> amb el sistema de fitxers <strong>%2</strong>. Formatting partition %1 with file system %2. - Formatant la partició %1 amb el sistema d'arxius %2. + Formatant la partició %1 amb el sistema de fitxers %2. @@ -1166,7 +1172,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. &Change... - &Canvi... + &Canvia... @@ -1183,12 +1189,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. LocaleViewStep - + Loading location data... Carregant les dades de la ubicació... - + Location Ubicació @@ -1227,242 +1233,242 @@ L'instal·lador es tancarà i tots els canvis es perdran. PWQ - + Password is too short La contrasenya és massa curta. - + Password is too long La contrasenya és massa llarga. - + Password is too weak La contrasenya és massa dèbil. - + Memory allocation error when setting '%1' Error d'assignació de memòria en establir "%1" - + Memory allocation error Error d'assignació de memòria - + The password is the same as the old one La contrasenya és la mateixa que l'anterior. - + The password is a palindrome La contrasenya és un palíndrom. - + The password differs with case changes only La contrasenya només és diferent per les majúscules o minúscules. - + The password is too similar to the old one La contrasenya és massa semblant a l'anterior. - + The password contains the user name in some form La contrasenya conté el nom d'usuari d'alguna manera. - + The password contains words from the real name of the user in some form La contrasenya conté paraules del nom real de l'usuari d'alguna manera. - + The password contains forbidden words in some form La contrasenya conté paraules prohibides d'alguna manera. - + The password contains less than %1 digits La contrasenya és inferior a %1 dígits. - + The password contains too few digits La contrasenya conté massa pocs dígits. - + The password contains less than %1 uppercase letters La contrasenya conté menys de %1 lletres majúscules. - + The password contains too few uppercase letters La contrasenya conté massa poques lletres majúscules. - + The password contains less than %1 lowercase letters La contrasenya conté menys de %1 lletres minúscules. - + The password contains too few lowercase letters La contrasenya conté massa poques lletres minúscules. - + The password contains less than %1 non-alphanumeric characters La contrasenya conté menys de %1 caràcters no alfanumèrics. - + The password contains too few non-alphanumeric characters La contrasenya conté massa pocs caràcters no alfanumèrics. - + The password is shorter than %1 characters La contrasenya és més curta de %1 caràcters. - + The password is too short La contrasenya és massa curta. - + The password is just rotated old one La contrasenya és només l'anterior capgirada. - + The password contains less than %1 character classes La contrasenya conté menys de %1 classes de caràcters. - + The password does not contain enough character classes La contrasenya no conté prou classes de caràcters. - + The password contains more than %1 same characters consecutively La contrasenya conté més de %1 caràcters iguals consecutius. - + The password contains too many same characters consecutively La contrasenya conté massa caràcters iguals consecutius. - + The password contains more than %1 characters of the same class consecutively La contrasenya conté més de %1 caràcters consecutius de la mateixa classe. - + The password contains too many characters of the same class consecutively La contrasenya conté massa caràcters consecutius de la mateixa classe. - + The password contains monotonic sequence longer than %1 characters La contrasenya conté una seqüència monòtona més llarga de %1 caràcters. - + The password contains too long of a monotonic character sequence La contrasenya conté una seqüència monòtona de caràcters massa llarga. - + No password supplied No s'ha proporcionat cap contrasenya. - + Cannot obtain random numbers from the RNG device No es poden obtenir números aleatoris del dispositiu RNG. - + Password generation failed - required entropy too low for settings Ha fallat la generació de la contrasenya. Entropia necessària massa baixa per als paràmetres. - + The password fails the dictionary check - %1 La contrasenya no aprova la comprovació del diccionari: %1 - + The password fails the dictionary check La contrasenya no aprova la comprovació del diccionari. - + Unknown setting - %1 Paràmetre desconegut: %1 - + Unknown setting Paràmetre desconegut - + Bad integer value of setting - %1 Valor enter del paràmetre incorrecte: %1 - + Bad integer value Valor enter incorrecte - + Setting %1 is not of integer type El paràmetre %1 no és del tipus enter. - + Setting is not of integer type El paràmetre no és del tipus enter. - + Setting %1 is not of string type El paràmetre %1 no és del tipus cadena. - + Setting is not of string type El paràmetre no és del tipus cadena. - + Opening the configuration file failed Ha fallat obrir el fitxer de configuració. - + The configuration file is malformed El fitxer de configuració té una forma incorrecta. - + Fatal failure Fallada fatal - + Unknown error Error desconegut @@ -1673,7 +1679,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Install boot &loader on: - &Instal·la el carregador d'arrencada a: + &Instal·la el gestor d'arrencada a: @@ -1769,12 +1775,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. Cal una partició EFI de sistema per iniciar %1. <br/><br/> Ja s'ha configurat una partició amb el punt de muntatge <strong>%2</strong> però no se n'ha establert la bandera <strong>esp</strong>. Per establir-la-hi, torneu enrere i editeu la partició. <br/><br/>Podeu continuar sense establir la bandera, però el sistema podria no iniciar-se. - + Boot partition not encrypted - Partició d'arrel no encriptada + Partició d'arrencada sense xifrar - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. S'ha establert una partició d'arrencada separada conjuntament amb una partició d'arrel encriptada, però la partició d'arrencada no està encriptada.<br/><br/>Hi ha aspectes de seguretat amb aquest tipus de configuració, perquè hi ha fitxers del sistema importants en una partició no encriptada.<br/>Podeu continuar, si així ho desitgeu, però el desbloqueig del sistema de fitxers succeirà després, durant l'inici del sistema.<br/>Per encriptar la partició d'arrencada, torneu enrere i torneu-la a crear seleccionant <strong>Encripta</strong> a la finestra de creació de la partició. @@ -1806,15 +1812,15 @@ L'instal·lador es tancarà i tots els canvis es perdran. Marcador de posició - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Si us plau, trieu un aspecte i comportament per a l'escriptori Plasma de KDE. També podeu saltar aquest pas i configurar-ho un cop instal·lat el sistema. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + Si us plau, trieu un aspecte i comportament per a l'escriptori Plasma de KDE. També podeu saltar aquest pas i configurar-ho un cop instal·lat el sistema. Quan cliqueu en una selecció d'aspecte i comportament podreu veure'n una previsualització. PlasmaLnfViewStep - + Look-and-Feel Aspecte i comportament @@ -1822,14 +1828,14 @@ L'instal·lador es tancarà i tots els canvis es perdran. ProcessResult - + There was no output from the command. No hi ha hagut sortida de l'ordre. - + Output: @@ -1838,52 +1844,52 @@ Sortida: - + External command crashed. L'ordre externa ha fallat. - + Command <i>%1</i> crashed. L'ordre <i>%1</i> ha fallat. - + External command failed to start. L'ordre externa no s'ha pogut iniciar. - + Command <i>%1</i> failed to start. L'ordre <i>%1</i> no s'ha pogut iniciar. - + Internal error when starting command. Error intern en iniciar l'ordre. - + Bad parameters for process job call. Paràmetres incorrectes per a la crida de la tasca del procés. - + External command failed to finish. L'ordre externa no ha acabat correctament. - + Command <i>%1</i> failed to finish in %2 seconds. L'ordre <i>%1</i> no ha pogut acabar en %2 segons. - + External command finished with errors. L'ordre externa ha acabat amb errors. - + Command <i>%1</i> finished with exit code %2. L'ordre <i>%1</i> ha acabat amb el codi de sortida %2. @@ -1902,22 +1908,22 @@ Sortida: Per defecte - + unknown desconeguda - + extended ampliada - + unformatted sense format - + swap Intercanvi @@ -2010,52 +2016,52 @@ Sortida: Recopilant informació del sistema... - + has at least %1 GB available drive space té com a mínim %1 GB d'espai de disc disponible. - + There is not enough drive space. At least %1 GB is required. No hi ha prou espai de disc disponible. Com a mínim hi ha d'haver %1 GB. - + has at least %1 GB working memory té com a mínim %1 GB de memòria de treball - + The system does not have enough working memory. At least %1 GB is required. El sistema no té prou memòria de treball. Com a mínim es necessita %1 GB. - + is plugged in to a power source està connectat a una font de corrent - + The system is not plugged in to a power source. El sistema no està connectat a una font de corrent. - + is connected to the Internet està connectat a Internet - + The system is not connected to the Internet. El sistema no està connectat a Internet. - + The installer is not running with administrator rights. L'instal·lador no s'ha executat amb privilegis d'administrador. - + The screen is too small to display the installer. La pantalla és massa petita per mostrar l'instal·lador. @@ -2292,12 +2298,12 @@ Sortida: Cannot access selected timezone path. - No es pot accedir a la ruta de la zona horària seleccionada. + No es pot accedir al camí a la zona horària seleccionada. Bad path: %1 - Ruta errònia: %1 + Camí incorrecte: %1 @@ -2328,6 +2334,15 @@ Sortida: Tasca de processos de l'intèrpret d'ordres + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + %L1 / %L2 + + SummaryPage @@ -2556,7 +2571,7 @@ Sortida: <h1>%1</h1><br/><strong>%2<br/>per a %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017, Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agraïments: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg i l'<a href="https://www.transifex.com/calamares/calamares/">Equip de traducció del Calamares</a>.<br/><br/><a href="http://calamares.io/">El desenvolupament </a> del Calamares està patrocinat per <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suport diff --git a/lang/calamares_cs_CZ.ts b/lang/calamares_cs_CZ.ts index f413aaba2..827dd7775 100644 --- a/lang/calamares_cs_CZ.ts +++ b/lang/calamares_cs_CZ.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Instalovat @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Spouštění %1 operace. - + Bad working directory path Chybný popis umístění pracovní složky - + Working directory %1 for python job %2 is not readable. Pracovní složku %1 pro Python skript %2 se nedaří otevřít pro čtení. - + Bad main script file Nesprávný soubor s hlavním skriptem - + Main script file %1 for python job %2 is not readable. Hlavní soubor %1 pro Python úlohu %2 se nedaří otevřít pro čtení.. - + Boost.Python error in job "%1". Boost.Python chyba ve skriptu „%1“. @@ -165,40 +165,46 @@ + &Next &Další - + &Cancel &Storno - + Cancel installation without changing the system. Zrušení instalace bez provedení změn systému. - + + &Install + Na&instalovat + + + Cancel installation? Přerušit instalaci? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Opravdu chcete přerušit instalaci? Instalační program bude ukončen a všechny změny ztraceny. - + &Yes &Ano - + &No &Ne @@ -208,32 +214,32 @@ Instalační program bude ukončen a všechny změny ztraceny. &Zavřít - + Continue with setup? Pokračovat s instalací? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Instalátor %1 provede změny na datovém úložišti, aby bylo nainstalováno %2.<br/><strong>Změny nebude možné vrátit zpět.</strong> - + &Install now &Spustit instalaci - + Go &back Jít &zpět - + &Done &Hotovo - + The installation is complete. Close the installer. Instalace je dokončena. Ukončete instalátor. @@ -484,7 +490,7 @@ Instalační program bude ukončen a všechny změny ztraceny. ContextualProcessJob - + Contextual Processes Job Úloha kontextuálních procesů @@ -941,12 +947,12 @@ Instalační program bude ukončen a všechny změny ztraceny. &Restartovat nyní - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Instalace je u konce.</h1><br/>%1 byl nainstalován na váš počítač.<br/>Nyní ho můžete restartovat a přejít do čerstvě nainstalovaného systému, nebo můžete pokračovat v práci ve stávajícím prostředím %2, spuštěným z instalačního média. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Instalace se nezdařila</h1><br/>%1 nebyl instalován na váš počítač.<br/>Hlášení o chybě: %2. @@ -1183,12 +1189,12 @@ Instalační program bude ukončen a všechny změny ztraceny. LocaleViewStep - + Loading location data... Načítání informací o poloze… - + Location Poloha @@ -1227,242 +1233,242 @@ Instalační program bude ukončen a všechny změny ztraceny. PWQ - + Password is too short Heslo je příliš krátké - + Password is too long Heslo je příliš dlouhé - + Password is too weak Heslo je příliš slabé - + Memory allocation error when setting '%1' Chyba přidělování paměti při nastavování „%1“ - + Memory allocation error Chyba při přidělování paměti - + The password is the same as the old one Heslo je stejné jako to přechozí - + The password is a palindrome Heslo je palindrom (je stejné i pozpátku) - + The password differs with case changes only Heslo se liší pouze změnou velikosti písmen - + The password is too similar to the old one Heslo je příliš podobné tomu předchozímu - + The password contains the user name in some form Heslo obsahuje nějakou formou uživatelské jméno - + The password contains words from the real name of the user in some form Heslo obsahuje obsahuje nějakou formou slova ze jména uživatele - + The password contains forbidden words in some form Heslo obsahuje nějakou formou slova, která není možné použít - + The password contains less than %1 digits Heslo obsahuje méně než %1 číslic - + The password contains too few digits Heslo obsahuje příliš málo číslic - + The password contains less than %1 uppercase letters Heslo obsahuje méně než %1 velkých písmen - + The password contains too few uppercase letters Heslo obsahuje příliš málo velkých písmen - + The password contains less than %1 lowercase letters Heslo obsahuje méně než %1 malých písmen - + The password contains too few lowercase letters Heslo obsahuje příliš málo malých písmen - + The password contains less than %1 non-alphanumeric characters Heslo obsahuje méně než %1 speciálních znaků - + The password contains too few non-alphanumeric characters Heslo obsahuje příliš málo speciálních znaků - + The password is shorter than %1 characters Heslo je kratší než %1 znaků - + The password is too short Heslo je příliš krátké - + The password is just rotated old one Heslo je jen některé z předchozích - + The password contains less than %1 character classes Heslo obsahuje méně než %1 druhů znaků - + The password does not contain enough character classes Heslo není tvořeno dostatečným počtem druhů znaků - + The password contains more than %1 same characters consecutively Heslo obsahuje více než %1 stejných znaků za sebou - + The password contains too many same characters consecutively Heslo obsahuje příliš mnoho stejných znaků za sebou - + The password contains more than %1 characters of the same class consecutively Heslo obsahuje více než %1 znaků ze stejné třídy za sebou - + The password contains too many characters of the same class consecutively Heslo obsahuje příliš mnoho znaků ze stejné třídy za sebou - + The password contains monotonic sequence longer than %1 characters Heslo obsahuje monotónní posloupnost delší než %1 znaků - + The password contains too long of a monotonic character sequence Heslo obsahuje příliš dlouhou monotónní posloupnost - + No password supplied Nebylo zadáno žádné heslo - + Cannot obtain random numbers from the RNG device Nedaří se získat náhodná čísla ze zařízení generátoru náhodných čísel (RNG) - + Password generation failed - required entropy too low for settings Vytvoření hesla se nezdařilo – úroveň nahodilosti je příliš nízká - + The password fails the dictionary check - %1 Heslo je slovníkové – %1 - + The password fails the dictionary check Heslo je slovníkové - + Unknown setting - %1 Neznámé nastavení – %1 - + Unknown setting Neznámé nastavení - + Bad integer value of setting - %1 Chybná celočíselná hodnota nastavení – %1 - + Bad integer value Chybná celočíselná hodnota - + Setting %1 is not of integer type Nastavení %1 není typu celé číslo - + Setting is not of integer type Nastavení není typu celé číslo - + Setting %1 is not of string type Nastavení %1 není typu řetězec - + Setting is not of string type Nastavení není typu řetězec - + Opening the configuration file failed Nepodařilo se otevřít soubor s nastaveními - + The configuration file is malformed Soubor s nastaveními nemá správný formát - + Fatal failure Fatální nezdar - + Unknown error Neznámá chyba @@ -1769,12 +1775,12 @@ Instalační program bude ukončen a všechny změny ztraceny. Pro spuštění %1 je potřeba EFI systémový oddíl.<br/><br/>Byl nastaven oddíl s přípojným bodem <strong>%2</strong> ale nemá nastaven příznak <strong>esp</strong>.<br/>Pro nastavení příznaku se vraťte zpět a upravte oddíl.<br/><br/>Je možné pokračovat bez nastavení příznaku, ale systém nemusí jít spustit. - + Boot partition not encrypted Zaváděcí oddíl není šifrován - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Kromě šifrovaného kořenového oddílu byl vytvořen i nešifrovaný oddíl zavaděče.<br/><br/>To by mohl být bezpečnostní problém, protože na nešifrovaném oddílu jsou důležité soubory systému.<br/>Pokud chcete, můžete pokračovat, ale odemykání souborového systému bude probíhat později při startu systému.<br/>Pro zašifrování oddílu zavaděče se vraťte a vytvořte ho vybráním možnosti <strong>Šifrovat</strong> v okně při vytváření oddílu. @@ -1806,15 +1812,15 @@ Instalační program bude ukončen a všechny změny ztraceny. Výplň - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Zvolte vzhled a chování KDE Plasma desktopu. Také můžete tento krok přeskočit a nastavení provést až v nainstalovaném systému. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + Zvolte vzhled a chování KDE Plasma desktopu. Tento krok je také možné přeskočit a nastavit až po instalaci systému. Kliknutí na výběr vyvolá zobrazení náhledu daného vzhledu a chování. PlasmaLnfViewStep - + Look-and-Feel Vzhled a dojem z @@ -1822,14 +1828,14 @@ Instalační program bude ukončen a všechny změny ztraceny. ProcessResult - + There was no output from the command. Příkaz neposkytl žádný výstup. - + Output: @@ -1838,52 +1844,52 @@ Výstup: - + External command crashed. Vnější příkaz byl neočekávaně ukončen. - + Command <i>%1</i> crashed. Příkaz <i>%1</i> byl neočekávaně ukončen. - + External command failed to start. Vnější příkaz se nepodařilo spustit. - + Command <i>%1</i> failed to start. Příkaz <i>%1</i> se nepodařilo spustit. - + Internal error when starting command. Vnitřní chyba při spouštění příkazu. - + Bad parameters for process job call. Chybné parametry volání úlohy procesu.. - + External command failed to finish. Vnější příkaz se nepodařilo dokončit. - + Command <i>%1</i> failed to finish in %2 seconds. Příkaz <i>%1</i> se nepodařilo dokončit do %2 sekund. - + External command finished with errors. Vnější příkaz skončil s chybami. - + Command <i>%1</i> finished with exit code %2. Příkaz <i>%1</i> skončil s návratovým kódem %2. @@ -1902,22 +1908,22 @@ Výstup: Výchozí - + unknown neznámý - + extended rozšířený - + unformatted nenaformátovaný - + swap odkládací oddíl @@ -2010,52 +2016,52 @@ Výstup: Shromažďování informací o systému… - + has at least %1 GB available drive space má minimálně %1 GB dostupného místa na jednotce - + There is not enough drive space. At least %1 GB is required. Nedostatek místa na úložišti. Je potřeba nejméně %1 GB. - + has at least %1 GB working memory má alespoň %1 GB operační paměti - + The system does not have enough working memory. At least %1 GB is required. Systém nemá dostatek operační paměti. Je potřeba nejméně %1 GB. - + is plugged in to a power source je připojený ke zdroji napájení - + The system is not plugged in to a power source. Systém není připojen ke zdroji napájení. - + is connected to the Internet je připojený k Internetu - + The system is not connected to the Internet. Systém není připojený k Internetu. - + The installer is not running with administrator rights. Instalační program není spuštěn s právy správce systému. - + The screen is too small to display the installer. Rozlišení obrazovky je příliš malé pro zobrazení instalátoru. @@ -2328,6 +2334,15 @@ Výstup: Úloha shellových procesů + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + %L1 / %L2 + + SummaryPage @@ -2556,7 +2571,7 @@ Výstup: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg a <a href="https://www.transifex.com/calamares/calamares/">tým překledatelů Calamares</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> vývoj je sponzorován <br/><a href="http://www.blue-systems.com/">Blue Systems</a> – Liberating Software. - + %1 support %1 podpora diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts index 38eed0dd4..b322b155c 100644 --- a/lang/calamares_da.ts +++ b/lang/calamares_da.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Installation @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Kører %1-handling. - + Bad working directory path Ugyldig arbejdsmappesti - + Working directory %1 for python job %2 is not readable. Arbejdsmappen %1 til python-jobbet %2 er ikke læsbar. - + Bad main script file Ugyldig primær skriptfil - + Main script file %1 for python job %2 is not readable. Primær skriptfil %1 til python-jobbet %2 er ikke læsbar. - + Boost.Python error in job "%1". Boost.Python-fejl i job "%1". @@ -165,40 +165,46 @@ + &Next &Næste - + &Cancel &Annullér - + Cancel installation without changing the system. Annullér installation uden at ændre systemet. - + + &Install + &Installer + + + Cancel installation? Annullér installationen? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Vil du virkelig annullere den igangværende installationsproces? Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. - + &Yes &Ja - + &No &Nej @@ -208,32 +214,32 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.&Luk - + Continue with setup? Fortsæt med opsætningen? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1-installationsprogrammet er ved at foretage ændringer til din disk for at installere %2. <br/><strong>Det vil ikke være muligt at fortryde ændringerne.</strong> - + &Install now &Installér nu - + Go &back Gå &tilbage - + &Done &Færdig - + The installation is complete. Close the installer. Installationen er fuldført. Luk installationsprogrammet. @@ -484,7 +490,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. ContextualProcessJob - + Contextual Processes Job Kontekstuelt procesjob @@ -941,12 +947,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.&Genstart nu - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Færdig.</h1><br/>%1 er blevet installeret på din computer.<br/>Du kan nu genstarte for at komme ind i dit nye system eller fortsætte med at bruge %2 live-miljøet. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Installation mislykkede</h1><br/>%1 er ikke blevet installeret på din computer.<br/>Fejlmeddelelsen var: %2. @@ -1183,12 +1189,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. LocaleViewStep - + Loading location data... Indlæser placeringsdata... - + Location Placering @@ -1227,242 +1233,242 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. PWQ - + Password is too short Adgangskoden er for kort - + Password is too long Adgangskoden er for lang - + Password is too weak Adgangskoden er for svag - + Memory allocation error when setting '%1' Fejl ved allokering af hukommelse ved sættelse af '%1' - + Memory allocation error Fejl ved allokering af hukommelse - + The password is the same as the old one Adgangskoden er den samme som den gamle - + The password is a palindrome Adgangskoden er et palindrom - + The password differs with case changes only Adgangskoden har kun ændringer i store/små bogstaver - + The password is too similar to the old one Adgangskoden minder for meget om den gamle - + The password contains the user name in some form Adgangskoden indeholder i nogen form brugernavnet - + The password contains words from the real name of the user in some form Adgangskoden indeholder i nogen form ord fra brugerens rigtige navn - + The password contains forbidden words in some form Adgangskoden indeholder i nogen form forbudte ord - + The password contains less than %1 digits Adgangskoden indeholder færre end %1 cifre - + The password contains too few digits Adgangskoden indeholder for få cifre - + The password contains less than %1 uppercase letters Adgangskoden indeholder færre end %1 bogstaver med stort - + The password contains too few uppercase letters Adgangskoden indeholder for få bogstaver med stort - + The password contains less than %1 lowercase letters Adgangskoden indeholder færre end %1 bogstaver med småt - + The password contains too few lowercase letters Adgangskoden indeholder for få bogstaver med småt - + The password contains less than %1 non-alphanumeric characters Adgangskoden indeholder færre end %1 ikke-alfanumeriske tegn - + The password contains too few non-alphanumeric characters Adgangskoden indeholder for få ikke-alfanumeriske tegn - + The password is shorter than %1 characters Adgangskoden er kortere end %1 tegn - + The password is too short Adgangskoden er for kort - + The password is just rotated old one Adgangskoden er blot det gamle hvor der er byttet om på tegnene - + The password contains less than %1 character classes Adgangskoden indeholder færre end %1 tegnklasser - + The password does not contain enough character classes Adgangskoden indeholder ikke nok tegnklasser - + The password contains more than %1 same characters consecutively Adgangskoden indeholder flere end %1 af de samme tegn i træk - + The password contains too many same characters consecutively Adgangskoden indeholder for mange af de samme tegn i træk - + The password contains more than %1 characters of the same class consecutively Adgangskoden indeholder flere end %1 tegn af den samme klasse i træk - + The password contains too many characters of the same class consecutively Adgangskoden indeholder for mange tegn af den samme klasse i træk - + The password contains monotonic sequence longer than %1 characters Adgangskoden indeholder monoton sekvens som er længere end %1 tegn - + The password contains too long of a monotonic character sequence Adgangskoden indeholder en monoton tegnsekvens som er for lang - + No password supplied Der er ikke angivet nogen adgangskode - + Cannot obtain random numbers from the RNG device Kan ikke få tilfældige tal fra RNG-enhed - + Password generation failed - required entropy too low for settings Generering af adgangskode mislykkedes - krævede entropi er for lav til indstillinger - + The password fails the dictionary check - %1 Adgangskoden bestod ikke ordbogstjekket - %1 - + The password fails the dictionary check Adgangskoden bestod ikke ordbogstjekket - + Unknown setting - %1 Ukendt indstilling - %1 - + Unknown setting Ukendt indstilling - + Bad integer value of setting - %1 Ugyldig heltalsværdi til indstilling - %1 - + Bad integer value Ugyldig heltalsværdi - + Setting %1 is not of integer type Indstillingen %1 er ikke en helttalsstype - + Setting is not of integer type Indstillingen er ikke en helttalsstype - + Setting %1 is not of string type Indstillingen %1 er ikke en strengtype - + Setting is not of string type Indstillingen er ikke en strengtype - + Opening the configuration file failed Åbningen af konfigurationsfilen mislykkedes - + The configuration file is malformed Konfigurationsfilen er forkert udformet - + Fatal failure Fatal fejl - + Unknown error Ukendt fejl @@ -1769,12 +1775,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.En EFI-systempartition er nødvendig for at starte %1.<br/><br/>En partition var konfigureret med monteringspunkt <strong>%2</strong>, men dens <strong>esp</strong>-flag var ikke sat.<br/>For at sætte flaget skal du gå tilbage og redigere partitionen.<br/><br/>Du kan fortsætte uden at konfigurere flaget, men dit system vil muligvis ikke kunne starte. - + Boot partition not encrypted Bootpartition ikke krypteret - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. En separat bootpartition blev opsat sammen med en krypteret rodpartition, men bootpartitionen er ikke krypteret.<br/><br/>Der er sikkerhedsmæssige bekymringer med denne slags opsætning, da vigtige systemfiler er gemt på en ikke-krypteret partition.<br/>Du kan fortsætte hvis du vil, men oplåsning af filsystemet sker senere under systemets opstart.<br/>For at kryptere bootpartitionen skal du gå tilbage og oprette den igen, vælge <strong>Kryptér</strong> i partitionsoprettelsesvinduet. @@ -1806,15 +1812,15 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Pladsholder - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Vælg venligst et udseende og fremtoning til KDE Plasma-skrivebordet. Du kan også springe trinnet over og konfigurere udseendet og fremtoningen når systemet er installeret. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + Vælg venligst et udseende og fremtoning til KDE Plasma-skrivebordet. Du kan også springe trinnet over og konfigurere udseendet og fremtoningen når systemet er installeret. Ved klik på et udseende og fremtoning giver det dig en live forhåndsvisning af det udseende og fremtoning. PlasmaLnfViewStep - + Look-and-Feel Udseende og fremtoning @@ -1822,14 +1828,14 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. ProcessResult - + There was no output from the command. Der var ikke nogen output fra kommandoen. - + Output: @@ -1838,52 +1844,52 @@ Output: - + External command crashed. Ekstern kommando holdt op med at virke. - + Command <i>%1</i> crashed. Kommandoen <i>%1</i> holdte op med at virke. - + External command failed to start. Ekstern kommando kunne ikke starte. - + Command <i>%1</i> failed to start. Kommandoen <i>%1</i> kunne ikke starte. - + Internal error when starting command. Intern fejl ved start af kommando. - + Bad parameters for process job call. Ugyldige parametre til kald af procesjob. - + External command failed to finish. Ekstern kommando blev ikke færdig. - + Command <i>%1</i> failed to finish in %2 seconds. Kommandoen <i>%1</i> blev ikke færdig på %2 sekunder. - + External command finished with errors. Ekstern kommando blev færdig med fejl. - + Command <i>%1</i> finished with exit code %2. Kommandoen <i>%1</i> blev færdig med afslutningskoden %2. @@ -1902,22 +1908,22 @@ Output: Standard - + unknown ukendt - + extended udvidet - + unformatted uformatteret - + swap swap @@ -2010,52 +2016,52 @@ Output: Indsamler systeminformation... - + has at least %1 GB available drive space har mindst %1 GB ledig plads på drevet - + There is not enough drive space. At least %1 GB is required. Der er ikke nok ledig plads på drevet. Mindst %1 GB er påkrævet. - + has at least %1 GB working memory har mindst %1 GB arbejdshukommelse - + The system does not have enough working memory. At least %1 GB is required. Systemet har ikke nok arbejdshukommelse. Mindst %1 GB er påkrævet. - + is plugged in to a power source er tilsluttet en strømkilde - + The system is not plugged in to a power source. Systemet er ikke tilsluttet en strømkilde. - + is connected to the Internet er forbundet til internettet - + The system is not connected to the Internet. Systemet er ikke forbundet til internettet. - + The installer is not running with administrator rights. Installationsprogrammet kører ikke med administratorrettigheder. - + The screen is too small to display the installer. Skærmen er for lille til at vise installationsprogrammet. @@ -2328,6 +2334,15 @@ Output: Skal-procesjob + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + %L1/%L2 + + SummaryPage @@ -2556,7 +2571,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>til %3</strong><br/><br/>Ophavsret 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Ophavsret 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Tak til: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg og <a href="https://www.transifex.com/calamares/calamares/">Calamares oversætterteam</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> udvikling er sponsoreret af <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 support diff --git a/lang/calamares_de.ts b/lang/calamares_de.ts index 60e2372ba..b7d2d4f25 100644 --- a/lang/calamares_de.ts +++ b/lang/calamares_de.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Installieren @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Operation %1 wird ausgeführt. - + Bad working directory path Fehlerhafter Arbeitsverzeichnis-Pfad - + Working directory %1 for python job %2 is not readable. Arbeitsverzeichnis %1 für Python-Job %2 ist nicht lesbar. - + Bad main script file Fehlerhaftes Hauptskript - + Main script file %1 for python job %2 is not readable. Hauptskript-Datei %1 für Python-Job %2 ist nicht lesbar. - + Boost.Python error in job "%1". Boost.Python-Fehler in Job "%1". @@ -165,40 +165,46 @@ + &Next &Weiter - + &Cancel &Abbrechen - + Cancel installation without changing the system. Installation abbrechen, ohne das System zu verändern. - + + &Install + + + + Cancel installation? Installation abbrechen? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Wollen Sie wirklich die aktuelle Installation abbrechen? Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. - + &Yes &Ja - + &No &Nein @@ -208,32 +214,32 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. &Schließen - + Continue with setup? Setup fortsetzen? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Das %1 Installationsprogramm wird Änderungen an Ihrer Festplatte vornehmen, um %2 zu installieren.<br/><strong>Diese Änderungen können nicht rückgängig gemacht werden.</strong> - + &Install now Jetzt &installieren - + Go &back Gehe &zurück - + &Done &Erledigt - + The installation is complete. Close the installer. Die Installation ist abgeschlossen. Schließe das Installationsprogramm. @@ -484,7 +490,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Jetzt &Neustarten - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Alles erledigt.</h1><br/>%1 wurde auf Ihrem Computer installiert.<br/>Sie können nun in Ihr neues System neustarten oder mit der %2 Live-Umgebung fortfahren. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Installation fehlgeschlagen</h1><br/>%1 wurde nicht auf deinem Computer installiert.<br/>Die Fehlermeldung lautet: %2. @@ -1183,12 +1189,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. LocaleViewStep - + Loading location data... Lade Standortdaten... - + Location Standort @@ -1227,242 +1233,242 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. PWQ - + Password is too short Das Passwort ist zu kurz - + Password is too long Das Passwort ist zu lang - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Eine EFI Systempartition wird benötigt, um %1 zu starten.<br/><br/>Eine Partition mit dem Einhängepunkt <strong>%2</strong> wurd eingerichtet, jedoch wurde dort keine <strong>esp</strong> Markierung gesetzt.<br/>Um diese Markierung zu setzen, gehen Sie zurück und bearbeiten Sie die Partition.<br/><br/>Sie können ohne diese Markierung fortfahren, aber ihr System wird unter Umständen nicht starten können. - + Boot partition not encrypted Bootpartition nicht verschlüsselt - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Eine separate Bootpartition wurde zusammen mit einer verschlüsselten Rootpartition erstellt, die Bootpartition ist aber unverschlüsselt.<br/><br/> Dies ist sicherheitstechnisch nicht optimal, da wichtige Systemdateien auf der unverschlüsselten Bootpartition gespeichert werden.<br/>Wenn Sie wollen, können Sie fortfahren, aber das Entschlüsseln des Dateisystems wird erst später während des Systemstarts erfolgen.<br/>Um die Bootpartition zu verschlüsseln, gehen Sie zurück und erstellen Sie diese neu, indem Sie bei der Partitionierung <strong>Verschlüsseln</strong> wählen. @@ -1806,15 +1812,15 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Platzhalter - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Ungültige Parameter für Prozessaufruf. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: Standard - + unknown unbekannt - + extended erweitert - + unformatted unformatiert - + swap Swap @@ -2007,52 +2013,52 @@ Output: Sammle Systeminformationen... - + has at least %1 GB available drive space mindestens %1 GB freien Festplattenplatz hat - + There is not enough drive space. At least %1 GB is required. Der Speicherplatz auf der Festplatte ist unzureichend. Es wird mindestens %1 GB benötigt. - + has at least %1 GB working memory hat mindestens %1 GB Arbeitsspeicher - + The system does not have enough working memory. At least %1 GB is required. Das System hat nicht genug Arbeitsspeicher. Es wird mindestens %1GB benötigt. - + is plugged in to a power source ist an eine Stromquelle angeschlossen - + The system is not plugged in to a power source. Das System ist an keine Stromquelle angeschlossen. - + is connected to the Internet ist mit dem Internet verbunden - + The system is not connected to the Internet. Das System ist nicht mit dem Internet verbunden. - + The installer is not running with administrator rights. Das Installationsprogramm wird nicht mit Administratorrechten ausgeführt. - + The screen is too small to display the installer. Der Bildschirm ist zu klein, um das Installationsprogramm anzuzeigen. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support Unterstützung für %1 diff --git a/lang/calamares_el.ts b/lang/calamares_el.ts index 5c081c20e..34861ad2f 100644 --- a/lang/calamares_el.ts +++ b/lang/calamares_el.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Εγκατάσταση @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Εκτελείται η λειτουργία %1. - + Bad working directory path Λανθασμένη διαδρομή καταλόγου εργασίας - + Working directory %1 for python job %2 is not readable. Ο ενεργός κατάλογος %1 για την εργασία python %2 δεν είναι δυνατόν να διαβαστεί. - + Bad main script file Λανθασμένο κύριο αρχείο δέσμης ενεργειών - + Main script file %1 for python job %2 is not readable. Η κύρια δέσμη ενεργειών %1 για την εργασία python %2 δεν είναι δυνατόν να διαβαστεί. - + Boost.Python error in job "%1". Σφάλμα Boost.Python στην εργασία "%1". @@ -165,77 +165,83 @@ + &Next &Επόμενο - + &Cancel &Ακύρωση - + Cancel installation without changing the system. + Ακύρωση της εγκατάστασης χωρίς αλλαγές στο σύστημα. + + + + &Install - + Cancel installation? Ακύρωση της εγκατάστασης; - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Θέλετε πραγματικά να ακυρώσετε τη διαδικασία εγκατάστασης; Το πρόγραμμα εγκατάστασης θα τερματιστεί και όλες οι αλλαγές θα χαθούν. - + &Yes &Ναι - + &No - + &Όχι &Close - + &Κλείσιμο - + Continue with setup? Συνέχεια με την εγκατάσταση; - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Το πρόγραμμα εγκατάστασης %1 θα κάνει αλλαγές στον δίσκο για να εγκαταστήσετε το %2.<br/><strong>Δεν θα είστε σε θέση να αναιρέσετε τις αλλαγές.</strong> - + &Install now Ε&γκατάσταση τώρα - + Go &back Μετάβαση πί&σω - + &Done - + The installation is complete. Close the installer. - + Η εγκτάσταση ολοκληρώθηκε. Κλείστε το πρόγραμμα εγκατάστασης. @@ -484,7 +490,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ The installer will quit and all changes will be lost. Ε&πανεκκίνηση τώρα - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Η εγκατάσταση ολοκληρώθηκε.</h1><br/>Το %1 εγκαταστήθηκε στον υπολογιστή.<br/>Τώρα, μπορείτε να επανεκκινήσετε τον υπολογιστή σας ή να συνεχίσετε να δοκιμάζετε το %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... Γίνεται φόρτωση των δεδομένων τοποθεσίας... - + Location Τοποθεσία @@ -1227,242 +1233,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Λανθασμένοι παράμετροι για την κλήση διεργασίας. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: Προκαθορισμένο - + unknown άγνωστη - + extended εκτεταμένη - + unformatted μη μορφοποιημένη - + swap @@ -2007,52 +2013,52 @@ Output: Συλλογή πληροφοριών συστήματος... - + has at least %1 GB available drive space έχει τουλάχιστον %1 GB διαθέσιμου χώρου στον δίσκο - + There is not enough drive space. At least %1 GB is required. Δεν υπάρχει αρκετός χώρος στον δίσκο. Απαιτείται τουλάχιστον %1 GB. - + has at least %1 GB working memory έχει τουλάχιστον %1 GB μνημης - + The system does not have enough working memory. At least %1 GB is required. Το σύστημα δεν έχει αρκετή μνήμη. Απαιτείται τουλάχιστον %1 GB. - + is plugged in to a power source είναι συνδεδεμένος σε πηγή ρεύματος - + The system is not plugged in to a power source. Το σύστημα δεν είναι συνδεδεμένο σε πηγή ρεύματος. - + is connected to the Internet είναι συνδεδεμένος στο διαδίκτυο - + The system is not connected to the Internet. Το σύστημα δεν είναι συνδεδεμένο στο διαδίκτυο. - + The installer is not running with administrator rights. Το πρόγραμμα εγκατάστασης δεν εκτελείται με δικαιώματα διαχειριστή. - + The screen is too small to display the installer. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support Υποστήριξη %1 diff --git a/lang/calamares_en.ts b/lang/calamares_en.ts index 76a64fbe2..efe61edda 100644 --- a/lang/calamares_en.ts +++ b/lang/calamares_en.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Install @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Running %1 operation. - + Bad working directory path Bad working directory path - + Working directory %1 for python job %2 is not readable. Working directory %1 for python job %2 is not readable. - + Bad main script file Bad main script file - + Main script file %1 for python job %2 is not readable. Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". Boost.Python error in job "%1". @@ -165,40 +165,46 @@ + &Next &Next - + &Cancel &Cancel - + Cancel installation without changing the system. Cancel installation without changing the system. - + + &Install + &Install + + + Cancel installation? Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes &Yes - + &No &No @@ -208,32 +214,32 @@ The installer will quit and all changes will be lost. &Close - + Continue with setup? Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Install now - + Go &back Go &back - + &Done &Done - + The installation is complete. Close the installer. The installation is complete. Close the installer. @@ -484,7 +490,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job Contextual Processes Job @@ -941,12 +947,12 @@ The installer will quit and all changes will be lost. &Restart now - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... Loading location data... - + Location Location @@ -1227,242 +1233,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short Password is too short - + Password is too long Password is too long - + Password is too weak Password is too weak - + Memory allocation error when setting '%1' Memory allocation error when setting '%1' - + Memory allocation error Memory allocation error - + The password is the same as the old one The password is the same as the old one - + The password is a palindrome The password is a palindrome - + The password differs with case changes only The password differs with case changes only - + The password is too similar to the old one The password is too similar to the old one - + The password contains the user name in some form The password contains the user name in some form - + The password contains words from the real name of the user in some form The password contains words from the real name of the user in some form - + The password contains forbidden words in some form The password contains forbidden words in some form - + The password contains less than %1 digits The password contains less than %1 digits - + The password contains too few digits The password contains too few digits - + The password contains less than %1 uppercase letters The password contains less than %1 uppercase letters - + The password contains too few uppercase letters The password contains too few uppercase letters - + The password contains less than %1 lowercase letters The password contains less than %1 lowercase letters - + The password contains too few lowercase letters The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters The password is shorter than %1 characters - + The password is too short The password is too short - + The password is just rotated old one The password is just rotated old one - + The password contains less than %1 character classes The password contains less than %1 character classes - + The password does not contain enough character classes The password does not contain enough character classes - + The password contains more than %1 same characters consecutively The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence The password contains too long of a monotonic character sequence - + No password supplied No password supplied - + Cannot obtain random numbers from the RNG device Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 The password fails the dictionary check - %1 - + The password fails the dictionary check The password fails the dictionary check - + Unknown setting - %1 Unknown setting - %1 - + Unknown setting Unknown setting - + Bad integer value of setting - %1 Bad integer value of setting - %1 - + Bad integer value Bad integer value - + Setting %1 is not of integer type Setting %1 is not of integer type - + Setting is not of integer type Setting is not of integer type - + Setting %1 is not of string type Setting %1 is not of string type - + Setting is not of string type Setting is not of string type - + Opening the configuration file failed Opening the configuration file failed - + The configuration file is malformed The configuration file is malformed - + Fatal failure Fatal failure - + Unknown error Unknown error @@ -1769,12 +1775,12 @@ The installer will quit and all changes will be lost. An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ The installer will quit and all changes will be lost. Placeholder - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel Look-and-Feel @@ -1822,14 +1828,14 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. There was no output from the command. - + Output: @@ -1838,52 +1844,52 @@ Output: - + External command crashed. External command crashed. - + Command <i>%1</i> crashed. Command <i>%1</i> crashed. - + External command failed to start. External command failed to start. - + Command <i>%1</i> failed to start. Command <i>%1</i> failed to start. - + Internal error when starting command. Internal error when starting command. - + Bad parameters for process job call. Bad parameters for process job call. - + External command failed to finish. External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. External command finished with errors. - + Command <i>%1</i> finished with exit code %2. Command <i>%1</i> finished with exit code %2. @@ -1902,22 +1908,22 @@ Output: Default - + unknown unknown - + extended extended - + unformatted unformatted - + swap swap @@ -2010,52 +2016,52 @@ Output: Gathering system information... - + has at least %1 GB available drive space has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source is plugged in to a power source - + The system is not plugged in to a power source. The system is not plugged in to a power source. - + is connected to the Internet is connected to the Internet - + The system is not connected to the Internet. The system is not connected to the Internet. - + The installer is not running with administrator rights. The installer is not running with administrator rights. - + The screen is too small to display the installer. The screen is too small to display the installer. @@ -2328,6 +2334,15 @@ Output: Shell Processes Job + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + %L1 / %L2 + + SummaryPage @@ -2556,7 +2571,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 support diff --git a/lang/calamares_en_GB.ts b/lang/calamares_en_GB.ts index cec3ba2f2..acd3f03cc 100644 --- a/lang/calamares_en_GB.ts +++ b/lang/calamares_en_GB.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Install @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Bad working directory path - + Working directory %1 for python job %2 is not readable. Working directory %1 for python job %2 is not readable. - + Bad main script file Bad main script file - + Main script file %1 for python job %2 is not readable. Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". Boost.Python error in job "%1". @@ -165,40 +165,46 @@ + &Next &Next - + &Cancel &Cancel - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No @@ -208,32 +214,32 @@ The installer will quit and all changes will be lost. - + Continue with setup? Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Install now - + Go &back Go &back - + &Done - + The installation is complete. Close the installer. @@ -484,7 +490,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ The installer will quit and all changes will be lost. &Restart now - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... Loading location data... - + Location Location @@ -1227,242 +1233,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: Default - + unknown - + extended - + unformatted - + swap @@ -2007,52 +2013,52 @@ Output: Gathering system information... - + has at least %1 GB available drive space has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support %1 support diff --git a/lang/calamares_es.ts b/lang/calamares_es.ts index 0dccb2c65..da5c66495 100644 --- a/lang/calamares_es.ts +++ b/lang/calamares_es.ts @@ -98,7 +98,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::ExecutionViewStep - + Install Instalar @@ -127,32 +127,32 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::PythonJob - + Running %1 operation. Ejecutando %1 operación. - + Bad working directory path Error en la ruta del directorio de trabajo - + Working directory %1 for python job %2 is not readable. El directorio de trabajo %1 para el script de python %2 no se puede leer. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. El script principal %1 del proceso python %2 no es accesible. - + Boost.Python error in job "%1". Error Boost.Python en el proceso "%1". @@ -166,40 +166,46 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar + &Next &Siguiente - + &Cancel &Cancelar - + Cancel installation without changing the system. Cancelar instalación sin cambiar el sistema. - + + &Install + + + + Cancel installation? ¿Cancelar la instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. ¿Realmente quiere cancelar el proceso de instalación? Saldrá del instalador y se perderán todos los cambios. - + &Yes &Sí - + &No &No @@ -209,32 +215,32 @@ Saldrá del instalador y se perderán todos los cambios. &Cerrar - + Continue with setup? ¿Continuar con la configuración? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> El instalador %1 va a realizar cambios en su disco para instalar %2.<br/><strong>No podrá deshacer estos cambios.</strong> - + &Install now &Instalar ahora - + Go &back Regresar - + &Done &Hecho - + The installation is complete. Close the installer. La instalación se ha completado. Cierre el instalador. @@ -485,7 +491,7 @@ Saldrá del instalador y se perderán todos los cambios. ContextualProcessJob - + Contextual Processes Job Tarea Contextual Processes @@ -942,12 +948,12 @@ Saldrá del instalador y se perderán todos los cambios. &Reiniciar ahora - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Listo.</h1><br/>%1 ha sido instalado en su equipo.<br/>Ahora puede reiniciar hacia su nuevo sistema, o continuar utilizando %2 Live. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>La instalación falló</h1><br/>%1 no se ha instalado en su equipo.<br/>El mensaje de error fue: %2. @@ -1184,12 +1190,12 @@ Saldrá del instalador y se perderán todos los cambios. LocaleViewStep - + Loading location data... Detectando ubicación... - + Location Ubicación @@ -1228,242 +1234,242 @@ Saldrá del instalador y se perderán todos los cambios. PWQ - + Password is too short La contraseña es demasiado corta - + Password is too long La contraseña es demasiado larga - + Password is too weak La contraseña es demasiado débil - + Memory allocation error when setting '%1' Error de asignación de memoria al establecer '%1' - + Memory allocation error Error de asignación de memoria - + The password is the same as the old one La contraseña es la misma que la antigua - + The password is a palindrome La contraseña es un palíndromo - + The password differs with case changes only La contraseña difiere sólo en cambios de mayúsculas/minúsculas - + The password is too similar to the old one La contraseña es demasiado similar a la antigua - + The password contains the user name in some form La contraseña contiene el nombre de usuario de alguna forma - + The password contains words from the real name of the user in some form La contraseña contiene palabras procedentes del nombre real del usuario de alguna forma - + The password contains forbidden words in some form La contraseña contiene palabras prohibidas de alguna forma - + The password contains less than %1 digits La contraseña contiene menos de %1 dígitos - + The password contains too few digits La contraseña contiene demasiado pocos dígitos - + The password contains less than %1 uppercase letters La contraseña contiene menos de %1 letras mayúsculas - + The password contains too few uppercase letters La contraseña contiene demasiado pocas letras mayúsculas - + The password contains less than %1 lowercase letters La contraseña contiene menos de %1 letras mayúsculas - + The password contains too few lowercase letters La contraseña contiene demasiado pocas letras minúsculas - + The password contains less than %1 non-alphanumeric characters La contraseña contiene menos de %1 caracteres alfanuméricos - + The password contains too few non-alphanumeric characters La contraseña contiene demasiado pocos caracteres alfanuméricos - + The password is shorter than %1 characters La contraseña tiene menos de %1 caracteres - + The password is too short La contraseña es demasiado corta - + The password is just rotated old one La contraseña sólo es la antigua invertida - + The password contains less than %1 character classes La contraseña contiene menos de %1 clases de caracteres - + The password does not contain enough character classes La contraseña no contiene suficientes clases de caracteres - + The password contains more than %1 same characters consecutively La contraseña contiene más de %1 caracteres iguales consecutivamente - + The password contains too many same characters consecutively La contraseña contiene demasiados caracteres iguales consecutivamente - + The password contains more than %1 characters of the same class consecutively La contraseña contiene más de %1 caracteres de la misma clase consecutivamente - + The password contains too many characters of the same class consecutively La contraseña contiene demasiados caracteres de la misma clase consecutivamente - + The password contains monotonic sequence longer than %1 characters La contraseña contiene una secuencia monótona de más de %1 caracteres - + The password contains too long of a monotonic character sequence La contraseña contiene una secuencia monótona de caracteres demasiado larga - + No password supplied No se proporcionó contraseña - + Cannot obtain random numbers from the RNG device No se puede obtener números aleatorios del dispositivo RNG (generador de números aleatorios) - + Password generation failed - required entropy too low for settings La generación de contraseña falló - la entropía requerida es demasiado baja para la configuración - + The password fails the dictionary check - %1 La contraseña no paso el test de diccionario - %1 - + The password fails the dictionary check La contraseña no pasó el test de diccionario - + Unknown setting - %1 Configuración desconocida - %1 - + Unknown setting Configuración desconocida - + Bad integer value of setting - %1 Valor entero de la configuración erróneo - %1 - + Bad integer value Valor entero erróneo - + Setting %1 is not of integer type La configuración %1 no es de tipo entero - + Setting is not of integer type La configuración no es de tipo entero - + Setting %1 is not of string type La configuración %1 no es de tipo cadena de caracteres - + Setting is not of string type La configuración no es de tipo cadena de caracteres - + Opening the configuration file failed No se pudo abrir el fichero de configuración - + The configuration file is malformed El fichero de configuración está mal formado - + Fatal failure Fallo fatal - + Unknown error Error desconocido @@ -1770,12 +1776,12 @@ Saldrá del instalador y se perderán todos los cambios. Una partición EFI del sistema es necesaria para empezar %1.<br/><br/>Una partición EFI fue configurada para ser montada en <strong>%2</strong> pero su argumento <strong>esp</strong> no fue seleccionado.<br/>Para activar el argumento, vuelva atrás y edite la partición.<br/><br/>Puede continuar sin configurar el argumento pero su sistema puede fallar al arrancar. - + Boot partition not encrypted Partición de arranque no cifrada - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Se estableció una partición de arranque aparte junto con una partición raíz cifrada, pero la partición de arranque no está cifrada.<br/><br/>Hay consideraciones de seguridad con esta clase de instalación, porque los ficheros de sistema importantes se mantienen en una partición no cifrada.<br/>Puede continuar si lo desea, pero el desbloqueo del sistema de ficheros ocurrirá más tarde durante el arranque del sistema.<br/>Para cifrar la partición de arranque, retroceda y vuelva a crearla, seleccionando <strong>Cifrar</strong> en la ventana de creación de la partición. @@ -1807,15 +1813,15 @@ Saldrá del instalador y se perderán todos los cambios. Indicador de posición - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Por favor, escoja una apariencia para el escritorio KDE Plasma. También puede omitir este paso y configurar la apariencia una vez el sistema esté instalado. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + PlasmaLnfViewStep - + Look-and-Feel Apariencia @@ -1823,14 +1829,14 @@ Saldrá del instalador y se perderán todos los cambios. ProcessResult - + There was no output from the command. No hubo salida del comando. - + Output: @@ -1839,52 +1845,52 @@ Salida: - + External command crashed. El comando externo falló. - + Command <i>%1</i> crashed. El comando <i>%1</i> falló. - + External command failed to start. El comando externo no se pudo iniciar. - + Command <i>%1</i> failed to start. El comando <i>%1</i> no se pudo iniciar. - + Internal error when starting command. Error interno al iniciar el comando. - + Bad parameters for process job call. Parámetros erróneos para la llamada de la tarea del procreso. - + External command failed to finish. El comando externo no se pudo finalizar. - + Command <i>%1</i> failed to finish in %2 seconds. El comando <i>%1</i> no se pudo finalizar en %2 segundos. - + External command finished with errors. El comando externo finalizó con errores. - + Command <i>%1</i> finished with exit code %2. El comando <i>%1</i> finalizó con un código de salida %2. @@ -1903,22 +1909,22 @@ Salida: Por defecto - + unknown desconocido - + extended extendido - + unformatted sin formato - + swap swap @@ -2011,52 +2017,52 @@ Salida: Obteniendo información del sistema... - + has at least %1 GB available drive space tiene al menos %1 GB espacio libre en el disco - + There is not enough drive space. At least %1 GB is required. No hay suficiente espació en el disco duro. Se requiere al menos %1 GB libre. - + has at least %1 GB working memory tiene al menos %1 GB de memoria. - + The system does not have enough working memory. At least %1 GB is required. El sistema no tiene suficiente memoria. Se requiere al menos %1 GB - + is plugged in to a power source esta conectado a una fuente de alimentación - + The system is not plugged in to a power source. El sistema no esta conectado a una fuente de alimentación. - + is connected to the Internet esta conectado a Internet - + The system is not connected to the Internet. El sistema no esta conectado a Internet - + The installer is not running with administrator rights. El instalador no esta ejecutándose con permisos de administrador. - + The screen is too small to display the installer. La pantalla es demasiado pequeña para mostrar el instalador. @@ -2329,6 +2335,15 @@ Salida: Tarea de procesos del interprete de comandos + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2557,7 +2572,7 @@ Salida: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimientos: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg y al <a href="https://www.transifex.com/calamares/calamares/">equipo de traductores de Calamares</a>.<br/><br/> El desarrollo <a href="https://calamares.io/">Calamares</a> está patrocinado por <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberando Software. - + %1 support %1 ayuda diff --git a/lang/calamares_es_ES.ts b/lang/calamares_es_ES.ts index 442d01d9b..743f38d7e 100644 --- a/lang/calamares_es_ES.ts +++ b/lang/calamares_es_ES.ts @@ -4,7 +4,7 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + El ambiente de arranque de este sistema. Sistemas x86 más viejos solo pueden soportar BIOS. Sistemas modernos usualmente usan EFI, pero también puede aparecer como BIOS si su sistema está en modo de compatibilidad. @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Instalar @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Ruta de trabajo errónea - + Working directory %1 for python job %2 is not readable. No se puede leer la ruta de trabajo %1 de la tarea %2 de python. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. No se puede leer el script principal %1 de la tarea %2 de python. - + Boost.Python error in job "%1". Error de Boost.Python en la tarea "%1". @@ -165,40 +165,46 @@ + &Next &Siguiente - + &Cancel &Cancelar - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? ¿Cancelar instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. ¿Estás seguro de que quieres cancelar la instalación en curso? El instalador se cerrará y se perderán todos los cambios. - + &Yes - + &No @@ -208,32 +214,32 @@ El instalador se cerrará y se perderán todos los cambios. - + Continue with setup? ¿Continuar con la configuración? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Instalar ahora - + Go &back Volver atrás. - + &Done - + The installation is complete. Close the installer. @@ -484,7 +490,7 @@ El instalador se cerrará y se perderán todos los cambios. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ El instalador se cerrará y se perderán todos los cambios. &Reiniciar ahora - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. Hecho. %1 ha sido instalado en tu ordenador. Puedes reiniciar el nuevo sistema, o continuar en el modo %2 Live. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ El instalador se cerrará y se perderán todos los cambios. LocaleViewStep - + Loading location data... Cargando datos de ubicación... - + Location Ubicación @@ -1227,242 +1233,242 @@ El instalador se cerrará y se perderán todos los cambios. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ El instalador se cerrará y se perderán todos los cambios. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ El instalador se cerrará y se perderán todos los cambios. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ El instalador se cerrará y se perderán todos los cambios. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Parámetros erróneos en la llamada al proceso. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: Por defecto - + unknown - + extended - + unformatted - + swap @@ -2007,52 +2013,52 @@ Output: Recogiendo información sobre el sistema... - + has at least %1 GB available drive space Tenga disponibles por lo menos %1 GB libres - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory Tenga disponibles por lo menos %1 GB de memoria - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source está enchufado a la corriente - + The system is not plugged in to a power source. - + is connected to the Internet esté conectado a internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support Soporte %1 diff --git a/lang/calamares_es_MX.ts b/lang/calamares_es_MX.ts index 802c58f36..d84b10496 100644 --- a/lang/calamares_es_MX.ts +++ b/lang/calamares_es_MX.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Instalar @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Ejecutando operación %1. - + Bad working directory path Ruta a la carpeta de trabajo errónea - + Working directory %1 for python job %2 is not readable. La carpeta de trabajo %1 para la tarea de python %2 no se pudo leer. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. El script principal %1 del proceso python %2 no es accesible. - + Boost.Python error in job "%1". Error Boost.Python en el proceso "%1". @@ -165,40 +165,46 @@ + &Next &Siguiente - + &Cancel &Cancelar - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? Cancelar la instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Realmente desea cancelar el proceso de instalación actual? El instalador terminará y se perderán todos los cambios. - + &Yes - + &No @@ -208,32 +214,32 @@ El instalador terminará y se perderán todos los cambios. - + Continue with setup? Continuar con la instalación? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> El instalador %1 va a realizar cambios en su disco para instalar %2.<br/><strong>No podrá deshacer estos cambios.</strong> - + &Install now &Instalar ahora - + Go &back &Regresar - + &Done - + The installation is complete. Close the installer. @@ -487,7 +493,7 @@ El instalador terminará y se perderán todos los cambios. ContextualProcessJob - + Contextual Processes Job @@ -944,12 +950,12 @@ El instalador terminará y se perderán todos los cambios. &Reiniciar ahora - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Listo.</h1><br/>%1 ha sido instalado en su computadora.<br/>Ahora puede reiniciar su nuevo sistema, o continuar usando el entorno Live %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1186,12 +1192,12 @@ El instalador terminará y se perderán todos los cambios. LocaleViewStep - + Loading location data... Cargando datos de ubicación... - + Location Ubicación @@ -1230,242 +1236,242 @@ El instalador terminará y se perderán todos los cambios. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1772,12 +1778,12 @@ El instalador terminará y se perderán todos los cambios. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1809,15 +1815,15 @@ El instalador terminará y se perderán todos los cambios. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1825,65 +1831,65 @@ El instalador terminará y se perderán todos los cambios. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Parámetros erróneos en la llamada al proceso. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1902,22 +1908,22 @@ Output: Por defecto - + unknown - + extended - + unformatted - + swap @@ -2011,52 +2017,52 @@ Output: Obteniendo información del sistema... - + has at least %1 GB available drive space tiene al menos %1 GB de espacio en disco disponible - + There is not enough drive space. At least %1 GB is required. No hay suficiente espacio disponible en disco. Se requiere al menos %1 GB. - + has at least %1 GB working memory tiene al menos %1 GB de memoria para trabajar - + The system does not have enough working memory. At least %1 GB is required. No hay suficiente espacio disponible en disco. Se requiere al menos %1 GB. - + is plugged in to a power source está conectado a una fuente de energía - + The system is not plugged in to a power source. El sistema no está conectado a una fuente de energía. - + is connected to the Internet está conectado a Internet - + The system is not connected to the Internet. El sistema no está conectado a Internet. - + The installer is not running with administrator rights. El instalador no se está ejecutando con privilegios de administrador. - + The screen is too small to display the installer. @@ -2329,6 +2335,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2557,7 +2572,7 @@ Output: - + %1 support %1 Soporte diff --git a/lang/calamares_es_PR.ts b/lang/calamares_es_PR.ts index 43165c76d..4f7c55ecb 100644 --- a/lang/calamares_es_PR.ts +++ b/lang/calamares_es_PR.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Instalar @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path La ruta del directorio de trabajo es incorrecta - + Working directory %1 for python job %2 is not readable. El directorio de trabajo %1 para el script de python %2 no se puede leer. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. El script principal %1 del proceso python %2 no es accesible. - + Boost.Python error in job "%1". Error Boost.Python en el proceso "%1". @@ -165,39 +165,45 @@ + &Next &Próximo - + &Cancel - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No @@ -207,32 +213,32 @@ The installer will quit and all changes will be lost. - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. @@ -483,7 +489,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -940,12 +946,12 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1182,12 +1188,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... - + Location Ubicación @@ -1226,242 +1232,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1768,12 +1774,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1805,15 +1811,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1821,65 +1827,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Parámetros erróneos para el trabajo en proceso. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1898,22 +1904,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2006,52 +2012,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2324,6 +2330,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2552,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_et.ts b/lang/calamares_et.ts index 0afe5cf04..28104ecc5 100644 --- a/lang/calamares_et.ts +++ b/lang/calamares_et.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -165,39 +165,45 @@ + &Next - + &Cancel - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No @@ -207,32 +213,32 @@ The installer will quit and all changes will be lost. - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. @@ -483,7 +489,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -940,12 +946,12 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1182,12 +1188,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... - + Location Asukoht @@ -1226,242 +1232,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1768,12 +1774,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1805,15 +1811,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1821,65 +1827,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1898,22 +1904,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2006,52 +2012,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2324,6 +2330,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2552,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_eu.ts b/lang/calamares_eu.ts index 545b1cb4c..17650736e 100644 --- a/lang/calamares_eu.ts +++ b/lang/calamares_eu.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Instalatu @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. %1 eragiketa burutzen. - + Bad working directory path Direktorio ibilbide ezegokia - + Working directory %1 for python job %2 is not readable. - + Bad main script file Script fitxategi nagusi okerra - + Main script file %1 for python job %2 is not readable. %1 script fitxategi nagusia ezin da irakurri python %2 lanerako - + Boost.Python error in job "%1". @@ -165,39 +165,45 @@ + &Next &Hurrengoa - + &Cancel &Utzi - + Cancel installation without changing the system. Instalazioa bertan behera utsi da sisteman aldaketarik gabe. - + + &Install + + + + Cancel installation? Bertan behera utzi instalazioa? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes &Bai - + &No &Ez @@ -207,32 +213,32 @@ The installer will quit and all changes will be lost. &Itxi - + Continue with setup? Ezarpenarekin jarraitu? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Instalatu orain - + Go &back &Atzera - + &Done E&ginda - + The installation is complete. Close the installer. Instalazioa burutu da. Itxi instalatzailea. @@ -483,7 +489,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -940,12 +946,12 @@ The installer will quit and all changes will be lost. &Berrabiarazi orain - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1182,12 +1188,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... Kokapen datuak kargatzen... - + Location Kokapena @@ -1226,242 +1232,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1768,12 +1774,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1805,15 +1811,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1821,65 +1827,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1898,22 +1904,22 @@ Output: Lehenetsia - + unknown - + extended - + unformatted - + swap @@ -2006,52 +2012,52 @@ Output: Sistemaren informazioa eskuratzen... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. Sistema ez dago indar iturri batetara konektatuta. - + is connected to the Internet Internetera konektatuta dago - + The system is not connected to the Internet. Sistema ez dago Internetera konektatuta. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2324,6 +2330,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2552,7 +2567,7 @@ Output: - + %1 support %1 euskarria diff --git a/lang/calamares_fa.ts b/lang/calamares_fa.ts index 93cdf9659..611566465 100644 --- a/lang/calamares_fa.ts +++ b/lang/calamares_fa.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -165,39 +165,45 @@ + &Next - + &Cancel - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No @@ -207,32 +213,32 @@ The installer will quit and all changes will be lost. - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. @@ -483,7 +489,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -940,12 +946,12 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1182,12 +1188,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... - + Location @@ -1226,242 +1232,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1768,12 +1774,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1805,15 +1811,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1821,65 +1827,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1898,22 +1904,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2006,52 +2012,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2324,6 +2330,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2552,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_fi_FI.ts b/lang/calamares_fi_FI.ts index 7dba1b44b..1bed79cd6 100644 --- a/lang/calamares_fi_FI.ts +++ b/lang/calamares_fi_FI.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Asenna @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Suoritetaan %1 toimenpidettä. - + Bad working directory path Epäkelpo työskentelyhakemiston polku - + Working directory %1 for python job %2 is not readable. Työkansio %1 pythonin työlle %2 ei ole luettavissa. - + Bad main script file Huono pää-skripti tiedosto - + Main script file %1 for python job %2 is not readable. Pääskriptitiedosto %1 pythonin työlle %2 ei ole luettavissa. - + Boost.Python error in job "%1". Boost.Python virhe työlle "%1". @@ -165,40 +165,46 @@ + &Next &Seuraava - + &Cancel &Peruuta - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? Peruuta asennus? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Oletko varma että haluat peruuttaa käynnissä olevan asennusprosessin? Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - + &Yes &Kyllä - + &No &Ei @@ -208,32 +214,32 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. &Sulje - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Asenna nyt - + Go &back - + &Done &Valmis - + The installation is complete. Close the installer. Asennus on valmis. Sulje asennusohjelma. @@ -484,7 +490,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. &Käynnistä uudelleen - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Kaikki tehty.</h1><br/>%1 on asennettu tietokoneellesi.<br/>Voit joko uudelleenkäynnistää uuteen kokoonpanoosi, tai voit jatkaa %2 live-ympäristön käyttöä. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. LocaleViewStep - + Loading location data... Ladataan sijainnin tietoja... - + Location Sijainti @@ -1227,242 +1233,242 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Huonot parametrit prosessin kutsuun. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: Oletus - + unknown - + extended - + unformatted - + swap @@ -2007,52 +2013,52 @@ Output: Kerätään järjestelmän tietoja... - + has at least %1 GB available drive space sisältää vähintään %1 GB käytettävissä olevaa asematilaa - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory sisältää vähintään %1 GB muistia - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source on yhdistetty virtalähteeseen - + The system is not plugged in to a power source. - + is connected to the Internet on yhdistetty internetiin - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support diff --git a/lang/calamares_fr.ts b/lang/calamares_fr.ts index 70fca7610..43d17ac52 100644 --- a/lang/calamares_fr.ts +++ b/lang/calamares_fr.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Installer @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Exécution de l'opération %1. - + Bad working directory path Chemin du répertoire de travail invalide - + Working directory %1 for python job %2 is not readable. Le répertoire de travail %1 pour le job python %2 n'est pas accessible en lecture. - + Bad main script file Fichier de script principal invalide - + Main script file %1 for python job %2 is not readable. Le fichier de script principal %1 pour la tâche python %2 n'est pas accessible en lecture. - + Boost.Python error in job "%1". Erreur Boost.Python pour le job "%1". @@ -165,40 +165,46 @@ + &Next &Suivant - + &Cancel &Annuler - + Cancel installation without changing the system. Annuler l'installation sans modifier votre système. - + + &Install + + + + Cancel installation? Abandonner l'installation ? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Voulez-vous réellement abandonner le processus d'installation ? L'installateur se fermera et les changements seront perdus. - + &Yes &Oui - + &No &Non @@ -208,32 +214,32 @@ L'installateur se fermera et les changements seront perdus. &Fermer - + Continue with setup? Poursuivre la configuration ? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> L'installateur %1 est sur le point de procéder aux changements sur le disque afin d'installer %2.<br/> <strong>Vous ne pourrez pas annulez ces changements.<strong> - + &Install now &Installer maintenant - + Go &back &Retour - + &Done &Terminé - + The installation is complete. Close the installer. L'installation est terminée. Fermer l'installateur. @@ -484,7 +490,7 @@ L'installateur se fermera et les changements seront perdus. ContextualProcessJob - + Contextual Processes Job Tâche des processus contextuels @@ -941,12 +947,12 @@ L'installateur se fermera et les changements seront perdus. &Redémarrer maintenant - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Installation terminée.</h1><br/>%1 a été installé sur votre ordinateur.<br/>Vous pouvez redémarrer sur le nouveau système, ou continuer d'utiliser l'environnement actuel %2 . - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Installation échouée</h1><br/>%1 n'a pas été installée sur cet ordinateur.<br/>Le message d'erreur était : %2. @@ -1183,12 +1189,12 @@ L'installateur se fermera et les changements seront perdus. LocaleViewStep - + Loading location data... Chargement des données de localisation... - + Location Localisation @@ -1227,242 +1233,242 @@ L'installateur se fermera et les changements seront perdus. PWQ - + Password is too short Le mot de passe est trop court - + Password is too long Le mot de passe est trop long - + Password is too weak Le mot de passe est trop faible - + Memory allocation error when setting '%1' Erreur d'allocation mémoire lors du paramétrage de '%1' - + Memory allocation error Erreur d'allocation mémoire - + The password is the same as the old one Le mot de passe est identique au précédent - + The password is a palindrome Le mot de passe est un palindrome - + The password differs with case changes only Le mot de passe ne diffère que sur la casse - + The password is too similar to the old one Le mot de passe est trop similaire à l'ancien - + The password contains the user name in some form Le mot de passe contient le nom d'utilisateur sous une certaine forme - + The password contains words from the real name of the user in some form Le mot de passe contient des mots provenant du nom d'utilisateur sous une certaine forme - + The password contains forbidden words in some form Le mot de passe contient des mots interdits sous une certaine forme - + The password contains less than %1 digits Le mot de passe contient moins de %1 chiffres - + The password contains too few digits Le mot de passe ne contient pas assez de chiffres - + The password contains less than %1 uppercase letters Le mot de passe contient moins de %1 lettres majuscules - + The password contains too few uppercase letters Le mot de passe ne contient pas assez de lettres majuscules - + The password contains less than %1 lowercase letters Le mot de passe contient moins de %1 lettres minuscules - + The password contains too few lowercase letters Le mot de passe ne contient pas assez de lettres minuscules - + The password contains less than %1 non-alphanumeric characters Le mot de passe contient moins de %1 caractères spéciaux - + The password contains too few non-alphanumeric characters Le mot de passe ne contient pas assez de caractères spéciaux - + The password is shorter than %1 characters Le mot de passe fait moins de %1 caractères - + The password is too short Le mot de passe est trop court - + The password is just rotated old one Le mot de passe saisit correspond avec un de vos anciens mot de passe - + The password contains less than %1 character classes Le mot de passe contient moins de %1 classes de caractères - + The password does not contain enough character classes Le mot de passe ne contient pas assez de classes de caractères - + The password contains more than %1 same characters consecutively Le mot de passe contient plus de %1 fois le même caractère à la suite - + The password contains too many same characters consecutively Le mot de passe contient trop de fois le même caractère à la suite - + The password contains more than %1 characters of the same class consecutively Le mot de passe contient plus de %1 caractères de la même classe consécutivement - + The password contains too many characters of the same class consecutively Le mot de passe contient trop de caractères de la même classe consécutivement - + The password contains monotonic sequence longer than %1 characters Le mot de passe contient une séquence de caractères monotones de %1 caractères - + The password contains too long of a monotonic character sequence Le mot de passe contient une trop longue séquence de caractères monotones - + No password supplied Aucun mot de passe saisi - + Cannot obtain random numbers from the RNG device Impossible d'obtenir des nombres aléatoires depuis le générateur de nombres aléatoires - + Password generation failed - required entropy too low for settings La génération du mot de passe a échoué - L'entropie minimum nécessaire n'est pas satisfaite par les paramètres - + The password fails the dictionary check - %1 Le mot de passe a échoué le contrôle de qualité par dictionnaire - %1 - + The password fails the dictionary check Le mot de passe a échoué le contrôle de qualité par dictionnaire - + Unknown setting - %1 Paramètre inconnu - %1 - + Unknown setting Paramètre inconnu - + Bad integer value of setting - %1 Valeur incorrect du paramètre - %1 - + Bad integer value Mauvaise valeur d'entier - + Setting %1 is not of integer type Le paramètre %1 n'est pas de type entier - + Setting is not of integer type Le paramètre n'est pas de type entier - + Setting %1 is not of string type Le paramètre %1 n'est pas une chaîne de caractères - + Setting is not of string type Le paramètre n'est pas une chaîne de caractères - + Opening the configuration file failed L'ouverture du fichier de configuration a échouée - + The configuration file is malformed Le fichier de configuration est mal formé - + Fatal failure Erreur fatale - + Unknown error Erreur inconnue @@ -1769,12 +1775,12 @@ L'installateur se fermera et les changements seront perdus. Une partition système EFI est nécessaire pour démarrer %1.<br/><br/>Une partition a été configurée avec le point de montage <strong>%2</strong> mais son drapeau <strong>esp</strong> n'est pas activé.<br/>Pour activer le drapeau, revenez en arrière et éditez la partition.<br/><br/>Vous pouvez continuer sans activer le drapeau mais votre système pourrait refuser de démarrer. - + Boot partition not encrypted Partition d'amorçage non chiffrée. - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Une partition d'amorçage distincte a été configurée avec une partition racine chiffrée, mais la partition d'amorçage n'est pas chiffrée. <br/> <br/> Il y a des problèmes de sécurité avec ce type d'installation, car des fichiers système importants sont conservés sur une partition non chiffrée <br/> Vous pouvez continuer si vous le souhaitez, mais le déverrouillage du système de fichiers se produira plus tard au démarrage du système. <br/> Pour chiffrer la partition d'amorçage, revenez en arrière et recréez-la, en sélectionnant <strong> Chiffrer </ strong> dans la partition Fenêtre de création. @@ -1806,15 +1812,16 @@ L'installateur se fermera et les changements seront perdus. Emplacement - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Merci de choisir l'apparence du bureau KDE Plasma. Vous pouvez aussi passer cette étape et configurer l'apparence une fois le système installé. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + Merci de choisir l'apparence du bureau KDE Plasma. Vous pouvez aussi passer cette étape et configurer l'apparence une fois le système installé. +Vous pouvez obtenir un aperçu des différentes apparences en cliquant sur celles-ci. PlasmaLnfViewStep - + Look-and-Feel Apparence @@ -1822,14 +1829,14 @@ L'installateur se fermera et les changements seront perdus. ProcessResult - + There was no output from the command. Il y a eu aucune sortie de la commande - + Output: @@ -1838,52 +1845,52 @@ Sortie - + External command crashed. La commande externe s'est mal terminée. - + Command <i>%1</i> crashed. La commande <i>%1</i> s'est arrêtée inopinément. - + External command failed to start. La commande externe n'a pas pu être lancée. - + Command <i>%1</i> failed to start. La commande <i>%1</i> n'a pas pu être lancée. - + Internal error when starting command. Erreur interne au lancement de la commande - + Bad parameters for process job call. Mauvais paramètres pour l'appel au processus de job. - + External command failed to finish. La commande externe ne s'est pas terminée. - + Command <i>%1</i> failed to finish in %2 seconds. La commande <i>%1</i> ne s'est pas terminée en %2 secondes. - + External command finished with errors. La commande externe s'est terminée avec des erreurs. - + Command <i>%1</i> finished with exit code %2. La commande <i>%1</i> s'est terminée avec le code de sortie %2. @@ -1902,22 +1909,22 @@ Sortie Défaut - + unknown inconnu - + extended étendu - + unformatted non formaté - + swap swap @@ -2010,52 +2017,52 @@ Sortie Récupération des informations système... - + has at least %1 GB available drive space a au moins %1 Go d'espace disque disponible - + There is not enough drive space. At least %1 GB is required. Il n'y a pas assez d'espace disque. Au moins %1 Go sont requis. - + has at least %1 GB working memory a au moins %1 Go de mémoire vive - + The system does not have enough working memory. At least %1 GB is required. Le système n'a pas assez de mémoire vive. Au moins %1 Go sont requis. - + is plugged in to a power source est relié à une source de courant - + The system is not plugged in to a power source. Le système n'est pas relié à une source de courant. - + is connected to the Internet est connecté à Internet - + The system is not connected to the Internet. Le système n'est pas connecté à Internet. - + The installer is not running with administrator rights. L'installateur ne dispose pas des droits administrateur. - + The screen is too small to display the installer. L'écran est trop petit pour afficher l'installateur. @@ -2328,6 +2335,15 @@ Sortie Tâche des processus de l'intérpréteur de commande + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2556,7 +2572,7 @@ Sortie <h1>%1</h1><br/><strong>%2<br/> pour %3</strong><br/><br/> Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/> Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/> Merci à : Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg et <a href="https://www.transifex.com/calamares/calamares/">l'équipe de traducteurs de Calamares</a>.<br/><br/> Le développement de <a href="https://calamares.io/">Calamares</a> est sponsorisé par <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Support de %1 diff --git a/lang/calamares_fr_CH.ts b/lang/calamares_fr_CH.ts index c65ea113c..eebefd592 100644 --- a/lang/calamares_fr_CH.ts +++ b/lang/calamares_fr_CH.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -165,39 +165,45 @@ + &Next - + &Cancel - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No @@ -207,32 +213,32 @@ The installer will quit and all changes will be lost. - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. @@ -483,7 +489,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -940,12 +946,12 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1182,12 +1188,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... - + Location @@ -1226,242 +1232,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1768,12 +1774,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1805,15 +1811,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1821,65 +1827,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1898,22 +1904,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2006,52 +2012,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2324,6 +2330,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2552,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_gl.ts b/lang/calamares_gl.ts index 43a959f9d..d15f91da1 100644 --- a/lang/calamares_gl.ts +++ b/lang/calamares_gl.ts @@ -98,7 +98,7 @@ Calamares::ExecutionViewStep - + Install Instalar @@ -127,32 +127,32 @@ Calamares::PythonJob - + Running %1 operation. Excutando a operación %1. - + Bad working directory path A ruta ó directorio de traballo é errónea - + Working directory %1 for python job %2 is not readable. O directorio de traballo %1 para o traballo de python %2 non é lexible - + Bad main script file Ficheiro de script principal erróneo - + Main script file %1 for python job %2 is not readable. O ficheiro principal de script %1 para a execución de python %2 non é lexible. - + Boost.Python error in job "%1". Boost.Python tivo un erro na tarefa "%1". @@ -166,40 +166,46 @@ + &Next &Seguinte - + &Cancel &Cancelar - + Cancel installation without changing the system. Cancela-la instalación sen cambia-lo sistema - + + &Install + + + + Cancel installation? Cancelar a instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Desexa realmente cancelar o proceso actual de instalación? O instalador pecharase e perderanse todos os cambios. - + &Yes &Si - + &No &Non @@ -209,32 +215,32 @@ O instalador pecharase e perderanse todos os cambios. &Pechar - + Continue with setup? Continuar coa posta en marcha? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> O %1 instalador está a piques de realizar cambios no seu disco para instalar %2.<br/><strong>Estes cambios non poderán desfacerse.</strong> - + &Install now &Instalar agora - + Go &back Ir &atrás - + &Done &Feito - + The installation is complete. Close the installer. Completouse a instalacion. Peche o instalador @@ -485,7 +491,7 @@ O instalador pecharase e perderanse todos os cambios. ContextualProcessJob - + Contextual Processes Job @@ -942,12 +948,12 @@ O instalador pecharase e perderanse todos os cambios. &Reiniciar agora. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Todo feito.</h1><br/>%1 foi instalado na súa computadora.<br/>Agora pode reiniciar no seu novo sistema ou continuar a usalo entorno Live %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Fallou a instalación</h1><br/>%1 non se pudo instalar na sua computadora. <br/>A mensaxe de erro foi: %2. @@ -1184,12 +1190,12 @@ O instalador pecharase e perderanse todos os cambios. LocaleViewStep - + Loading location data... Cargando datos de localización... - + Location Localización... @@ -1228,242 +1234,242 @@ O instalador pecharase e perderanse todos os cambios. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1770,12 +1776,12 @@ O instalador pecharase e perderanse todos os cambios. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1807,15 +1813,15 @@ O instalador pecharase e perderanse todos os cambios. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1823,65 +1829,65 @@ O instalador pecharase e perderanse todos os cambios. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Erro nos parámetros ao chamar o traballo - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1900,22 +1906,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2008,52 +2014,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2326,6 +2332,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2554,7 +2569,7 @@ Output: - + %1 support %1 axuda diff --git a/lang/calamares_gu.ts b/lang/calamares_gu.ts index ef94d2ece..19eef5b44 100644 --- a/lang/calamares_gu.ts +++ b/lang/calamares_gu.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -165,39 +165,45 @@ + &Next - + &Cancel - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No @@ -207,32 +213,32 @@ The installer will quit and all changes will be lost. - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. @@ -483,7 +489,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -940,12 +946,12 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1182,12 +1188,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... - + Location @@ -1226,242 +1232,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1768,12 +1774,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1805,15 +1811,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1821,65 +1827,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1898,22 +1904,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2006,52 +2012,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2324,6 +2330,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2552,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_he.ts b/lang/calamares_he.ts index df6cf90a2..5d1b29608 100644 --- a/lang/calamares_he.ts +++ b/lang/calamares_he.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install התקן @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. מריץ פעולה %1. - + Bad working directory path נתיב תיקיית עבודה לא תקין - + Working directory %1 for python job %2 is not readable. תיקיית עבודה %1 עבור משימת python %2 לא קריאה. - + Bad main script file קובץ תסריט הרצה ראשי לא תקין - + Main script file %1 for python job %2 is not readable. קובץ תסריט הרצה ראשי %1 עבור משימת python %2 לא קריא. - + Boost.Python error in job "%1". שגיאת Boost.Python במשימה "%1". @@ -165,40 +165,46 @@ + &Next &הבא - + &Cancel &בטל - + Cancel installation without changing the system. בטל התקנה ללא ביצוע שינוי במערכת. - + + &Install + + + + Cancel installation? בטל את ההתקנה? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. האם אתה בטוח שברצונך לבטל את תהליך ההתקנה? אשף ההתקנה ייסגר וכל השינויים יאבדו. - + &Yes &כן - + &No &לא @@ -208,32 +214,32 @@ The installer will quit and all changes will be lost. &סגור - + Continue with setup? המשך עם הליך ההתקנה? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> אשף ההתקנה של %1 הולך לבצע שינויים בכונן שלך לטובת התקנת %2.<br/><strong>לא תוכל לבטל את השינויים הללו.</strong> - + &Install now &התקן כעת - + Go &back &אחורה - + &Done &בוצע - + The installation is complete. Close the installer. תהליך ההתקנה הושלם. אנא סגור את אשף ההתקנה. @@ -484,7 +490,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ The installer will quit and all changes will be lost. &אתחל כעת - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>תהליך ההתקנה הסתיים.</h1><br/>%1 הותקן על המחשב שלך.<br/> כעת ניתן לאתחל את המחשב אל תוך המערכת החדשה שהותקנה, או להמשיך להשתמש בסביבה הנוכחית של %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>ההתקנה נכשלה</h1><br/>%1 לא הותקן על מחשבך.<br/> הודעת השגיאה: %2. @@ -1183,12 +1189,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... טוען נתונים על המיקום... - + Location מיקום @@ -1227,242 +1233,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short הסיסמה קצרה מדי - + Password is too long הסיסמה ארוכה מדי - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ The installer will quit and all changes will be lost. מחיצת מערכת EFI נדרשת להפעלת %1.<br/><br/> מחיצה הוגדרה עם נקודת עיגון <strong>%2</strong> אך סימון <strong>esp</strong> לא הוגדר.<br/> בכדי לסמן את המחיצה, חזור וערוך את המחיצה.<br/><br/> תוכל להמשיך ללא ביצוע הסימון אך המערכת יכולה להיכשל בטעינה. - + Boot partition not encrypted מחיצת טעינת המערכת Boot לא מוצפנת. - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. מחיצת טעינה, boot, נפרדת הוגדרה יחד עם מחיצת מערכת ההפעלה, root, מוצפנת, אך מחיצת הטעינה לא הוצפנה.<br/><br/> ישנן השלכות בטיחותיות עם התצורה שהוגדרה, מכיוון שקבצי מערכת חשובים נשמרים על מחיצה לא מוצפנת.<br/>תוכל להמשיך אם תרצה, אך שחרור מערכת הקבצים יתרחש מאוחר יותר כחלק מטעינת המערכת.<br/>בכדי להצפין את מחיצת הטעינה, חזור וצור אותה מחדש, על ידי בחירה ב <strong>הצפן</strong> בחלונית יצירת המחיצה. @@ -1806,15 +1812,15 @@ The installer will quit and all changes will be lost. שומר מקום - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. פרמטרים לא תקינים עבור קריאת עיבוד פעולה. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: ברירת מחדל - + unknown לא מוכר/ת - + extended מורחב/ת - + unformatted לא מאותחל/ת - + swap דפדוף, swap @@ -2007,52 +2013,52 @@ Output: מלקט מידע אודות המערכת... - + has at least %1 GB available drive space קיים לפחות %1 GB של נפח אחסון - + There is not enough drive space. At least %1 GB is required. נפח האחסון לא מספק. נדרש לפחות %1 GB. - + has at least %1 GB working memory קיים לפחות %1 GB של זכרון פעולה - + The system does not have enough working memory. At least %1 GB is required. כמות הזכרון הנדרשת לפעולה, לא מספיקה. נדרש לפחות %1 GB. - + is plugged in to a power source מחובר לספק חשמל חיצוני - + The system is not plugged in to a power source. המערכת לא מחוברת לספק חשמל חיצוני. - + is connected to the Internet מחובר לאינטרנט - + The system is not connected to the Internet. המערכת לא מחוברת לאינטרנט. - + The installer is not running with administrator rights. אשף ההתקנה לא רץ עם הרשאות מנהל. - + The screen is too small to display the installer. גודל המסך קטן מדי בכדי להציג את מנהל ההתקנה. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support תמיכה ב - %1 diff --git a/lang/calamares_hi.ts b/lang/calamares_hi.ts index 78adb1e1d..4a04b58e5 100644 --- a/lang/calamares_hi.ts +++ b/lang/calamares_hi.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install इंस्टॉल करें @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. %1 चल रहा है। - + Bad working directory path कार्यरत फोल्डर का पथ गलत है - + Working directory %1 for python job %2 is not readable. Python job %2 के लिए कार्यरत डायरेक्टरी %1 read करने योग्य नहीं है। - + Bad main script file मुख्य script फ़ाइल गलत है - + Main script file %1 for python job %2 is not readable. Python job %2 के लिए मुख्य script फ़ाइल %1 read करने योग्य नहीं है। - + Boost.Python error in job "%1". Job "%1" में Boost.Python error। @@ -165,40 +165,46 @@ + &Next &आगे - + &Cancel &रद्द करें - + Cancel installation without changing the system. सिस्टम में बदलाव किये बिना इंस्टॉल रद्द करें। - + + &Install + + + + Cancel installation? इंस्टॉल रद्द करें? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. क्या आप वाकई वर्तमान इंस्टॉल प्रक्रिया रद्द करना चाहते हैं? इंस्टॉलर बंद हो जाएगा व सभी बदलाव नष्ट। - + &Yes &हाँ - + &No &नहीं @@ -208,32 +214,32 @@ The installer will quit and all changes will be lost. &बंद करें - + Continue with setup? सेटअप करना जारी रखें? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %2 इंस्टॉल करने के लिए %1 इंस्टॉलर आपकी डिस्क में बदलाव करने वाला है।<br/><strong>आप इन बदलावों को पूर्ववत नहीं कर पाएंगे।</strong> - + &Install now अभी &इंस्टॉल करें - + Go &back &वापस जाएँ - + &Done हो &गया - + The installation is complete. Close the installer. इंस्टॉल पूर्ण हुआ।अब इंस्टॉलर को बंद करें। @@ -484,7 +490,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job Contextual Processes Job @@ -941,12 +947,12 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... - + Location @@ -1227,242 +1233,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed विन्यास फाइल ख़राब है - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ The installer will quit and all changes will be lost. Placeholder - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: - + unknown - + extended विस्तृत - + unformatted फॉर्मेट नहीं हो रखा है - + swap @@ -2007,52 +2013,52 @@ Output: सिस्टम की जानकारी प्राप्त की जा रही है... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, रोहन गर्ग व <a href="https://www.transifex.com/calamares/calamares/">Calamares अनुवादक टीम</a> का धन्यवाद।<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 सहायता diff --git a/lang/calamares_hr.ts b/lang/calamares_hr.ts index 0561f8b38..160232b4a 100644 --- a/lang/calamares_hr.ts +++ b/lang/calamares_hr.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Instaliraj @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Izvodim %1 operaciju. - + Bad working directory path Krivi put do radnog direktorija - + Working directory %1 for python job %2 is not readable. Radni direktorij %1 za python zadatak %2 nije čitljiv. - + Bad main script file Kriva glavna datoteka skripte - + Main script file %1 for python job %2 is not readable. Glavna skriptna datoteka %1 za python zadatak %2 nije čitljiva. - + Boost.Python error in job "%1". Boost.Python greška u zadatku "%1". @@ -165,40 +165,46 @@ + &Next &Sljedeće - + &Cancel &Odustani - + Cancel installation without changing the system. Odustanite od instalacije bez promjena na sustavu. - + + &Install + &Instaliraj + + + Cancel installation? Prekinuti instalaciju? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Stvarno želite prekinuti instalacijski proces? Instalacijski program će izaći i sve promjene će biti izgubljene. - + &Yes &Da - + &No &Ne @@ -208,32 +214,32 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.&Zatvori - + Continue with setup? Nastaviti s postavljanjem? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 instalacijski program će napraviti promjene na disku kako bi instalirao %2.<br/><strong>Nećete moći vratiti te promjene.</strong> - + &Install now &Instaliraj sada - + Go &back Idi &natrag - + &Done &Gotovo - + The installation is complete. Close the installer. Instalacija je završena. Zatvorite instalacijski program. @@ -484,7 +490,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. ContextualProcessJob - + Contextual Processes Job Posao kontekstualnih procesa @@ -941,12 +947,12 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.&Ponovno pokreni sada - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Gotovo.</h1><br/>%1 je instaliran na vaše računalo.<br/>Sada možete ponovno pokrenuti računalo ili nastaviti sa korištenjem %2 live okruženja. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Instalacija nije uspijela</h1><br/>%1 nije instaliran na vaše računalo.<br/>Greška: %2. @@ -1183,12 +1189,12 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. LocaleViewStep - + Loading location data... Učitavanje podataka o lokaciji... - + Location Lokacija @@ -1227,242 +1233,242 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. PWQ - + Password is too short Lozinka je prekratka - + Password is too long Lozinka je preduga - + Password is too weak Lozinka je preslaba - + Memory allocation error when setting '%1' Pogreška u dodjeli memorije prilikom postavljanja '%1' - + Memory allocation error Pogreška u dodjeli memorije - + The password is the same as the old one Lozinka je ista prethodnoj - + The password is a palindrome Lozinka je palindrom - + The password differs with case changes only Lozinka se razlikuje samo u promjenama velikog i malog slova - + The password is too similar to the old one Lozinka je slična prethodnoj - + The password contains the user name in some form Lozinka u nekoj formi sadrži korisničko ime - + The password contains words from the real name of the user in some form Lozinka u nekoj formi sadrži stvarno ime korisnika - + The password contains forbidden words in some form Lozinka u nekoj formi sadrži zabranjene rijeći - + The password contains less than %1 digits Lozinka sadrži manje od %1 brojeva - + The password contains too few digits Lozinka sadrži premalo brojeva - + The password contains less than %1 uppercase letters Lozinka sadrži manje od %1 velikih slova - + The password contains too few uppercase letters Lozinka sadrži premalo velikih slova - + The password contains less than %1 lowercase letters Lozinka sadrži manje od %1 malih slova - + The password contains too few lowercase letters Lozinka sadrži premalo malih slova - + The password contains less than %1 non-alphanumeric characters Lozinka sadrži manje od %1 ne-alfanumeričkih znakova. - + The password contains too few non-alphanumeric characters Lozinka sadrži premalo ne-alfanumeričkih znakova - + The password is shorter than %1 characters Lozinka je kraća od %1 znakova - + The password is too short Lozinka je prekratka - + The password is just rotated old one Lozinka je jednaka rotiranoj prethodnoj - + The password contains less than %1 character classes Lozinka sadrži manje od %1 razreda znakova - + The password does not contain enough character classes Lozinka ne sadrži dovoljno razreda znakova - + The password contains more than %1 same characters consecutively Lozinka sadrži više od %1 uzastopnih znakova - + The password contains too many same characters consecutively Lozinka sadrži previše uzastopnih znakova - + The password contains more than %1 characters of the same class consecutively Lozinka sadrži više od %1 uzastopnih znakova iz istog razreda - + The password contains too many characters of the same class consecutively Lozinka sadrži previše uzastopnih znakova iz istog razreda - + The password contains monotonic sequence longer than %1 characters Lozinka sadrži monotonu sekvencu dužu od %1 znakova - + The password contains too long of a monotonic character sequence Lozinka sadrži previše monotonu sekvencu znakova - + No password supplied Nema isporučene lozinke - + Cannot obtain random numbers from the RNG device Ne mogu dobiti slučajne brojeve od RNG uređaja - + Password generation failed - required entropy too low for settings Generiranje lozinke nije uspjelo - potrebna entropija je premala za postavke - + The password fails the dictionary check - %1 Nije uspjela provjera rječnika za lozinku - %1 - + The password fails the dictionary check Nije uspjela provjera rječnika za lozinku - + Unknown setting - %1 Nepoznate postavke - %1 - + Unknown setting Nepoznate postavke - + Bad integer value of setting - %1 Loša cjelobrojna vrijednost postavke - %1 - + Bad integer value Loša cjelobrojna vrijednost - + Setting %1 is not of integer type Postavka %1 nije cjelobrojnog tipa - + Setting is not of integer type Postavka nije cjelobrojnog tipa - + Setting %1 is not of string type Postavka %1 nije tipa znakovnog niza - + Setting is not of string type Postavka nije tipa znakovnog niza - + Opening the configuration file failed Nije uspjelo otvaranje konfiguracijske datoteke - + The configuration file is malformed Konfiguracijska datoteka je oštećena - + Fatal failure Fatalna pogreška - + Unknown error Nepoznata greška @@ -1769,12 +1775,12 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.EFI particija je potrebna za pokretanje %1.<br><br/>Particija je konfigurirana s točkom montiranja <strong>%2</strong> ali njezina <strong>esp</strong> oznaka nije postavljena.<br/>Za postavljanje oznake, vratite se i uredite postavke particije.<br/><br/>Možete nastaviti bez postavljanja oznake, ali vaš sustav se možda neće moći pokrenuti. - + Boot partition not encrypted Boot particija nije kriptirana - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Odvojena boot particija je postavljena zajedno s kriptiranom root particijom, ali boot particija nije kriptirana.<br/><br/>Zabrinuti smo za vašu sigurnost jer su važne datoteke sustava na nekriptiranoj particiji.<br/>Možete nastaviti ako želite, ali datotečni sustav će se otključati kasnije tijekom pokretanja sustava.<br/>Da bi ste kriptirali boot particiju, vratite se natrag i napravite ju, odabirom opcije <strong>Kriptiraj</strong> u prozoru za stvaranje prarticije. @@ -1806,15 +1812,15 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Rezervirano mjesto - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Odaberite izgled KDE Plasme. Možete također preskočiti ovaj korak i konfigurirati izgled jednom kada sustav bude instaliran. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + Odaberite izgled KDE Plasme. Možete također preskočiti ovaj korak i konfigurirati izgled jednom kada sustav bude instaliran. Odabirom izgleda dobit ćete pregled uživo tog izgleda. PlasmaLnfViewStep - + Look-and-Feel Izgled @@ -1822,14 +1828,14 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. ProcessResult - + There was no output from the command. Nema izlazne informacije od naredbe. - + Output: @@ -1838,52 +1844,52 @@ Izlaz: - + External command crashed. Vanjska naredba je prekinula s radom. - + Command <i>%1</i> crashed. Naredba <i>%1</i> je prekinula s radom. - + External command failed to start. Vanjska naredba nije uspješno pokrenuta. - + Command <i>%1</i> failed to start. Naredba <i>%1</i> nije uspješno pokrenuta. - + Internal error when starting command. Unutrašnja greška pri pokretanju naredbe. - + Bad parameters for process job call. Krivi parametri za proces poziva posla. - + External command failed to finish. Vanjska naredba se nije uspjela izvršiti. - + Command <i>%1</i> failed to finish in %2 seconds. Naredba <i>%1</i> nije uspjela završiti za %2 sekundi. - + External command finished with errors. Vanjska naredba je završila sa pogreškama. - + Command <i>%1</i> finished with exit code %2. Naredba <i>%1</i> je završila sa izlaznim kodom %2. @@ -1902,22 +1908,22 @@ Izlaz: Zadano - + unknown nepoznato - + extended prošireno - + unformatted nije formatirano - + swap swap @@ -2010,52 +2016,52 @@ Izlaz: Skupljanje informacija o sustavu... - + has at least %1 GB available drive space ima barem %1 GB dostupne slobodne memorije na disku - + There is not enough drive space. At least %1 GB is required. Nema dovoljno prostora na disku. Potrebno je najmanje %1 GB. - + has at least %1 GB working memory ima barem %1 GB radne memorije - + The system does not have enough working memory. At least %1 GB is required. Ovaj sustav nema dovoljno radne memorije. Potrebno je najmanje %1 GB. - + is plugged in to a power source je spojeno na izvor struje - + The system is not plugged in to a power source. Ovaj sustav nije spojen na izvor struje. - + is connected to the Internet je spojeno na Internet - + The system is not connected to the Internet. Ovaj sustav nije spojen na internet. - + The installer is not running with administrator rights. Instalacijski program nije pokrenut sa administratorskim dozvolama. - + The screen is too small to display the installer. Zaslon je premalen za prikaz instalacijskog programa. @@ -2328,6 +2334,15 @@ Izlaz: Posao shell procesa + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + %L1 / %L2 + + SummaryPage @@ -2556,7 +2571,7 @@ Izlaz: <h1>%1</h1><br/><strong>%2<br/>za %3</strong><br/><br/>Autorska prava 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorska prava 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Zahvale: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg i <a href="https://www.transifex.com/calamares/calamares/">Calamares timu za prevođenje</a>.<br/><br/><a href="https://calamares.io/">Calamares sponzorira <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 podrška diff --git a/lang/calamares_hu.ts b/lang/calamares_hu.ts index 1062a811e..752ca0b10 100644 --- a/lang/calamares_hu.ts +++ b/lang/calamares_hu.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Telepít @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Futó %1 műveletek. - + Bad working directory path Rossz munkakönyvtár útvonal - + Working directory %1 for python job %2 is not readable. Munkakönyvtár %1 a python folyamathoz %2 nem olvasható. - + Bad main script file Rossz alap script fájl - + Main script file %1 for python job %2 is not readable. Alap script fájl %1 a python folyamathoz %2 nem olvasható. - + Boost.Python error in job "%1". Boost. Python hiba ebben a folyamatban "%1". @@ -165,40 +165,46 @@ + &Next &Következő - + &Cancel &Mégse - + Cancel installation without changing the system. Kilépés a telepítőből a rendszer megváltoztatása nélkül. - + + &Install + + + + Cancel installation? Abbahagyod a telepítést? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Biztos abba szeretnéd hagyni a telepítést? Minden változtatás elveszik, ha kilépsz a telepítőből. - + &Yes &Igen - + &No @Nem @@ -208,32 +214,32 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. &Bezár - + Continue with setup? Folytatod a telepítéssel? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> A %1 telepítő változtatásokat fog elvégezni, hogy telepítse a következőt: %2.<br/><strong>A változtatások visszavonhatatlanok lesznek.</strong> - + &Install now &Telepítés most - + Go &back Menj &vissza - + &Done &Befejez - + The installation is complete. Close the installer. A telepítés befejeződött, Bezárhatod a telepítőt. @@ -485,7 +491,7 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l ContextualProcessJob - + Contextual Processes Job @@ -942,12 +948,12 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l $Újraindítás most - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Sikeres művelet.</h1><br/>%1 telepítve lett a számítógépére.<br/>Újraindítás után folytathatod az %2 éles környezetben. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>A telepítés hibába ütközött.</h1><br/>%1 nem lett telepítve a számítógépre.<br/>A hibaüzenet: %2. @@ -1184,12 +1190,12 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l LocaleViewStep - + Loading location data... Hely adatok betöltése... - + Location Hely @@ -1228,242 +1234,242 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l PWQ - + Password is too short Túl rövid jelszó - + Password is too long Túl hosszú jelszó - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1770,12 +1776,12 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l EFI rendszerpartíciónak léteznie kell %1 indításához.<br/><br/> A csatolási pont <strong>%2</strong> beállítása sikerült a partíción de a zászló nincs beállítva. A beálíltásához lépj vissza szerkeszteni a partíciót..<br/><br/> Folytathatod a telepítést zászló beállítása nélkül is, de lehet, hogy a rendszer nem indul el majd. - + Boot partition not encrypted Indító partíció nincs titkosítva - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Egy külön indító partíció lett beállítva egy titkosított root partícióval, de az indító partíció nincs titkosítva.br/><br/>Biztonsági aggályok merülnek fel ilyen beállítás mellet, mert fontos fájlok nem titkosított partíción vannak tárolva. <br/>Ha szeretnéd, folytathatod így, de a fájlrendszer zárolása meg fog történni az indítás után. <br/> Az indító partíció titkosításához lépj vissza és az újra létrehozáskor válaszd a <strong>Titkosít</strong> opciót. @@ -1807,15 +1813,15 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Helytartó - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1823,65 +1829,65 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l ProcessResult - + There was no output from the command. - + Output: - + External command crashed. Külső parancs összeomlott. - + Command <i>%1</i> crashed. Parancs <i>%1</i> összeomlott. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Hibás paraméterek a folyamat hívásához. - + External command failed to finish. Külső parancs nem fejeződött be. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1900,22 +1906,22 @@ Output: Alapértelmezett - + unknown ismeretlen - + extended kiterjesztett - + unformatted formázatlan - + swap Swap @@ -2008,52 +2014,52 @@ Output: Rendszerinformációk gyűjtése... - + has at least %1 GB available drive space Legalább %1 GB lemezterület elérhető - + There is not enough drive space. At least %1 GB is required. Nincs elég lemezterület. Legalább %1GB szükséges. - + has at least %1 GB working memory Legalább %1 GB elérhető memória - + The system does not have enough working memory. At least %1 GB is required. A rendszernek nincs elég memóriája. Legalább %1 GB szükséges. - + is plugged in to a power source csatlakoztatva van külső áramforráshoz - + The system is not plugged in to a power source. A rendszer nincs csatlakoztatva külső áramforráshoz - + is connected to the Internet csatlakozik az internethez - + The system is not connected to the Internet. A rendszer nem csatlakozik az internethez. - + The installer is not running with administrator rights. A telepítő nem adminisztrátori jogokkal fut. - + The screen is too small to display the installer. A képernyőméret túl kicsi a telepítő megjelenítéséhez. @@ -2326,6 +2332,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2555,7 +2570,7 @@ Calamares hiba %1. - + %1 support %1 támogatás diff --git a/lang/calamares_id.ts b/lang/calamares_id.ts index 0ea8a0218..5e2a4ec3e 100644 --- a/lang/calamares_id.ts +++ b/lang/calamares_id.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Pasang @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Menjalankan %1 operasi. - + Bad working directory path Jalur lokasi direktori tidak berjalan baik - + Working directory %1 for python job %2 is not readable. Direktori kerja %1 untuk penugasan python %2 tidak dapat dibaca. - + Bad main script file Berkas skrip utama buruk - + Main script file %1 for python job %2 is not readable. Berkas skrip utama %1 untuk penugasan python %2 tidak dapat dibaca. - + Boost.Python error in job "%1". Boost.Python mogok dalam penugasan "%1". @@ -165,40 +165,46 @@ + &Next &Berikutnya - + &Cancel &Batal - + Cancel installation without changing the system. Batal pemasangan tanpa mengubah sistem yang ada. - + + &Install + + + + Cancel installation? Batalkan pemasangan? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Apakah Anda benar-benar ingin membatalkan proses pemasangan ini? Pemasangan akan ditutup dan semua perubahan akan hilang. - + &Yes &Ya - + &No &Tidak @@ -208,32 +214,32 @@ Pemasangan akan ditutup dan semua perubahan akan hilang. &Tutup - + Continue with setup? Lanjutkan dengan setelan ini? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Pemasang %1 akan membuat perubahan ke disk Anda untuk memasang %2.<br/><strong>Anda tidak dapat membatalkan perubahan tersebut.</strong> - + &Install now &Pasang sekarang - + Go &back &Kembali - + &Done &Kelar - + The installation is complete. Close the installer. Pemasangan sudah lengkap. Tutup pemasang. @@ -486,7 +492,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. ContextualProcessJob - + Contextual Processes Job Memproses tugas kontekstual @@ -943,12 +949,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Mulai ulang seka&rang - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Selesai.</h1><br>%1 sudah terpasang di komputer Anda.<br/>Anda dapat memulai ulang ke sistem baru atau lanjut menggunakan lingkungan Live %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Pemasangan Gagal</h1><br/>%1 tidak bisa dipasang pada komputermu.<br/>Pesan galatnya adalah: %2. @@ -1185,12 +1191,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. LocaleViewStep - + Loading location data... Memuat data lokasi... - + Location Lokasi @@ -1229,244 +1235,244 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. PWQ - + Password is too short Kata sandi terlalu pendek - + Password is too long Kata sandi terlalu panjang - + Password is too weak kata sandi terlalu lemah - + Memory allocation error when setting '%1' Kesalahan alokasi memori saat menyetel '%1' - + Memory allocation error Kesalahan alokasi memori - + The password is the same as the old one Kata sandi sama dengan yang lama - + The password is a palindrome Kata sandi palindrom - + The password differs with case changes only Kata sandi berbeda hanya dengan perubahan huruf saja - + The password is too similar to the old one Kata sandi terlalu mirip dengan yang lama - + The password contains the user name in some form Kata sandi berisi nama pengguna dalam beberapa form - + The password contains words from the real name of the user in some form Kata sandi berisi kata-kata dari nama asli pengguna dalam beberapa form - + The password contains forbidden words in some form - + Password mengandung kata yang dilarang pada beberapa bagian form - + The password contains less than %1 digits - + Password setidaknya berisi 1 digit karakter - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + Password terlalu pendek - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + pengaturan tidak diketahui - + Bad integer value of setting - %1 - + Bad integer value - + Nilai integer jelek - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + Ada kesalahan saat membuka berkas konfigurasi - + The configuration file is malformed - + Kesalahan format pada berkas konfigurasi - + Fatal failure - + Kegagalan fatal - + Unknown error - + Ada kesalahan yang tidak diketahui @@ -1771,12 +1777,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Sebuah partisi sistem EFI perlu memulai %1.<br/><br/>Sebuah partisi telah dikonfigurasi dengan titik kait <strong>%2</strong> tapi bendera <strong>esp</strong> tersebut tidak disetel.<br/>Untuk mengeset bendera, pergi mundur dan editlah partisi.<br/><br/>Kamu bisa melanjutkan tanpa menyetel bendera tapi sistemmu mungkin gagal memulai. - + Boot partition not encrypted Partisi boot tidak dienkripsi - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Sebuah partisi tersendiri telah terset bersama dengan sebuah partisi root terenkripsi, tapi partisi boot tidak terenkripsi.<br/><br/>Ada kekhawatiran keamanan dengan jenis setup ini, karena file sistem penting tetap pada partisi tak terenkripsi.<br/>Kamu bisa melanjutkan jika kamu menghendaki, tapi filesystem unlocking akan terjadi nanti selama memulai sistem.<br/>Untuk mengenkripsi partisi boot, pergi mundur dan menciptakannya ulang, memilih <strong>Encrypt</strong> di jendela penciptaan partisi. @@ -1792,7 +1798,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. Could not select KDE Plasma Look-and-Feel package - + Tidak bisa memilih KDE Plasma Look-and-Feel package @@ -1808,83 +1814,83 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel - + Lihat-dan-Rasakan ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Perintah eksternal rusak. - + Command <i>%1</i> crashed. - + Perintah <i>%1</i> mogok. - + External command failed to start. - + Perintah eksternal gagal dimulai - + Command <i>%1</i> failed to start. - + Perintah <i>%1</i> gagal dimulai. - + Internal error when starting command. - + Terjadi kesalahan internal saat menjalankan perintah. - + Bad parameters for process job call. Parameter buruk untuk memproses panggilan tugas, - + External command failed to finish. - + Perintah eksternal gagal diselesaikan . - + Command <i>%1</i> failed to finish in %2 seconds. - + Perintah <i>%1</i> gagal untuk diselesaikan dalam %2 detik. - + External command finished with errors. - + Perintah eksternal diselesaikan dengan kesalahan . - + Command <i>%1</i> finished with exit code %2. - + Perintah <i>%1</i> diselesaikan dengan kode keluar %2. @@ -1901,22 +1907,22 @@ Output: Standar - + unknown tidak diketahui: - + extended extended - + unformatted tidak terformat: - + swap swap @@ -2009,52 +2015,52 @@ Output: Mengumpulkan informasi sistem... - + has at least %1 GB available drive space memiliki paling sedikit %1 GB ruang drive tersedia - + There is not enough drive space. At least %1 GB is required. Ruang drive tidak cukup. Butuh minial %1 GB. - + has at least %1 GB working memory memiliki paling sedikit %1 GB memori bekerja - + The system does not have enough working memory. At least %1 GB is required. Sistem ini tidak memiliki memori yang cukup. Butuh minial %1 GB. - + is plugged in to a power source terhubung dengan sumber listrik - + The system is not plugged in to a power source. Sistem tidak terhubung dengan sumber listrik. - + is connected to the Internet terkoneksi dengan internet - + The system is not connected to the Internet. Sistem tidak terkoneksi dengan internet. - + The installer is not running with administrator rights. Pemasang tidak dijalankan dengan kewenangan administrator. - + The screen is too small to display the installer. Layar terlalu kecil untuk menampilkan pemasang. @@ -2324,6 +2330,15 @@ Output: Shell Processes Job + Pekerjaan yang diselesaikan oleh shell + + + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) @@ -2348,12 +2363,12 @@ Output: Installation feedback - + Umpan balik instalasi. Sending installation feedback. - + Mengirim umpan balik installasi. @@ -2555,7 +2570,7 @@ Output: - + %1 support Dukungan %1 diff --git a/lang/calamares_is.ts b/lang/calamares_is.ts index 13766d651..764d33e15 100644 --- a/lang/calamares_is.ts +++ b/lang/calamares_is.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Setja upp @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Keyri %1 aðgerð. - + Bad working directory path Röng slóð á vinnumöppu - + Working directory %1 for python job %2 is not readable. Vinnslumappa %1 fyrir python-verkið %2 er ekki lesanleg. - + Bad main script file Röng aðal-skriftuskrá - + Main script file %1 for python job %2 is not readable. Aðal-skriftuskrá %1 fyrir python-verkið %2 er ekki lesanleg. - + Boost.Python error in job "%1". Boost.Python villa í verkinu "%1". @@ -165,40 +165,46 @@ + &Next &Næst - + &Cancel &Hætta við - + Cancel installation without changing the system. Hætta við uppsetningu ánþess að breyta kerfinu. - + + &Install + + + + Cancel installation? Hætta við uppsetningu? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Viltu virkilega að hætta við núverandi uppsetningarferli? Uppsetningarforritið mun hætta og allar breytingar tapast. - + &Yes &Já - + &No &Nei @@ -208,32 +214,32 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. &Loka - + Continue with setup? Halda áfram með uppsetningu? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 uppsetningarforritið er um það bil að gera breytingar á diskinum til að setja upp %2.<br/><strong>Þú munt ekki geta afturkallað þessar breytingar.</strong> - + &Install now Setja &inn núna - + Go &back Fara til &baka - + &Done &Búið - + The installation is complete. Close the installer. Uppsetning er lokið. Lokaðu uppsetningarforritinu. @@ -484,7 +490,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. &Endurræsa núna - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Allt klárt.</h1><br/>%1 hefur verið sett upp á tölvunni þinni.<br/>Þú getur nú endurræst í nýja kerfið, eða halda áfram að nota %2 Lifandi umhverfi. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. LocaleViewStep - + Loading location data... Hleð inn staðsetningargögnum... - + Location Staðsetning @@ -1227,242 +1233,242 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: Sjálfgefið - + unknown óþekkt - + extended útvíkkuð - + unformatted ekki forsniðin - + swap swap diskminni @@ -2007,52 +2013,52 @@ Output: Söfnun kerfis upplýsingar... - + has at least %1 GB available drive space hefur að minnsta kosti %1 GB laus á harðadisk - + There is not enough drive space. At least %1 GB is required. Það er ekki nóg diskapláss. Að minnsta kosti %1 GB eru þörf. - + has at least %1 GB working memory hefur að minnsta kosti %1 GB vinnsluminni - + The system does not have enough working memory. At least %1 GB is required. Kerfið hefur ekki nóg vinnsluminni. Að minnsta kosti %1 GB er krafist. - + is plugged in to a power source er í sambandi við aflgjafa - + The system is not plugged in to a power source. Kerfið er ekki í sambandi við aflgjafa. - + is connected to the Internet er tengd við Internetið - + The system is not connected to the Internet. Kerfið er ekki tengd við internetið. - + The installer is not running with administrator rights. Uppsetningarforritið er ekki keyrandi með kerfisstjóraheimildum. - + The screen is too small to display the installer. Skjárinn er of lítill til að birta uppsetningarforritið. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support %1 stuðningur diff --git a/lang/calamares_it_IT.ts b/lang/calamares_it_IT.ts index d967d2023..2dda30e42 100644 --- a/lang/calamares_it_IT.ts +++ b/lang/calamares_it_IT.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Installa @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Operazione %1 in esecuzione. - + Bad working directory path Il percorso della cartella corrente non è corretto - + Working directory %1 for python job %2 is not readable. La cartella corrente %1 per l'attività di Python %2 non è accessibile. - + Bad main script file File dello script principale non valido - + Main script file %1 for python job %2 is not readable. Il file principale dello script %1 per l'attività di python %2 non è accessibile. - + Boost.Python error in job "%1". Errore da Boost.Python nell'operazione "%1". @@ -165,40 +165,46 @@ + &Next &Avanti - + &Cancel &Annulla - + Cancel installation without changing the system. Annullare l'installazione senza modificare il sistema. - + + &Install + &Installa + + + Cancel installation? Annullare l'installazione? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Si vuole davvero annullare l'installazione in corso? Il programma d'installazione sarà terminato e tutte le modifiche andranno perse. - + &Yes &Si - + &No &No @@ -208,32 +214,32 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno &Chiudi - + Continue with setup? Procedere con la configurazione? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Il programma d'nstallazione %1 sta per eseguire delle modifiche al tuo disco per poter installare %2.<br/><strong> Non sarà possibile annullare tali modifiche.</strong> - + &Install now &Installa adesso - + Go &back &Indietro - + &Done &Fatto - + The installation is complete. Close the installer. L'installazione è terminata. Chiudere l'installer. @@ -484,7 +490,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno ContextualProcessJob - + Contextual Processes Job Attività dei processi contestuali @@ -941,12 +947,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno &Riavviare ora - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Tutto fatto.</ h1><br/>%1 è stato installato sul computer.<br/>Ora è possibile riavviare il sistema, o continuare a utilizzare l'ambiente Live di %2 . - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Installazione Fallita</h1><br/>%1 non è stato installato sul tuo computer.<br/>Il messaggio di errore è: %2 @@ -1183,12 +1189,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno LocaleViewStep - + Loading location data... Caricamento dei dati di posizione... - + Location Posizione @@ -1227,242 +1233,242 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno PWQ - + Password is too short Password troppo corta - + Password is too long Password troppo lunga - + Password is too weak - + La password è troppo debole - + Memory allocation error when setting '%1' - + Memory allocation error - + Errore di allocazione di memoria - + The password is the same as the old one - + La nuova password coincide con la precedente - + The password is a palindrome - + La password è palindroma - + The password differs with case changes only - + The password is too similar to the old one - + La nuova password è troppo simile a quella precedente - + The password contains the user name in some form - + La password contiene il nome utente in una qualche forma - + The password contains words from the real name of the user in some form - + La password contiene parte del nome reale dell'utente in qualche forma - + The password contains forbidden words in some form - + The password contains less than %1 digits - + La password contiene meno di %1 numeri - + The password contains too few digits - + La password contiene troppo pochi numeri - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Una partizione EFI di sistema è necessaria per avviare %1.<br/><br/>Una partizione è stata configurata con punto di mount <strong>%2</strong> ma il relativo flag <strong>esp</strong> non è impostato.<br/>Per impostare il flag, tornare indietro e modificare la partizione.<br/><br/>Si può continuare senza impostare il flag ma il sistema rischia di non avviarsi. - + Boot partition not encrypted Partizione di avvio non criptata - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. E' stata configurata una partizione di avvio non criptata assieme ad una partizione root criptata. <br/><br/>Ci sono problemi di sicurezza con questo tipo di configurazione perchè dei file di sistema importanti sono tenuti su una partizione non criptata.<br/>Si può continuare se lo si desidera ma dopo ci sarà lo sblocco del file system, durante l'avvio del sistema.<br/>Per criptare la partizione di avvio, tornare indietro e ricrearla, selezionando <strong>Criptare</strong> nella finestra di creazione della partizione. @@ -1806,15 +1812,15 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Segnaposto - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Si prega di scegliere un tema per il desktop KDE Plasma. È possibile saltare questo passaggio e configurare il tema una volta installato il sistema. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + PlasmaLnfViewStep - + Look-and-Feel Tema @@ -1822,13 +1828,13 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno ProcessResult - + There was no output from the command. - + Output: @@ -1837,52 +1843,52 @@ Output: - + External command crashed. Il comando esterno si è arrestato. - + Command <i>%1</i> crashed. Il comando <i>%1</i> si è arrestato. - + External command failed to start. Il comando esterno non si è avviato. - + Command <i>%1</i> failed to start. Il comando %1 non si è avviato. - + Internal error when starting command. Errore interno all'avvio del comando. - + Bad parameters for process job call. Parametri errati per elaborare l'attività richiesta - + External command failed to finish. Il comando esterno non è stato portato a termine. - + Command <i>%1</i> failed to finish in %2 seconds. Il comando <i>%1</i> non è stato portato a termine in %2 secondi. - + External command finished with errors. Il comando esterno è terminato con errori. - + Command <i>%1</i> finished with exit code %2. Il comando <i>%1</i> è terminato con codice di uscita %2. @@ -1901,22 +1907,22 @@ Output: Default - + unknown sconosciuto - + extended estesa - + unformatted non formattata - + swap swap @@ -2009,52 +2015,52 @@ Output: Raccolta delle informazioni di sistema... - + has at least %1 GB available drive space ha almeno %1 GB di spazio disponibile - + There is not enough drive space. At least %1 GB is required. Non c'è spazio sufficiente sul dispositivo. E' richiesto almeno %1 GB. - + has at least %1 GB working memory ha almeno %1 GB di memoria - + The system does not have enough working memory. At least %1 GB is required. Il sistema non dispone di sufficiente memoria. E' richiesto almeno %1 GB. - + is plugged in to a power source è collegato a una presa di alimentazione - + The system is not plugged in to a power source. Il sistema non è collegato a una presa di alimentazione. - + is connected to the Internet è connesso a Internet - + The system is not connected to the Internet. Il sistema non è connesso a internet. - + The installer is not running with administrator rights. Il programma di installazione non è stato avviato con i diritti di amministrazione. - + The screen is too small to display the installer. Schermo troppo piccolo per mostrare il programma d'installazione. @@ -2327,6 +2333,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2555,7 +2570,7 @@ Output: - + %1 support supporto %1 diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index 34eb0c07b..edc1bc763 100644 --- a/lang/calamares_ja.ts +++ b/lang/calamares_ja.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install インストール @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. %1 操作を実行中。 - + Bad working directory path 不正なワーキングディレクトリパス - + Working directory %1 for python job %2 is not readable. python ジョブ %2 において作業ディレクトリ %1 が読み込めません。 - + Bad main script file 不正なメインスクリプトファイル - + Main script file %1 for python job %2 is not readable. python ジョブ %2 におけるメインスクリプトファイル %1 が読み込めません。 - + Boost.Python error in job "%1". ジョブ "%1" での Boost.Python エラー。 @@ -165,40 +165,46 @@ + &Next 次へ(&N) - + &Cancel 中止(&C) - + Cancel installation without changing the system. システムを変更しないでインストールを中止します。 - + + &Install + + + + Cancel installation? インストールを中止しますか? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 本当に現在の作業を中止しますか? すべての変更が取り消されます。 - + &Yes はい(&Y) - + &No いいえ(&N) @@ -208,32 +214,32 @@ The installer will quit and all changes will be lost. 閉じる(&C) - + Continue with setup? セットアップを続行しますか? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 インストーラーは %2 をインストールするためにディスクの内容を変更しようとします。<br/><strong>これらの変更は取り消しできなくなります。</strong> - + &Install now 今すぐインストール(&I) - + Go &back 戻る(&B) - + &Done 実行(&D) - + The installation is complete. Close the installer. インストールが完了しました。インストーラーを閉じます。 @@ -484,7 +490,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job コンテキストプロセスジョブ @@ -941,12 +947,12 @@ The installer will quit and all changes will be lost. 今すぐ再起動(&R) - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>すべて完了しました。</h1><br/>%1 はコンピュータにインストールされました。<br/>再起動して新しいシステムを立ち上げるか、%2 Live環境を使用し続けることができます。 - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>インストールに失敗しました</h1><br/>%1 はコンピュータにインストールされませんでした。<br/>エラーメッセージ: %2. @@ -1184,12 +1190,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... ロケーションデータをロード中... - + Location ロケーション @@ -1228,242 +1234,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short パスワードが短すぎます - + Password is too long パスワードが長すぎます - + Password is too weak パスワードが弱すぎます - + Memory allocation error when setting '%1' '%1' の設定の際にメモリーアロケーションエラーが発生しました - + Memory allocation error メモリーアロケーションエラー - + The password is the same as the old one パスワードが以前のものと同じです。 - + The password is a palindrome パスワードが回文です - + The password differs with case changes only パスワードの変更が大文字、小文字の変更のみです - + The password is too similar to the old one パスワードが以前のものと酷似しています - + The password contains the user name in some form パスワードにユーザー名が含まれています - + The password contains words from the real name of the user in some form パスワードにユーザーの実名が含まれています - + The password contains forbidden words in some form パスワードに禁句が含まれています - + The password contains less than %1 digits パスワードに含まれている数字が %1 字以下です - + The password contains too few digits パスワードに含まれる数字の数が少なすぎます - + The password contains less than %1 uppercase letters パスワードに含まれている大文字が %1 字以下です - + The password contains too few uppercase letters パスワードに含まれる大文字の数が少なすぎます - + The password contains less than %1 lowercase letters パスワードに含まれている小文字が %1 字以下です - + The password contains too few lowercase letters パスワードに含まれる小文字の数が少なすぎます - + The password contains less than %1 non-alphanumeric characters パスワードに含まれる非アルファベット文字が %1 字以下です - + The password contains too few non-alphanumeric characters パスワードに含まれる非アルファベット文字の数が少なすぎます - + The password is shorter than %1 characters パスワードの長さが %1 字より短いです - + The password is too short パスワードが短すぎます - + The password is just rotated old one パスワードが古いものの使いまわしです - + The password contains less than %1 character classes パスワードに含まれている文字クラスは %1 以下です。 - + The password does not contain enough character classes パスワードには十分な文字クラスが含まれていません - + The password contains more than %1 same characters consecutively パスワードで同じ文字が %1 字以上連続しています。 - + The password contains too many same characters consecutively パスワードで同じ文字を続けすぎています - + The password contains more than %1 characters of the same class consecutively パスワードで同じ文字クラスが %1 以上連続しています。 - + The password contains too many characters of the same class consecutively パスワードで同じ文字クラスの文字を続けすぎています - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied パスワードがありません - + Cannot obtain random numbers from the RNG device RNGデバイスから乱数を取得できません - + Password generation failed - required entropy too low for settings パスワード生成に失敗 - 設定のためのエントロピーが低すぎます - + The password fails the dictionary check - %1 パスワードの辞書チェックに失敗しました - %1 - + The password fails the dictionary check パスワードの辞書チェックに失敗しました - + Unknown setting - %1 未設定- %1 - + Unknown setting 未設定 - + Bad integer value of setting - %1 不適切な設定値 - %1 - + Bad integer value 不適切な設定値 - + Setting %1 is not of integer type 設定値 %1 は整数ではありません - + Setting is not of integer type 設定値は整数ではありません - + Setting %1 is not of string type 設定値 %1 は文字列ではありません - + Setting is not of string type 設定値は文字列ではありません - + Opening the configuration file failed 設定ファイルが開けませんでした - + The configuration file is malformed 設定ファイルが不正な形式です - + Fatal failure 致命的な失敗 - + Unknown error 未知のエラー @@ -1770,12 +1776,12 @@ The installer will quit and all changes will be lost. %1 を起動するためにはEFI システムパ ーティションが必要です。<br/><br/>パーティションはマウントポイント<strong>%2</strong>に設定されていますが、<strong>esp</strong> フラグが設定されていません。<br/>フラグを設定するには、元に戻ってパーティションを編集してください。<br/><br/>フラグの設定をせずに続けることはできますが、その場合、システムの起動に失敗することになるかもしれません。 - + Boot partition not encrypted ブートパーティションが暗号化されていません - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. ブートパーティションは暗号化されたルートパーティションとともにセットアップされましたが、ブートパーティションは暗号化されていません。<br/><br/>重要なシステムファイルが暗号化されていないパーティションに残されているため、このようなセットアップは安全上の懸念があります。<br/>セットアップを続行することはできますが、後でシステムの起動中にファイルシステムが解除されるおそれがあります。<br/>ブートパーティションを暗号化させるには、前の画面に戻って、再度パーティションを作成し、パーティション作成ウィンドウ内で<strong>Encrypt</strong>(暗号化)を選択してください。 @@ -1807,15 +1813,15 @@ The installer will quit and all changes will be lost. プレースホルダー - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - KDE Plasma デスクトップの look-and-feel を選択してください。このステップはスキップすることができ、インストール後に look-and-feel を設定することができます。 + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + PlasmaLnfViewStep - + Look-and-Feel Look-and-Feel @@ -1823,14 +1829,14 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. コマンドから出力するものがありませんでした。 - + Output: @@ -1839,52 +1845,52 @@ Output: - + External command crashed. 外部コマンドがクラッシュしました。 - + Command <i>%1</i> crashed. コマンド <i>%1</i> がクラッシュしました。 - + External command failed to start. 外部コマンドの起動に失敗しました。 - + Command <i>%1</i> failed to start. コマンド <i>%1</i> の起動に失敗しました。 - + Internal error when starting command. コマンドが起動する際に内部エラーが発生しました。 - + Bad parameters for process job call. ジョブ呼び出しにおける不正なパラメータ - + External command failed to finish. 外部コマンドの終了に失敗しました。 - + Command <i>%1</i> failed to finish in %2 seconds. コマンド<i>%1</i> %2 秒以内に終了することに失敗しました。 - + External command finished with errors. 外部のコマンドがエラーで停止しました。 - + Command <i>%1</i> finished with exit code %2. コマンド <i>%1</i> が終了コード %2 で終了しました。. @@ -1903,22 +1909,22 @@ Output: デフォルト - + unknown 不明 - + extended 拡張 - + unformatted 未フォーマット - + swap スワップ @@ -2011,52 +2017,52 @@ Output: システム情報を取得中... - + has at least %1 GB available drive space 最低 %1 GBのディスク空き領域があること - + There is not enough drive space. At least %1 GB is required. 十分なドライブ容量がありません。少なくとも %1 GB 必要です。 - + has at least %1 GB working memory 最低 %1 GB のワーキングメモリーがあること - + The system does not have enough working memory. At least %1 GB is required. システムには十分なワーキングメモリがありません。少なくとも %1 GB 必要です。 - + is plugged in to a power source 電源が接続されていること - + The system is not plugged in to a power source. システムに電源が接続されていません。 - + is connected to the Internet インターネットに接続されていること - + The system is not connected to the Internet. システムはインターネットに接続されていません。 - + The installer is not running with administrator rights. インストーラーは管理者権限で実行されていません。 - + The screen is too small to display the installer. インストーラーを表示するためには、画面が小さすぎます。 @@ -2329,6 +2335,15 @@ Output: シェルプロセスジョブ + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2557,7 +2572,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 サポート diff --git a/lang/calamares_kk.ts b/lang/calamares_kk.ts index 7bb92ec5a..f84690379 100644 --- a/lang/calamares_kk.ts +++ b/lang/calamares_kk.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Орнату @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -165,39 +165,45 @@ + &Next &Алға - + &Cancel Ба&с тарту - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? Орнатудан бас тарту керек пе? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No @@ -207,32 +213,32 @@ The installer will quit and all changes will be lost. - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. @@ -483,7 +489,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -940,12 +946,12 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1182,12 +1188,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... - + Location @@ -1226,242 +1232,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1768,12 +1774,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1805,15 +1811,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1821,65 +1827,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1898,22 +1904,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2006,52 +2012,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2324,6 +2330,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2552,7 +2567,7 @@ Output: - + %1 support %1 қолдауы diff --git a/lang/calamares_kn.ts b/lang/calamares_kn.ts index e8f5e94e9..17d1eb781 100644 --- a/lang/calamares_kn.ts +++ b/lang/calamares_kn.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install ಸ್ಥಾಪಿಸು @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -165,39 +165,45 @@ + &Next ಮುಂದಿನ - + &Cancel ರದ್ದುಗೊಳಿಸು - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? ಅನುಸ್ಥಾಪನೆಯನ್ನು ರದ್ದುಮಾಡುವುದೇ? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes ಹೌದು - + &No ಇಲ್ಲ @@ -207,32 +213,32 @@ The installer will quit and all changes will be lost. ಮುಚ್ಚಿರಿ - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. @@ -483,7 +489,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -940,12 +946,12 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1182,12 +1188,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... - + Location @@ -1226,242 +1232,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1768,12 +1774,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1805,15 +1811,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1821,65 +1827,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1898,22 +1904,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2006,52 +2012,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2324,6 +2330,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2552,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_lo.ts b/lang/calamares_lo.ts index 45dab1498..ce728cf14 100644 --- a/lang/calamares_lo.ts +++ b/lang/calamares_lo.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -165,39 +165,45 @@ + &Next - + &Cancel - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No @@ -207,32 +213,32 @@ The installer will quit and all changes will be lost. - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. @@ -483,7 +489,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -940,12 +946,12 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1182,12 +1188,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... - + Location @@ -1226,242 +1232,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1768,12 +1774,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1805,15 +1811,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1821,65 +1827,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1898,22 +1904,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2006,52 +2012,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2324,6 +2330,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2552,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_lt.ts b/lang/calamares_lt.ts index 8024763e3..577f4a452 100644 --- a/lang/calamares_lt.ts +++ b/lang/calamares_lt.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Diegimas @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Vykdoma %1 operacija. - + Bad working directory path Netinkama darbinio katalogo vieta - + Working directory %1 for python job %2 is not readable. Darbinis %1 python katalogas dėl %2 užduoties yra neskaitomas - + Bad main script file Prastas pagrindinio skripto failas - + Main script file %1 for python job %2 is not readable. Pagrindinis scenarijus %1 dėl python %2 užduoties yra neskaitomas - + Boost.Python error in job "%1". Boost.Python klaida užduotyje "%1". @@ -165,40 +165,46 @@ + &Next &Toliau - + &Cancel A&tsisakyti - + Cancel installation without changing the system. Atsisakyti diegimo, nieko sistemoje nekeičiant. - + + &Install + Į&diegti + + + Cancel installation? Atsisakyti diegimo? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Ar tikrai norite atsisakyti dabartinio diegimo proceso? Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. - + &Yes &Taip - + &No &Ne @@ -208,32 +214,32 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. &Užverti - + Continue with setup? Tęsti sąranką? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 diegimo programa, siekdama įdiegti %2, ketina atlikti pakeitimus diske.<br/><strong>Šių pakeitimų atšaukti nebegalėsite.</strong> - + &Install now Į&diegti dabar - + Go &back &Grįžti - + &Done A&tlikta - + The installation is complete. Close the installer. Diegimas užbaigtas. Užverkite diegimo programą. @@ -484,7 +490,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. ContextualProcessJob - + Contextual Processes Job Konteksto procesų užduotis @@ -941,12 +947,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. &Paleisti iš naujo dabar - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Viskas atlikta.</h1><br/>%1 sistema jau įdiegta.<br/>Galite iš naujo paleisti kompiuterį dabar ir naudotis savo naująja sistema; arba galite tęsti naudojimąsi %2 sistema demonstracinėje aplinkoje. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Diegimas nepavyko</h1><br/>%1 nebuvo įdiegta jūsų kompiuteryje.<br/>Klaidos pranešimas buvo: %2. @@ -1183,12 +1189,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. LocaleViewStep - + Loading location data... Įkeliami vietos duomenys... - + Location Vieta @@ -1227,242 +1233,242 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. PWQ - + Password is too short Slaptažodis yra per trumpas - + Password is too long Slaptažodis yra per ilgas - + Password is too weak Slaptažodis yra per silpnas - + Memory allocation error when setting '%1' Atminties paskirstymo klaida, nustatant "%1" - + Memory allocation error Atminties paskirstymo klaida - + The password is the same as the old one Slaptažodis yra toks pats kaip ir senas - + The password is a palindrome Slaptažodis yra palindromas - + The password differs with case changes only Slaptažodyje skiriasi tik raidžių dydis - + The password is too similar to the old one Slaptažodis pernelyg panašus į senąjį - + The password contains the user name in some form Slaptažodyje tam tikru pavidalu yra naudotojo vardas - + The password contains words from the real name of the user in some form Slaptažodyje tam tikra forma yra žodžiai iš tikrojo naudotojo vardo - + The password contains forbidden words in some form Slaptažodyje tam tikra forma yra uždrausti žodžiai - + The password contains less than %1 digits Slaptažodyje yra mažiau nei %1 skaitmenys - + The password contains too few digits Slaptažodyje yra per mažai skaitmenų - + The password contains less than %1 uppercase letters Slaptažodyje yra mažiau nei %1 didžiosios raidės - + The password contains too few uppercase letters Slaptažodyje yra per mažai didžiųjų raidžių - + The password contains less than %1 lowercase letters Slaptažodyje yra mažiau nei %1 mažosios raidės - + The password contains too few lowercase letters Slaptažodyje yra per mažai mažųjų raidžių - + The password contains less than %1 non-alphanumeric characters Slaptažodyje yra mažiau nei %1 neraidiniai ir neskaitiniai simboliai - + The password contains too few non-alphanumeric characters Slaptažodyje yra per mažai neraidinių ir neskaitinių simbolių - + The password is shorter than %1 characters Slaptažodyje yra mažiau nei %1 simboliai - + The password is too short Slaptažodis yra per trumpas - + The password is just rotated old one Slaptažodis yra toks pats kaip ir senas, tik apverstas - + The password contains less than %1 character classes Slaptažodyje yra mažiau nei %1 simbolių klasės - + The password does not contain enough character classes Slaptažodyje nėra pakankamai simbolių klasių - + The password contains more than %1 same characters consecutively Slaptažodyje yra daugiau nei %1 tokie patys simboliai iš eilės - + The password contains too many same characters consecutively Slaptažodyje yra per daug tokių pačių simbolių iš eilės - + The password contains more than %1 characters of the same class consecutively Slaptažodyje yra daugiau nei %1 tos pačios klasės simboliai iš eilės - + The password contains too many characters of the same class consecutively Slaptažodyje yra per daug tos pačios klasės simbolių iš eilės - + The password contains monotonic sequence longer than %1 characters Slaptažodyje yra ilgesnė nei %1 simbolių monotoninė seka - + The password contains too long of a monotonic character sequence Slaptažodyje yra per ilga monotoninių simbolių seka - + No password supplied Nepateiktas joks slaptažodis - + Cannot obtain random numbers from the RNG device Nepavyksta gauti atsitiktinių skaičių iš RNG įrenginio - + Password generation failed - required entropy too low for settings Slaptažodžio generavimas nepavyko - reikalinga entropija nustatymams yra per maža - + The password fails the dictionary check - %1 Slaptažodis nepraeina žodyno patikros - %1 - + The password fails the dictionary check Slaptažodis nepraeina žodyno patikros - + Unknown setting - %1 Nežinomas nustatymas - %1 - + Unknown setting Nežinomas nustatymas - + Bad integer value of setting - %1 Bloga nustatymo sveikojo skaičiaus reikšmė - %1 - + Bad integer value Bloga sveikojo skaičiaus reikšmė - + Setting %1 is not of integer type Nustatymas %1 nėra sveikojo skaičiaus tipo - + Setting is not of integer type Nustatymas nėra sveikojo skaičiaus tipo - + Setting %1 is not of string type Nustatymas %1 nėra eilutės tipo - + Setting is not of string type Nustatymas nėra eilutės tipo - + Opening the configuration file failed Konfigūracijos failo atvėrimas nepavyko - + The configuration file is malformed Konfigūracijos failas yra netaisyklingas - + Fatal failure Lemtingoji klaida - + Unknown error Nežinoma klaida @@ -1769,12 +1775,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. EFI sistemos skaidinys yra būtinas, norint paleisti %1.<br/><br/>Skaidinys buvo sukonfigūruotas su prijungimo tašku <strong>%2</strong>, tačiau jo <strong>esp</strong> vėliavėlė yra nenustatyta.<br/>Tam, kad nustatytumėte vėliavėlę, grįžkite atgal ir redaguokite skaidinį.<br/><br/>Jūs galite tęsti ir nenustatę vėliavėlės, tačiau tokiu atveju, gali nepavykti paleisti jūsų sistemos. - + Boot partition not encrypted Paleidimo skaidinys nėra užšifruotas - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Kartu su užšifruotu šaknies skaidiniu, buvo nustatytas atskiras paleidimo skaidinys, tačiau paleidimo skaidinys nėra užšifruotas.<br/><br/>Dėl tokios sąrankos iškyla tam tikrų saugumo klausimų, kadangi svarbūs sisteminiai failai yra laikomi neužšifruotame skaidinyje.<br/>Jeigu norite, galite tęsti, tačiau failų sistemos atrakinimas įvyks vėliau, sistemos paleidimo metu.<br/>Norėdami užšifruoti paleidimo skaidinį, grįžkite atgal ir sukurkite jį iš naujo bei skaidinių kūrimo lange pažymėkite parinktį <strong>Užšifruoti</strong>. @@ -1806,15 +1812,15 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Vietaženklis - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Pasirinkite išvaizdą ir turinį, skirtą KDE Plasma darbalaukiui. Taip pat galite praleisti šį žingsnį ir konfigūruoti išvaizdą ir turinį, kai sistema bus įdiegta. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + Pasirinkite KDE Plasma darbalaukio išvaizdą ir turinį. Taip pat galite praleisti šį žingsnį ir konfigūruoti išvaizdą ir turinį, kai sistema bus įdiegta. Spustelėjus ant tam tikro išvaizdos ir turinio pasirinkimo, jums bus parodyta tiesioginė peržiūrą. PlasmaLnfViewStep - + Look-and-Feel Išvaizda ir turinys @@ -1822,14 +1828,14 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. ProcessResult - + There was no output from the command. Nebuvo jokios išvesties iš komandos. - + Output: @@ -1838,52 +1844,52 @@ Išvestis: - + External command crashed. Išorinė komanda užstrigo. - + Command <i>%1</i> crashed. Komanda <i>%1</i> užstrigo. - + External command failed to start. Nepavyko paleisti išorinės komandos. - + Command <i>%1</i> failed to start. Nepavyko paleisti komandos <i>%1</i>. - + Internal error when starting command. Paleidžiant komandą, įvyko vidinė klaida. - + Bad parameters for process job call. Netinkamas proceso parametras - + External command failed to finish. Nepavyko pabaigti išorinės komandos. - + Command <i>%1</i> failed to finish in %2 seconds. Nepavyko per %2 sek. pabaigti komandos <i>%1</i>. - + External command finished with errors. Išorinė komanda pabaigta su klaidomis. - + Command <i>%1</i> finished with exit code %2. Komanda <i>%1</i> pabaigta su išėjimo kodu %2. @@ -1902,22 +1908,22 @@ Išvestis: Numatytasis - + unknown nežinoma - + extended išplėsta - + unformatted nesutvarkyta - + swap sukeitimų (swap) @@ -2010,52 +2016,52 @@ Išvestis: Renkama sistemos informacija... - + has at least %1 GB available drive space turi bent %1 GB laisvos vietos diske - + There is not enough drive space. At least %1 GB is required. Neužtenka vietos diske. Reikia bent %1 GB. - + has at least %1 GB working memory turi bent %1 GB darbinės atminties - + The system does not have enough working memory. At least %1 GB is required. Sistemai neužtenka darbinės atminties. Reikia bent %1 GB. - + is plugged in to a power source prijungta prie maitinimo šaltinio - + The system is not plugged in to a power source. Sistema nėra prijungta prie maitinimo šaltinio. - + is connected to the Internet prijungta prie Interneto - + The system is not connected to the Internet. Sistema nėra prijungta prie Interneto. - + The installer is not running with administrator rights. Diegimo programa yra vykdoma be administratoriaus teisių. - + The screen is too small to display the installer. Ekranas yra per mažas, kad būtų parodyta diegimo programa. @@ -2328,6 +2334,15 @@ Išvestis: Apvalkalo procesų užduotis + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + %L1 / %L2 + + SummaryPage @@ -2556,7 +2571,7 @@ Išvestis: <h1>%1</h1><br/><strong>%2<br/>sistemai %3</strong><br/><br/>Autorių teisės 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorių teisės 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Dėkojame: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg ir <a href="https://www.transifex.com/calamares/calamares/">Calamares vertėjų komandai</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> kūrimą remia <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Išlaisvinanti programinė įranga. - + %1 support %1 palaikymas diff --git a/lang/calamares_mr.ts b/lang/calamares_mr.ts index 53c88e590..4d8ee7ddb 100644 --- a/lang/calamares_mr.ts +++ b/lang/calamares_mr.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install अधिष्ठापना @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. %1 क्रिया चालवला जातोय - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -165,39 +165,45 @@ + &Next &पुढे - + &Cancel &रद्द करा - + Cancel installation without changing the system. प्रणालीत बदल न करता अधिष्टापना रद्द करा. - + + &Install + + + + Cancel installation? अधिष्ठापना रद्द करायचे? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes &होय - + &No &नाही @@ -207,32 +213,32 @@ The installer will quit and all changes will be lost. &बंद करा - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &आता अधिष्ठापित करा - + Go &back &मागे जा - + &Done &पूर्ण झाली - + The installation is complete. Close the installer. अधिष्ठापना संपूर्ण झाली. अधिष्ठापक बंद करा. @@ -483,7 +489,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -940,12 +946,12 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1182,12 +1188,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... - + Location @@ -1226,242 +1232,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short परवलीशब्द खूप लहान आहे - + Password is too long परवलीशब्द खूप लांब आहे - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1768,12 +1774,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1805,15 +1811,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1821,65 +1827,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1898,22 +1904,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2006,52 +2012,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2324,6 +2330,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2552,7 +2567,7 @@ Output: - + %1 support %1 पाठबळ diff --git a/lang/calamares_nb.ts b/lang/calamares_nb.ts index ec19dfe68..07c2a7303 100644 --- a/lang/calamares_nb.ts +++ b/lang/calamares_nb.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Installer @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Feil filsti til arbeidsmappe - + Working directory %1 for python job %2 is not readable. Arbeidsmappe %1 for python oppgave %2 er ikke lesbar. - + Bad main script file Ugyldig hovedskriptfil - + Main script file %1 for python job %2 is not readable. Hovedskriptfil %1 for python oppgave %2 er ikke lesbar. - + Boost.Python error in job "%1". Boost.Python feil i oppgave "%1". @@ -165,40 +165,46 @@ + &Next &Neste - + &Cancel &Avbryt - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? Avbryte installasjon? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Vil du virkelig avbryte installasjonen? Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + &Yes &Ja - + &No &Nei @@ -208,32 +214,32 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt.&Lukk - + Continue with setup? Fortsette å sette opp? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 vil nå gjøre endringer på harddisken, for å installere %2. <br/><strong>Du vil ikke kunne omgjøre disse endringene.</strong> - + &Install now &Installer nå - + Go &back Gå &tilbake - + &Done &Ferdig - + The installation is complete. Close the installer. Installasjonen er fullført. Lukk installeringsprogrammet. @@ -484,7 +490,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt.&Start på nytt nå - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Innnstallasjonen mislyktes</h1><br/>%1 har ikke blitt installert på datamaskinen din.<br/>Feilmeldingen var: %2. @@ -1183,12 +1189,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. LocaleViewStep - + Loading location data... - + Location Plassering @@ -1227,242 +1233,242 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. PWQ - + Password is too short Passordet er for kort - + Password is too long Passordet er for langt - + Password is too weak Passordet er for svakt - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one Passordet er det samme som det gamle - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one Passordet likner for mye på det gamle - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters Passordet inneholder mindre enn %1 store bokstaver - + The password contains too few uppercase letters Passordet inneholder for få store bokstaver - + The password contains less than %1 lowercase letters Passordet inneholder mindre enn %1 små bokstaver - + The password contains too few lowercase letters Passordet inneholder for få små bokstaver - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short Passordet er for kort - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively Passordet inneholder for mange like tegn etter hverandre - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type Innstillingen er ikke av type streng - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error Ukjent feil @@ -1769,12 +1775,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Ugyldige parametere for prosessens oppgavekall - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: Standard - + unknown - + extended - + unformatted - + swap @@ -2007,52 +2013,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source er koblet til en strømkilde - + The system is not plugged in to a power source. Systemet er ikke koblet til en strømkilde. - + is connected to the Internet er tilkoblet Internett - + The system is not connected to the Internet. Systemet er ikke tilkoblet Internett. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support diff --git a/lang/calamares_nl.ts b/lang/calamares_nl.ts index c9fc340c9..01739e4b5 100644 --- a/lang/calamares_nl.ts +++ b/lang/calamares_nl.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Installeer @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Bewerking %1 uitvoeren. - + Bad working directory path Ongeldig pad voor huidige map - + Working directory %1 for python job %2 is not readable. Werkmap %1 voor python taak %2 onleesbaar. - + Bad main script file Onjuist hoofdscriptbestand - + Main script file %1 for python job %2 is not readable. Hoofdscriptbestand %1 voor python taak %2 onleesbaar. - + Boost.Python error in job "%1". Boost.Python fout in taak "%1". @@ -165,40 +165,46 @@ + &Next &Volgende - + &Cancel &Afbreken - + Cancel installation without changing the system. Installatie afbreken zonder aanpassingen aan het systeem. - + + &Install + + + + Cancel installation? Installatie afbreken? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Wil je het huidige installatieproces echt afbreken? Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. - + &Yes &ja - + &No &Nee @@ -208,32 +214,32 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. &Sluiten - + Continue with setup? Doorgaan met installatie? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Het %1 installatieprogramma zal nu aanpassingen maken aan je schijf om %2 te installeren.<br/><strong>Deze veranderingen kunnen niet ongedaan gemaakt worden.</strong> - + &Install now Nu &installeren - + Go &back Ga &terug - + &Done Voltooi&d - + The installation is complete. Close the installer. De installatie is voltooid. Sluit het installatie-programma. @@ -484,7 +490,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. &Nu herstarten - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Klaar.</h1><br/>%1 is op je computer geïnstalleerd.<br/>Je mag je nieuwe systeem nu herstarten of de %2 Live omgeving blijven gebruiken. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Installatie Mislukt</h1><br/>%1 werd niet op de computer geïnstalleerd. <br/>De foutboodschap was: %2 @@ -1183,12 +1189,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. LocaleViewStep - + Loading location data... Laden van locatiegegevens... - + Location Locatie @@ -1227,242 +1233,242 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. PWQ - + Password is too short Het wachtwoord is te kort - + Password is too long Het wachtwoord is te lang - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Een EFI systeempartitie is vereist om %1 op te starten.<br/><br/>Een partitie is ingesteld met aankoppelpunt <strong>%2</strong>, maar de de <strong>esp</strong>-vlag is niet aangevinkt.<br/>Om deze vlag aan te vinken, ga terug en pas de partitie aan.<br/><br/>Je kan verdergaan zonder deze vlag, maar mogelijk start je systeem dan niet op. - + Boot partition not encrypted Bootpartitie niet versleuteld - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Een aparte bootpartitie was ingesteld samen met een versleutelde rootpartitie, maar de bootpartitie zelf is niet versleuteld.<br/><br/>Dit is niet volledig veilig, aangezien belangrijke systeembestanden bewaard worden op een niet-versleutelde partitie.<br/>Je kan doorgaan als je wil, maar het ontgrendelen van bestandssystemen zal tijdens het opstarten later plaatsvinden.<br/>Om de bootpartitie toch te versleutelen: keer terug en maak de bootpartitie opnieuw, waarbij je <strong>Versleutelen</strong> aanvinkt in het venster partitie aanmaken. @@ -1806,15 +1812,15 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Onjuiste parameters voor procestaak - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: Standaard - + unknown onbekend - + extended uitgebreid - + unformatted niet-geformateerd - + swap wisselgeheugen @@ -2007,52 +2013,52 @@ Output: Systeeminformatie verzamelen... - + has at least %1 GB available drive space tenminste %1 GB vrije schijfruimte heeft - + There is not enough drive space. At least %1 GB is required. Er is onvoldoende vrije schijfruimte. Tenminste %1 GB is vereist. - + has at least %1 GB working memory tenminste %1 GB werkgeheugen heeft - + The system does not have enough working memory. At least %1 GB is required. Dit systeem heeft onvoldoende werkgeheugen. Tenminste %1 GB is vereist. - + is plugged in to a power source aangesloten is op netstroom - + The system is not plugged in to a power source. Dit systeem is niet aangesloten op netstroom. - + is connected to the Internet verbonden is met het Internet - + The system is not connected to the Internet. Dit systeem is niet verbonden met het Internet. - + The installer is not running with administrator rights. Het installatieprogramma draait zonder administratorrechten. - + The screen is too small to display the installer. Het schem is te klein on het installatieprogramma te vertonen. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support %1 ondersteuning diff --git a/lang/calamares_pl.ts b/lang/calamares_pl.ts index 21c493ff2..61f00aeac 100644 --- a/lang/calamares_pl.ts +++ b/lang/calamares_pl.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Zainstaluj @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Wykonuję operację %1. - + Bad working directory path Niepoprawna ścieżka katalogu roboczego - + Working directory %1 for python job %2 is not readable. Katalog roboczy %1 dla zadań pythona %2 jest nieosiągalny. - + Bad main script file Niepoprawny główny plik skryptu - + Main script file %1 for python job %2 is not readable. Główny plik skryptu %1 dla zadań pythona %2 jest nieczytelny. - + Boost.Python error in job "%1". Wystąpił błąd Boost.Python w zadaniu "%1". @@ -165,40 +165,46 @@ + &Next &Dalej - + &Cancel &Anuluj - + Cancel installation without changing the system. Anuluj instalację bez dokonywania zmian w systemie. - + + &Install + + + + Cancel installation? Anulować instalację? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Czy na pewno chcesz anulować obecny proces instalacji? Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. - + &Yes &Tak - + &No &Nie @@ -208,32 +214,32 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Zam&knij - + Continue with setup? Kontynuować z programem instalacyjnym? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Instalator %1 zamierza przeprowadzić zmiany na Twoim dysku, aby zainstalować %2.<br/><strong>Nie będziesz mógł cofnąć tych zmian.</strong> - + &Install now &Zainstaluj teraz - + Go &back &Cofnij się - + &Done &Ukończono - + The installation is complete. Close the installer. Instalacja ukończona pomyślnie. Możesz zamknąć instalator. @@ -484,7 +490,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.&Uruchom ponownie teraz - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Wszystko gotowe.</h1><br/>%1 został zainstalowany na Twoim komputerze.<br/>Możesz teraz ponownie uruchomić komputer, aby przejść do nowego systemu, albo kontynuować używanie środowiska live %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Instalacja nie powiodła się</h1><br/>Nie udało się zainstalować %1 na Twoim komputerze.<br/>Komunikat o błędzie: %2. @@ -1183,12 +1189,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. LocaleViewStep - + Loading location data... Wczytywanie danych położenia - + Location Położenie @@ -1227,242 +1233,242 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. PWQ - + Password is too short Hasło jest zbyt krótkie - + Password is too long Hasło jest zbyt długie - + Password is too weak Hasło jest zbyt słabe - + Memory allocation error when setting '%1' Wystąpił błąd przydzielania pamięci przy ustawieniu '%1' - + Memory allocation error Błąd przydzielania pamięci - + The password is the same as the old one Hasło jest takie samo jak poprzednie - + The password is a palindrome Hasło jest palindromem - + The password differs with case changes only Hasła różnią się tylko wielkością znaków - + The password is too similar to the old one Hasło jest zbyt podobne do poprzedniego - + The password contains the user name in some form Hasło zawiera nazwę użytkownika - + The password contains words from the real name of the user in some form Hasło zawiera fragment pełnej nazwy użytkownika - + The password contains forbidden words in some form Hasło zawiera jeden z niedozwolonych wyrazów - + The password contains less than %1 digits Hasło składa się z mniej niż %1 znaków - + The password contains too few digits Hasło zawiera zbyt mało znaków - + The password contains less than %1 uppercase letters Hasło składa się z mniej niż %1 wielkich liter - + The password contains too few uppercase letters Hasło zawiera zbyt mało wielkich liter - + The password contains less than %1 lowercase letters Hasło składa się z mniej niż %1 małych liter - + The password contains too few lowercase letters Hasło zawiera zbyt mało małych liter - + The password contains less than %1 non-alphanumeric characters Hasło składa się z mniej niż %1 znaków niealfanumerycznych - + The password contains too few non-alphanumeric characters Hasło zawiera zbyt mało znaków niealfanumerycznych - + The password is shorter than %1 characters Hasło zawiera mniej niż %1 znaków - + The password is too short Hasło jest zbyt krótkie - + The password is just rotated old one Hasło jest odwróceniem poprzedniego - + The password contains less than %1 character classes Hasło składa się z mniej niż %1 rodzajów znaków - + The password does not contain enough character classes Hasło zawiera zbyt mało rodzajów znaków - + The password contains more than %1 same characters consecutively Hasło zawiera ponad %1 powtarzających się tych samych znaków - + The password contains too many same characters consecutively Hasło zawiera zbyt wiele powtarzających się znaków - + The password contains more than %1 characters of the same class consecutively Hasło zawiera więcej niż %1 znaków tego samego rodzaju - + The password contains too many characters of the same class consecutively Hasło składa się ze zbyt wielu znaków tego samego rodzaju - + The password contains monotonic sequence longer than %1 characters Hasło zawiera jednakowy ciąg dłuższy niż %1 znaków - + The password contains too long of a monotonic character sequence Hasło zawiera zbyt długi ciąg jednakowych znaków - + No password supplied Nie podano hasła - + Cannot obtain random numbers from the RNG device Nie można uzyskać losowych znaków z urządzenia RNG - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 Nieznane ustawienie - %1 - + Unknown setting Nieznane ustawienie - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type Ustawienie %1 nie jest liczbą całkowitą - + Setting is not of integer type Ustawienie nie jest liczbą całkowitą - + Setting %1 is not of string type Ustawienie %1 nie jest ciągiem znaków - + Setting is not of string type Ustawienie nie jest ciągiem znaków - + Opening the configuration file failed Nie udało się otworzyć pliku konfiguracyjnego - + The configuration file is malformed Plik konfiguracyjny jest uszkodzony - + Fatal failure Krytyczne niepowodzenie - + Unknown error Nieznany błąd @@ -1769,12 +1775,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Partycja systemu EFI jest konieczna, aby rozpocząć %1.<br/><br/>Partycja została skonfigurowana w punkcie montowania <strong>%2</strong>, ale nie została ustawiona flaga <strong>esp</strong>. Aby ustawić tę flagę, wróć i zmodyfikuj tę partycję.<br/><br/>Możesz kontynuować bez ustawienia tej flagi, ale Twój system może się nie uruchomić. - + Boot partition not encrypted Niezaszyfrowana partycja rozruchowa - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Oddzielna partycja rozruchowa została skonfigurowana razem z zaszyfrowaną partycją roota, ale partycja rozruchowa nie jest szyfrowana.<br/><br/>Nie jest to najbezpieczniejsze rozwiązanie, ponieważ ważne pliki systemowe znajdują się na niezaszyfrowanej partycji.<br/>Możesz kontynuować, ale odblokowywanie systemu nastąpi później, w trakcie uruchamiania.<br/>Aby zaszyfrować partycję rozruchową, wróć i utwórz ją ponownie zaznaczając opcję <strong>Szyfruj</strong> w oknie tworzenia partycji. @@ -1806,15 +1812,15 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Zainstaluj motyw pulpitu KDE Plazmy. Możesz pominąć ten krok i wybrać, jak będzie wyglądał Twój system po zakończeniu instalacji. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + PlasmaLnfViewStep - + Look-and-Feel @@ -1822,13 +1828,13 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. ProcessResult - + There was no output from the command. - + Output: @@ -1837,52 +1843,52 @@ Wyjście: - + External command crashed. Zewnętrzne polecenie zakończone niepowodzeniem. - + Command <i>%1</i> crashed. Wykonanie polecenia <i>%1</i> nie powiodło się. - + External command failed to start. Nie udało się uruchomić zewnętrznego polecenia. - + Command <i>%1</i> failed to start. Polecenie <i>%1</i> nie zostało uruchomione. - + Internal error when starting command. Wystąpił wewnętrzny błąd podczas uruchamiania polecenia. - + Bad parameters for process job call. Błędne parametry wywołania zadania. - + External command failed to finish. Nie udało się ukończyć zewnętrznego polecenia. - + Command <i>%1</i> failed to finish in %2 seconds. Nie udało się ukończyć polecenia <i>%1</i> w ciągu %2 sekund. - + External command finished with errors. Ukończono zewnętrzne polecenie z błędami. - + Command <i>%1</i> finished with exit code %2. Polecenie <i>%1</i> zostało ukończone z błędem o kodzie %2. @@ -1901,22 +1907,22 @@ Wyjście: Domyślnie - + unknown nieznany - + extended rozszerzona - + unformatted niesformatowany - + swap przestrzeń wymiany @@ -2009,52 +2015,52 @@ Wyjście: Zbieranie informacji o systemie... - + has at least %1 GB available drive space ma przynajmniej %1 GB dostępnego miejsca na dysku - + There is not enough drive space. At least %1 GB is required. Nie ma wystarczającej ilości miejsca na dysku. Wymagane jest przynajmniej %1 GB. - + has at least %1 GB working memory ma przynajmniej %1 GB pamięci roboczej - + The system does not have enough working memory. At least %1 GB is required. System nie posiada wystarczającej ilości pamięci roboczej. Wymagane jest przynajmniej %1 GB. - + is plugged in to a power source jest podłączony do źródła zasilania - + The system is not plugged in to a power source. System nie jest podłączony do źródła zasilania. - + is connected to the Internet jest podłączony do Internetu - + The system is not connected to the Internet. System nie jest podłączony do Internetu. - + The installer is not running with administrator rights. Instalator jest uruchomiony bez praw administratora. - + The screen is too small to display the installer. Zbyt niska rozdzielczość ekranu, aby wyświetlić instalator. @@ -2327,6 +2333,15 @@ Wyjście: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2555,7 +2570,7 @@ Wyjście: <h1>%1</h1><br/><strong>%2<br/>dla %3</strong><br/><br/>Prawa autorskie 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Prawa autorskie 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Podziękowania dla: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg i <a href="https://www.transifex.com/calamares/calamares/">zespołu tłumaczy Calamares</a>.<br/><br/><a href="https://calamares.io/">Projekt Calamares</a> jest sponsorowany przez <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Wsparcie %1 diff --git a/lang/calamares_pl_PL.ts b/lang/calamares_pl_PL.ts index 5736f08fb..a243935d9 100644 --- a/lang/calamares_pl_PL.ts +++ b/lang/calamares_pl_PL.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Zainstaluj @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Niepoprawna ścieżka folderu roboczego - + Working directory %1 for python job %2 is not readable. Folder roboczy %1 zadania pythona %2 jest nieosiągalny. - + Bad main script file Niepoprawny główny plik skryptu - + Main script file %1 for python job %2 is not readable. Główny plik skryptu %1 zadania pythona %2 jest nieczytelny. - + Boost.Python error in job "%1". Błąd Boost.Python w zadaniu "%1". @@ -165,40 +165,46 @@ + &Next &Dalej - + &Cancel &Anuluj - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? Przerwać instalację? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Czy naprawdę chcesz przerwać instalację? Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - + &Yes - + &No @@ -208,32 +214,32 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - + Continue with setup? Kontynuować instalację? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Zainstaluj - + Go &back &Wstecz - + &Done - + The installation is complete. Close the installer. @@ -484,7 +490,7 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. LocaleViewStep - + Loading location data... Wczytywanie danych położenia - + Location Położenie @@ -1227,242 +1233,242 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Błędne parametry wywołania zadania. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: Domyślnie - + unknown - + extended - + unformatted - + swap @@ -2007,52 +2013,52 @@ Output: Zbieranie informacji o systemie... - + has at least %1 GB available drive space ma przynajmniej %1 GB dostępnego miejsca na dysku - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory ma przynajmniej %1 GB pamięci roboczej - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source jest podłączony do źródła zasilania - + The system is not plugged in to a power source. - + is connected to the Internet jest podłączony do Internetu - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index ea326e6a6..c60a2dd5c 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Instalar @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Executando operação %1. - + Bad working directory path Caminho de diretório de trabalho ruim - + Working directory %1 for python job %2 is not readable. Diretório de trabalho %1 para a tarefa do python %2 não é legível. - + Bad main script file Arquivo de script principal ruim - + Main script file %1 for python job %2 is not readable. Arquivo de script principal %1 para a tarefa do python %2 não é legível. - + Boost.Python error in job "%1". Boost.Python erro na tarefa "%1". @@ -165,40 +165,46 @@ + &Next &Próximo - + &Cancel &Cancelar - + Cancel installation without changing the system. Cancelar instalação sem modificar o sistema. - + + &Install + &Instalar + + + Cancel installation? Cancelar a instalação? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Você deseja realmente cancelar a instalação atual? O instalador será fechado e todas as alterações serão perdidas. - + &Yes &Sim - + &No &Não @@ -208,32 +214,32 @@ O instalador será fechado e todas as alterações serão perdidas.Fe&char - + Continue with setup? Continuar com configuração? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> O instalador %1 está prestes a fazer alterações no disco a fim de instalar %2.<br/><strong>Você não será capaz de desfazer estas mudanças.</strong> - + &Install now &Instalar agora - + Go &back &Voltar - + &Done Completa&do - + The installation is complete. Close the installer. A instalação está completa. Feche o instalador. @@ -486,7 +492,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. ContextualProcessJob - + Contextual Processes Job Tarefa de Processos Contextuais @@ -943,12 +949,12 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.&Reiniciar agora - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Tudo pronto.</h1><br/>%1 foi instalado no seu computador.<br/>Agora você pode reiniciar seu novo sistema ou continuar usando o ambiente Live %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>A instalação falhou</h1><br/>%1 não foi instalado em seu computador.<br/>A mensagem de erro foi: %2. @@ -1185,12 +1191,12 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. LocaleViewStep - + Loading location data... Carregando dados de localização... - + Location Localização @@ -1229,242 +1235,242 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. PWQ - + Password is too short A senha é muito curta - + Password is too long A senha é muito longa - + Password is too weak A senha é muito fraca - + Memory allocation error when setting '%1' Erro de alocação de memória ao definir '% 1' - + Memory allocation error Erro de alocação de memória - + The password is the same as the old one A senha é a mesma que a antiga - + The password is a palindrome A senha é um palíndromo - + The password differs with case changes only A senha difere apenas com mudanças entre maiúsculas ou minúsculas - + The password is too similar to the old one A senha é muito semelhante à antiga - + The password contains the user name in some form A senha contém o nome de usuário em alguma forma - + The password contains words from the real name of the user in some form A senha contém palavras do nome real do usuário em alguma forma - + The password contains forbidden words in some form A senha contém palavras proibidas de alguma forma - + The password contains less than %1 digits A senha contém menos de %1 dígitos - + The password contains too few digits A senha contém poucos dígitos - + The password contains less than %1 uppercase letters A senha contém menos que %1 letras maiúsculas - + The password contains too few uppercase letters A senha contém poucas letras maiúsculas - + The password contains less than %1 lowercase letters A senha contém menos que %1 letras minúsculas - + The password contains too few lowercase letters A senha contém poucas letras minúsculas - + The password contains less than %1 non-alphanumeric characters A senha contém menos que %1 caracteres não alfanuméricos - + The password contains too few non-alphanumeric characters A senha contém poucos caracteres não alfanuméricos - + The password is shorter than %1 characters A senha é menor que %1 caracteres - + The password is too short A senha é muito curta - + The password is just rotated old one A senha é apenas uma antiga modificada - + The password contains less than %1 character classes A senha contém menos de %1 tipos de caracteres - + The password does not contain enough character classes A senha não contém tipos suficientes de caracteres - + The password contains more than %1 same characters consecutively A senha contém mais que %1 caracteres iguais consecutivamente - + The password contains too many same characters consecutively A senha contém muitos caracteres iguais consecutivamente - + The password contains more than %1 characters of the same class consecutively A senha contém mais que %1 caracteres do mesmo tipo consecutivamente - + The password contains too many characters of the same class consecutively A senha contém muitos caracteres da mesma classe consecutivamente - + The password contains monotonic sequence longer than %1 characters A senha contém uma sequência monotônica com mais de %1 caracteres - + The password contains too long of a monotonic character sequence A senha contém uma sequência de caracteres monotônicos muito longa - + No password supplied Nenhuma senha fornecida - + Cannot obtain random numbers from the RNG device Não é possível obter números aleatórios do dispositivo RNG - + Password generation failed - required entropy too low for settings A geração de senha falhou - a entropia requerida é muito baixa para as configurações - + The password fails the dictionary check - %1 A senha falhou na verificação do dicionário - %1 - + The password fails the dictionary check A senha falhou na verificação do dicionário - + Unknown setting - %1 Configuração desconhecida - %1 - + Unknown setting Configuração desconhecida - + Bad integer value of setting - %1 Valor de número inteiro errado na configuração - %1 - + Bad integer value Valor de número inteiro errado - + Setting %1 is not of integer type A configuração %1 não é do tipo inteiro - + Setting is not of integer type A configuração não é de tipo inteiro - + Setting %1 is not of string type A configuração %1 não é do tipo string - + Setting is not of string type A configuração não é de tipo string - + Opening the configuration file failed Falha ao abrir o arquivo de configuração - + The configuration file is malformed O arquivo de configuração está defeituoso - + Fatal failure Falha fatal - + Unknown error Erro desconhecido @@ -1771,12 +1777,12 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Uma partição de sistema EFI é necessária para iniciar %1.<br/><br/>Uma partição foi configurada com o ponto de montagem <strong>%2</strong>, mas seu marcador <strong>esp</strong> não foi definido.<br/>Para definir o marcador, volte e edite a partição.<br/><br/>Você pode continuar sem definir um marcador, mas seu sistema pode não iniciar. - + Boot partition not encrypted Partição de boot não criptografada - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Uma partição de inicialização separada foi configurada juntamente com uma partição raiz criptografada, mas a partição de inicialização não é criptografada.<br/><br/>Há preocupações de segurança quanto a esse tipo de configuração, porque arquivos de sistema importantes são mantidos em uma partição não criptografada.<br/>Você pode continuar se quiser, mas o desbloqueio do sistema de arquivos acontecerá mais tarde durante a inicialização do sistema.<br/>Para criptografar a partição de inicialização, volte e recrie-a, selecionando <strong>Criptografar</strong> na janela de criação da partição. @@ -1808,15 +1814,15 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Substituto - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Por favor, escolha o tema para o Desktop KDE Plasma. Você também pode pular esta etapa e configurar o tema assim que o sistema for instalado. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + Por favor escolha um estilo visual para o Desktop KDE Plasma. Você também pode pular esse passo e configurar o estilo visual quando o sistema estiver instalado. Ao clicar na seleção de estilo visual será possível visualizar um preview daquele estilo visual. PlasmaLnfViewStep - + Look-and-Feel Tema @@ -1824,14 +1830,14 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. ProcessResult - + There was no output from the command. Não houve saída do comando. - + Output: @@ -1840,52 +1846,52 @@ Saída: - + External command crashed. O comando externo falhou. - + Command <i>%1</i> crashed. O comando <i>%1</i> falhou. - + External command failed to start. O comando externo falhou ao iniciar. - + Command <i>%1</i> failed to start. O comando <i>%1</i> falhou ao iniciar. - + Internal error when starting command. Erro interno ao iniciar o comando. - + Bad parameters for process job call. Parâmetros ruins para a chamada da tarefa do processo. - + External command failed to finish. O comando externo falhou ao finalizar. - + Command <i>%1</i> failed to finish in %2 seconds. O comando <i>%1</i> falhou ao finalizar em %2 segundos. - + External command finished with errors. O comando externo foi concluído com erros. - + Command <i>%1</i> finished with exit code %2. O comando <i>%1</i> foi concluído com o código %2. @@ -1904,22 +1910,22 @@ Saída: Padrão - + unknown desconhecido - + extended estendida - + unformatted não formatado - + swap swap @@ -2012,52 +2018,52 @@ Saída: Coletando informações do sistema... - + has at least %1 GB available drive space tenha pelo menos %1 GB de espaço disponível no dispositivo - + There is not enough drive space. At least %1 GB is required. Não há espaço suficiente no armazenamento. Pelo menos %1 GB é necessário. - + has at least %1 GB working memory tenha pelo menos %1 GB de memória - + The system does not have enough working memory. At least %1 GB is required. O sistema não tem memória de trabalho suficiente. Pelo menos %1 GB é necessário. - + is plugged in to a power source está conectado a uma fonte de energia - + The system is not plugged in to a power source. O sistema não está conectado a uma fonte de energia. - + is connected to the Internet está conectado à Internet - + The system is not connected to the Internet. O sistema não está conectado à Internet. - + The installer is not running with administrator rights. O instalador não está sendo executado com permissões de administrador. - + The screen is too small to display the installer. A tela é muito pequena para exibir o instalador. @@ -2330,6 +2336,15 @@ Saída: Processos de trabalho do Shell + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + %L1 / %L2 + + SummaryPage @@ -2558,7 +2573,7 @@ Saída: <h1>%1</h1><br/><strong>%2<br/>para %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimentos a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg e às <a href="https://www.transifex.com/calamares/calamares/">equipes de tradutores do Calamares</a>.<br/><br/>O desenvolvimento do <a href="https://calamares.io/">Calamares</a> tem apoio de <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suporte diff --git a/lang/calamares_pt_PT.ts b/lang/calamares_pt_PT.ts index 45370ddff..18e946a06 100644 --- a/lang/calamares_pt_PT.ts +++ b/lang/calamares_pt_PT.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Instalar @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Operação %1 em execução. - + Bad working directory path Caminho do directório de trabalho errado - + Working directory %1 for python job %2 is not readable. Directório de trabalho %1 para a tarefa python %2 não é legível. - + Bad main script file Ficheiro de script principal errado - + Main script file %1 for python job %2 is not readable. Ficheiro de script principal %1 para a tarefa python %2 não é legível. - + Boost.Python error in job "%1". Erro Boost.Python na tarefa "%1". @@ -165,40 +165,46 @@ + &Next &Próximo - + &Cancel &Cancelar - + Cancel installation without changing the system. Cancelar instalar instalação sem modificar o sistema. - + + &Install + &Instalar + + + Cancel installation? Cancelar a instalação? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Tem a certeza que pretende cancelar o atual processo de instalação? O instalador será encerrado e todas as alterações serão perdidas. - + &Yes &Sim - + &No &Não @@ -208,32 +214,32 @@ O instalador será encerrado e todas as alterações serão perdidas.&Fechar - + Continue with setup? Continuar com a configuração? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> O %1 instalador está prestes a fazer alterações ao seu disco em ordem para instalar %2.<br/><strong>Não será capaz de desfazer estas alterações.</strong> - + &Install now &Instalar agora - + Go &back Voltar &atrás - + &Done &Feito - + The installation is complete. Close the installer. A instalação está completa. Feche o instalador. @@ -437,7 +443,7 @@ O instalador será encerrado e todas as alterações serão perdidas. Clearing mounts for partitioning operations on %1. - A clarear montagens para operações de particionamento em %1. + A limpar montagens para operações de particionamento em %1. @@ -450,7 +456,7 @@ O instalador será encerrado e todas as alterações serão perdidas. Clear all temporary mounts. - Clarear todas as montagens temporárias. + Limpar todas as montagens temporárias. @@ -465,7 +471,7 @@ O instalador será encerrado e todas as alterações serão perdidas. Cleared all temporary mounts. - Clareadas todas as montagens temporárias. + Limpou todas as montagens temporárias. @@ -484,7 +490,7 @@ O instalador será encerrado e todas as alterações serão perdidas. ContextualProcessJob - + Contextual Processes Job Tarefa de Processos Contextuais @@ -941,12 +947,12 @@ O instalador será encerrado e todas as alterações serão perdidas.&Reiniciar agora - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Tudo feito</h1><br/>%1 foi instalado no seu computador.<br/>Pode agora reiniciar para o seu novo sistema, ou continuar a usar o %2 ambiente Live. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Instalação Falhada</h1><br/>%1 não foi instalado no seu computador.<br/>A mensagem de erro foi: %2. @@ -1183,12 +1189,12 @@ O instalador será encerrado e todas as alterações serão perdidas. LocaleViewStep - + Loading location data... A carregar dados de localização... - + Location Localização @@ -1227,242 +1233,242 @@ O instalador será encerrado e todas as alterações serão perdidas. PWQ - + Password is too short A palavra-passe é demasiado curta - + Password is too long A palavra-passe é demasiado longa - + Password is too weak A palavra-passe é demasiado fraca - + Memory allocation error when setting '%1' Erro de alocação de memória quando definido '%1' - + Memory allocation error Erro de alocação de memória - + The password is the same as the old one A palavra-passe é a mesma que a antiga - + The password is a palindrome A palavra-passe é um palíndromo - + The password differs with case changes only A palavra-passe difere com apenas diferenças de maiúsculas e minúsculas - + The password is too similar to the old one A palavra-passe é demasiado semelhante à antiga - + The password contains the user name in some form A palavra passe contém de alguma forma o nome do utilizador - + The password contains words from the real name of the user in some form A palavra passe contém de alguma forma palavras do nome real do utilizador - + The password contains forbidden words in some form A palavra-passe contém de alguma forma palavras proibidas - + The password contains less than %1 digits A palavra-passe contém menos de %1 dígitos - + The password contains too few digits A palavra-passe contém muito poucos dígitos - + The password contains less than %1 uppercase letters A palavra-passe contém menos de %1 letras maiúsculas - + The password contains too few uppercase letters A palavra-passe contém muito poucas letras maiúsculas - + The password contains less than %1 lowercase letters A palavra-passe contém menos de %1 letras minúsculas - + The password contains too few lowercase letters A palavra-passe contém muito poucas letras minúsculas - + The password contains less than %1 non-alphanumeric characters A palavra-passe contém menos de %1 carateres não-alfanuméricos - + The password contains too few non-alphanumeric characters A palavra-passe contém muito pouco carateres não alfa-numéricos - + The password is shorter than %1 characters A palavra-passe é menor do que %1 carateres - + The password is too short A palavra-passe é demasiado pequena - + The password is just rotated old one A palavra-passe é apenas uma antiga alternada - + The password contains less than %1 character classes A palavra-passe contém menos de %1 classe de carateres - + The password does not contain enough character classes A palavra-passe não contém classes de carateres suficientes - + The password contains more than %1 same characters consecutively A palavra-passe contém apenas mais do que %1 carateres iguais consecutivos - + The password contains too many same characters consecutively A palavra-passe contém demasiados carateres iguais consecutivos - + The password contains more than %1 characters of the same class consecutively A palavra-passe contém mais do que %1 carateres consecutivos da mesma classe - + The password contains too many characters of the same class consecutively A palavra-passe contém demasiados carateres consecutivos da mesma classe - + The password contains monotonic sequence longer than %1 characters A palavra-passe contém sequência mono tónica mais longa do que %1 carateres - + The password contains too long of a monotonic character sequence A palavra-passe contém uma sequência mono tónica de carateres demasiado longa - + No password supplied Nenhuma palavra-passe fornecida - + Cannot obtain random numbers from the RNG device Não é possível obter sequência aleatória de números a partir do dispositivo RNG - + Password generation failed - required entropy too low for settings Geração de palavra-passe falhada - entropia obrigatória demasiado baixa para definições - + The password fails the dictionary check - %1 A palavra-passe falha a verificação do dicionário - %1 - + The password fails the dictionary check A palavra-passe falha a verificação do dicionário - + Unknown setting - %1 Definição desconhecida - %1 - + Unknown setting Definição desconhecida - + Bad integer value of setting - %1 Valor inteiro incorreto para definição - %1 - + Bad integer value Valor inteiro incorreto - + Setting %1 is not of integer type Definição %1 não é do tipo inteiro - + Setting is not of integer type Definição não é do tipo inteiro - + Setting %1 is not of string type Definição %1 não é do tipo cadeia de carateres - + Setting is not of string type Definição não é do tipo cadeira de carateres - + Opening the configuration file failed Abertura da configuração de ficheiro falhou - + The configuration file is malformed O ficheiro de configuração está mal formado - + Fatal failure Falha fatal - + Unknown error Erro desconhecido @@ -1769,12 +1775,12 @@ O instalador será encerrado e todas as alterações serão perdidas.É necessária uma partição de sistema EFI para iniciar %1.<br/><br/>A partitição foi configurada com o ponto de montagem <strong>%2</strong> mas a sua flag <strong>esp</strong> não está definida.<br/>Para definir a flag, volte atrás e edite a partição.<br/><br/>Pode continuar sem definir a flag mas o seu sistema pode falhar o arranque. - + Boot partition not encrypted Partição de arranque não encriptada - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Foi preparada uma partição de arranque separada juntamente com uma partição root encriptada, mas a partição de arranque não está encriptada.<br/><br/>Existem preocupações de segurança com este tipo de configuração, por causa de importantes ficheiros de sistema serem guardados numa partição não encriptada.<br/>Se desejar pode continuar, mas o destrancar do sistema de ficheiros irá ocorrer mais tarde durante o arranque do sistema.<br/>Para encriptar a partição de arranque, volte atrás e recrie-a, e selecione <strong>Encriptar</strong> na janela de criação de partições. @@ -1806,15 +1812,15 @@ O instalador será encerrado e todas as alterações serão perdidas.Espaço reservado - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Por favor escolha uma aparência para o Ambiente de Trabalho KDE Plasma. Também pode saltar este passo e configurar a aparência depois do sistema instalado. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + Por favor escolha a aparência para o Ambiente de Trabalho KDE Plasma. Pode também saltar este passo e configurar a aparência uma vez instalado o sistema. Ao clicar numa seleção de aparência irá ter uma pré-visualização ao vivo dessa aparência. PlasmaLnfViewStep - + Look-and-Feel Aparência @@ -1822,14 +1828,14 @@ O instalador será encerrado e todas as alterações serão perdidas. ProcessResult - + There was no output from the command. O comando não produziu saída de dados. - + Output: @@ -1838,52 +1844,52 @@ Saída de Dados: - + External command crashed. O comando externo "crashou". - + Command <i>%1</i> crashed. Comando <i>%1</i> "crashou". - + External command failed to start. Comando externo falhou ao iniciar. - + Command <i>%1</i> failed to start. Comando <i>%1</i> falhou a inicialização. - + Internal error when starting command. Erro interno ao iniciar comando. - + Bad parameters for process job call. Maus parâmetros para chamada de processamento de tarefa. - + External command failed to finish. Comando externo falhou a finalização. - + Command <i>%1</i> failed to finish in %2 seconds. Comando <i>%1</i> falhou ao finalizar em %2 segundos. - + External command finished with errors. Comando externo finalizou com erros. - + Command <i>%1</i> finished with exit code %2. Comando <i>%1</i> finalizou com código de saída %2. @@ -1902,22 +1908,22 @@ Saída de Dados: Padrão - + unknown desconhecido - + extended estendido - + unformatted não formatado - + swap swap @@ -2010,52 +2016,52 @@ Saída de Dados: A recolher informação de sistema... - + has at least %1 GB available drive space tem pelo menos %1 GB de espaço livre em disco - + There is not enough drive space. At least %1 GB is required. Não existe espaço livre suficiente em disco. É necessário pelo menos %1 GB. - + has at least %1 GB working memory tem pelo menos %1 GB de memória disponível - + The system does not have enough working memory. At least %1 GB is required. O sistema não tem memória disponível suficiente. É necessário pelo menos %1 GB. - + is plugged in to a power source está ligado a uma fonte de energia - + The system is not plugged in to a power source. O sistema não está ligado a uma fonte de energia. - + is connected to the Internet está ligado à internet - + The system is not connected to the Internet. O sistema não está ligado à internet. - + The installer is not running with administrator rights. O instalador não está a correr com permissões de administrador. - + The screen is too small to display the installer. O ecrã tem um tamanho demasiado pequeno para mostrar o instalador. @@ -2328,6 +2334,15 @@ Saída de Dados: Tarefa de Processos da Shell + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + %L1 / %L2 + + SummaryPage @@ -2533,7 +2548,7 @@ Saída de Dados: &About - &Sobre + &Acerca @@ -2548,7 +2563,7 @@ Saída de Dados: About %1 installer - Sobre %1 instalador + Acerca %1 instalador @@ -2556,7 +2571,7 @@ Saída de Dados: <h1>%1</h1><br/><strong>%2<br/>para %3</strong><br/><br/>Direitos de cópia 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Direitos de cópia 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimentos a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg e à <a href="https://www.transifex.com/calamares/calamares/">equipa de tradutores do Calamares</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> desenvolvimento patrocinado por <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suporte diff --git a/lang/calamares_ro.ts b/lang/calamares_ro.ts index 58b0e3c24..1f1cead71 100644 --- a/lang/calamares_ro.ts +++ b/lang/calamares_ro.ts @@ -4,7 +4,7 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - <strong>Mediul de boot</strong> al acestui sistem.<br><br>Sisteme x86 mai vechi suportă numai <strong>BIOS</strong>.<br>Sisteme moderne folosesc de obicei <strong>EFI</strong>, dar ar putea fi afișate ca BIOS dacă au fost configurate în modul de compatibilitate. + <strong>Mediul de boot</strong> al acestui sistem.<br><br>Sistemele x86 mai vechi suportă numai <strong>BIOS</strong>.<br>Sisteme moderne folosesc de obicei <strong>EFI</strong>, dar ar putea fi afișate ca BIOS dacă au fost pornite în modul de compatibilitate. @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Instalează @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Se rulează operațiunea %1. - + Bad working directory path Calea dosarului de lucru este proastă - + Working directory %1 for python job %2 is not readable. Dosarul de lucru %1 pentru sarcina python %2 nu este citibil. - + Bad main script file Fișierul script principal este prost - + Main script file %1 for python job %2 is not readable. Fișierul script peincipal %1 pentru sarcina Python %2 nu este citibil. - + Boost.Python error in job "%1". Eroare Boost.Python în sarcina „%1”. @@ -165,40 +165,46 @@ + &Next &Următorul - + &Cancel &Anulează - + Cancel installation without changing the system. Anulează instalarea fără schimbarea sistemului. - + + &Install + Instalează + + + Cancel installation? Anulez instalarea? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Doriți să anulați procesul curent de instalare? Programul de instalare va ieși, iar toate modificările vor fi pierdute. - + &Yes &Da - + &No &Nu @@ -208,32 +214,32 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.În&chide - + Continue with setup? Continuați configurarea? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Programul de instalare %1 este pregătit să facă schimbări pe discul dumneavoastră pentru a instala %2.<br/><strong>Nu veți putea anula aceste schimbări.</strong> - + &Install now &Instalează acum - + Go &back Î&napoi - + &Done &Gata - + The installation is complete. Close the installer. Instalarea este completă. Închide instalatorul. @@ -484,7 +490,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. ContextualProcessJob - + Contextual Processes Job Job de tip Contextual Process @@ -941,12 +947,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.&Repornește acum - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Gata.</h1><br/>%1 a fost instalat pe calculatorul dumneavoastră.<br/>Puteți reporni noul sistem, sau puteți continua să folosiți sistemul de operare portabil %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Instalarea a eșuat</h1><br/>%1 nu a mai fost instalat pe acest calculator.<br/>Mesajul de eroare era: %2. @@ -1183,12 +1189,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. LocaleViewStep - + Loading location data... Se încarcă datele locației... - + Location Locație @@ -1227,244 +1233,247 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. PWQ - + Password is too short Parola este prea scurtă - + Password is too long Parola este prea lungă - + Password is too weak - + Parola este prea slabă - + Memory allocation error when setting '%1' - + Eroare de alocare a memorie in timpul setării '%1' - + Memory allocation error - + Eroare de alocare a memoriei - + The password is the same as the old one - + Parola este aceeasi a si cea veche - + The password is a palindrome - + Parola este un palindrom - + The password differs with case changes only - + Parola diferă doar prin schimbăarii ale majusculelor - + The password is too similar to the old one - + Parola este prea similară cu cea vehe - + The password contains the user name in some form - + Parola contine numele de utilizator intr-o anume formă - + The password contains words from the real name of the user in some form - + Parola contine cuvinte din numele real al utilizatorului intr-o anumita formă - + The password contains forbidden words in some form - + Parola contine cuvinte interzise int-o anumita formă - + The password contains less than %1 digits - + Parola contine mai putin de %1 caractere - + The password contains too few digits - + Parola contine prea putine caractere - + The password contains less than %1 uppercase letters - + Parola contine mai putin de %1 litera cu majusculă - + The password contains too few uppercase letters - + Parola contine prea putine majuscule - + The password contains less than %1 lowercase letters - + Parola contine mai putin de %1 minuscule - + The password contains too few lowercase letters - + Parola contine prea putine minuscule - + The password contains less than %1 non-alphanumeric characters - + Parola contine mai putin de %1 caractere non-alfanumerice - + The password contains too few non-alphanumeric characters - + Parola contine prea putine caractere non-alfanumerice + + + - + The password is shorter than %1 characters - + Parola este mai scurta de %1 caractere - + The password is too short - + Parola este prea mica - + The password is just rotated old one - + Parola este doar cea veche rasturnata - + The password contains less than %1 character classes - + Parola contine mai putin de %1 clase de caractere - + The password does not contain enough character classes - + Parola nu contine destule clase de caractere - + The password contains more than %1 same characters consecutively - + Parola ontine mai mult de %1 caractere identice consecutiv - + The password contains too many same characters consecutively - + Parola ontine prea multe caractere identice consecutive - + The password contains more than %1 characters of the same class consecutively - + Parola contine mai mult de %1 caractere ale aceleiaşi clase consecutive - + The password contains too many characters of the same class consecutively - + Parola contine prea multe caractere ale aceleiaşi clase consecutive - + The password contains monotonic sequence longer than %1 characters - + Parola ontine o secventa monotonica mai lunga de %1 caractere - + The password contains too long of a monotonic character sequence - + Parola contine o secventa de caractere monotonica prea lunga - + No password supplied - + Nicio parola nu a fost furnizata - + Cannot obtain random numbers from the RNG device - + Nu s-a putut obtine un numar aleator de la dispozitivul RNG - + Password generation failed - required entropy too low for settings - + Generarea parolei a esuat - necesita entropie prea mica pentru setari - + The password fails the dictionary check - %1 - + Parola a esuat verificarea dictionarului - %1 - + The password fails the dictionary check - + Parola a esuat verificarea dictionarului - + Unknown setting - %1 - + Setare necunoscuta - %1 - + Unknown setting - + Setare necunoscuta - + Bad integer value of setting - %1 - + Valoare gresita integrala a setari - %1 - + Bad integer value - + Valoare gresita integrala a setari - + Setting %1 is not of integer type - + Setarea %1 nu este de tip integral - + Setting is not of integer type - + Setarea nu este de tipul integral - + Setting %1 is not of string type - + Setarea %1 nu este de tipul şir - + Setting is not of string type - + Setarea nu este de tipul şir - + Opening the configuration file failed - + Deschiderea fisierului de configuratie a esuat - + The configuration file is malformed - + Fisierul de configuratie este malformat - + Fatal failure - + Esec fatal - + Unknown error - + Eroare necunoscuta @@ -1769,12 +1778,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.O partiție de sistem EFI este necesară pentru a porni %1.<br/><br/>A fost configurată o partiție cu punct de montare la <strong>%2</strong> dar flag-ul <strong>esp</strong> al acesteia nu a fost setat.<br/>Pentru a seta flag-ul, reveniți și editați partiția.<br/><br/>Puteți continua și fără setarea flag-ului, dar este posibil ca sistemul să nu pornească. - + Boot partition not encrypted Partiția de boot nu este criptată - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. A fost creată o partiție de boot împreună cu o partiție root criptată, dar partiția de boot nu este criptată.<br/><br/>Sunt potențiale probleme de securitate cu un astfel de aranjament deoarece importante fișiere de sistem sunt păstrate pe o partiție necriptată.<br/>Puteți continua dacă doriți, dar descuierea sistemului se va petrece mai târziu în timpul pornirii.<br/>Pentru a cripta partiția de boot, reveniți și recreați-o, alegând opțiunea <strong>Criptează</strong> din fereastra de creare de partiții. @@ -1806,15 +1815,15 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Substituent - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Trebuie să alegi o interfață pentru KDE Plasma Desktop Poți sări acest pas și să configurezi interfața și după instalarea sistemului. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + Alege un aspect pentru KDE Plasma Desktop. Deasemenea poti sari acest pas si configura aspetul odata ce sistemul este instalat. Apasand pe selectia aspectului iti va oferi o previzualizare live al acelui aspect. PlasmaLnfViewStep - + Look-and-Feel Interfață @@ -1822,13 +1831,14 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. ProcessResult - + There was no output from the command. - + +Nu a existat nici o iesire din comanda - + Output: @@ -1837,52 +1847,52 @@ Output - + External command crashed. Comanda externă a eșuat. - + Command <i>%1</i> crashed. Comanda <i>%1</i> a eșuat. - + External command failed to start. Comanda externă nu a putut fi pornită. - + Command <i>%1</i> failed to start. Comanda <i>%1</i> nu a putut fi pornită. - + Internal error when starting command. Eroare internă la pornirea comenzii. - + Bad parameters for process job call. Parametri proști pentru apelul sarcinii de proces. - + External command failed to finish. Finalizarea comenzii externe a eșuat. - + Command <i>%1</i> failed to finish in %2 seconds. Comanda <i>%1</i> nu a putut fi finalizată în %2 secunde. - + External command finished with errors. Comanda externă finalizată cu erori. - + Command <i>%1</i> finished with exit code %2. Comanda <i>%1</i> finalizată cu codul de ieșire %2. @@ -1901,22 +1911,22 @@ Output Implicit - + unknown necunoscut - + extended extins - + unformatted neformatat - + swap swap @@ -2009,52 +2019,52 @@ Output Se adună informații despre sistem... - + has at least %1 GB available drive space are cel puțin %1 spațiu disponibil - + There is not enough drive space. At least %1 GB is required. Nu este suficient spațiu disponibil. Sunt necesari cel puțin %1 GB. - + has at least %1 GB working memory are cel puțin %1 GB de memorie utilizabilă - + The system does not have enough working memory. At least %1 GB is required. Sistemul nu are suficientă memorie utilizabilă. Sunt necesari cel puțin %1 GB. - + is plugged in to a power source este alimentat cu curent - + The system is not plugged in to a power source. Sistemul nu este alimentat cu curent. - + is connected to the Internet este conectat la Internet - + The system is not connected to the Internet. Sistemul nu este conectat la Internet. - + The installer is not running with administrator rights. Programul de instalare nu rulează cu privilegii de administrator. - + The screen is too small to display the installer. Ecranu este prea mic pentru a afișa instalatorul. @@ -2327,6 +2337,15 @@ Output Shell-ul procesează sarcina. + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + %L1 / %L2 + + SummaryPage @@ -2555,7 +2574,7 @@ Output <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Mulțumiri: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg și <a href="https://www.transifex.com/calamares/calamares/">echipei de traducători Calamares</a>.<br/><br/><a href="https://calamares.io/">Calamares</a>, dezvoltare sponsorizată de <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suport diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts index 3fc140067..2b3adbfe4 100644 --- a/lang/calamares_ru.ts +++ b/lang/calamares_ru.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Установить @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Выполняется действие %1. - + Bad working directory path Неверный путь к рабочему каталогу - + Working directory %1 for python job %2 is not readable. Рабочий каталог %1 для задачи python %2 недоступен для чтения. - + Bad main script file Ошибочный главный файл сценария - + Main script file %1 for python job %2 is not readable. Главный файл сценария %1 для задачи python %2 недоступен для чтения. - + Boost.Python error in job "%1". Boost.Python ошибка в задаче "%1". @@ -165,39 +165,45 @@ + &Next &Далее - + &Cancel О&тмена - + Cancel installation without changing the system. Отменить установку без изменения системы. - + + &Install + &Установить + + + Cancel installation? Отменить установку? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Действительно прервать процесс установки? Программа установки сразу прекратит работу, все изменения будут потеряны. - + &Yes &Да - + &No &Нет @@ -207,32 +213,32 @@ The installer will quit and all changes will be lost. &Закрыть - + Continue with setup? Продолжить установку? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Программа установки %1 готова внести изменения на Ваш диск, чтобы установить %2.<br/><strong>Отменить эти изменения будет невозможно.</strong> - + &Install now Приступить к &установке - + Go &back &Назад - + &Done &Готово - + The installation is complete. Close the installer. Установка завершена. Закройте установщик. @@ -483,7 +489,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -940,12 +946,12 @@ The installer will quit and all changes will be lost. П&ерезагрузить - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Готово.</h1><br/>Система %1 установлена на Ваш компьютер.<br/>Вы можете перезагрузить компьютер и использовать Вашу новую систему или продолжить работу в Live окружении %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1182,12 +1188,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... Загружаю данные о местоположениях... - + Location Местоположение @@ -1226,242 +1232,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short Слишком короткий пароль - + Password is too long Слишком длинный пароль - + Password is too weak Пароль слишком слабый - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one Пароль такой же, как и старый - + The password is a palindrome Пароль является палиндромом - + The password differs with case changes only Пароль отличается только регистром символов - + The password is too similar to the old one Пароль слишком похож на старый - + The password contains the user name in some form Пароль содержит имя пользователя - + The password contains words from the real name of the user in some form Пароль содержит слова из реального имени пользователя - + The password contains forbidden words in some form Пароль содержит запрещённые слова - + The password contains less than %1 digits Пароль содержит менее %1 цифр - + The password contains too few digits В пароле слишком мало цифр - + The password contains less than %1 uppercase letters Пароль содержит менее %1 заглавных букв - + The password contains too few uppercase letters В пароле слишком мало заглавных букв - + The password contains less than %1 lowercase letters Пароль содержит менее %1 строчных букв - + The password contains too few lowercase letters В пароле слишком мало строчных букв - + The password contains less than %1 non-alphanumeric characters Пароль содержит менее %1 не буквенно-цифровых символов - + The password contains too few non-alphanumeric characters В пароле слишком мало не буквенно-цифровых символов - + The password is shorter than %1 characters Пароль короче %1 символов - + The password is too short Пароль слишком короткий - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively Пароль содержит более %1 одинаковых последовательных символов - + The password contains too many same characters consecutively Пароль содержит слишком много одинаковых последовательных символов - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device Не удаётся получить случайные числа с устройства RNG - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 Пароль не прошёл проверку на использование словарных слов - %1 - + The password fails the dictionary check Пароль не прошёл проверку на использование словарных слов - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed Не удалось открыть конфигурационный файл - + The configuration file is malformed - + Fatal failure - + Unknown error Неизвестная ошибка @@ -1768,12 +1774,12 @@ The installer will quit and all changes will be lost. Чтобы начать, необходим системный раздел EFI %1.<br/><br/>Был настроен раздел с точкой монтирования <strong>%2</strong>, но его флаг <strong>esp</strong> не установлен.<br/>Для установки флага вернитесь и отредактируйте раздел.<br/><br/>Вы можете продолжить и без установки флага, но Ваша система может не загрузиться. - + Boot partition not encrypted Загрузочный раздел не зашифрован - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Включено шифрование корневого раздела, но использован отдельный загрузочный раздел без шифрования.<br/><br/>При такой конфигурации возникают проблемы с безопасностью, потому что важные системные файлы хранятся на разделе без шифрования.<br/>Если хотите, можете продолжить, но файловая система будет разблокирована позднее во время загрузки системы.<br/>Чтобы включить шифрование загрузочного раздела, вернитесь назад и снова создайте его, отметив <strong>Шифровать</strong> в окне создания раздела. @@ -1805,15 +1811,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1821,65 +1827,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. Сбой внешней команды. - + Command <i>%1</i> crashed. Сбой команды <i>%1</i>. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Неверные параметры для вызова процесса. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Внешняя команда завершилась с ошибками - + Command <i>%1</i> finished with exit code %2. Команда <i>%1</i> завершилась с кодом %2. @@ -1898,22 +1904,22 @@ Output: По умолчанию - + unknown неизвестный - + extended расширенный - + unformatted неформатированный - + swap swap @@ -2006,52 +2012,52 @@ Output: Сбор информации о системе... - + has at least %1 GB available drive space доступно как минимум %1 ГБ свободного дискового пространства - + There is not enough drive space. At least %1 GB is required. Недостаточно места на дисках. Необходимо как минимум %1 ГБ. - + has at least %1 GB working memory доступно как минимум %1 ГБ оперативной памяти - + The system does not have enough working memory. At least %1 GB is required. Недостаточно оперативной памяти. Необходимо как минимум %1 ГБ. - + is plugged in to a power source подключено сетевое питание - + The system is not plugged in to a power source. Сетевое питание не подключено. - + is connected to the Internet присутствует выход в сеть Интернет - + The system is not connected to the Internet. Отсутствует выход в Интернет. - + The installer is not running with administrator rights. Программа установки не запущена с привилегиями администратора. - + The screen is too small to display the installer. Слишком маленький экран для окна установщика. @@ -2324,6 +2330,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2552,7 +2567,7 @@ Output: - + %1 support %1 поддержка diff --git a/lang/calamares_sk.ts b/lang/calamares_sk.ts index 4312b4124..f56653d99 100644 --- a/lang/calamares_sk.ts +++ b/lang/calamares_sk.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Inštalácia @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Spúšťa sa operácia %1. - + Bad working directory path Nesprávna cesta k pracovnému adresáru - + Working directory %1 for python job %2 is not readable. Pracovný adresár %1 pre úlohu jazyka python %2 nie je možné čítať. - + Bad main script file Nesprávny súbor hlavného skriptu - + Main script file %1 for python job %2 is not readable. Súbor hlavného skriptu %1 pre úlohu jazyka python %2 nie je možné čítať. - + Boost.Python error in job "%1". Chyba knižnice Boost.Python v úlohe „%1“. @@ -165,40 +165,46 @@ + &Next Ď&alej - + &Cancel &Zrušiť - + Cancel installation without changing the system. Zruší inštaláciu bez zmeny systému. - + + &Install + + + + Cancel installation? Zrušiť inštaláciu? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Skutočne chcete zrušiť aktuálny priebeh inštalácie? Inštalátor sa ukončí a všetky zmeny budú stratené. - + &Yes _Áno - + &No _Nie @@ -208,32 +214,32 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. _Zavrieť - + Continue with setup? Pokračovať v inštalácii? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Inštalátor distribúcie %1 sa chystá vykonať zmeny na vašom disku, aby nainštaloval distribúciu %2. <br/><strong>Tieto zmeny nebudete môcť vrátiť späť.</strong> - + &Install now &Inštalovať teraz - + Go &back Prejsť s&päť - + &Done _Dokončiť - + The installation is complete. Close the installer. Inštalácia je dokončená. Zatvorí inštalátor. @@ -484,7 +490,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. ContextualProcessJob - + Contextual Processes Job Úloha kontextových procesov @@ -941,12 +947,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. &Reštartovať teraz - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Všetko je dokončené.</h1><br/>Distribúcia %1 bola nainštalovaná do vášho počítača.<br/>Teraz môžete reštartovať počítač a spustiť váš nový systém, alebo pokračovať v používaní živého prostredia distribúcie %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Inštalácia zlyhala</h1><br/>Distribúcia %1 nebola nainštalovaná do vášho počítača.<br/>Chybová hláška: %2. @@ -1183,12 +1189,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. LocaleViewStep - + Loading location data... Načítavajú sa údaje umiestnenia... - + Location Umiestnenie @@ -1227,242 +1233,242 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. PWQ - + Password is too short Heslo je príliš krátke - + Password is too long Heslo je príliš dlhé - + Password is too weak Heslo je príliš slabé - + Memory allocation error when setting '%1' Chyba počas vyhradzovania pamäte pri nastavovaní „%1“ - + Memory allocation error Chyba počas vyhradzovania pamäte - + The password is the same as the old one Heslo je rovnaké ako to staré - + The password is a palindrome Heslo je palindróm - + The password differs with case changes only Heslo sa odlišuje iba vo veľkosti písmen - + The password is too similar to the old one Heslo je príliš podobné ako to staré - + The password contains the user name in some form Heslo obsahuje v nejakom tvare používateľské meno - + The password contains words from the real name of the user in some form Heslo obsahuje v nejakom tvare slová zo skutočného mena používateľa - + The password contains forbidden words in some form - + The password contains less than %1 digits Heslo obsahuje menej ako %1 číslic - + The password contains too few digits - + The password contains less than %1 uppercase letters Heslo obsahuje menej ako %1 veľkých písmen - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters Heslo obsahuje menej ako %1 malých písmen - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters Heslo je kratšie ako %1 znakov - + The password is too short Heslo je príliš krátke - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied Nebolo poskytnuté žiadne heslo - + Cannot obtain random numbers from the RNG device Nedajú sa získať náhodné čísla zo zariadenia RNG - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 Heslo zlyhalo pri slovníkovej kontrole - %1 - + The password fails the dictionary check Heslo zlyhalo pri slovníkovej kontrole - + Unknown setting - %1 Neznáme nastavenie - %1 - + Unknown setting Neznáme nastavenie - + Bad integer value of setting - %1 Nesprávna celočíselná hodnota nastavenia - %1 - + Bad integer value Nesprávna celočíselná hodnota - + Setting %1 is not of integer type Nastavenie %1 nie je celé číslo - + Setting is not of integer type Nastavenie nie je celé číslo - + Setting %1 is not of string type Nastavenie %1 nie je reťazec - + Setting is not of string type Nastavenie nie je reťazec - + Opening the configuration file failed Zlyhalo otváranie konfiguračného súboru - + The configuration file is malformed Konfiguračný súbor je poškodený - + Fatal failure Závažné zlyhanie - + Unknown error Neznáma chyba @@ -1769,12 +1775,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Oddiel systému EFI je potrebný pre spustenie distribúcie %1.<br/><br/>Oddiel bol nastavený s bodom pripojenia <strong>%2</strong>, ale nemá nastavenú značku <strong>esp</strong>.<br/>Na nastavenie značky prejdite späť a upravte oddiel.<br/><br/>Môžete pokračovať bez nastavenia značky, ale váš systém môže pri spustení zlyhať. - + Boot partition not encrypted Zavádzací oddiel nie je zašifrovaný - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Spolu so zašifrovaným koreňovým oddielom bol nainštalovaný oddelený zavádzací oddiel, ktorý ale nie je zašifrovaný.<br/><br/>S týmto typom inštalácie je ohrozená bezpečnosť, pretože dôležité systémové súbory sú uchovávané na nezašifrovanom oddieli.<br/>Ak si to želáte, môžete pokračovať, ale neskôr, počas spúšťania systému sa vykoná odomknutie systému súborov.<br/>Na zašifrovanie zavádzacieho oddielu prejdite späť a vytvorte ju znovu vybraním voľby <strong>Zašifrovať</strong> v okne vytvárania oddielu. @@ -1806,15 +1812,15 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Zástupný text - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Prosím, zvoľte vzhľad a dojem pre pracovné prostredie KDE Plasma. Tento krok môžete preskočiť a nastaviť vzhľad a dojem po inštalácii systému. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + PlasmaLnfViewStep - + Look-and-Feel Vzhľad a dojem @@ -1822,14 +1828,14 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. ProcessResult - + There was no output from the command. Žiadny výstup z príkazu. - + Output: @@ -1838,52 +1844,52 @@ Výstup: - + External command crashed. Externý príkaz nečakane skončil. - + Command <i>%1</i> crashed. Príkaz <i>%1</i> nečakane skončil. - + External command failed to start. Zlyhalo spustenie externého príkazu. - + Command <i>%1</i> failed to start. Zlyhalo spustenie príkazu <i>%1</i> . - + Internal error when starting command. Počas spúšťania príkazu sa vyskytla interná chyba. - + Bad parameters for process job call. Nesprávne parametre pre volanie úlohy procesu. - + External command failed to finish. Zlyhalo dokončenie externého príkazu. - + Command <i>%1</i> failed to finish in %2 seconds. Zlyhalo dokončenie príkazu <i>%1</i> počas doby %2 sekúnd. - + External command finished with errors. Externý príkaz bol dokončený s chybami. - + Command <i>%1</i> finished with exit code %2. Príkaz <i>%1</i> skončil s ukončovacím kódom %2. @@ -1902,22 +1908,22 @@ Výstup: Predvolený - + unknown neznámy - + extended rozšírený - + unformatted nenaformátovaný - + swap odkladací @@ -2010,52 +2016,52 @@ Výstup: Zbierajú sa informácie o počítači... - + has at least %1 GB available drive space obsahuje aspoň %1 GB voľného miesta na disku - + There is not enough drive space. At least %1 GB is required. Nie je dostatok miesta na disku. Vyžaduje sa aspoň %1 GB. - + has at least %1 GB working memory obsahuje aspoň %1 GB voľnej operačnej pamäte - + The system does not have enough working memory. At least %1 GB is required. Počítač neobsahuje dostatok operačnej pamäte. Vyžaduje sa aspoň %1 GB. - + is plugged in to a power source je pripojený k zdroju napájania - + The system is not plugged in to a power source. Počítač nie je pripojený k zdroju napájania. - + is connected to the Internet je pripojený k internetu - + The system is not connected to the Internet. Počítač nie je pripojený k internetu. - + The installer is not running with administrator rights. Inštalátor nie je spustený s právami správcu. - + The screen is too small to display the installer. Obrazovka je príliš malá na to, aby bolo možné zobraziť inštalátor. @@ -2328,6 +2334,15 @@ Výstup: Úloha procesov príkazového riadku + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2556,7 +2571,7 @@ Výstup: <h1>%1</h1><br/><strong>%2<br/>pre distribúciu %3</strong><br/><br/>Autorské práva 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorské práva 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Poďakovanie: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg a <a href="https://www.transifex.com/calamares/calamares/">tím prekladateľov inštalátora Calamares</a>.<br/><br/>Vývoj inštalátora <a href="https://calamares.io/">Calamares</a> je podporovaný spoločnosťou <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Podpora distribúcie %1 diff --git a/lang/calamares_sl.ts b/lang/calamares_sl.ts index f31a6da78..c45992309 100644 --- a/lang/calamares_sl.ts +++ b/lang/calamares_sl.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Namesti @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Nepravilna pot delovne mape - + Working directory %1 for python job %2 is not readable. Ni mogoče brati delovne mape %1 za pythonovo opravilo %2. - + Bad main script file Nepravilna datoteka glavnega skripta - + Main script file %1 for python job %2 is not readable. Ni mogoče brati datoteke %1 glavnega skripta za pythonovo opravilo %2. - + Boost.Python error in job "%1". Napaka Boost.Python v opravilu "%1". @@ -165,40 +165,46 @@ + &Next &Naprej - + &Cancel - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? Preklic namestitve? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Ali res želite preklicati trenutni namestitveni proces? Namestilni program se bo končal in vse spremembe bodo izgubljene. - + &Yes - + &No @@ -208,32 +214,32 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. @@ -484,7 +490,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. LocaleViewStep - + Loading location data... Nalaganje podatkov položaja ... - + Location Položaj @@ -1227,242 +1233,242 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Nepravilni parametri za klic procesa opravila. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: Privzeto - + unknown - + extended - + unformatted - + swap @@ -2007,52 +2013,52 @@ Output: Zbiranje informacij o sistemu ... - + has at least %1 GB available drive space ima vsaj %1 GB razpoložljivega prostora na disku - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory ima vsaj %1 GB delovnega pomnilnika - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source je priklopljen na vir napajanja - + The system is not plugged in to a power source. - + is connected to the Internet je povezan s spletom - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support diff --git a/lang/calamares_sq.ts b/lang/calamares_sq.ts index a1bbf7108..50c23408f 100644 --- a/lang/calamares_sq.ts +++ b/lang/calamares_sq.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Instaloje @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Po xhirohet %1 veprim. - + Bad working directory path Shteg i gabuar drejtorie pune - + Working directory %1 for python job %2 is not readable. Drejtoria e punës %1 për aktin python %2 s’është e lexueshme. - + Bad main script file Kartelë kryesore programthi e dëmtuar - + Main script file %1 for python job %2 is not readable. Kartela kryesore e programthit file %1 për aktin python %2 s’është e lexueshme. - + Boost.Python error in job "%1". Gabim Boost.Python tek akti \"%1\". @@ -165,40 +165,46 @@ + &Next &Pasuesi - + &Cancel &Anuloje - + Cancel installation without changing the system. Anuloje instalimin pa ndryshuar sistemin. - + + &Install + &Instaloje + + + Cancel installation? Të anulohet instalimi? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Doni vërtet të anulohet procesi i tanishëm i instalimit? Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. - + &Yes &Po - + &No &Jo @@ -208,32 +214,32 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. &Mbylle - + Continue with setup? Të vazhdohet me rregullimin? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Instaluesi %1 është një hap larg nga bërja e ndryshimeve në diskun tuaj, që të mund të instalojë %2.<br/><strong>S’do të jeni në gjendje t’i zhbëni këto ndryshime.</strong> - + &Install now &Instaloje tani - + Go &back Kthehu &mbrapsht - + &Done &U bë - + The installation is complete. Close the installer. Instalimi u plotësua. Mbylle instaluesin. @@ -484,7 +490,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. ContextualProcessJob - + Contextual Processes Job Akt Procesesh Kontekstuale @@ -941,12 +947,12 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. &Rinise tani - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Kaq qe.</h1><br/>%1 është instaluar në kompjuterin tuaj.<br/>Tani mundeni ta rinisni me sistemin tuaj të ri, ose të vazhdoni përdorimin e mjedisit %2 Live. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Instalimi Dështoi</h1><br/>%1 s’u instalua në kompjuterin tuaj.<br/>Mesazhi i gabimit qe: %2. @@ -1183,12 +1189,12 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. LocaleViewStep - + Loading location data... Po ngarkohen të dhëna vendndodhjeje… - + Location Vendndodhje @@ -1227,242 +1233,242 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. PWQ - + Password is too short Fjalëkalimi është shumë i shkurtër - + Password is too long Fjalëkalimi është shumë i gjatë - + Password is too weak Fjalëkalimi është shumë i dobët - + Memory allocation error when setting '%1' Gabim caktimi kujtese kur rregullohej '%1' - + Memory allocation error Gabim caktimi kujtese - + The password is the same as the old one Fjalëkalimi është i njëjtë me të vjetrin - + The password is a palindrome Fjalëkalimi është një palindromë - + The password differs with case changes only Fjalëkalimet ndryshojnë vetëm nga shkronja të mëdha apo të vogla - + The password is too similar to the old one Fjalëkalimi është shumë i ngjashëm me të vjetrin - + The password contains the user name in some form Fjalëkalimi, në një farë mënyre, përmban emrin e përdoruesit - + The password contains words from the real name of the user in some form Fjalëkalim, në një farë mënyre, përmban fjalë nga emri i vërtetë i përdoruesit - + The password contains forbidden words in some form Fjalëkalimi, në një farë mënyre, përmban fjalë të ndaluara - + The password contains less than %1 digits Fjalëkalimi përmban më pak se %1 shifra - + The password contains too few digits Fjalëkalimi përmban shumë pak shifra - + The password contains less than %1 uppercase letters Fjalëkalimi përmban më pak se %1 shkronja të mëdha - + The password contains too few uppercase letters Fjalëkalimi përmban pak shkronja të mëdha - + The password contains less than %1 lowercase letters Fjalëkalimi përmban më pak se %1 shkronja të vogla - + The password contains too few lowercase letters Fjalëkalimi përmban pak shkronja të vogla - + The password contains less than %1 non-alphanumeric characters Fjalëkalimi përmban më pak se %1 shenja jo alfanumerike - + The password contains too few non-alphanumeric characters Fjalëkalimi përmban pak shenja jo alfanumerike - + The password is shorter than %1 characters Fjalëkalimi është më i shkurtër se %1 shenja - + The password is too short Fjalëkalimi është shumë i shkurtër - + The password is just rotated old one Fjalëkalimi është i vjetri i ricikluar - + The password contains less than %1 character classes Fjalëkalimi përmban më pak se %1 klasa shkronjash - + The password does not contain enough character classes Fjalëkalimi nuk përmban klasa të mjaftueshme shenjash - + The password contains more than %1 same characters consecutively Fjalëkalimi përmban më shumë se %1 shenja të njëjta njëra pas tjetrës - + The password contains too many same characters consecutively Fjalëkalimi përmban shumë shenja të njëjta njëra pas tjetrës - + The password contains more than %1 characters of the same class consecutively Fjalëkalimi përmban më shumë se %1 shenja të së njëjtës klasë njëra pas tjetrës - + The password contains too many characters of the same class consecutively Fjalëkalimi përmban shumë shenja të së njëjtës klasë njëra pas tjetrës - + The password contains monotonic sequence longer than %1 characters Fjalëkalimi përmban varg monoton më të gjatë se %1 shenja - + The password contains too long of a monotonic character sequence Fjalëkalimi përmban varg monoton gjatë shenjash - + No password supplied S’u dha fjalëkalim - + Cannot obtain random numbers from the RNG device S’merren dot numra të rëndomtë nga pajisja RNG - + Password generation failed - required entropy too low for settings Prodhimi i fjalëkalimit dështoi - entropi e domosdoshme për rregullimin shumë e ulët - + The password fails the dictionary check - %1 Fjalëkalimi s’kaloi dot kontrollin kundrejt fjalorit - %1 - + The password fails the dictionary check Fjalëkalimi s’kaloi dot kontrollin kundrejt fjalorit - + Unknown setting - %1 Rregullim i panjohur - %1 - + Unknown setting Rregullim i panjohur - + Bad integer value of setting - %1 Vlerë e plotë e gabuar për rregullimin - %1 - + Bad integer value Vlerë e plotë e gabuar - + Setting %1 is not of integer type Rregullimi për %1 is s’është numër i plotë - + Setting is not of integer type Rregullimi s’është numër i plotë - + Setting %1 is not of string type Rregullimi për %1 is s’është i llojit varg - + Setting is not of string type Rregullimi s’është i llojit varg - + Opening the configuration file failed Dështoi hapja e kartelës së formësimit - + The configuration file is malformed Kartela e formësimit është e keqformuar - + Fatal failure Dështim fatal - + Unknown error Gabim i panjohur @@ -1769,12 +1775,12 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Që të niset %1, është e domosdoshme një ndarje sistemi EFI.<br/><br/>Është formësuar një ndarje me pikë montimi <strong>%2</strong>, por pa i vënë flamurkën <strong>esp</strong>.<br/>Që t’ia vini, kthehuni mbrapsht dhe përpunoni ndarjen.<br/><br/>Mund të vazhdoni pa i vënë flamurkën, por mundet që sistemi të mos arrijë dot të niset. - + Boot partition not encrypted Ndarje nisjesh e pafshehtëzuar - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Tok me ndarjen e fshehtëzuar <em>root</em> qe rregulluar edhe një ndarje <em>boot</em> veçmas, por ndarja <em>boot</em> s’është e fshehtëzuar.<br/><br/>Ka preokupime mbi sigurinë e këtij lloj rregullimi, ngaqë kartela të rëndësishme sistemi mbahen në një ndarje të pafshehtëzuar.<br/>Mund të vazhdoni nëse doni, por shkyçja e sistemit të kartelave do të ndodhë më vonë, gjatë nisjes së sistemit.<br/>Që të fshehtëzoni ndarjen <em>boot</em>, kthehuni mbrapsht dhe rikrijojeni, duke përzgjedhur te skena e krijimit të ndarjes <strong>Fshehtëzoje</strong>. @@ -1806,15 +1812,15 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Vendmbajtëse - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Ju lutemi, zgjidhni një look-and-feel (pamje dhe ndjesi) për Desktopin KDE Plasma. Mund edhe ta anashkaloni këtë hap dhe pamje-dhe-ndjesi ta formësoni pasi të jetë instaluar sistemi. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + Ju lutemi, zgjidhni një look-and-feel për KDE Plasma Desktop. Mundeni edhe ta anashkaloni këtë hap dhe ta formësoni look-and-feel-in pasi të jetë instaluar sistemi. Klikimi mbi një përzgjedhje look-and-feel do t’ju japë një paraparje të atypëratyshme të saj. PlasmaLnfViewStep - + Look-and-Feel Pamje-dhe-Ndjesi @@ -1822,14 +1828,14 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. ProcessResult - + There was no output from the command. S’pati përfundim nga urdhri. - + Output: @@ -1838,52 +1844,52 @@ Përfundim: - + External command crashed. Urdhri i jashtëm u vithis. - + Command <i>%1</i> crashed. Urdhri <i>%1</i> u vithis. - + External command failed to start. Dështoi nisja e urdhrit të jashtëm. - + Command <i>%1</i> failed to start. Dështoi nisja e urdhrit <i>%1</i>. - + Internal error when starting command. Gabim i brendshëm kur niset urdhri. - + Bad parameters for process job call. Parametra të gabuar për thirrje akti procesi. - + External command failed to finish. Udhri i jashtëm s’arriti të përfundohej. - + Command <i>%1</i> failed to finish in %2 seconds. Urdhri <i>%1</i> s’arriti të përfundohej në %2 sekonda. - + External command finished with errors. Urdhri i jashtë përfundoi me gabime. - + Command <i>%1</i> finished with exit code %2. Urdhri <i>%1</i> përfundoi me kod daljeje %2. @@ -1902,22 +1908,22 @@ Përfundim: Parazgjedhje - + unknown e panjohur - + extended extended - + unformatted e paformatuar - + swap swap @@ -2010,52 +2016,52 @@ Përfundim: Po grumbullohen të dhëna mbi sistemin… - + has at least %1 GB available drive space ka të paktën %1 GB hapësirë të përdorshme - + There is not enough drive space. At least %1 GB is required. S’ka hapësirë të mjaftueshme. Lypset të paktën %1 GB. - + has at least %1 GB working memory ka të paktën %1 GB kujtesë të përdorshme - + The system does not have enough working memory. At least %1 GB is required. Sistemi s’ka kujtesë të mjaftueshme për të punuar. Lypsen të paktën %1 GB. - + is plugged in to a power source është në prizë - + The system is not plugged in to a power source. Sistemi s'është i lidhur me ndonjë burim rryme. - + is connected to the Internet është lidhur në Internet - + The system is not connected to the Internet. Sistemi s’është i lidhur në Internet. - + The installer is not running with administrator rights. Instaluesi s’po xhirohet me të drejta përgjegjësi. - + The screen is too small to display the installer. Ekrani është shumë i vogël për shfaqjen e instaluesit. @@ -2328,6 +2334,15 @@ Përfundim: Akt Procesesh Shelli + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + %L1 / %L2 + + SummaryPage @@ -2556,7 +2571,7 @@ Përfundim: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Të drejta Kopjimi 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Të drejta Kopjimi 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Falënderime për: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg dhe <a href="https://www.transifex.com/calamares/calamares/">ekipin e përkthyesve të Calamares-it</a>.<br/><br/>Zhvillimi i <a href="https://calamares.io/">Calamares</a> sponsorizohet nga <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Asistencë %1 diff --git a/lang/calamares_sr.ts b/lang/calamares_sr.ts index 436a0d457..fb1ae14c1 100644 --- a/lang/calamares_sr.ts +++ b/lang/calamares_sr.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Инсталирај @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Извршавам %1 операцију. - + Bad working directory path Лоша путања радног директоријума - + Working directory %1 for python job %2 is not readable. Радни директоријум %1 за питонов посао %2 није читљив. - + Bad main script file Лош фајл главне скрипте - + Main script file %1 for python job %2 is not readable. Фајл главне скрипте %1 за питонов посао %2 није читљив. - + Boost.Python error in job "%1". Boost.Python грешка у послу „%1“. @@ -165,40 +165,46 @@ + &Next &Следеће - + &Cancel &Откажи - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? Отказати инсталацију? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Да ли стварно желите да прекинете текући процес инсталације? Инсталер ће бити затворен и све промене ће бити изгубљене. - + &Yes - + &No @@ -208,32 +214,32 @@ The installer will quit and all changes will be lost. - + Continue with setup? Наставити са подешавањем? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Инсталирај сада - + Go &back Иди &назад - + &Done - + The installation is complete. Close the installer. @@ -484,7 +490,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... - + Location Локација @@ -1227,242 +1233,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Лоши параметри при позиву посла процеса. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: подразумевано - + unknown непознато - + extended проширена - + unformatted неформатирана - + swap @@ -2007,52 +2013,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support %1 подршка diff --git a/lang/calamares_sr@latin.ts b/lang/calamares_sr@latin.ts index 6e4add226..6ce582ccb 100644 --- a/lang/calamares_sr@latin.ts +++ b/lang/calamares_sr@latin.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Instaliraj @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Neispravna putanja do radne datoteke - + Working directory %1 for python job %2 is not readable. Nemoguće pročitati radnu datoteku %1 za funkciju %2 u Python-u. - + Bad main script file Neispravan glavna datoteka za skriptu - + Main script file %1 for python job %2 is not readable. Glavna datoteka za skriptu %1 za Python funkciju %2 se ne može pročitati. - + Boost.Python error in job "%1". Boost.Python greška u funkciji %1 @@ -165,40 +165,46 @@ + &Next &Dalje - + &Cancel &Prekini - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? Prekini instalaciju? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Da li stvarno želite prekinuti trenutni proces instalacije? Instaler će se zatvoriti i sve promjene će biti izgubljene. - + &Yes - + &No @@ -208,32 +214,32 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. @@ -484,7 +490,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. LocaleViewStep - + Loading location data... Očitavam podatke o lokaciji... - + Location Lokacija @@ -1227,242 +1233,242 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Pogrešni parametri kod poziva funkcije u procesu. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2007,52 +2013,52 @@ Output: - + has at least %1 GB available drive space ima najmanje %1GB slobodnog prostora na disku - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory ima bar %1GB radne memorije - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source je priključen na izvor struje - + The system is not plugged in to a power source. - + is connected to the Internet ima vezu sa internetom - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support diff --git a/lang/calamares_sv.ts b/lang/calamares_sv.ts index 03b99dde2..bae408a94 100644 --- a/lang/calamares_sv.ts +++ b/lang/calamares_sv.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Installera @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Kör %1-operation - + Bad working directory path Arbetskatalogens sökväg är ogiltig - + Working directory %1 for python job %2 is not readable. Arbetskatalog %1 för pythonuppgift %2 är inte läsbar. - + Bad main script file Ogiltig huvudskriptfil - + Main script file %1 for python job %2 is not readable. Huvudskriptfil %1 för pythonuppgift %2 är inte läsbar. - + Boost.Python error in job "%1". Boost.Python-fel i uppgift "%'1". @@ -165,40 +165,46 @@ + &Next &Nästa - + &Cancel Avbryt - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? Avbryt installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Är du säker på att du vill avsluta installationen i förtid? Alla ändringar kommer att gå förlorade. - + &Yes - + &No @@ -208,32 +214,32 @@ Alla ändringar kommer att gå förlorade. - + Continue with setup? Fortsätt med installation? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1-installeraren är på väg att göra ändringar för att installera %2.<br/><strong>Du kommer inte att kunna ångra dessa ändringar!strong> - + &Install now &Installera nu - + Go &back Gå &bakåt - + &Done - + The installation is complete. Close the installer. @@ -484,7 +490,7 @@ Alla ändringar kommer att gå förlorade. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ Alla ändringar kommer att gå förlorade. Sta&rta om nu - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Klappat och klart.</h1><br/>%1 har installerats på din dator.<br/>Du kan nu starta om till ditt nya system, eller fortsätta att använda %2 i liveläge. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ Alla ändringar kommer att gå förlorade. LocaleViewStep - + Loading location data... Laddar platsdata... - + Location Plats @@ -1227,242 +1233,242 @@ Alla ändringar kommer att gå förlorade. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ Alla ändringar kommer att gå förlorade. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ Alla ändringar kommer att gå förlorade. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ Alla ändringar kommer att gå förlorade. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Ogiltiga parametrar för processens uppgiftsanrop. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: Standard - + unknown okänd - + extended utökad - + unformatted oformaterad - + swap @@ -2007,52 +2013,52 @@ Output: Samlar systeminformation... - + has at least %1 GB available drive space har minst %1 GB tillgängligt utrymme på hårddisken - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory har minst %1 GB arbetsminne - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source är ansluten till en strömkälla - + The system is not plugged in to a power source. Systemet är inte anslutet till någon strömkälla. - + is connected to the Internet är ansluten till internet - + The system is not connected to the Internet. Systemet är inte anslutet till internet. - + The installer is not running with administrator rights. Installationsprogammet körs inte med administratörsrättigheter. - + The screen is too small to display the installer. Skärmen är för liten för att visa installationshanteraren. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support %1-support diff --git a/lang/calamares_th.ts b/lang/calamares_th.ts index 6cbdebfe0..d6bd7d93d 100644 --- a/lang/calamares_th.ts +++ b/lang/calamares_th.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install ติดตั้ง @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. การปฏิบัติการ %1 กำลังทำงาน - + Bad working directory path เส้นทางไดเรคทอรีที่ใช้ทำงานไม่ถูกต้อง - + Working directory %1 for python job %2 is not readable. ไม่สามารถอ่านไดเรคทอรีที่ใช้ทำงาน %1 สำหรับ python %2 ได้ - + Bad main script file ไฟล์สคริปต์หลักไม่ถูกต้อง - + Main script file %1 for python job %2 is not readable. ไม่สามารถอ่านไฟล์สคริปต์หลัก %1 สำหรับ python %2 ได้ - + Boost.Python error in job "%1". Boost.Python ผิดพลาดที่งาน "%1". @@ -165,40 +165,46 @@ + &Next &N ถัดไป - + &Cancel &C ยกเลิก - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? ยกเลิกการติดตั้ง? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. คุณต้องการยกเลิกกระบวนการติดตั้งที่กำลังดำเนินการอยู่หรือไม่? ตัวติดตั้งจะสิ้นสุดการทำงานและไม่บันทึกการเปลี่ยนแปลงที่ได้ดำเนินการก่อนหน้านี้ - + &Yes - + &No @@ -208,32 +214,32 @@ The installer will quit and all changes will be lost. - + Continue with setup? ดำเนินการติดตั้งต่อหรือไม่? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> ตัวติดตั้ง %1 กำลังพยายามที่จะทำการเปลี่ยนแปลงในดิสก์ของคุณเพื่อติดตั้ง %2<br/><strong>คุณจะไม่สามารถยกเลิกการเปลี่ยนแปลงเหล่านี้ได้</strong> - + &Install now &ติดตั้งตอนนี้ - + Go &back กลั&บไป - + &Done - + The installation is complete. Close the installer. @@ -484,7 +490,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ The installer will quit and all changes will be lost. &R เริ่มต้นใหม่ทันที - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>เสร็จสิ้น</h1><br/>%1 ติดตั้งบนคอมพิวเตอร์ของคุณเรียบร้อย<br/>คุณสามารถเริ่มทำงานเพื่อเข้าระบบใหม่ของคุณ หรือดำเนินการใช้ %2 Live environment ต่อไป - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1183,12 +1189,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... กำลังโหลดข้อมูลตำแหน่ง... - + Location ตำแหน่ง @@ -1227,242 +1233,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1806,15 +1812,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. พารามิเตอร์ไม่ถูกต้องสำหรับการเรียกการทำงาน - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: ค่าเริ่มต้น - + unknown - + extended - + unformatted - + swap @@ -2007,52 +2013,52 @@ Output: กำลังรวบรวมข้อมูลของระบบ... - + has at least %1 GB available drive space มีพื้นที่บนไดรฟ์เหลืออย่างน้อย %1 GB - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory มีพื้นที่หน่วยความจำอย่างน้อย %1 GB - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source เชื่อมต่อปลั๊กเข้ากับแหล่งจ่ายไฟ - + The system is not plugged in to a power source. - + is connected to the Internet เชื่อมต่อกับอินเตอร์เน็ต - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support diff --git a/lang/calamares_tr_TR.ts b/lang/calamares_tr_TR.ts index 1e028db31..f15b4a018 100644 --- a/lang/calamares_tr_TR.ts +++ b/lang/calamares_tr_TR.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Sistem Kuruluyor @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. %1 işlemleri yapılıyor. - + Bad working directory path Dizin yolu kötü çalışıyor - + Working directory %1 for python job %2 is not readable. %2 python işleri için %1 dizinleme çalışırken okunamadı. - + Bad main script file Sorunlu betik dosyası - + Main script file %1 for python job %2 is not readable. %2 python işleri için %1 sorunlu betik okunamadı. - + Boost.Python error in job "%1". Boost.Python iş hatası "%1". @@ -165,40 +165,46 @@ + &Next &Sonraki - + &Cancel &Vazgeç - + Cancel installation without changing the system. Sistemi değiştirmeden kurulumu iptal edin. - + + &Install + &Yükle + + + Cancel installation? Yüklemeyi iptal et? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Yükleme işlemini gerçekten iptal etmek istiyor musunuz? Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. - + &Yes &Evet - + &No &Hayır @@ -208,32 +214,32 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. &Kapat - + Continue with setup? Kuruluma devam et? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 sistem yükleyici %2 yüklemek için diskinizde değişiklik yapacak.<br/><strong>Bu değişiklikleri geri almak mümkün olmayacak.</strong> - + &Install now &Şimdi yükle - + Go &back Geri &git - + &Done &Tamam - + The installation is complete. Close the installer. Yükleme işi tamamlandı. Sistem yükleyiciyi kapatın. @@ -487,7 +493,7 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. ContextualProcessJob - + Contextual Processes Job Bağlamsal Süreç İşleri @@ -944,12 +950,12 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.&Şimdi yeniden başlat - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Tüm işlem tamamlandı.</h1><br/>%1 bilgisayarınıza yüklendi<br/>Yeni kurduğunuz sistemi kullanmak için yeniden başlatabilir veya %2 Çalışan sistem ile devam edebilirsiniz. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Yükleme Başarısız</h1><br/>%1 bilgisayarınıza yüklenemedi.<br/>Hata mesajı çıktısı: %2. @@ -1186,12 +1192,12 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. LocaleViewStep - + Loading location data... Yerel verileri yükleniyor... - + Location Sistem Yereli @@ -1230,242 +1236,242 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. PWQ - + Password is too short Şifre çok kısa - + Password is too long Şifre çok uzun - + Password is too weak Şifre çok zayıf - + Memory allocation error when setting '%1' '%1' ayarlanırken bellek ayırma hatası - + Memory allocation error Bellek ayırma hatası - + The password is the same as the old one Şifre eski şifreyle aynı - + The password is a palindrome Parola eskilerden birinin ters okunuşu olabilir - + The password differs with case changes only Parola sadece vaka değişiklikleri ile farklılık gösterir - + The password is too similar to the old one Parola eski parolaya çok benzer - + The password contains the user name in some form Parola kullanıcı adını bir biçimde içeriyor - + The password contains words from the real name of the user in some form Şifre, kullanıcının gerçek adına ait kelimeleri bazı biçimde içerir - + The password contains forbidden words in some form Şifre, bazı biçimde yasak kelimeler içeriyor - + The password contains less than %1 digits Şifre %1 den az hane içeriyor - + The password contains too few digits Parola çok az basamak içeriyor - + The password contains less than %1 uppercase letters Parola %1 den az büyük harf içeriyor - + The password contains too few uppercase letters Parola çok az harf içermektedir - + The password contains less than %1 lowercase letters Parola %1 den daha küçük harf içermektedir - + The password contains too few lowercase letters Parola çok az küçük harf içeriyor - + The password contains less than %1 non-alphanumeric characters Şifre %1 den az alfasayısal olmayan karakter içeriyor - + The password contains too few non-alphanumeric characters Parola çok az sayıda alfasayısal olmayan karakter içeriyor - + The password is shorter than %1 characters Parola %1 karakterden kısa - + The password is too short Parola çok kısa - + The password is just rotated old one Şifre önceden kullanıldı - + The password contains less than %1 character classes Parola %1 den az karakter sınıfı içeriyor - + The password does not contain enough character classes Parola yeterli sayıda karakter sınıfı içermiyor - + The password contains more than %1 same characters consecutively Şifre, %1 den fazla aynı karakteri ardışık olarak içeriyor - + The password contains too many same characters consecutively Parola ardışık olarak aynı sayıda çok karakter içeriyor - + The password contains more than %1 characters of the same class consecutively Parola, aynı sınıftan %1 den fazla karakter ardışık olarak içeriyor - + The password contains too many characters of the same class consecutively Parola aynı sınıfta çok fazla karakter içeriyor - + The password contains monotonic sequence longer than %1 characters Şifre, %1 karakterden daha uzun monoton dizilim içeriyor - + The password contains too long of a monotonic character sequence Parola çok uzun monoton karakter dizisi içeriyor - + No password supplied Parola sağlanmadı - + Cannot obtain random numbers from the RNG device RNG cihazından rastgele sayılar elde edemiyor - + Password generation failed - required entropy too low for settings Şifre üretimi başarısız oldu - ayarlar için entropi çok düşük gerekli - + The password fails the dictionary check - %1 Parola, sözlüğü kontrolü başarısız - %1 - + The password fails the dictionary check Parola, sözlük onayı başarısız - + Unknown setting - %1 Bilinmeyen ayar - %1 - + Unknown setting Bilinmeyen ayar - + Bad integer value of setting - %1 Ayarın bozuk tam sayı değeri - %1 - + Bad integer value Yanlış tamsayı değeri - + Setting %1 is not of integer type %1 ayarı tamsayı tipi değil - + Setting is not of integer type Ayar tamsayı tipi değil - + Setting %1 is not of string type Ayar %1, dize tipi değil - + Setting is not of string type Ayar, dize tipi değil - + Opening the configuration file failed Yapılandırma dosyasını açma başarısız oldu - + The configuration file is malformed Yapılandırma dosyası hatalı biçimlendirildi - + Fatal failure Ölümcül arıza - + Unknown error Bilinmeyen hata @@ -1772,12 +1778,12 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.%1 başlatmak için bir EFI sistem bölümü gereklidir.<br/><br/>Bir bağlama noktası <strong>%2</strong> olarak yapılandırıldı fakat <strong>esp</strong>bayrağı ayarlanmadı.<br/>Bayrağı ayarlamak için, geri dönün ve bölümü düzenleyin.<br/><br/>Sen bayrağı ayarlamadan devam edebilirsin fakat işletim sistemi başlatılamayabilir. - + Boot partition not encrypted Önyükleme yani boot diski şifrelenmedi - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Ayrı bir önyükleme yani boot disk bölümü, şifrenmiş bir kök bölüm ile birlikte ayarlandı, fakat önyükleme bölümü şifrelenmedi.<br/><br/>Bu tip kurulumun güvenlik endişeleri vardır, çünkü önemli sistem dosyaları şifrelenmemiş bir bölümde saklanır.<br/>İsterseniz kuruluma devam edebilirsiniz, fakat dosya sistemi kilidi daha sonra sistem başlatılırken açılacak.<br/> Önyükleme bölümünü şifrelemek için geri dönün ve bölüm oluşturma penceresinde <strong>Şifreleme</strong>seçeneği ile yeniden oluşturun. @@ -1810,15 +1816,15 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Yer tutucu - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - Lütfen KDE Plazma Masaüstü için bir look-and-feel paketi seçin. Sistem kurulduktan sonra bu adımı atlayabilir ve look-and-feel paketi ile yapılandırabilirsiniz. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + Lütfen KDE Plazma Masaüstü için bir görünüm seçin. Ayrıca, bu adımı atlayabilir ve sistem kurulduktan sonra görünümü yapılandırabilirsiniz. Bir görünüm ve tercihe tıkladığınızda size look-and-feel yani canlı bir önizleme sunulur. PlasmaLnfViewStep - + Look-and-Feel Look-and-Feel @@ -1826,14 +1832,14 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. ProcessResult - + There was no output from the command. Komut çıktısı yok. - + Output: @@ -1842,52 +1848,52 @@ Output: - + External command crashed. Harici komut çöktü. - + Command <i>%1</i> crashed. Komut <i>%1</i> çöktü. - + External command failed to start. Harici komut başlatılamadı. - + Command <i>%1</i> failed to start. Komut <i>%1</i> başlatılamadı. - + Internal error when starting command. Komut başlatılırken dahili hata. - + Bad parameters for process job call. Çalışma adımları başarısız oldu. - + External command failed to finish. Harici komut başarısız oldu. - + Command <i>%1</i> failed to finish in %2 seconds. Komut <i>%1</i> %2 saniyede başarısız oldu. - + External command finished with errors. Harici komut hatalarla bitti. - + Command <i>%1</i> finished with exit code %2. Komut <i>%1</i> %2 çıkış kodu ile tamamlandı @@ -1906,22 +1912,22 @@ Output: Varsayılan - + unknown bilinmeyen - + extended uzatılmış - + unformatted biçimlenmemiş - + swap Swap-Takas @@ -2014,53 +2020,53 @@ Output: Sistem bilgileri toplanıyor... - + has at least %1 GB available drive space En az %1 GB disk alanı olduğundan... - + There is not enough drive space. At least %1 GB is required. Yeterli disk alanı mevcut değil. En az %1 GB disk alanı gereklidir. - + has at least %1 GB working memory En az %1 GB bellek bulunduğundan... - + The system does not have enough working memory. At least %1 GB is required. Yeterli ram bellek gereksinimi karşılanamıyor. En az %1 GB ram bellek gereklidir. - + is plugged in to a power source Bir güç kaynağına takılı olduğundan... - + The system is not plugged in to a power source. Sistem güç kaynağına bağlı değil. - + is connected to the Internet İnternete bağlı olduğundan... - + The system is not connected to the Internet. Sistem internete bağlı değil. - + The installer is not running with administrator rights. Sistem yükleyici yönetici haklarına sahip olmadan çalışmıyor. - + The screen is too small to display the installer. Ekran, sistem yükleyiciyi görüntülemek için çok küçük. @@ -2333,6 +2339,15 @@ Sistem güç kaynağına bağlı değil. Kabuk İşlemleri İşi + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + %L1 / %L2 + + SummaryPage @@ -2561,7 +2576,7 @@ Sistem güç kaynağına bağlı değil. <h1>%1</h1><br/><strong>%2<br/>için %3</strong><br/><br/>Telif Hakkı 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Telif Hakkı 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Teşekkürler: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg ve <a href="https://www.transifex.com/calamares/calamares/">Calamares çeviri takımı için</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> gelişim sponsoru <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Özgür Yazılım. - + %1 support %1 destek diff --git a/lang/calamares_uk.ts b/lang/calamares_uk.ts index fb70ea45c..ec79a0d0e 100644 --- a/lang/calamares_uk.ts +++ b/lang/calamares_uk.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install Встановити @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. Запуск операції %1. - + Bad working directory path Неправильний шлях робочого каталогу - + Working directory %1 for python job %2 is not readable. Неможливо прочитати робочу директорію %1 для завдання python %2. - + Bad main script file Неправильний файл головного сценарію - + Main script file %1 for python job %2 is not readable. Неможливо прочитати файл головного сценарію %1 для завдання python %2. - + Boost.Python error in job "%1". Помилка Boost.Python у завданні "%1". @@ -165,40 +165,46 @@ + &Next &Вперед - + &Cancel &Скасувати - + Cancel installation without changing the system. Скасувати встановлення без змінення системи. - + + &Install + + + + Cancel installation? Скасувати встановлення? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Чи ви насправді бажаєте скасувати процес встановлення? Установник закриється і всі зміни буде втрачено. - + &Yes &Так - + &No &Ні @@ -208,32 +214,32 @@ The installer will quit and all changes will be lost. &Закрити - + Continue with setup? Продовжити встановлення? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Установник %1 збирається зробити зміни на вашому диску, щоб встановити %2.<br/><strong>Ці зміни неможливо буде повернути.</strong> - + &Install now &Встановити зараз - + Go &back Перейти &назад - + &Done &Закінчити - + The installation is complete. Close the installer. Встановлення виконано. Закрити установник. @@ -484,7 +490,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -941,12 +947,12 @@ The installer will quit and all changes will be lost. &Перезавантажити зараз - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Все зроблено.</h1><br/>%1 встановлено на ваш комп'ютер.<br/>Ви можете перезавантажитися до вашої нової системи або продовжити використання Live-середовища %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Встановлення зазнало невдачі</h1><br/>%1 не було встановлено на Ваш комп'ютер.<br/>Повідомлення про помилку: %2. @@ -1183,12 +1189,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... Завантаження данних про місцезнаходження... - + Location Місцезнаходження @@ -1227,242 +1233,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short Пароль занадто короткий - + Password is too long Пароль задовгий - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1769,12 +1775,12 @@ The installer will quit and all changes will be lost. Для запуску %1 потрібен системний розділ EFI.<br/><br/>Розділ налаштовано з точкою підключення <strong>%2</strong>, але опція <strong>esp</strong> не встановлено.<br/>Щоб встановити опцію, поверніться та відредагуйте розділ.<br/><br/>Ви можете продовжити не налаштовуючи цю опцію, але ваша система може не запускатись. - + Boot partition not encrypted Завантажувальний розділ незашифрований - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Було налаштовано окремий завантажувальний розділ поряд із зашифрованим кореневим розділом, але завантажувальний розділ незашифрований.<br/><br/>Існують проблеми з безпекою такого типу, оскільки важливі системні файли зберігаються на незашифрованому розділі.<br/>Ви можете продовжувати, якщо бажаєте, але розблокування файлової системи відбудеться пізніше під час запуску системи.<br/>Щоб зашифрувати завантажувальний розділ, поверніться і створіть його знов, обравши <strong>Зашифрувати</strong> у вікні створення розділів. @@ -1806,15 +1812,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1822,65 +1828,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. Неправильні параметри визову завдання обробки. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1899,22 +1905,22 @@ Output: За замовченням - + unknown невідома - + extended розширена - + unformatted неформатовано - + swap область підкачки @@ -2007,52 +2013,52 @@ Output: Збираємо інформацію про систему... - + has at least %1 GB available drive space має хоча б %1 Гб доступного простору - + There is not enough drive space. At least %1 GB is required. Недостатньо простору на диску. Потрібно хоча б %1 Гб. - + has at least %1 GB working memory має хоча б %1 Гб операційної пам'яті - + The system does not have enough working memory. At least %1 GB is required. Система не має достатньо операційної пам'яті. Потрібно хоча б %1 Гб. - + is plugged in to a power source підключена до джерела живлення - + The system is not plugged in to a power source. Система не підключена до джерела живлення. - + is connected to the Internet з'єднано з мережею Інтернет - + The system is not connected to the Internet. Система не з'єднана з мережею Інтернет. - + The installer is not running with administrator rights. Установник запущено без прав адміністратора. - + The screen is too small to display the installer. Екран замалий для відображення установника. @@ -2325,6 +2331,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2553,7 +2568,7 @@ Output: - + %1 support Підтримка %1 diff --git a/lang/calamares_ur.ts b/lang/calamares_ur.ts index 5f20d7ce8..b4c84f7b0 100644 --- a/lang/calamares_ur.ts +++ b/lang/calamares_ur.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -165,39 +165,45 @@ + &Next - + &Cancel - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No @@ -207,32 +213,32 @@ The installer will quit and all changes will be lost. - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. @@ -483,7 +489,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -940,12 +946,12 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1182,12 +1188,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... - + Location @@ -1226,242 +1232,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1768,12 +1774,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1805,15 +1811,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1821,65 +1827,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1898,22 +1904,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2006,52 +2012,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2324,6 +2330,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2552,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_uz.ts b/lang/calamares_uz.ts index 5c3f64c1a..c97923e8b 100644 --- a/lang/calamares_uz.ts +++ b/lang/calamares_uz.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -165,39 +165,45 @@ + &Next - + &Cancel - + Cancel installation without changing the system. - + + &Install + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No @@ -207,32 +213,32 @@ The installer will quit and all changes will be lost. - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. @@ -483,7 +489,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -940,12 +946,12 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1182,12 +1188,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... - + Location @@ -1226,242 +1232,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short - + Password is too long - + Password is too weak - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one - + The password contains the user name in some form - + The password contains words from the real name of the user in some form - + The password contains forbidden words in some form - + The password contains less than %1 digits - + The password contains too few digits - + The password contains less than %1 uppercase letters - + The password contains too few uppercase letters - + The password contains less than %1 lowercase letters - + The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters - + The password is too short - + The password is just rotated old one - + The password contains less than %1 character classes - + The password does not contain enough character classes - + The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence - + No password supplied - + Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 - + The password fails the dictionary check - + Unknown setting - %1 - + Unknown setting - + Bad integer value of setting - %1 - + Bad integer value - + Setting %1 is not of integer type - + Setting is not of integer type - + Setting %1 is not of string type - + Setting is not of string type - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error @@ -1768,12 +1774,12 @@ The installer will quit and all changes will be lost. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1805,15 +1811,15 @@ The installer will quit and all changes will be lost. - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. PlasmaLnfViewStep - + Look-and-Feel @@ -1821,65 +1827,65 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: - + External command crashed. - + Command <i>%1</i> crashed. - + External command failed to start. - + Command <i>%1</i> failed to start. - + Internal error when starting command. - + Bad parameters for process job call. - + External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. - + Command <i>%1</i> finished with exit code %2. @@ -1898,22 +1904,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2006,52 +2012,52 @@ Output: - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. - + The screen is too small to display the installer. @@ -2324,6 +2330,15 @@ Output: + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2552,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_zh_CN.ts b/lang/calamares_zh_CN.ts index 4876bd82e..50e499cfd 100644 --- a/lang/calamares_zh_CN.ts +++ b/lang/calamares_zh_CN.ts @@ -98,7 +98,7 @@ Calamares::ExecutionViewStep - + Install 安装 @@ -127,32 +127,32 @@ Calamares::PythonJob - + Running %1 operation. 正在运行 %1 个操作。 - + Bad working directory path 错误的工作目录路径 - + Working directory %1 for python job %2 is not readable. 用于 python 任务 %2 的工作目录 %1 不可读。 - + Bad main script file 错误的主脚本文件 - + Main script file %1 for python job %2 is not readable. 用于 python 任务 %2 的主脚本文件 %1 不可读。 - + Boost.Python error in job "%1". 任务“%1”出现 Boost.Python 错误。 @@ -166,40 +166,46 @@ + &Next 下一步(&N) - + &Cancel 取消(&C) - + Cancel installation without changing the system. 取消安装,并不做任何更改。 - + + &Install + + + + Cancel installation? 取消安装? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 确定要取消当前的安装吗? 安装程序将退出,所有修改都会丢失。 - + &Yes &是 - + &No &否 @@ -209,32 +215,32 @@ The installer will quit and all changes will be lost. &关闭 - + Continue with setup? 要继续安装吗? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 安装程序将在您的磁盘上做出变更以安装 %2。<br/><strong>您将无法复原这些变更。</strong> - + &Install now 现在安装 (&I) - + Go &back 返回 (&B) - + &Done &完成 - + The installation is complete. Close the installer. 安装过程已完毕。请关闭安装器。 @@ -485,7 +491,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job 后台任务 @@ -943,12 +949,12 @@ The installer will quit and all changes will be lost. 现在重启(&R) - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>一切都结束了。</h1><br/>%1 已安装在您的电脑上了。<br/>您现在可能会想要重新启动到您的新系统中,或是继续使用 %2 Live 环境。 - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>安装失败</h1><br/>%1 未在你的电脑上安装。<br/>错误信息:%2。 @@ -1185,12 +1191,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... 加载位置数据... - + Location 位置 @@ -1229,242 +1235,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short 密码太短 - + Password is too long 密码太长 - + Password is too weak 密码强度太弱 - + Memory allocation error when setting '%1' 设置“%1”时发生内存分配错误 - + Memory allocation error 内存分配错误 - + The password is the same as the old one 新密码和老密码一致 - + The password is a palindrome 新密码为回文 - + The password differs with case changes only 新密码和老密码只有大小写区别 - + The password is too similar to the old one 新密码和老密码过于相似 - + The password contains the user name in some form 新密码包含用户名 - + The password contains words from the real name of the user in some form 新密码包含用户真实姓名 - + The password contains forbidden words in some form 新密码包含不允许使用的词组 - + The password contains less than %1 digits 新密码包含少于 %1 个数字 - + The password contains too few digits 新密码包含太少数字 - + The password contains less than %1 uppercase letters 新密码包含少于 %1 个大写字母 - + The password contains too few uppercase letters 新密码包含太少大写字母 - + The password contains less than %1 lowercase letters 新密码包含少于 %1 个小写字母 - + The password contains too few lowercase letters 新密码包含太少小写字母 - + The password contains less than %1 non-alphanumeric characters 新密码包含少于 %1 个非字母/数字字符 - + The password contains too few non-alphanumeric characters 新密码包含太少非字母/数字字符 - + The password is shorter than %1 characters 新密码短于 %1 位 - + The password is too short 新密码过短 - + The password is just rotated old one 新密码仅对老密码作了字序调整 - + The password contains less than %1 character classes 新密码包含少于 %1 个字符类型 - + The password does not contain enough character classes 新密码包含太少字符类型 - + The password contains more than %1 same characters consecutively 新密码包含超过 %1 个连续的相同字符 - + The password contains too many same characters consecutively 新密码包含过多连续的相同字符 - + The password contains more than %1 characters of the same class consecutively 新密码包含超过 %1 个连续的同类型字符 - + The password contains too many characters of the same class consecutively 新密码包含过多连续的同类型字符 - + The password contains monotonic sequence longer than %1 characters 新密码包含超过 %1 个字符长度的单调序列 - + The password contains too long of a monotonic character sequence 新密码包含过长的单调序列 - + No password supplied 未输入密码 - + Cannot obtain random numbers from the RNG device 无法从随机数生成器 (RNG) 设备获取随机数 - + Password generation failed - required entropy too low for settings 无法生成密码 - 熵值过低 - + The password fails the dictionary check - %1 新密码无法通过字典检查 - %1 - + The password fails the dictionary check 新密码无法通过字典检查 - + Unknown setting - %1 未知设置 - %1 - + Unknown setting 未知设置 - + Bad integer value of setting - %1 设置的整数值非法 - %1 - + Bad integer value 设置的整数值非法 - + Setting %1 is not of integer type 设定值 %1 不是整数类型 - + Setting is not of integer type 设定值不是整数类型 - + Setting %1 is not of string type 设定值 %1 不是字符串类型 - + Setting is not of string type 设定值不是字符串类型 - + Opening the configuration file failed 无法打开配置文件 - + The configuration file is malformed 配置文件格式不正确 - + Fatal failure 致命错误 - + Unknown error 未知错误 @@ -1771,12 +1777,12 @@ The installer will quit and all changes will be lost. 必须有 EFI 系统分区才能启动 %1 。<br/><br/>已有挂载点为 <strong>%2</strong> 的分区,但是未设置 <strong>esp</strong> 标记。<br/>要设置此标记,后退并编辑分区。<br/><br/>你可以不创建 EFI 系统分区并继续安装,但是你的系统可能无法启动。 - + Boot partition not encrypted 引导分区未加密 - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. 您尝试用单独的引导分区配合已加密的根分区使用,但引导分区未加密。<br/><br/>这种配置方式可能存在安全隐患,因为重要的系统文件存储在了未加密的分区上。<br/>您可以继续保持此配置,但是系统解密将在系统启动时而不是引导时进行。<br/>要加密引导分区,请返回上一步并重新创建此分区,并在分区创建窗口选中 <strong>加密</strong> 选项。 @@ -1808,15 +1814,15 @@ The installer will quit and all changes will be lost. 占位符 - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - 请为 KDE Plasma 桌面选择一个外观主题。您也可以暂时跳过此步骤并在系统安装完成后配置系统外观。 + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + PlasmaLnfViewStep - + Look-and-Feel 外观主题 @@ -1824,14 +1830,14 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. 命令没有输出。 - + Output: @@ -1840,52 +1846,52 @@ Output: - + External command crashed. 外部命令已崩溃。 - + Command <i>%1</i> crashed. 命令 <i>%1</i> 已崩溃。 - + External command failed to start. 无法启动外部命令。 - + Command <i>%1</i> failed to start. 无法启动命令 <i>%1</i>。 - + Internal error when starting command. 启动命令时出现内部错误。 - + Bad parameters for process job call. 呼叫进程任务出现错误参数 - + External command failed to finish. 外部命令未成功完成。 - + Command <i>%1</i> failed to finish in %2 seconds. 命令 <i>%1</i> 未能在 %2 秒内完成。 - + External command finished with errors. 外部命令已完成,但出现了错误。 - + Command <i>%1</i> finished with exit code %2. 命令 <i>%1</i> 以退出代码 %2 完成。 @@ -1904,22 +1910,22 @@ Output: 默认 - + unknown 未知 - + extended 扩展分区 - + unformatted 未格式化 - + swap 临时存储空间 @@ -2012,52 +2018,52 @@ Output: 正在收集系统信息 ... - + has at least %1 GB available drive space 至少 %1 GB 可用磁盘空间 - + There is not enough drive space. At least %1 GB is required. 没有足够的磁盘空间。至少需要 %1 GB。 - + has at least %1 GB working memory 至少 %1 GB 可用内存 - + The system does not have enough working memory. At least %1 GB is required. 系统没有足够的内存。至少需要 %1 GB。 - + is plugged in to a power source 已连接到电源 - + The system is not plugged in to a power source. 系统未连接到电源。 - + is connected to the Internet 已连接到互联网 - + The system is not connected to the Internet. 系统未连接到互联网。 - + The installer is not running with administrator rights. 安装器未以管理员权限运行 - + The screen is too small to display the installer. 屏幕不能完整显示安装器。 @@ -2330,6 +2336,15 @@ Output: Shell 进程任务 + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + SummaryPage @@ -2558,7 +2573,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>特别感谢:Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg 及 <a href="https://www.transifex.com/calamares/calamares/">Calamares 翻译团队</a>。<br/><br/><a href="https://calamares.io/">Calamares</a> 的开发由 <br/><a href="http://www.blue-systems.com/">Blue Systems</a> 赞助。 - + %1 support %1 的支持信息 diff --git a/lang/calamares_zh_TW.ts b/lang/calamares_zh_TW.ts index 67ba8cf3d..72cbc45eb 100644 --- a/lang/calamares_zh_TW.ts +++ b/lang/calamares_zh_TW.ts @@ -97,7 +97,7 @@ Calamares::ExecutionViewStep - + Install 安裝 @@ -126,32 +126,32 @@ Calamares::PythonJob - + Running %1 operation. 正在執行 %1 操作。 - + Bad working directory path 不良的工作目錄路徑 - + Working directory %1 for python job %2 is not readable. Python 行程 %2 作用中的目錄 %1 不具讀取權限。 - + Bad main script file 錯誤的主要腳本檔 - + Main script file %1 for python job %2 is not readable. Python 行程 %2 的主要腳本檔 %1 無法讀取。 - + Boost.Python error in job "%1". 行程 %1 中 Boost.Python 錯誤。 @@ -165,40 +165,46 @@ + &Next 下一步 (&N) - + &Cancel 取消(&C) - + Cancel installation without changing the system. 不變更系統並取消安裝。 - + + &Install + 安裝(&I) + + + Cancel installation? 取消安裝? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 您真的想要取消目前的安裝程序嗎? 安裝程式將會退出且所有變動將會遺失。 - + &Yes 是(&Y) - + &No 否(&N) @@ -208,32 +214,32 @@ The installer will quit and all changes will be lost. 關閉(&C) - + Continue with setup? 繼續安裝? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 安裝程式將在您的磁碟上做出變更以安裝 %2。<br/><strong>您將無法復原這些變更。</strong> - + &Install now 現在安裝 (&I) - + Go &back 上一步 (&B) - + &Done 完成(&D) - + The installation is complete. Close the installer. 安裝完成。關閉安裝程式。 @@ -484,7 +490,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job 情境處理程序工作 @@ -941,12 +947,12 @@ The installer will quit and all changes will be lost. 現在重新啟動 (&R) - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>都完成了。</h1><br/>%1 已經安裝在您的電腦上了。<br/>您現在可能會想要重新啟動到您的新系統中,或是繼續使用 %2 Live 環境。 - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>安裝失敗</h1><br/>%1 並未安裝到您的電腦上。<br/>錯誤訊息為:%2。 @@ -1183,12 +1189,12 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Loading location data... 讀取位置資料 ... - + Location 位置 @@ -1227,242 +1233,242 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short 密碼太短 - + Password is too long 密碼太長 - + Password is too weak 密碼太弱 - + Memory allocation error when setting '%1' 當設定「%1」時記憶體分配錯誤 - + Memory allocation error 記憶體分配錯誤 - + The password is the same as the old one 密碼與舊的相同 - + The password is a palindrome 此密碼為迴文 - + The password differs with case changes only 密碼僅大小寫不同 - + The password is too similar to the old one 密碼與舊的太過相似 - + The password contains the user name in some form 密碼包含某種形式的使用者名稱 - + The password contains words from the real name of the user in some form 密碼包含了某種形式的使用者真實姓名 - + The password contains forbidden words in some form 密碼包含了某種形式的無效文字 - + The password contains less than %1 digits 密碼中的數字少於 %1 個 - + The password contains too few digits 密碼包含的數字太少了 - + The password contains less than %1 uppercase letters 密碼包含少於 %1 個大寫字母 - + The password contains too few uppercase letters 密碼包含的大寫字母太少了 - + The password contains less than %1 lowercase letters 密碼包含少於 %1 個小寫字母 - + The password contains too few lowercase letters 密碼包含的小寫字母太少了 - + The password contains less than %1 non-alphanumeric characters 密碼包含了少於 %1 個非字母與數字的字元 - + The password contains too few non-alphanumeric characters 密碼包含的非字母與數字的字元太少了 - + The password is shorter than %1 characters 密碼短於 %1 個字元 - + The password is too short 密碼太短 - + The password is just rotated old one 密碼只是輪換過的舊密碼 - + The password contains less than %1 character classes 密碼包含了少於 %1 種字元類型 - + The password does not contain enough character classes 密碼未包含足夠的字元類型 - + The password contains more than %1 same characters consecutively 密碼包含了連續超過 %1 個相同字元 - + The password contains too many same characters consecutively 密碼包含連續太多個相同的字元 - + The password contains more than %1 characters of the same class consecutively 密碼包含了連續多於 %1 個相同的字元類型 - + The password contains too many characters of the same class consecutively 密碼包含了連續太多相同類型的字元 - + The password contains monotonic sequence longer than %1 characters 密碼包含了長度超過 %1 個字元的單調序列 - + The password contains too long of a monotonic character sequence 密碼包含了長度過長的單調字元序列 - + No password supplied 未提供密碼 - + Cannot obtain random numbers from the RNG device 無法從 RNG 裝置中取得隨機數 - + Password generation failed - required entropy too low for settings 密碼生成失敗,設定的必要熵太低 - + The password fails the dictionary check - %1 密碼在字典檢查時失敗 - %1 - + The password fails the dictionary check 密碼在字典檢查時失敗 - + Unknown setting - %1 未知的設定 - %1 - + Unknown setting 未知的設定 - + Bad integer value of setting - %1 整數值設定不正確 - %1 - + Bad integer value 整數值不正確 - + Setting %1 is not of integer type 設定 %1 不是整數類型 - + Setting is not of integer type 設定不是整數類型 - + Setting %1 is not of string type 設定 %1 不是字串類型 - + Setting is not of string type 設定不是字串類型 - + Opening the configuration file failed 開啟設定檔失敗 - + The configuration file is malformed 設定檔格式不正確 - + Fatal failure 無法挽回的失敗 - + Unknown error 未知的錯誤 @@ -1769,12 +1775,12 @@ The installer will quit and all changes will be lost. 需要一個 EFI 系統分割區以啟動 %1。<br/><br/>有一個掛載點設定為 <strong>%2</strong> 但未設定 <strong>esp</strong> 旗標的分割區。<br/>要設定此旗標,回到上一步並編輯分割區。<br/><br/>您也可以不設定旗標而繼續,但您的系統可能會啟動失敗。 - + Boot partition not encrypted 開機分割區未加密 - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. 單獨的開機分割區會與加密的根分割區一起設定,但是開機分割區並不會被加密。<br/><br/>這種設定可能會造成安全性問題,因為系統檔案放在未加密的分割區中。<br/>若您想要,您可以繼續,但是檔案系統的解鎖會在系統啟動後才發生。<br/>要加密開機分割區,回到上一頁並重新建立它,在分割區建立視窗中選取<strong>加密</strong>。 @@ -1806,15 +1812,15 @@ The installer will quit and all changes will be lost. 佔位符 - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. - 請為 KDE Plasma 桌面環境選擇一組外觀與感覺。您也可以略過此步驟並在系統安裝完成後再行設定。 + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + 請為 KDE Plasma 桌面選擇外觀與感覺。您也可以跳過此步驟並在系統安裝好之後再設定。在外觀與感覺小節點按將會給您特定外觀與感覺的即時預覽。 PlasmaLnfViewStep - + Look-and-Feel 外觀與感覺 @@ -1822,14 +1828,14 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. 指令沒有輸出。 - + Output: @@ -1838,52 +1844,52 @@ Output: - + External command crashed. 外部指令當機。 - + Command <i>%1</i> crashed. 指令 <i>%1</i> 已當機。 - + External command failed to start. 外部指令啟動失敗。 - + Command <i>%1</i> failed to start. 指令 <i>%1</i> 啟動失敗。 - + Internal error when starting command. 當啟動指令時發生內部錯誤。 - + Bad parameters for process job call. 呼叫程序的參數無效。 - + External command failed to finish. 外部指令結束失敗。 - + Command <i>%1</i> failed to finish in %2 seconds. 指令 <i>%1</i> 在結束 %2 秒內失敗。 - + External command finished with errors. 外部指令結束時發生錯誤。 - + Command <i>%1</i> finished with exit code %2. 指令 <i>%1</i> 結束時有錯誤碼 %2。 @@ -1902,22 +1908,22 @@ Output: 預設值 - + unknown 未知 - + extended 延伸分割區 - + unformatted 未格式化 - + swap swap @@ -2010,52 +2016,52 @@ Output: 收集系統資訊中... - + has at least %1 GB available drive space 有至少 %1 GB 的可用磁碟空間 - + There is not enough drive space. At least %1 GB is required. 沒有足夠的磁碟空間。至少需要 %1 GB。 - + has at least %1 GB working memory 有至少 %1 GB 的可用記憶體 - + The system does not have enough working memory. At least %1 GB is required. 系統沒有足夠的記憶體。至少需要 %1 GB。 - + is plugged in to a power source 已插入外接電源 - + The system is not plugged in to a power source. 系統未插入外接電源。 - + is connected to the Internet 已連上網際網路 - + The system is not connected to the Internet. 系統未連上網際網路 - + The installer is not running with administrator rights. 安裝程式並未以管理員權限執行。 - + The screen is too small to display the installer. 螢幕太小了,沒辦法顯示安裝程式。 @@ -2328,6 +2334,15 @@ Output: 殼層處理程序工作 + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + %L1 / %L2 + + SummaryPage @@ -2556,7 +2571,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>為 %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>感謝:Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg 與 <a href="https://www.transifex.com/calamares/calamares/">Calamares 翻譯團隊</a>。<br/><br/><a href="https://calamares.io/">Calamares</a> 開發由 <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software 贊助。 - + %1 support %1 支援 From d1ceb66556b445d61e71f9e091826b6c426ae1d2 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 7 May 2018 05:01:48 -0400 Subject: [PATCH 119/385] i18n: [desktop] Automatic merge of Transifex translations --- calamares.desktop | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/calamares.desktop b/calamares.desktop index 6fefa32fd..7deb61bb8 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -1,7 +1,7 @@ [Desktop Entry] Type=Application Version=1.0 -Name=Install System +Name=Calamares GenericName=System Installer Keywords=calamares;system;installer TryExec=calamares @@ -11,7 +11,9 @@ Icon=calamares Terminal=false StartupNotify=true Categories=Qt;System; -X-AppStream-Ignore=true + + + From 0fc30d6cd6966e16bbb81cac5f18ff6c480cdb6f Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 7 May 2018 05:01:49 -0400 Subject: [PATCH 120/385] i18n: [dummypythonqt] Automatic merge of Transifex translations --- .../lang/hi/LC_MESSAGES/dummypythonqt.mo | Bin 1014 -> 1009 bytes .../lang/hi/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/is/LC_MESSAGES/dummypythonqt.mo | Bin 933 -> 947 bytes .../lang/is/LC_MESSAGES/dummypythonqt.po | 4 ++-- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo index 74b0fba49d89b9d574192e9eeaa158b8f60746c6..a294004cbabf226319670a94a72e1765f5428d68 100644 GIT binary patch delta 97 zcmeyy{*iq`i0NWR28IM67G_{zU}0upZ~@X1Kw1k(#{y|_Al(6^#ennzAZ-bxw{Ps! nX5=-|H8fT*G_W$V&^0ibe2~$GGaxaqJh8~oz+y8u(`!Zm;C~UA delta 102 zcmey!{*8S?i0KMO28IM67G_{z;ACcCZ~@Y?Kw1k(Cjn`3Al(b3#enouAZ-bx_iXIc sX5=-}H858&w6HR@&^9ofe2~$G&p){&u`Dw&Pa&W(C%08cg)EC2ui diff --git a/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.po index bbd55f8b9..282fcc35d 100644 --- a/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Octavian Pylos , 2018\n" +"Last-Translator: Panwar108 , 2018\n" "Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.mo index 19d3d71d3a5d0be56dfa2dd695458a2db2680aea..68e3bcef1abf77097d68d3314a93781ee06f6755 100644 GIT binary patch delta 104 zcmZ3=zL|YOi0OJp28IM6=4D`D5MX9t&;rtOK$-_gdje^3ARPvzg@AM(kTwL;jT<|) u8F@`~4UH8H4XlhTbPY@eH`V@Kq delta 90 zcmdnYzLb4Ji0MK`28IM6=4D`DU}9!q&;rr|K$-_gTLWovAngI9g@AMdkTwL;#Tz@d g8F`I#4a^k`Ev!r}v<(a=A7pf3D$d+2$h3$N009#XXaE2J diff --git a/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.po index 17b004ff7..d771e1de5 100644 --- a/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Krissi, 2017\n" +"Last-Translator: Kristján Magnússon, 2017\n" "Language-Team: Icelandic (https://www.transifex.com/calamares/teams/20061/is/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" From ad45ed4a3310f63174d7d0c9591f6a057a265bb4 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 7 May 2018 05:01:49 -0400 Subject: [PATCH 121/385] i18n: [python] Automatic merge of Transifex translations --- lang/python.pot | 14 +++++++++----- lang/python/ar/LC_MESSAGES/python.mo | Bin 503 -> 503 bytes lang/python/ar/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/ast/LC_MESSAGES/python.mo | Bin 668 -> 668 bytes lang/python/ast/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/bg/LC_MESSAGES/python.mo | Bin 894 -> 894 bytes lang/python/bg/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/ca/LC_MESSAGES/python.mo | Bin 1098 -> 1178 bytes lang/python/ca/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/cs_CZ/LC_MESSAGES/python.mo | Bin 1261 -> 1336 bytes lang/python/cs_CZ/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/da/LC_MESSAGES/python.mo | Bin 1047 -> 1115 bytes lang/python/da/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/de/LC_MESSAGES/python.mo | Bin 1059 -> 1059 bytes lang/python/de/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/el/LC_MESSAGES/python.mo | Bin 568 -> 568 bytes lang/python/el/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/en_GB/LC_MESSAGES/python.mo | Bin 444 -> 444 bytes lang/python/en_GB/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/es/LC_MESSAGES/python.mo | Bin 1075 -> 1075 bytes lang/python/es/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/es_ES/LC_MESSAGES/python.mo | Bin 435 -> 435 bytes lang/python/es_ES/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/es_MX/LC_MESSAGES/python.mo | Bin 436 -> 436 bytes lang/python/es_MX/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/es_PR/LC_MESSAGES/python.mo | Bin 441 -> 441 bytes lang/python/es_PR/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/et/LC_MESSAGES/python.mo | Bin 422 -> 422 bytes lang/python/et/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/eu/LC_MESSAGES/python.mo | Bin 420 -> 420 bytes lang/python/eu/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/fa/LC_MESSAGES/python.mo | Bin 414 -> 414 bytes lang/python/fa/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/fi_FI/LC_MESSAGES/python.mo | Bin 437 -> 437 bytes lang/python/fi_FI/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/fr/LC_MESSAGES/python.mo | Bin 1114 -> 1193 bytes lang/python/fr/LC_MESSAGES/python.po | 16 ++++++++++------ lang/python/fr_CH/LC_MESSAGES/python.mo | Bin 439 -> 439 bytes lang/python/fr_CH/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/gl/LC_MESSAGES/python.mo | Bin 422 -> 422 bytes lang/python/gl/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/gu/LC_MESSAGES/python.mo | Bin 422 -> 422 bytes lang/python/gu/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/he/LC_MESSAGES/python.mo | Bin 1144 -> 1144 bytes lang/python/he/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/hi/LC_MESSAGES/python.mo | Bin 1368 -> 1363 bytes lang/python/hi/LC_MESSAGES/python.po | 16 ++++++++++------ lang/python/hr/LC_MESSAGES/python.mo | Bin 1195 -> 1272 bytes lang/python/hr/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/hu/LC_MESSAGES/python.mo | Bin 844 -> 844 bytes lang/python/hu/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/id/LC_MESSAGES/python.mo | Bin 987 -> 987 bytes lang/python/id/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/is/LC_MESSAGES/python.mo | Bin 1066 -> 1066 bytes lang/python/is/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/it_IT/LC_MESSAGES/python.mo | Bin 1088 -> 1162 bytes lang/python/it_IT/LC_MESSAGES/python.po | 16 ++++++++++------ lang/python/ja/LC_MESSAGES/python.mo | Bin 1063 -> 1063 bytes lang/python/ja/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/kk/LC_MESSAGES/python.mo | Bin 413 -> 413 bytes lang/python/kk/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/kn/LC_MESSAGES/python.mo | Bin 414 -> 414 bytes lang/python/kn/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/lo/LC_MESSAGES/python.mo | Bin 410 -> 410 bytes lang/python/lo/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/lt/LC_MESSAGES/python.mo | Bin 1187 -> 1259 bytes lang/python/lt/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/mr/LC_MESSAGES/python.mo | Bin 421 -> 421 bytes lang/python/mr/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/nb/LC_MESSAGES/python.mo | Bin 616 -> 616 bytes lang/python/nb/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/nl/LC_MESSAGES/python.mo | Bin 658 -> 658 bytes lang/python/nl/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/pl/LC_MESSAGES/python.mo | Bin 1362 -> 1362 bytes lang/python/pl/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/pl_PL/LC_MESSAGES/python.mo | Bin 581 -> 581 bytes lang/python/pl_PL/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/pt_BR/LC_MESSAGES/python.mo | Bin 1097 -> 1177 bytes lang/python/pt_BR/LC_MESSAGES/python.po | 16 ++++++++++------ lang/python/pt_PT/LC_MESSAGES/python.mo | Bin 1095 -> 1173 bytes lang/python/pt_PT/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/ro/LC_MESSAGES/python.mo | Bin 1198 -> 1277 bytes lang/python/ro/LC_MESSAGES/python.po | 18 +++++++++++------- lang/python/ru/LC_MESSAGES/python.mo | Bin 740 -> 740 bytes lang/python/ru/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/sk/LC_MESSAGES/python.mo | Bin 1239 -> 1239 bytes lang/python/sk/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/sl/LC_MESSAGES/python.mo | Bin 475 -> 475 bytes lang/python/sl/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/sq/LC_MESSAGES/python.mo | Bin 1073 -> 1148 bytes lang/python/sq/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/sr/LC_MESSAGES/python.mo | Bin 495 -> 495 bytes lang/python/sr/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/sr@latin/LC_MESSAGES/python.mo | Bin 517 -> 517 bytes lang/python/sr@latin/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/sv/LC_MESSAGES/python.mo | Bin 421 -> 421 bytes lang/python/sv/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/th/LC_MESSAGES/python.mo | Bin 411 -> 411 bytes lang/python/th/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/tr_TR/LC_MESSAGES/python.mo | Bin 1117 -> 1192 bytes lang/python/tr_TR/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/uk/LC_MESSAGES/python.mo | Bin 497 -> 497 bytes lang/python/uk/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/ur/LC_MESSAGES/python.mo | Bin 418 -> 418 bytes lang/python/ur/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/uz/LC_MESSAGES/python.mo | Bin 412 -> 412 bytes lang/python/uz/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/zh_CN/LC_MESSAGES/python.mo | Bin 1033 -> 1033 bytes lang/python/zh_CN/LC_MESSAGES/python.po | 14 +++++++++----- lang/python/zh_TW/LC_MESSAGES/python.mo | Bin 1052 -> 1126 bytes lang/python/zh_TW/LC_MESSAGES/python.po | 14 +++++++++----- 111 files changed, 510 insertions(+), 286 deletions(-) diff --git a/lang/python.pot b/lang/python.pot index c9487697e..4165caae3 100644 --- a/lang/python.pot +++ b/lang/python.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,6 +18,10 @@ msgstr "" "Language: \n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "Unmount file systems." + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Dummy python job." @@ -30,23 +34,23 @@ msgstr "Dummy python step {}" msgid "Generate machine-id." msgstr "Generate machine-id." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Processing packages (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Install packages." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Installing one package." msgstr[1] "Installing %(num)d packages." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/ar/LC_MESSAGES/python.mo b/lang/python/ar/LC_MESSAGES/python.mo index 0b54ffe9233a1a711c59903074d7b845ad9150e6..71edcd9adb5f4866ee88a55ea4ff1656aa9bc1b5 100644 GIT binary patch delta 24 fcmey){GEA1FRzKNp|OIYft8Vku7SzMS+R@&WBLa} delta 24 fcmey){GEA1FRziVfw_XAg_Ws=wt?ZsS+R@&WLF1D diff --git a/lang/python/ar/LC_MESSAGES/python.po b/lang/python/ar/LC_MESSAGES/python.po index 0e565716b..34249b85c 100644 --- a/lang/python/ar/LC_MESSAGES/python.po +++ b/lang/python/ar/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Arabic (https://www.transifex.com/calamares/teams/20061/ar/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,16 +33,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -49,7 +53,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/ast/LC_MESSAGES/python.mo b/lang/python/ast/LC_MESSAGES/python.mo index dbf7ea574d0f3f73bf0650edfa9b5051713cab38..1fa6899637fa214c20ba47bdf2ff25d331c4161f 100644 GIT binary patch delta 26 hcmbQkI)`-wBO|YguA#Alp@Ef=g|30gWm=W, 2017\n" "Language-Team: Asturian (https://www.transifex.com/calamares/teams/20061/ast/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: ast\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Trabayu maniquín de python." @@ -30,23 +34,23 @@ msgstr "Pasu maniquín de python {}" msgid "Generate machine-id." msgstr "Xenerar machine-id." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/bg/LC_MESSAGES/python.mo b/lang/python/bg/LC_MESSAGES/python.mo index 20ac27ce5d77fcf2b1e8e992eded0b4371a652bc..fe76600246090106c88ef20310f1fa75d00dca34 100644 GIT binary patch delta 26 hcmeyz_K$6YEhDdquA#Alp@Ef=g|30gW-mq)CID)m2D1PF delta 26 hcmeyz_K$6YEhDdyu7SCNp@o&Hg|>m=W-mq)CID*#2D$(M diff --git a/lang/python/bg/LC_MESSAGES/python.po b/lang/python/bg/LC_MESSAGES/python.po index a86edb07c..f677dd63c 100644 --- a/lang/python/bg/LC_MESSAGES/python.po +++ b/lang/python/bg/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Georgi Georgiev , 2018\n" "Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -30,23 +34,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Инсталирай пакетите." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Инсталиране на един пакет." msgstr[1] "Инсталиране на %(num)d пакети." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/ca/LC_MESSAGES/python.mo b/lang/python/ca/LC_MESSAGES/python.mo index aab9d6093136feafbec2a91194f1efa7ca6a987a..43df96ea658b77cedc4cac7333a92e01298de49f 100644 GIT binary patch delta 308 zcmX@bF^jYQo)F7a1|Z-BVi_P#0b*VtUIWA+@BoMff%qX1ivaOwD9ynL5tjwhCO|QL zAgv9gQ-HJqke&dfMS=7|AUzL=uLH3ZkYC2kz#s{vCjx0@28K9>)j)xoX-w&F-Ye{YNF~ku@IKv$sDBwO! zNoAa34d>`f1MT_fusC5I-`K>!k$9^Nxx`v&V*UGBkZle#%g1YVv&Q*WBkES;q}NHp KC_W~3-~IwxD;L}V diff --git a/lang/python/ca/LC_MESSAGES/python.po b/lang/python/ca/LC_MESSAGES/python.po index 0086b0a87..33992c72f 100644 --- a/lang/python/ca/LC_MESSAGES/python.po +++ b/lang/python/ca/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Davidmp , 2017\n" "Language-Team: Catalan (https://www.transifex.com/calamares/teams/20061/ca/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "Desmunta els sistemes de fitxers." + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Tasca de python fictícia." @@ -30,23 +34,23 @@ msgstr "Pas de python fitctici {}" msgid "Generate machine-id." msgstr "Generació de l'id. de la màquina." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Processant paquets (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Instal·la els paquets." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Instal·lant un paquet." msgstr[1] "Instal·lant %(num)d paquets." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.mo b/lang/python/cs_CZ/LC_MESSAGES/python.mo index 4fa179e8963df156238c7fc91d8b6c6ceca1a24f..28b0810dbdc74be96daff2f99b19d0a151fa15bf 100644 GIT binary patch delta 303 zcmaFMxr3|zo)F7a1|Z-BVi_P#0b*VtUIWA+@BoMff%qX1ivaOwD9ynL5tjwhCO|QL zAgv9gQ-HJqke&dfMS=7|AbksnuLH3pkiUtUfk6sLp8?Ve3=DA$&w&h(LJk%Nh72Gr z2c(UFbUTnv0MfgFG{|AntPBi5GZ;94mx69`ll4+XJwWs6z7*F TDtHtMwTJAwmq@8%f&`jSDatEfRy#CD<%Ri-=9^W(#+~6-X*9tP+>t zIpR&8{!ZVf$vNiVx%s2)Y{X=#NnH>i?e7Q8-nFDQ*3icR1~|in_EhJ6 zk&+s?Lk~|_mHJ9JOj&#|!jU6QaEbh@47tQ-rHS?LvLM?$%&hLO_0<{{qgK%M!noIo L{UAKV_S60XKHnN; diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.po b/lang/python/cs_CZ/LC_MESSAGES/python.po index 1d2b8d0df..6ff062e32 100644 --- a/lang/python/cs_CZ/LC_MESSAGES/python.po +++ b/lang/python/cs_CZ/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Pavel Borecki , 2017\n" "Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "Odpojit souborové systémy." + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Testovací úloha python." @@ -30,16 +34,16 @@ msgstr "Testovací krok {} python." msgid "Generate machine-id." msgstr "Vytvořit identifikátor stroje." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Zpracovávání balíčků (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Instalovat balíčky." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -47,7 +51,7 @@ msgstr[0] "Je instalován jeden balíček." msgstr[1] "Jsou instalovány %(num)d balíčky." msgstr[2] "Je instalováno %(num)d balíčků." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/da/LC_MESSAGES/python.mo b/lang/python/da/LC_MESSAGES/python.mo index 71e2969cee817c7ca3886b5bc2ebd8b7ce199cf7..1618fc2d2e88aeaba25637afbec47f2ba0e01230 100644 GIT binary patch delta 296 zcmbQvahs$5o)F7a1|Z-BVi_P#0b*VtUIWA+@BoMff%qX1ivaOwD9ynL5tjwhCO|QL zAgv9gQ-HJqke&dfMS=7|AUzF;uLCj2oIGZTISmjxj$ta0Aq13I1*DCD^j;vX1*AU! zX-yz4%>psV6-WckVBi2^CLjg@kfYgwm=(l<0-!Q50BUDon|SnzaA;m`eraBbLRw}{ zszPyPaY<_KQ;YN%07xJx Aw*UYD delta 229 zcmcc3F`c9So)F7a1|Z-7Vi_Qg0b*_-o&&@nZ~}-0f%qg4ivaO$DE$FQgTz@G85m4} zv^bE~2GTx2+5kvb0O@H!yb_2(>KvFM`h%c!I*=A(U~pro0Wyq$3i^Sx7LYy!q&0!` zTObY8%fJrAtUwIpGOz(L3lM`G3j$0Kih*I`-6xZ;GluXQ=^B_T7+P4FT4);>Znj|J GWdZ<9Ef=Z) diff --git a/lang/python/da/LC_MESSAGES/python.po b/lang/python/da/LC_MESSAGES/python.po index 130829e5b..d0b818364 100644 --- a/lang/python/da/LC_MESSAGES/python.po +++ b/lang/python/da/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dan Johansen (Strit), 2017\n" "Language-Team: Danish (https://www.transifex.com/calamares/teams/20061/da/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "Afmonter filsystemer." + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Dummy python-job." @@ -30,23 +34,23 @@ msgstr "Dummy python-trin {}" msgid "Generate machine-id." msgstr "Generere maskine-id." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Forarbejder pakker (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Installér pakker." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Installerer én pakke." msgstr[1] "Installerer %(num)d pakker." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/de/LC_MESSAGES/python.mo b/lang/python/de/LC_MESSAGES/python.mo index 54e535e4efc258bb7402f5b8088f688facf47abf..d3b96df6bf4b18bf13b2f8bd04376602987453aa 100644 GIT binary patch delta 26 hcmZ3?v6y4SUq)UNT|;99Ljx-#3ta<~&0I{9OaN!b24?^O delta 26 hcmZ3?v6y4SUq)UdT?2CkLklZY3vC0#&0I{9OaN#q25tZV diff --git a/lang/python/de/LC_MESSAGES/python.po b/lang/python/de/LC_MESSAGES/python.po index 905724013..b928ad872 100644 --- a/lang/python/de/LC_MESSAGES/python.po +++ b/lang/python/de/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dirk Hein , 2017\n" "Language-Team: German (https://www.transifex.com/calamares/teams/20061/de/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Dummy Python-Job" @@ -30,23 +34,23 @@ msgstr "Dummy Python-Schritt {}" msgid "Generate machine-id." msgstr "Generiere Computer-ID" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Verarbeite Pakete (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Pakete installieren " -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Installiere ein Paket" msgstr[1] "Installiere %(num)dPakete " -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/el/LC_MESSAGES/python.mo b/lang/python/el/LC_MESSAGES/python.mo index cbd13a3a95374e54f686947bfab9dcb35c668266..24e6a05c9f5c5cd5d6056853e443a15de3637f00 100644 GIT binary patch delta 24 fcmdnNvV c3u-*Lt_O)11lp7T?3PiM@kq0T%HFq delta 24 fcmdnNvV c3vZ019JsK3oBC#Z3DxNM@kq0T>A$( diff --git a/lang/python/el/LC_MESSAGES/python.po b/lang/python/el/LC_MESSAGES/python.po index fd0d67317..0b47753d5 100644 --- a/lang/python/el/LC_MESSAGES/python.po +++ b/lang/python/el/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Efstathios Iosifidis , 2017\n" "Language-Team: Greek (https://www.transifex.com/calamares/teams/20061/el/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -30,23 +34,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "εγκατάσταση πακέτων." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/en_GB/LC_MESSAGES/python.mo b/lang/python/en_GB/LC_MESSAGES/python.mo index 855a80e5c46d1a62dbb94ec73ebe1407b9325f42..e096318f734d72c0d22242a8b78e8e5547cb16d8 100644 GIT binary patch delta 24 fcmdnPyoY&0FRzKNp|OIYft8Vku7SzMSxSrmSn39n delta 24 fcmdnPyoY&0FRziVfw_XAg_Ws=wt?ZsSxSrmSw{w$ diff --git a/lang/python/en_GB/LC_MESSAGES/python.po b/lang/python/en_GB/LC_MESSAGES/python.po index fcc8d6f41..c2cc3c9bc 100644 --- a/lang/python/en_GB/LC_MESSAGES/python.po +++ b/lang/python/en_GB/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: English (United Kingdom) (https://www.transifex.com/calamares/teams/20061/en_GB/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: en_GB\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/es/LC_MESSAGES/python.mo b/lang/python/es/LC_MESSAGES/python.mo index a6d7055d53c2577d0d46da6af473431b95f08105..4e2a2c5a4b57f686607fd2b2d4ae18d836322194 100644 GIT binary patch delta 26 hcmdnYv6*ATUq)UNT|;99Ljx-#3ta<~&0I{HOaN;J2A2Q; delta 26 hcmdnYv6*ATUq)UdT?2CkLklZY3vC0#&0I{HOaNO+$ diff --git a/lang/python/fa/LC_MESSAGES/python.po b/lang/python/fa/LC_MESSAGES/python.po index 4e82d7238..202b13358 100644 --- a/lang/python/fa/LC_MESSAGES/python.po +++ b/lang/python/fa/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Persian (https://www.transifex.com/calamares/teams/20061/fa/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,22 +33,22 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/fi_FI/LC_MESSAGES/python.mo b/lang/python/fi_FI/LC_MESSAGES/python.mo index 1618d02a9abf1b48f8d06b0b44c0c04958c92ecd..85964b41b03504ac66b184d174e7cda4d1e39ae3 100644 GIT binary patch delta 24 fcmdnWyp?%EFRzKNp|OIYft8Vku7SzMS<;LESDFTW delta 24 fcmdnWyp?%EFRziVfw_XAg_Ws=wt?ZsS<;LESN8^l diff --git a/lang/python/fi_FI/LC_MESSAGES/python.po b/lang/python/fi_FI/LC_MESSAGES/python.po index b538a93a7..a55aa1cd4 100644 --- a/lang/python/fi_FI/LC_MESSAGES/python.po +++ b/lang/python/fi_FI/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Finnish (Finland) (https://www.transifex.com/calamares/teams/20061/fi_FI/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: fi_FI\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/fr/LC_MESSAGES/python.mo b/lang/python/fr/LC_MESSAGES/python.mo index 2aa26a22b6ca51bb884ad617fabcb0cd54b7d0b5..43ce36040d5fd1bf28da71202a8b638d795ef2cf 100644 GIT binary patch delta 347 zcmcb`v68d?o)F7a1|Z-BVi_P#0b*VtUIWA+@BoMff%qX1ivaOwD9ynL5tjwhCO|QL zAgv9gQ-HJqke&dfMS=7|AiW5PuS5A&%nS??AbB9I$iNWCuoB1+0}7l5(pEtF5s=mc z(y}ZJ3>HAz2S_Ue=~f^OG=qTyh?#&G1VD~v2Vzzb2MU17zyN3r1KY%-PlQABa`Q{` zN)*yEb5a$GD~n4~b0;rj4Cgh`H8fT*G_W$V&^0ib%*AA*;FVgGnp>&ho?lv&o0_9w zla&r(IiwY(rs|~?ZO&x+$f)9Scx7&WUP)?^LQZNi*ucXpa)GRrRG<~f8JVd?#S8!j C89nF# delta 269 zcmZ3m=WD6!6WyjRwlEgd(o5Z}5jQqSxz1+m2^wgrnycCD@+{DZrz2yAd%~O~@G6Dd6 CizlN1 diff --git a/lang/python/fr/LC_MESSAGES/python.po b/lang/python/fr/LC_MESSAGES/python.po index 0922941c9..576c79761 100644 --- a/lang/python/fr/LC_MESSAGES/python.po +++ b/lang/python/fr/LC_MESSAGES/python.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Aestan , 2018\n" +"Last-Translator: Jeremy Gourmel , 2018\n" "Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,6 +18,10 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "Démonter les systèmes de fichiers" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Tâche factice python" @@ -30,23 +34,23 @@ msgstr "Étape factice python {}" msgid "Generate machine-id." msgstr "Générer un identifiant machine." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Traitement des paquets (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Installer les paquets." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Installation d'un paquet." msgstr[1] "Installation de %(num)d paquets." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/fr_CH/LC_MESSAGES/python.mo b/lang/python/fr_CH/LC_MESSAGES/python.mo index dd579fb0f642cae612e800b60878acb90a1f9e2a..2380f9d348dc7c4b06badf572682523eb61c321b 100644 GIT binary patch delta 24 fcmdnayq$SMFRzKNp|OIYft8Vku7SzMS+a}(SNaBn delta 24 fcmdnayq$SMFRziVfw_XAg_Ws=wt?ZsS+a}(SXTy$ diff --git a/lang/python/fr_CH/LC_MESSAGES/python.po b/lang/python/fr_CH/LC_MESSAGES/python.po index 1ac6404f7..b0bbf3e9d 100644 --- a/lang/python/fr_CH/LC_MESSAGES/python.po +++ b/lang/python/fr_CH/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: French (Switzerland) (https://www.transifex.com/calamares/teams/20061/fr_CH/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: fr_CH\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/gl/LC_MESSAGES/python.mo b/lang/python/gl/LC_MESSAGES/python.mo index 8774b35410b2b06046731e52693ca147ee89c000..58053670ae830fe0f1c42ce7d0e1cd40f8bde58a 100644 GIT binary patch delta 24 fcmZ3+yo`B5FRzKNp|OIYft8Vku7SzMSv-sYRLTZW delta 24 fcmZ3+yo`B5FRziVfw_XAg_Ws=wt?ZsSv-sYRVM~l diff --git a/lang/python/gl/LC_MESSAGES/python.po b/lang/python/gl/LC_MESSAGES/python.po index 1f68786f2..1f4a77e1a 100644 --- a/lang/python/gl/LC_MESSAGES/python.po +++ b/lang/python/gl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Galician (https://www.transifex.com/calamares/teams/20061/gl/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/gu/LC_MESSAGES/python.mo b/lang/python/gu/LC_MESSAGES/python.mo index 5a9c5261123aa5ef24ca807b42024f33a8213493..c34b877ee45a69263fd10004c136f31703b6b7b3 100644 GIT binary patch delta 24 fcmZ3+yo`B5FRzKNp|OIYft8Vku7SzMSv-sYRLTZW delta 24 fcmZ3+yo`B5FRziVfw_XAg_Ws=wt?ZsSv-sYRVM~l diff --git a/lang/python/gu/LC_MESSAGES/python.po b/lang/python/gu/LC_MESSAGES/python.po index 197aa2e4b..033d91c74 100644 --- a/lang/python/gu/LC_MESSAGES/python.po +++ b/lang/python/gu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Gujarati (https://www.transifex.com/calamares/teams/20061/gu/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: gu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/he/LC_MESSAGES/python.mo b/lang/python/he/LC_MESSAGES/python.mo index f352c66eb4de598035c5a8e885cb548ab7ede650..6655af6b9001db035dfbb17328a691dd3b5d1297 100644 GIT binary patch delta 26 hcmeyt@q=T-Uq)UNT|;99Ljx-#3ta<~&0I`*OaOTb2W9{O delta 26 hcmeyt@q=T-Uq)UdT?2CkLklZY3vC0#&0I`*OaOUq2W, 2017\n" "Language-Team: Hebrew (https://www.transifex.com/calamares/teams/20061/he/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "משימת דמה של Python." @@ -30,23 +34,23 @@ msgstr "צעד דמה של Python {}" msgid "Generate machine-id." msgstr "חולל מספר סידורי של המכונה." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "מעבד חבילות (%(count)d/%(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "התקן חבילות." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "מתקין חבילה אחת." msgstr[1] "מתקין %(num)d חבילות." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/hi/LC_MESSAGES/python.mo b/lang/python/hi/LC_MESSAGES/python.mo index 30ae668804055e50440d604f4f6213396889d9d8..9ef42cc7f704ddd986e320a616b630f9c5db80d2 100644 GIT binary patch delta 105 zcmcb?b(w2IjO}7Z28NYDEXcsX;LFUwAOfW0fwVG^E&, 2018\n" +"Last-Translator: Panwar108 , 2018\n" "Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,6 +18,10 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Dummy python job." @@ -30,23 +34,23 @@ msgstr "Dummy python step {}" msgid "Generate machine-id." msgstr "machine-id generate करें।" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "पैकेज (%(count)d / %(total)d) process किए जा रहे हैं" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "पैकेज इंस्टॉल करें।" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "एक पैकेज इंस्टॉल किया जा रहा है।" msgstr[1] "%(num)d पैकेज इंस्टॉल किए जा रहे हैं।" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/hr/LC_MESSAGES/python.mo b/lang/python/hr/LC_MESSAGES/python.mo index 17adb13d73da9cd403a4ef37772c79c9eb7430ec..89a2888530e5f614e505258261fe7cd606b26df3 100644 GIT binary patch delta 305 zcmZ3@`Gd3mo)F7a1|Z-BVi_P#0b*VtUIWA+@BoMff%qX1ivaOwD9ynL5tjwhCO|QL zAgv9gQ-HJqke&dfMS=7|ApH%9uLChi|2bv`1~DN07)XmVFvKzZ0y2bv0zxbd4DLW$ z6-a9W>0BV~2&AV2X*nQ$6G#KiVBi2^CLjg@kfYgwm=(l<0-!Q502<4{Hu2~a;n2L? z{L;JwqT#{Ips>c8T>_jf0 delta 229 zcmXZWu@1pd7>41m)uIuDMszV)rIEBkG#0V27>#bg9oSrhh|Rz#MsW`$c7rhW0!$da zNBqfqp5{L}Nk87+n?HPKB_>Z*noxn(WadOAI#Zc$f1haft|hfFzz|0m;S682BlB*P zkt%q^059lE1EqWnS-i21JxA)}6nU#0xx}@y#QOKMAln>f7WZ^{wZ_F}BkI)Rq}xuy KC_W_i*8T!K_8Is9 diff --git a/lang/python/hr/LC_MESSAGES/python.po b/lang/python/hr/LC_MESSAGES/python.po index e0b7f41a2..3472e3193 100644 --- a/lang/python/hr/LC_MESSAGES/python.po +++ b/lang/python/hr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Lovro Kudelić , 2017\n" "Language-Team: Croatian (https://www.transifex.com/calamares/teams/20061/hr/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: hr\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "Odmontiraj datotečne sustave." + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Testni python posao." @@ -30,16 +34,16 @@ msgstr "Testni python korak {}" msgid "Generate machine-id." msgstr "Generiraj ID računala." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Obrađujem pakete (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Instaliraj pakete." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -47,7 +51,7 @@ msgstr[0] "Instaliram paket." msgstr[1] "Instaliram %(num)d pakete." msgstr[2] "Instaliram %(num)d pakete." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/hu/LC_MESSAGES/python.mo b/lang/python/hu/LC_MESSAGES/python.mo index 3cad3f4c5c3b8b51e737909500d15863bb5b71f1..aa5ac26b3992ab30b3fad2da643920c8b933eb53 100644 GIT binary patch delta 26 hcmX@Zc7|<3IU}!$uA#Alp@Ef=g|30g<`%{ii~wh>2UY+8 delta 26 hcmX@Zc7|<3IU}!;u7SCNp@o&Hg|>m=<`%{ii~wj52VDRF diff --git a/lang/python/hu/LC_MESSAGES/python.po b/lang/python/hu/LC_MESSAGES/python.po index 2ac911867..3bba56e9b 100644 --- a/lang/python/hu/LC_MESSAGES/python.po +++ b/lang/python/hu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: miku84, 2017\n" "Language-Team: Hungarian (https://www.transifex.com/calamares/teams/20061/hu/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Hamis PythonQt Job." @@ -30,23 +34,23 @@ msgstr "Hamis PythonQt {} lépés" msgid "Generate machine-id." msgstr "Számítógép azonosító generálása." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Csomagok feldolgozása (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Csomagok telepítése." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/id/LC_MESSAGES/python.mo b/lang/python/id/LC_MESSAGES/python.mo index 865533faca9acc56b58ce79af9f3ad75a4f712d6..94b8af008bcee5a0d9a000983ecd2ecdb6b49936 100644 GIT binary patch delta 26 hcmcc3ew%&6Uq)UNT|;99Ljx-#3ta<~&0I_u83A+k2aEs! delta 26 hcmcc3ew%&6Uq)UdT?2CkLklZY3vC0#&0I_u83A-z2a^B* diff --git a/lang/python/id/LC_MESSAGES/python.po b/lang/python/id/LC_MESSAGES/python.po index 96f52618f..1bb54f6dc 100644 --- a/lang/python/id/LC_MESSAGES/python.po +++ b/lang/python/id/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Choiril Abdul, 2017\n" "Language-Team: Indonesian (https://www.transifex.com/calamares/teams/20061/id/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Tugas dumi python." @@ -30,22 +34,22 @@ msgstr "Langkah {} dumi python" msgid "Generate machine-id." msgstr "Menghasilkan machine-id." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Paket pemrosesan (%(count)d/%(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "pasang paket" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "memasang paket %(num)d" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/is/LC_MESSAGES/python.mo b/lang/python/is/LC_MESSAGES/python.mo index d59f915de02c17d8a72cbd2fcb4a4b8bc5ad4616..a6e7b278e1be496d003c5d0993e04b3344eabddf 100644 GIT binary patch delta 26 hcmZ3*v5I5EUq)UNT|;99Ljx-#3ta<~&0I_hOaN&z27CYj delta 26 hcmZ3*v5I5EUq)UdT?2CkLklZY3vC0#&0I_hOaN(?27>?q diff --git a/lang/python/is/LC_MESSAGES/python.po b/lang/python/is/LC_MESSAGES/python.po index 064735626..cbae57260 100644 --- a/lang/python/is/LC_MESSAGES/python.po +++ b/lang/python/is/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kristján Magnússon, 2017\n" "Language-Team: Icelandic (https://www.transifex.com/calamares/teams/20061/is/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: is\n" "Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Dummy python job." @@ -30,23 +34,23 @@ msgstr "Dummy python step {}" msgid "Generate machine-id." msgstr "Generate machine-id." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Vinnslupakkar (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Setja upp pakka." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Setja upp einn pakka." msgstr[1] "Setur upp %(num)d pakka." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/it_IT/LC_MESSAGES/python.mo b/lang/python/it_IT/LC_MESSAGES/python.mo index 631d1b587458a1b78d547e2d15fba9e93fa786ef..eb4ca702328dba7de66ee71ee2124fce1ba9b692 100644 GIT binary patch delta 337 zcmX@W(ZyMRPl#nI0}yZmu?!HW05LBRuK{8ZcmTwLK>QGhMS%D-l;&WBh|2r^> zl_;cT=APvuLE@~83=Aef zS{z7g18E;1Z2+Vzfb>cz2B`~XhUiZP(n3If6_6HYVDMz<1u`sv0t1, 2018\n" "Language-Team: Italian (Italy) (https://www.transifex.com/calamares/teams/20061/it_IT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,6 +18,10 @@ msgstr "" "Language: it_IT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "Smontaggio del file system" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Dummy python job." @@ -30,23 +34,23 @@ msgstr "Dummy python step {}" msgid "Generate machine-id." msgstr "Genera machine-id." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Elaborando i pacchetti (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Installa pacchetti." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Installando un pacchetto." msgstr[1] "Installando %(num)d pacchetti." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/ja/LC_MESSAGES/python.mo b/lang/python/ja/LC_MESSAGES/python.mo index 6a0d11cf76435448cb70c9a75bf326ca3d12d6bc..020832689d042f6a43350fe839f0b76b2edff39f 100644 GIT binary patch delta 26 hcmZ3^v7BSWUq)UNT|;99Ljx-#3ta<~&0I{fOaN$>26F%a delta 26 hcmZ3^v7BSWUq)UdT?2CkLklZY3vC0#&0I{fOaN&526_Mh diff --git a/lang/python/ja/LC_MESSAGES/python.po b/lang/python/ja/LC_MESSAGES/python.po index 88130c909..3c72a8512 100644 --- a/lang/python/ja/LC_MESSAGES/python.po +++ b/lang/python/ja/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Takefumi Nagata, 2017\n" "Language-Team: Japanese (https://www.transifex.com/calamares/teams/20061/ja/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Dummy python job." @@ -30,22 +34,22 @@ msgstr "Dummy python step {}" msgid "Generate machine-id." msgstr "machine-id の生成" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "パッケージの処理中 (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "パッケージのインストール" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] " %(num)d パッケージのインストール中。" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/kk/LC_MESSAGES/python.mo b/lang/python/kk/LC_MESSAGES/python.mo index e5901da95f9701689e0dd070183b13db95bdaf7d..63e596343b8964c1da6393175f7f32dae0b0dd62 100644 GIT binary patch delta 24 fcmbQsJePSwFRzKNp|OIYft8Vku7SzMSO+$ diff --git a/lang/python/kn/LC_MESSAGES/python.po b/lang/python/kn/LC_MESSAGES/python.po index 35c7863dd..efb7d742c 100644 --- a/lang/python/kn/LC_MESSAGES/python.po +++ b/lang/python/kn/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Kannada (https://www.transifex.com/calamares/teams/20061/kn/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: kn\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,22 +33,22 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/lo/LC_MESSAGES/python.mo b/lang/python/lo/LC_MESSAGES/python.mo index 5d51dd1ac74e1ef808420e52429da15338887ac7..0cf26c52de68d1c267429e24592b209c70f7117a 100644 GIT binary patch delta 23 ecmbQmJd1fkFRzKNp|OIYft8Vku7SzIS&RToF9sX{ delta 23 ecmbQmJd1fkFRziVfw_XAg_Ws=wt?ZoS&RTog$5%4 diff --git a/lang/python/lo/LC_MESSAGES/python.po b/lang/python/lo/LC_MESSAGES/python.po index 4255d1c8e..cf540eaf6 100644 --- a/lang/python/lo/LC_MESSAGES/python.po +++ b/lang/python/lo/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Lao (https://www.transifex.com/calamares/teams/20061/lo/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: lo\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,22 +33,22 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/lt/LC_MESSAGES/python.mo b/lang/python/lt/LC_MESSAGES/python.mo index 83bf0a0fae0fb49203272668311c2c33900b0ace..5fd940681c8368565ff93c5d349c03900dbeb5ad 100644 GIT binary patch delta 300 zcmZ3?`I@u-o)F7a1|Z-BVi_P#0b*VtUIWA+@BoMff%qX1ivaOwD9ynL5tjwhCO|QL zAgv9gQ-HJqke&dfMS=7|AbkReuLH3pkiUQ#V$Uuh4U~^#xDI51EO-l~LxA*uAgu+Y zLs%FX0)ccrkOpbI2&92#FmM1d6A*&{$kFUT%nIT_0Z=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "Atjungti failų sistemas." + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Fiktyvi python užduotis." @@ -30,16 +34,16 @@ msgstr "Fiktyvus python žingsnis {}" msgid "Generate machine-id." msgstr "Generuoti machine-id." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Apdorojami paketai (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Įdiegti paketus." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -47,7 +51,7 @@ msgstr[0] "Įdiegiamas %(num)d paketas." msgstr[1] "Įdiegiami %(num)d paketai." msgstr[2] "Įdiegiama %(num)d paketų." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/mr/LC_MESSAGES/python.mo b/lang/python/mr/LC_MESSAGES/python.mo index bfbcd4413b008c4a8880c25e296e3a9d07f129f8..13215a349635a3ed28f8e95e3a4f018c109787d2 100644 GIT binary patch delta 24 fcmZ3=yp(xDFRzKNp|OIYft8Vku7SzMS=@{ORGJ1& delta 24 fcmZ3=yp(xDFRziVfw_XAg_Ws=wt?ZsS=@{ORQCo{ diff --git a/lang/python/mr/LC_MESSAGES/python.po b/lang/python/mr/LC_MESSAGES/python.po index c83e0f98d..a73df6af2 100644 --- a/lang/python/mr/LC_MESSAGES/python.po +++ b/lang/python/mr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Marathi (https://www.transifex.com/calamares/teams/20061/mr/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: mr\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/nb/LC_MESSAGES/python.mo b/lang/python/nb/LC_MESSAGES/python.mo index 5a896436b8cc93316bdc1c70444c0de7a24a4c5a..549c1b74ae75f42bc08ac715853e437a448b192d 100644 GIT binary patch delta 24 fcmaFC@`7c;9bOY%Lt_O)11lp7T?3PiFY6frXo3gl delta 24 fcmaFC@`7c;9bO|{19JsK3oBC#Z3DxNFY6frXx|6! diff --git a/lang/python/nb/LC_MESSAGES/python.po b/lang/python/nb/LC_MESSAGES/python.po index 9588617c6..53a731d8b 100644 --- a/lang/python/nb/LC_MESSAGES/python.po +++ b/lang/python/nb/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Tyler Moss , 2017\n" "Language-Team: Norwegian Bokmål (https://www.transifex.com/calamares/teams/20061/nb/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: nb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -30,23 +34,23 @@ msgstr "" msgid "Generate machine-id." msgstr "Generer maskin-ID." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Installer pakker." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/nl/LC_MESSAGES/python.mo b/lang/python/nl/LC_MESSAGES/python.mo index 0477a658c344211fde994027bb13a3793910f553..f8e2e2dd771e609dc882dc7b07d4a2916292b516 100644 GIT binary patch delta 26 hcmbQlI*D}yBO|YguA#Alp@Ef=g|30gWm=W, 2017\n" "Language-Team: Dutch (https://www.transifex.com/calamares/teams/20061/nl/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Voorbeeld Python-taak" @@ -30,23 +34,23 @@ msgstr "Voorbeeld Python-stap {}" msgid "Generate machine-id." msgstr "Genereer machine-id" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/pl/LC_MESSAGES/python.mo b/lang/python/pl/LC_MESSAGES/python.mo index 27720b059c9aea0a7598b7dcb22d0ccfd20c8193..1c18350e9f7b1e4d50e05713685e0bb1d75541a1 100644 GIT binary patch delta 26 hcmcb_b%|@kUq)UNT|;99Ljx-#3ta<~&0I_#%m8t-2KfL0 delta 26 hcmcb_b%|@kUq)UdT?2CkLklZY3vC0#&0I_#%m8v12LJ#7 diff --git a/lang/python/pl/LC_MESSAGES/python.po b/lang/python/pl/LC_MESSAGES/python.po index a29efca8d..7836f9e40 100644 --- a/lang/python/pl/LC_MESSAGES/python.po +++ b/lang/python/pl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Marcin Mikołajczak , 2017\n" "Language-Team: Polish (https://www.transifex.com/calamares/teams/20061/pl/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: pl\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Zadanie fikcyjne Python." @@ -30,16 +34,16 @@ msgstr "Krok fikcyjny Python {}" msgid "Generate machine-id." msgstr "Generuj machine-id." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Przetwarzanie pakietów (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Zainstaluj pakiety." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -48,7 +52,7 @@ msgstr[1] "Instalowanie %(num)d pakietów." msgstr[2] "Instalowanie %(num)d pakietów." msgstr[3] "Instalowanie%(num)d pakietów." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/pl_PL/LC_MESSAGES/python.mo b/lang/python/pl_PL/LC_MESSAGES/python.mo index 7a9c33e45ff83b0bb3161cd6b4c8d219b0cb2bcb..57922eec8c2fcbdff1c49bf8721fe3cd569f1608 100644 GIT binary patch delta 24 fcmX@ga+GC4FRzKNp|OIYft8Vku7SzMS*sZVTgC@3 delta 24 fcmX@ga+GC4FRziVfw_XAg_Ws=wt?ZsS*sZVTq6fI diff --git a/lang/python/pl_PL/LC_MESSAGES/python.po b/lang/python/pl_PL/LC_MESSAGES/python.po index ecd484fed..fe11f2593 100644 --- a/lang/python/pl_PL/LC_MESSAGES/python.po +++ b/lang/python/pl_PL/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Polish (Poland) (https://www.transifex.com/calamares/teams/20061/pl_PL/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: pl_PL\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,16 +33,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -47,7 +51,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/pt_BR/LC_MESSAGES/python.mo b/lang/python/pt_BR/LC_MESSAGES/python.mo index 7f9008a5bc01a7743bdc17728184c468a253f3b4..8857385736b576c80fb7bd29f3c85e6e872d93e9 100644 GIT binary patch delta 363 zcmXYrKTE?v7{)KLYAST_@1nx1tF|UFLn%ds3WB@12}g3`Ns_}{8g=q3C`GWd;3O`7 z0Yy4EI&~8T7iYhK&)GcipiPy-LZ2w_}VgVE+iC_mB-nA8ZJFIQW50(P9Oq@GiUppTX#0 z4zPiVdGsV0H$xd*`wwc^#P#5Nc0Wy2H_hot#)9;P&PCF@w+?DS-PZWo)tVkR@4qp;;m= zWD6!6BgedyqQff{d=rb3Q*-ha9COMNi&FE_6BTR{VN8eYlvKU^qI5eQ1tSAP^Ucec HE;0fD23RaY diff --git a/lang/python/pt_BR/LC_MESSAGES/python.po b/lang/python/pt_BR/LC_MESSAGES/python.po index e07379ce0..3118a850d 100644 --- a/lang/python/pt_BR/LC_MESSAGES/python.po +++ b/lang/python/pt_BR/LC_MESSAGES/python.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: André Marcelo Alvarenga , 2017\n" +"Last-Translator: Caio Jordão Carvalho , 2018\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,6 +18,10 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "Desmontar os sistemas de arquivo." + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Tarefa modelo python." @@ -30,23 +34,23 @@ msgstr "Etapa modelo python {}" msgid "Generate machine-id." msgstr "Gerar machine-id." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Processando pacotes (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Instalar pacotes." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Instalando um pacote." msgstr[1] "Instalando %(num)d pacotes." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/pt_PT/LC_MESSAGES/python.mo b/lang/python/pt_PT/LC_MESSAGES/python.mo index 1e1afdf3441c5acdb5ba3aed9787c4bcdbaed71b..d074e605a274f669c8382ff781ba932704de0f68 100644 GIT binary patch delta 306 zcmX@kF_p9ao)F7a1|Z-BVi_P#0b*VtUIWA+@BoMff%qX1ivaOwD9ynL5tjwhCO|QL zAgv9gQ-HJqke&dfMS=7|AbkLcuLChi{|sh`_*x(hG&hdnFoeNy6-XNb6+8#hAcG`X zfQABTS0F79q)UM`& PDo|r`MrvkJz8(VrRJ<(d delta 229 zcmXZWu@1pd6oBE=tED0aLb@32jks5c8;R9qGvr6fG|CNITNIMM0#A z8R}jBb0S+_9E$_$2VU64BoyIRN)!=mDH7}N&w?0z=&bI~^);APdmTG$J3kuu)VjSl GWAg!e;}|0V diff --git a/lang/python/pt_PT/LC_MESSAGES/python.po b/lang/python/pt_PT/LC_MESSAGES/python.po index 6c1d73ae0..b6ce9857c 100644 --- a/lang/python/pt_PT/LC_MESSAGES/python.po +++ b/lang/python/pt_PT/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ricardo Simões , 2017\n" "Language-Team: Portuguese (Portugal) (https://www.transifex.com/calamares/teams/20061/pt_PT/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "Desmontar sistemas de ficheiro." + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Tarefa Dummy python." @@ -30,23 +34,23 @@ msgstr "Passo Dummy python {}" msgid "Generate machine-id." msgstr "Gerar id-máquina" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "A processar pacotes (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Instalar pacotes." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "A instalar um pacote." msgstr[1] "A instalar %(num)d pacotes." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/ro/LC_MESSAGES/python.mo b/lang/python/ro/LC_MESSAGES/python.mo index a72b5ca6fbfde8ca21b06782032da6369b7c7d0d..e1e9dcd69d45122da6977c15f16ab1c52b0bfada 100644 GIT binary patch delta 341 zcmXYrJ4?e*7=}+SY9n-Ly-Z%tF2PhYh_jQUAVRljju>bXHK#(m_yY=3iT(va5EmU? z{0W`hif-=WDEb`J7apGTeSEx}NAJhG95>xtK|EN380zom8oc)IyF%4zk@vpz1=k~KS?`B#aCmkh=UZGW5-dP9r&~I(ZRZ+L``g?)27?8gRLc1~S1TrFl0vCWZNTU`D149sy zjt0^|y$tL?%nHOnX$CeR1`2~63#1sBKm-U(y!&MGb;b~0BV7Y?1w#ufQwwba!_5{< Ug^Uv)>P)`IT)~(+Ie?`P08f=3LjV8( diff --git a/lang/python/ro/LC_MESSAGES/python.po b/lang/python/ro/LC_MESSAGES/python.po index a3bd6bae2..a4c212876 100644 --- a/lang/python/ro/LC_MESSAGES/python.po +++ b/lang/python/ro/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Baadur Jobava , 2018\n" "Language-Team: Romanian (https://www.transifex.com/calamares/teams/20061/ro/)\n" @@ -18,9 +18,13 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "Demonteaza sistemul de fisiere" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "Dummy python job." +msgstr "Job python fictiv." #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" @@ -30,24 +34,24 @@ msgstr "Dummy python step {}" msgid "Generate machine-id." msgstr "Generează machine-id." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Se procesează pachetele (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Instalează pachetele." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Instalează un pachet." msgstr[1] "Se instalează %(num)d pachete." -msgstr[2] "Se instalează %(num)d de pachete." +msgstr[2] "Se instalează %(num)d din pachete." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/ru/LC_MESSAGES/python.mo b/lang/python/ru/LC_MESSAGES/python.mo index 493a6c00bf495f41b073ef65e234b30c4627d406..5b868147608634bfb546c542f34a3dfe020936f7 100644 GIT binary patch delta 24 fcmaFD`h<1DMP3tKLt_O)11lp7T?3Pi_t=;KW)lZf delta 24 fcmaFD`h<1DMP4Ia19JsK3oBC#Z3DxN_t=;KW^e~u diff --git a/lang/python/ru/LC_MESSAGES/python.po b/lang/python/ru/LC_MESSAGES/python.po index 374ec2773..a3d5539fe 100644 --- a/lang/python/ru/LC_MESSAGES/python.po +++ b/lang/python/ru/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Aleksey Kabanov , 2018\n" "Language-Team: Russian (https://www.transifex.com/calamares/teams/20061/ru/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: ru\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -30,16 +34,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Обработка пакетов (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -48,7 +52,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/sk/LC_MESSAGES/python.mo b/lang/python/sk/LC_MESSAGES/python.mo index d862931cbc829850b86c6b6b1fa39192732a036e..9eb578a1b589c8f8797016c0ab6c2c7241cf3de7 100644 GIT binary patch delta 26 hcmcc4d7X2^Uq)UNT|;99Ljx-#3ta<~&0I`pnE-Q!2ZaCt delta 26 hcmcc4d7X2^Uq)UdT?2CkLklZY3vC0#&0I`pnE-R@2aEs! diff --git a/lang/python/sk/LC_MESSAGES/python.po b/lang/python/sk/LC_MESSAGES/python.po index cad833bf4..21cd64112 100644 --- a/lang/python/sk/LC_MESSAGES/python.po +++ b/lang/python/sk/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dušan Kazik , 2017\n" "Language-Team: Slovak (https://www.transifex.com/calamares/teams/20061/sk/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: sk\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Fiktívna úloha jazyka python." @@ -30,16 +34,16 @@ msgstr "Fiktívny krok {} jazyka python" msgid "Generate machine-id." msgstr "Generovanie identifikátora počítača." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Spracovávajú sa balíky (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Inštalácia balíkov." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -47,7 +51,7 @@ msgstr[0] "Inštaluje sa jeden balík." msgstr[1] "Inštalujú sa %(num)d balíky." msgstr[2] "Inštaluje sa %(num)d balíkov." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/sl/LC_MESSAGES/python.mo b/lang/python/sl/LC_MESSAGES/python.mo index d1ec2dce92dceb25f25fdd69d5de816d92fed3f1..7da04cfabfd073da722675a7de7b1bcd9c69e8b2 100644 GIT binary patch delta 24 fcmcc3e4BYfFRzKNp|OIYft8Vku7SzMS&obVUb+VF delta 24 fcmcc3e4BYfFRziVfw_XAg_Ws=wt?ZsS&obVUl#`U diff --git a/lang/python/sl/LC_MESSAGES/python.po b/lang/python/sl/LC_MESSAGES/python.po index 1bd79fdea..ba1883b9d 100644 --- a/lang/python/sl/LC_MESSAGES/python.po +++ b/lang/python/sl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Slovenian (https://www.transifex.com/calamares/teams/20061/sl/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: sl\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,16 +33,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -47,7 +51,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/sq/LC_MESSAGES/python.mo b/lang/python/sq/LC_MESSAGES/python.mo index 9c06dc87130b97e517b7b710d397c418d43220b5..c6c326db60ce9b259a0cfe5bc34127f77f9f505d 100644 GIT binary patch delta 303 zcmdnU@rR@So)F7a1|Z-BVi_P#0b*VtUIWA+@BoMff%qX1ivaOwD9ynL5tjwhCO|QL zAgv9gQ-HJqke&dfMS=7|AiWfbuLCj2oLXiE24NuG52S?{7~&Wf0~!24fo(wA5=b8d z(t1FefdyzNkkSXzAcw^RX`mSl96-zj#2^52G&>Npf;dnBR0ak>V;I;b9(^JlnwOhj znpdKbmYI{PP+VDDlA1et8DluFiLRlsf}w$xk%g{-$!0Dlbtc)v?Ya4RCHZ-o3dNZq Sb*T#3iA5!;If=y?dJF)b=qu;| delta 229 zcmXZWF%AJi6oBD3W0y%p#FA(fI>iRFLJS8`Ni<50Lr8R5t%yXSRVc+JXf+CxoX-#7Yws6^UW#u$faagKXBkbgHy zi4<{)5za6#GLR*g9*ZqD@QO`T0bzzhVl8Q6{rfD4_J^O<, 2017\n" "Language-Team: Albanian (https://www.transifex.com/calamares/teams/20061/sq/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: sq\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "Çmontoni sisteme kartelash." + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Akt python dummy." @@ -30,23 +34,23 @@ msgstr "Hap python {} dummy" msgid "Generate machine-id." msgstr "Prodho machine-id." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Po përpunohen paketat (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Instalo paketa." -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Po instalohet një paketë." msgstr[1] "Po instalohen %(num)d paketa." -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/sr/LC_MESSAGES/python.mo b/lang/python/sr/LC_MESSAGES/python.mo index df6bd22be73f01b2d0c00d31989e913f635b4242..c82584933e16d4fd886ae934d1af1e05b08d90fb 100644 GIT binary patch delta 24 fcmaFQ{GNG2FRzKNp|OIYft8Vku7SzMS)q&oVtNNF delta 24 fcmaFQ{GNG2FRziVfw_XAg_Ws=wt?ZsS)q&oV%G;U diff --git a/lang/python/sr/LC_MESSAGES/python.po b/lang/python/sr/LC_MESSAGES/python.po index 351810b6b..1f61b2eac 100644 --- a/lang/python/sr/LC_MESSAGES/python.po +++ b/lang/python/sr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Serbian (https://www.transifex.com/calamares/teams/20061/sr/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,16 +33,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -46,7 +50,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/sr@latin/LC_MESSAGES/python.mo b/lang/python/sr@latin/LC_MESSAGES/python.mo index 18114e0c77b4964b4dd3bcd162af5a96eced1ecb..408d3422fdd7b6f9f8cac5334da0632bd8e28b22 100644 GIT binary patch delta 24 fcmZo=X=Rzv%WI-*XslppU}a>XYhbc*RyHF5PsRps delta 24 fcmZo=X=Rzv%WI@-V6I?jVP$HeZD6=@RyHF5P$LF* diff --git a/lang/python/sr@latin/LC_MESSAGES/python.po b/lang/python/sr@latin/LC_MESSAGES/python.po index 01d908093..b2332e3b6 100644 --- a/lang/python/sr@latin/LC_MESSAGES/python.po +++ b/lang/python/sr@latin/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Serbian (Latin) (https://www.transifex.com/calamares/teams/20061/sr%40latin/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: sr@latin\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,16 +33,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -46,7 +50,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/sv/LC_MESSAGES/python.mo b/lang/python/sv/LC_MESSAGES/python.mo index 2e0d9f4abb10bf27aaa042fb543332db69257aa8..37dd489e6a922cb545b5ecb68b4845793b787083 100644 GIT binary patch delta 24 fcmZ3=yp(xDFRzKNp|OIYft8Vku7SzMS=@{ORGJ1& delta 24 fcmZ3=yp(xDFRziVfw_XAg_Ws=wt?ZsS=@{ORQCo{ diff --git a/lang/python/sv/LC_MESSAGES/python.po b/lang/python/sv/LC_MESSAGES/python.po index 50c8b8b74..e95bceb87 100644 --- a/lang/python/sv/LC_MESSAGES/python.po +++ b/lang/python/sv/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Swedish (https://www.transifex.com/calamares/teams/20061/sv/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/th/LC_MESSAGES/python.mo b/lang/python/th/LC_MESSAGES/python.mo index f02dc271002b606b59f6f4c0a3d36de40f71f362..cf5a099da1d1583323933b29fc4698978c48d056 100644 GIT binary patch delta 24 fcmbQuJezq!FRzKNp|OIYft8Vku7SzMS&WPTQo05& delta 24 fcmbQuJezq!FRziVfw_XAg_Ws=wt?ZsS&WPTQx^s{ diff --git a/lang/python/th/LC_MESSAGES/python.po b/lang/python/th/LC_MESSAGES/python.po index fef7b0781..9bb9937c2 100644 --- a/lang/python/th/LC_MESSAGES/python.po +++ b/lang/python/th/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Thai (https://www.transifex.com/calamares/teams/20061/th/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: th\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,22 +33,22 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/tr_TR/LC_MESSAGES/python.mo b/lang/python/tr_TR/LC_MESSAGES/python.mo index fa297fff9263b5f1bc9a597c23248f58551c3120..2fcf0b8542c5c81613696b646e62879578299acd 100644 GIT binary patch delta 310 zcmcc1v4XSyo)F7a1|Z-BVi_P#0b*VtUIWA+@BoMff%qX1ivaOwD9ynL5tjwhCO|QL zAgv9gQ-HJqke&dfMS=7|Abl8!uLCj2oY~9}bJhZBNd|^QhC@Jx08ru%kTwR=Z-F$( zAVn4i23sKQ3#35~>ju(5GZ;94m=9MUT;PO`s;zTB#=J^NDDA9xG}5)GK_%&`++pbfX_hM z7D&spFfai1GOz, 2017\n" "Language-Team: Turkish (Turkey) (https://www.transifex.com/calamares/teams/20061/tr_TR/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: tr_TR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "Dosya sistemlerini ayırın." + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "Dummy python job." @@ -30,23 +34,23 @@ msgstr "Dummy python step {}" msgid "Generate machine-id." msgstr "Makine kimliği oluştur." -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Paketler işleniyor (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "Paketleri yükle" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "%(num)d paket yükleniyor" msgstr[1] "%(num)d paket yükleniyor" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/uk/LC_MESSAGES/python.mo b/lang/python/uk/LC_MESSAGES/python.mo index d1d7a97473aa37e2eef02fd2ac80a10ce8c82ac8..55c6ab19ff13929673c98cc31b0d40d6bb9016a3 100644 GIT binary patch delta 24 fcmey!{E>M=FRzKNp|OIYft8Vku7SzMS>cQTV%i5W delta 24 fcmey!{E>M=FRziVfw_XAg_Ws=wt?ZsS>cQTV>bsl diff --git a/lang/python/uk/LC_MESSAGES/python.po b/lang/python/uk/LC_MESSAGES/python.po index 01c2c7498..7d9720afd 100644 --- a/lang/python/uk/LC_MESSAGES/python.po +++ b/lang/python/uk/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Ukrainian (https://www.transifex.com/calamares/teams/20061/uk/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,16 +33,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -46,7 +50,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/ur/LC_MESSAGES/python.mo b/lang/python/ur/LC_MESSAGES/python.mo index 032bf7e6bc115e46e30956c07f5bdc7aed69e240..366fdaae21b38b1af4c76559dcdd85b2eda4709d 100644 GIT binary patch delta 24 fcmZ3)yoh;1FRzKNp|OIYft8Vku7SzMSsaW2R0;+} delta 24 fcmZ3)yoh;1FRziVfw_XAg_Ws=wt?ZsSsaW2RA&ZD diff --git a/lang/python/ur/LC_MESSAGES/python.po b/lang/python/ur/LC_MESSAGES/python.po index 0a049b35a..2196d2e44 100644 --- a/lang/python/ur/LC_MESSAGES/python.po +++ b/lang/python/ur/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Urdu (https://www.transifex.com/calamares/teams/20061/ur/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: ur\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/uz/LC_MESSAGES/python.mo b/lang/python/uz/LC_MESSAGES/python.mo index d25e583b95e3e89ab78444eef1bfad2f64aa7ae7..5e7ab576388f7d6195397f23eb49ea545743f637 100644 GIT binary patch delta 24 fcmbQkJcoHgFRzKNp|OIYft8Vku7SzMSxk%oQtAdW delta 24 fcmbQkJcoHgFRziVfw_XAg_Ws=wt?ZsSxk%oQ%43l diff --git a/lang/python/uz/LC_MESSAGES/python.po b/lang/python/uz/LC_MESSAGES/python.po index 870996ea2..cb8a288f3 100644 --- a/lang/python/uz/LC_MESSAGES/python.po +++ b/lang/python/uz/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Uzbek (https://www.transifex.com/calamares/teams/20061/uz/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,10 @@ msgstr "" "Language: uz\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "" @@ -29,22 +33,22 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/zh_CN/LC_MESSAGES/python.mo b/lang/python/zh_CN/LC_MESSAGES/python.mo index 21c7cb97d7da1416825fc2d02a00e4c872119209..2a701a7f998920aee52391ef55123ea20ea9cf93 100644 GIT binary patch delta 26 hcmeC==;YY&myy>**U(tO(7?*bLf61#GZ)i;MgU}e2N(bV delta 26 hcmeC==;YY&myy><*T7uC(89{pLfgP_GZ)i;MgU~t2Oj_c diff --git a/lang/python/zh_CN/LC_MESSAGES/python.po b/lang/python/zh_CN/LC_MESSAGES/python.po index 9e0c3f217..219b378ef 100644 --- a/lang/python/zh_CN/LC_MESSAGES/python.po +++ b/lang/python/zh_CN/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: plantman , 2017\n" "Language-Team: Chinese (China) (https://www.transifex.com/calamares/teams/20061/zh_CN/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "占位 Python 任务。" @@ -30,22 +34,22 @@ msgstr "占位 Python 步骤 {}" msgid "Generate machine-id." msgstr "生成 machine-id。" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "软件包处理中(%(count)d/%(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "安装软件包。" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "安装%(num)d软件包。" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/zh_TW/LC_MESSAGES/python.mo b/lang/python/zh_TW/LC_MESSAGES/python.mo index 327aed015edb7a29f344dd301b69b01f9d929704..ddf2b5b1f12ef2121cb16ec6c6e2f16351a6fe57 100644 GIT binary patch delta 302 zcmbQk@r=%1FpRJnm SY+=Xq&AXp(-T1hni2(pk4K#%S delta 229 zcmXZWF$%&k6oBE^*lIu=3`!RVol7AV#oz&)96Ndh58x(v0}*lQ1?=i26x01|i{WRfT7>ynlXrh3hGupVIgL~Bv_4iRAGNLg}=$u-*q9u-q+4Gu6 zmoBOQ&W0M1nH)F_xF~5#uhssgyp;wbuu2^v{LlJP|A=fKuiY)kTf@{&`k9-KU1GD7 HQ%3y&npzlI diff --git a/lang/python/zh_TW/LC_MESSAGES/python.po b/lang/python/zh_TW/LC_MESSAGES/python.po index c8a9fe4a7..1b6321d02 100644 --- a/lang/python/zh_TW/LC_MESSAGES/python.po +++ b/lang/python/zh_TW/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-07 18:58+0100\n" +"POT-Creation-Date: 2018-04-13 10:28-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Jeff Huang , 2017\n" "Language-Team: Chinese (Taiwan) (https://www.transifex.com/calamares/teams/20061/zh_TW/)\n" @@ -18,6 +18,10 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "解除掛載檔案系統。" + #: src/modules/dummypython/main.py:44 msgid "Dummy python job." msgstr "假的 python 工作。" @@ -30,22 +34,22 @@ msgstr "假的 python step {}" msgid "Generate machine-id." msgstr "生成 machine-id。" -#: src/modules/packages/main.py:60 +#: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "正在處理軟體包 (%(count)d / %(total)d)" -#: src/modules/packages/main.py:62 src/modules/packages/main.py:72 +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." msgstr "安裝軟體包。" -#: src/modules/packages/main.py:65 +#: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "正在安裝 %(num)d 軟體包。" -#: src/modules/packages/main.py:68 +#: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." From 3beb4bc87fb995ca0ada36e583f5b4bcc4e3ba43 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 7 May 2018 05:08:42 -0400 Subject: [PATCH 122/385] Desktop: cleanup - remove blank lines introduced by Transifex - restore 8ee4cc19 which was dropped when re-importing translations --- calamares.desktop | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/calamares.desktop b/calamares.desktop index 7deb61bb8..e5986cbe5 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -1,7 +1,7 @@ [Desktop Entry] Type=Application Version=1.0 -Name=Calamares +Name=Install System GenericName=System Installer Keywords=calamares;system;installer TryExec=calamares @@ -11,20 +11,6 @@ Icon=calamares Terminal=false StartupNotify=true Categories=Qt;System; - - - - - - - - - - - - - - Name[bg]=Calamares Icon[bg]=calamares GenericName[bg]=Системен Инсталатор From a38a2a54f72affbb6f8ccec30933f53e5a50005a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 7 May 2018 05:18:35 -0400 Subject: [PATCH 123/385] [locale] Check all XML TimeZone elements if needed - reduce warnings about loop-executed-only-once - if there is more than one TimeZone element, use the virst valid one - warn if nothing is found --- src/modules/locale/GeoIPXML.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/modules/locale/GeoIPXML.cpp b/src/modules/locale/GeoIPXML.cpp index a9aa43f76..0fb5359f3 100644 --- a/src/modules/locale/GeoIPXML.cpp +++ b/src/modules/locale/GeoIPXML.cpp @@ -42,8 +42,14 @@ GeoIPXML::processReply( const QByteArray& data ) for ( int it = 0; it < tzElements.length(); ++it ) { auto e = tzElements.at(it).toElement(); - return splitTZString( e.text() ); + auto tz = splitTZString( e.text() ); + if ( !tz.first.isEmpty() ) + return tz; } + + // None of them valid + cWarning() << "GeopIP XML had no recognizable timezone"; + return qMakePair( QString(), QString() ); } else { @@ -51,5 +57,4 @@ GeoIPXML::processReply( const QByteArray& data ) } return qMakePair( QString(), QString() ); - } From ff43752f47458f389d51a9072d4ed16af4ee4c08 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 7 May 2018 05:58:04 -0400 Subject: [PATCH 124/385] i18n: pl_PL has merged into pl --- CMakeLists.txt | 3 +- lang/calamares_pl_PL.ts | 2584 ----------------- lang/python/pl_PL/LC_MESSAGES/python.mo | Bin 581 -> 0 bytes lang/python/pl_PL/LC_MESSAGES/python.po | 61 - .../lang/pl_PL/LC_MESSAGES/dummypythonqt.mo | Bin 581 -> 0 bytes .../lang/pl_PL/LC_MESSAGES/dummypythonqt.po | 42 - 6 files changed, 1 insertion(+), 2689 deletions(-) delete mode 100644 lang/calamares_pl_PL.ts delete mode 100644 lang/python/pl_PL/LC_MESSAGES/python.mo delete mode 100644 lang/python/pl_PL/LC_MESSAGES/python.po delete mode 100644 src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.po diff --git a/CMakeLists.txt b/CMakeLists.txt index 3071f626a..22058858a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -202,10 +202,9 @@ endif() # by the translation framework. Languages with alternate scripts # (sr@latin in particular) may need special handling in CalamaresUtils.cpp. # -# TODO: pl and pl_PL overlap set( _tx_complete ca zh_CN zh_TW hr cs_CZ da fr lt pt_BR pt_PT es tr_TR) set( _tx_good sq ja pl sk ro it_IT hu he ru id de nl ) -set( _tx_ok bg uk ast is ar sv el es_MX gl en_GB es_ES th fi_FI hi pl_PL +set( _tx_ok bg uk ast is ar sv el es_MX gl en_GB es_ES th fi_FI hi eu nb sr sl sr@latin mr es_PR kn kk et ) set( _tx_bad fr_CH gu lo fa ur uz ) diff --git a/lang/calamares_pl_PL.ts b/lang/calamares_pl_PL.ts deleted file mode 100644 index a243935d9..000000000 --- a/lang/calamares_pl_PL.ts +++ /dev/null @@ -1,2584 +0,0 @@ - - - BootInfoWidget - - - The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - - - - - This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - - - - - This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - - - - - BootLoaderModel - - - Master Boot Record of %1 - Master Boot Record %1 - - - - Boot Partition - Partycja rozruchowa - - - - System Partition - Partycja systemowa - - - - Do not install a boot loader - - - - - %1 (%2) - - - - - Calamares::DebugWindow - - - Form - Formularz - - - - GlobalStorage - - - - - JobQueue - - - - - Modules - Moduły - - - - Type: - Rodzaj: - - - - - none - brak - - - - Interface: - - - - - Tools - - - - - Debug information - Informacje debugowania - - - - Calamares::ExecutionViewStep - - - Install - Zainstaluj - - - - Calamares::JobThread - - - Done - Ukończono - - - - Calamares::ProcessJob - - - Run command %1 %2 - Uruchom polecenie %1 %2 - - - - Running command %1 %2 - - - - - Calamares::PythonJob - - - Running %1 operation. - - - - - Bad working directory path - Niepoprawna ścieżka folderu roboczego - - - - Working directory %1 for python job %2 is not readable. - Folder roboczy %1 zadania pythona %2 jest nieosiągalny. - - - - Bad main script file - Niepoprawny główny plik skryptu - - - - Main script file %1 for python job %2 is not readable. - Główny plik skryptu %1 zadania pythona %2 jest nieczytelny. - - - - Boost.Python error in job "%1". - Błąd Boost.Python w zadaniu "%1". - - - - Calamares::ViewManager - - - &Back - &Wstecz - - - - - &Next - &Dalej - - - - - &Cancel - &Anuluj - - - - - Cancel installation without changing the system. - - - - - &Install - - - - - Cancel installation? - Przerwać instalację? - - - - Do you really want to cancel the current install process? -The installer will quit and all changes will be lost. - Czy naprawdę chcesz przerwać instalację? -Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - - - - &Yes - - - - - &No - - - - - &Close - - - - - Continue with setup? - Kontynuować instalację? - - - - The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - - - - - &Install now - &Zainstaluj - - - - Go &back - &Wstecz - - - - &Done - - - - - The installation is complete. Close the installer. - - - - - Error - Błąd - - - - Installation Failed - Wystąpił błąd instalacji - - - - CalamaresPython::Helper - - - Unknown exception type - Nieznany wyjątek - - - - unparseable Python error - Nieparsowalny błąd Pythona - - - - unparseable Python traceback - nieparsowalny traceback Pythona - - - - Unfetchable Python error. - Niepobieralny błąd Pythona. - - - - CalamaresWindow - - - %1 Installer - Instalator %1 - - - - Show debug information - Pokaż informację debugowania - - - - CheckerWidget - - - This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - - - - - This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - - - - - This program will ask you some questions and set up %2 on your computer. - - - - - For best results, please ensure that this computer: - Dla osiągnięcia najlepszych rezultatów upewnij się, że ten komputer: - - - - System requirements - Wymagania systemowe - - - - ChoicePage - - - Form - Formularz - - - - After: - Po: - - - - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - - - - - Boot loader location: - - - - - %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - - - - - Select storage de&vice: - - - - - - - - Current: - - - - - Reuse %1 as home partition for %2. - - - - - <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - - - - - <strong>Select a partition to install on</strong> - - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - - - - - The EFI system partition at %1 will be used for starting %2. - - - - - EFI system partition: - Partycja systemowa EFI: - - - - This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - - <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - - This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - - <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - - - - - <strong>Replace a partition</strong><br/>Replaces a partition with %1. - - - - - This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - ClearMountsJob - - - Clear mounts for partitioning operations on %1 - - - - - Clearing mounts for partitioning operations on %1. - - - - - Cleared all mounts for %1 - - - - - ClearTempMountsJob - - - Clear all temporary mounts. - - - - - Clearing all temporary mounts. - - - - - Cannot get list of temporary mounts. - - - - - Cleared all temporary mounts. - - - - - CommandList - - - Could not run command. - - - - - No rootMountPoint is defined, so command cannot be run in the target environment. - - - - - ContextualProcessJob - - - Contextual Processes Job - - - - - CreatePartitionDialog - - - Create a Partition - Utwórz partycję - - - - MiB - - - - - Partition &Type: - Rodzaj par&tycji: - - - - &Primary - &Podstawowa - - - - E&xtended - Ro&zszerzona - - - - Fi&le System: - - - - - LVM LV name - - - - - Flags: - Flagi: - - - - &Mount Point: - Punkt &montowania: - - - - Si&ze: - Ro&zmiar: - - - - En&crypt - - - - - Logical - Logiczna - - - - Primary - Podstawowa - - - - GPT - GPT - - - - Mountpoint already in use. Please select another one. - - - - - CreatePartitionJob - - - Create new %2MB partition on %4 (%3) with file system %1. - - - - - Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - - - - - Creating new %1 partition on %2. - - - - - The installer failed to create partition on disk '%1'. - Instalator nie mógł utworzyć partycji na dysku '%1'. - - - - CreatePartitionTableDialog - - - Create Partition Table - Utwórz tablicę partycji - - - - Creating a new partition table will delete all existing data on the disk. - Utworzenie nowej tablicy partycji, usunie wszystkie istniejące na dysku dane. - - - - What kind of partition table do you want to create? - Jaki rodzaj tablicy partycji chcesz utworzyć? - - - - Master Boot Record (MBR) - Master Boot Record (MBR) - - - - GUID Partition Table (GPT) - Tablica partycji GUID (GPT) - - - - CreatePartitionTableJob - - - Create new %1 partition table on %2. - - - - - Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - - - - - Creating new %1 partition table on %2. - - - - - The installer failed to create a partition table on %1. - Instalator nie mógł utworzyć tablicy partycji na %1. - - - - CreateUserJob - - - Create user %1 - Utwórz użytkownika %1 - - - - Create user <strong>%1</strong>. - - - - - Creating user %1. - - - - - Sudoers dir is not writable. - Nie można zapisać do folderu sudoers. - - - - Cannot create sudoers file for writing. - Nie można otworzyć pliku sudoers do zapisu. - - - - Cannot chmod sudoers file. - Nie można wykonać chmod na pliku sudoers. - - - - Cannot open groups file for reading. - Nie można otworzyć pliku groups do oczytu. - - - - Cannot create user %1. - Nie można utworzyć użytkownika %1. - - - - useradd terminated with error code %1. - useradd przerwany z kodem błędu %1. - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - usermod przerwany z kodem błędu %1. - - - - Cannot set home directory ownership for user %1. - Nie można ustawić właściciela folderu domowego dla użytkownika %1. - - - - chown terminated with error code %1. - chown przerwany z kodem błędu %1. - - - - DeletePartitionJob - - - Delete partition %1. - - - - - Delete partition <strong>%1</strong>. - - - - - Deleting partition %1. - - - - - The installer failed to delete partition %1. - Instalator nie mógł usunąć partycji %1. - - - - DeviceInfoWidget - - - The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - - - - - This device has a <strong>%1</strong> partition table. - - - - - This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - - - - - This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - - - - - <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - - - - - <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - - - - - DeviceModel - - - %1 - %2 (%3) - %1 - %2 (%3) - - - - DracutLuksCfgJob - - - Write LUKS configuration for Dracut to %1 - - - - - Skip writing LUKS configuration for Dracut: "/" partition is not encrypted - - - - - Failed to open %1 - - - - - DummyCppJob - - - Dummy C++ Job - - - - - EditExistingPartitionDialog - - - Edit Existing Partition - Edycja istniejącej partycji - - - - Content: - Zawartość: - - - - &Keep - - - - - Format - Sformatuj - - - - Warning: Formatting the partition will erase all existing data. - Ostrzeżenie: Sformatowanie partycji wymaże wszystkie istniejące na niej dane. - - - - &Mount Point: - Punkt &montowania: - - - - Si&ze: - Ro&zmiar: - - - - MiB - - - - - Fi&le System: - - - - - Flags: - Flagi: - - - - Mountpoint already in use. Please select another one. - - - - - EncryptWidget - - - Form - Formularz - - - - En&crypt system - - - - - Passphrase - - - - - Confirm passphrase - - - - - Please enter the same passphrase in both boxes. - - - - - FillGlobalStorageJob - - - Set partition information - Ustaw informacje partycji - - - - Install %1 on <strong>new</strong> %2 system partition. - - - - - Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - - - - - Install %2 on %3 system partition <strong>%1</strong>. - - - - - Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - - - - - Install boot loader on <strong>%1</strong>. - - - - - Setting up mount points. - - - - - FinishedPage - - - Form - Formularz - - - - <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - - - - - &Restart now - - - - - <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - - - - - <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. - - - - - FinishedViewStep - - - Finish - Koniec - - - - Installation Complete - - - - - The installation of %1 is complete. - - - - - FormatPartitionJob - - - Format partition %1 (file system: %2, size: %3 MB) on %4. - Formatuj partycję %1 (system plików: %2, rozmiar: %3 MB) na %4. - - - - Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - - - - - Formatting partition %1 with file system %2. - - - - - The installer failed to format partition %1 on disk '%2'. - Instalator nie mógł sformatować partycji %1 na dysku '%2'. - - - - InteractiveTerminalPage - - - Konsole not installed - - - - - Please install KDE Konsole and try again! - - - - - Executing script: &nbsp;<code>%1</code> - - - - - InteractiveTerminalViewStep - - - Script - - - - - KeyboardPage - - - Set keyboard model to %1.<br/> - Model klawiatury %1.<br/> - - - - Set keyboard layout to %1/%2. - Model klawiatury %1/%2. - - - - KeyboardViewStep - - - Keyboard - Klawiatura - - - - LCLocaleDialog - - - System locale setting - - - - - The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. - - - - - &Cancel - &Anuluj - - - - &OK - - - - - LicensePage - - - Form - Formularz - - - - I accept the terms and conditions above. - - - - - <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - - - - - Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - - - - - <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - - - - - Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - - - - - <strong>%1 driver</strong><br/>by %2 - %1 is an untranslatable product name, example: Creative Audigy driver - - - - - <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> - %1 is usually a vendor name, example: Nvidia graphics driver - - - - - <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - - - - - <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - - - - - <strong>%1 package</strong><br/><font color="Grey">by %2</font> - - - - - <strong>%1</strong><br/><font color="Grey">by %2</font> - - - - - <a href="%1">view license agreement</a> - - - - - LicenseViewStep - - - License - - - - - LocalePage - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Region: - Region: - - - - Zone: - Strefa: - - - - - &Change... - - - - - Set timezone to %1/%2.<br/> - Strefa czasowa %1/%2.<br/> - - - - %1 (%2) - Language (Country) - - - - - LocaleViewStep - - - Loading location data... - Wczytywanie danych położenia - - - - Location - Położenie - - - - NetInstallPage - - - Name - Nazwa - - - - Description - - - - - Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - - - - - Network Installation. (Disabled: Received invalid groups data) - - - - - NetInstallViewStep - - - Package selection - - - - - PWQ - - - Password is too short - - - - - Password is too long - - - - - Password is too weak - - - - - Memory allocation error when setting '%1' - - - - - Memory allocation error - - - - - The password is the same as the old one - - - - - The password is a palindrome - - - - - The password differs with case changes only - - - - - The password is too similar to the old one - - - - - The password contains the user name in some form - - - - - The password contains words from the real name of the user in some form - - - - - The password contains forbidden words in some form - - - - - The password contains less than %1 digits - - - - - The password contains too few digits - - - - - The password contains less than %1 uppercase letters - - - - - The password contains too few uppercase letters - - - - - The password contains less than %1 lowercase letters - - - - - The password contains too few lowercase letters - - - - - The password contains less than %1 non-alphanumeric characters - - - - - The password contains too few non-alphanumeric characters - - - - - The password is shorter than %1 characters - - - - - The password is too short - - - - - The password is just rotated old one - - - - - The password contains less than %1 character classes - - - - - The password does not contain enough character classes - - - - - The password contains more than %1 same characters consecutively - - - - - The password contains too many same characters consecutively - - - - - The password contains more than %1 characters of the same class consecutively - - - - - The password contains too many characters of the same class consecutively - - - - - The password contains monotonic sequence longer than %1 characters - - - - - The password contains too long of a monotonic character sequence - - - - - No password supplied - - - - - Cannot obtain random numbers from the RNG device - - - - - Password generation failed - required entropy too low for settings - - - - - The password fails the dictionary check - %1 - - - - - The password fails the dictionary check - - - - - Unknown setting - %1 - - - - - Unknown setting - - - - - Bad integer value of setting - %1 - - - - - Bad integer value - - - - - Setting %1 is not of integer type - - - - - Setting is not of integer type - - - - - Setting %1 is not of string type - - - - - Setting is not of string type - - - - - Opening the configuration file failed - - - - - The configuration file is malformed - - - - - Fatal failure - - - - - Unknown error - - - - - Page_Keyboard - - - Form - Formularz - - - - Keyboard Model: - Model klawiatury: - - - - Type here to test your keyboard - Napisz coś tutaj, aby sprawdzić swoją klawiaturę - - - - Page_UserSetup - - - Form - Formularz - - - - What is your name? - Jak się nazywasz? - - - - What name do you want to use to log in? - Jakiego imienia chcesz używać do logowania się? - - - - - - font-weight: normal - font-weight: normal - - - - <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - <small>Jeśli więcej niż jedna osoba będzie używać tego komputera, możesz utworzyć więcej kont już po instalacji.</small> - - - - Choose a password to keep your account safe. - Wybierz hasło, aby chronić swoje konto. - - - - <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> - <small>Wpisz swoje hasło dwa razy, by uniknąć literówek. Dobre hasło powinno zawierać miks liter, cyfr, znaków specjalnych, mieć przynajmniej 8 znaków i być regularnie zmieniane.</small> - - - - What is the name of this computer? - Jaka jest nazwa tego komputera? - - - - <small>This name will be used if you make the computer visible to others on a network.</small> - <small>Ta nazwa będzie widoczna, jeśli udostępnisz swój komputer w sieci.</small> - - - - Log in automatically without asking for the password. - - - - - Use the same password for the administrator account. - - - - - Choose a password for the administrator account. - Wybierz hasło do konta administratora. - - - - <small>Enter the same password twice, so that it can be checked for typing errors.</small> - <small>Wpisz to samo hasło dwa razy, by uniknąć literówek.</small> - - - - PartitionLabelsView - - - Root - - - - - Home - - - - - Boot - - - - - EFI system - - - - - Swap - - - - - New partition for %1 - - - - - New partition - Nowa partycja - - - - %1 %2 - - - - - PartitionModel - - - - Free Space - Wolna powierzchnia - - - - - New partition - Nowa partycja - - - - Name - Nazwa - - - - File System - System plików - - - - Mount Point - Punkt montowania - - - - Size - Rozmiar - - - - PartitionPage - - - Form - Formularz - - - - Storage de&vice: - - - - - &Revert All Changes - P&rzywróć do pierwotnego stanu - - - - New Partition &Table - Nowa &tablica partycji - - - - &Create - &Utwórz - - - - &Edit - &Edycja - - - - &Delete - U&suń - - - - Install boot &loader on: - - - - - Are you sure you want to create a new partition table on %1? - Na pewno utworzyć nową tablicę partycji na %1? - - - - PartitionViewStep - - - Gathering system information... - Zbieranie informacji o systemie... - - - - Partitions - Partycje - - - - Install %1 <strong>alongside</strong> another operating system. - - - - - <strong>Erase</strong> disk and install %1. - - - - - <strong>Replace</strong> a partition with %1. - - - - - <strong>Manual</strong> partitioning. - - - - - Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - - - - - <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - - - - - <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - - - - - <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - - - - - Disk <strong>%1</strong> (%2) - - - - - Current: - - - - - After: - Po: - - - - No EFI system partition configured - - - - - An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - - - - - EFI system partition flag not set - - - - - An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - - - - - Boot partition not encrypted - - - - - A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - - - - - PlasmaLnfJob - - - Plasma Look-and-Feel Job - - - - - - Could not select KDE Plasma Look-and-Feel package - - - - - PlasmaLnfPage - - - Form - Formularz - - - - Placeholder - - - - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - - - - - PlasmaLnfViewStep - - - Look-and-Feel - - - - - ProcessResult - - - -There was no output from the command. - - - - - -Output: - - - - - - External command crashed. - - - - - Command <i>%1</i> crashed. - - - - - External command failed to start. - - - - - Command <i>%1</i> failed to start. - - - - - Internal error when starting command. - - - - - Bad parameters for process job call. - Błędne parametry wywołania zadania. - - - - External command failed to finish. - - - - - Command <i>%1</i> failed to finish in %2 seconds. - - - - - External command finished with errors. - - - - - Command <i>%1</i> finished with exit code %2. - - - - - QObject - - - Default Keyboard Model - Domyślny model klawiatury - - - - - Default - Domyślnie - - - - unknown - - - - - extended - - - - - unformatted - - - - - swap - - - - - Unpartitioned space or unknown partition table - - - - - ReplaceWidget - - - Form - Formularz - - - - Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - - - - - The selected item does not appear to be a valid partition. - - - - - %1 cannot be installed on empty space. Please select an existing partition. - - - - - %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - - - - - %1 cannot be installed on this partition. - - - - - Data partition (%1) - - - - - Unknown system partition (%1) - - - - - %1 system partition (%2) - - - - - <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - - - - - <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - - - - - - - <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - - - - - The EFI system partition at %1 will be used for starting %2. - - - - - EFI system partition: - Partycja systemowa EFI: - - - - RequirementsChecker - - - Gathering system information... - Zbieranie informacji o systemie... - - - - has at least %1 GB available drive space - ma przynajmniej %1 GB dostępnego miejsca na dysku - - - - There is not enough drive space. At least %1 GB is required. - - - - - has at least %1 GB working memory - ma przynajmniej %1 GB pamięci roboczej - - - - The system does not have enough working memory. At least %1 GB is required. - - - - - is plugged in to a power source - jest podłączony do źródła zasilania - - - - The system is not plugged in to a power source. - - - - - is connected to the Internet - jest podłączony do Internetu - - - - The system is not connected to the Internet. - - - - - The installer is not running with administrator rights. - - - - - The screen is too small to display the installer. - - - - - ResizePartitionJob - - - Resize partition %1. - Zmień rozmiar partycji %1. - - - - Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. - - - - - Resizing %2MB partition %1 to %3MB. - - - - - The installer failed to resize partition %1 on disk '%2'. - Instalator nie mógł zmienić rozmiaru partycji %1 na dysku '%2'. - - - - ScanningDialog - - - Scanning storage devices... - - - - - Partitioning - - - - - SetHostNameJob - - - Set hostname %1 - Wybierz nazwę hosta %1 - - - - Set hostname <strong>%1</strong>. - - - - - Setting hostname %1. - - - - - - Internal Error - Błąd wewnętrzny - - - - - Cannot write hostname to target system - Nie można zapisać nazwy hosta w systemie docelowym - - - - SetKeyboardLayoutJob - - - Set keyboard model to %1, layout to %2-%3 - - - - - Failed to write keyboard configuration for the virtual console. - - - - - - - Failed to write to %1 - - - - - Failed to write keyboard configuration for X11. - - - - - Failed to write keyboard configuration to existing /etc/default directory. - - - - - SetPartFlagsJob - - - Set flags on partition %1. - - - - - Set flags on %1MB %2 partition. - - - - - Set flags on new partition. - - - - - Clear flags on partition <strong>%1</strong>. - - - - - Clear flags on %1MB <strong>%2</strong> partition. - - - - - Clear flags on new partition. - - - - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. - - - - - Flag new partition as <strong>%1</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - - - - - Clearing flags on %1MB <strong>%2</strong> partition. - - - - - Clearing flags on new partition. - - - - - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - - - - - Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. - - - - - Setting flags <strong>%1</strong> on new partition. - - - - - The installer failed to set flags on partition %1. - - - - - SetPasswordJob - - - Set password for user %1 - Ustaw hasło użytkownika %1 - - - - Setting password for user %1. - - - - - Bad destination system path. - Błędna ścieżka docelowa. - - - - rootMountPoint is %1 - Punkt montowania / to %1 - - - - Cannot disable root account. - - - - - passwd terminated with error code %1. - - - - - Cannot set password for user %1. - Nie można ustawić hasła dla użytkownika %1. - - - - usermod terminated with error code %1. - usermod przerwany z kodem błędu %1. - - - - SetTimezoneJob - - - Set timezone to %1/%2 - Strefa czasowa %1/%2 - - - - Cannot access selected timezone path. - Brak dostępu do wybranej ścieżki strefy czasowej. - - - - Bad path: %1 - Niepoprawna ścieżka: %1 - - - - Cannot set timezone. - Nie można ustawić strefy czasowej. - - - - Link creation failed, target: %1; link name: %2 - Błąd tworzenia dowiązania, cel: %1; nazwa dowiązania: %2 - - - - Cannot set timezone, - - - - - Cannot open /etc/timezone for writing - - - - - ShellProcessJob - - - Shell Processes Job - - - - - SlideCounter - - - %L1 / %L2 - slide counter, %1 of %2 (numeric) - - - - - SummaryPage - - - This is an overview of what will happen once you start the install procedure. - - - - - SummaryViewStep - - - Summary - Podsumowanie - - - - TrackingInstallJob - - - Installation feedback - - - - - Sending installation feedback. - - - - - Internal error in install-tracking. - - - - - HTTP request timed out. - - - - - TrackingMachineNeonJob - - - Machine feedback - - - - - Configuring machine feedback. - - - - - - Error in machine feedback configuration. - - - - - Could not configure machine feedback correctly, script error %1. - - - - - Could not configure machine feedback correctly, Calamares error %1. - - - - - TrackingPage - - - Form - Formularz - - - - Placeholder - - - - - <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - - - - - - - TextLabel - - - - - - - ... - - - - - <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> - - - - - Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. - - - - - By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - - - - - By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - - - - - By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. - - - - - TrackingViewStep - - - Feedback - - - - - UsersPage - - - Your username is too long. - - - - - Your username contains invalid characters. Only lowercase letters and numbers are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - - Your passwords do not match! - Twoje hasła są niezgodne! - - - - UsersViewStep - - - Users - Użytkownicy - - - - WelcomePage - - - Form - Formularz - - - - &Language: - - - - - &Release notes - - - - - &Known issues - - - - - &Support - - - - - &About - - - - - <h1>Welcome to the %1 installer.</h1> - - - - - <h1>Welcome to the Calamares installer for %1.</h1> - - - - - About %1 installer - - - - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - - - - - %1 support - - - - - WelcomeViewStep - - - Welcome - Witamy - - - \ No newline at end of file diff --git a/lang/python/pl_PL/LC_MESSAGES/python.mo b/lang/python/pl_PL/LC_MESSAGES/python.mo deleted file mode 100644 index 57922eec8c2fcbdff1c49bf8721fe3cd569f1608..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 581 zcmYLE&2G~`5Dq^lbK}fmkf4eM8}GUSrJFicNZmG~uB~7y!38bO)-iI{*6xNBsjtE7 z@hr@yX+6@X9nX9}<9{!o|LtKtLA*k|K|DjeN4OdxUOesfj_`Gy$I5i`OBR;Qm*iS% zQ#Fc1Hl2N*p2u(Avw}Xp zLM?shudHni4}$G>JFr?PQ{BkhLD8&(Leyd{v^0T5sR=?#KeC{$e`J?|?H&T;W70t3zC5O?^%06DqVVC7) z^+t=DoHcrFIH-2_X`Mf&_D1?IpaP4t4^j*K3(_ZjNc_x{t%Wd)p9g5B;&%`w!P, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Language-Team: Polish (Poland) (https://www.transifex.com/calamares/teams/20061/pl_PL/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl_PL\n" -"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" - -#: src/modules/umount/main.py:40 -msgid "Unmount file systems." -msgstr "" - -#: src/modules/dummypython/main.py:44 -msgid "Dummy python job." -msgstr "" - -#: src/modules/dummypython/main.py:97 -msgid "Dummy python step {}" -msgstr "" - -#: src/modules/machineid/main.py:35 -msgid "Generate machine-id." -msgstr "" - -#: src/modules/packages/main.py:61 -#, python-format -msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" - -#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 -msgid "Install packages." -msgstr "" - -#: src/modules/packages/main.py:66 -#, python-format -msgid "Installing one package." -msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -#: src/modules/packages/main.py:69 -#, python-format -msgid "Removing one package." -msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" diff --git a/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index fc462020534264da6ae6ada2ff3fe4d02936e39c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 581 zcmYLE&2G~`5Dq^lbK}fmkf4eM8}FJ>l1-f|q%K6%wG~VyxS++^I z6>8-}f9+gjc@XS&yMZ%8+3H%}4hp>q3Q>!VFwzDNr8WpDJ!U~uf6p!g-%A!r-2ELJ zP;ai4lgg3&SA$nOdFzlYDm8&(EsT{e`jVfMQO9f3uB9QdD)g#SC5O?E%H3bgVV~t? z_11`*oNKeO98|Oaw9#;a`*sucRTMEe1qvMc>LsJoD1@UUXxo!$=(qiTPES|}cX#^* uoif~<0z;8{j{5(kX+%3Q^IQJG^ldjEcXLcb*FzlU{j&|x_KiRBdVc}s5t;J< diff --git a/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.po deleted file mode 100644 index 2b06f9e75..000000000 --- a/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-04 08:16-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Language-Team: Polish (Poland) (https://www.transifex.com/calamares/teams/20061/pl_PL/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl_PL\n" -"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" - -#: src/modules/dummypythonqt/main.py:84 -msgid "Click me!" -msgstr "" - -#: src/modules/dummypythonqt/main.py:94 -msgid "A new QLabel." -msgstr "" - -#: src/modules/dummypythonqt/main.py:97 -msgid "Dummy PythonQt ViewStep" -msgstr "" - -#: src/modules/dummypythonqt/main.py:183 -msgid "The Dummy PythonQt Job" -msgstr "" - -#: src/modules/dummypythonqt/main.py:186 -msgid "This is the Dummy PythonQt Job. The dummy job says: {}" -msgstr "" - -#: src/modules/dummypythonqt/main.py:190 -msgid "A status message for Dummy PythonQt Job." -msgstr "" From 96887e754cfe953d34536108444ac4145cf18789 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 7 May 2018 08:41:01 -0400 Subject: [PATCH 125/385] i18n: drop es_ES, add tooling --- CMakeLists.txt | 4 +- lang/CMakeLists.txt | 24 + lang/calamares_es_ES.ts | 2584 ----------------- lang/python/es_ES/LC_MESSAGES/python.mo | Bin 435 -> 0 bytes lang/python/es_ES/LC_MESSAGES/python.po | 57 - lang/txload.cpp | 189 ++ .../lang/es_ES/LC_MESSAGES/dummypythonqt.mo | Bin 435 -> 0 bytes .../lang/es_ES/LC_MESSAGES/dummypythonqt.po | 42 - 8 files changed, 216 insertions(+), 2684 deletions(-) create mode 100644 lang/CMakeLists.txt delete mode 100644 lang/calamares_es_ES.ts delete mode 100644 lang/python/es_ES/LC_MESSAGES/python.mo delete mode 100644 lang/python/es_ES/LC_MESSAGES/python.po create mode 100644 lang/txload.cpp delete mode 100644 src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.po diff --git a/CMakeLists.txt b/CMakeLists.txt index 22058858a..96143883c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -204,10 +204,12 @@ endif() # set( _tx_complete ca zh_CN zh_TW hr cs_CZ da fr lt pt_BR pt_PT es tr_TR) set( _tx_good sq ja pl sk ro it_IT hu he ru id de nl ) -set( _tx_ok bg uk ast is ar sv el es_MX gl en_GB es_ES th fi_FI hi +set( _tx_ok bg uk ast is ar sv el es_MX gl en_GB th fi_FI hi eu nb sr sl sr@latin mr es_PR kn kk et ) set( _tx_bad fr_CH gu lo fa ur uz ) +add_subdirectory( lang ) # i18n tools + ### ### Calamares application info ### diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt new file mode 100644 index 000000000..65c0c4ca2 --- /dev/null +++ b/lang/CMakeLists.txt @@ -0,0 +1,24 @@ +# === This file is part of Calamares - === +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . +# +# SPDX-License-Identifier: GPL-3.0+ +# License-Filename: LICENSE +# +### + +find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Xml ) + +add_executable(txload txload.cpp) +target_link_libraries(txload Qt5::Xml) diff --git a/lang/calamares_es_ES.ts b/lang/calamares_es_ES.ts deleted file mode 100644 index 743f38d7e..000000000 --- a/lang/calamares_es_ES.ts +++ /dev/null @@ -1,2584 +0,0 @@ - - - BootInfoWidget - - - The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - El ambiente de arranque de este sistema. Sistemas x86 más viejos solo pueden soportar BIOS. Sistemas modernos usualmente usan EFI, pero también puede aparecer como BIOS si su sistema está en modo de compatibilidad. - - - - This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - - - - - This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - - - - - BootLoaderModel - - - Master Boot Record of %1 - Master Boot Record de %1 - - - - Boot Partition - Partición de arranque - - - - System Partition - Partición de sistema - - - - Do not install a boot loader - - - - - %1 (%2) - - - - - Calamares::DebugWindow - - - Form - Formulario - - - - GlobalStorage - Almacenamiento global - - - - JobQueue - Cola de trabajos - - - - Modules - Módulos - - - - Type: - Tipo: - - - - - none - - - - - Interface: - - - - - Tools - - - - - Debug information - Información de depuración - - - - Calamares::ExecutionViewStep - - - Install - Instalar - - - - Calamares::JobThread - - - Done - Hecho - - - - Calamares::ProcessJob - - - Run command %1 %2 - Ejecutar comando %1 %2 - - - - Running command %1 %2 - - - - - Calamares::PythonJob - - - Running %1 operation. - - - - - Bad working directory path - Ruta de trabajo errónea - - - - Working directory %1 for python job %2 is not readable. - No se puede leer la ruta de trabajo %1 de la tarea %2 de python. - - - - Bad main script file - Script principal erróneo - - - - Main script file %1 for python job %2 is not readable. - No se puede leer el script principal %1 de la tarea %2 de python. - - - - Boost.Python error in job "%1". - Error de Boost.Python en la tarea "%1". - - - - Calamares::ViewManager - - - &Back - &Atrás - - - - - &Next - &Siguiente - - - - - &Cancel - &Cancelar - - - - - Cancel installation without changing the system. - - - - - &Install - - - - - Cancel installation? - ¿Cancelar instalación? - - - - Do you really want to cancel the current install process? -The installer will quit and all changes will be lost. - ¿Estás seguro de que quieres cancelar la instalación en curso? -El instalador se cerrará y se perderán todos los cambios. - - - - &Yes - - - - - &No - - - - - &Close - - - - - Continue with setup? - ¿Continuar con la configuración? - - - - The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - - - - - &Install now - &Instalar ahora - - - - Go &back - Volver atrás. - - - - &Done - - - - - The installation is complete. Close the installer. - - - - - Error - Error - - - - Installation Failed - La instalación ha fallado - - - - CalamaresPython::Helper - - - Unknown exception type - Tipo de excepción desconocida - - - - unparseable Python error - Error de Python no analizable - - - - unparseable Python traceback - Rastreo de Python no analizable - - - - Unfetchable Python error. - Error de Python no alcanzable. - - - - CalamaresWindow - - - %1 Installer - Instalador %1 - - - - Show debug information - Mostrar la información de depuración - - - - CheckerWidget - - - This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - - - - - This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - - - - - This program will ask you some questions and set up %2 on your computer. - - - - - For best results, please ensure that this computer: - Para un mejor resultado asegurate que este ordenador: - - - - System requirements - - - - - ChoicePage - - - Form - Formulario - - - - After: - Después: - - - - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - - - - - Boot loader location: - - - - - %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - - - - - Select storage de&vice: - - - - - - - - Current: - - - - - Reuse %1 as home partition for %2. - - - - - <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - - - - - <strong>Select a partition to install on</strong> - - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - - - - - The EFI system partition at %1 will be used for starting %2. - - - - - EFI system partition: - - - - - This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - - <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - - This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - - <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - - - - - <strong>Replace a partition</strong><br/>Replaces a partition with %1. - - - - - This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - ClearMountsJob - - - Clear mounts for partitioning operations on %1 - Limpiar los puntos de montaje para particionar %1 - - - - Clearing mounts for partitioning operations on %1. - - - - - Cleared all mounts for %1 - Unidades desmontadas en %1 - - - - ClearTempMountsJob - - - Clear all temporary mounts. - Quitar todos los puntos de montaje temporales. - - - - Clearing all temporary mounts. - - - - - Cannot get list of temporary mounts. - No se puede obtener la lista de puntos de montaje temporales. - - - - Cleared all temporary mounts. - Se han quitado todos los puntos de montaje temporales. - - - - CommandList - - - Could not run command. - - - - - No rootMountPoint is defined, so command cannot be run in the target environment. - - - - - ContextualProcessJob - - - Contextual Processes Job - - - - - CreatePartitionDialog - - - Create a Partition - Crear una partición - - - - MiB - - - - - Partition &Type: - &Tipo de partición: - - - - &Primary - &Primaria - - - - E&xtended - E&xtendida - - - - Fi&le System: - - - - - LVM LV name - - - - - Flags: - Marcas: - - - - &Mount Point: - Punto de &montaje: - - - - Si&ze: - Tamaño - - - - En&crypt - - - - - Logical - Logica - - - - Primary - Primaria - - - - GPT - GPT - - - - Mountpoint already in use. Please select another one. - - - - - CreatePartitionJob - - - Create new %2MB partition on %4 (%3) with file system %1. - - - - - Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - - - - - Creating new %1 partition on %2. - - - - - The installer failed to create partition on disk '%1'. - El instalador no ha podido crear la partición en el disco '%1' - - - - CreatePartitionTableDialog - - - Create Partition Table - Crear tabla de particiones - - - - Creating a new partition table will delete all existing data on the disk. - Al crear una tabla de particiones se borrarán todos los datos del disco. - - - - What kind of partition table do you want to create? - ¿Qué tipo de tabla de particiones quieres crear? - - - - Master Boot Record (MBR) - Master Boot Record (MBR) - - - - GUID Partition Table (GPT) - GUID de la tabla de particiones (GPT) - - - - CreatePartitionTableJob - - - Create new %1 partition table on %2. - Crear una nueva tabla de particiones %1 en %2. - - - - Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - Crear una nueva tabla de particiones <strong>%1</strong> en <strong>%2</strong> (%3). - - - - Creating new %1 partition table on %2. - - - - - The installer failed to create a partition table on %1. - El instalador no ha podido crear la tabla de particiones en %1. - - - - CreateUserJob - - - Create user %1 - Crear el usuario %1 - - - - Create user <strong>%1</strong>. - - - - - Creating user %1. - - - - - Sudoers dir is not writable. - No se puede escribir en el directorio Sudoers. - - - - Cannot create sudoers file for writing. - No se puede crear el archivo sudoers como de escritura. - - - - Cannot chmod sudoers file. - No se puede ejecutar chmod sobre el fichero de sudoers. - - - - Cannot open groups file for reading. - No se puede abrir para leer el fichero groups. - - - - Cannot create user %1. - No se puede crear el usuario %1. - - - - useradd terminated with error code %1. - useradd ha terminado con el código de error %1. - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - usermod ha terminado con el código de error %1. - - - - Cannot set home directory ownership for user %1. - No se puede establecer el propietario del directorio personal del usuario %1. - - - - chown terminated with error code %1. - chown ha terminado con el código de error %1. - - - - DeletePartitionJob - - - Delete partition %1. - Borrar partición %1. - - - - Delete partition <strong>%1</strong>. - Borrar partición <strong>%1</strong>. - - - - Deleting partition %1. - - - - - The installer failed to delete partition %1. - El instalado no ha podido borrar la partición %1. - - - - DeviceInfoWidget - - - The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - - - - - This device has a <strong>%1</strong> partition table. - - - - - This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - - - - - This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - - - - - <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - - - - - <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - - - - - DeviceModel - - - %1 - %2 (%3) - %1 - %2 (%3) - - - - DracutLuksCfgJob - - - Write LUKS configuration for Dracut to %1 - - - - - Skip writing LUKS configuration for Dracut: "/" partition is not encrypted - - - - - Failed to open %1 - - - - - DummyCppJob - - - Dummy C++ Job - - - - - EditExistingPartitionDialog - - - Edit Existing Partition - Editar las particiones existentes. - - - - Content: - Contenido: - - - - &Keep - - - - - Format - Formatear - - - - Warning: Formatting the partition will erase all existing data. - Aviso: Al formatear la partición se borrarán todos los datos. - - - - &Mount Point: - Punto de &montaje: - - - - Si&ze: - Tamaño - - - - MiB - - - - - Fi&le System: - - - - - Flags: - Marcas: - - - - Mountpoint already in use. Please select another one. - - - - - EncryptWidget - - - Form - Formulario - - - - En&crypt system - - - - - Passphrase - - - - - Confirm passphrase - - - - - Please enter the same passphrase in both boxes. - - - - - FillGlobalStorageJob - - - Set partition information - Establecer la información de la partición - - - - Install %1 on <strong>new</strong> %2 system partition. - - - - - Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - - - - - Install %2 on %3 system partition <strong>%1</strong>. - - - - - Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - - - - - Install boot loader on <strong>%1</strong>. - Instalar el cargador de arranque en <strong>%1</strong> - - - - Setting up mount points. - - - - - FinishedPage - - - Form - Formulario - - - - <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - - - - - &Restart now - &Reiniciar ahora - - - - <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - Hecho. %1 ha sido instalado en tu ordenador. Puedes reiniciar el nuevo sistema, o continuar en el modo %2 Live. - - - - <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. - - - - - FinishedViewStep - - - Finish - Terminar - - - - Installation Complete - - - - - The installation of %1 is complete. - - - - - FormatPartitionJob - - - Format partition %1 (file system: %2, size: %3 MB) on %4. - Formatear partición %1 (sistema de ficheros: %2, tamaño: %3 MB) en %4. - - - - Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - Formatear la partición <strong>%3MB</strong> <strong>%1</strong> con el sistema de ficheros <strong>%2</strong>. - - - - Formatting partition %1 with file system %2. - - - - - The installer failed to format partition %1 on disk '%2'. - El instalador no ha podido formatear la partición %1 en el disco '%2' - - - - InteractiveTerminalPage - - - Konsole not installed - - - - - Please install KDE Konsole and try again! - - - - - Executing script: &nbsp;<code>%1</code> - - - - - InteractiveTerminalViewStep - - - Script - - - - - KeyboardPage - - - Set keyboard model to %1.<br/> - Establecer el modelo de teclado a %1.<br/> - - - - Set keyboard layout to %1/%2. - Establecer la disposición del teclado a %1/%2. - - - - KeyboardViewStep - - - Keyboard - Teclado - - - - LCLocaleDialog - - - System locale setting - Ajustar configuración local - - - - The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. - - - - - &Cancel - &Cancelar - - - - &OK - - - - - LicensePage - - - Form - Formulario - - - - I accept the terms and conditions above. - - - - - <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - - - - - Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - - - - - <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - - - - - Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - - - - - <strong>%1 driver</strong><br/>by %2 - %1 is an untranslatable product name, example: Creative Audigy driver - - - - - <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> - %1 is usually a vendor name, example: Nvidia graphics driver - - - - - <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - - - - - <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - - - - - <strong>%1 package</strong><br/><font color="Grey">by %2</font> - - - - - <strong>%1</strong><br/><font color="Grey">by %2</font> - - - - - <a href="%1">view license agreement</a> - - - - - LicenseViewStep - - - License - - - - - LocalePage - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Region: - Región: - - - - Zone: - Zona: - - - - - &Change... - &Cambiar - - - - Set timezone to %1/%2.<br/> - Establecer la zona horaria a %1%2. <br/> - - - - %1 (%2) - Language (Country) - - - - - LocaleViewStep - - - Loading location data... - Cargando datos de ubicación... - - - - Location - Ubicación - - - - NetInstallPage - - - Name - Nombre - - - - Description - - - - - Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - - - - - Network Installation. (Disabled: Received invalid groups data) - - - - - NetInstallViewStep - - - Package selection - - - - - PWQ - - - Password is too short - - - - - Password is too long - - - - - Password is too weak - - - - - Memory allocation error when setting '%1' - - - - - Memory allocation error - - - - - The password is the same as the old one - - - - - The password is a palindrome - - - - - The password differs with case changes only - - - - - The password is too similar to the old one - - - - - The password contains the user name in some form - - - - - The password contains words from the real name of the user in some form - - - - - The password contains forbidden words in some form - - - - - The password contains less than %1 digits - - - - - The password contains too few digits - - - - - The password contains less than %1 uppercase letters - - - - - The password contains too few uppercase letters - - - - - The password contains less than %1 lowercase letters - - - - - The password contains too few lowercase letters - - - - - The password contains less than %1 non-alphanumeric characters - - - - - The password contains too few non-alphanumeric characters - - - - - The password is shorter than %1 characters - - - - - The password is too short - - - - - The password is just rotated old one - - - - - The password contains less than %1 character classes - - - - - The password does not contain enough character classes - - - - - The password contains more than %1 same characters consecutively - - - - - The password contains too many same characters consecutively - - - - - The password contains more than %1 characters of the same class consecutively - - - - - The password contains too many characters of the same class consecutively - - - - - The password contains monotonic sequence longer than %1 characters - - - - - The password contains too long of a monotonic character sequence - - - - - No password supplied - - - - - Cannot obtain random numbers from the RNG device - - - - - Password generation failed - required entropy too low for settings - - - - - The password fails the dictionary check - %1 - - - - - The password fails the dictionary check - - - - - Unknown setting - %1 - - - - - Unknown setting - - - - - Bad integer value of setting - %1 - - - - - Bad integer value - - - - - Setting %1 is not of integer type - - - - - Setting is not of integer type - - - - - Setting %1 is not of string type - - - - - Setting is not of string type - - - - - Opening the configuration file failed - - - - - The configuration file is malformed - - - - - Fatal failure - - - - - Unknown error - - - - - Page_Keyboard - - - Form - Formulario - - - - Keyboard Model: - Modelo de teclado: - - - - Type here to test your keyboard - Escribe aquí para probar el teclado - - - - Page_UserSetup - - - Form - Formulario - - - - What is your name? - ¿Cómo te llamas? - - - - What name do you want to use to log in? - ¿Qué nombre quieres usar para acceder al sistema? - - - - - - font-weight: normal - font-weight: normal - - - - <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - <small>Si el ordenador lo usa más de una persona puedes configurar más cuentas después de la instalación.</small> - - - - Choose a password to keep your account safe. - Elige una contraseña para proteger tu cuenta. - - - - <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> - <small>Escribe dos veces la misma contraseña para que se pueda comprobar si tiene errores. Una buena contraseña está formada por letras, números y signos de puntuación, tiene por lo menos ocho caracteres y hay que cambiarla cada cierto tiempo.</small> - - - - What is the name of this computer? - ¿Cuál es el nombre de este ordenador? - - - - <small>This name will be used if you make the computer visible to others on a network.</small> - <small>Este es el nombre que se usará para que otros usuarios de la red puedan identificar el ordenador</small> - - - - Log in automatically without asking for the password. - - - - - Use the same password for the administrator account. - - - - - Choose a password for the administrator account. - Elige una contraseña para la cuenta de administrador. - - - - <small>Enter the same password twice, so that it can be checked for typing errors.</small> - <small>Escribe dos veces la contraseña para comprobar si tiene errores</small> - - - - PartitionLabelsView - - - Root - - - - - Home - - - - - Boot - - - - - EFI system - - - - - Swap - - - - - New partition for %1 - - - - - New partition - Nueva partición - - - - %1 %2 - - - - - PartitionModel - - - - Free Space - Espacio sin usar - - - - - New partition - Nueva partición - - - - Name - Nombre - - - - File System - Sistema de ficheros - - - - Mount Point - Punto de montaje - - - - Size - Tamaño - - - - PartitionPage - - - Form - Formulario - - - - Storage de&vice: - - - - - &Revert All Changes - Deshace&r todos los cambios - - - - New Partition &Table - Nueva &tabla de particiones - - - - &Create - &Crear - - - - &Edit - &Editar - - - - &Delete - Borrar - - - - Install boot &loader on: - - - - - Are you sure you want to create a new partition table on %1? - ¿Estás seguro de que quieres crear una nueva tabla de particiones en %1? - - - - PartitionViewStep - - - Gathering system information... - Recogiendo información sobre el sistema... - - - - Partitions - Particiones - - - - Install %1 <strong>alongside</strong> another operating system. - Instalar %1 <strong>junto con</strong> otro sistema operativo. - - - - <strong>Erase</strong> disk and install %1. - <strong>Borrar</strong> el disco e instalar %1. - - - - <strong>Replace</strong> a partition with %1. - <strong>Reemplazar</strong> una parición con %1. - - - - <strong>Manual</strong> partitioning. - Particionamiento <strong>manual</strong>. - - - - Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - Instalar %1 <strong>junto con</strong> otro sistema operativo en el disco <strong>%2</strong>(%3). - - - - <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - <strong>Borrar</strong> el disco <strong>%2<strong> (%3) e instalar %1. - - - - <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - <strong>Reemplazar</strong> una parición en el disco <strong>%2</strong> (%3) con %1. - - - - <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - Particionar <strong>manualmente</strong> el disco <strong>%1</strong> (%2). - - - - Disk <strong>%1</strong> (%2) - Disco <strong>%1</strong> (%2) - - - - Current: - - - - - After: - Después: - - - - No EFI system partition configured - - - - - An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - - - - - EFI system partition flag not set - - - - - An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - - - - - Boot partition not encrypted - - - - - A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - - - - - PlasmaLnfJob - - - Plasma Look-and-Feel Job - - - - - - Could not select KDE Plasma Look-and-Feel package - - - - - PlasmaLnfPage - - - Form - Formulario - - - - Placeholder - - - - - Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - - - - - PlasmaLnfViewStep - - - Look-and-Feel - - - - - ProcessResult - - - -There was no output from the command. - - - - - -Output: - - - - - - External command crashed. - - - - - Command <i>%1</i> crashed. - - - - - External command failed to start. - - - - - Command <i>%1</i> failed to start. - - - - - Internal error when starting command. - - - - - Bad parameters for process job call. - Parámetros erróneos en la llamada al proceso. - - - - External command failed to finish. - - - - - Command <i>%1</i> failed to finish in %2 seconds. - - - - - External command finished with errors. - - - - - Command <i>%1</i> finished with exit code %2. - - - - - QObject - - - Default Keyboard Model - Modelo de teclado por defecto - - - - - Default - Por defecto - - - - unknown - - - - - extended - - - - - unformatted - - - - - swap - - - - - Unpartitioned space or unknown partition table - - - - - ReplaceWidget - - - Form - Formulario - - - - Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - Selecciona donde instalar %1.<br/><font color="red">Aviso: </font>Se borrarán todos los archivos de la partición seleccionada. - - - - The selected item does not appear to be a valid partition. - El objeto seleccionado no parece ser una particón válida. - - - - %1 cannot be installed on empty space. Please select an existing partition. - %1 no se puede instalar en un sitio vacío. Selecciona una partición existente. - - - - %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - %1 no se puede instalar en una partición extendida. Selecciona una partición primaria o lógica. - - - - %1 cannot be installed on this partition. - No se puede instalar %1 en esta partición. - - - - Data partition (%1) - Partición de datos (%1) - - - - Unknown system partition (%1) - Partición de sistema desconocida (%1) - - - - %1 system partition (%2) - %1 partición de sistema (%2) - - - - <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - <strong>%4</strong><br/><br/>La partición %1 no es lo suficientemente grande para %2. Selecciona otra partición que tenga al menos %3 GiB. - - - - <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - - - - - - - <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - - - - - The EFI system partition at %1 will be used for starting %2. - - - - - EFI system partition: - - - - - RequirementsChecker - - - Gathering system information... - Recogiendo información sobre el sistema... - - - - has at least %1 GB available drive space - Tenga disponibles por lo menos %1 GB libres - - - - There is not enough drive space. At least %1 GB is required. - - - - - has at least %1 GB working memory - Tenga disponibles por lo menos %1 GB de memoria - - - - The system does not have enough working memory. At least %1 GB is required. - - - - - is plugged in to a power source - está enchufado a la corriente - - - - The system is not plugged in to a power source. - - - - - is connected to the Internet - esté conectado a internet - - - - The system is not connected to the Internet. - - - - - The installer is not running with administrator rights. - - - - - The screen is too small to display the installer. - - - - - ResizePartitionJob - - - Resize partition %1. - Redimensionar partición %1. - - - - Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. - Redimensionar las partición <strong>%1</strong> de <strong>%2MB</strong> a <strong>%3MB</strong>. - - - - Resizing %2MB partition %1 to %3MB. - - - - - The installer failed to resize partition %1 on disk '%2'. - El instalador no ha podido redimensionar la partición %1 del disco '%2'. - - - - ScanningDialog - - - Scanning storage devices... - - - - - Partitioning - - - - - SetHostNameJob - - - Set hostname %1 - Establecer el nombre del equipo %1 - - - - Set hostname <strong>%1</strong>. - - - - - Setting hostname %1. - - - - - - Internal Error - Error interno - - - - - Cannot write hostname to target system - No se puede escribir el nombre del equipo en el sistema destino - - - - SetKeyboardLayoutJob - - - Set keyboard model to %1, layout to %2-%3 - Establecer el modelo de teclado %1, a una disposición %2-%3 - - - - Failed to write keyboard configuration for the virtual console. - No se ha podido guardar la configuración de la consola virtual. - - - - - - Failed to write to %1 - No se ha podido escribir en %1 - - - - Failed to write keyboard configuration for X11. - No se ha podido guardar la configuración del teclado de X11. - - - - Failed to write keyboard configuration to existing /etc/default directory. - - - - - SetPartFlagsJob - - - Set flags on partition %1. - - - - - Set flags on %1MB %2 partition. - - - - - Set flags on new partition. - - - - - Clear flags on partition <strong>%1</strong>. - - - - - Clear flags on %1MB <strong>%2</strong> partition. - - - - - Clear flags on new partition. - - - - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. - - - - - Flag new partition as <strong>%1</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - - - - - Clearing flags on %1MB <strong>%2</strong> partition. - - - - - Clearing flags on new partition. - - - - - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - - - - - Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. - - - - - Setting flags <strong>%1</strong> on new partition. - - - - - The installer failed to set flags on partition %1. - - - - - SetPasswordJob - - - Set password for user %1 - Establecer contraseña del usuario %1 - - - - Setting password for user %1. - - - - - Bad destination system path. - El destino de la ruta del sistema es errónea. - - - - rootMountPoint is %1 - El punto de montaje de root es %1 - - - - Cannot disable root account. - - - - - passwd terminated with error code %1. - - - - - Cannot set password for user %1. - No se puede establecer la contraseña del usuario %1. - - - - usermod terminated with error code %1. - usermod ha terminado con el código de error %1. - - - - SetTimezoneJob - - - Set timezone to %1/%2 - Establecer el uso horario a %1%2 - - - - Cannot access selected timezone path. - No se puede encontrar la ruta a la zona horaria seleccionada. - - - - Bad path: %1 - Ruta errónea: %1 - - - - Cannot set timezone. - No se puede establecer la zona horaria. - - - - Link creation failed, target: %1; link name: %2 - No se puede crear el enlace, objetivo: %1; nombre del enlace: %2 - - - - Cannot set timezone, - - - - - Cannot open /etc/timezone for writing - - - - - ShellProcessJob - - - Shell Processes Job - - - - - SlideCounter - - - %L1 / %L2 - slide counter, %1 of %2 (numeric) - - - - - SummaryPage - - - This is an overview of what will happen once you start the install procedure. - Este es un resumen de que pasará una vez que se inicie la instalación. - - - - SummaryViewStep - - - Summary - Resumen - - - - TrackingInstallJob - - - Installation feedback - - - - - Sending installation feedback. - - - - - Internal error in install-tracking. - - - - - HTTP request timed out. - - - - - TrackingMachineNeonJob - - - Machine feedback - - - - - Configuring machine feedback. - - - - - - Error in machine feedback configuration. - - - - - Could not configure machine feedback correctly, script error %1. - - - - - Could not configure machine feedback correctly, Calamares error %1. - - - - - TrackingPage - - - Form - Formulario - - - - Placeholder - - - - - <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - - - - - - - TextLabel - - - - - - - ... - - - - - <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> - - - - - Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. - - - - - By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - - - - - By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - - - - - By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. - - - - - TrackingViewStep - - - Feedback - - - - - UsersPage - - - Your username is too long. - Tu nombre de usuario es demasiado largo. - - - - Your username contains invalid characters. Only lowercase letters and numbers are allowed. - Tu nombre de usuario contiene caracteres no válidos. Solo se pueden usar letras minúsculas y números. - - - - Your hostname is too short. - El nombre de tu equipo es demasiado corto. - - - - Your hostname is too long. - El nombre de tu equipo es demasiado largo. - - - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Tu nombre de equipo contiene caracteres no válidos Sólo se pueden usar letras, números y guiones. - - - - - Your passwords do not match! - Tu contraseña no coincide - - - - UsersViewStep - - - Users - Usuarios - - - - WelcomePage - - - Form - Formulario - - - - &Language: - - - - - &Release notes - Notas de lanzamiento - - - - &Known issues - Problemas conocidos - - - - &Support - &Soporte - - - - &About - Sobre - - - - <h1>Welcome to the %1 installer.</h1> - - - - - <h1>Welcome to the Calamares installer for %1.</h1> - - - - - About %1 installer - Sobre el instalador %1 - - - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - - - - - %1 support - Soporte %1 - - - - WelcomeViewStep - - - Welcome - Bienvenido - - - \ No newline at end of file diff --git a/lang/python/es_ES/LC_MESSAGES/python.mo b/lang/python/es_ES/LC_MESSAGES/python.mo deleted file mode 100644 index 073be3028def8a643410d2153328ec34aadc7c39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 435 zcmYL^(N2Rf6ozN?ic7D(sEHR_^sIo!U>7cMV@i}k7%tHpQ(4C_P)OUk?LmA!pT#oG z_9tI@n*Qhfr$47B-yN+Z&6(yxbF8`2v~o0C{dlL(*0WbE>Q9y_2<9+jLKZbADE5X= z-h+>3eliWBiIK3T779X{7jw8@z958Rdx<-~s?6x*d zZG?n<747hU->dH>5JoWa&|^fx;PNe+_{KBk`HJQYQbsF+rVZtVT%xWn3f@EArBaO~ z7_Zmsz7mwnV!<~3tgdiIOIlIEBv!grV%s!tEzIP*KgB&G3_}0#JF9OR!`uy;il9f1C%YPkW9HR=@^`YuT5Jp0Y1;_dBJmnoR327HzsJ8WyIx5&=SVAs3bwW V*, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Language-Team: Spanish (Spain) (https://www.transifex.com/calamares/teams/20061/es_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: src/modules/umount/main.py:40 -msgid "Unmount file systems." -msgstr "" - -#: src/modules/dummypython/main.py:44 -msgid "Dummy python job." -msgstr "" - -#: src/modules/dummypython/main.py:97 -msgid "Dummy python step {}" -msgstr "" - -#: src/modules/machineid/main.py:35 -msgid "Generate machine-id." -msgstr "" - -#: src/modules/packages/main.py:61 -#, python-format -msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" - -#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 -msgid "Install packages." -msgstr "" - -#: src/modules/packages/main.py:66 -#, python-format -msgid "Installing one package." -msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" - -#: src/modules/packages/main.py:69 -#, python-format -msgid "Removing one package." -msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" diff --git a/lang/txload.cpp b/lang/txload.cpp new file mode 100644 index 000000000..51b9dacb1 --- /dev/null +++ b/lang/txload.cpp @@ -0,0 +1,189 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include +#include +#include +#include + +#include + +bool load_file(const char* filename, QDomDocument& doc) +{ + QFile file(filename); + QString err; + int err_line, err_column; + if (!file.open(QIODevice::ReadOnly)) + { + qDebug() << "Could not open" << filename; + return false; + } + QByteArray ba( file.read(1024 * 1024) ); + qDebug() << "Read" << ba.length() << "bytes from" << filename; + + if (!doc.setContent(ba, &err, &err_line, &err_column)) { + qDebug() << "Could not read" << filename << ':' << err_line << ':' << err_column << ' ' << err; + file.close(); + return false; + } + file.close(); + + return true; +} + +QDomElement find_context(QDomDocument& doc, const QString& name) +{ + QDomElement top = doc.documentElement(); + QDomNode n = top.firstChild(); + while (!n.isNull()) { + if (n.isElement()) { + QDomElement e = n.toElement(); + if ( ( e.tagName() == "context" ) && ( e.firstChildElement( "name" ).text() == name ) ) + return e; + } + n = n.nextSibling(); + } + + return QDomElement(); +} + +QDomElement find_message(QDomElement& context, const QString& source) +{ + QDomNode n = context.firstChild(); + while (!n.isNull()) { + if (n.isElement()) { + QDomElement e = n.toElement(); + if ( e.tagName() == "message" ) + { + QString msource = e.firstChildElement( "source" ).text(); + if ( msource == source ) + return e; + } + } + n = n.nextSibling(); + } + return QDomElement(); +} + +bool merge_into(QDomElement& master, QDomElement& sub) +{ + QDomNode n = sub.firstChild(); + while (!n.isNull()) { + if (n.isElement()) { + QDomElement e = n.toElement(); + if ( e.tagName() == "message" ) + { + QString source = e.firstChildElement( "source" ).text(); + QString translation = e.firstChildElement( "translation" ).text(); + QDomElement masterTranslation = find_message( master, source ); + if ( masterTranslation.isNull() ) + { + qDebug() << "No master translation for" << source; + return false; + } + + QString msource = masterTranslation.firstChildElement( "source" ).text(); + QString mtranslation = masterTranslation.firstChildElement( "translation" ).text(); + + if ( source != msource ) + { + qDebug() << "Mismatch for messages\n" << source << '\n' << msource; + return false; + } + if ( !translation.isEmpty() && ( translation != mtranslation ) ) + { + qDebug() << "\n\n\nSource:" << source << "\nTL1:" << mtranslation << "\nTL2:" << translation; + } + } + } + n = n.nextSibling(); + } + + return true; +} + + + +bool merge_into(QDomDocument& master, QDomElement& context) +{ + QDomElement name = context.firstChildElement( "name" ); + if ( name.isNull() ) + return false; + + QString contextname = name.text(); + QDomElement masterContext = find_context( master, contextname ); + if ( masterContext.isNull() ) + { + qDebug() << "Master document has no context" << contextname; + return false; + } + + return merge_into( masterContext, context ); +} + +bool merge_into(QDomDocument& master, QDomDocument& sub) +{ + QDomElement top = sub.documentElement(); + QDomNode n = top.firstChild(); + while (!n.isNull()) { + if (n.isElement()) { + QDomElement e = n.toElement(); + if ( e.tagName() == "context" ) + if ( !merge_into( master, e ) ) + return false; + } + n = n.nextSibling(); + } + + return true; +} + +int main(int argc, char** argv) +{ + QCoreApplication a(argc, argv); + + if (argc < 2) + return 1; + + QDomDocument doc("master"); + if ( !load_file(argv[1], doc) ) + return 1; + + for (int i = 2; i < argc; ++i) + { + QDomDocument subdoc("sub"); + if ( !load_file(argv[i], subdoc) ) + return 1; + if ( !merge_into( doc, subdoc ) ) + return 1; + } + + QString outfilename( argv[1] ); + outfilename.append( ".new" ); + QFile outfile(outfilename); + if (!outfile.open(QIODevice::WriteOnly)) + { + qDebug() << "Could not open" << outfilename; + return 1; + } + + outfile.write( doc.toString(4).toUtf8() ); + outfile.close(); + + return 0; +} diff --git a/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 35a601558dd3c61a39e160a37638f921594f852c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 435 zcmYL^(N4lJ6oxT+wM(zPsEHR4J**=JN69WG3|(|=8IweBOdVy+Y~9ipfd}#Rd=@)2 z@F!n-n*Qhfr$6Us-z}{Z&4uPlbE>(~G_o~2{W#EP<2fi2)hA08_zRdbA@hn86uF}( z_rXJRFP{0~)QDMK2?c@7@&(+lGYLsWkP(Fmj0B@fH^G=HMo&1%YXxk7DSif1{?6)RV^nd)xPoL? z>#Y^rDzh$h$PlF~DkM|ROELlb=xfrJOn}GJYLWAdAp0X%hm8r^XBknk7PNp#B}z#U WulHB!^oHoKblMzUI>_n_jn*#}!h7rh diff --git a/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.po deleted file mode 100644 index 5aa724d08..000000000 --- a/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-04 08:16-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Language-Team: Spanish (Spain) (https://www.transifex.com/calamares/teams/20061/es_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: src/modules/dummypythonqt/main.py:84 -msgid "Click me!" -msgstr "" - -#: src/modules/dummypythonqt/main.py:94 -msgid "A new QLabel." -msgstr "" - -#: src/modules/dummypythonqt/main.py:97 -msgid "Dummy PythonQt ViewStep" -msgstr "" - -#: src/modules/dummypythonqt/main.py:183 -msgid "The Dummy PythonQt Job" -msgstr "" - -#: src/modules/dummypythonqt/main.py:186 -msgid "This is the Dummy PythonQt Job. The dummy job says: {}" -msgstr "" - -#: src/modules/dummypythonqt/main.py:190 -msgid "A status message for Dummy PythonQt Job." -msgstr "" From 7b934b77799a5c5c72a83768d8c2064c40422514 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 7 May 2018 14:31:33 -0400 Subject: [PATCH 126/385] Desktop: don't show in app-stores - another change squashed by Transifex - thanks Kevin Kofler for spotting --- calamares.desktop | 1 + 1 file changed, 1 insertion(+) diff --git a/calamares.desktop b/calamares.desktop index e5986cbe5..218a84b74 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -11,6 +11,7 @@ Icon=calamares Terminal=false StartupNotify=true Categories=Qt;System; +X-AppStream-Ignore=true Name[bg]=Calamares Icon[bg]=calamares GenericName[bg]=Системен Инсталатор From 77d2667b53c063c75cc0d1501eccbeec0e94c6b3 Mon Sep 17 00:00:00 2001 From: Caio Carvalho Date: Tue, 8 May 2018 01:30:41 -0300 Subject: [PATCH 127/385] [partition] Checking if there is LUKS creation support and if partition is not Extended before enabling encryption in CreatePartitionDialog. --- src/modules/partition/gui/CreatePartitionDialog.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index 8804eb177..5952a61a1 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -261,7 +261,9 @@ CreatePartitionDialog::updateMountPointUi() FileSystem::Type type = FileSystem::typeForName( m_ui->fsComboBox->currentText() ); enabled = !s_unmountableFS.contains( type ); - if ( FS::luks::canEncryptType( type ) ) + if ( FileSystemFactory::map()[FileSystem::Type::Luks]->supportCreate() && + FS::luks::canEncryptType( type ) && + !m_role.has( PartitionRole::Extended ) ) { m_ui->encryptWidget->show(); m_ui->encryptWidget->reset(); From 2da09f7648348ed3104c1c76b4d45e1fe4d7d808 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 10 May 2018 05:37:18 -0400 Subject: [PATCH 128/385] [libcalamaresui] Fix build - Include all headers for types that need to be fully-defined (e.g. return types). This guards against uses in contexts where those headers have not been implicitly or previously included. FIXES #948 --- src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h index 4776f17ba..8a8b775fc 100644 --- a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h +++ b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,8 +20,9 @@ #ifndef PYTHONQTGLOBALSTORAGEWRAPPER_H #define PYTHONQTGLOBALSTORAGEWRAPPER_H - #include +#include +#include namespace Calamares { From d79ca92cbfa7eb297c72c082d7d15b9b969fd6d9 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 10 May 2018 05:44:20 -0400 Subject: [PATCH 129/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_ar.ts | 4 +- lang/calamares_ast.ts | 2 +- lang/calamares_bg.ts | 2 +- lang/calamares_ca.ts | 2 +- lang/calamares_cs_CZ.ts | 2 +- lang/calamares_da.ts | 16 +++--- lang/calamares_de.ts | 2 +- lang/calamares_el.ts | 2 +- lang/calamares_en.ts | 2 +- lang/calamares_en_GB.ts | 2 +- lang/calamares_es.ts | 2 +- lang/calamares_es_MX.ts | 2 +- lang/calamares_es_PR.ts | 2 +- lang/calamares_et.ts | 2 +- lang/calamares_eu.ts | 2 +- lang/calamares_fa.ts | 2 +- lang/calamares_fi_FI.ts | 2 +- lang/calamares_fr.ts | 6 +- lang/calamares_fr_CH.ts | 2 +- lang/calamares_gl.ts | 2 +- lang/calamares_gu.ts | 2 +- lang/calamares_he.ts | 2 +- lang/calamares_hi.ts | 2 +- lang/calamares_hr.ts | 2 +- lang/calamares_hu.ts | 2 +- lang/calamares_id.ts | 111 +++++++++++++++++++------------------ lang/calamares_is.ts | 2 +- lang/calamares_it_IT.ts | 2 +- lang/calamares_ja.ts | 2 +- lang/calamares_kk.ts | 2 +- lang/calamares_kn.ts | 2 +- lang/calamares_lo.ts | 2 +- lang/calamares_lt.ts | 2 +- lang/calamares_mr.ts | 2 +- lang/calamares_nb.ts | 2 +- lang/calamares_nl.ts | 2 +- lang/calamares_pl.ts | 35 ++++++------ lang/calamares_pt_BR.ts | 12 ++-- lang/calamares_pt_PT.ts | 2 +- lang/calamares_ro.ts | 2 +- lang/calamares_ru.ts | 2 +- lang/calamares_sk.ts | 18 +++--- lang/calamares_sl.ts | 2 +- lang/calamares_sq.ts | 2 +- lang/calamares_sr.ts | 2 +- lang/calamares_sr@latin.ts | 2 +- lang/calamares_sv.ts | 2 +- lang/calamares_th.ts | 2 +- lang/calamares_tr_TR.ts | 2 +- lang/calamares_uk.ts | 2 +- lang/calamares_ur.ts | 2 +- lang/calamares_uz.ts | 2 +- lang/calamares_zh_CN.ts | 8 +-- lang/calamares_zh_TW.ts | 2 +- 54 files changed, 153 insertions(+), 149 deletions(-) diff --git a/lang/calamares_ar.ts b/lang/calamares_ar.ts index 70c4ab6d9..56d1767cc 100644 --- a/lang/calamares_ar.ts +++ b/lang/calamares_ar.ts @@ -184,7 +184,7 @@ &Install - + &ثبت @@ -2568,7 +2568,7 @@ Output: - + %1 support 1% الدعم diff --git a/lang/calamares_ast.ts b/lang/calamares_ast.ts index ca1ce2d5a..793ca4e4a 100644 --- a/lang/calamares_ast.ts +++ b/lang/calamares_ast.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support Sofitu %1 diff --git a/lang/calamares_bg.ts b/lang/calamares_bg.ts index 31e629ef0..61c557d17 100644 --- a/lang/calamares_bg.ts +++ b/lang/calamares_bg.ts @@ -2569,7 +2569,7 @@ Output: - + %1 support %1 поддръжка diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index 566b6587d..2eb963145 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -2571,7 +2571,7 @@ Sortida: <h1>%1</h1><br/><strong>%2<br/>per a %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017, Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agraïments: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg i l'<a href="https://www.transifex.com/calamares/calamares/">Equip de traducció del Calamares</a>.<br/><br/><a href="http://calamares.io/">El desenvolupament </a> del Calamares està patrocinat per <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suport diff --git a/lang/calamares_cs_CZ.ts b/lang/calamares_cs_CZ.ts index 827dd7775..323d89cc6 100644 --- a/lang/calamares_cs_CZ.ts +++ b/lang/calamares_cs_CZ.ts @@ -2571,7 +2571,7 @@ Výstup: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg a <a href="https://www.transifex.com/calamares/calamares/">tým překledatelů Calamares</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> vývoj je sponzorován <br/><a href="http://www.blue-systems.com/">Blue Systems</a> – Liberating Software. - + %1 support %1 podpora diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts index b322b155c..348496a32 100644 --- a/lang/calamares_da.ts +++ b/lang/calamares_da.ts @@ -184,7 +184,7 @@ &Install - &Installer + &Installér @@ -221,7 +221,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - %1-installationsprogrammet er ved at foretage ændringer til din disk for at installere %2. <br/><strong>Det vil ikke være muligt at fortryde ændringerne.</strong> + %1-installationsprogrammet er ved at foretage ændringer til din disk for at installere %2.<br/><strong>Det vil ikke være muligt at fortryde ændringerne.</strong> @@ -621,7 +621,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. GUID Partition Table (GPT) - GUID-partitiontabel (GPT) + GUID-partitionstabel (GPT) @@ -1250,7 +1250,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Memory allocation error when setting '%1' - Fejl ved allokering af hukommelse ved sættelse af '%1' + Fejl ved allokering af hukommelse da '%1' blev sat @@ -1814,7 +1814,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - Vælg venligst et udseende og fremtoning til KDE Plasma-skrivebordet. Du kan også springe trinnet over og konfigurere udseendet og fremtoningen når systemet er installeret. Ved klik på et udseende og fremtoning giver det dig en live forhåndsvisning af det udseende og fremtoning. + Vælg venligst et udseende og fremtoning til KDE Plasma-skrivebordet. Du kan også springe trinnet over og konfigurere udseendet og fremtoningen når systemet er installeret. Ved klik på et udseende og fremtoning giver det dig en live forhåndsvisning af det. @@ -2369,7 +2369,7 @@ Output: Sending installation feedback. - Sender installationsfeedback + Sender installationsfeedback. @@ -2403,7 +2403,7 @@ Output: Could not configure machine feedback correctly, script error %1. - Kunne ikke konfigurere maskinfeedback korrekt, script-fejl %1. + Kunne ikke konfigurere maskinfeedback korrekt, skript-fejl %1. @@ -2571,7 +2571,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>til %3</strong><br/><br/>Ophavsret 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Ophavsret 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Tak til: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg og <a href="https://www.transifex.com/calamares/calamares/">Calamares oversætterteam</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> udvikling er sponsoreret af <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 support diff --git a/lang/calamares_de.ts b/lang/calamares_de.ts index b7d2d4f25..f480b9904 100644 --- a/lang/calamares_de.ts +++ b/lang/calamares_de.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support Unterstützung für %1 diff --git a/lang/calamares_el.ts b/lang/calamares_el.ts index 34861ad2f..c41b018c8 100644 --- a/lang/calamares_el.ts +++ b/lang/calamares_el.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support Υποστήριξη %1 diff --git a/lang/calamares_en.ts b/lang/calamares_en.ts index efe61edda..ece6efc5b 100644 --- a/lang/calamares_en.ts +++ b/lang/calamares_en.ts @@ -2571,7 +2571,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 support diff --git a/lang/calamares_en_GB.ts b/lang/calamares_en_GB.ts index acd3f03cc..804626b78 100644 --- a/lang/calamares_en_GB.ts +++ b/lang/calamares_en_GB.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support %1 support diff --git a/lang/calamares_es.ts b/lang/calamares_es.ts index da5c66495..3b7c17604 100644 --- a/lang/calamares_es.ts +++ b/lang/calamares_es.ts @@ -2572,7 +2572,7 @@ Salida: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimientos: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg y al <a href="https://www.transifex.com/calamares/calamares/">equipo de traductores de Calamares</a>.<br/><br/> El desarrollo <a href="https://calamares.io/">Calamares</a> está patrocinado por <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberando Software. - + %1 support %1 ayuda diff --git a/lang/calamares_es_MX.ts b/lang/calamares_es_MX.ts index d84b10496..35e4d7c5e 100644 --- a/lang/calamares_es_MX.ts +++ b/lang/calamares_es_MX.ts @@ -2572,7 +2572,7 @@ Output: - + %1 support %1 Soporte diff --git a/lang/calamares_es_PR.ts b/lang/calamares_es_PR.ts index 4f7c55ecb..c87c58b43 100644 --- a/lang/calamares_es_PR.ts +++ b/lang/calamares_es_PR.ts @@ -2567,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_et.ts b/lang/calamares_et.ts index 28104ecc5..680065815 100644 --- a/lang/calamares_et.ts +++ b/lang/calamares_et.ts @@ -2567,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_eu.ts b/lang/calamares_eu.ts index 17650736e..1939fd091 100644 --- a/lang/calamares_eu.ts +++ b/lang/calamares_eu.ts @@ -2567,7 +2567,7 @@ Output: - + %1 support %1 euskarria diff --git a/lang/calamares_fa.ts b/lang/calamares_fa.ts index 611566465..30dfc46b1 100644 --- a/lang/calamares_fa.ts +++ b/lang/calamares_fa.ts @@ -2567,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_fi_FI.ts b/lang/calamares_fi_FI.ts index 1bed79cd6..d7f1b8067 100644 --- a/lang/calamares_fi_FI.ts +++ b/lang/calamares_fi_FI.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support diff --git a/lang/calamares_fr.ts b/lang/calamares_fr.ts index 43d17ac52..26390c939 100644 --- a/lang/calamares_fr.ts +++ b/lang/calamares_fr.ts @@ -184,7 +184,7 @@ &Install - + &Installer @@ -2341,7 +2341,7 @@ Sortie %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -2572,7 +2572,7 @@ Sortie <h1>%1</h1><br/><strong>%2<br/> pour %3</strong><br/><br/> Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/> Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/> Merci à : Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg et <a href="https://www.transifex.com/calamares/calamares/">l'équipe de traducteurs de Calamares</a>.<br/><br/> Le développement de <a href="https://calamares.io/">Calamares</a> est sponsorisé par <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Support de %1 diff --git a/lang/calamares_fr_CH.ts b/lang/calamares_fr_CH.ts index eebefd592..8df7f0675 100644 --- a/lang/calamares_fr_CH.ts +++ b/lang/calamares_fr_CH.ts @@ -2567,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_gl.ts b/lang/calamares_gl.ts index d15f91da1..baf14fb42 100644 --- a/lang/calamares_gl.ts +++ b/lang/calamares_gl.ts @@ -2569,7 +2569,7 @@ Output: - + %1 support %1 axuda diff --git a/lang/calamares_gu.ts b/lang/calamares_gu.ts index 19eef5b44..0b1da0b3e 100644 --- a/lang/calamares_gu.ts +++ b/lang/calamares_gu.ts @@ -2567,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_he.ts b/lang/calamares_he.ts index 5d1b29608..88422ec29 100644 --- a/lang/calamares_he.ts +++ b/lang/calamares_he.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support תמיכה ב - %1 diff --git a/lang/calamares_hi.ts b/lang/calamares_hi.ts index 4a04b58e5..02238b665 100644 --- a/lang/calamares_hi.ts +++ b/lang/calamares_hi.ts @@ -2568,7 +2568,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, रोहन गर्ग व <a href="https://www.transifex.com/calamares/calamares/">Calamares अनुवादक टीम</a> का धन्यवाद।<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 सहायता diff --git a/lang/calamares_hr.ts b/lang/calamares_hr.ts index 160232b4a..93fed2798 100644 --- a/lang/calamares_hr.ts +++ b/lang/calamares_hr.ts @@ -2571,7 +2571,7 @@ Izlaz: <h1>%1</h1><br/><strong>%2<br/>za %3</strong><br/><br/>Autorska prava 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorska prava 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Zahvale: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg i <a href="https://www.transifex.com/calamares/calamares/">Calamares timu za prevođenje</a>.<br/><br/><a href="https://calamares.io/">Calamares sponzorira <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 podrška diff --git a/lang/calamares_hu.ts b/lang/calamares_hu.ts index 752ca0b10..3652a5eec 100644 --- a/lang/calamares_hu.ts +++ b/lang/calamares_hu.ts @@ -2570,7 +2570,7 @@ Calamares hiba %1. - + %1 support %1 támogatás diff --git a/lang/calamares_id.ts b/lang/calamares_id.ts index 5e2a4ec3e..0babc5db5 100644 --- a/lang/calamares_id.ts +++ b/lang/calamares_id.ts @@ -184,7 +184,7 @@ &Install - + &Pasang @@ -1302,42 +1302,42 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. The password contains too few digits - + Kata sandi terkandung terlalu sedikit digit The password contains less than %1 uppercase letters - + Kata sandi terkandung kurang dari %1 huruf besar The password contains too few uppercase letters - + Kata sandi terkandung terlalu sedikit huruf besar The password contains less than %1 lowercase letters - + Kata sandi terkandung kurang dari %1 huruf kecil The password contains too few lowercase letters - + Kata sandi terkandung terlalu sedikit huruf kecil The password contains less than %1 non-alphanumeric characters - + Kata sandi terkandung kurang dari %1 karakter non-alfanumerik The password contains too few non-alphanumeric characters - + Kata sandi terkandung terlalu sedikit non-alfanumerik The password is shorter than %1 characters - + Kata sandi terlalu pendek dari %1 karakter @@ -1347,77 +1347,77 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. The password is just rotated old one - + Kata sandi hanya terotasi satu kali The password contains less than %1 character classes - + Kata sandi terkandung kurang dari %1 kelas karakter The password does not contain enough character classes - + Kata sandi tidak terkandung kelas karakter yang cukup The password contains more than %1 same characters consecutively - + Kata sandi terkandung lebih dari %1 karakter berurutan yang sama The password contains too many same characters consecutively - + Kata sandi terkandung terlalu banyak karakter berurutan yang sama The password contains more than %1 characters of the same class consecutively - + Kata sandi terkandung lebih dari %1 karakter dari kelas berurutan yang sama The password contains too many characters of the same class consecutively - + Kata sandi terkandung terlalu banyak karakter dari kelas berurutan yang sama The password contains monotonic sequence longer than %1 characters - + Kata sandi terkandung rangkaian monoton yang lebih panjang dari %1 karakter The password contains too long of a monotonic character sequence - + Kata sandi terkandung rangkaian karakter monoton yang panjang No password supplied - + Tidak ada kata sandi yang dipasok Cannot obtain random numbers from the RNG device - + Tidak dapat memperoleh angka acak dari piranti RNG Password generation failed - required entropy too low for settings - + Penghasilan kata sandi gagal - entropi yang diperlukan terlalu rendah untuk pengaturan The password fails the dictionary check - %1 - + Kata sandi gagal memeriksa kamus - %1 The password fails the dictionary check - + Kata sandi gagal memeriksa kamus Unknown setting - %1 - + Pengaturan tidak diketahui - %1 @@ -1427,7 +1427,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. Bad integer value of setting - %1 - + Nilai bilangan bulat buruk dari pengaturan - %1 @@ -1437,22 +1437,22 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. Setting %1 is not of integer type - + Pengaturan %1 tidak termasuk tipe integer Setting is not of integer type - + Pengaturan tidak termasuk tipe integer Setting %1 is not of string type - + Pengaturan %1 tidak termasuk tipe string Setting is not of string type - + Pengaturan tidak termasuk tipe string @@ -1792,7 +1792,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. Plasma Look-and-Feel Job - + Plasma Look-and-Feel Job @@ -1811,12 +1811,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. Placeholder - + Placeholder Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + Silakan pilih sebuah look-and-feel untuk KDE Plasma Desktop. Anda juga dapat melewati langkah ini dan konfigurasi look-and-feel sekali ketika sistem terpasang. Mengeklik pilihan look-and-feel akan memberi Anda pratinjau langsung dari look-and-feel. @@ -1833,14 +1833,17 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. There was no output from the command. - + +Tidak ada keluaran dari perintah. Output: - + +Keluaran: + @@ -2339,7 +2342,7 @@ Output: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -2373,12 +2376,12 @@ Output: Internal error in install-tracking. - + Galat intern di pelacakan-pemasangan. HTTP request timed out. - + Permintaan waktu HTTP habis. @@ -2386,28 +2389,28 @@ Output: Machine feedback - + Mesin umpan balik Configuring machine feedback. - + Mengkonfigurasi mesin umpan balik. Error in machine feedback configuration. - + Galat di konfigurasi mesin umpan balik. Could not configure machine feedback correctly, script error %1. - + Tidak dapat mengkonfigurasi mesin umpan balik dengan benar, naskah galat %1 Could not configure machine feedback correctly, Calamares error %1. - + Tidak dapat mengkonfigurasi mesin umpan balik dengan benar, Calamares galat %1. @@ -2420,51 +2423,51 @@ Output: Placeholder - + Placeholder <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - + <html><head/><body><p>Dengan memilih ini, Anda akan mengirim <span style=" font-weight:600;">tidak ada informasi di </span> tentang pemasangan Anda. </p></body></html> TextLabel - + Label teks ... - + ... <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> - + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Klik disini untuk informasi lebih lanjut tentang umpan balik pengguna </span></a></p></body></html> Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. - + Pasang bantuan pelacakan %1 untuk melihat berapa banyak pengguna memiliki, piranti keras apa yang mereka pasang %1 dan (dengan dua pilihan terakhir), dapatkan informasi berkelanjutan tentang aplikasi yang disukai. Untuk melihat apa yang akan dikirim, silakan klik ikon bantuan ke beberapa area selanjtunya. By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + Dengan memilih ini Anda akan mengirim informasi tentang pemasangan dan piranti keras Anda. Informasi ini hanya akan <b>dikirim sekali</b> setelah pemasangan selesai. By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + Dengan memilih ini anda akan <b> secara berkala</b> mengirim informasi tentang pemasangan, piranti keras dan aplikasi Anda, ke %1. By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. - + Dengan memilih ini anda akan<b>secara teratur</b> mengirim informasi tentang pemasangan, piranti keras, aplikasi dan pola pemakaian Anda, ke %1. @@ -2472,7 +2475,7 @@ Output: Feedback - + Umpan balik @@ -2567,10 +2570,10 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/><strong>%2<br/>untuk %3</strong><br/><br/> Hak Cipta 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Hak Cipta 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/> Terimakasih kepada: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg dan <a href="https://www.transifex.com/calamares/calamares/"> tim penerjemah Calamares </a>. <br/><br/><a href="https://calamares.io/">Pengembangan Calamares</a>disponsori oleh <br/><a href="http://www.blue-systems.com/">Blue Systems</a>- Liberating Software. - + %1 support Dukungan %1 diff --git a/lang/calamares_is.ts b/lang/calamares_is.ts index 764d33e15..1960feb74 100644 --- a/lang/calamares_is.ts +++ b/lang/calamares_is.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support %1 stuðningur diff --git a/lang/calamares_it_IT.ts b/lang/calamares_it_IT.ts index 2dda30e42..78e1743e8 100644 --- a/lang/calamares_it_IT.ts +++ b/lang/calamares_it_IT.ts @@ -2570,7 +2570,7 @@ Output: - + %1 support supporto %1 diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index edc1bc763..b06c45c41 100644 --- a/lang/calamares_ja.ts +++ b/lang/calamares_ja.ts @@ -2572,7 +2572,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 サポート diff --git a/lang/calamares_kk.ts b/lang/calamares_kk.ts index f84690379..e3105d100 100644 --- a/lang/calamares_kk.ts +++ b/lang/calamares_kk.ts @@ -2567,7 +2567,7 @@ Output: - + %1 support %1 қолдауы diff --git a/lang/calamares_kn.ts b/lang/calamares_kn.ts index 17d1eb781..90340bc67 100644 --- a/lang/calamares_kn.ts +++ b/lang/calamares_kn.ts @@ -2567,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_lo.ts b/lang/calamares_lo.ts index ce728cf14..84f5157a1 100644 --- a/lang/calamares_lo.ts +++ b/lang/calamares_lo.ts @@ -2567,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_lt.ts b/lang/calamares_lt.ts index 577f4a452..0b0939d43 100644 --- a/lang/calamares_lt.ts +++ b/lang/calamares_lt.ts @@ -2571,7 +2571,7 @@ Išvestis: <h1>%1</h1><br/><strong>%2<br/>sistemai %3</strong><br/><br/>Autorių teisės 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorių teisės 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Dėkojame: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg ir <a href="https://www.transifex.com/calamares/calamares/">Calamares vertėjų komandai</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> kūrimą remia <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Išlaisvinanti programinė įranga. - + %1 support %1 palaikymas diff --git a/lang/calamares_mr.ts b/lang/calamares_mr.ts index 4d8ee7ddb..4b9d431af 100644 --- a/lang/calamares_mr.ts +++ b/lang/calamares_mr.ts @@ -2567,7 +2567,7 @@ Output: - + %1 support %1 पाठबळ diff --git a/lang/calamares_nb.ts b/lang/calamares_nb.ts index 07c2a7303..d9d38cd26 100644 --- a/lang/calamares_nb.ts +++ b/lang/calamares_nb.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support diff --git a/lang/calamares_nl.ts b/lang/calamares_nl.ts index 01739e4b5..c3ec57b23 100644 --- a/lang/calamares_nl.ts +++ b/lang/calamares_nl.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support %1 ondersteuning diff --git a/lang/calamares_pl.ts b/lang/calamares_pl.ts index 61f00aeac..df078f2ef 100644 --- a/lang/calamares_pl.ts +++ b/lang/calamares_pl.ts @@ -184,7 +184,7 @@ &Install - + Za&instaluj @@ -492,7 +492,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. Contextual Processes Job - + Działania procesów kontekstualnych @@ -1400,17 +1400,17 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. Password generation failed - required entropy too low for settings - + Błąd tworzenia hasła - wymagana entropia jest zbyt niska dla ustawień The password fails the dictionary check - %1 - + Hasło nie przeszło pomyślnie sprawdzenia słownikowego - %1 The password fails the dictionary check - + Hasło nie przeszło pomyślnie sprawdzenia słownikowego @@ -1425,12 +1425,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. Bad integer value of setting - %1 - + Błędna wartość liczby całkowitej ustawienia - %1 Bad integer value - + Błędna wartość liczby całkowitej @@ -1790,13 +1790,13 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. Plasma Look-and-Feel Job - + Działania Wyglądu-i-Zachowania Plasmy Could not select KDE Plasma Look-and-Feel package - + Nie można wybrać pakietu Wygląd-i-Zachowanie Plasmy KDE @@ -1809,7 +1809,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. Placeholder - + Symbol zastępczy @@ -1822,7 +1822,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. Look-and-Feel - + Wygląd-i-Zachowanie @@ -1831,7 +1831,8 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. There was no output from the command. - + +W wyniku polecenia nie ma żadnego rezultatu. @@ -2330,7 +2331,7 @@ Wyjście: Shell Processes Job - + Działania procesów powłoki @@ -2339,7 +2340,7 @@ Wyjście: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -2420,7 +2421,7 @@ Wyjście: Placeholder - + Symbol zastępczy @@ -2432,7 +2433,7 @@ Wyjście: TextLabel - + EtykietaTekstowa @@ -2570,7 +2571,7 @@ Wyjście: <h1>%1</h1><br/><strong>%2<br/>dla %3</strong><br/><br/>Prawa autorskie 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Prawa autorskie 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Podziękowania dla: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg i <a href="https://www.transifex.com/calamares/calamares/">zespołu tłumaczy Calamares</a>.<br/><br/><a href="https://calamares.io/">Projekt Calamares</a> jest sponsorowany przez <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Wsparcie %1 diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index c60a2dd5c..c73d4d958 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -1452,7 +1452,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Setting is not of string type - A configuração não é de tipo string + A configuração não é do tipo string @@ -2119,7 +2119,7 @@ Saída: Setting hostname %1. - Definindo nome da máquina %1 + Definindo nome da máquina %1. @@ -2257,7 +2257,7 @@ Saída: Setting password for user %1. - Definindo senha para usuário %1 + Definindo senha para usuário %1. @@ -2560,7 +2560,7 @@ Saída: <h1>Welcome to the Calamares installer for %1.</h1> - <h1>Bem-vindo ao instalador da Calamares para %1.</h1> + <h1>Bem-vindo ao instalador Calamares para %1.</h1> @@ -2570,10 +2570,10 @@ Saída: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - <h1>%1</h1><br/><strong>%2<br/>para %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimentos a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg e às <a href="https://www.transifex.com/calamares/calamares/">equipes de tradutores do Calamares</a>.<br/><br/>O desenvolvimento do <a href="https://calamares.io/">Calamares</a> tem apoio de <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + <h1>%1</h1><br/><strong>%2<br/>para %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimentos a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg e às <a href="https://www.transifex.com/calamares/calamares/">equipes de tradução do Calamares</a>.<br/><br/>O desenvolvimento do <a href="https://calamares.io/">Calamares</a> tem apoio de <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suporte diff --git a/lang/calamares_pt_PT.ts b/lang/calamares_pt_PT.ts index 18e946a06..f43c1e8db 100644 --- a/lang/calamares_pt_PT.ts +++ b/lang/calamares_pt_PT.ts @@ -2571,7 +2571,7 @@ Saída de Dados: <h1>%1</h1><br/><strong>%2<br/>para %3</strong><br/><br/>Direitos de cópia 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Direitos de cópia 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimentos a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg e à <a href="https://www.transifex.com/calamares/calamares/">equipa de tradutores do Calamares</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> desenvolvimento patrocinado por <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suporte diff --git a/lang/calamares_ro.ts b/lang/calamares_ro.ts index 1f1cead71..8087ad98e 100644 --- a/lang/calamares_ro.ts +++ b/lang/calamares_ro.ts @@ -2574,7 +2574,7 @@ Output <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Mulțumiri: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg și <a href="https://www.transifex.com/calamares/calamares/">echipei de traducători Calamares</a>.<br/><br/><a href="https://calamares.io/">Calamares</a>, dezvoltare sponsorizată de <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suport diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts index 2b3adbfe4..0d53c9b89 100644 --- a/lang/calamares_ru.ts +++ b/lang/calamares_ru.ts @@ -2567,7 +2567,7 @@ Output: - + %1 support %1 поддержка diff --git a/lang/calamares_sk.ts b/lang/calamares_sk.ts index f56653d99..ee385a447 100644 --- a/lang/calamares_sk.ts +++ b/lang/calamares_sk.ts @@ -184,7 +184,7 @@ &Install - + _Inštalovať @@ -1290,7 +1290,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. The password contains forbidden words in some form - + Heslo obsahuje zakázané slová v určitom tvare @@ -1300,7 +1300,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. The password contains too few digits - + Heslo tiež obsahuje pár číslic @@ -1345,17 +1345,17 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. The password is just rotated old one - + Heslo je iba obrátené staré heslo The password contains less than %1 character classes - + Heslo obsahuje menej ako %1 triedy znakov The password does not contain enough character classes - + Heslo neobsahuje dostatok tried znakov @@ -1814,7 +1814,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + Prosím, zvoľte vzhľad a dojem pre pracovné prostredie KDE Plasma. Tento krok môžete preskočiť a nastaviť vzhľad a dojem po inštalácii systému. Kliknutím na výber Vzhľad a dojem sa zobrazí živý náhľad daného vzhľadu a dojmu. @@ -2340,7 +2340,7 @@ Výstup: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -2571,7 +2571,7 @@ Výstup: <h1>%1</h1><br/><strong>%2<br/>pre distribúciu %3</strong><br/><br/>Autorské práva 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorské práva 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Poďakovanie: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg a <a href="https://www.transifex.com/calamares/calamares/">tím prekladateľov inštalátora Calamares</a>.<br/><br/>Vývoj inštalátora <a href="https://calamares.io/">Calamares</a> je podporovaný spoločnosťou <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Podpora distribúcie %1 diff --git a/lang/calamares_sl.ts b/lang/calamares_sl.ts index c45992309..47eae63c9 100644 --- a/lang/calamares_sl.ts +++ b/lang/calamares_sl.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support diff --git a/lang/calamares_sq.ts b/lang/calamares_sq.ts index 50c23408f..78e9aa546 100644 --- a/lang/calamares_sq.ts +++ b/lang/calamares_sq.ts @@ -2571,7 +2571,7 @@ Përfundim: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Të drejta Kopjimi 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Të drejta Kopjimi 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Falënderime për: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg dhe <a href="https://www.transifex.com/calamares/calamares/">ekipin e përkthyesve të Calamares-it</a>.<br/><br/>Zhvillimi i <a href="https://calamares.io/">Calamares</a> sponsorizohet nga <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Asistencë %1 diff --git a/lang/calamares_sr.ts b/lang/calamares_sr.ts index fb1ae14c1..6db62432d 100644 --- a/lang/calamares_sr.ts +++ b/lang/calamares_sr.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support %1 подршка diff --git a/lang/calamares_sr@latin.ts b/lang/calamares_sr@latin.ts index 6ce582ccb..00598c6d8 100644 --- a/lang/calamares_sr@latin.ts +++ b/lang/calamares_sr@latin.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support diff --git a/lang/calamares_sv.ts b/lang/calamares_sv.ts index bae408a94..34d46b72a 100644 --- a/lang/calamares_sv.ts +++ b/lang/calamares_sv.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support %1-support diff --git a/lang/calamares_th.ts b/lang/calamares_th.ts index d6bd7d93d..0ee1821cb 100644 --- a/lang/calamares_th.ts +++ b/lang/calamares_th.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support diff --git a/lang/calamares_tr_TR.ts b/lang/calamares_tr_TR.ts index f15b4a018..1903c9825 100644 --- a/lang/calamares_tr_TR.ts +++ b/lang/calamares_tr_TR.ts @@ -2576,7 +2576,7 @@ Sistem güç kaynağına bağlı değil. <h1>%1</h1><br/><strong>%2<br/>için %3</strong><br/><br/>Telif Hakkı 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Telif Hakkı 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Teşekkürler: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg ve <a href="https://www.transifex.com/calamares/calamares/">Calamares çeviri takımı için</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> gelişim sponsoru <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Özgür Yazılım. - + %1 support %1 destek diff --git a/lang/calamares_uk.ts b/lang/calamares_uk.ts index ec79a0d0e..78af91c36 100644 --- a/lang/calamares_uk.ts +++ b/lang/calamares_uk.ts @@ -2568,7 +2568,7 @@ Output: - + %1 support Підтримка %1 diff --git a/lang/calamares_ur.ts b/lang/calamares_ur.ts index b4c84f7b0..5e2658784 100644 --- a/lang/calamares_ur.ts +++ b/lang/calamares_ur.ts @@ -2567,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_uz.ts b/lang/calamares_uz.ts index c97923e8b..1510ebcb2 100644 --- a/lang/calamares_uz.ts +++ b/lang/calamares_uz.ts @@ -2567,7 +2567,7 @@ Output: - + %1 support diff --git a/lang/calamares_zh_CN.ts b/lang/calamares_zh_CN.ts index 50e499cfd..b0f5f7ea1 100644 --- a/lang/calamares_zh_CN.ts +++ b/lang/calamares_zh_CN.ts @@ -185,7 +185,7 @@ &Install - + 安装(&I) @@ -1816,7 +1816,7 @@ The installer will quit and all changes will be lost. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + 请选择一个 KDE Plasma 桌面外观,可以忽略此步骤并在系统安装完成后配置外观。点击一个外观后可以实时预览效果。 @@ -2342,7 +2342,7 @@ Output: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -2573,7 +2573,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>特别感谢:Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg 及 <a href="https://www.transifex.com/calamares/calamares/">Calamares 翻译团队</a>。<br/><br/><a href="https://calamares.io/">Calamares</a> 的开发由 <br/><a href="http://www.blue-systems.com/">Blue Systems</a> 赞助。 - + %1 support %1 的支持信息 diff --git a/lang/calamares_zh_TW.ts b/lang/calamares_zh_TW.ts index 72cbc45eb..64a32fb14 100644 --- a/lang/calamares_zh_TW.ts +++ b/lang/calamares_zh_TW.ts @@ -2571,7 +2571,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>為 %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>感謝:Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg 與 <a href="https://www.transifex.com/calamares/calamares/">Calamares 翻譯團隊</a>。<br/><br/><a href="https://calamares.io/">Calamares</a> 開發由 <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software 贊助。 - + %1 support %1 支援 From 5e6cced5221f71ea3c8153fca8e36841fb30bda4 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 10 May 2018 05:44:20 -0400 Subject: [PATCH 130/385] i18n: [desktop] Automatic merge of Transifex translations --- calamares.desktop | 76 +++++++++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/calamares.desktop b/calamares.desktop index 218a84b74..dc3e17eaf 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -12,135 +12,145 @@ Terminal=false StartupNotify=true Categories=Qt;System; X-AppStream-Ignore=true -Name[bg]=Calamares + +Name[ar]=نظام التثبيت Icon[bg]=calamares GenericName[bg]=Системен Инсталатор Comment[bg]=Calamares — Системен Инсталатор -Name[ca]=Calamares +Name[bg]=Инсталирай система Icon[ca]=calamares GenericName[ca]=Instal·lador de sistema Comment[ca]=Calamares — Instal·lador de sistema -Name[da]=Calamares +Name[ca]=Instal·la el sistema Icon[da]=calamares GenericName[da]=Systeminstallationsprogram Comment[da]=Calamares — Systeminstallationsprogram -Name[de]=Calamares +Name[da]=Installér system Icon[de]=calamares GenericName[de]=Installation des Betriebssystems Comment[de]=Calamares - Installation des Betriebssystems -Name[el]=Calamares +Name[de]=System installieren Icon[el]=calamares GenericName[el]=Εγκατάσταση συστήματος Comment[el]=Calamares — Εγκατάσταση συστήματος -Name[en_GB]=Calamares +Name[el]=Εγκατάσταση συστήματος Icon[en_GB]=calamares GenericName[en_GB]=System Installer Comment[en_GB]=Calamares — System Installer -Name[es]=Calamares +Name[en_GB]=Install System Icon[es]=calamares GenericName[es]=Instalador del Sistema Comment[es]=Calamares — Instalador del Sistema -Name[fr]=Calamares +Name[es]=Instalar Sistema +Name[eu]=Sistema instalatu +Name[es_PR]=Instalar el sistema Icon[fr]=calamares GenericName[fr]=Installateur système Comment[fr]=Calamares - Installateur système -Name[he]=קלמארס +Name[fr]=Installer le système +Name[gl]=Instalación do Sistema Icon[he]=קלמארס GenericName[he]=אשף התקנה Comment[he]=קלמארס - אשף התקנה -Name[hi]=Calamares Icon[hi]=calamares GenericName[hi]=सिस्टम इंस्टॉलर Comment[hi]=Calamares — सिस्टम इंस्टॉलर -Name[hr]=Calamares Icon[hr]=calamares GenericName[hr]=Instalacija sustava Comment[hr]=Calamares — Instalacija sustava -Name[hu]=Calamares +Name[hr]=Instaliraj sustav Icon[hu]=calamares GenericName[hu]=Rendszer Telepítő Comment[hu]=Calamares — Rendszer Telepítő -Name[id]=Calamares +Name[hu]=Rendszer telepítése Icon[id]=calamares GenericName[id]=Pemasang Comment[id]=Calamares — Pemasang Sistem -Name[is]=Calamares +Name[id]=Instal Sistem Icon[is]=calamares GenericName[is]=Kerfis uppsetning Comment[is]=Calamares — Kerfis uppsetning -Name[cs_CZ]=Calamares +Name[is]=Setja upp kerfið Icon[cs_CZ]=calamares GenericName[cs_CZ]=Instalátor systému Comment[cs_CZ]=Calamares – instalátor operačních systémů -Name[ja]=Calamares +Name[cs_CZ]=Nainstalovat Icon[ja]=calamares GenericName[ja]=システムインストーラー Comment[ja]=Calamares — システムインストーラー -Name[lt]=Calamares +Name[ja]=システムをインストール Icon[lt]=calamares GenericName[lt]=Sistemos diegimas į kompiuterį Comment[lt]=Calamares — Sistemos diegimo programa -Name[it_IT]=Calamares +Name[lt]=Įdiegti Sistemą Icon[it_IT]=calamares GenericName[it_IT]=Programma di installazione Comment[it_IT]=Calamares — Installare il Sistema -Name[nb]=Calamares +Name[it_IT]=Installa il Sistema Icon[nb]=calamares GenericName[nb]=Systeminstallatør Comment[nb]=Calamares-systeminstallatør -Name[nl]=Calamares +Name[nb]=Installer System Icon[nl]=calamares GenericName[nl]=Installatieprogramma Comment[nl]=Calamares — Installatieprogramma -Name[pl]=Calamares +Name[nl]=Installeer systeem Icon[pl]=calamares GenericName[pl]=Instalator systemu Comment[pl]=Calamares — Instalator systemu -Name[pt_BR]=Calamares +Name[pl]=Zainstaluj system Icon[pt_BR]=calamares GenericName[pt_BR]=Instalador de Sistema Comment[pt_BR]=Calamares — Instalador de Sistema -Name[ro]=Calamares +Name[pt_BR]=Sistema de Instalação Icon[ro]=calamares GenericName[ro]=Instalator de sistem Comment[ro]=Calamares — Instalator de sistem -Name[ru]=Calamares +Name[ro]=Instalează sistemul Icon[ru]=calamares GenericName[ru]=Установщик системы Comment[ru]=Calamares - Установщик системы -Name[sk]=Calamares +Name[ru]=Установить систему Icon[sk]=calamares GenericName[sk]=Inštalátor systému Comment[sk]=Calamares — Inštalátor systému -Name[sq]=Calamares +Name[sk]=Inštalovať systém +Name[sl]=Namesti sistem Icon[sq]=calamares GenericName[sq]=Instalues Sistemi Comment[sq]=Calamares — Instalues Sistemi -Name[fi_FI]=Calamares +Name[sq]=Instalo Sistemin Icon[fi_FI]=calamares GenericName[fi_FI]=Järjestelmän Asennusohjelma Comment[fi_FI]=Calamares — Järjestelmän Asentaja -Name[sv]=Calamares +Name[fi_FI]=Asenna Järjestelmä +Name[sr@latin]=Instaliraj sistem +Name[sr]=Инсталирај систем Icon[sv]=calamares GenericName[sv]=Systeminstallerare Comment[sv]=Calamares — Systeminstallerare -Name[zh_CN]=Calamares +Name[sv]=Installera system +Name[th]=ติดตั้งระบบ +Name[uk]=Встановити Систему Icon[zh_CN]=calamares GenericName[zh_CN]=系统安装程序 Comment[zh_CN]=Calamares — 系统安装程序 -Name[zh_TW]=Calamares +Name[zh_CN]=安装系统 Icon[zh_TW]=calamares GenericName[zh_TW]=系統安裝程式 Comment[zh_TW]=Calamares ── 系統安裝程式 -Name[ast]=Calamares +Name[zh_TW]=安裝系統 Icon[ast]=calamares GenericName[ast]=Instalador del sistema Comment[ast]=Calamares — Instalador del sistema -Name[pt_PT]=Calamares +Name[ast]=Instalar sistema +Name[es_MX]=Instalar el Sistema Icon[pt_PT]=calamares GenericName[pt_PT]=Instalador de Sistema Comment[pt_PT]=Calamares - Instalador de Sistema -Name[tr_TR]=Calamares +Name[pt_PT]=Instalar Sistema +Name[es_ES]=Instalar el sistema Icon[tr_TR]=calamares GenericName[tr_TR]=Sistem Yükleyici Comment[tr_TR]=Calamares — Sistem Yükleyici +Name[tr_TR]=Sistemi Yükle From 4723f70503073e8b63d5c34f9d4a90d8341bd571 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 10 May 2018 05:44:22 -0400 Subject: [PATCH 131/385] i18n: [python] Automatic merge of Transifex translations --- lang/python.pot | 2 +- lang/python/ar/LC_MESSAGES/python.mo | Bin 503 -> 503 bytes lang/python/ar/LC_MESSAGES/python.po | 2 +- lang/python/ast/LC_MESSAGES/python.mo | Bin 668 -> 668 bytes lang/python/ast/LC_MESSAGES/python.po | 2 +- lang/python/bg/LC_MESSAGES/python.mo | Bin 894 -> 894 bytes lang/python/bg/LC_MESSAGES/python.po | 2 +- lang/python/ca/LC_MESSAGES/python.mo | Bin 1178 -> 1178 bytes lang/python/ca/LC_MESSAGES/python.po | 2 +- lang/python/cs_CZ/LC_MESSAGES/python.mo | Bin 1336 -> 1336 bytes lang/python/cs_CZ/LC_MESSAGES/python.po | 2 +- lang/python/da/LC_MESSAGES/python.mo | Bin 1115 -> 1115 bytes lang/python/da/LC_MESSAGES/python.po | 6 +++--- lang/python/de/LC_MESSAGES/python.mo | Bin 1059 -> 1059 bytes lang/python/de/LC_MESSAGES/python.po | 2 +- lang/python/el/LC_MESSAGES/python.mo | Bin 568 -> 568 bytes lang/python/el/LC_MESSAGES/python.po | 2 +- lang/python/en_GB/LC_MESSAGES/python.mo | Bin 444 -> 444 bytes lang/python/en_GB/LC_MESSAGES/python.po | 2 +- lang/python/es/LC_MESSAGES/python.mo | Bin 1075 -> 1075 bytes lang/python/es/LC_MESSAGES/python.po | 2 +- lang/python/es_MX/LC_MESSAGES/python.mo | Bin 436 -> 436 bytes lang/python/es_MX/LC_MESSAGES/python.po | 2 +- lang/python/es_PR/LC_MESSAGES/python.mo | Bin 441 -> 441 bytes lang/python/es_PR/LC_MESSAGES/python.po | 2 +- lang/python/et/LC_MESSAGES/python.mo | Bin 422 -> 422 bytes lang/python/et/LC_MESSAGES/python.po | 2 +- lang/python/eu/LC_MESSAGES/python.mo | Bin 420 -> 420 bytes lang/python/eu/LC_MESSAGES/python.po | 2 +- lang/python/fa/LC_MESSAGES/python.mo | Bin 414 -> 414 bytes lang/python/fa/LC_MESSAGES/python.po | 2 +- lang/python/fi_FI/LC_MESSAGES/python.mo | Bin 437 -> 437 bytes lang/python/fi_FI/LC_MESSAGES/python.po | 2 +- lang/python/fr/LC_MESSAGES/python.mo | Bin 1193 -> 1193 bytes lang/python/fr/LC_MESSAGES/python.po | 2 +- lang/python/fr_CH/LC_MESSAGES/python.mo | Bin 439 -> 439 bytes lang/python/fr_CH/LC_MESSAGES/python.po | 2 +- lang/python/gl/LC_MESSAGES/python.mo | Bin 422 -> 422 bytes lang/python/gl/LC_MESSAGES/python.po | 2 +- lang/python/gu/LC_MESSAGES/python.mo | Bin 422 -> 422 bytes lang/python/gu/LC_MESSAGES/python.po | 2 +- lang/python/he/LC_MESSAGES/python.mo | Bin 1144 -> 1144 bytes lang/python/he/LC_MESSAGES/python.po | 2 +- lang/python/hi/LC_MESSAGES/python.mo | Bin 1363 -> 1363 bytes lang/python/hi/LC_MESSAGES/python.po | 2 +- lang/python/hr/LC_MESSAGES/python.mo | Bin 1272 -> 1272 bytes lang/python/hr/LC_MESSAGES/python.po | 2 +- lang/python/hu/LC_MESSAGES/python.mo | Bin 844 -> 844 bytes lang/python/hu/LC_MESSAGES/python.po | 2 +- lang/python/id/LC_MESSAGES/python.mo | Bin 987 -> 1082 bytes lang/python/id/LC_MESSAGES/python.po | 6 +++--- lang/python/is/LC_MESSAGES/python.mo | Bin 1066 -> 1066 bytes lang/python/is/LC_MESSAGES/python.po | 2 +- lang/python/it_IT/LC_MESSAGES/python.mo | Bin 1162 -> 1162 bytes lang/python/it_IT/LC_MESSAGES/python.po | 2 +- lang/python/ja/LC_MESSAGES/python.mo | Bin 1063 -> 1063 bytes lang/python/ja/LC_MESSAGES/python.po | 2 +- lang/python/kk/LC_MESSAGES/python.mo | Bin 413 -> 413 bytes lang/python/kk/LC_MESSAGES/python.po | 2 +- lang/python/kn/LC_MESSAGES/python.mo | Bin 414 -> 414 bytes lang/python/kn/LC_MESSAGES/python.po | 2 +- lang/python/lo/LC_MESSAGES/python.mo | Bin 410 -> 410 bytes lang/python/lo/LC_MESSAGES/python.po | 2 +- lang/python/lt/LC_MESSAGES/python.mo | Bin 1259 -> 1259 bytes lang/python/lt/LC_MESSAGES/python.po | 2 +- lang/python/mr/LC_MESSAGES/python.mo | Bin 421 -> 421 bytes lang/python/mr/LC_MESSAGES/python.po | 2 +- lang/python/nb/LC_MESSAGES/python.mo | Bin 616 -> 616 bytes lang/python/nb/LC_MESSAGES/python.po | 2 +- lang/python/nl/LC_MESSAGES/python.mo | Bin 658 -> 658 bytes lang/python/nl/LC_MESSAGES/python.po | 2 +- lang/python/pl/LC_MESSAGES/python.mo | Bin 1362 -> 1434 bytes lang/python/pl/LC_MESSAGES/python.po | 4 ++-- lang/python/pt_BR/LC_MESSAGES/python.mo | Bin 1177 -> 1177 bytes lang/python/pt_BR/LC_MESSAGES/python.po | 2 +- lang/python/pt_PT/LC_MESSAGES/python.mo | Bin 1173 -> 1173 bytes lang/python/pt_PT/LC_MESSAGES/python.po | 2 +- lang/python/ro/LC_MESSAGES/python.mo | Bin 1277 -> 1277 bytes lang/python/ro/LC_MESSAGES/python.po | 2 +- lang/python/ru/LC_MESSAGES/python.mo | Bin 740 -> 740 bytes lang/python/ru/LC_MESSAGES/python.po | 2 +- lang/python/sk/LC_MESSAGES/python.mo | Bin 1239 -> 1319 bytes lang/python/sk/LC_MESSAGES/python.po | 4 ++-- lang/python/sl/LC_MESSAGES/python.mo | Bin 475 -> 475 bytes lang/python/sl/LC_MESSAGES/python.po | 2 +- lang/python/sq/LC_MESSAGES/python.mo | Bin 1148 -> 1148 bytes lang/python/sq/LC_MESSAGES/python.po | 2 +- lang/python/sr/LC_MESSAGES/python.mo | Bin 495 -> 495 bytes lang/python/sr/LC_MESSAGES/python.po | 2 +- lang/python/sr@latin/LC_MESSAGES/python.mo | Bin 517 -> 517 bytes lang/python/sr@latin/LC_MESSAGES/python.po | 2 +- lang/python/sv/LC_MESSAGES/python.mo | Bin 421 -> 421 bytes lang/python/sv/LC_MESSAGES/python.po | 2 +- lang/python/th/LC_MESSAGES/python.mo | Bin 411 -> 411 bytes lang/python/th/LC_MESSAGES/python.po | 2 +- lang/python/tr_TR/LC_MESSAGES/python.mo | Bin 1192 -> 1192 bytes lang/python/tr_TR/LC_MESSAGES/python.po | 2 +- lang/python/uk/LC_MESSAGES/python.mo | Bin 497 -> 497 bytes lang/python/uk/LC_MESSAGES/python.po | 2 +- lang/python/ur/LC_MESSAGES/python.mo | Bin 418 -> 418 bytes lang/python/ur/LC_MESSAGES/python.po | 2 +- lang/python/uz/LC_MESSAGES/python.mo | Bin 412 -> 412 bytes lang/python/uz/LC_MESSAGES/python.po | 2 +- lang/python/zh_CN/LC_MESSAGES/python.mo | Bin 1033 -> 1101 bytes lang/python/zh_CN/LC_MESSAGES/python.po | 6 +++--- lang/python/zh_TW/LC_MESSAGES/python.mo | Bin 1126 -> 1126 bytes lang/python/zh_TW/LC_MESSAGES/python.po | 2 +- 107 files changed, 62 insertions(+), 62 deletions(-) diff --git a/lang/python.pot b/lang/python.pot index 4165caae3..ca832f242 100644 --- a/lang/python.pot +++ b/lang/python.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/lang/python/ar/LC_MESSAGES/python.mo b/lang/python/ar/LC_MESSAGES/python.mo index 71edcd9adb5f4866ee88a55ea4ff1656aa9bc1b5..a3ac141799c9b3fafaeb2fc97da92b5fc180f526 100644 GIT binary patch delta 21 ccmey){GEA1FPEvVfw_W#rIn${#_0)+08yg`wg3PC delta 21 ccmey){GEA1FPDj~p|OIYft8WP#_0)+08vl|uK)l5 diff --git a/lang/python/ar/LC_MESSAGES/python.po b/lang/python/ar/LC_MESSAGES/python.po index 34249b85c..5df360e64 100644 --- a/lang/python/ar/LC_MESSAGES/python.po +++ b/lang/python/ar/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Arabic (https://www.transifex.com/calamares/teams/20061/ar/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/ast/LC_MESSAGES/python.mo b/lang/python/ast/LC_MESSAGES/python.mo index 1fa6899637fa214c20ba47bdf2ff25d331c4161f..5ed7847b4cf8e9bf404b13dab936cf4eb9571baa 100644 GIT binary patch delta 23 ecmbQkI)`-wBO{lou7SCNfu)t9$!2cGiHrb3k_ABk delta 23 ecmbQkI)`-wBO{lIuA#Alp@Ef=#b$2CiHrb3I0ZTY diff --git a/lang/python/ast/LC_MESSAGES/python.po b/lang/python/ast/LC_MESSAGES/python.po index b422dcbd7..1875c215c 100644 --- a/lang/python/ast/LC_MESSAGES/python.po +++ b/lang/python/ast/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: enolp , 2017\n" "Language-Team: Asturian (https://www.transifex.com/calamares/teams/20061/ast/)\n" diff --git a/lang/python/bg/LC_MESSAGES/python.mo b/lang/python/bg/LC_MESSAGES/python.mo index fe76600246090106c88ef20310f1fa75d00dca34..102a0fded4ebe204fda75e4146626c62315c5458 100644 GIT binary patch delta 23 ecmeyz_K$6YEhCqyu7SCNfu)t9$!2#(b0z>-2?izr delta 23 ecmeyz_K$6YEhCqSuA#Alp@Ef=#b$R#b0z>+uLd6g diff --git a/lang/python/bg/LC_MESSAGES/python.po b/lang/python/bg/LC_MESSAGES/python.po index f677dd63c..b7c648590 100644 --- a/lang/python/bg/LC_MESSAGES/python.po +++ b/lang/python/bg/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Georgi Georgiev , 2018\n" "Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n" diff --git a/lang/python/ca/LC_MESSAGES/python.mo b/lang/python/ca/LC_MESSAGES/python.mo index 43df96ea658b77cedc4cac7333a92e01298de49f..7fc02383b59fc5f52e81c4d8843db4e933f470d7 100644 GIT binary patch delta 23 ecmbQmIg4|HHWQbru7SCNfu)t9$!1fgR3-pMI|Xn6 delta 23 ecmbQmIg4|HHWQbLuA#Alp@Ef=#b#5cR3-pL;RR^` diff --git a/lang/python/ca/LC_MESSAGES/python.po b/lang/python/ca/LC_MESSAGES/python.po index 33992c72f..0dba18452 100644 --- a/lang/python/ca/LC_MESSAGES/python.po +++ b/lang/python/ca/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Davidmp , 2017\n" "Language-Team: Catalan (https://www.transifex.com/calamares/teams/20061/ca/)\n" diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.mo b/lang/python/cs_CZ/LC_MESSAGES/python.mo index 28b0810dbdc74be96daff2f99b19d0a151fa15bf..5e972ad32f2d335c9ef7bc389646c0e263e2883b 100644 GIT binary patch delta 23 ecmdnNwS#MeHWQbru7SCNfu)t9$!1d~W@Z3N$^}gT delta 23 ecmdnNwS#MeHWQbLuA#Alp@Ef=#b#3`W@Z3Na0NyH diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.po b/lang/python/cs_CZ/LC_MESSAGES/python.po index 6ff062e32..93440926c 100644 --- a/lang/python/cs_CZ/LC_MESSAGES/python.po +++ b/lang/python/cs_CZ/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Pavel Borecki , 2017\n" "Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n" diff --git a/lang/python/da/LC_MESSAGES/python.mo b/lang/python/da/LC_MESSAGES/python.mo index 1618fc2d2e88aeaba25637afbec47f2ba0e01230..0560de2c51b333fb20bef36e0aaff02e0c2ef06f 100644 GIT binary patch delta 85 zcmcc3ahqd8jjAvM1H)8i1_mJ@y%I8JcW1 dWlCk_I=r$-Avdu&J2P+cQs#cfqRA#K>HylM6O;e| delta 84 zcmcc3ahqd8jj9L(1H)8i1_mJ@y$VPh0qMO!S_?>j0MeR3T6*KcE=DdBT|;99Ljx-# fi_NA?sf^sIMX3t8iN)EOd8w0^F!xV3VNnMFyk8RG diff --git a/lang/python/da/LC_MESSAGES/python.po b/lang/python/da/LC_MESSAGES/python.po index d0b818364..7b1684b81 100644 --- a/lang/python/da/LC_MESSAGES/python.po +++ b/lang/python/da/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dan Johansen (Strit), 2017\n" "Language-Team: Danish (https://www.transifex.com/calamares/teams/20061/da/)\n" @@ -32,7 +32,7 @@ msgstr "Dummy python-trin {}" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "Generere maskine-id." +msgstr "Generér maskin-id." #: src/modules/packages/main.py:61 #, python-format @@ -55,4 +55,4 @@ msgstr[1] "Installerer %(num)d pakker." msgid "Removing one package." msgid_plural "Removing %(num)d packages." msgstr[0] "Fjerner én pakke." -msgstr[1] "Fjerne %(num)d pakker." +msgstr[1] "Fjerner %(num)d pakker." diff --git a/lang/python/de/LC_MESSAGES/python.mo b/lang/python/de/LC_MESSAGES/python.mo index d3b96df6bf4b18bf13b2f8bd04376602987453aa..e37e01188d2aa4d76e5bcc6185d50a700aad1536 100644 GIT binary patch delta 23 ecmZ3?v6y4SUq&udT?2Ck14}DIlg;c*GE4wf1_jyx delta 23 ecmZ3?v6y4SUq&tyT|;99Ljx-#i_PpzGE4wetOe5m diff --git a/lang/python/de/LC_MESSAGES/python.po b/lang/python/de/LC_MESSAGES/python.po index b928ad872..dbb878864 100644 --- a/lang/python/de/LC_MESSAGES/python.po +++ b/lang/python/de/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dirk Hein , 2017\n" "Language-Team: German (https://www.transifex.com/calamares/teams/20061/de/)\n" diff --git a/lang/python/el/LC_MESSAGES/python.mo b/lang/python/el/LC_MESSAGES/python.mo index 24e6a05c9f5c5cd5d6056853e443a15de3637f00..a163619097570b9ec98db7e143325a2e56526605 100644 GIT binary patch delta 21 ccmdnNvV b}mz019JrfODjW@jR(sa0ZTmwr2qf` delta 21 ccmdnNvV b}kcLLt_O)11lqojR(sa0ZQryo&W#< diff --git a/lang/python/el/LC_MESSAGES/python.po b/lang/python/el/LC_MESSAGES/python.po index 0b47753d5..3bf60a4b0 100644 --- a/lang/python/el/LC_MESSAGES/python.po +++ b/lang/python/el/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Efstathios Iosifidis , 2017\n" "Language-Team: Greek (https://www.transifex.com/calamares/teams/20061/el/)\n" diff --git a/lang/python/en_GB/LC_MESSAGES/python.mo b/lang/python/en_GB/LC_MESSAGES/python.mo index e096318f734d72c0d22242a8b78e8e5547cb16d8..9edf0da87a277565819fecc376b206a36610ac91 100644 GIT binary patch delta 21 ccmdnPyoY&0FPEvVfw_W#rIn${#_6hz07vx(1poj5 delta 21 ccmdnPyoY&0FPDj~p|OIYft8WP#_6hz07s$){r~^~ diff --git a/lang/python/en_GB/LC_MESSAGES/python.po b/lang/python/en_GB/LC_MESSAGES/python.po index c2cc3c9bc..80306ed8b 100644 --- a/lang/python/en_GB/LC_MESSAGES/python.po +++ b/lang/python/en_GB/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: English (United Kingdom) (https://www.transifex.com/calamares/teams/20061/en_GB/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/es/LC_MESSAGES/python.mo b/lang/python/es/LC_MESSAGES/python.mo index 4e2a2c5a4b57f686607fd2b2d4ae18d836322194..e8321006a41ede1b0c428e0fa1f41a91f9713f4d 100644 GIT binary patch delta 23 ecmdnYv6*ATUq&udT?2Ck14}DIlg;c*I!pjp<^~D? delta 23 ecmdnYv6*ATUq&tyT|;99Ljx-#i_PpzI!pjpj0OV$ diff --git a/lang/python/es/LC_MESSAGES/python.po b/lang/python/es/LC_MESSAGES/python.po index 2d2926849..e3a18bba4 100644 --- a/lang/python/es/LC_MESSAGES/python.po +++ b/lang/python/es/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: strel, 2017\n" "Language-Team: Spanish (https://www.transifex.com/calamares/teams/20061/es/)\n" diff --git a/lang/python/es_MX/LC_MESSAGES/python.mo b/lang/python/es_MX/LC_MESSAGES/python.mo index 1530e5d4ca2724733e1439c899f468784d75a65a..e3afad54e612a9cbcb059cda75487367e114e3a9 100644 GIT binary patch delta 21 ccmdnOyoGr}FPEvVfw_W#rIn${#_6(*07j(+?EnA( delta 21 ccmdnOyoGr}FPDj~p|OIYft8WP#_6(*07g;;<^TWy diff --git a/lang/python/es_MX/LC_MESSAGES/python.po b/lang/python/es_MX/LC_MESSAGES/python.po index 8c6f79cf6..a06559edf 100644 --- a/lang/python/es_MX/LC_MESSAGES/python.po +++ b/lang/python/es_MX/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Spanish (Mexico) (https://www.transifex.com/calamares/teams/20061/es_MX/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/es_PR/LC_MESSAGES/python.mo b/lang/python/es_PR/LC_MESSAGES/python.mo index 354206c3370a70b6dcf1d5a86d9ae85f8c23a1d3..4c9807b54ce629eaaf625f18c9fcef23f472e9e5 100644 GIT binary patch delta 21 ccmdnVypwrCFPEvVfw_W#rIn${#_39o07rKP`~Uy| delta 21 ccmdnVypwrCFPDj~p|OIYft8WP#_39o07oPR^#A|> diff --git a/lang/python/es_PR/LC_MESSAGES/python.po b/lang/python/es_PR/LC_MESSAGES/python.po index 97de6180b..1a934f1a7 100644 --- a/lang/python/es_PR/LC_MESSAGES/python.po +++ b/lang/python/es_PR/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Spanish (Puerto Rico) (https://www.transifex.com/calamares/teams/20061/es_PR/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/et/LC_MESSAGES/python.mo b/lang/python/et/LC_MESSAGES/python.mo index 7ff40c9994a9af6784087f6f3a4c552135c8c52f..9cd061f07577742de42a4ab2f9c19e195832f7de 100644 GIT binary patch delta 21 ccmZ3+yo`B5FPEvVfw_W#rIn${#_9Zw07O{@!vFvP delta 21 ccmZ3+yo`B5FPDj~p|OIYft8WP#_9Zw07M1_yZ`_I diff --git a/lang/python/et/LC_MESSAGES/python.po b/lang/python/et/LC_MESSAGES/python.po index fdf378c0d..154377948 100644 --- a/lang/python/et/LC_MESSAGES/python.po +++ b/lang/python/et/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Estonian (https://www.transifex.com/calamares/teams/20061/et/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/eu/LC_MESSAGES/python.mo b/lang/python/eu/LC_MESSAGES/python.mo index 45d81fc469f16c0103986f064889cafe40138eef..9fd6ba35b395132eb6baa68eee7a67fd831be39d 100644 GIT binary patch delta 21 ccmZ3&yo7l|FPEvVfw_W#rIn${#_7C_07L}^y#N3J delta 21 ccmZ3&yo7l|FPDj~p|OIYft8WP#_7C_07J3`wg3PC diff --git a/lang/python/eu/LC_MESSAGES/python.po b/lang/python/eu/LC_MESSAGES/python.po index 0398ff619..fa905f0ff 100644 --- a/lang/python/eu/LC_MESSAGES/python.po +++ b/lang/python/eu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Basque (https://www.transifex.com/calamares/teams/20061/eu/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/fa/LC_MESSAGES/python.mo b/lang/python/fa/LC_MESSAGES/python.mo index f22427a2a452369d6032cb298dcda770ae05d0d0..d3bfe23bb59844ddedc4fc9e41d695656fd17976 100644 GIT binary patch delta 21 ccmbQoJdb%oFPEvVfw_W#rIn${#_8;g07D4{s{jB1 delta 21 ccmbQoJdb%oFPDj~p|OIYft8WP#_8;g07A9}qyPW_ diff --git a/lang/python/fa/LC_MESSAGES/python.po b/lang/python/fa/LC_MESSAGES/python.po index 202b13358..d3b0b1570 100644 --- a/lang/python/fa/LC_MESSAGES/python.po +++ b/lang/python/fa/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Persian (https://www.transifex.com/calamares/teams/20061/fa/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/fi_FI/LC_MESSAGES/python.mo b/lang/python/fi_FI/LC_MESSAGES/python.mo index 85964b41b03504ac66b184d174e7cda4d1e39ae3..978f9a7faaf52b0baf9a93871402de5532e7f612 100644 GIT binary patch delta 21 ccmdnWyp?%EFPEvVfw_W#rIn${#_4j507lOR@Bjb+ delta 21 ccmdnWyp?%EFPDj~p|OIYft8WP#_4j507iTT=>Px# diff --git a/lang/python/fi_FI/LC_MESSAGES/python.po b/lang/python/fi_FI/LC_MESSAGES/python.po index a55aa1cd4..f178a5035 100644 --- a/lang/python/fi_FI/LC_MESSAGES/python.po +++ b/lang/python/fi_FI/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Finnish (Finland) (https://www.transifex.com/calamares/teams/20061/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/fr/LC_MESSAGES/python.mo b/lang/python/fr/LC_MESSAGES/python.mo index 43ce36040d5fd1bf28da71202a8b638d795ef2cf..387872ec2e802ac49b419eccfed6110f2138bf7e 100644 GIT binary patch delta 23 ecmZ3, 2018\n" "Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n" diff --git a/lang/python/fr_CH/LC_MESSAGES/python.mo b/lang/python/fr_CH/LC_MESSAGES/python.mo index 2380f9d348dc7c4b06badf572682523eb61c321b..8bec20b88807dd00b571c7263b42e8509dbb2f72 100644 GIT binary patch delta 21 ccmdnayq$SMFPEvVfw_W#rIn${#_0--07oMQ_5c6? delta 21 ccmdnayq$SMFPDj~p|OIYft8WP#_0--07lRS?*IS* diff --git a/lang/python/fr_CH/LC_MESSAGES/python.po b/lang/python/fr_CH/LC_MESSAGES/python.po index b0bbf3e9d..aa9d518aa 100644 --- a/lang/python/fr_CH/LC_MESSAGES/python.po +++ b/lang/python/fr_CH/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: French (Switzerland) (https://www.transifex.com/calamares/teams/20061/fr_CH/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/gl/LC_MESSAGES/python.mo b/lang/python/gl/LC_MESSAGES/python.mo index 58053670ae830fe0f1c42ce7d0e1cd40f8bde58a..fc2891ed044391c006cfeb4b89c2a066345cd2f0 100644 GIT binary patch delta 21 ccmZ3+yo`B5FPEvVfw_W#rIn${#_9Zw07O{@!vFvP delta 21 ccmZ3+yo`B5FPDj~p|OIYft8WP#_9Zw07M1_yZ`_I diff --git a/lang/python/gl/LC_MESSAGES/python.po b/lang/python/gl/LC_MESSAGES/python.po index 1f4a77e1a..6780990ed 100644 --- a/lang/python/gl/LC_MESSAGES/python.po +++ b/lang/python/gl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Galician (https://www.transifex.com/calamares/teams/20061/gl/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/gu/LC_MESSAGES/python.mo b/lang/python/gu/LC_MESSAGES/python.mo index c34b877ee45a69263fd10004c136f31703b6b7b3..8edd0e5dd3e1ef1c0ef595d676b011d2321daa9f 100644 GIT binary patch delta 21 ccmZ3+yo`B5FPEvVfw_W#rIn${#_9Zw07O{@!vFvP delta 21 ccmZ3+yo`B5FPDj~p|OIYft8WP#_9Zw07M1_yZ`_I diff --git a/lang/python/gu/LC_MESSAGES/python.po b/lang/python/gu/LC_MESSAGES/python.po index 033d91c74..aaa39c5e8 100644 --- a/lang/python/gu/LC_MESSAGES/python.po +++ b/lang/python/gu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Gujarati (https://www.transifex.com/calamares/teams/20061/gu/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/he/LC_MESSAGES/python.mo b/lang/python/he/LC_MESSAGES/python.mo index 6655af6b9001db035dfbb17328a691dd3b5d1297..91f85b447a0438f378151fb1781487368fc27f95 100644 GIT binary patch delta 23 ecmeyt@q=T-Uq&udT?2Ck14}DIlg;c*g-ifsOa|Ei delta 23 ecmeyt@q=T-Uq&tyT|;99Ljx-#i_Ppzg-ifr@&?iX diff --git a/lang/python/he/LC_MESSAGES/python.po b/lang/python/he/LC_MESSAGES/python.po index 85b6008e4..dfb1fa55b 100644 --- a/lang/python/he/LC_MESSAGES/python.po +++ b/lang/python/he/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Eli Shleifer , 2017\n" "Language-Team: Hebrew (https://www.transifex.com/calamares/teams/20061/he/)\n" diff --git a/lang/python/hi/LC_MESSAGES/python.mo b/lang/python/hi/LC_MESSAGES/python.mo index 9ef42cc7f704ddd986e320a616b630f9c5db80d2..c3fec771962d67db6e9bcb153c58e70a984917c1 100644 GIT binary patch delta 23 ecmcc2b(w3!Uq&udT?2Ck14}DIlg;c*KFk1J`vz|S delta 23 ecmcc2b(w3!Uq&tyT|;99Ljx-#i_PpzKFk1Jp$2FG diff --git a/lang/python/hi/LC_MESSAGES/python.po b/lang/python/hi/LC_MESSAGES/python.po index 827c0f92b..cc20688de 100644 --- a/lang/python/hi/LC_MESSAGES/python.po +++ b/lang/python/hi/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Panwar108 , 2018\n" "Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n" diff --git a/lang/python/hr/LC_MESSAGES/python.mo b/lang/python/hr/LC_MESSAGES/python.mo index 89a2888530e5f614e505258261fe7cd606b26df3..d8583ec90d75c40929c4091a305a0214f14b2159 100644 GIT binary patch delta 23 ecmeyt`Ga$VHWQbru7SCNfu)t9$!1fg!%P5I9|np5 delta 23 ecmeyt`Ga$VHWQbLuA#Alp@Ef=#b#5c!%P5H#Rh`_ diff --git a/lang/python/hr/LC_MESSAGES/python.po b/lang/python/hr/LC_MESSAGES/python.po index 3472e3193..72ae3fc35 100644 --- a/lang/python/hr/LC_MESSAGES/python.po +++ b/lang/python/hr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Lovro Kudelić , 2017\n" "Language-Team: Croatian (https://www.transifex.com/calamares/teams/20061/hr/)\n" diff --git a/lang/python/hu/LC_MESSAGES/python.mo b/lang/python/hu/LC_MESSAGES/python.mo index aa5ac26b3992ab30b3fad2da643920c8b933eb53..7106fb16df38dd4a8ceacae41069635d4e6fddd8 100644 GIT binary patch delta 23 ecmX@Zc7|<3IU|>;u7SCNfu)t9$>v7J(~JOBlm^KF delta 23 ecmX@Zc7|<3IU|>euA#Alp@Ef=#pXuF(~JOBItIc3 diff --git a/lang/python/hu/LC_MESSAGES/python.po b/lang/python/hu/LC_MESSAGES/python.po index 3bba56e9b..fee0c1774 100644 --- a/lang/python/hu/LC_MESSAGES/python.po +++ b/lang/python/hu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: miku84, 2017\n" "Language-Team: Hungarian (https://www.transifex.com/calamares/teams/20061/hu/)\n" diff --git a/lang/python/id/LC_MESSAGES/python.mo b/lang/python/id/LC_MESSAGES/python.mo index 94b8af008bcee5a0d9a000983ecd2ecdb6b49936..29c665814a05936f72e9afb1e9589342328e4c61 100644 GIT binary patch delta 344 zcmcc3zKf&&o)F7a1|Z-BVi_P#0b*VtUIWA+@BoMff%qX1ivaOwD9ynL5tjwhCO|QL zAgv9gQ-HJqke&dfMS=7|AiWfbuLH3VkYCHpz#s;a2htJ@3~>z0feap?zyYYlSs<+j z8JbLHXR_DvNGvL1A`cl_5{)rKso_P^Dr>DF;qe&+JLkgP+~5W ze*{Pa^)j#nF)I)QxeRPT%mTz9$ASP8gkoTrc=yTV>x>~>Cc1{k3Wf$&Mi!Gzne2s~ cGx9TwGIJChlTu1^bQFvX49zz$U}|Cn0B+PCVE_OC diff --git a/lang/python/id/LC_MESSAGES/python.po b/lang/python/id/LC_MESSAGES/python.po index 1bb54f6dc..bdd95214c 100644 --- a/lang/python/id/LC_MESSAGES/python.po +++ b/lang/python/id/LC_MESSAGES/python.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Choiril Abdul, 2017\n" +"Last-Translator: Harry Suryapambagya , 2018\n" "Language-Team: Indonesian (https://www.transifex.com/calamares/teams/20061/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,7 +20,7 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Lepaskan sistem berkas." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." diff --git a/lang/python/is/LC_MESSAGES/python.mo b/lang/python/is/LC_MESSAGES/python.mo index a6e7b278e1be496d003c5d0993e04b3344eabddf..1fecd1732f1d98700e916ce8e8f5c804f7410c8e 100644 GIT binary patch delta 23 ecmZ3*v5I5EUq&udT?2Ck14}DIlg;c*%1i)ONCocz delta 23 ecmZ3*v5I5EUq&tyT|;99Ljx-#i_Ppz%1i)N?gi)o diff --git a/lang/python/is/LC_MESSAGES/python.po b/lang/python/is/LC_MESSAGES/python.po index cbae57260..63f563c7a 100644 --- a/lang/python/is/LC_MESSAGES/python.po +++ b/lang/python/is/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kristján Magnússon, 2017\n" "Language-Team: Icelandic (https://www.transifex.com/calamares/teams/20061/is/)\n" diff --git a/lang/python/it_IT/LC_MESSAGES/python.mo b/lang/python/it_IT/LC_MESSAGES/python.mo index eb4ca702328dba7de66ee71ee2124fce1ba9b692..1adb14cb428f2910d86c4e9b6d7d8e1fe5d4804e 100644 GIT binary patch delta 23 ecmeC;?Bd*@&BSG@YhbQmU} delta 23 ecmeC;?Bd*@&BSG*YiO)sXkcYzvDuU, 2018\n" "Language-Team: Italian (Italy) (https://www.transifex.com/calamares/teams/20061/it_IT/)\n" diff --git a/lang/python/ja/LC_MESSAGES/python.mo b/lang/python/ja/LC_MESSAGES/python.mo index 020832689d042f6a43350fe839f0b76b2edff39f..78aba564544168906a0f9323e3d39000b1de413f 100644 GIT binary patch delta 23 ecmZ3^v7BSWUq&udT?2Ck14}DIlg;c*3QPc1z6It0 delta 23 ecmZ3^v7BSWUq&tyT|;99Ljx-#i_Ppz3QPc1WCh;< diff --git a/lang/python/ja/LC_MESSAGES/python.po b/lang/python/ja/LC_MESSAGES/python.po index 3c72a8512..220ce8ac3 100644 --- a/lang/python/ja/LC_MESSAGES/python.po +++ b/lang/python/ja/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Takefumi Nagata, 2017\n" "Language-Team: Japanese (https://www.transifex.com/calamares/teams/20061/ja/)\n" diff --git a/lang/python/kk/LC_MESSAGES/python.mo b/lang/python/kk/LC_MESSAGES/python.mo index 63e596343b8964c1da6393175f7f32dae0b0dd62..607fd9186aabcf26fc1c5d07cad24d27261ff8f3 100644 GIT binary patch delta 21 ccmbQsJePSwFPEvVfw_W#rIn${#_4Q~07Bmdr~m)} delta 21 ccmbQsJePSwFPDj~p|OIYft8WP#_4Q~078rfp#T5? diff --git a/lang/python/kk/LC_MESSAGES/python.po b/lang/python/kk/LC_MESSAGES/python.po index 09792c7f5..1d6a2d9f4 100644 --- a/lang/python/kk/LC_MESSAGES/python.po +++ b/lang/python/kk/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Kazakh (https://www.transifex.com/calamares/teams/20061/kk/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/kn/LC_MESSAGES/python.mo b/lang/python/kn/LC_MESSAGES/python.mo index 146ef4af1c8eb2b6b49ad9217f4cd5243137373a..3672cb7bc11b726d1d9a859cddad25f0fde1fa8f 100644 GIT binary patch delta 21 ccmbQoJdb%oFPEvVfw_W#rIn${#_8;g07D4{s{jB1 delta 21 ccmbQoJdb%oFPDj~p|OIYft8WP#_8;g07A9}qyPW_ diff --git a/lang/python/kn/LC_MESSAGES/python.po b/lang/python/kn/LC_MESSAGES/python.po index efb7d742c..f29a41c74 100644 --- a/lang/python/kn/LC_MESSAGES/python.po +++ b/lang/python/kn/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Kannada (https://www.transifex.com/calamares/teams/20061/kn/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/lo/LC_MESSAGES/python.mo b/lang/python/lo/LC_MESSAGES/python.mo index 0cf26c52de68d1c267429e24592b209c70f7117a..c4ef7a6c088c159a990493f3ad5936507fcd3115 100644 GIT binary patch delta 21 ccmbQmJd1fkFPEvVfw_W#rIn${#_7zA0778}p8x;= delta 21 ccmbQmJd1fkFPDj~p|OIYft8WP#_7zA074E0m;e9( diff --git a/lang/python/lo/LC_MESSAGES/python.po b/lang/python/lo/LC_MESSAGES/python.po index cf540eaf6..ba0904bfa 100644 --- a/lang/python/lo/LC_MESSAGES/python.po +++ b/lang/python/lo/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Lao (https://www.transifex.com/calamares/teams/20061/lo/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/lt/LC_MESSAGES/python.mo b/lang/python/lt/LC_MESSAGES/python.mo index 5fd940681c8368565ff93c5d349c03900dbeb5ad..f2f75376bebacefd95f38ede5d551993afc4db48 100644 GIT binary patch delta 23 ecmaFO`I>WsHWQbru7SCNfu)t9$!1fgZA<`E$p&Kp delta 23 ecmaFO`I>WsHWQbLuA#Alp@Ef=#b#5cZA<`EZw6cd diff --git a/lang/python/lt/LC_MESSAGES/python.po b/lang/python/lt/LC_MESSAGES/python.po index 4d25ae661..2be3f9487 100644 --- a/lang/python/lt/LC_MESSAGES/python.po +++ b/lang/python/lt/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Moo, 2017\n" "Language-Team: Lithuanian (https://www.transifex.com/calamares/teams/20061/lt/)\n" diff --git a/lang/python/mr/LC_MESSAGES/python.mo b/lang/python/mr/LC_MESSAGES/python.mo index 13215a349635a3ed28f8e95e3a4f018c109787d2..531e39aaf3f8c021e9977a94c894fab568558a21 100644 GIT binary patch delta 21 ccmZ3=yp(xDFPEvVfw_W#rIn${#_4>F07NeZzyJUM delta 21 ccmZ3=yp(xDFPDj~p|OIYft8WP#_4>F07Kjbxc~qF diff --git a/lang/python/mr/LC_MESSAGES/python.po b/lang/python/mr/LC_MESSAGES/python.po index a73df6af2..fd8348ee2 100644 --- a/lang/python/mr/LC_MESSAGES/python.po +++ b/lang/python/mr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Marathi (https://www.transifex.com/calamares/teams/20061/mr/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/nb/LC_MESSAGES/python.mo b/lang/python/nb/LC_MESSAGES/python.mo index 549c1b74ae75f42bc08ac715853e437a448b192d..3a0d9ad2c94a4ec57a74bf55b3cee118cd472d02 100644 GIT binary patch delta 21 ccmaFC@`7c;9WGN{19JrfODjW@jnA4G0acO*S^xk5 delta 21 ccmaFC@`7c;9WE1HLt_O)11lqojnA4G0aZT-Qvd(} diff --git a/lang/python/nb/LC_MESSAGES/python.po b/lang/python/nb/LC_MESSAGES/python.po index 53a731d8b..088612d62 100644 --- a/lang/python/nb/LC_MESSAGES/python.po +++ b/lang/python/nb/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Tyler Moss , 2017\n" "Language-Team: Norwegian Bokmål (https://www.transifex.com/calamares/teams/20061/nb/)\n" diff --git a/lang/python/nl/LC_MESSAGES/python.mo b/lang/python/nl/LC_MESSAGES/python.mo index f8e2e2dd771e609dc882dc7b07d4a2916292b516..c8eb3b833d765e3752a6226e633d0d621d666e5b 100644 GIT binary patch delta 23 ecmbQlI*D}yBO{lou7SCNfu)t9$!2cGc18d|#swn) delta 23 ecmbQlI*D}yBO{lIuA#Alp@Ef=#b$2Cc18d|Yy}(u diff --git a/lang/python/nl/LC_MESSAGES/python.po b/lang/python/nl/LC_MESSAGES/python.po index c3b34bca6..c4e6bf2ca 100644 --- a/lang/python/nl/LC_MESSAGES/python.po +++ b/lang/python/nl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Adriaan de Groot , 2017\n" "Language-Team: Dutch (https://www.transifex.com/calamares/teams/20061/nl/)\n" diff --git a/lang/python/pl/LC_MESSAGES/python.mo b/lang/python/pl/LC_MESSAGES/python.mo index 1c18350e9f7b1e4d50e05713685e0bb1d75541a1..0193f8ce473ce1636fff042d8d6db859fa8d2483 100644 GIT binary patch delta 297 zcmcb_HH*9co)F7a1|Z-BVi_P#0b*VtUIWA+@BoMff%qX1ivaOwD9ynL5tjwhCO|QL zAgv9gQ-HJqke&dfMS=7|kUSFu!*w7n0p#x6FquGHNCp+ou7SCNfu)t9$!2yYZ)Pd~l-&HhlF}@wno5O&oXqUQ Io6GeW0FeJFM*si- delta 226 zcmbQmeTl37o)F7a1|Z-7Vi_Qg0b*_-o&&@nZ~}-0f%qg4ivaO$DE$FQgTz@G85m4} zv^bE~2GTx2+5kvbfW(;?7*+yl2_XL-Gf)kX{tl#tfiyo0n08}O1~O`Z0_H$kA4qQj z(z!tT36KWrWnc$lRv-rIV_*YfpfK36K#BoqJ_Jm>`(*NU#t<$OT|;99Ljx-#i_NA? G-pl|nMi;IC diff --git a/lang/python/pl/LC_MESSAGES/python.po b/lang/python/pl/LC_MESSAGES/python.po index 7836f9e40..d7b1e8dae 100644 --- a/lang/python/pl/LC_MESSAGES/python.po +++ b/lang/python/pl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Marcin Mikołajczak , 2017\n" "Language-Team: Polish (https://www.transifex.com/calamares/teams/20061/pl/)\n" @@ -20,7 +20,7 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Odmontuj systemy plików." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." diff --git a/lang/python/pt_BR/LC_MESSAGES/python.mo b/lang/python/pt_BR/LC_MESSAGES/python.mo index 8857385736b576c80fb7bd29f3c85e6e872d93e9..c5bd4fde4ba995589baaa47b203644128302d3b1 100644 GIT binary patch delta 23 ecmbQqIg@jPHWQbru7SCNfu)t9$!1fg6ea*h4Fzog delta 23 ecmbQqIg@jPHWQbLuA#Alp@Ef=#b#5c6ea*gvjt`V diff --git a/lang/python/pt_BR/LC_MESSAGES/python.po b/lang/python/pt_BR/LC_MESSAGES/python.po index 3118a850d..29c5d81ad 100644 --- a/lang/python/pt_BR/LC_MESSAGES/python.po +++ b/lang/python/pt_BR/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Caio Jordão Carvalho , 2018\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n" diff --git a/lang/python/pt_PT/LC_MESSAGES/python.mo b/lang/python/pt_PT/LC_MESSAGES/python.mo index d074e605a274f669c8382ff781ba932704de0f68..211b41cfcfca95fc8d96a9e521d69107a9fcffe6 100644 GIT binary patch delta 23 ecmbQrIhAvRHWQbru7SCNfu)t9$!1fg1SSAQRRv)H delta 23 ecmbQrIhAvRHWQbLuA#Alp@Ef=#b#5c1SSAP`vqD6 diff --git a/lang/python/pt_PT/LC_MESSAGES/python.po b/lang/python/pt_PT/LC_MESSAGES/python.po index b6ce9857c..8e781a848 100644 --- a/lang/python/pt_PT/LC_MESSAGES/python.po +++ b/lang/python/pt_PT/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ricardo Simões , 2017\n" "Language-Team: Portuguese (Portugal) (https://www.transifex.com/calamares/teams/20061/pt_PT/)\n" diff --git a/lang/python/ro/LC_MESSAGES/python.mo b/lang/python/ro/LC_MESSAGES/python.mo index e1e9dcd69d45122da6977c15f16ab1c52b0bfada..46970e97f66bb3bd28a76c8560a05359fb27af3d 100644 GIT binary patch delta 23 ecmey%`ImEpHWQbru7SCNfu)t9$!1fg6HEYD1qPV_ delta 23 ecmey%`ImEpHWQbLuA#Alp@Ef=#b#5c6HEYCs|Jz) diff --git a/lang/python/ro/LC_MESSAGES/python.po b/lang/python/ro/LC_MESSAGES/python.po index a4c212876..baa8b2b4e 100644 --- a/lang/python/ro/LC_MESSAGES/python.po +++ b/lang/python/ro/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Baadur Jobava , 2018\n" "Language-Team: Romanian (https://www.transifex.com/calamares/teams/20061/ro/)\n" diff --git a/lang/python/ru/LC_MESSAGES/python.mo b/lang/python/ru/LC_MESSAGES/python.mo index 5b868147608634bfb546c542f34a3dfe020936f7..9ce189e368a7869068fbad44ef672491a1b389aa 100644 GIT binary patch delta 21 ccmaFD`h<1DMJ`ia19JrfODjW@jkh_O08>^5#sB~S delta 21 ccmaFD`h<1DMJ^LvLt_O)11lqojkh_O08;}7zW@LL diff --git a/lang/python/ru/LC_MESSAGES/python.po b/lang/python/ru/LC_MESSAGES/python.po index a3d5539fe..1c3eba3fe 100644 --- a/lang/python/ru/LC_MESSAGES/python.po +++ b/lang/python/ru/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Aleksey Kabanov , 2018\n" "Language-Team: Russian (https://www.transifex.com/calamares/teams/20061/ru/)\n" diff --git a/lang/python/sk/LC_MESSAGES/python.mo b/lang/python/sk/LC_MESSAGES/python.mo index 9eb578a1b589c8f8797016c0ab6c2c7241cf3de7..55b30e47731e0eca18a501ed70c715e76f8c64ed 100644 GIT binary patch delta 305 zcmcc4xty#1o)F7a1|Z-BVi_P#0b*VtUIWA+@BoMff%qX1ivaOwD9ynL5tjwhCO|QL zAgv9gQ-HJqke&dfMS=7|AbkLcuLH3>kUxVNLhk_58Vn3^3^#xbF`xt^3j;$mkd^?_ zhCsRmNXG%`Wk6aHNVBp6)c|P@AZ7w$5CA!v9f*NaZ~#;e20&vO*d`u*A{?5Rn_rq& zqL7xEld4c$SzMBuJ9!ynIG3refw_W#rIn${W_G3vOiKPK1^HR2d6_^(hj%6A7v+~7 R-kY2O)^T`cZhn~_0{}e9FS!5! delta 226 zcmZ3^b)B>Ro)F7a1|Z-7Vi_Qg0b*_-o&&@nZ~}-0f%qg4ivaO$DE$FQgTz@G85m4} zv^bE~2GTx2+5kvb0OlfwUV7 z14A5;t^m?Ny$tL?%nHOnX$CeR1`2~63#1sBKm-U(y!&MGb;b}b6J0}N1w#WXBa6+Z HOc$5{oM;&a diff --git a/lang/python/sk/LC_MESSAGES/python.po b/lang/python/sk/LC_MESSAGES/python.po index 21cd64112..3e774ad25 100644 --- a/lang/python/sk/LC_MESSAGES/python.po +++ b/lang/python/sk/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dušan Kazik , 2017\n" "Language-Team: Slovak (https://www.transifex.com/calamares/teams/20061/sk/)\n" @@ -20,7 +20,7 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Odpojenie súborových systémov." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." diff --git a/lang/python/sl/LC_MESSAGES/python.mo b/lang/python/sl/LC_MESSAGES/python.mo index 7da04cfabfd073da722675a7de7b1bcd9c69e8b2..1cacc13e36f0423fe20de7cf53444696312c9b5a 100644 GIT binary patch delta 21 ccmcc3e4BYfFPEvVfw_W#rIn${#_2AM08I-9VgLXD delta 21 ccmcc3e4BYfFPDj~p|OIYft8WP#_2AM08F?BTL1t6 diff --git a/lang/python/sl/LC_MESSAGES/python.po b/lang/python/sl/LC_MESSAGES/python.po index ba1883b9d..b6df06d94 100644 --- a/lang/python/sl/LC_MESSAGES/python.po +++ b/lang/python/sl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Slovenian (https://www.transifex.com/calamares/teams/20061/sl/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/sq/LC_MESSAGES/python.mo b/lang/python/sq/LC_MESSAGES/python.mo index c6c326db60ce9b259a0cfe5bc34127f77f9f505d..646afef3782a666e43b11506060ba6245ca60fc2 100644 GIT binary patch delta 23 ecmeyv@rPrBHWQbru7SCNfu)t9$!1d~cP0Q, 2017\n" "Language-Team: Albanian (https://www.transifex.com/calamares/teams/20061/sq/)\n" diff --git a/lang/python/sr/LC_MESSAGES/python.mo b/lang/python/sr/LC_MESSAGES/python.mo index c82584933e16d4fd886ae934d1af1e05b08d90fb..006f4a10539c2c598424fe57b46e015ffc1535f9 100644 GIT binary patch delta 21 ccmaFQ{GNG2FPEvVfw_W#rIn${#_17^08mo~o&W#< delta 21 ccmaFQ{GNG2FPDj~p|OIYft8WP#_17^08ju1mjD0& diff --git a/lang/python/sr/LC_MESSAGES/python.po b/lang/python/sr/LC_MESSAGES/python.po index 1f61b2eac..1ca4c756b 100644 --- a/lang/python/sr/LC_MESSAGES/python.po +++ b/lang/python/sr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Serbian (https://www.transifex.com/calamares/teams/20061/sr/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/sr@latin/LC_MESSAGES/python.mo b/lang/python/sr@latin/LC_MESSAGES/python.mo index 408d3422fdd7b6f9f8cac5334da0632bd8e28b22..1ef282c99e99b31d115e9cd2de8e085033d2a19e 100644 GIT binary patch delta 21 ccmZo=X=Rzv%Vnx-V6I?bX=P}#ae5vj06-N5;s5{u delta 21 ccmZo=X=Rzv%VnZ#XslppU}a>nae5vj06)S7+W-In diff --git a/lang/python/sr@latin/LC_MESSAGES/python.po b/lang/python/sr@latin/LC_MESSAGES/python.po index b2332e3b6..7fd441f33 100644 --- a/lang/python/sr@latin/LC_MESSAGES/python.po +++ b/lang/python/sr@latin/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Serbian (Latin) (https://www.transifex.com/calamares/teams/20061/sr%40latin/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/sv/LC_MESSAGES/python.mo b/lang/python/sv/LC_MESSAGES/python.mo index 37dd489e6a922cb545b5ecb68b4845793b787083..515a95c203b0ba6fc31f7f0a11807cff15c587aa 100644 GIT binary patch delta 21 ccmZ3=yp(xDFPEvVfw_W#rIn${#_4>F07NeZzyJUM delta 21 ccmZ3=yp(xDFPDj~p|OIYft8WP#_4>F07Kjbxc~qF diff --git a/lang/python/sv/LC_MESSAGES/python.po b/lang/python/sv/LC_MESSAGES/python.po index e95bceb87..92b751bd8 100644 --- a/lang/python/sv/LC_MESSAGES/python.po +++ b/lang/python/sv/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Swedish (https://www.transifex.com/calamares/teams/20061/sv/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/th/LC_MESSAGES/python.mo b/lang/python/th/LC_MESSAGES/python.mo index cf5a099da1d1583323933b29fc4698978c48d056..aad4a814d5612bb91303ec1f3035e845cb6e6d0b 100644 GIT binary patch delta 21 ccmbQuJezq!FPEvVfw_W#rIn${#_24K078oeq5uE@ delta 21 ccmbQuJezq!FPDj~p|OIYft8WP#_24K075tgn*aa+ diff --git a/lang/python/th/LC_MESSAGES/python.po b/lang/python/th/LC_MESSAGES/python.po index 9bb9937c2..c312cc439 100644 --- a/lang/python/th/LC_MESSAGES/python.po +++ b/lang/python/th/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Thai (https://www.transifex.com/calamares/teams/20061/th/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/tr_TR/LC_MESSAGES/python.mo b/lang/python/tr_TR/LC_MESSAGES/python.mo index 2fcf0b8542c5c81613696b646e62879578299acd..7f4007a70faed55cc04a5dd8e1a8f43b3215de7c 100644 GIT binary patch delta 23 ecmZ3%xq@?pHWQbru7SCNfu)t9$!1fgVkQ7czXh5A delta 23 ecmZ3%xq@?pHWQbLuA#Alp@Ef=#b#5cVkQ7cWd)M} diff --git a/lang/python/tr_TR/LC_MESSAGES/python.po b/lang/python/tr_TR/LC_MESSAGES/python.po index 0b7430eab..d5c13a300 100644 --- a/lang/python/tr_TR/LC_MESSAGES/python.po +++ b/lang/python/tr_TR/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Demiray “tulliana” Muhterem , 2017\n" "Language-Team: Turkish (Turkey) (https://www.transifex.com/calamares/teams/20061/tr_TR/)\n" diff --git a/lang/python/uk/LC_MESSAGES/python.mo b/lang/python/uk/LC_MESSAGES/python.mo index 55c6ab19ff13929673c98cc31b0d40d6bb9016a3..484b9935cc6d7d87bfa718f4384453c9bca06a26 100644 GIT binary patch delta 21 ccmey!{E>M=FPEvVfw_W#rIn${#_3Uv08pm}qyPW_ delta 21 ccmey!{E>M=FPDj~p|OIYft8WP#_3Uv08ms0od5s; diff --git a/lang/python/uk/LC_MESSAGES/python.po b/lang/python/uk/LC_MESSAGES/python.po index 7d9720afd..12e9b75fc 100644 --- a/lang/python/uk/LC_MESSAGES/python.po +++ b/lang/python/uk/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Ukrainian (https://www.transifex.com/calamares/teams/20061/uk/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/ur/LC_MESSAGES/python.mo b/lang/python/ur/LC_MESSAGES/python.mo index 366fdaae21b38b1af4c76559dcdd85b2eda4709d..2c33ddaaf1b4f523a120d994a9b359c0d4220abc 100644 GIT binary patch delta 21 ccmZ3)yoh;1FPEvVfw_W#rIn${#_8OQ07J0_w*UYD delta 21 ccmZ3)yoh;1FPDj~p|OIYft8WP#_8OQ07G5{umAu6 diff --git a/lang/python/ur/LC_MESSAGES/python.po b/lang/python/ur/LC_MESSAGES/python.po index 2196d2e44..e1d6cc46f 100644 --- a/lang/python/ur/LC_MESSAGES/python.po +++ b/lang/python/ur/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Urdu (https://www.transifex.com/calamares/teams/20061/ur/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/uz/LC_MESSAGES/python.mo b/lang/python/uz/LC_MESSAGES/python.mo index 5e7ab576388f7d6195397f23eb49ea545743f637..a8c96cabf5230d29d97fb65c3d2a0e2d7ef04248 100644 GIT binary patch delta 21 ccmbQkJcoHgFPEvVfw_W#rIn${#_6n#07A6|r2qf` delta 21 ccmbQkJcoHgFPDj~p|OIYft8WP#_6n#077B~o&W#< diff --git a/lang/python/uz/LC_MESSAGES/python.po b/lang/python/uz/LC_MESSAGES/python.po index cb8a288f3..abf02a315 100644 --- a/lang/python/uz/LC_MESSAGES/python.po +++ b/lang/python/uz/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Uzbek (https://www.transifex.com/calamares/teams/20061/uz/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/zh_CN/LC_MESSAGES/python.mo b/lang/python/zh_CN/LC_MESSAGES/python.mo index 2a701a7f998920aee52391ef55123ea20ea9cf93..27629f7b030a9c99f4ec12fa06ec14b8cac03f19 100644 GIT binary patch delta 333 zcmeC=ILlFgPl#nI0}yZmu?!HW05LBRuK{8ZcmTwLK>QGhMS%D-l;&WBh|28JbLHXR=q$NzKnoOU+AHuu0BH%m=Xy4GkR%3-yxo rbM15#j0_AdHfJ&|U=(}WyW_>)z0an#KiR$Q`R3ivch7&^(8K@$vAI0d delta 266 zcmX@h(aBMNPl#nI0}yZku?!H$05LZZ&jDf(I03|hKztI2MS%D=l>PvuLE@~83=Aef zS{z7g18E;1Z2+Vzfb?=8UJ1nFKz<-Igw6!gAafdlv=9S>8^bgpLlP*k5=es#I1J^# z2hu>j4D3M63dBGz0~-*t05Qn1AixBn7#JqreKPqvV+fatuA#Alp@Ef=#bi?^d*y, 2017\n" +"Last-Translator: leonfeng , 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/calamares/teams/20061/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,7 +20,7 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "卸载文件系统。" #: src/modules/dummypython/main.py:44 msgid "Dummy python job." diff --git a/lang/python/zh_TW/LC_MESSAGES/python.mo b/lang/python/zh_TW/LC_MESSAGES/python.mo index ddf2b5b1f12ef2121cb16ec6c6e2f16351a6fe57..c254d51114be2b8151302767b658fecf1a4898ce 100644 GIT binary patch delta 23 ecmaFH@r+}GHWQbru7SCNfu)t9$!1d~LnZ)HxdqYy delta 23 ecmaFH@r+}GHWQbLuA#Alp@Ef=#b#3`LnZ)HUj@qm diff --git a/lang/python/zh_TW/LC_MESSAGES/python.po b/lang/python/zh_TW/LC_MESSAGES/python.po index 1b6321d02..d817891a7 100644 --- a/lang/python/zh_TW/LC_MESSAGES/python.po +++ b/lang/python/zh_TW/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-13 10:28-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Jeff Huang , 2017\n" "Language-Team: Chinese (Taiwan) (https://www.transifex.com/calamares/teams/20061/zh_TW/)\n" From 45731b554b5d48c582918d9db8dd4eb636c1ceed Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 10 May 2018 08:53:29 -0400 Subject: [PATCH 132/385] i18n: update lists of translated languages - add Esperanto - add checks for new or misspelled translations --- CMakeLists.txt | 50 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 96143883c..a2716834b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -190,8 +190,8 @@ endif() ### Transifex Translation status # # complete = 100% translated, -# good = nearly complete (use own judgement, right now < 100 untranslated strings), -# ok = incomplete (100 or more untranslated), +# good = nearly complete (use own judgement, right now >= 75%) +# ok = incomplete (more than 25% untranslated), # bad = 0% translated, placeholder in tx; these are not included. # # Language en (source language) is added later. It isn't listed in @@ -202,11 +202,47 @@ endif() # by the translation framework. Languages with alternate scripts # (sr@latin in particular) may need special handling in CalamaresUtils.cpp. # -set( _tx_complete ca zh_CN zh_TW hr cs_CZ da fr lt pt_BR pt_PT es tr_TR) -set( _tx_good sq ja pl sk ro it_IT hu he ru id de nl ) -set( _tx_ok bg uk ast is ar sv el es_MX gl en_GB th fi_FI hi - eu nb sr sl sr@latin mr es_PR kn kk et ) -set( _tx_bad fr_CH gu lo fa ur uz ) +# TODO: drop the es_ES translation from Transifex +# TODO: import Esperanto once it has some translated strings +# +# NOTE: when updating the list from Transifex, copy these four lines +# and prefix each variable name with "p", so that the automatic +# checks for new languages and misspelled ones are done. +set( _tx_complete da pt_PT ro tr_TR zh_TW zh_CN pt_BR fr hr ca lt id cs_CZ ) +set( _tx_good sq es pl ja sk it_IT hu ru he de nl bg uk ) +set( _tx_ok ast is ar sv el es_MX gl en_GB th fi_FI hi eu sr nb + sl sr@latin mr es_PR kk kn et ) +set( _tx_bad uz eo lo ur gu fr_CH fa ) + +# check translation update +set( prev_tx ${p_tx_complete} ${p_tx_good} ${p_tx_ok} ${p_tx_bad} ) +set( curr_tx ${_tx_complete} ${_tx_good} ${_tx_ok} ${_tx_bad} ) +if ( prev_tx ) + # Gone in new list + foreach( l ${prev_tx} ) + list( FIND curr_tx ${l} p_l ) + if( p_l EQUAL -1 ) + message(WARNING "Language ${l} was present in previous translations and is now absent.") + endif() + endforeach() + + # New in list + foreach( l ${curr_tx} ) + list( FIND prev_tx ${l} p_l ) + if( p_l EQUAL -1 ) + message(WARNING "Language ${l} is new.") + endif() + set( p_l "lang/calamares_${l}.ts" ) + if( NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${p_l} ) + message(WARNING "Language ${l} has no .ts file yet.") + endif() + endforeach() + + unset( p_l ) + unset( l ) +endif() +unset( prev_tx ) +unset( curr_tx ) add_subdirectory( lang ) # i18n tools From 37ce9a08387133b625c46c696cc901b42ee98d7e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 10 May 2018 08:53:45 -0400 Subject: [PATCH 133/385] CMake: bump RC number --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a2716834b..4c10b68d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -260,7 +260,7 @@ list( SORT CALAMARES_TRANSLATION_LANGUAGES ) set( CALAMARES_VERSION_MAJOR 3 ) set( CALAMARES_VERSION_MINOR 2 ) set( CALAMARES_VERSION_PATCH 0 ) -set( CALAMARES_VERSION_RC 4 ) +set( CALAMARES_VERSION_RC 5 ) set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} ) set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" ) From f72f7bd8fef1247c8c971af4190416055ded9855 Mon Sep 17 00:00:00 2001 From: Caio Carvalho Date: Thu, 10 May 2018 18:37:37 -0300 Subject: [PATCH 134/385] [partition] Only bootloader model should ignore devices that are not of Disk_Device type. --- src/modules/partition/core/DeviceList.cpp | 7 +------ src/modules/partition/core/PartitionCoreModule.cpp | 13 ++++++++++++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/modules/partition/core/DeviceList.cpp b/src/modules/partition/core/DeviceList.cpp index 3695193b4..d7e6bab29 100644 --- a/src/modules/partition/core/DeviceList.cpp +++ b/src/modules/partition/core/DeviceList.cpp @@ -129,12 +129,7 @@ QList< Device* > getDevices( DeviceType which, qint64 minimumSize ) // Remove the device which contains / from the list for ( DeviceList::iterator it = devices.begin(); it != devices.end(); ) - if ( (*it)->type() != Device::Type::Disk_Device ) - { - cDebug() << " .. Removing device that is not a Disk_Device from list " << it; - it = erase(devices, it ); - } - else if ( ! ( *it ) || + if ( ! ( *it ) || ( *it )->deviceNode().startsWith( "/dev/zram" ) ) { diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index c508e04ef..43ba33d7b 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -164,7 +164,18 @@ PartitionCoreModule::doInit() for ( auto deviceInfo : m_deviceInfos ) deviceInfo->partitionModel->init( deviceInfo->device.data(), m_osproberLines ); - m_bootLoaderModel->init( devices ); + DeviceList bootLoaderDevices; + + for ( DeviceList::Iterator it = devices.begin(); it != devices.end(); ++it) + if ( (*it)->type() != Device::Type::Disk_Device ) + { + cDebug() << "Ignoring device that is not Disk_Device to bootLoaderDevices list."; + continue; + } + else + bootLoaderDevices.append(*it); + + m_bootLoaderModel->init( bootLoaderDevices ); //FIXME: this should be removed in favor of // proper KPM support for EFI From 4e1306bf8902e5dbe05d7bd6f2bbe8a7319b490e Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 10 May 2018 18:06:09 -0400 Subject: [PATCH 135/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_ca.ts | 24 +- lang/calamares_eo.ts | 2583 ++++++++++++++++++++++++++++++++++++++++++ lang/calamares_et.ts | 880 +++++++------- lang/calamares_ja.ts | 10 +- lang/calamares_pl.ts | 4 +- 5 files changed, 3044 insertions(+), 457 deletions(-) create mode 100644 lang/calamares_eo.ts diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index 2eb963145..a74705e65 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -1395,7 +1395,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Cannot obtain random numbers from the RNG device - No es poden obtenir números aleatoris del dispositiu RNG. + No es poden obtenir nombres aleatoris del dispositiu RNG. @@ -2107,17 +2107,17 @@ Sortida: Set hostname %1 - Assigna el nom de l'equip %1 + Estableix el nom d'amfitrió %1 Set hostname <strong>%1</strong>. - Establir el nom de l'hoste <strong>%1</strong>. + Estableix el nom d'amfitrió <strong>%1</strong>. Setting hostname %1. - Establint el nom de l'hoste %1. + Establint el nom d'amfitrió %1. @@ -2129,7 +2129,7 @@ Sortida: Cannot write hostname to target system - No s'ha pogut escriure el nom de l'equip al sistema de destinació + No es pot escriure el nom d'amfitrió al sistema de destinació @@ -2270,7 +2270,7 @@ Sortida: Cannot disable root account. - No es pot inhabilitar el compte d'arrel. + No es pot inhabilitar el compte de root. @@ -2280,7 +2280,7 @@ Sortida: Cannot set password for user %1. - No s'ha pogut assignar la contrasenya de l'usuari %1. + No es pot establir la contrasenya per a l'usuari %1. @@ -2491,7 +2491,7 @@ Sortida: Your hostname is too short. - El nom d'usuari és massa curt. + El nom d'amfitrió és massa curt. @@ -2501,7 +2501,7 @@ Sortida: Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - El nom d'amfitrió conté caràcters no vàlids. Només s'hi admeten lletres, números i guions. + El nom d'amfitrió conté caràcters no vàlids. Només s'admeten lletres, números i guions. @@ -2553,12 +2553,12 @@ Sortida: <h1>Welcome to the %1 installer.</h1> - <h1>Benvinguts a l'instal·lador %1.</h1> + <h1>Benvingut a l'instal·lador de %1.</h1> <h1>Welcome to the Calamares installer for %1.</h1> - <h1>Us donem la benvinguda a l'instal·lador Calamares per a %1.</h1> + <h1>Benvingut a l'instal·lador Calamares per a %1.</h1> @@ -2581,7 +2581,7 @@ Sortida: Welcome - Benvinguts + Benvingut \ No newline at end of file diff --git a/lang/calamares_eo.ts b/lang/calamares_eo.ts new file mode 100644 index 000000000..aeb948dbc --- /dev/null +++ b/lang/calamares_eo.ts @@ -0,0 +1,2583 @@ + + + BootInfoWidget + + + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. + + + + + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. + + + + + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. + + + + + BootLoaderModel + + + Master Boot Record of %1 + + + + + Boot Partition + + + + + System Partition + + + + + Do not install a boot loader + + + + + %1 (%2) + + + + + Calamares::DebugWindow + + + Form + + + + + GlobalStorage + + + + + JobQueue + + + + + Modules + + + + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + Iloj + + + + Debug information + + + + + Calamares::ExecutionViewStep + + + Install + Instali + + + + Calamares::JobThread + + + Done + Finita + + + + Calamares::ProcessJob + + + Run command %1 %2 + + + + + Running command %1 %2 + + + + + Calamares::PythonJob + + + Running %1 operation. + + + + + Bad working directory path + + + + + Working directory %1 for python job %2 is not readable. + + + + + Bad main script file + + + + + Main script file %1 for python job %2 is not readable. + + + + + Boost.Python error in job "%1". + + + + + Calamares::ViewManager + + + &Back + + + + + + &Next + + + + + + &Cancel + + + + + + Cancel installation without changing the system. + + + + + &Install + + + + + Cancel installation? + + + + + Do you really want to cancel the current install process? +The installer will quit and all changes will be lost. + + + + + &Yes + &Jes + + + + &No + &Ne + + + + &Close + &Fermi + + + + Continue with setup? + + + + + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> + + + + + &Install now + &Instali nun + + + + Go &back + + + + + &Done + &Finita + + + + The installation is complete. Close the installer. + + + + + Error + Eraro + + + + Installation Failed + + + + + CalamaresPython::Helper + + + Unknown exception type + + + + + unparseable Python error + + + + + unparseable Python traceback + + + + + Unfetchable Python error. + + + + + CalamaresWindow + + + %1 Installer + %1 Instalilo + + + + Show debug information + + + + + CheckerWidget + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + + + + + For best results, please ensure that this computer: + + + + + System requirements + + + + + ChoicePage + + + Form + + + + + After: + + + + + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + + + + + Boot loader location: + + + + + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. + + + + + Select storage de&vice: + + + + + + + + Current: + + + + + Reuse %1 as home partition for %2. + + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> + + + + + <strong>Select a partition to install on</strong> + + + + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + ClearMountsJob + + + Clear mounts for partitioning operations on %1 + + + + + Clearing mounts for partitioning operations on %1. + + + + + Cleared all mounts for %1 + + + + + ClearTempMountsJob + + + Clear all temporary mounts. + + + + + Clearing all temporary mounts. + + + + + Cannot get list of temporary mounts. + + + + + Cleared all temporary mounts. + + + + + CommandList + + + Could not run command. + + + + + No rootMountPoint is defined, so command cannot be run in the target environment. + + + + + ContextualProcessJob + + + Contextual Processes Job + + + + + CreatePartitionDialog + + + Create a Partition + + + + + MiB + + + + + Partition &Type: + + + + + &Primary + + + + + E&xtended + + + + + Fi&le System: + + + + + LVM LV name + + + + + Flags: + + + + + &Mount Point: + + + + + Si&ze: + + + + + En&crypt + + + + + Logical + + + + + Primary + + + + + GPT + + + + + Mountpoint already in use. Please select another one. + + + + + CreatePartitionJob + + + Create new %2MB partition on %4 (%3) with file system %1. + + + + + Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. + + + + + Creating new %1 partition on %2. + + + + + The installer failed to create partition on disk '%1'. + + + + + CreatePartitionTableDialog + + + Create Partition Table + + + + + Creating a new partition table will delete all existing data on the disk. + + + + + What kind of partition table do you want to create? + + + + + Master Boot Record (MBR) + + + + + GUID Partition Table (GPT) + + + + + CreatePartitionTableJob + + + Create new %1 partition table on %2. + + + + + Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). + + + + + Creating new %1 partition table on %2. + + + + + The installer failed to create a partition table on %1. + + + + + CreateUserJob + + + Create user %1 + + + + + Create user <strong>%1</strong>. + + + + + Creating user %1. + + + + + Sudoers dir is not writable. + + + + + Cannot create sudoers file for writing. + + + + + Cannot chmod sudoers file. + + + + + Cannot open groups file for reading. + + + + + Cannot create user %1. + + + + + useradd terminated with error code %1. + + + + + Cannot add user %1 to groups: %2. + + + + + usermod terminated with error code %1. + + + + + Cannot set home directory ownership for user %1. + + + + + chown terminated with error code %1. + + + + + DeletePartitionJob + + + Delete partition %1. + + + + + Delete partition <strong>%1</strong>. + + + + + Deleting partition %1. + + + + + The installer failed to delete partition %1. + + + + + DeviceInfoWidget + + + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. + + + + + This device has a <strong>%1</strong> partition table. + + + + + This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. + + + + + This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. + + + + + <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. + + + + + <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. + + + + + DeviceModel + + + %1 - %2 (%3) + + + + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + + + + + Failed to open %1 + + + + + DummyCppJob + + + Dummy C++ Job + + + + + EditExistingPartitionDialog + + + Edit Existing Partition + + + + + Content: + + + + + &Keep + + + + + Format + + + + + Warning: Formatting the partition will erase all existing data. + + + + + &Mount Point: + + + + + Si&ze: + + + + + MiB + + + + + Fi&le System: + + + + + Flags: + + + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + + + + + En&crypt system + + + + + Passphrase + + + + + Confirm passphrase + + + + + Please enter the same passphrase in both boxes. + + + + + FillGlobalStorageJob + + + Set partition information + + + + + Install %1 on <strong>new</strong> %2 system partition. + + + + + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. + + + + + Install %2 on %3 system partition <strong>%1</strong>. + + + + + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. + + + + + Install boot loader on <strong>%1</strong>. + + + + + Setting up mount points. + + + + + FinishedPage + + + Form + + + + + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> + + + + + &Restart now + + + + + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + + + + FinishedViewStep + + + Finish + + + + + Installation Complete + + + + + The installation of %1 is complete. + + + + + FormatPartitionJob + + + Format partition %1 (file system: %2, size: %3 MB) on %4. + + + + + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. + + + + + Formatting partition %1 with file system %2. + + + + + The installer failed to format partition %1 on disk '%2'. + + + + + InteractiveTerminalPage + + + Konsole not installed + + + + + Please install KDE Konsole and try again! + + + + + Executing script: &nbsp;<code>%1</code> + + + + + InteractiveTerminalViewStep + + + Script + + + + + KeyboardPage + + + Set keyboard model to %1.<br/> + + + + + Set keyboard layout to %1/%2. + + + + + KeyboardViewStep + + + Keyboard + + + + + LCLocaleDialog + + + System locale setting + + + + + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + + + &Cancel + + + + + &OK + + + + + LicensePage + + + Form + + + + + I accept the terms and conditions above. + + + + + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. + + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. + + + + + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. + + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. + + + + + <strong>%1 driver</strong><br/>by %2 + %1 is an untranslatable product name, example: Creative Audigy driver + + + + + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> + %1 is usually a vendor name, example: Nvidia graphics driver + + + + + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 package</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1</strong><br/><font color="Grey">by %2</font> + + + + + <a href="%1">view license agreement</a> + + + + + LicenseViewStep + + + License + + + + + LocalePage + + + The system language will be set to %1. + + + + + The numbers and dates locale will be set to %1. + + + + + Region: + + + + + Zone: + + + + + + &Change... + + + + + Set timezone to %1/%2.<br/> + + + + + %1 (%2) + Language (Country) + + + + + LocaleViewStep + + + Loading location data... + + + + + Location + + + + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + Network Installation. (Disabled: Received invalid groups data) + + + + + NetInstallViewStep + + + Package selection + + + + + PWQ + + + Password is too short + + + + + Password is too long + + + + + Password is too weak + + + + + Memory allocation error when setting '%1' + + + + + Memory allocation error + + + + + The password is the same as the old one + + + + + The password is a palindrome + + + + + The password differs with case changes only + + + + + The password is too similar to the old one + + + + + The password contains the user name in some form + + + + + The password contains words from the real name of the user in some form + + + + + The password contains forbidden words in some form + + + + + The password contains less than %1 digits + + + + + The password contains too few digits + + + + + The password contains less than %1 uppercase letters + + + + + The password contains too few uppercase letters + + + + + The password contains less than %1 lowercase letters + + + + + The password contains too few lowercase letters + + + + + The password contains less than %1 non-alphanumeric characters + + + + + The password contains too few non-alphanumeric characters + + + + + The password is shorter than %1 characters + + + + + The password is too short + + + + + The password is just rotated old one + + + + + The password contains less than %1 character classes + + + + + The password does not contain enough character classes + + + + + The password contains more than %1 same characters consecutively + + + + + The password contains too many same characters consecutively + + + + + The password contains more than %1 characters of the same class consecutively + + + + + The password contains too many characters of the same class consecutively + + + + + The password contains monotonic sequence longer than %1 characters + + + + + The password contains too long of a monotonic character sequence + + + + + No password supplied + + + + + Cannot obtain random numbers from the RNG device + + + + + Password generation failed - required entropy too low for settings + + + + + The password fails the dictionary check - %1 + + + + + The password fails the dictionary check + + + + + Unknown setting - %1 + + + + + Unknown setting + + + + + Bad integer value of setting - %1 + + + + + Bad integer value + + + + + Setting %1 is not of integer type + + + + + Setting is not of integer type + + + + + Setting %1 is not of string type + + + + + Setting is not of string type + + + + + Opening the configuration file failed + + + + + The configuration file is malformed + + + + + Fatal failure + + + + + Unknown error + + + + + Page_Keyboard + + + Form + + + + + Keyboard Model: + + + + + Type here to test your keyboard + + + + + Page_UserSetup + + + Form + + + + + What is your name? + + + + + What name do you want to use to log in? + + + + + + + font-weight: normal + + + + + <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> + + + + + Choose a password to keep your account safe. + + + + + <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> + + + + + What is the name of this computer? + + + + + <small>This name will be used if you make the computer visible to others on a network.</small> + + + + + Log in automatically without asking for the password. + + + + + Use the same password for the administrator account. + + + + + Choose a password for the administrator account. + + + + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + + + + PartitionLabelsView + + + Root + + + + + Home + + + + + Boot + + + + + EFI system + + + + + Swap + + + + + New partition for %1 + + + + + New partition + + + + + %1 %2 + + + + + PartitionModel + + + + Free Space + + + + + + New partition + + + + + Name + + + + + File System + + + + + Mount Point + + + + + Size + + + + + PartitionPage + + + Form + + + + + Storage de&vice: + + + + + &Revert All Changes + + + + + New Partition &Table + + + + + &Create + + + + + &Edit + + + + + &Delete + + + + + Install boot &loader on: + + + + + Are you sure you want to create a new partition table on %1? + + + + + PartitionViewStep + + + Gathering system information... + + + + + Partitions + + + + + Install %1 <strong>alongside</strong> another operating system. + + + + + <strong>Erase</strong> disk and install %1. + + + + + <strong>Replace</strong> a partition with %1. + + + + + <strong>Manual</strong> partitioning. + + + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). + + + + + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. + + + + + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. + + + + + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). + + + + + Disk <strong>%1</strong> (%2) + + + + + Current: + + + + + After: + + + + + No EFI system partition configured + + + + + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. + + + + + EFI system partition flag not set + + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + + + + PlasmaLnfJob + + + Plasma Look-and-Feel Job + + + + + + Could not select KDE Plasma Look-and-Feel package + + + + + PlasmaLnfPage + + + Form + + + + + Placeholder + + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + PlasmaLnfViewStep + + + Look-and-Feel + + + + + ProcessResult + + + +There was no output from the command. + + + + + +Output: + + + + + + External command crashed. + + + + + Command <i>%1</i> crashed. + + + + + External command failed to start. + + + + + Command <i>%1</i> failed to start. + + + + + Internal error when starting command. + + + + + Bad parameters for process job call. + + + + + External command failed to finish. + + + + + Command <i>%1</i> failed to finish in %2 seconds. + + + + + External command finished with errors. + + + + + Command <i>%1</i> finished with exit code %2. + + + + + QObject + + + Default Keyboard Model + + + + + + Default + + + + + unknown + + + + + extended + + + + + unformatted + + + + + swap + + + + + Unpartitioned space or unknown partition table + + + + + ReplaceWidget + + + Form + + + + + Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. + + + + + The selected item does not appear to be a valid partition. + + + + + %1 cannot be installed on empty space. Please select an existing partition. + + + + + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. + + + + + %1 cannot be installed on this partition. + + + + + Data partition (%1) + + + + + Unknown system partition (%1) + + + + + %1 system partition (%2) + + + + + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. + + + + + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + RequirementsChecker + + + Gathering system information... + + + + + has at least %1 GB available drive space + + + + + There is not enough drive space. At least %1 GB is required. + + + + + has at least %1 GB working memory + + + + + The system does not have enough working memory. At least %1 GB is required. + + + + + is plugged in to a power source + + + + + The system is not plugged in to a power source. + + + + + is connected to the Internet + + + + + The system is not connected to the Internet. + + + + + The installer is not running with administrator rights. + + + + + The screen is too small to display the installer. + + + + + ResizePartitionJob + + + Resize partition %1. + + + + + Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. + + + + + Resizing %2MB partition %1 to %3MB. + + + + + The installer failed to resize partition %1 on disk '%2'. + + + + + ScanningDialog + + + Scanning storage devices... + + + + + Partitioning + + + + + SetHostNameJob + + + Set hostname %1 + + + + + Set hostname <strong>%1</strong>. + + + + + Setting hostname %1. + + + + + + Internal Error + + + + + + Cannot write hostname to target system + + + + + SetKeyboardLayoutJob + + + Set keyboard model to %1, layout to %2-%3 + + + + + Failed to write keyboard configuration for the virtual console. + + + + + + + Failed to write to %1 + + + + + Failed to write keyboard configuration for X11. + + + + + Failed to write keyboard configuration to existing /etc/default directory. + + + + + SetPartFlagsJob + + + Set flags on partition %1. + + + + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + + Clear flags on partition <strong>%1</strong>. + + + + + Clear flags on %1MB <strong>%2</strong> partition. + + + + + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + + + + + Flag new partition as <strong>%1</strong>. + + + + + Clearing flags on partition <strong>%1</strong>. + + + + + Clearing flags on %1MB <strong>%2</strong> partition. + + + + + Clearing flags on new partition. + + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + + The installer failed to set flags on partition %1. + + + + + SetPasswordJob + + + Set password for user %1 + + + + + Setting password for user %1. + + + + + Bad destination system path. + + + + + rootMountPoint is %1 + + + + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + + Cannot set password for user %1. + + + + + usermod terminated with error code %1. + + + + + SetTimezoneJob + + + Set timezone to %1/%2 + + + + + Cannot access selected timezone path. + + + + + Bad path: %1 + + + + + Cannot set timezone. + + + + + Link creation failed, target: %1; link name: %2 + + + + + Cannot set timezone, + + + + + Cannot open /etc/timezone for writing + + + + + ShellProcessJob + + + Shell Processes Job + + + + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + + + SummaryPage + + + This is an overview of what will happen once you start the install procedure. + + + + + SummaryViewStep + + + Summary + + + + + TrackingInstallJob + + + Installation feedback + + + + + Sending installation feedback. + + + + + Internal error in install-tracking. + + + + + HTTP request timed out. + + + + + TrackingMachineNeonJob + + + Machine feedback + + + + + Configuring machine feedback. + + + + + + Error in machine feedback configuration. + + + + + Could not configure machine feedback correctly, script error %1. + + + + + Could not configure machine feedback correctly, Calamares error %1. + + + + + TrackingPage + + + Form + + + + + Placeholder + + + + + <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> + + + + + + + TextLabel + + + + + + + ... + + + + + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> + + + + + Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. + + + + + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. + + + + + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. + + + + + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. + + + + + TrackingViewStep + + + Feedback + + + + + UsersPage + + + Your username is too long. + + + + + Your username contains invalid characters. Only lowercase letters and numbers are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. + + + + + + Your passwords do not match! + + + + + UsersViewStep + + + Users + + + + + WelcomePage + + + Form + + + + + &Language: + + + + + &Release notes + + + + + &Known issues + + + + + &Support + + + + + &About + + + + + <h1>Welcome to the %1 installer.</h1> + + + + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + + About %1 installer + + + + + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + + + + + %1 support + + + + + WelcomeViewStep + + + Welcome + + + + \ No newline at end of file diff --git a/lang/calamares_et.ts b/lang/calamares_et.ts index 680065815..3de35d779 100644 --- a/lang/calamares_et.ts +++ b/lang/calamares_et.ts @@ -4,7 +4,7 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + Selle süsteemi <strong>käivituskeskkond</strong>.<br><br>Vanemad x86 süsteemid toetavad ainult <strong>BIOS</strong>i.<br>Modernsed süsteemid tavaliselt kasutavad <strong>EFI</strong>t, aga võib ka kasutada BIOSi, kui käivitatakse ühilduvusrežiimis. @@ -22,27 +22,27 @@ Master Boot Record of %1 - + %1 Master Boot Record Boot Partition - + Käivituspartitsioon System Partition - + Süsteemipartitsioon Do not install a boot loader - + Ära installi käivituslaadurit %1 (%2) - + %1 (%2) @@ -50,48 +50,48 @@ Form - + Form GlobalStorage - + GlobalStorage JobQueue - + JobQueue Modules - + Moodulid Type: - + Tüüp: none - + puudub Interface: - + Liides: Tools - + Tööriistad Debug information - + Silumisteave @@ -99,7 +99,7 @@ Install - + Installi @@ -115,12 +115,12 @@ Run command %1 %2 - + Käivita käsklus %1 %2 Running command %1 %2 - + Käivitan käsklust %1 %2 @@ -128,32 +128,32 @@ Running %1 operation. - + Käivitan %1 tegevust. Bad working directory path - + Halb töökausta tee Working directory %1 for python job %2 is not readable. - + Töökaust %1 python tööle %2 pole loetav. Bad main script file - + Halb põhiskripti fail Main script file %1 for python job %2 is not readable. - + Põhiskripti fail %1 python tööle %2 pole loetav. Boost.Python error in job "%1". - + Boost.Python viga töös "%1". @@ -161,86 +161,87 @@ &Back - + &Tagasi &Next - + &Edasi &Cancel - + &Tühista Cancel installation without changing the system. - + Tühista installimine ilma süsteemi muutmata. &Install - + &Installi Cancel installation? - + Tühista installimine? Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + Kas sa tõesti soovid tühistada praeguse installiprotsessi? +Installija sulgub ja kõik muutused kaovad. &Yes - + &Jah &No - + &Ei &Close - + &Sulge Continue with setup? - + Jätka seadistusega? The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + %1 installija on tegemas muudatusi sinu kettale, et installida %2.<br/><strong>Sa ei saa neid muudatusi tagasi võtta.</strong> &Install now - + &Installi kohe Go &back - + Mine &tagasi &Done - + &Valmis The installation is complete. Close the installer. - + Installimine on lõpetatud. Sulge installija. @@ -250,7 +251,7 @@ The installer will quit and all changes will be lost. Installation Failed - + Installimine ebaõnnestus @@ -258,22 +259,22 @@ The installer will quit and all changes will be lost. Unknown exception type - + Tundmatu veateade unparseable Python error - + mittetöödeldav Python'i viga unparseable Python traceback - + mittetöödeldav Python'i traceback Unfetchable Python error. - + Kättesaamatu Python'i viga. @@ -281,12 +282,12 @@ The installer will quit and all changes will be lost. %1 Installer - + %1 installija Show debug information - + Kuva silumisteavet @@ -294,27 +295,27 @@ The installer will quit and all changes will be lost. This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - + See arvuti ei rahulda %1 installimiseks vajalikke minimaaltingimusi.<br/>Installimine ei saa jätkuda. <a href="#details">Detailid...</a> This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - + See arvuti ei rahulda mõnda %1 installimiseks soovitatud tingimust.<br/>Installimine võib jätkuda, ent mõned funktsioonid võivad olla keelatud. This program will ask you some questions and set up %2 on your computer. - + See programm küsib sult mõned küsimused ja seadistab %2 sinu arvutisse. For best results, please ensure that this computer: - + Parimate tulemuste jaoks palun veendu, et see arvuti: System requirements - + Süsteeminõudmised @@ -322,32 +323,32 @@ The installer will quit and all changes will be lost. Form - + Form After: - + Pärast: <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + <strong>Käsitsi partitsioneerimine</strong><br/>Sa võid ise partitsioone luua või nende suurust muuta. Boot loader location: - + Käivituslaaduri asukoht: %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + %1 vähendatakse suuruseni %2MB ja %4 jaoks luuakse uus %3MB partitsioon. Select storage de&vice: - + Vali mäluseade: @@ -355,42 +356,42 @@ The installer will quit and all changes will be lost. Current: - + Hetkel: Reuse %1 as home partition for %2. - + Taaskasuta %1 %2 kodupartitsioonina. <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Vali vähendatav partitsioon, seejärel sikuta alumist riba suuruse muutmiseks</strong> <strong>Select a partition to install on</strong> - + <strong>Vali partitsioon, kuhu installida</strong> An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + EFI süsteemipartitsiooni ei leitud sellest süsteemist. Palun mine tagasi ja kasuta käsitsi partitsioonimist, et seadistada %1. The EFI system partition at %1 will be used for starting %2. - + EFI süsteemipartitsioon asukohas %1 kasutatakse %2 käivitamiseks. EFI system partition: - + EFI süsteemipartitsioon: This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Sellel mäluseadmel ei paista olevat operatsioonisüsteemi peal. Mida soovid teha?<br/>Sa saad oma valikud üle vaadata ja kinnitada enne kui mistahes muudatus saab mäluseadmele teostatud. @@ -398,12 +399,12 @@ The installer will quit and all changes will be lost. <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + <strong>Tühjenda ketas</strong><br/>See <font color="red">kustutab</font> kõik valitud mäluseadmel olevad andmed. This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Sellel mäluseadmel on peal %1. Mida soovid teha?<br/>Sa saad oma valikud üle vaadata ja kinnitada enne kui mistahes muudatus saab mäluseadmele teostatud. @@ -411,7 +412,7 @@ The installer will quit and all changes will be lost. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - + <strong>Installi kõrvale</strong><br/>Installija vähendab partitsiooni, et teha ruumi operatsioonisüsteemile %1. @@ -419,17 +420,17 @@ The installer will quit and all changes will be lost. <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + <strong>Asenda partitsioon</strong><br/>Asendab partitsiooni operatsioonisüsteemiga %1. This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Sellel mäluseadmel on juba operatsioonisüsteem peal. Mida soovid teha?<br/>Sa saad oma valikud üle vaadata ja kinnitada enne kui mistahes muudatus saab mäluseadmele teostatud. This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Sellel mäluseadmel on mitu operatsioonisüsteemi peal. Mida soovid teha?<br/>Sa saad oma valikud üle vaadata ja kinnitada enne kui mistahes muudatus saab mäluseadmele teostatud. @@ -437,17 +438,17 @@ The installer will quit and all changes will be lost. Clear mounts for partitioning operations on %1 - + Tühjenda monteeringud partitsioneerimistegevustes %1 juures Clearing mounts for partitioning operations on %1. - + Tühjendan monteeringud partitsioneerimistegevustes %1 juures. Cleared all mounts for %1 - + Kõik monteeringud tühjendatud %1 jaoks @@ -455,22 +456,22 @@ The installer will quit and all changes will be lost. Clear all temporary mounts. - + Tühjenda kõik ajutised monteeringud. Clearing all temporary mounts. - + Tühjendan kõik ajutised monteeringud. Cannot get list of temporary mounts. - + Ajutiste monteeringute nimekirja ei saa hankida. Cleared all temporary mounts. - + Kõik ajutised monteeringud tühjendatud. @@ -478,12 +479,12 @@ The installer will quit and all changes will be lost. Could not run command. - + Käsku ei saanud käivitada. No rootMountPoint is defined, so command cannot be run in the target environment. - + rootMountPoint pole defineeritud, seega käsku ei saa käivitada sihtkeskkonnas. @@ -491,7 +492,7 @@ The installer will quit and all changes will be lost. Contextual Processes Job - + Kontekstipõhiste protsesside töö @@ -504,42 +505,42 @@ The installer will quit and all changes will be lost. MiB - + MiB Partition &Type: - + Partitsiooni tüüp: &Primary - + %Peamine E&xtended - + %Laiendatud Fi&le System: - + %Failisüsteem: LVM LV name - + LVM LV nimi Flags: - + Sildid: &Mount Point: - + &Monteerimispunkt: @@ -549,7 +550,7 @@ The installer will quit and all changes will be lost. En&crypt - + &Krüpti @@ -569,7 +570,7 @@ The installer will quit and all changes will be lost. Mountpoint already in use. Please select another one. - + Monteerimispunkt on juba kasutusel. Palun vali mõni teine. @@ -577,22 +578,22 @@ The installer will quit and all changes will be lost. Create new %2MB partition on %4 (%3) with file system %1. - + Loo uus %2MB partitsioon kettal %4 (%3) failisüsteemiga %1. Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - + Loo uus <strong>%2MB</strong> partitsioon kettale <strong>%4</strong> (%3) failisüsteemiga <strong>%1</strong>. Creating new %1 partition on %2. - + Loon uut %1 partitsiooni kettal %2. The installer failed to create partition on disk '%1'. - + Installija ei suutnud luua partitsiooni kettale "%1". @@ -600,7 +601,7 @@ The installer will quit and all changes will be lost. Create Partition Table - + Loo partitsioonitabel @@ -610,17 +611,17 @@ The installer will quit and all changes will be lost. What kind of partition table do you want to create? - + Millist partitsioonitabelit soovid luua? Master Boot Record (MBR) - + Master Boot Record (MBR) GUID Partition Table (GPT) - + GUID partitsioonitabel (GPT) @@ -628,22 +629,22 @@ The installer will quit and all changes will be lost. Create new %1 partition table on %2. - + Loo uus %1 partitsioonitabel kohta %2. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - + Loo uus <strong>%1</strong> partitsioonitabel kohta <strong>%2</strong> (%3). Creating new %1 partition table on %2. - + Loon uut %1 partitsioonitabelit kohta %2. The installer failed to create a partition table on %1. - + Installija ei suutnud luua partitsioonitabelit kettale %1. @@ -651,67 +652,67 @@ The installer will quit and all changes will be lost. Create user %1 - + Loo kasutaja %1 Create user <strong>%1</strong>. - + Loo kasutaja <strong>%1</strong>. Creating user %1. - + Loon kasutajat %1. Sudoers dir is not writable. - + Sudoja tee ei ole kirjutatav. Cannot create sudoers file for writing. - + Sudoja faili ei saa kirjutamiseks luua. Cannot chmod sudoers file. - + Sudoja faili ei saa chmod-ida. Cannot open groups file for reading. - + Grupifaili ei saa lugemiseks avada. Cannot create user %1. - + Kasutajat %1 ei saa luua. useradd terminated with error code %1. - + useradd peatatud veakoodiga %1. Cannot add user %1 to groups: %2. - + Kasutajat %1 ei saa lisada gruppidesse: %2. usermod terminated with error code %1. - + usermod peatatud veakoodiga %1. Cannot set home directory ownership for user %1. - + Kasutajale %1 ei saa kodukausta omandust määrata. chown terminated with error code %1. - + chown peatatud veakoodiga %1. @@ -719,22 +720,22 @@ The installer will quit and all changes will be lost. Delete partition %1. - + Kustuta partitsioon %1. Delete partition <strong>%1</strong>. - + Kustuta partitsioon <strong>%1</strong>. Deleting partition %1. - + Kustutan partitsiooni %1. The installer failed to delete partition %1. - + Installija ei suutnud kustutada partitsiooni %1. @@ -747,7 +748,7 @@ The installer will quit and all changes will be lost. This device has a <strong>%1</strong> partition table. - + Sellel seadmel on <strong>%1</strong> partitsioonitabel. @@ -762,7 +763,7 @@ The installer will quit and all changes will be lost. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>See on soovitatav partitsioonitabeli tüüp modernsetele süsteemidele, mis käivitatakse <strong>EFI</strong>käivituskeskkonnast. @@ -775,7 +776,7 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) - + %1 - %2 (%3) @@ -783,17 +784,17 @@ The installer will quit and all changes will be lost. Write LUKS configuration for Dracut to %1 - + Kirjuta Dracut'ile LUKS konfiguratsioon kohta %1 Skip writing LUKS configuration for Dracut: "/" partition is not encrypted - + Lõpeta Dracut'ile LUKS konfigruatsiooni kirjutamine: "/" partitsioon pole krüptitud Failed to open %1 - + %1 avamine ebaõnnestus @@ -801,7 +802,7 @@ The installer will quit and all changes will be lost. Dummy C++ Job - + Testiv C++ töö @@ -809,32 +810,32 @@ The installer will quit and all changes will be lost. Edit Existing Partition - + Muuda olemasolevat partitsiooni Content: - + Sisu: &Keep - + &Säilita Format - + Vorminda Warning: Formatting the partition will erase all existing data. - + Hoiatus: Partitsiooni vormindamine tühjendab kõik olemasolevad andmed. &Mount Point: - + &Monteerimispunkt: @@ -844,22 +845,22 @@ The installer will quit and all changes will be lost. MiB - + MiB Fi&le System: - + %Failisüsteem: Flags: - + Sildid: Mountpoint already in use. Please select another one. - + Monteerimispunkt on juba kasutusel. Palun vali mõni teine. @@ -867,27 +868,27 @@ The installer will quit and all changes will be lost. Form - + Form En&crypt system - + Krüpti süsteem Passphrase - + Salaväljend Confirm passphrase - + Kinnita salaväljendit Please enter the same passphrase in both boxes. - + Palun sisesta sama salaväljend mõlemisse kasti. @@ -895,37 +896,37 @@ The installer will quit and all changes will be lost. Set partition information - + Sea partitsiooni teave Install %1 on <strong>new</strong> %2 system partition. - + Installi %1 <strong>uude</strong> %2 süsteemipartitsiooni. Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Seadista <strong>uus</strong> %2 partitsioon monteerimiskohaga <strong>%1</strong>. Install %2 on %3 system partition <strong>%1</strong>. - + Installi %2 %3 süsteemipartitsioonile <strong>%1</strong>. Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Seadista %3 partitsioon <strong>%1</strong> monteerimiskohaga <strong>%2</strong> Install boot loader on <strong>%1</strong>. - + Installi käivituslaadur kohta <strong>%1</strong>. Setting up mount points. - + Seadistan monteerimispunkte. @@ -933,27 +934,27 @@ The installer will quit and all changes will be lost. Form - + Form <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - + <html><head/><body><p>Kui see märkeruut on täidetud, taaskäivitab su süsteem automaatselt, kui vajutad <span style=" font-style:italic;">Valmis</span> või sulged installija.</p></body></html> &Restart now - + &Taaskäivita nüüd <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Kõik on valmis.</h1><br/>%1 on installitud sinu arvutisse.<br/>Sa võid nüüd taaskäivitada oma uude süsteemi või jätkata %2 live-keskkonna kasutamist. <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. - + <h1>Installimine ebaõnnestus</h1><br/>%1 ei installitud sinu arvutisse.<br/>Veateade oli: %2. @@ -961,17 +962,17 @@ The installer will quit and all changes will be lost. Finish - + Valmis Installation Complete - + Installimine lõpetatud The installation of %1 is complete. - + %1 installimine on lõpetatud. @@ -979,22 +980,22 @@ The installer will quit and all changes will be lost. Format partition %1 (file system: %2, size: %3 MB) on %4. - + Vorminda partitsioon %1 (failisüsteem: %2, suurus: %3 MB) kohas %4. Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + Vorminda <strong>%3MB</strong> partitsioon <strong>%1</strong>failisüsteemiga <strong>%2</strong>. Formatting partition %1 with file system %2. - + Vormindan partitsiooni %1 failisüsteemiga %2. The installer failed to format partition %1 on disk '%2'. - + Installija ei suutnud vormindada partitsiooni %1 kettal "%2". @@ -1002,17 +1003,17 @@ The installer will quit and all changes will be lost. Konsole not installed - + Konsole pole installitud Please install KDE Konsole and try again! - + Palun installi KDE Konsole ja proovi uuesti! Executing script: &nbsp;<code>%1</code> - + Käivitan skripti: &nbsp;<code>%1</code> @@ -1020,7 +1021,7 @@ The installer will quit and all changes will be lost. Script - + Skript @@ -1028,12 +1029,12 @@ The installer will quit and all changes will be lost. Set keyboard model to %1.<br/> - + Sea klaviatuurimudeliks %1.<br/> Set keyboard layout to %1/%2. - + Sea klaviatuuripaigutuseks %1/%2. @@ -1041,7 +1042,7 @@ The installer will quit and all changes will be lost. Keyboard - + Klaviatuur @@ -1049,22 +1050,22 @@ The installer will quit and all changes will be lost. System locale setting - + Süsteemilokaali valik The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. - + Süsteemilokaali valik mõjutab keelt ja märgistikku teatud käsurea kasutajaliideste elementidel.<br/>Praegune valik on <strong>%1</strong>. &Cancel - + &Tühista &OK - + &OK @@ -1072,27 +1073,27 @@ The installer will quit and all changes will be lost. Form - + Form I accept the terms and conditions above. - + Ma nõustun alljärgevate tingimustega. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + <h1>Litsensileping</h1>See seadistusprotseduur installib omandiõigusega tarkvara, mis vastab litsensitingimustele. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + Palun loe läbi allolevad lõppkasutaja litsensilepingud (EULAd).<br/>Kui sa tingimustega ei nõustu, ei saa seadistusprotseduur jätkata. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + <h1>Litsensileping</h1>See seadistusprotseduur võib installida omandiõigusega tarkvara, mis vastab litsensitingimustele, et pakkuda lisafunktsioone ja täiendada kasutajakogemust. @@ -1103,38 +1104,38 @@ The installer will quit and all changes will be lost. <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 draiver</strong><br/>autorilt %2 <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 graafikadraiver</strong><br/><font color="Grey">autorilt %2</font> <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 brauseriplugin</strong><br/><font color="Grey">autorilt %2</font> <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 koodek</strong><br/><font color="Grey">autorilt %2</font> <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1 pakett</strong><br/><font color="Grey">autorilt %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">autorilt %2</font> <a href="%1">view license agreement</a> - + <a href="%1">vaata litsensitingimusi</a> @@ -1142,7 +1143,7 @@ The installer will quit and all changes will be lost. License - + Litsents @@ -1150,39 +1151,39 @@ The installer will quit and all changes will be lost. The system language will be set to %1. - + Süsteemikeeleks määratakse %1. The numbers and dates locale will be set to %1. - + Arvude ja kuupäevade lokaaliks seatakse %1. Region: - + Regioon: Zone: - + Tsoon: &Change... - + &Muuda... Set timezone to %1/%2.<br/> - + Määra ajatsooniks %1/%2.<br/> %1 (%2) Language (Country) - + %1 (%2) @@ -1190,7 +1191,7 @@ The installer will quit and all changes will be lost. Loading location data... - + Laadin asukohaandmeid... @@ -1203,22 +1204,22 @@ The installer will quit and all changes will be lost. Name - + Nimi Description - + Kirjeldus Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Võrguinstall. (Keelatud: paketinimistute saamine ebaõnnestus, kontrolli oma võrguühendust) Network Installation. (Disabled: Received invalid groups data) - + Võrguinstall. (Keelatud: vastu võetud sobimatud grupiandmed) @@ -1226,7 +1227,7 @@ The installer will quit and all changes will be lost. Package selection - + Paketivalik @@ -1234,242 +1235,242 @@ The installer will quit and all changes will be lost. Password is too short - + Parool on liiga lühike Password is too long - + Parool on liiga pikk Password is too weak - + Parool on liiga nõrk Memory allocation error when setting '%1' - + Mälu eraldamise viga valikut "%1" määrates Memory allocation error - + Mälu eraldamise viga The password is the same as the old one - + Parool on sama mis enne The password is a palindrome - + Parool on palindroom The password differs with case changes only - + Parool erineb ainult suurtähtede poolest The password is too similar to the old one - + Parool on eelmisega liiga sarnane The password contains the user name in some form - + Parool sisaldab mingil kujul kasutajanime The password contains words from the real name of the user in some form - + Parool sisaldab mingil kujul sõnu kasutaja pärisnimest The password contains forbidden words in some form - + Parool sisaldab mingil kujul sobimatuid sõnu The password contains less than %1 digits - + Parool sisaldab vähem kui %1 numbrit The password contains too few digits - + Parool sisaldab liiga vähe numbreid The password contains less than %1 uppercase letters - + Parool sisaldab vähem kui %1 suurtähte The password contains too few uppercase letters - + Parool sisaldab liiga vähe suurtähti The password contains less than %1 lowercase letters - + Parool sisaldab vähem kui %1 väiketähte The password contains too few lowercase letters - + Parool sisaldab liiga vähe väiketähti The password contains less than %1 non-alphanumeric characters - + Parool sisaldab vähem kui %1 mitte-tähestikulist märki The password contains too few non-alphanumeric characters - + Parool sisaldab liiga vähe mitte-tähestikulisi märke The password is shorter than %1 characters - + Parool on lühem kui %1 tähemärki The password is too short - + Parool on liiga lühike The password is just rotated old one - + Parool on lihtsalt pööratud eelmine parool The password contains less than %1 character classes - + Parool sisaldab vähem kui %1 tähemärgiklassi The password does not contain enough character classes - + Parool ei sisalda piisavalt tähemärgiklasse The password contains more than %1 same characters consecutively - + Parool sisaldab järjest rohkem kui %1 sama tähemärki The password contains too many same characters consecutively - + Parool sisaldab järjest liiga palju sama tähemärki The password contains more than %1 characters of the same class consecutively - + Parool sisaldab järjest samast klassist rohkem kui %1 tähemärki The password contains too many characters of the same class consecutively - + Parool sisaldab järjest liiga palju samast klassist tähemärke The password contains monotonic sequence longer than %1 characters - + Parool sisaldab monotoonset jada, mis on pikem kui %1 tähemärki The password contains too long of a monotonic character sequence - + Parool sisaldab liiga pikka monotoonsete tähemärkide jada No password supplied - + Parooli ei sisestatud Cannot obtain random numbers from the RNG device - + RNG seadmest ei saanud hankida juhuslikke numbreid Password generation failed - required entropy too low for settings - + Parooligenereerimine ebaõnnestus - nõutud entroopia on seadete jaoks liiga vähe The password fails the dictionary check - %1 - + Parool põrub sõnastikukontrolli - %1 The password fails the dictionary check - + Parool põrub sõnastikukontrolli Unknown setting - %1 - + Tundmatu valik - %1 Unknown setting - + Tundmatu valik Bad integer value of setting - %1 - + Halb täisarvuline väärtus valikul - %1 Bad integer value - + Halb täisarvuväärtus Setting %1 is not of integer type - + Valik %1 pole täisarvu tüüpi Setting is not of integer type - + Valik ei ole täisarvu tüüpi Setting %1 is not of string type - + Valik %1 ei ole string-tüüpi Setting is not of string type - + Valik ei ole string-tüüpi Opening the configuration file failed - + Konfiguratsioonifaili avamine ebaõnnestus The configuration file is malformed - + Konfiguratsioonifail on rikutud Fatal failure - + Saatuslik viga Unknown error - + Tundmatu viga @@ -1477,17 +1478,17 @@ The installer will quit and all changes will be lost. Form - + Form Keyboard Model: - + Klaviatuurimudel: Type here to test your keyboard - + Kirjuta siia, et testida oma klaviatuuri @@ -1495,69 +1496,69 @@ The installer will quit and all changes will be lost. Form - + Form What is your name? - + Mis on su nimi? What name do you want to use to log in? - + Mis nime soovid sisselogimiseks kasutada? font-weight: normal - + font-weight: normal <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - + <small>Kui rohkem kui üks inimene kasutab seda arvutit, saad sa määrata mitu kontot peale installi.</small> Choose a password to keep your account safe. - + Vali parool, et hoida oma konto turvalisena. <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> - + <small>Sisesta sama parool kaks korda, et kontrollida kirjavigade puudumist. Hea parool sisaldab segu tähtedest, numbritest ja kirjavahemärkidest, peaks olema vähemalt kaheksa märki pikk ja seda peaks muutma regulaarselt.</small> What is the name of this computer? - + Mis on selle arvuti nimi? <small>This name will be used if you make the computer visible to others on a network.</small> - + <small>Seda nime kasutatakse, kui teed arvuti võrgus teistele nähtavaks.</small> Log in automatically without asking for the password. - + Logi automaatselt sisse ilma parooli küsimata. Use the same password for the administrator account. - + Kasuta sama parooli administraatorikontole. Choose a password for the administrator account. - + Vali administraatori kontole parool. <small>Enter the same password twice, so that it can be checked for typing errors.</small> - + <small>Sisesta sama parooli kaks korda, et kontrollida kirjavigade puudumist.</small> @@ -1565,42 +1566,42 @@ The installer will quit and all changes will be lost. Root - + Juur Home - + Kodu Boot - + Käivitus EFI system - + EFI süsteem Swap - + Swap New partition for %1 - + Uus partitsioon %1 jaoks New partition - + Uus partitsioon %1 %2 - + %1 %2 @@ -1609,33 +1610,33 @@ The installer will quit and all changes will be lost. Free Space - + Tühi ruum New partition - + Uus partitsioon Name - + Nimi File System - + Failisüsteem Mount Point - + Monteerimispunkt Size - + Suurus @@ -1643,47 +1644,47 @@ The installer will quit and all changes will be lost. Form - + Form Storage de&vice: - + Mäluseade: &Revert All Changes - + &Ennista kõik muutused New Partition &Table - + Uus partitsioonitabel &Create - + &Loo &Edit - + &Muuda &Delete - + &Kustuta Install boot &loader on: - + Installi käivituslaadur kohta: Are you sure you want to create a new partition table on %1? - + Kas soovid kindlasti luua uut partitsioonitabelit kettale %1? @@ -1691,72 +1692,72 @@ The installer will quit and all changes will be lost. Gathering system information... - + Hangin süsteemiteavet... Partitions - + Partitsioonid Install %1 <strong>alongside</strong> another operating system. - + Installi %1 praeguse operatsioonisüsteemi <strong>kõrvale</strong> <strong>Erase</strong> disk and install %1. - + <strong>Tühjenda</strong> ketas ja installi %1. <strong>Replace</strong> a partition with %1. - + <strong>Asenda</strong> partitsioon operatsioonisüsteemiga %1. <strong>Manual</strong> partitioning. - + <strong>Käsitsi</strong> partitsioneerimine. Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + Installi %1 teise operatsioonisüsteemi <strong>kõrvale</strong> kettal <strong>%2</strong> (%3). <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Tühjenda</strong> ketas <strong>%2</strong> (%3) ja installi %1. <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Asenda</strong> partitsioon kettal <strong>%2</strong> (%3) operatsioonisüsteemiga %1. <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + <strong>Käsitsi</strong> partitsioneerimine kettal <strong>%1</strong> (%2). Disk <strong>%1</strong> (%2) - + Ketas <strong>%1</strong> (%2). Current: - + Hetkel: After: - + Pärast: No EFI system partition configured - + EFI süsteemipartitsiooni pole seadistatud @@ -1766,7 +1767,7 @@ The installer will quit and all changes will be lost. EFI system partition flag not set - + EFI süsteemipartitsiooni silt pole määratud @@ -1776,7 +1777,7 @@ The installer will quit and all changes will be lost. Boot partition not encrypted - + Käivituspartitsioon pole krüptitud @@ -1789,13 +1790,13 @@ The installer will quit and all changes will be lost. Plasma Look-and-Feel Job - + Töö Plasma välimus ja tunnetus Could not select KDE Plasma Look-and-Feel package - + KDE Plasma välimuse ja tunnetuse paketti ei saanud valida @@ -1803,12 +1804,12 @@ The installer will quit and all changes will be lost. Form - + Form Placeholder - + Kohatäitja @@ -1821,7 +1822,7 @@ The installer will quit and all changes will be lost. Look-and-Feel - + Välimus ja tunnetus @@ -1830,64 +1831,67 @@ The installer will quit and all changes will be lost. There was no output from the command. - + +Käsul polnud väljundit. Output: - + +Väljund: + External command crashed. - + Väline käsk jooksis kokku. Command <i>%1</i> crashed. - + Käsk <i>%1</i> jooksis kokku. External command failed to start. - + Välise käsu käivitamine ebaõnnestus. Command <i>%1</i> failed to start. - + Käsu <i>%1</i> käivitamine ebaõnnestus. Internal error when starting command. - + Käsu käivitamisel esines sisemine viga. Bad parameters for process job call. - + Protsessi töö kutsel olid halvad parameetrid. External command failed to finish. - + Väline käsk ei suutnud lõpetada. Command <i>%1</i> failed to finish in %2 seconds. - + Käsk <i>%1</i> ei suutnud lõpetada %2 sekundi jooksul. External command finished with errors. - + Väline käsk lõpetas vigadega. Command <i>%1</i> finished with exit code %2. - + Käsk <i>%1</i> lõpetas sulgemiskoodiga %2. @@ -1895,38 +1899,38 @@ Output: Default Keyboard Model - + Vaikimisi klaviatuurimudel Default - + Vaikimisi unknown - + tundmatu extended - + laiendatud unformatted - + vormindamata swap - + swap Unpartitioned space or unknown partition table - + Partitsioneerimata ruum või tundmatu partitsioonitabel @@ -1934,52 +1938,52 @@ Output: Form - + Form Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - + Vali, kuhu soovid %1 installida.<br/><font color="red">Hoiatus: </font>see kustutab valitud partitsioonilt kõik failid. The selected item does not appear to be a valid partition. - + Valitud üksus ei paista olevat sobiv partitsioon. %1 cannot be installed on empty space. Please select an existing partition. - + %1 ei saa installida tühjale kohale. Palun vali olemasolev partitsioon. %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - + %1 ei saa installida laiendatud partitsioonile. Palun vali olemasolev põhiline või loogiline partitsioon. %1 cannot be installed on this partition. - + %1 ei saa installida sellele partitsioonidel. Data partition (%1) - + Andmepartitsioon (%1) Unknown system partition (%1) - + Tundmatu süsteemipartitsioon (%1) %1 system partition (%2) - + %1 süsteemipartitsioon (%2) <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - + <strong>%4</strong><br/><br/>Partitsioon %1 on liiga väike %2 jaoks. Palun vali partitsioon suurusega vähemalt %3 GiB. @@ -1991,17 +1995,17 @@ Output: <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - + <strong>%3</strong><br/><br/>%1 installitakse partitsioonile %2.<br/><font color="red">Hoiatus: </font>kõik andmed partitsioonil %2 kaovad. The EFI system partition at %1 will be used for starting %2. - + EFI süsteemipartitsioon asukohas %1 kasutatakse %2 käivitamiseks. EFI system partition: - + EFI süsteemipartitsioon: @@ -2009,57 +2013,57 @@ Output: Gathering system information... - + Hangin süsteemiteavet... has at least %1 GB available drive space - + omab vähemalt %1 GB vaba kettaruumi There is not enough drive space. At least %1 GB is required. - + Pole piisavalt kettaruumi. Vähemalt %1 GB on nõutud. has at least %1 GB working memory - + omab vähemalt %1 GB töötamismälu The system does not have enough working memory. At least %1 GB is required. - + Süsteemil pole piisavalt töötamismälu. Vähemalt %1 GB on nõutud. is plugged in to a power source - + on ühendatud vooluallikasse The system is not plugged in to a power source. - + Süsteem pole ühendatud vooluallikasse. is connected to the Internet - + on ühendatud Internetti The system is not connected to the Internet. - + Süsteem pole ühendatud Internetti. The installer is not running with administrator rights. - + Installija ei tööta administraatoriõigustega. The screen is too small to display the installer. - + Ekraan on liiga väike installija kuvamiseks. @@ -2067,22 +2071,22 @@ Output: Resize partition %1. - + Muuda partitsiooni %1 suurust. Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. - + Muuda <strong>%2MB</strong> partitsiooni <strong>%1</strong>suuruseks <strong>%3MB</strong>. Resizing %2MB partition %1 to %3MB. - + Muudan %2MB partitsiooni %1 suuruseks %3MB The installer failed to resize partition %1 on disk '%2'. - + Installijal ebaõnnestus partitsiooni %1 suuruse muutmine kettal "%2". @@ -2090,12 +2094,12 @@ Output: Scanning storage devices... - + Skaneerin mäluseadmeid... Partitioning - + Partitsioneerimine @@ -2103,29 +2107,29 @@ Output: Set hostname %1 - + Määra hostinimi %1 Set hostname <strong>%1</strong>. - + Määra hostinimi <strong>%1</strong>. Setting hostname %1. - + Määran hostinime %1. Internal Error - + Sisemine viga Cannot write hostname to target system - + Hostinime ei saa sihtsüsteemile kirjutada @@ -2133,29 +2137,29 @@ Output: Set keyboard model to %1, layout to %2-%3 - + Klaviatuurimudeliks on seatud %1, paigutuseks %2-%3 Failed to write keyboard configuration for the virtual console. - + Klaviatuurikonfiguratsiooni kirjutamine virtuaalkonsooli ebaõnnestus. Failed to write to %1 - + Kohta %1 kirjutamine ebaõnnestus Failed to write keyboard configuration for X11. - + Klaviatuurikonsooli kirjutamine X11-le ebaõnnestus. Failed to write keyboard configuration to existing /etc/default directory. - + Klaviatuurikonfiguratsiooni kirjutamine olemasolevale /etc/default kaustateele ebaõnnestus. @@ -2163,82 +2167,82 @@ Output: Set flags on partition %1. - + Määratud sildid partitsioonil %1: Set flags on %1MB %2 partition. - + Sildid määratud %1MB %2 partitsioonile. Set flags on new partition. - + Määra sildid uuele partitsioonile. Clear flags on partition <strong>%1</strong>. - + Tühjenda sildid partitsioonil <strong>%1</strong>. Clear flags on %1MB <strong>%2</strong> partition. - + Tühjenda sildid %1MB <strong>%2</strong> partitsioonilt. Clear flags on new partition. - + Tühjenda sildid uuel partitsioonil Flag partition <strong>%1</strong> as <strong>%2</strong>. - + Määra partitsioonile <strong>%1</strong> silt <strong>%2</strong>. Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. - + Määra %1MB <strong>%2</strong> partitsiooni sildiks <strong>%3</strong>. Flag new partition as <strong>%1</strong>. - + Määra uuele partitsioonile silt <strong>%1</strong>. Clearing flags on partition <strong>%1</strong>. - + Eemaldan sildid partitsioonilt <strong>%1</strong>. Clearing flags on %1MB <strong>%2</strong> partition. - + Eemaldan sildid %1MB <strong>%2</strong> partitsioonilt. Clearing flags on new partition. - + Eemaldan uuelt partitsioonilt sildid. Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Määran sildid <strong>%1</strong> partitsioonile <strong>%1</strong>. Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. - + Määran sildid <strong>%3</strong> %1MB <strong>%2</strong> partitsioonile. Setting flags <strong>%1</strong> on new partition. - + Määran sildid <strong>%1</strong> uuele partitsioonile. The installer failed to set flags on partition %1. - + Installija ei suutnud silte määrata partitsioonile %1. @@ -2246,42 +2250,42 @@ Output: Set password for user %1 - + Määra kasutajale %1 parool Setting password for user %1. - + Määran kasutajale %1 parooli. Bad destination system path. - + Halb sihtsüsteemi tee. rootMountPoint is %1 - + rootMountPoint on %1 Cannot disable root account. - + Juurkasutajat ei saa keelata. passwd terminated with error code %1. - + passwd peatatud veakoodiga %1. Cannot set password for user %1. - + Kasutajale %1 ei saa parooli määrata. usermod terminated with error code %1. - + usermod peatatud veateatega %1. @@ -2289,37 +2293,37 @@ Output: Set timezone to %1/%2 - + Määra ajatsooniks %1/%2 Cannot access selected timezone path. - + Valitud ajatsooni teele ei saa ligi. Bad path: %1 - + Halb tee: %1 Cannot set timezone. - + Ajatsooni ei saa määrata. Link creation failed, target: %1; link name: %2 - + Lingi loomine ebaõnnestus, siht: %1; lingi nimi: %2 Cannot set timezone, - + Ajatsooni ei saa määrata, Cannot open /etc/timezone for writing - + /etc/timezone ei saa kirjutamiseks avada @@ -2327,7 +2331,7 @@ Output: Shell Processes Job - + Kesta protsesside töö @@ -2336,7 +2340,7 @@ Output: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -2344,7 +2348,7 @@ Output: This is an overview of what will happen once you start the install procedure. - + See on ülevaade sellest mis juhtub, kui alustad installiprotseduuri. @@ -2360,22 +2364,22 @@ Output: Installation feedback - + Installimise tagasiside Sending installation feedback. - + Saadan installimise tagasisidet. Internal error in install-tracking. - + Installi jälitamisel esines sisemine viga. HTTP request timed out. - + HTTP taotlusel esines ajalõpp. @@ -2383,28 +2387,28 @@ Output: Machine feedback - + Seadme tagasiside Configuring machine feedback. - + Seadistan seadme tagasisidet. Error in machine feedback configuration. - + Masina tagasiside konfiguratsioonis esines viga. Could not configure machine feedback correctly, script error %1. - + Masina tagasisidet ei suudetud korralikult konfigureerida, skripti viga %1. Could not configure machine feedback correctly, Calamares error %1. - + Masina tagasisidet ei suudetud korralikult konfigureerida, Calamares'e viga %1. @@ -2412,36 +2416,36 @@ Output: Form - + Form Placeholder - + Kohatäitja <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - + <html><head/><body><p>Seda valides <span style=" font-weight:600;">ei saada sa üldse</span> teavet oma installi kohta.</p></body></html> TextLabel - + TextLabel ... - + ... <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> - + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Klõpsa siia, et saada rohkem teavet kasutaja tagasiside kohta</span></a></p></body></html> @@ -2451,17 +2455,17 @@ Output: By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + Seda valides saadad sa teavet oma installi ja riistvara kohta. See teave <b>saadetakse ainult korra</b>peale installi lõppu. By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + Seda valides saadad sa %1-le <b>perioodiliselt</b> infot oma installi, riistvara ja rakenduste kohta. By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. - + Seda valides saadad sa %1-le <b>regulaarselt</b> infot oma installi, riistvara, rakenduste ja kasutusharjumuste kohta. @@ -2469,7 +2473,7 @@ Output: Feedback - + Tagasiside @@ -2477,33 +2481,33 @@ Output: Your username is too long. - + Sinu kasutajanimi on liiga pikk. Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Sinu kasutajanimi sisaldab sobimatuid tähemärke. Lubatud on ainult väiketähed ja numbrid. Your hostname is too short. - + Sinu hostinimi on liiga lühike. Your hostname is too long. - + Sinu hostinimi on liiga pikk. Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - + Sinu hostinimi sisaldab sobimatuid tähemärke. Ainult tähed, numbrid ja sidekriipsud on lubatud. Your passwords do not match! - + Sinu paroolid ei ühti! @@ -2511,7 +2515,7 @@ Output: Users - + Kasutajad @@ -2519,57 +2523,57 @@ Output: Form - + Form &Language: - + &Keel: &Release notes - + &Väljalaskemärkmed &Known issues - + &Teadaolevad vead &Support - + &Tugi &About - + &Teave <h1>Welcome to the %1 installer.</h1> - + <h1>Tere tulemast %1 installijasse.</h1> <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Tere tulemast Calamares'i installijasse %1 jaoks.</h1> About %1 installer - + Teave %1 installija kohta <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/><strong>%2<br/>%3 jaoks</strong><br/><br/>Autoriõigus 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autoriõigus 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Täname: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg ja <a href="https://www.transifex.com/calamares/calamares/">Calamares'i tõlkijate meeskonda</a>.<br/><br/><a href="https://calamares.io/">Calamares'i</a> arendust toetab <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. %1 support - + %1 tugi @@ -2577,7 +2581,7 @@ Output: Welcome - + Tervist \ No newline at end of file diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index b06c45c41..3e6c2aca9 100644 --- a/lang/calamares_ja.ts +++ b/lang/calamares_ja.ts @@ -184,7 +184,7 @@ &Install - + インストール(&I) @@ -1381,12 +1381,12 @@ The installer will quit and all changes will be lost. The password contains monotonic sequence longer than %1 characters - + パスワードに %1 文字以上の単調な文字列が含まれています The password contains too long of a monotonic character sequence - + パスワードに限度を超えた単調な文字列が含まれています @@ -1815,7 +1815,7 @@ The installer will quit and all changes will be lost. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + KDE Plasma デスクトップの外観を選んでください。この作業はスキップでき、インストール後に外観を設定することができます。外観を選択し、クリックすることにより外観のプレビューが表示されます。 @@ -2341,7 +2341,7 @@ Output: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 diff --git a/lang/calamares_pl.ts b/lang/calamares_pl.ts index df078f2ef..f3c540d54 100644 --- a/lang/calamares_pl.ts +++ b/lang/calamares_pl.ts @@ -1814,7 +1814,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + Wybierz wygląd i styl pulpitu Plazmy KDE. Możesz również pominąć ten krok i skonfigurować wygląd po zainstalowaniu systemu. Kliknięcie przycisku wyboru wyglądu i stylu daje podgląd na żywo tego wyglądu i stylu. @@ -2392,7 +2392,7 @@ Wyjście: Configuring machine feedback. - + Konfiguracja machine feedback From 0ad74a5913e2bb719c553ca246b719c7514fbebe Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 10 May 2018 18:06:09 -0400 Subject: [PATCH 136/385] i18n: [desktop] Automatic merge of Transifex translations --- calamares.desktop | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/calamares.desktop b/calamares.desktop index dc3e17eaf..167e62a46 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -42,6 +42,10 @@ Icon[es]=calamares GenericName[es]=Instalador del Sistema Comment[es]=Calamares — Instalador del Sistema Name[es]=Instalar Sistema +Icon[et]=calamares +GenericName[et]=Süsteemi installija +Comment[et]=Calamares — Süsteemi installija +Name[et]=Installi süsteem Name[eu]=Sistema instalatu Name[es_PR]=Instalar el sistema Icon[fr]=calamares From 03c2329093361f9ff0d2fb2cdf7f39a06ceefb7d Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 10 May 2018 18:06:10 -0400 Subject: [PATCH 137/385] i18n: [dummypythonqt] Automatic merge of Transifex translations --- .../lang/eo/LC_MESSAGES/dummypythonqt.mo | Bin 0 -> 423 bytes .../lang/eo/LC_MESSAGES/dummypythonqt.po | 42 ++++++++++++++++++ .../lang/et/LC_MESSAGES/dummypythonqt.mo | Bin 422 -> 913 bytes .../lang/et/LC_MESSAGES/dummypythonqt.po | 15 ++++--- 4 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo create mode 100644 src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.po diff --git a/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 0000000000000000000000000000000000000000..6d1a40f15392bb389f1df7fb32fea701df7275ed GIT binary patch literal 423 zcmYL^QBT4!5XUk4v`3$PsEH2{J=PIaDB)qkP@-cCP7-~q;}|nryR=2{gZTCQEOu(} zpZs#y_J7yAuj8Z7hSh=P#Bydiv|Lzf^(>`*?Aus-_KKB!!_>fZ2@6y@mx7VlAKm-6 z0a*m|$7wWk=2%H(Ak*jyH=fIys7{S;lcM%Jx=P%JLa2~kGHatT}ke7@Ex88BkC0D3jV~e!gq4dggQMxTBoQA>wQeK-nBPk3D1Ib5ahc&n}ZdLGH z3`n}>N~0M*B@^iV`|7V&s2~ujT;?KUr1zSe{h*AXbmC&8cmWfsO3jF, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Esperanto (https://www.transifex.com/calamares/teams/20061/eo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "" + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "" diff --git a/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo index 86e51fbf4780e90cd78545c14840e91b87849740..ac3fe38901a5c30ddce1f007859964f771b5286d 100644 GIT binary patch delta 577 zcmZvYOD_Xa6vvNuL~JA;5s_nsq;006RCj`nM?5-gY~1R_=scwNmNX(=OKiFj-@rE@ zBz7b5Ei5dptSqej@03=gC-a;CJ!ZNm)Vv(z613nt z`vp{uk;#fb=^aO&WwksZ`$#rvMc7e{M>kC;*tF%NFCGUuR-&vje11_)Z}q0*Rw{1I zvNe}UPFHWNVWs1CQTWOgIw)p%P2?RF<0&hdu0Fq2wz05 delta 87 zcmbQpzKq%8o)F7a1|VPrVi_P-0b*t#)&XJ=umIv5prj>`2C0F8$?=Rqyym(FmbwNe T3I-NdhGvuZF&a$fX1WgmlH3a{ diff --git a/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.po index 50ed84e86..d6f7455b6 100644 --- a/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.po @@ -8,8 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-04 08:16-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Madis, 2018\n" "Language-Team: Estonian (https://www.transifex.com/calamares/teams/20061/et/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,24 +20,24 @@ msgstr "" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" -msgstr "" +msgstr "Klõpsa mind!" #: src/modules/dummypythonqt/main.py:94 msgid "A new QLabel." -msgstr "" +msgstr "Uus QLabel." #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" -msgstr "" +msgstr "Testiv PythonQt ViewStep" #: src/modules/dummypythonqt/main.py:183 msgid "The Dummy PythonQt Job" -msgstr "" +msgstr "Testiv PythonQt Töö" #: src/modules/dummypythonqt/main.py:186 msgid "This is the Dummy PythonQt Job. The dummy job says: {}" -msgstr "" +msgstr "See on testiv PythonQt töö. Testiv töö ütleb: {}" #: src/modules/dummypythonqt/main.py:190 msgid "A status message for Dummy PythonQt Job." -msgstr "" +msgstr "Olekusõnum testivale PythonQt tööle." From d354027114f5af3c355c311c340b0b2817816fd4 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 10 May 2018 18:06:11 -0400 Subject: [PATCH 138/385] i18n: [python] Automatic merge of Transifex translations --- lang/python/eo/LC_MESSAGES/python.mo | Bin 0 -> 423 bytes lang/python/eo/LC_MESSAGES/python.po | 57 +++++++++++++++++++++++++++ lang/python/et/LC_MESSAGES/python.mo | Bin 422 -> 1113 bytes lang/python/et/LC_MESSAGES/python.po | 21 +++++----- lang/python/ja/LC_MESSAGES/python.mo | Bin 1063 -> 1164 bytes lang/python/ja/LC_MESSAGES/python.po | 2 +- 6 files changed, 69 insertions(+), 11 deletions(-) create mode 100644 lang/python/eo/LC_MESSAGES/python.mo create mode 100644 lang/python/eo/LC_MESSAGES/python.po diff --git a/lang/python/eo/LC_MESSAGES/python.mo b/lang/python/eo/LC_MESSAGES/python.mo new file mode 100644 index 0000000000000000000000000000000000000000..6d1a40f15392bb389f1df7fb32fea701df7275ed GIT binary patch literal 423 zcmYL^QBT4!5XUk4v`3$PsEH2{J=PIaDB)qkP@-cCP7-~q;}|nryR=2{gZTCQEOu(} zpZs#y_J7yAuj8Z7hSh=P#Bydiv|Lzf^(>`*?Aus-_KKB!!_>fZ2@6y@mx7VlAKm-6 z0a*m|$7wWk=2%H(Ak*jyH=fIys7{S;lcM%Jx=P%JLa2~kGHatT}ke7@Ex88BkC0D3jV~e!gq4dggQMxTBoQA>wQeK-nBPk3D1Ib5ahc&n}ZdLGH z3`n}>N~0M*B@^iV`|7V&s2~ujT;?KUr1zSe{h*AXbmC&8cmWfsO3jF, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Esperanto (https://www.transifex.com/calamares/teams/20061/eo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 +msgid "Install packages." +msgstr "" + +#: src/modules/packages/main.py:66 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:69 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" diff --git a/lang/python/et/LC_MESSAGES/python.mo b/lang/python/et/LC_MESSAGES/python.mo index 9cd061f07577742de42a4ab2f9c19e195832f7de..0c36efd4eda18685089f52b755d4278d3faa7d72 100644 GIT binary patch literal 1113 zcmZ`%%We}f6dj;IiG+BF#|9*`h)C2rGpP!cDOrSe+D4Ej3TY+Sxie1UX2u?kowgC; z1K4%LC$M8nSKXj|1Um%c6ZiqnG>@iKTF0CvEK;Je^&;E%v};2zfOl4acoAAnQ6L+}moXD|hS z11ug<v?Rgv1TFeEYayR6OiBqL;-D9OhgXY$#c>_z!tyoaWG zqI|A(+B8-oxopl?J!w#AlWfi?49W+2tHC3+cTRqiJuki`qg02qM97Km<37=FY(Rb)FIDxm#SM&Z6U>kT&?9NX18WZ@qGZR%>*%Og3t6wKDgvw&`VFGi_)y zVN!?8sKg~z76?6mqKZw~?%{1|le5Sro;FGfCP}ViOsrko-rwIZn6z26_(8!}k?pgP zMJ(akHt5mzg5x|b+T7UrOtn(=PA^<6IGGhC4VReTk8u&h4~!j$Ovq*8cUYpiDQz{^ z=+bFjI;zDJ>PcS(_z^By+7V`QPM2_#sfWFUg>+3Nk#>oUPnNp0uuO)ZrJN*>N~D-y z&R9*Zjo2F*@Ub9fa5Ok7oJ-@4_{4{tCjv%`2C0F8$=4YBCpR(O2LKi$ B2#Npz diff --git a/lang/python/et/LC_MESSAGES/python.po b/lang/python/et/LC_MESSAGES/python.po index 154377948..4f515daf3 100644 --- a/lang/python/et/LC_MESSAGES/python.po +++ b/lang/python/et/LC_MESSAGES/python.po @@ -10,6 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Madis, 2018\n" "Language-Team: Estonian (https://www.transifex.com/calamares/teams/20061/et/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,39 +20,39 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Haagi failisüsteemid lahti." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "" +msgstr "Testiv python'i töö." #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "" +msgstr "Testiv python'i aste {}" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "" +msgstr "Genereeri masina-id." #: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" +msgstr "Pakkide töötlemine (%(count)d / %(total)d)" #: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." -msgstr "" +msgstr "Installi pakid." #: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Installin ühe paki." +msgstr[1] "Installin %(num)d pakki." #: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Eemaldan ühe paki." +msgstr[1] "Eemaldan %(num)d pakki." diff --git a/lang/python/ja/LC_MESSAGES/python.mo b/lang/python/ja/LC_MESSAGES/python.mo index 78aba564544168906a0f9323e3d39000b1de413f..f9b74f4056aada4d10dbcb91654fb678066a9b6d 100644 GIT binary patch delta 311 zcmZ3^(ZgAPPl#nI0}yZmu?!HW05LBRuK{8ZcmTwLK>QGhMS%D-l;&WBh|2p%=LCxsbeP8o!bW9SAlRDco-fV44?J_@CO0%>(1 zUzde}!3;=;0%@Qb3>-kr1jHZ!ax^;-vw}EK08|DBK1aNXyJg zRVc13E=kSZyo|At$^3Ei)W=N=A2%&|+`Rg6)Aq+rJ0CZPvuLE@~83=Aef zS{z7g18E;1Z2+VzfOHQKuLNR{Ix}X7eh(-e3#3&T7~B|&fDB`xg6UBDG>}#Y^8W*A lpk4-cAZ7((AeVs+h*^Lb^+x6gU6? diff --git a/lang/python/ja/LC_MESSAGES/python.po b/lang/python/ja/LC_MESSAGES/python.po index 220ce8ac3..949fb9af5 100644 --- a/lang/python/ja/LC_MESSAGES/python.po +++ b/lang/python/ja/LC_MESSAGES/python.po @@ -20,7 +20,7 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "ファイルシステムをアンマウントする。" #: src/modules/dummypython/main.py:44 msgid "Dummy python job." From 70902272693f45f508370f1a867bf3922fefb694 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 14 May 2018 05:10:45 -0400 Subject: [PATCH 139/385] i18n: fix up tooling - suppress languages we've decided not to have anymore - prevent txpull from losing .desktop keys it doesn't understand, by splitting off a desktop.in file with only the (source) fields. --- calamares.desktop.in | 15 +++++++++++++++ ci/txpull.sh | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 calamares.desktop.in diff --git a/calamares.desktop.in b/calamares.desktop.in new file mode 100644 index 000000000..0c4041bcb --- /dev/null +++ b/calamares.desktop.in @@ -0,0 +1,15 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Install System +GenericName=System Installer +Keywords=calamares;system;installer +TryExec=calamares +Exec=pkexec /usr/bin/calamares +Comment=Calamares — System Installer +Icon=calamares +Terminal=false +StartupNotify=true +Categories=Qt;System; +X-AppStream-Ignore=true + diff --git a/ci/txpull.sh b/ci/txpull.sh index 92986fdfc..4206739dd 100755 --- a/ci/txpull.sh +++ b/ci/txpull.sh @@ -29,6 +29,25 @@ test -f "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ; export QT_SELECT=5 tx pull --force --source --all +### CLEANUP TRANSLATIONS +# +# Some languages have been deprecated. They may still exist in Transifex, +# so clean them up after pulling. +# +drop_language() { + rm -rf lang/python/"$1" src/modules/dummypythonqt/lang/"$1" lang/calamares_"$1".ts + grep -v "\\[$1]" calamares.desktop > calamares.desktop.new + mv calamares.desktop.new calamares.desktop +} + +drop_language es_ES +drop_language pl_PL + +# Also fix the .desktop file, which has some fields removed by Transifex. +# +{ cat calamares.desktop.in ; grep "\\[[a-zA-Z_@]*]=" calamares.desktop ; } > calamares.desktop.new +mv calamares.desktop.new calamares.desktop + ### COMMIT TRANSLATIONS # # Produce multiple commits (for the various parts of the i18n From b0e5e132217c8fc4cfba68ec12342b828e2b52a5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 14 May 2018 05:16:38 -0400 Subject: [PATCH 140/385] i18n: enable Esperanto translation --- CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c10b68d6..41fc7f3dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -203,7 +203,6 @@ endif() # (sr@latin in particular) may need special handling in CalamaresUtils.cpp. # # TODO: drop the es_ES translation from Transifex -# TODO: import Esperanto once it has some translated strings # # NOTE: when updating the list from Transifex, copy these four lines # and prefix each variable name with "p", so that the automatic @@ -211,8 +210,8 @@ endif() set( _tx_complete da pt_PT ro tr_TR zh_TW zh_CN pt_BR fr hr ca lt id cs_CZ ) set( _tx_good sq es pl ja sk it_IT hu ru he de nl bg uk ) set( _tx_ok ast is ar sv el es_MX gl en_GB th fi_FI hi eu sr nb - sl sr@latin mr es_PR kk kn et ) -set( _tx_bad uz eo lo ur gu fr_CH fa ) + sl sr@latin mr es_PR kk kn et eo ) +set( _tx_bad uz lo ur gu fr_CH fa ) # check translation update set( prev_tx ${p_tx_complete} ${p_tx_good} ${p_tx_ok} ${p_tx_bad} ) From 39bf2eb9aa9d6d8db7e3204bf7afcb75a14c6f51 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 14 May 2018 06:27:36 -0400 Subject: [PATCH 141/385] [welcome] Fix display of unsupported locales - Some locales have no nativeLanguageName(), so instead display the locale id (e.g. "eo") and the resulting language in English (which, if it is really unsupported, will be "C"). --- src/modules/welcome/WelcomePage.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index 16e44d72e..0a1d2fb7d 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -141,6 +141,9 @@ struct LocaleLabel QString sortKey = QLocale::languageToString( m_locale.language() ); QString label = m_locale.nativeLanguageName(); + if ( label.isEmpty() ) + label = QString( QLatin1Literal( "* %1 (%2)" ) ).arg( locale, sortKey ); + if ( locale.contains( '_' ) && QLocale::countriesForLanguage( m_locale.language() ).count() > 2 ) { QLatin1Literal countrySuffix( " (%1)" ); From b5d667f76e985f437dcdc005888e3d0c991934e9 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 14 May 2018 16:05:55 -0400 Subject: [PATCH 142/385] i18n: disable Esperanto again I consider this a Qt bug: there is an enum value for the language, the language is fully (?) detailed in the ICU tables, and yet it gets mapped hard to C locale. --- CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 41fc7f3dc..f6d5dca1c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -203,6 +203,8 @@ endif() # (sr@latin in particular) may need special handling in CalamaresUtils.cpp. # # TODO: drop the es_ES translation from Transifex +# TODO: move eo (Esperanto) to _ok once Qt can actually create a +# locale for it. # # NOTE: when updating the list from Transifex, copy these four lines # and prefix each variable name with "p", so that the automatic @@ -210,8 +212,8 @@ endif() set( _tx_complete da pt_PT ro tr_TR zh_TW zh_CN pt_BR fr hr ca lt id cs_CZ ) set( _tx_good sq es pl ja sk it_IT hu ru he de nl bg uk ) set( _tx_ok ast is ar sv el es_MX gl en_GB th fi_FI hi eu sr nb - sl sr@latin mr es_PR kk kn et eo ) -set( _tx_bad uz lo ur gu fr_CH fa ) + sl sr@latin mr es_PR kk kn et ) +set( _tx_bad uz lo ur gu fr_CH fa eo ) # check translation update set( prev_tx ${p_tx_complete} ${p_tx_good} ${p_tx_ok} ${p_tx_bad} ) From fda2e54e0f1cec9cbb95cb71327971ca712c1ad7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 15 May 2018 05:40:52 -0400 Subject: [PATCH 143/385] [partition] Refactor filling combobox with moint points - Move to one place which handles the standard mount points - While here, introduce explicit "(no mount point)" string into the combo box. This is prep-work for issue #951. --- src/modules/partition/CMakeLists.txt | 1 + .../partition/gui/CreatePartitionDialog.cpp | 8 +--- .../gui/EditExistingPartitionDialog.cpp | 9 +--- src/modules/partition/gui/MountPoints.cpp | 48 +++++++++++++++++++ src/modules/partition/gui/MountPoints.h | 41 ++++++++++++++++ 5 files changed, 94 insertions(+), 13 deletions(-) create mode 100644 src/modules/partition/gui/MountPoints.cpp create mode 100644 src/modules/partition/gui/MountPoints.h diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index 156ff86f5..dc6735f28 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -38,6 +38,7 @@ if ( KPMcore_FOUND ) gui/DeviceInfoWidget.cpp gui/EditExistingPartitionDialog.cpp gui/EncryptWidget.cpp + gui/MountPoints.cpp gui/PartitionPage.cpp gui/PartitionBarsView.cpp gui/PartitionLabelsView.cpp diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index 5952a61a1..f790f4d38 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -23,6 +23,7 @@ #include "core/PartitionInfo.h" #include "core/PartUtils.h" #include "core/KPMHelpers.h" +#include "gui/MountPoints.h" #include "gui/PartitionSizeController.h" #include "ui_CreatePartitionDialog.h" @@ -81,12 +82,7 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par m_ui->lvNameLineEdit->setValidator(validator); } - QStringList mountPoints = { "/", "/boot", "/home", "/opt", "/usr", "/var" }; - if ( PartUtils::isEfiSystem() ) - mountPoints << Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString(); - mountPoints.removeDuplicates(); - mountPoints.sort(); - m_ui->mountPointComboBox->addItems( mountPoints ); + standardMountPoints( *(m_ui->mountPointComboBox) ); if ( device->partitionTable()->type() == PartitionTable::msdos || device->partitionTable()->type() == PartitionTable::msdos_sectorbased ) diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index 2212c104c..e52627fec 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -28,6 +28,7 @@ #include #include "core/PartUtils.h" #include +#include "gui/MountPoints.h" #include #include @@ -55,13 +56,7 @@ EditExistingPartitionDialog::EditExistingPartitionDialog( Device* device, Partit , m_usedMountPoints( usedMountPoints ) { m_ui->setupUi( this ); - - QStringList mountPoints = { "/", "/boot", "/home", "/opt", "/usr", "/var" }; - if ( PartUtils::isEfiSystem() ) - mountPoints << Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString(); - mountPoints.removeDuplicates(); - mountPoints.sort(); - m_ui->mountPointComboBox->addItems( mountPoints ); + standardMountPoints( *(m_ui->mountPointComboBox) ); QColor color = ColorUtils::colorForPartition( m_partition ); m_partitionSizeController->init( m_device, m_partition, color ); diff --git a/src/modules/partition/gui/MountPoints.cpp b/src/modules/partition/gui/MountPoints.cpp new file mode 100644 index 000000000..03de34207 --- /dev/null +++ b/src/modules/partition/gui/MountPoints.cpp @@ -0,0 +1,48 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Aurélien Gâteau + * Copyright 2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "MountPoints.h" + +#include "core/PartUtils.h" + +#include "GlobalStorage.h" +#include "JobQueue.h" + +#include + +QStringList +standardMountPoints() +{ + QStringList mountPoints{ "/", "/boot", "/home", "/opt", "/usr", "/var" }; + if ( PartUtils::isEfiSystem() ) + mountPoints << Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString(); + mountPoints.removeDuplicates(); + mountPoints.sort(); + return mountPoints; +} + +void +standardMountPoints(QComboBox& combo) +{ + combo.clear(); + combo.addItem( combo.tr( "(no mount point)" ) ); + combo.addItems( standardMountPoints() ); +} + diff --git a/src/modules/partition/gui/MountPoints.h b/src/modules/partition/gui/MountPoints.h new file mode 100644 index 000000000..d9edd9db4 --- /dev/null +++ b/src/modules/partition/gui/MountPoints.h @@ -0,0 +1,41 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Aurélien Gâteau + * Copyright 2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef PARTITION_GUI_MOUNTPOINTS +#define PARTITION_GUI_MOUNTPOINTS + +#include + +class QComboBox; + +/** + * Returns a list of standard mount points (e.g. /, /usr, ...). + * This also includes the EFI mount point if that is necessary + * on the target system. + */ +QStringList standardMountPoints(); + +/** + * Clears the combobox and fills it with "(no mount point)" + * and the elements of standardMountPoints(), above. + */ +void standardMountPoints( QComboBox& ); + +#endif From a4997c4be8798b22b7f41a72694d292fff857624 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 15 May 2018 06:13:19 -0400 Subject: [PATCH 144/385] [partition] Convenience for selecting default mount point - map blank to the "(no mount point)" string for UI purposes --- .../partition/gui/EditExistingPartitionDialog.cpp | 3 +-- src/modules/partition/gui/MountPoints.cpp | 9 +++++++++ src/modules/partition/gui/MountPoints.h | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index e52627fec..51b5a33d7 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -56,13 +56,12 @@ EditExistingPartitionDialog::EditExistingPartitionDialog( Device* device, Partit , m_usedMountPoints( usedMountPoints ) { m_ui->setupUi( this ); - standardMountPoints( *(m_ui->mountPointComboBox) ); + standardMountPoints( *(m_ui->mountPointComboBox), PartitionInfo::mountPoint( partition ) ); QColor color = ColorUtils::colorForPartition( m_partition ); m_partitionSizeController->init( m_device, m_partition, color ); m_partitionSizeController->setSpinBox( m_ui->sizeSpinBox ); - m_ui->mountPointComboBox->setCurrentText( PartitionInfo::mountPoint( partition ) ); connect( m_ui->mountPointComboBox, &QComboBox::currentTextChanged, this, &EditExistingPartitionDialog::checkMountPointSelection ); diff --git a/src/modules/partition/gui/MountPoints.cpp b/src/modules/partition/gui/MountPoints.cpp index 03de34207..6d8dc6e04 100644 --- a/src/modules/partition/gui/MountPoints.cpp +++ b/src/modules/partition/gui/MountPoints.cpp @@ -46,3 +46,12 @@ standardMountPoints(QComboBox& combo) combo.addItems( standardMountPoints() ); } +void +standardMountPoints(QComboBox& combo, const QString& selected) +{ + standardMountPoints( combo ); + if ( selected.isEmpty() ) + combo.setCurrentIndex( 0 ); + else + combo.setCurrentText( selected ); +} diff --git a/src/modules/partition/gui/MountPoints.h b/src/modules/partition/gui/MountPoints.h index d9edd9db4..c91f24e6d 100644 --- a/src/modules/partition/gui/MountPoints.h +++ b/src/modules/partition/gui/MountPoints.h @@ -38,4 +38,10 @@ QStringList standardMountPoints(); */ void standardMountPoints( QComboBox& ); +/** + * As above, but also sets the displayed mount point to @p selected, + * unless it is empty, in which case "(no mount point)" is chosen. + */ +void standardMountPoints( QComboBox&, const QString& selected ); + #endif From a49c39bb534e9cef0789107cadb27d7e92c4b06c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 15 May 2018 06:30:18 -0400 Subject: [PATCH 145/385] [partition] Unmap mount-point special strings - Reverse "(no mount point)" to the empty string - Provide convenience pointer-taking function --- src/modules/partition/gui/CreatePartitionDialog.cpp | 6 ++---- .../partition/gui/EditExistingPartitionDialog.cpp | 6 ++---- src/modules/partition/gui/MountPoints.cpp | 10 ++++++++++ src/modules/partition/gui/MountPoints.h | 10 ++++++++++ 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index f790f4d38..ee2db315f 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -242,7 +242,7 @@ CreatePartitionDialog::createPartition() partition->setPartitionPath(m_device->deviceNode() + QStringLiteral("/") + m_ui->lvNameLineEdit->text().trimmed()); } - PartitionInfo::setMountPoint( partition, m_ui->mountPointComboBox->currentText() ); + PartitionInfo::setMountPoint( partition, selectedMountPoint( m_ui->mountPointComboBox ) ); PartitionInfo::setFormat( partition, true ); return partition; @@ -279,9 +279,7 @@ CreatePartitionDialog::updateMountPointUi() void CreatePartitionDialog::checkMountPointSelection() { - const QString& selection = m_ui->mountPointComboBox->currentText(); - - if ( m_usedMountPoints.contains( selection ) ) + if ( m_usedMountPoints.contains( selectedMountPoint( m_ui->mountPointComboBox ) ) ) { m_ui->labelMountPoint->setText( tr( "Mountpoint already in use. Please select another one." ) ); m_ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled( false ); diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index 51b5a33d7..aa066cac2 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -154,7 +154,7 @@ EditExistingPartitionDialog::setupFlagsList() void EditExistingPartitionDialog::applyChanges( PartitionCoreModule* core ) { - PartitionInfo::setMountPoint( m_partition, m_ui->mountPointComboBox->currentText() ); + PartitionInfo::setMountPoint( m_partition, selectedMountPoint(m_ui->mountPointComboBox) ); qint64 newFirstSector = m_partitionSizeController->firstSector(); qint64 newLastSector = m_partitionSizeController->lastSector(); @@ -294,9 +294,7 @@ EditExistingPartitionDialog::updateMountPointPicker() void EditExistingPartitionDialog::checkMountPointSelection() { - const QString& selection = m_ui->mountPointComboBox->currentText(); - - if ( m_usedMountPoints.contains( selection ) ) + if ( m_usedMountPoints.contains( selectedMountPoint( m_ui->mountPointComboBox ) ) ) { m_ui->labelMountPoint->setText( tr( "Mountpoint already in use. Please select another one." ) ); m_ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled( false ); diff --git a/src/modules/partition/gui/MountPoints.cpp b/src/modules/partition/gui/MountPoints.cpp index 6d8dc6e04..301773957 100644 --- a/src/modules/partition/gui/MountPoints.cpp +++ b/src/modules/partition/gui/MountPoints.cpp @@ -24,6 +24,7 @@ #include "GlobalStorage.h" #include "JobQueue.h" +#include "utils/Logger.h" #include @@ -55,3 +56,12 @@ standardMountPoints(QComboBox& combo, const QString& selected) else combo.setCurrentText( selected ); } + +QString +selectedMountPoint(QComboBox& combo) +{ + cDebug() << "Selected mount point" << combo.currentIndex() << combo.currentText(); + if ( combo.currentIndex() == 0 ) + return QString(); + return combo.currentText(); +} diff --git a/src/modules/partition/gui/MountPoints.h b/src/modules/partition/gui/MountPoints.h index c91f24e6d..68390da0b 100644 --- a/src/modules/partition/gui/MountPoints.h +++ b/src/modules/partition/gui/MountPoints.h @@ -44,4 +44,14 @@ void standardMountPoints( QComboBox& ); */ void standardMountPoints( QComboBox&, const QString& selected ); +/** + * Get the mount point selected in the combo box (which should + * have been set up with standardMountPoints(), above); this + * will map the topmost item (i.e. "(no mount point)") back + * to blank, to allow easy detection of no-mount-selected. + */ +QString selectedMountPoint( QComboBox& combo ); +static inline QString selectedMountPoint(QComboBox* combo) { return selectedMountPoint(*combo); } + + #endif From 4402198b375a31e65460aafd886b9f032173c4d3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 15 May 2018 08:01:18 -0400 Subject: [PATCH 146/385] [partition] Centralize setting-of-mountpoint - map empty to the 0'th index - add new entries as needed This avoids having selected index 0, but a different text. --- .../partition/gui/CreatePartitionDialog.cpp | 2 +- src/modules/partition/gui/MountPoints.cpp | 21 +++++++++++++++++++ src/modules/partition/gui/MountPoints.h | 2 ++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index ee2db315f..8338e8913 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -328,7 +328,7 @@ CreatePartitionDialog::initFromPartitionToCreate( Partition* partition ) m_ui->fsComboBox->setCurrentText( FileSystem::nameForType( fsType ) ); // Mount point - m_ui->mountPointComboBox->setCurrentText( PartitionInfo::mountPoint( partition ) ); + setSelectedMountPoint( m_ui->mountPointComboBox, PartitionInfo::mountPoint( partition ) ); updateMountPointUi(); } diff --git a/src/modules/partition/gui/MountPoints.cpp b/src/modules/partition/gui/MountPoints.cpp index 301773957..18a89fca0 100644 --- a/src/modules/partition/gui/MountPoints.cpp +++ b/src/modules/partition/gui/MountPoints.cpp @@ -65,3 +65,24 @@ selectedMountPoint(QComboBox& combo) return QString(); return combo.currentText(); } + +void +setSelectedMountPoint(QComboBox& combo, const QString& selected) +{ + cDebug() << "Setting mount point" << selected; + if ( selected.isEmpty() ) + combo.setCurrentIndex( 0 ); // (no mount point) + else + { + for ( int i = 0; i < combo.count(); ++i ) + if ( selected == combo.itemText( i ) ) + { + cDebug() << " .. found at index" << i; + combo.setCurrentIndex( i ); + return; + } + cDebug() << " .. new item"; + combo.addItem( selected ); + combo.setCurrentIndex( combo.count() - 1); + } +} diff --git a/src/modules/partition/gui/MountPoints.h b/src/modules/partition/gui/MountPoints.h index 68390da0b..23bb9b0f1 100644 --- a/src/modules/partition/gui/MountPoints.h +++ b/src/modules/partition/gui/MountPoints.h @@ -53,5 +53,7 @@ void standardMountPoints( QComboBox&, const QString& selected ); QString selectedMountPoint( QComboBox& combo ); static inline QString selectedMountPoint(QComboBox* combo) { return selectedMountPoint(*combo); } +void setSelectedMountPoint( QComboBox& combo, const QString& selected ); +static inline void setSelectedMountPoint(QComboBox* combo, const QString& selected) { setSelectedMountPoint( *combo, selected); } #endif From 310555f16be0c87f52f2a153b7562aeb7571ba75 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 15 May 2018 08:06:45 -0400 Subject: [PATCH 147/385] [partition] Add /srv to standard mount-points list. --- src/modules/partition/gui/MountPoints.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/partition/gui/MountPoints.cpp b/src/modules/partition/gui/MountPoints.cpp index 18a89fca0..b11d8ef7c 100644 --- a/src/modules/partition/gui/MountPoints.cpp +++ b/src/modules/partition/gui/MountPoints.cpp @@ -31,7 +31,7 @@ QStringList standardMountPoints() { - QStringList mountPoints{ "/", "/boot", "/home", "/opt", "/usr", "/var" }; + QStringList mountPoints{ "/", "/boot", "/home", "/opt", "/srv", "/usr", "/var" }; if ( PartUtils::isEfiSystem() ) mountPoints << Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString(); mountPoints.removeDuplicates(); From 255a99d714f1515a9d370d46dd4aae96bd93fe3d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 15 May 2018 08:13:15 -0400 Subject: [PATCH 148/385] [partition] Drop now-unneeded debugging --- src/modules/partition/gui/MountPoints.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/modules/partition/gui/MountPoints.cpp b/src/modules/partition/gui/MountPoints.cpp index b11d8ef7c..4e6a762bc 100644 --- a/src/modules/partition/gui/MountPoints.cpp +++ b/src/modules/partition/gui/MountPoints.cpp @@ -60,7 +60,6 @@ standardMountPoints(QComboBox& combo, const QString& selected) QString selectedMountPoint(QComboBox& combo) { - cDebug() << "Selected mount point" << combo.currentIndex() << combo.currentText(); if ( combo.currentIndex() == 0 ) return QString(); return combo.currentText(); @@ -69,7 +68,6 @@ selectedMountPoint(QComboBox& combo) void setSelectedMountPoint(QComboBox& combo, const QString& selected) { - cDebug() << "Setting mount point" << selected; if ( selected.isEmpty() ) combo.setCurrentIndex( 0 ); // (no mount point) else @@ -77,11 +75,9 @@ setSelectedMountPoint(QComboBox& combo, const QString& selected) for ( int i = 0; i < combo.count(); ++i ) if ( selected == combo.itemText( i ) ) { - cDebug() << " .. found at index" << i; combo.setCurrentIndex( i ); return; } - cDebug() << " .. new item"; combo.addItem( selected ); combo.setCurrentIndex( combo.count() - 1); } From 323d20d1a56551156de29227eea3f2c5690e36e7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 15 May 2018 08:26:01 -0400 Subject: [PATCH 149/385] [partition] Avoid sneaking an empty string into the mount points combo --- src/modules/partition/gui/EditExistingPartitionDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index aa066cac2..29dad951c 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -288,7 +288,7 @@ EditExistingPartitionDialog::updateMountPointPicker() m_ui->mountPointLabel->setEnabled( canMount ); m_ui->mountPointComboBox->setEnabled( canMount ); if ( !canMount ) - m_ui->mountPointComboBox->setCurrentText( QString() ); + setSelectedMountPoint( m_ui->mountPointComboBox, QString() ); } void From 5b4668822d451f8209157709e146cf9dd120bf04 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 16 May 2018 06:15:33 -0400 Subject: [PATCH 150/385] [partition] Also update combo box index when setting up - Avoids case where you edit a partition with a mountpoint set; previously, calling setText() would update the text but leave the selected index unchanged (usually 0), so that later calling selectedMountPoint() would return empty. --- src/modules/partition/gui/MountPoints.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/modules/partition/gui/MountPoints.cpp b/src/modules/partition/gui/MountPoints.cpp index 4e6a762bc..612be3177 100644 --- a/src/modules/partition/gui/MountPoints.cpp +++ b/src/modules/partition/gui/MountPoints.cpp @@ -51,10 +51,7 @@ void standardMountPoints(QComboBox& combo, const QString& selected) { standardMountPoints( combo ); - if ( selected.isEmpty() ) - combo.setCurrentIndex( 0 ); - else - combo.setCurrentText( selected ); + setSelectedMountPoint( combo, selected ); } QString From 7df143f64a88048ba9a87c28063a69197f761d0e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 16 May 2018 06:53:35 -0400 Subject: [PATCH 151/385] [partition] Add flags to PartitionInfo - PartitionInfo maintains information on "what is desired" for a given Partition. Now we can set desired flags, alongside the flags already supported by Partition (where activeFlags() gives you the flags currently set on that partition). --- src/modules/partition/core/PartitionInfo.cpp | 22 +++++++++++++++++--- src/modules/partition/core/PartitionInfo.h | 5 +++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/modules/partition/core/PartitionInfo.cpp b/src/modules/partition/core/PartitionInfo.cpp index 72cca8976..dcd49d2e9 100644 --- a/src/modules/partition/core/PartitionInfo.cpp +++ b/src/modules/partition/core/PartitionInfo.cpp @@ -27,8 +27,9 @@ namespace PartitionInfo { -static const char* MOUNT_POINT_PROPERTY = "_calamares_mountPoint"; -static const char* FORMAT_PROPERTY = "_calamares_format"; +static const char MOUNT_POINT_PROPERTY[] = "_calamares_mountPoint"; +static const char FORMAT_PROPERTY[] = "_calamares_format"; +static const char FLAGS_PROPERTY[] = "_calamares_flags"; QString mountPoint( Partition* partition ) @@ -54,18 +55,33 @@ setFormat( Partition* partition, bool value ) partition->setProperty( FORMAT_PROPERTY, value ); } +PartitionTable::Flags flags(const Partition* partition) +{ + auto v = partition->property( FLAGS_PROPERTY ); + if (v.type() == QVariant::Int ) + return static_cast( v.toInt() ); + return partition->activeFlags(); +} + +void setFlags(Partition* partition, PartitionTable::Flags f) +{ + partition->setProperty( FLAGS_PROPERTY, PartitionTable::Flags::Int( f ) ); +} + void reset( Partition* partition ) { partition->setProperty( MOUNT_POINT_PROPERTY, QVariant() ); partition->setProperty( FORMAT_PROPERTY, QVariant() ); + partition->setProperty( FLAGS_PROPERTY, QVariant() ); } bool isDirty( Partition* partition ) { return !mountPoint( partition ).isEmpty() - || format( partition ); + || format( partition ) + || flags( partition ) != partition->activeFlags(); } } // namespace diff --git a/src/modules/partition/core/PartitionInfo.h b/src/modules/partition/core/PartitionInfo.h index 2474a3a2d..9003bf997 100644 --- a/src/modules/partition/core/PartitionInfo.h +++ b/src/modules/partition/core/PartitionInfo.h @@ -21,6 +21,8 @@ #include #include +#include + class Partition; /** @@ -45,6 +47,9 @@ void setMountPoint( Partition* partition, const QString& value ); bool format( Partition* partition ); void setFormat( Partition* partition, bool value ); +PartitionTable::Flags flags( const Partition* partition ); +void setFlags( Partition* partition, PartitionTable::Flags f ); + void reset( Partition* partition ); /** From 6739b81c2ac119636f816b2b917dc4e372bfb0df Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 16 May 2018 07:13:35 -0400 Subject: [PATCH 152/385] [partition] Tell PartitionInfo about desired flags - When creating a partition, or changing flags, tell the PartitionInfo about those desired flags. --- src/modules/partition/core/PartitionCoreModule.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index 43ba33d7b..f636d15bb 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -258,6 +258,7 @@ PartitionCoreModule::createPartition( Device* device, { SetPartFlagsJob* fJob = new SetPartFlagsJob( device, partition, flags ); deviceInfo->jobs << Calamares::job_ptr( fJob ); + PartitionInfo::setFlags( partition, flags ); } refresh(); @@ -381,8 +382,8 @@ PartitionCoreModule::setPartitionFlags( Device* device, PartitionModel::ResetHelper( partitionModelForDevice( device ) ); SetPartFlagsJob* job = new SetPartFlagsJob( device, partition, flags ); - deviceInfo->jobs << Calamares::job_ptr( job ); + PartitionInfo::setFlags( partition, flags ); refresh(); } From 0df304b206d71ed3f8d3e3c170ccd39dfccb1165 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 16 May 2018 07:19:34 -0400 Subject: [PATCH 153/385] [partition] Preserve desired partition flags - Use the desired (future) flags, if set, to initialize the flags checkboxes. If there are no future flags set, this returns active flags as before. - This fixes the situation where editing a partition, changing flags, then editing it *again* re-starts with the original flags instead of the modified flags. --- src/modules/partition/gui/EditExistingPartitionDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index 29dad951c..6ce23cdfd 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -141,7 +141,7 @@ EditExistingPartitionDialog::setupFlagsList() m_ui->m_listFlags->addItem( item ); item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled ); item->setData( Qt::UserRole, f ); - item->setCheckState( ( m_partition->activeFlags() & f ) ? + item->setCheckState( ( PartitionInfo::flags( m_partition ) & f ) ? Qt::Checked : Qt::Unchecked ); } From 336b8c758aa6974fcccde3a2d93a14a6c86746b3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 16 May 2018 07:28:30 -0400 Subject: [PATCH 154/385] [partition] Consider the future flags when checking EFI bootability - If we're changing the flags to enable EFI boot, then that's enough to satisfy the (future) EFI bootability check. This is for issue #622 as well. Fixes #884. --- src/modules/partition/core/PartUtils.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp index 775fcee66..2c2944997 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -22,6 +22,7 @@ #include "core/DeviceModel.h" #include "core/KPMHelpers.h" +#include "core/PartitionInfo.h" #include "core/PartitionIterator.h" #include @@ -343,8 +344,10 @@ isEfiSystem() bool isEfiBootable( const Partition* candidate ) { + auto flags = PartitionInfo::flags( candidate ); + /* If bit 17 is set, old-style Esp flag, it's OK */ - if ( candidate->activeFlags().testFlag( PartitionTable::FlagEsp ) ) + if ( flags.testFlag( PartitionTable::FlagEsp ) ) return true; @@ -359,7 +362,7 @@ isEfiBootable( const Partition* candidate ) const PartitionTable* table = dynamic_cast( root ); return table && ( table->type() == PartitionTable::TableType::gpt ) && - candidate->activeFlags().testFlag( PartitionTable::FlagBoot ); + flags.testFlag( PartitionTable::FlagBoot ); } } // nmamespace PartUtils From 950cc9070d0082008551d213bbf1817b8ead036a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 16 May 2018 08:34:33 -0400 Subject: [PATCH 155/385] [partition] Rename MountPoints to PartitionDialogHelpers This file is full of helper functions for the partition-editing dialogs. At first it was just mount-point helper functions, but there is other functionality that can be refactored. --- src/modules/partition/CMakeLists.txt | 2 +- src/modules/partition/gui/CreatePartitionDialog.cpp | 2 +- src/modules/partition/gui/EditExistingPartitionDialog.cpp | 2 +- .../gui/{MountPoints.cpp => PartitionDialogHelpers.cpp} | 2 +- .../partition/gui/{MountPoints.h => PartitionDialogHelpers.h} | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) rename src/modules/partition/gui/{MountPoints.cpp => PartitionDialogHelpers.cpp} (98%) rename src/modules/partition/gui/{MountPoints.h => PartitionDialogHelpers.h} (95%) diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index dc6735f28..cfc5e567e 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -38,9 +38,9 @@ if ( KPMcore_FOUND ) gui/DeviceInfoWidget.cpp gui/EditExistingPartitionDialog.cpp gui/EncryptWidget.cpp - gui/MountPoints.cpp gui/PartitionPage.cpp gui/PartitionBarsView.cpp + gui/PartitionDialogHelpers.cpp gui/PartitionLabelsView.cpp gui/PartitionSizeController.cpp gui/PartitionSplitterWidget.cpp diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index 8338e8913..310987f93 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -23,7 +23,7 @@ #include "core/PartitionInfo.h" #include "core/PartUtils.h" #include "core/KPMHelpers.h" -#include "gui/MountPoints.h" +#include "gui/PartitionDialogHelpers.h" #include "gui/PartitionSizeController.h" #include "ui_CreatePartitionDialog.h" diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index 6ce23cdfd..8a64cb27c 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -28,7 +28,7 @@ #include #include "core/PartUtils.h" #include -#include "gui/MountPoints.h" +#include "gui/PartitionDialogHelpers.h" #include #include diff --git a/src/modules/partition/gui/MountPoints.cpp b/src/modules/partition/gui/PartitionDialogHelpers.cpp similarity index 98% rename from src/modules/partition/gui/MountPoints.cpp rename to src/modules/partition/gui/PartitionDialogHelpers.cpp index 612be3177..b3bb0d33a 100644 --- a/src/modules/partition/gui/MountPoints.cpp +++ b/src/modules/partition/gui/PartitionDialogHelpers.cpp @@ -18,7 +18,7 @@ * along with Calamares. If not, see . */ -#include "MountPoints.h" +#include "PartitionDialogHelpers.h" #include "core/PartUtils.h" diff --git a/src/modules/partition/gui/MountPoints.h b/src/modules/partition/gui/PartitionDialogHelpers.h similarity index 95% rename from src/modules/partition/gui/MountPoints.h rename to src/modules/partition/gui/PartitionDialogHelpers.h index 23bb9b0f1..3c497a62d 100644 --- a/src/modules/partition/gui/MountPoints.h +++ b/src/modules/partition/gui/PartitionDialogHelpers.h @@ -18,8 +18,8 @@ * along with Calamares. If not, see . */ -#ifndef PARTITION_GUI_MOUNTPOINTS -#define PARTITION_GUI_MOUNTPOINTS +#ifndef PARTITION_GUI_PARTITIONDIALOGHELPERS +#define PARTITION_GUI_PARTITIONDIALOGHELPERS #include From 4f451eece52be1160aa1600b30a702b379cd74c6 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 16 May 2018 08:41:47 -0400 Subject: [PATCH 156/385] [partition] Refactor getting the checked flags --- .../partition/gui/CreatePartitionDialog.cpp | 9 +-------- .../gui/EditExistingPartitionDialog.cpp | 9 +-------- .../partition/gui/PartitionDialogHelpers.cpp | 16 ++++++++++++++++ .../partition/gui/PartitionDialogHelpers.h | 8 ++++++++ 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index 310987f93..a2bd3fa66 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -133,14 +133,7 @@ CreatePartitionDialog::~CreatePartitionDialog() PartitionTable::Flags CreatePartitionDialog::newFlags() const { - PartitionTable::Flags flags; - - for ( int i = 0; i < m_ui->m_listFlags->count(); i++ ) - if ( m_ui->m_listFlags->item( i )->checkState() == Qt::Checked ) - flags |= static_cast< PartitionTable::Flag >( - m_ui->m_listFlags->item( i )->data( Qt::UserRole ).toInt() ); - - return flags; + return flagsFromList( *(m_ui->m_listFlags) ); } diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index 8a64cb27c..c930cdf74 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -117,14 +117,7 @@ EditExistingPartitionDialog::~EditExistingPartitionDialog() PartitionTable::Flags EditExistingPartitionDialog::newFlags() const { - PartitionTable::Flags flags; - - for ( int i = 0; i < m_ui->m_listFlags->count(); i++ ) - if ( m_ui->m_listFlags->item( i )->checkState() == Qt::Checked ) - flags |= static_cast< PartitionTable::Flag >( - m_ui->m_listFlags->item( i )->data( Qt::UserRole ).toInt() ); - - return flags; + return flagsFromList( *(m_ui->m_listFlags) ); } diff --git a/src/modules/partition/gui/PartitionDialogHelpers.cpp b/src/modules/partition/gui/PartitionDialogHelpers.cpp index b3bb0d33a..ee08412c7 100644 --- a/src/modules/partition/gui/PartitionDialogHelpers.cpp +++ b/src/modules/partition/gui/PartitionDialogHelpers.cpp @@ -27,6 +27,7 @@ #include "utils/Logger.h" #include +#include QStringList standardMountPoints() @@ -79,3 +80,18 @@ setSelectedMountPoint(QComboBox& combo, const QString& selected) combo.setCurrentIndex( combo.count() - 1); } } + + +PartitionTable::Flags +flagsFromList( const QListWidget& list ) +{ + PartitionTable::Flags flags; + + for ( int i = 0; i < list.count(); i++ ) + if ( list.item( i )->checkState() == Qt::Checked ) + flags |= static_cast< PartitionTable::Flag >( + list.item( i )->data( Qt::UserRole ).toInt() ); + + return flags; +} + diff --git a/src/modules/partition/gui/PartitionDialogHelpers.h b/src/modules/partition/gui/PartitionDialogHelpers.h index 3c497a62d..124c10463 100644 --- a/src/modules/partition/gui/PartitionDialogHelpers.h +++ b/src/modules/partition/gui/PartitionDialogHelpers.h @@ -21,9 +21,12 @@ #ifndef PARTITION_GUI_PARTITIONDIALOGHELPERS #define PARTITION_GUI_PARTITIONDIALOGHELPERS +#include + #include class QComboBox; +class QListWidget; /** * Returns a list of standard mount points (e.g. /, /usr, ...). @@ -56,4 +59,9 @@ static inline QString selectedMountPoint(QComboBox* combo) { return selectedMoun void setSelectedMountPoint( QComboBox& combo, const QString& selected ); static inline void setSelectedMountPoint(QComboBox* combo, const QString& selected) { setSelectedMountPoint( *combo, selected); } +/** + * Get the flags that have been checked in the list widget. + */ +PartitionTable::Flags flagsFromList( const QListWidget& list ); + #endif From ca03dad67beddfb59be1434cc4ce9451712fa4ba Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 16 May 2018 09:04:47 -0400 Subject: [PATCH 157/385] [partition] Refactor setting the flags UI - Setup the lsit of flags consistently, by providing the available and to-be-checked flags. - In CreatePartitionDialog, assume that ~0 is all the flags. --- .../partition/gui/CreatePartitionDialog.cpp | 22 ++-------------- .../partition/gui/CreatePartitionDialog.h | 1 - .../gui/EditExistingPartitionDialog.cpp | 26 +------------------ .../gui/EditExistingPartitionDialog.h | 1 - .../partition/gui/PartitionDialogHelpers.cpp | 21 +++++++++++++++ .../partition/gui/PartitionDialogHelpers.h | 1 + 6 files changed, 25 insertions(+), 47 deletions(-) diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index a2bd3fa66..7c1f98c0b 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -121,7 +121,8 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par m_ui->fsComboBox->setCurrentIndex( defaultFsIndex ); updateMountPointUi(); - setupFlagsList(); + setFlagList( *(m_ui->m_listFlags), static_cast< PartitionTable::Flags >( ~PartitionTable::Flags::Int(0) ), PartitionTable::Flags() ); + // Checks the initial selection. checkMountPointSelection(); } @@ -136,25 +137,6 @@ CreatePartitionDialog::newFlags() const return flagsFromList( *(m_ui->m_listFlags) ); } - -void -CreatePartitionDialog::setupFlagsList() -{ - int f = 1; - QString s; - while ( !( s = PartitionTable::flagName( static_cast< PartitionTable::Flag >( f ) ) ).isEmpty() ) - { - QListWidgetItem* item = new QListWidgetItem( s ); - m_ui->m_listFlags->addItem( item ); - item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled ); - item->setData( Qt::UserRole, f ); - item->setCheckState( Qt::Unchecked ); - - f <<= 1; - } -} - - void CreatePartitionDialog::initMbrPartitionTypeUi() { diff --git a/src/modules/partition/gui/CreatePartitionDialog.h b/src/modules/partition/gui/CreatePartitionDialog.h index 6e8e9b6fd..174d91c88 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.h +++ b/src/modules/partition/gui/CreatePartitionDialog.h @@ -64,7 +64,6 @@ private Q_SLOTS: void checkMountPointSelection(); private: - void setupFlagsList(); QScopedPointer< Ui_CreatePartitionDialog > m_ui; PartitionSizeController* m_partitionSizeController; Device* m_device; diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index c930cdf74..c0fff50a8 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -106,7 +106,7 @@ EditExistingPartitionDialog::EditExistingPartitionDialog( Device* device, Partit m_ui->fileSystemLabel->setEnabled( m_ui->formatRadioButton->isChecked() ); m_ui->fileSystemComboBox->setEnabled( m_ui->formatRadioButton->isChecked() ); - setupFlagsList(); + setFlagList( *(m_ui->m_listFlags), m_partition->availableFlags(), PartitionInfo::flags( m_partition ) ); } @@ -120,30 +120,6 @@ EditExistingPartitionDialog::newFlags() const return flagsFromList( *(m_ui->m_listFlags) ); } - -void -EditExistingPartitionDialog::setupFlagsList() -{ - int f = 1; - QString s; - while ( !( s = PartitionTable::flagName( static_cast< PartitionTable::Flag >( f ) ) ).isEmpty() ) - { - if ( m_partition->availableFlags() & f ) - { - QListWidgetItem* item = new QListWidgetItem( s ); - m_ui->m_listFlags->addItem( item ); - item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled ); - item->setData( Qt::UserRole, f ); - item->setCheckState( ( PartitionInfo::flags( m_partition ) & f ) ? - Qt::Checked : - Qt::Unchecked ); - } - - f <<= 1; - } -} - - void EditExistingPartitionDialog::applyChanges( PartitionCoreModule* core ) { diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.h b/src/modules/partition/gui/EditExistingPartitionDialog.h index b933e90ce..106ba6639 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.h +++ b/src/modules/partition/gui/EditExistingPartitionDialog.h @@ -56,7 +56,6 @@ private: QStringList m_usedMountPoints; PartitionTable::Flags newFlags() const; - void setupFlagsList(); void replacePartResizerWidget(); void updateMountPointPicker(); }; diff --git a/src/modules/partition/gui/PartitionDialogHelpers.cpp b/src/modules/partition/gui/PartitionDialogHelpers.cpp index ee08412c7..3dcf41f58 100644 --- a/src/modules/partition/gui/PartitionDialogHelpers.cpp +++ b/src/modules/partition/gui/PartitionDialogHelpers.cpp @@ -95,3 +95,24 @@ flagsFromList( const QListWidget& list ) return flags; } +void +setFlagList( QListWidget& list, PartitionTable::Flags available, PartitionTable::Flags checked ) +{ + int f = 1; + QString s; + while ( !( s = PartitionTable::flagName( static_cast< PartitionTable::Flag >( f ) ) ).isEmpty() ) + { + if ( available & f ) + { + QListWidgetItem* item = new QListWidgetItem( s ); + list.addItem( item ); + item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled ); + item->setData( Qt::UserRole, f ); + item->setCheckState( ( checked & f ) ? + Qt::Checked : + Qt::Unchecked ); + } + + f <<= 1; + } +} diff --git a/src/modules/partition/gui/PartitionDialogHelpers.h b/src/modules/partition/gui/PartitionDialogHelpers.h index 124c10463..594142993 100644 --- a/src/modules/partition/gui/PartitionDialogHelpers.h +++ b/src/modules/partition/gui/PartitionDialogHelpers.h @@ -63,5 +63,6 @@ static inline void setSelectedMountPoint(QComboBox* combo, const QString& select * Get the flags that have been checked in the list widget. */ PartitionTable::Flags flagsFromList( const QListWidget& list ); +void setFlagList( QListWidget& list, PartitionTable::Flags available, PartitionTable::Flags checked ); #endif From bd57f1f2f14f1e2da76c6a67836b8ede071b0fb8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 16 May 2018 09:14:50 -0400 Subject: [PATCH 158/385] [partition] Fix re-editing a newly created partition - If there is a partition already (newly) created, then pass that to the dialog so that it can use the setings previously applied (e.g. mount point and flags). - This avoids the case where you create or format a partition, then click on it again to edit it and the previous settings are lost. --- src/modules/partition/gui/CreatePartitionDialog.cpp | 6 +++--- src/modules/partition/gui/CreatePartitionDialog.h | 8 +++++++- src/modules/partition/gui/PartitionPage.cpp | 2 ++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index 7c1f98c0b..439583be9 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -57,7 +57,7 @@ static QSet< FileSystem::Type > s_unmountableFS( FileSystem::Lvm2_PV } ); -CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* parentPartition, const QStringList& usedMountPoints, QWidget* parentWidget ) +CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* parentPartition, Partition* partition, const QStringList& usedMountPoints, QWidget* parentWidget ) : QDialog( parentWidget ) , m_ui( new Ui_CreatePartitionDialog ) , m_partitionSizeController( new PartitionSizeController( this ) ) @@ -82,7 +82,7 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par m_ui->lvNameLineEdit->setValidator(validator); } - standardMountPoints( *(m_ui->mountPointComboBox) ); + standardMountPoints( *(m_ui->mountPointComboBox), partition ? PartitionInfo::mountPoint( partition ) : QString() ); if ( device->partitionTable()->type() == PartitionTable::msdos || device->partitionTable()->type() == PartitionTable::msdos_sectorbased ) @@ -121,7 +121,7 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par m_ui->fsComboBox->setCurrentIndex( defaultFsIndex ); updateMountPointUi(); - setFlagList( *(m_ui->m_listFlags), static_cast< PartitionTable::Flags >( ~PartitionTable::Flags::Int(0) ), PartitionTable::Flags() ); + setFlagList( *(m_ui->m_listFlags), static_cast< PartitionTable::Flags >( ~PartitionTable::Flags::Int(0) ), partition ? PartitionInfo::flags( partition ) : PartitionTable::Flags() ); // Checks the initial selection. checkMountPointSelection(); diff --git a/src/modules/partition/gui/CreatePartitionDialog.h b/src/modules/partition/gui/CreatePartitionDialog.h index 174d91c88..769edb5de 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.h +++ b/src/modules/partition/gui/CreatePartitionDialog.h @@ -42,7 +42,13 @@ class CreatePartitionDialog : public QDialog { Q_OBJECT public: - CreatePartitionDialog( Device* device, PartitionNode* parentPartition, const QStringList& usedMountPoints, QWidget* parentWidget = nullptr ); + /** + * @brief Dialog for editing a new partition. + * + * For the (unlikely) case that a newly created partition is being re-edited, + * pass a pointer to that @p partition, otherwise pass nullptr. + */ + CreatePartitionDialog( Device* device, PartitionNode* parentPartition, Partition* partition, const QStringList& usedMountPoints, QWidget* parentWidget = nullptr ); ~CreatePartitionDialog(); /** diff --git a/src/modules/partition/gui/PartitionPage.cpp b/src/modules/partition/gui/PartitionPage.cpp index c521604fb..62f82a108 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -190,6 +190,7 @@ PartitionPage::onCreateClicked() QPointer< CreatePartitionDialog > dlg = new CreatePartitionDialog( model->device(), partition->parent(), + nullptr, getCurrentUsedMountpoints(), this ); dlg->initFromFreeSpace( partition ); @@ -285,6 +286,7 @@ PartitionPage::updatePartitionToCreate( Device* device, Partition* partition ) QPointer< CreatePartitionDialog > dlg = new CreatePartitionDialog( device, partition->parent(), + partition, mountPoints, this ); dlg->initFromPartitionToCreate( partition ); From 90a2e482be76862add04577de6fc9fdbd2d30b4d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 16 May 2018 10:56:06 -0400 Subject: [PATCH 159/385] [partition] Check for available partition type before creating - Avoid situation where you make 5 or more primaries in an MSDOS partition table. FIXES #953 --- src/modules/partition/gui/PartitionPage.cpp | 27 +++++++++++++++++++++ src/modules/partition/gui/PartitionPage.h | 8 ++++++ 2 files changed, 35 insertions(+) diff --git a/src/modules/partition/gui/PartitionPage.cpp b/src/modules/partition/gui/PartitionPage.cpp index 62f82a108..426667a08 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -34,6 +34,7 @@ #include "ui_PartitionPage.h" #include "ui_CreatePartitionTableDialog.h" +#include "utils/Logger.h" #include "utils/Retranslator.h" #include "Branding.h" #include "JobQueue.h" @@ -178,6 +179,29 @@ PartitionPage::onNewPartitionTableClicked() updateBootLoaderIndex(); } +bool +PartitionPage::checkCanCreate( Device* device ) +{ + auto table = device->partitionTable(); + + if ( table->type() == PartitionTable::msdos ||table->type() == PartitionTable::msdos_sectorbased ) + { + cDebug() << "Checking MSDOS partition" << table->numPrimaries() << "primaries, max" << table->maxPrimaries(); + + if ( ( table->numPrimaries() >= table->maxPrimaries() ) && !table->hasExtended() ) + { + QMessageBox::warning( this, tr( "Can not create new partition" ), + tr( "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." ).arg( device->name() ).arg( table->numPrimaries() ) + ); + return false; + } + return true; + } + else + return true; // GPT is fine +} + void PartitionPage::onCreateClicked() { @@ -188,6 +212,9 @@ PartitionPage::onCreateClicked() Partition* partition = model->partitionForIndex( index ); Q_ASSERT( partition ); + if ( !checkCanCreate( model->device() ) ) + return; + QPointer< CreatePartitionDialog > dlg = new CreatePartitionDialog( model->device(), partition->parent(), nullptr, diff --git a/src/modules/partition/gui/PartitionPage.h b/src/modules/partition/gui/PartitionPage.h index 24cf65675..d7c823a61 100644 --- a/src/modules/partition/gui/PartitionPage.h +++ b/src/modules/partition/gui/PartitionPage.h @@ -62,6 +62,14 @@ private: void updateFromCurrentDevice(); void updateBootLoaderIndex(); + /** + * @brief Check if a new partition can be created (as primary) on the device. + * + * Returns true if a new partition can be created on the device. Provides + * a warning popup and returns false if it cannot. + */ + bool checkCanCreate( Device* ); + QStringList getCurrentUsedMountpoints(); QMutex m_revertMutex; From 9cb6a996c61d715cdcd89746cbe0c29197ba70a8 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Wed, 16 May 2018 11:02:47 -0400 Subject: [PATCH 160/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_eo.ts | 17 +++++++++-------- lang/calamares_et.ts | 34 +++++++++++++++++----------------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/lang/calamares_eo.ts b/lang/calamares_eo.ts index aeb948dbc..9fbd2b307 100644 --- a/lang/calamares_eo.ts +++ b/lang/calamares_eo.ts @@ -42,7 +42,7 @@ %1 (%2) - + %1(%2) @@ -173,29 +173,30 @@ &Cancel - + &Nuligi Cancel installation without changing the system. - + Nuligi instalado sen ŝanĝante la sistemo. &Install - + &Instali Cancel installation? - + Nuligi instalado? Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + Ĉu vi vere volas nuligi la instalan procedon? +La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. @@ -1059,7 +1060,7 @@ The installer will quit and all changes will be lost. &Cancel - + &Nuligi @@ -1182,7 +1183,7 @@ The installer will quit and all changes will be lost. %1 (%2) Language (Country) - + %1(%2) diff --git a/lang/calamares_et.ts b/lang/calamares_et.ts index 3de35d779..de707a8a7 100644 --- a/lang/calamares_et.ts +++ b/lang/calamares_et.ts @@ -9,12 +9,12 @@ This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - + See süsteem käivitati <strong>EFI</strong> käivituskeskkonnas.<br><br>Et seadistada käivitust EFI keskkonnast, peab see installija paigaldama käivituslaaduri rakenduse, näiteks <strong>GRUB</strong> või <strong>systemd-boot</strong> sinu <strong>EFI süsteemipartitsioonile</strong>. See on automaatne, välja arvatud juhul, kui valid käsitsi partitsioneerimise, sel juhul pead sa selle valima või ise looma. This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - + See süsteem käivitati <strong>BIOS</strong> käivituskeskkonnas.<br><br>Et seadistada käivitust BIOS keskkonnast, peab see installija paigaldama käivituslaaduri, näiteks <strong>GRUB</strong>, kas mõne partitsiooni algusse või <strong>Master Boot Record</strong>'i paritsioonitabeli alguse lähedale (eelistatud). See on automaatne, välja arvatud juhul, kui valid käsitsi partitsioneerimise, sel juhul pead sa selle ise seadistama. @@ -606,7 +606,7 @@ Installija sulgub ja kõik muutused kaovad. Creating a new partition table will delete all existing data on the disk. - + Uue partitsioonitabeli loomine kustutab kettalt kõik olemasolevad andmed. @@ -743,7 +743,7 @@ Installija sulgub ja kõik muutused kaovad. The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + <strong>Partitsioonitabeli</strong> tüüp valitud mäluseadmel.<br><br>Ainuke viis partitsioonitabelit muuta on see kustutada ja nullist taasluua, mis hävitab kõik andmed mäluseadmel.<br>See installija säilitab praeguse partitsioonitabeli, v.a juhul kui sa ise valid vastupidist.<br>Kui pole kindel, eelista modernsetel süsteemidel GPT-d. @@ -753,12 +753,12 @@ Installija sulgub ja kõik muutused kaovad. This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - + See on <strong>loop</strong>-seade.<br><br>See on pseudo-seade ilma partitsioonitabelita, mis muudab faili ligipääsetavaks plokiseadmena. Seda tüüpi seadistus sisaldab tavaliselt ainult ühte failisüsteemi. This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - + See installija <strong>ei suuda tuvastada partitsioonitabelit</strong>valitud mäluseadmel.<br><br>Seadmel kas pole partitsioonitabelit, see on korrumpeerunud või on tundmatut tüüpi.<br>See installija võib sulle luua uue partitsioonitabeli, kas automaatselt või läbi käsitsi partitsioneerimise lehe. @@ -768,7 +768,7 @@ Installija sulgub ja kõik muutused kaovad. <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - + <br><br>See partitsioonitabel on soovitatav ainult vanemates süsteemides, mis käivitavad <strong>BIOS</strong>-i käivituskeskkonnast. GPT on soovitatav enamus teistel juhtudel.<br><br><strong>Hoiatus:</strong> MBR partitsioonitabel on vananenud MS-DOS aja standard.<br>aVõimalik on luua inult 4 <em>põhilist</em> partitsiooni ja nendest üks võib olla <em>laiendatud</em> partitsioon, mis omakorda sisaldab mitmeid <em>loogilisi</em> partitsioone. @@ -1098,7 +1098,7 @@ Installija sulgub ja kõik muutused kaovad. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + Palun loe läbi allolevad lõppkasutaja litsensilepingud (EULAd).<br/>Kui sa tingimustega ei nõustu, ei installita omandiõigusega tarkvara ning selle asemel kasutatakse avatud lähtekoodiga alternatiive. @@ -1762,7 +1762,7 @@ Installija sulgub ja kõik muutused kaovad. An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + %1 käivitamiseks on vajalik EFI süsteemipartitsioon.<br/><br/>Et seadistada EFI süsteemipartitsiooni, mine tagasi ja vali või loo FAT32 failisüsteem sildiga <strong>esp</strong> ja monteerimispunktiga <strong>%2</strong>.<br/><br/>Sa võid jätkata ilma EFI süsteemipartitsiooni seadistamata aga su süsteem ei pruugi käivituda. @@ -1772,7 +1772,7 @@ Installija sulgub ja kõik muutused kaovad. An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + %1 käivitamiseks on vajalik EFI süsteemipartitsioon.<br/><br/>Partitsioon seadistati monteerimispunktiga <strong>%2</strong> aga sellel ei määratud <strong>esp</strong> silti.<br/>Sildi määramiseks mine tagasi ja muuda partitsiooni.<br/><br/>Sa võid jätkata ilma silti seadistamata aga su süsteem ei pruugi käivituda. @@ -1782,7 +1782,7 @@ Installija sulgub ja kõik muutused kaovad. A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + Eraldi käivituspartitsioon seadistati koos krüptitud juurpartitsiooniga, aga käivituspartitsioon ise ei ole krüptitud.<br/><br/>Selle seadistusega kaasnevad turvaprobleemid, sest tähtsad süsteemifailid hoitakse krüptimata partitsioonil.<br/>Sa võid soovi korral jätkata, aga failisüsteemi lukust lahti tegemine toimub hiljem süsteemi käivitusel.<br/>Et krüpteerida käivituspartisiooni, mine tagasi ja taasloo see, valides <strong>Krüpteeri</strong> partitsiooni loomise aknas. @@ -1790,13 +1790,13 @@ Installija sulgub ja kõik muutused kaovad. Plasma Look-and-Feel Job - Töö Plasma välimus ja tunnetus + Plasma välimuse-ja-tunnetuse töö Could not select KDE Plasma Look-and-Feel package - KDE Plasma välimuse ja tunnetuse paketti ei saanud valida + KDE Plasma välimuse-ja-tunnetuse paketti ei saanud valida @@ -1814,7 +1814,7 @@ Installija sulgub ja kõik muutused kaovad. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + Palun vali KDE Plasma Desktop'ile välimus-ja-tunnetus. Sa võid selle sammu ka vahele jätta ja seadistada välimust-ja-tunnetust siis, kui süsteem on installitud. Välimuse-ja-tunnetuse valikule klõpsates näed selle reaalajas eelvaadet. @@ -1822,7 +1822,7 @@ Installija sulgub ja kõik muutused kaovad. Look-and-Feel - Välimus ja tunnetus + Välimus-ja-tunnetus @@ -1988,7 +1988,7 @@ Väljund: <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + <strong>%2</strong><br/><br/>Sellest süsteemist ei leitud EFI süsteemipartitsiooni. Palun mine tagasi ja kasuta käsitsi partitsioneerimist, et seadistada %1. @@ -2450,7 +2450,7 @@ Väljund: Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. - + Installijälitamine aitab %1-l näha, mitu kasutajat neil on, mis riistvarale nad %1 installivad ja (märkides kaks alumist valikut) saada pidevat teavet eelistatud rakenduste kohta. Et näha, mis infot saadetakse, palun klõpsa abiikooni iga ala kõrval. From 40a4f9e66d308142d10e84640131ead8c3d58dbf Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Wed, 16 May 2018 11:02:47 -0400 Subject: [PATCH 161/385] i18n: [desktop] Automatic merge of Transifex translations --- calamares.desktop | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/calamares.desktop b/calamares.desktop index 167e62a46..6fa758604 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -148,12 +148,15 @@ Icon[ast]=calamares GenericName[ast]=Instalador del sistema Comment[ast]=Calamares — Instalador del sistema Name[ast]=Instalar sistema +Icon[eo]=calamares +GenericName[eo]=Sistema Instalilo +Comment[eo]=Calamares — Sistema Instalilo +Name[eo]=Instali Sistemo Name[es_MX]=Instalar el Sistema Icon[pt_PT]=calamares GenericName[pt_PT]=Instalador de Sistema Comment[pt_PT]=Calamares - Instalador de Sistema Name[pt_PT]=Instalar Sistema -Name[es_ES]=Instalar el sistema Icon[tr_TR]=calamares GenericName[tr_TR]=Sistem Yükleyici Comment[tr_TR]=Calamares — Sistem Yükleyici From 6d1f5433b496a4d92ba90e62867bf533fc32b68e Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Wed, 16 May 2018 11:02:48 -0400 Subject: [PATCH 162/385] i18n: [dummypythonqt] Automatic merge of Transifex translations --- .../lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo | Bin 997 -> 1049 bytes .../lang/cs_CZ/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/eo/LC_MESSAGES/dummypythonqt.mo | Bin 423 -> 968 bytes .../lang/eo/LC_MESSAGES/dummypythonqt.po | 13 +++++++------ .../lang/fa/LC_MESSAGES/dummypythonqt.mo | Bin 414 -> 434 bytes .../lang/fa/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/he/LC_MESSAGES/dummypythonqt.mo | Bin 1036 -> 1081 bytes .../lang/he/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/kk/LC_MESSAGES/dummypythonqt.mo | Bin 413 -> 418 bytes .../lang/kk/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/kn/LC_MESSAGES/dummypythonqt.mo | Bin 414 -> 434 bytes .../lang/kn/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/lt/LC_MESSAGES/dummypythonqt.mo | Bin 1012 -> 1075 bytes .../lang/lt/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/sk/LC_MESSAGES/dummypythonqt.mo | Bin 935 -> 958 bytes .../lang/sk/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/uk/LC_MESSAGES/dummypythonqt.mo | Bin 497 -> 630 bytes .../lang/uk/LC_MESSAGES/dummypythonqt.po | 4 ++-- 18 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo index 183b7d5367dbfdaa6573a383e15988c7b642506d..5f44a6bbd42f557b9c33dfba58810c6c0470fffd 100644 GIT binary patch delta 185 zcmaFLK9gfYi0L~<28IM6=4D`D@MmUV&;!!3Kw1z;_W)@bAUzLAO9AQKK-vjNU)$KJ z&B$x2YhbQmU}bfW1@+*LP1VxQDTm*MxKI=f}w$enwmnMf~ta{f~~EB mfu@2zkY%L+mb3%{h_sz8R+YvOl_1TEV9izvCX*$Y&jJ7&U?S=O delta 133 zcmbQq@sxc+i0Ljy28IM6=4D`DkY;9J&;!z%Kw1z;M*wLVAe{xIrGRuhkahyni#B#@ zGx8eh8k#E@T3Q*JX&V@BKFFxWsB3JkP>@qvl$c|yk!NdbsHtGDV4z^7ppj>1Yows2 UrjTc2YXTB91PU5W_F+B?0E!?OjsO4v diff --git a/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.po index 4c28848bf..64338fdc2 100644 --- a/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-17 19:16+0100\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: pavelrz, 2016\n" "Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" diff --git a/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo index 6d1a40f15392bb389f1df7fb32fea701df7275ed..8eac3bf2f2cec83824eaa6c5c2472ab7b7bcdfc3 100644 GIT binary patch delta 614 zcmZ{gO)o=16o!YEMzA3v#NybIRD*;xjR+|gQlimVJJr#S`!UU(xoAY1SXoHK!qQUw z1@=w&6*m5WwUzf?Qj#*6XWlvUb>=+}iI-IKbtri&&{ALmlt4eY0#SPegWw5FfoISM z-oYsN03%?iONd42H1r&N|MIY^nR#wTECsZtOS-KfS#tk+P+>H%#`2C0F8$?=T+lhv3W000eD B2dDr5 diff --git a/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.po index bd9b31d00..4fcdcfd71 100644 --- a/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.po @@ -10,6 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: tradukanto , 2018\n" "Language-Team: Esperanto (https://www.transifex.com/calamares/teams/20061/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,24 +20,24 @@ msgstr "" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" -msgstr "" +msgstr "Alklaku min!" #: src/modules/dummypythonqt/main.py:94 msgid "A new QLabel." -msgstr "" +msgstr "Nova QLabel." #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" -msgstr "" +msgstr "Formala PythonQt ViewStep" #: src/modules/dummypythonqt/main.py:183 msgid "The Dummy PythonQt Job" -msgstr "" +msgstr "La Formala PythonQt Laboro" #: src/modules/dummypythonqt/main.py:186 msgid "This is the Dummy PythonQt Job. The dummy job says: {}" -msgstr "" +msgstr "Ĉi tiu estas la Formala PythonQt Laboro. La formala laboro diras: {}" #: src/modules/dummypythonqt/main.py:190 msgid "A status message for Dummy PythonQt Job." -msgstr "" +msgstr "Statusa mesaĝo por Formala PythonQt Laboro." diff --git a/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo index be5db74c22692152248f0d3abf95225b2d0a1eac..7d5b5fc3f1bf2c5642bc315dc2147ad79fd3bfdd 100644 GIT binary patch delta 63 zcmbQoyoq^&3S-4Y)l^;!T?12H19JrfODjW@iPL{78Cfe7= 0) ? 1);\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" diff --git a/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo index 98b589db3b1e5c8f65987081f35b41dd563c0023..e569c334e032c6adc3e920809c869ba85cc1524f 100644 GIT binary patch delta 150 zcmeC-*vT;=#Pk9q149B3^D!_m7&0?3SOaMXAT0o-Yk;&BknRQ2ia`1VkoE)8uQqmS zF!EaH8kp)Dm@61qS{a&b-p6RjXlG)rP>@qvl$c|yk!Ndbs9>*PXr+*+U~8*j1Y{d2 hSSe`aDX1zK8i0fh6cY1NfUfckoE)8dpCA! wF!Gw~8d&NYm?#)nSQ(ma-p6RjC}?D@P>@qvl$c|yk*A<&t6;cUmzjqV05J{`{r~^~ diff --git a/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.po index f5e9b6389..e181b16fd 100644 --- a/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-04 08:16-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Eli Shleifer , 2017\n" "Language-Team: Hebrew (https://www.transifex.com/calamares/teams/20061/he/)\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" diff --git a/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.mo index 2b0afba0e738410dac794e28bd1984f31b29601c..260a0f437de4b83927b82dff3f1efddec3b28852 100644 GIT binary patch delta 48 zcmbQsyoh;%3S-7Z)l^;!T?12H19JrfODjW@iPL`w8(Aw9lsT?12H19JrfODjVYT?3Pev%V=ASt}IeloloC*lK9x+1MH? WsHrLB+1V->Xe!t%7;0K`F#rH!zYx~| delta 46 zcmdnQJdb&T3S-Jd)l>m= 0) ? 1);\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" diff --git a/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo index 30fb27cad9ebb71607adae3238143be6a700777a..4c7bd058e0f50eccc22f420f59e29c865326b2ef 100644 GIT binary patch delta 232 zcmeyuzL{e}h$%Z0149BM0|Ore149Ng1A{S;E(g-WKzcQhmITuKfwUBmz6qr5fb^G* zo!X4Nrn&~^3I>)|h9qoIEJOeR delta 168 zcmdnY@r8Xti0KJN28IM6=3`)B&}3#{Fb2{VKw20`=KyI*Al(3@rGWG-AZ-Vvw{Gmz zX5=;0H8fW+w6rob(>5^Ne2`IuF~Hbbp&+NUC^5%YBTv=Pz}D7KK}}5o#57Q}H8fPP oS1?ep0`u)`jX+XhWd=5e1`0Jb5OqKa15KbpL!d&V$tld|0j5$Qi~s-t diff --git a/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.po index 5d9db7cc6..30072fbf2 100644 --- a/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-17 19:16+0100\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Moo, 2016\n" "Language-Team: Lithuanian (https://www.transifex.com/calamares/teams/20061/lt/)\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" diff --git a/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo index 4cb8879b3a2d32b0e4707e1d965be3a507c5722e..befd441ffc3a2c7a712087ce0cb38dbf837d2f90 100644 GIT binary patch delta 148 zcmZ3^zK?x^kM4Cw1_lct7G+>y5MX9t&yZSOso|Oa!QL5b8I#86jT)q6>M!43>54YOso|0Y;6sJEJGj* bA)}_IkY{IWqyVCAY)ydj#+sAAF>M3@Bhef- delta 125 zcmdnTzMOr6kM03R1_lct7G+>y_{qe;pbw<^nHd;(fwVo4mITtiK-wNir*EtjVB|H| zHL%n*Fi|kDurf5;JdM$qQPP*cHP!9c-EK_k!3)<{83O(D<5 Q)&wMI2oyA$%*(tH042W{Q2+n{ diff --git a/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.po index 7f45b4605..d034c173b 100644 --- a/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-04 08:16-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dušan Kazik , 2016\n" "Language-Team: Slovak (https://www.transifex.com/calamares/teams/20061/sk/)\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" diff --git a/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo index d17a14087350d1ea1a5618d5f7a874990c6a1a36..aa141e77ece0c9b6aa7494fde3281be17cf28011 100644 GIT binary patch delta 259 zcmY+8u?oUK5JV+f3I4+f8t#g~ZoHsLZsWHI+Jzv3UBF*3mEUP&W8>W=676=_nR)Y^ zzGnATWTP%VE_MlJ32i}n!KQn>Z>Ge#zFrQsC^T4uAp$}i_lh7q3c^yrtg&~#0wFO5 zysQLi@3&&KzlK^OSWeNlLocBM8-4O!n{QX32e@k76bBdb5fzrXh-Bj!SjqLz*T4C1 LtQAMl<$Ur1I%_rY delta 125 zcmeyy@{xIh3e$GRiE1gl=DG%!x&|f+1{PL^W)r9XjyJYeD99--O3bm<$Wt{mu(dT* zP*YO?F%1-L4Gk6S6$})tz7h diff --git a/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.po index 5bdc57b31..701633b97 100644 --- a/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-04 08:16-0400\n" +"POT-Creation-Date: 2018-05-07 09:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Ukrainian (https://www.transifex.com/calamares/teams/20061/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=4; plural=( n % 1 == 0 && n % 10 =1 && n % 100 != 11) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" From f6f34bbec3a76aba941c49ece43c856416ceabc9 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Wed, 16 May 2018 11:02:49 -0400 Subject: [PATCH 163/385] i18n: [python] Automatic merge of Transifex translations --- lang/python/cs_CZ/LC_MESSAGES/python.mo | Bin 1336 -> 1388 bytes lang/python/cs_CZ/LC_MESSAGES/python.po | 2 +- lang/python/eo/LC_MESSAGES/python.mo | Bin 423 -> 1161 bytes lang/python/eo/LC_MESSAGES/python.po | 21 +++++++++++---------- lang/python/fa/LC_MESSAGES/python.mo | Bin 414 -> 434 bytes lang/python/fa/LC_MESSAGES/python.po | 4 +++- lang/python/he/LC_MESSAGES/python.mo | Bin 1144 -> 1189 bytes lang/python/he/LC_MESSAGES/python.po | 2 +- lang/python/kk/LC_MESSAGES/python.mo | Bin 413 -> 418 bytes lang/python/kk/LC_MESSAGES/python.po | 4 +++- lang/python/kn/LC_MESSAGES/python.mo | Bin 414 -> 434 bytes lang/python/kn/LC_MESSAGES/python.po | 4 +++- lang/python/lt/LC_MESSAGES/python.mo | Bin 1259 -> 1322 bytes lang/python/lt/LC_MESSAGES/python.po | 2 +- lang/python/sk/LC_MESSAGES/python.mo | Bin 1319 -> 1342 bytes lang/python/sk/LC_MESSAGES/python.po | 2 +- lang/python/uk/LC_MESSAGES/python.mo | Bin 497 -> 630 bytes lang/python/uk/LC_MESSAGES/python.po | 4 +++- 18 files changed, 27 insertions(+), 18 deletions(-) diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.mo b/lang/python/cs_CZ/LC_MESSAGES/python.mo index 5e972ad32f2d335c9ef7bc389646c0e263e2883b..7caee06737dc31b133cd82ea4d2bf24f8de207ba 100644 GIT binary patch delta 183 zcmdnN^@eLgiYp%z1H*Mj1_nt628L(M3=C30nt_FZK>4HVSW6!H{Q6$}+@Z50eO73_g5 hD+REmB@jTQ?QF5CG=``IX;uVlwo)+Jyq>v}5dhT0Ajbdz delta 131 zcmaFEwS#Lyit8;#28QcEEXlyYu!)(0K?+Ep0n!RU`Z=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." diff --git a/lang/python/eo/LC_MESSAGES/python.mo b/lang/python/eo/LC_MESSAGES/python.mo index 6d1a40f15392bb389f1df7fb32fea701df7275ed..d176a8fbf9badc4881ea45a1b798dc40a4ba69b5 100644 GIT binary patch literal 1161 zcmZ`%-D(p-7+tk$4Jau7peT$Ng@iiUO{iM8jToD>22B%UTF|@c?lhTXcV^j{Z5yQT z;DuiH(!1XJ0D{Fw5N|}E!58ps(j?U4z~Sti`M&dgJM;a#HuKTKx&+(>eBd&02&C&5 za25CsTnGLf^X!?Ceh<6=%?8hdeXs+55558Z0{#Si2X11&f6lUQfj@xnfDgf`|2J^z z^8-x5S7t1$2wn!?1}iWutXbeJkgl}ni@^DGbG#5XT(Ge&q+gXJ3WG#-tAj!T=JM1PD18&h2&KDd8;P1VL?D5=Ji>J>xm*{hbYO%2PgEotW3h3KR!cJ zGgcngI!ziok?dU7Q;9SPw8>o7C=|;1IjhA(wR6gTqMkP2kYVaWwne~+9^ik%QOO?n z46XTelgC;p>5^u7S7OgjErA%Hl+&J>}z(T(Y<&%%oA5aFuBWNz4Me zs^U<)L`K7{E)|!^=(CiSSRai(wPPw6WKJXBF*>&glwM`E-E_ U54jPi{tbSO9S@P|^}egVeyl, 2018\n" "Language-Team: Esperanto (https://www.transifex.com/calamares/teams/20061/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,39 +20,39 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Demeti dosieraj sistemoj." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "" +msgstr "Formala python laboro." #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "" +msgstr "Formala python paŝo {}" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "" +msgstr "Generi maŝino-legitimilo." #: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" +msgstr "Prilaborante pakaĵoj (%(count)d / %(total)d)" #: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." -msgstr "" +msgstr "Instali pakaĵoj." #: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Instalante unu pakaĵo." +msgstr[1] "Instalante %(num)d pakaĵoj." #: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Forigante unu pakaĵo." +msgstr[1] "Forigante %(num)d pakaĵoj." diff --git a/lang/python/fa/LC_MESSAGES/python.mo b/lang/python/fa/LC_MESSAGES/python.mo index d3bfe23bb59844ddedc4fc9e41d695656fd17976..7d5b5fc3f1bf2c5642bc315dc2147ad79fd3bfdd 100644 GIT binary patch delta 47 zcmbQoyoq^&3S-4a)oey3BWs0%oYJDi99s>IJR4g>1vNE=JUd$j15E{c1w&11E(QQX CS_`%S delta 27 icmdnQJdb&T3S-Jf)oeySLu-YCoYJDi99sixE(QQ{QwNR! diff --git a/lang/python/fa/LC_MESSAGES/python.po b/lang/python/fa/LC_MESSAGES/python.po index d3b0b1570..21e421d62 100644 --- a/lang/python/fa/LC_MESSAGES/python.po +++ b/lang/python/fa/LC_MESSAGES/python.po @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=((n<=1 && n>= 0) ? 1);\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." @@ -47,9 +47,11 @@ msgstr "" msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" +msgstr[1] "" #: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." msgstr[0] "" +msgstr[1] "" diff --git a/lang/python/he/LC_MESSAGES/python.mo b/lang/python/he/LC_MESSAGES/python.mo index 91f85b447a0438f378151fb1781487368fc27f95..51ca5223f49cb2146c5ca81cbbf35caa1e97047d 100644 GIT binary patch delta 140 zcmeytv6OQ{jO_(R28NYDEXTmWP{qu^AOoal0%=1ay$wi<0qGY&+73wn2h!R=+Kz>R z!3s!cZJaru$P{Cfo&`Kds!PZv62*@^4uu{;-Q&3efGyn-1 WC?w{k0A=lfd`+OV$!1SxeMSH)mK#U_ delta 95 zcmZ3=`GaFZjO}7Z28NYDEXTmW;LFUwAOoaxfV3fy?gY|eKzcWjwgb|afV4J{7Gz;y kumaMy8)wdE5;U?_D99--O3bm<$Wu_XRWRIK#;nf>0NmLSkpKVy diff --git a/lang/python/he/LC_MESSAGES/python.po b/lang/python/he/LC_MESSAGES/python.po index dfb1fa55b..5185cc8fa 100644 --- a/lang/python/he/LC_MESSAGES/python.po +++ b/lang/python/he/LC_MESSAGES/python.po @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." diff --git a/lang/python/kk/LC_MESSAGES/python.mo b/lang/python/kk/LC_MESSAGES/python.mo index 607fd9186aabcf26fc1c5d07cad24d27261ff8f3..260a0f437de4b83927b82dff3f1efddec3b28852 100644 GIT binary patch delta 32 ncmbQsyoh;%3S-7b)htF~BWs0%oYJDi99xY%MO#BnYc2)=oO1}I delta 27 icmZ3)JePTb3S;s{)htFnLu-YCoYJDi99sixE(QQ_We0lz diff --git a/lang/python/kk/LC_MESSAGES/python.po b/lang/python/kk/LC_MESSAGES/python.po index 1d6a2d9f4..886e13f89 100644 --- a/lang/python/kk/LC_MESSAGES/python.po +++ b/lang/python/kk/LC_MESSAGES/python.po @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: kk\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." @@ -47,9 +47,11 @@ msgstr "" msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" +msgstr[1] "" #: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." msgstr[0] "" +msgstr[1] "" diff --git a/lang/python/kn/LC_MESSAGES/python.mo b/lang/python/kn/LC_MESSAGES/python.mo index 3672cb7bc11b726d1d9a859cddad25f0fde1fa8f..b23c6f69b7b9a172f67ca7dd1cbb50f5ac3347e0 100644 GIT binary patch delta 47 zcmbQoyoq^&3S-4a)oey3BWs0%oYJDi99s>IJR4g>1vNE=JUd$j15E{c1w&11E(QQX CS_`%S delta 27 icmdnQJdb&T3S-Jf)oeySLu-YCoYJDi99sixE(QQ{QwNR! diff --git a/lang/python/kn/LC_MESSAGES/python.po b/lang/python/kn/LC_MESSAGES/python.po index f29a41c74..2f95a3b0a 100644 --- a/lang/python/kn/LC_MESSAGES/python.po +++ b/lang/python/kn/LC_MESSAGES/python.po @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: kn\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=((n<=1 && n>= 0) ? 1);\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." @@ -47,9 +47,11 @@ msgstr "" msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" +msgstr[1] "" #: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." msgstr[0] "" +msgstr[1] "" diff --git a/lang/python/lt/LC_MESSAGES/python.mo b/lang/python/lt/LC_MESSAGES/python.mo index f2f75376bebacefd95f38ede5d551993afc4db48..a31912debec8cb6dc7d10e662c67f8ca61685067 100644 GIT binary patch delta 231 zcmaFOxr%E-iW@r<1H*Mj1_nt628R303=A?r`X`VU1=34p~O-%vHH&C!sFtk*t zsZoH)8z|T)7#eCS*aKBr0TrnNwb#h$aO^TLlB4nI@a( IF#9tC0JQ5VmjD0& delta 167 zcmZ3*^_p`+irWcB28QcEEXlyYuz;C?K?X?g0@9*D`Z|yn1k!JTbO@0C52Uq#bO;Lr zLm-f@2ht#Y7g;v0TErA!Y^_j`Q(BamW2=#;YG`0Il3RZbyd diff --git a/lang/python/lt/LC_MESSAGES/python.po b/lang/python/lt/LC_MESSAGES/python.po index 2be3f9487..4cbdc203b 100644 --- a/lang/python/lt/LC_MESSAGES/python.po +++ b/lang/python/lt/LC_MESSAGES/python.po @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." diff --git a/lang/python/sk/LC_MESSAGES/python.mo b/lang/python/sk/LC_MESSAGES/python.mo index 55b30e47731e0eca18a501ed70c715e76f8c64ed..a2c07cf6e616644167827f3246c246e16dc0d029 100644 GIT binary patch delta 154 zcmZ3^wU28;itBYo1_lt8XJBAh&kUi@18EH)|2>cv1JV*K3=GjgS|3Oo0_kob9S5ZM z0%=7cEwgduekKiINEe50+Sr{0ifwTmWHU!coKspXc zF9XtwK$>;q%Kc2b#?}f2Ii*F3Ikp;kwzh_v3ib*H3RVgld3Lr&3TkQ!c{a8tAVEW* LpwZ?v%##=amBJV1 diff --git a/lang/python/sk/LC_MESSAGES/python.po b/lang/python/sk/LC_MESSAGES/python.po index 3e774ad25..fe6259180 100644 --- a/lang/python/sk/LC_MESSAGES/python.po +++ b/lang/python/sk/LC_MESSAGES/python.po @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." diff --git a/lang/python/uk/LC_MESSAGES/python.mo b/lang/python/uk/LC_MESSAGES/python.mo index 484b9935cc6d7d87bfa718f4384453c9bca06a26..aa141e77ece0c9b6aa7494fde3281be17cf28011 100644 GIT binary patch delta 243 zcmY+8F%H5o5CkDm@rp$P%h%lnQ$T#-EfjQCgd)*J;tPC*r_oSjJ3)r-R=2yeuf==$ z*i^oHnlQh+2G?-w&p|CZY#~qu!pF delta 109 zcmeyy@{xIh3e$GRjcPfJ@y6B)1v#Zfi8;0!d8&p6wzh@}YHA7~rh%fZp`n7kf`Nh+ om~Urm1e3C{H32cfIt*+K4HRl>AX=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=4; plural=( n % 1 == 0 && n % 10 =1 && n % 100 != 11) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." @@ -49,6 +49,7 @@ msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" #: src/modules/packages/main.py:69 #, python-format @@ -57,3 +58,4 @@ msgid_plural "Removing %(num)d packages." msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" From c73d6e80f613df3d983d014d8f57b2ccd1d0e642 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 16 May 2018 11:20:40 -0400 Subject: [PATCH 164/385] [libcalamares] Switch @@ROOT@@ magic around The substitution of @@ROOT@@ should happen when running in the host, not in the target, system. Also only complain about it if @@ROOT@@ is actually used in the commands. FIXES #954 --- src/libcalamares/utils/CommandList.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/libcalamares/utils/CommandList.cpp b/src/libcalamares/utils/CommandList.cpp index 298fc7b6c..3b2935c55 100644 --- a/src/libcalamares/utils/CommandList.cpp +++ b/src/libcalamares/utils/CommandList.cpp @@ -100,18 +100,29 @@ CommandList::~CommandList() Calamares::JobResult CommandList::run() { + QLatin1Literal rootMagic( "@@ROOT@@" ); + System::RunLocation location = m_doChroot ? System::RunLocation::RunInTarget : System::RunLocation::RunInHost; /* Figure out the replacement for @@ROOT@@ */ QString root = QStringLiteral( "/" ); Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); - if ( location == System::RunLocation::RunInTarget ) + + bool needsRootSubstitution = false; + for ( CommandList::const_iterator i = cbegin(); i != cend(); ++i ) + if ( i->command().contains( rootMagic ) ) + { + needsRootSubstitution = true; + break; + } + + if ( needsRootSubstitution && ( location == System::RunLocation::RunInHost ) ) { if ( !gs || !gs->contains( "rootMountPoint" ) ) { cError() << "No rootMountPoint defined."; return Calamares::JobResult::error( QCoreApplication::translate( "CommandList", "Could not run command." ), - QCoreApplication::translate( "CommandList", "No rootMountPoint is defined, so command cannot be run in the target environment." ) ); + QCoreApplication::translate( "CommandList", "The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined." ) ); } root = gs->value( "rootMountPoint" ).toString(); } @@ -119,7 +130,7 @@ Calamares::JobResult CommandList::run() for ( CommandList::const_iterator i = cbegin(); i != cend(); ++i ) { QString processed_cmd = i->command(); - processed_cmd.replace( "@@ROOT@@", root ); + processed_cmd.replace( rootMagic, root ); bool suppress_result = false; if ( processed_cmd.startsWith( '-' ) ) { From 733836839ad83340779a5615ddc92ae465b1faeb Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 17 May 2018 12:00:06 +0200 Subject: [PATCH 165/385] CMake: remove module that duplicates what is in CMake proper --- CMakeModules/GNUInstallDirs.cmake | 182 ------------------------------ 1 file changed, 182 deletions(-) delete mode 100644 CMakeModules/GNUInstallDirs.cmake diff --git a/CMakeModules/GNUInstallDirs.cmake b/CMakeModules/GNUInstallDirs.cmake deleted file mode 100644 index a114dcb2e..000000000 --- a/CMakeModules/GNUInstallDirs.cmake +++ /dev/null @@ -1,182 +0,0 @@ -# - Define GNU standard installation directories -# Provides install directory variables as defined for GNU software: -# http://www.gnu.org/prep/standards/html_node/Directory-Variables.html -# Inclusion of this module defines the following variables: -# CMAKE_INSTALL_ - destination for files of a given type -# CMAKE_INSTALL_FULL_ - corresponding absolute path -# where is one of: -# BINDIR - user executables (bin) -# SBINDIR - system admin executables (sbin) -# LIBEXECDIR - program executables (libexec) -# SYSCONFDIR - read-only single-machine data (etc) -# SHAREDSTATEDIR - modifiable architecture-independent data (com) -# LOCALSTATEDIR - modifiable single-machine data (var) -# LIBDIR - object code libraries (lib or lib64) -# INCLUDEDIR - C header files (include) -# OLDINCLUDEDIR - C header files for non-gcc (/usr/include) -# DATAROOTDIR - read-only architecture-independent data root (share) -# DATADIR - read-only architecture-independent data (DATAROOTDIR) -# INFODIR - info documentation (DATAROOTDIR/info) -# LOCALEDIR - locale-dependent data (DATAROOTDIR/locale) -# MANDIR - man documentation (DATAROOTDIR/man) -# DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME) -# Each CMAKE_INSTALL_ value may be passed to the DESTINATION options of -# install() commands for the corresponding file type. If the includer does -# not define a value the above-shown default will be used and the value will -# appear in the cache for editing by the user. -# Each CMAKE_INSTALL_FULL_ value contains an absolute path constructed -# from the corresponding destination by prepending (if necessary) the value -# of CMAKE_INSTALL_PREFIX. - -#============================================================================= -# Copyright 2011 Nikita Krupen'ko -# Copyright 2011 Kitware, Inc. -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) - -# Installation directories -# -if(NOT DEFINED CMAKE_INSTALL_BINDIR) - set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)") -endif() - -if(NOT DEFINED CMAKE_INSTALL_SBINDIR) - set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)") -endif() - -if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR) - set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)") -endif() - -if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR) - set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)") -endif() - -if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR) - set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)") -endif() - -if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR) - set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)") -endif() - -if(NOT DEFINED CMAKE_INSTALL_LIBDIR) - set(_LIBDIR_DEFAULT "lib") - # Override this default 'lib' with 'lib64' iff: - # - we are on Linux system but NOT cross-compiling - # - we are NOT on debian - # - we are on a 64 bits system - # reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf - # Note that the future of multi-arch handling may be even - # more complicated than that: http://wiki.debian.org/Multiarch - if(CMAKE_SYSTEM_NAME MATCHES "Linux" - AND NOT CMAKE_CROSSCOMPILING - AND NOT EXISTS "/etc/debian_version") - if(NOT DEFINED CMAKE_SIZEOF_VOID_P) - message(AUTHOR_WARNING - "Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. " - "Please enable at least one language before including GNUInstallDirs.") - else() - if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - set(_LIBDIR_DEFAULT "lib64") - endif() - endif() - endif() - set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})") -endif() - -if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR) - set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)") -endif() - -if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR) - set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)") -endif() - -if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR) - set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)") -endif() - -#----------------------------------------------------------------------------- -# Values whose defaults are relative to DATAROOTDIR. Store empty values in -# the cache and store the defaults in local variables if the cache values are -# not set explicitly. This auto-updates the defaults as DATAROOTDIR changes. - -if(NOT CMAKE_INSTALL_DATADIR) - set(CMAKE_INSTALL_DATADIR "" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)") - set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}") -endif() - -if(NOT CMAKE_INSTALL_INFODIR) - set(CMAKE_INSTALL_INFODIR "" CACHE PATH "info documentation (DATAROOTDIR/info)") - set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info") -endif() - -if(NOT CMAKE_INSTALL_LOCALEDIR) - set(CMAKE_INSTALL_LOCALEDIR "" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)") - set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale") -endif() - -if(NOT CMAKE_INSTALL_MANDIR) - set(CMAKE_INSTALL_MANDIR "" CACHE PATH "man documentation (DATAROOTDIR/man)") - set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man") -endif() - -if(NOT CMAKE_INSTALL_DOCDIR) - set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)") - set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}") -endif() - -#----------------------------------------------------------------------------- - -mark_as_advanced( - CMAKE_INSTALL_BINDIR - CMAKE_INSTALL_SBINDIR - CMAKE_INSTALL_LIBEXECDIR - CMAKE_INSTALL_SYSCONFDIR - CMAKE_INSTALL_SHAREDSTATEDIR - CMAKE_INSTALL_LOCALSTATEDIR - CMAKE_INSTALL_LIBDIR - CMAKE_INSTALL_INCLUDEDIR - CMAKE_INSTALL_OLDINCLUDEDIR - CMAKE_INSTALL_DATAROOTDIR - CMAKE_INSTALL_DATADIR - CMAKE_INSTALL_INFODIR - CMAKE_INSTALL_LOCALEDIR - CMAKE_INSTALL_MANDIR - CMAKE_INSTALL_DOCDIR - ) - -# Result directories -# -foreach(dir - BINDIR - SBINDIR - LIBEXECDIR - SYSCONFDIR - SHAREDSTATEDIR - LOCALSTATEDIR - LIBDIR - INCLUDEDIR - OLDINCLUDEDIR - DATAROOTDIR - DATADIR - INFODIR - LOCALEDIR - MANDIR - DOCDIR - ) - if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}}) - set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}") - else() - set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}") - endif() -endforeach() From f2677b08791ec7dbed8ab4e787610410b8b40f0a Mon Sep 17 00:00:00 2001 From: Frede H Date: Thu, 17 May 2018 12:52:09 +0200 Subject: [PATCH 166/385] Update CreateUserJob.cpp Removal of the hardcoded shell, letting the `/etc/default/useradd` be responsible for the shell. --- src/modules/users/CreateUserJob.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 727cae2ae..d4d299e39 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -149,8 +149,6 @@ CreateUserJob::exec() int ec = CalamaresUtils::System::instance()-> targetEnvCall( { "useradd", "-m", - "-s", - "/bin/bash", "-U", "-c", m_fullName, From 30fe4ddf241ce75133a0d0d336a0b7e6e3db1151 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 17 May 2018 11:04:12 -0400 Subject: [PATCH 167/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_ar.ts | 32 +++-- lang/calamares_ast.ts | 32 +++-- lang/calamares_bg.ts | 32 +++-- lang/calamares_ca.ts | 34 +++-- lang/calamares_cs_CZ.ts | 34 +++-- lang/calamares_da.ts | 34 +++-- lang/calamares_de.ts | 32 +++-- lang/calamares_el.ts | 32 +++-- lang/calamares_en.ts | 34 +++-- lang/calamares_en_GB.ts | 32 +++-- lang/calamares_eo.ts | 32 +++-- lang/calamares_es.ts | 34 +++-- lang/calamares_es_MX.ts | 32 +++-- lang/calamares_es_PR.ts | 32 +++-- lang/calamares_et.ts | 34 +++-- lang/calamares_eu.ts | 32 +++-- lang/calamares_fa.ts | 32 +++-- lang/calamares_fi_FI.ts | 32 +++-- lang/calamares_fr.ts | 34 +++-- lang/calamares_fr_CH.ts | 32 +++-- lang/calamares_gl.ts | 32 +++-- lang/calamares_gu.ts | 32 +++-- lang/calamares_he.ts | 32 +++-- lang/calamares_hi.ts | 34 +++-- lang/calamares_hr.ts | 34 +++-- lang/calamares_hu.ts | 32 +++-- lang/calamares_id.ts | 34 +++-- lang/calamares_is.ts | 32 +++-- lang/calamares_it_IT.ts | 34 +++-- lang/calamares_ja.ts | 34 +++-- lang/calamares_kk.ts | 32 +++-- lang/calamares_kn.ts | 32 +++-- lang/calamares_lo.ts | 32 +++-- lang/calamares_lt.ts | 36 ++++-- lang/calamares_mr.ts | 32 +++-- lang/calamares_nb.ts | 32 +++-- lang/calamares_nl.ts | 32 +++-- lang/calamares_pl.ts | 44 ++++--- lang/calamares_pt_BR.ts | 34 +++-- lang/calamares_pt_PT.ts | 34 +++-- lang/calamares_ro.ts | 34 +++-- lang/calamares_ru.ts | 32 +++-- lang/calamares_sk.ts | 34 +++-- lang/calamares_sl.ts | 32 +++-- lang/calamares_sq.ts | 258 +++++++++++++++++++------------------ lang/calamares_sr.ts | 32 +++-- lang/calamares_sr@latin.ts | 32 +++-- lang/calamares_sv.ts | 32 +++-- lang/calamares_th.ts | 32 +++-- lang/calamares_tr_TR.ts | 34 +++-- lang/calamares_uk.ts | 32 +++-- lang/calamares_ur.ts | 32 +++-- lang/calamares_uz.ts | 32 +++-- lang/calamares_zh_CN.ts | 34 +++-- lang/calamares_zh_TW.ts | 34 +++-- 55 files changed, 1295 insertions(+), 745 deletions(-) diff --git a/lang/calamares_ar.ts b/lang/calamares_ar.ts index 56d1767cc..bb68d29b5 100644 --- a/lang/calamares_ar.ts +++ b/lang/calamares_ar.ts @@ -477,13 +477,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ The installer will quit and all changes will be lost. الح&جم: - + En&crypt تشفير - + Logical منطقيّ - + Primary أساسيّ - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -858,7 +858,7 @@ The installer will quit and all changes will be lost. الشّارات: - + Mountpoint already in use. Please select another one. @@ -1682,10 +1682,20 @@ The installer will quit and all changes will be lost. ثبّت م&حمّل الإقلاع على: - + Are you sure you want to create a new partition table on %1? أمتأكّد من إنشاء جدول تقسيم جديد على %1؟ + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support 1% الدعم diff --git a/lang/calamares_ast.ts b/lang/calamares_ast.ts index 793ca4e4a..fb89c2a95 100644 --- a/lang/calamares_ast.ts +++ b/lang/calamares_ast.ts @@ -477,13 +477,13 @@ L'instalador colará y perderánse toles camudancies. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ L'instalador colará y perderánse toles camudancies. Tama&ñu: - + En&crypt &Cifrar - + Logical Llóxica - + Primary Primaria - + GPT GPT - + Mountpoint already in use. Please select another one. Puntu de montaxe yá n'usu. Esbilla otru, por favor. @@ -858,7 +858,7 @@ L'instalador colará y perderánse toles camudancies. Banderes: - + Mountpoint already in use. Please select another one. Puntu de montaxe yá n'usu. Esbilla otru, por favor. @@ -1682,10 +1682,20 @@ L'instalador colará y perderánse toles camudancies. &Instalar xestor d'arranque en: - + Are you sure you want to create a new partition table on %1? ¿De xuru que quies crear una tabla particiones nueva en %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support Sofitu %1 diff --git a/lang/calamares_bg.ts b/lang/calamares_bg.ts index 61c557d17..f3b4e2258 100644 --- a/lang/calamares_bg.ts +++ b/lang/calamares_bg.ts @@ -478,13 +478,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -549,27 +549,27 @@ The installer will quit and all changes will be lost. Раз&мер: - + En&crypt En%crypt - + Logical Логическа - + Primary Главна - + GPT GPT - + Mountpoint already in use. Please select another one. Точката за монтиране вече се използва. Моля изберете друга. @@ -859,7 +859,7 @@ The installer will quit and all changes will be lost. Флагове: - + Mountpoint already in use. Please select another one. Точката за монтиране вече се използва. Моля изберете друга. @@ -1683,10 +1683,20 @@ The installer will quit and all changes will be lost. Инсталирай &устройството за начално зареждане върху: - + Are you sure you want to create a new partition table on %1? Сигурни ли сте че искате да създадете нова таблица на дяловете върху %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2569,7 +2579,7 @@ Output: - + %1 support %1 поддръжка diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index a74705e65..84bc809bb 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -477,14 +477,14 @@ L'instal·lador es tancarà i tots els canvis es perdran. CommandList - + Could not run command. No s'ha pogut executar l'ordre. - - No rootMountPoint is defined, so command cannot be run in the target environment. - No hi ha punt de muntatge d'arrel definit; per tant, no es pot executar l'ordre a l'entorn de destinació. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -548,27 +548,27 @@ L'instal·lador es tancarà i tots els canvis es perdran. Mi&da: - + En&crypt &Xifra - + Logical Lògica - + Primary Primària - + GPT GPT - + Mountpoint already in use. Please select another one. El punt de muntatge ja està en ús. Si us plau, seleccioneu-ne un altre. @@ -858,7 +858,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Indicadors: - + Mountpoint already in use. Please select another one. El punt de muntatge ja està en ús. Si us plau, seleccioneu-ne un altre. @@ -1682,10 +1682,20 @@ L'instal·lador es tancarà i tots els canvis es perdran. &Instal·la el gestor d'arrencada a: - + Are you sure you want to create a new partition table on %1? Esteu segurs que voleu crear una nova taula de particions a %1? + + + Can not create new partition + No es pot crear la partició nova + + + + 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. + + PartitionViewStep @@ -2571,7 +2581,7 @@ Sortida: <h1>%1</h1><br/><strong>%2<br/>per a %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017, Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agraïments: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg i l'<a href="https://www.transifex.com/calamares/calamares/">Equip de traducció del Calamares</a>.<br/><br/><a href="http://calamares.io/">El desenvolupament </a> del Calamares està patrocinat per <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suport diff --git a/lang/calamares_cs_CZ.ts b/lang/calamares_cs_CZ.ts index 323d89cc6..a506e76d9 100644 --- a/lang/calamares_cs_CZ.ts +++ b/lang/calamares_cs_CZ.ts @@ -477,14 +477,14 @@ Instalační program bude ukončen a všechny změny ztraceny. CommandList - + Could not run command. Nedaří se spustit příkaz. - - No rootMountPoint is defined, so command cannot be run in the target environment. - Nebyl určen žádný přípojný bod pro kořenový oddíl, takže příkaz nemohl být spuštěn v cílovém prostředí. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -548,27 +548,27 @@ Instalační program bude ukončen a všechny změny ztraceny. &Velikost: - + En&crypt Š&ifrovat - + Logical Logický - + Primary Primární - + GPT GPT - + Mountpoint already in use. Please select another one. Tento přípojný bod už je používán – vyberte jiný. @@ -858,7 +858,7 @@ Instalační program bude ukončen a všechny změny ztraceny. Příznaky: - + Mountpoint already in use. Please select another one. Tento přípojný bod je už používán – vyberte jiný. @@ -1682,10 +1682,20 @@ Instalační program bude ukončen a všechny změny ztraceny. Nainstalovat &zavaděč na: - + Are you sure you want to create a new partition table on %1? Opravdu chcete na %1 vytvořit novou tabulku oddílů? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2571,7 +2581,7 @@ Výstup: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg a <a href="https://www.transifex.com/calamares/calamares/">tým překledatelů Calamares</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> vývoj je sponzorován <br/><a href="http://www.blue-systems.com/">Blue Systems</a> – Liberating Software. - + %1 support %1 podpora diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts index 348496a32..070463376 100644 --- a/lang/calamares_da.ts +++ b/lang/calamares_da.ts @@ -477,14 +477,14 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. CommandList - + Could not run command. Kunne ikke køre kommando. - - No rootMountPoint is defined, so command cannot be run in the target environment. - Der er ikke defineret nogen rootMountPoint, så kommandoen kan ikke køre i målmiljøet. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -548,27 +548,27 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.&Størrelse: - + En&crypt Kryp&tér - + Logical Logisk - + Primary Primær - + GPT GPT - + Mountpoint already in use. Please select another one. Monteringspunktet er allerede i brug. Vælg venligst et andet. @@ -858,7 +858,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Flag: - + Mountpoint already in use. Please select another one. Monteringspunktet er allerede i brug. Vælg venligst et andet. @@ -1682,10 +1682,20 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Installér boot&loader på: - + Are you sure you want to create a new partition table on %1? Er du sikker på, at du vil oprette en ny partitionstabel på %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2571,7 +2581,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>til %3</strong><br/><br/>Ophavsret 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Ophavsret 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Tak til: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg og <a href="https://www.transifex.com/calamares/calamares/">Calamares oversætterteam</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> udvikling er sponsoreret af <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 support diff --git a/lang/calamares_de.ts b/lang/calamares_de.ts index f480b9904..63de0898d 100644 --- a/lang/calamares_de.ts +++ b/lang/calamares_de.ts @@ -477,13 +477,13 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Grö&sse: - + En&crypt Verschlüsseln - + Logical Logisch - + Primary Primär - + GPT GPT - + Mountpoint already in use. Please select another one. Dieser Einhängepunkt wird schon benuztzt. Bitte wählen Sie einen anderen. @@ -858,7 +858,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Markierungen: - + Mountpoint already in use. Please select another one. Der Einhängepunkt wird schon benutzt. Bitte wählen Sie einen anderen. @@ -1682,10 +1682,20 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Installiere Boot&loader auf: - + Are you sure you want to create a new partition table on %1? Sind Sie sicher, dass Sie eine neue Partitionstabelle auf %1 erstellen möchten? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support Unterstützung für %1 diff --git a/lang/calamares_el.ts b/lang/calamares_el.ts index c41b018c8..9fd438391 100644 --- a/lang/calamares_el.ts +++ b/lang/calamares_el.ts @@ -477,13 +477,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ The installer will quit and all changes will be lost. &Μέγεθος: - + En&crypt - + Logical Λογική - + Primary Πρωτεύουσα - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -858,7 +858,7 @@ The installer will quit and all changes will be lost. Σημαίες: - + Mountpoint already in use. Please select another one. @@ -1682,10 +1682,20 @@ The installer will quit and all changes will be lost. Εγκατάσταση προγράμματος ε&κκίνησης στο: - + Are you sure you want to create a new partition table on %1? Θέλετε σίγουρα να δημιουργήσετε έναν νέο πίνακα κατατμήσεων στο %1; + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support Υποστήριξη %1 diff --git a/lang/calamares_en.ts b/lang/calamares_en.ts index ece6efc5b..62a4b46c4 100644 --- a/lang/calamares_en.ts +++ b/lang/calamares_en.ts @@ -477,14 +477,14 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ The installer will quit and all changes will be lost. Si&ze: - + En&crypt En&crypt - + Logical Logical - + Primary Primary - + GPT GPT - + Mountpoint already in use. Please select another one. Mountpoint already in use. Please select another one. @@ -858,7 +858,7 @@ The installer will quit and all changes will be lost. Flags: - + Mountpoint already in use. Please select another one. Mountpoint already in use. Please select another one. @@ -1682,10 +1682,20 @@ The installer will quit and all changes will be lost. Install boot &loader on: - + Are you sure you want to create a new partition table on %1? Are you sure you want to create a new partition table on %1? + + + Can not create new partition + Can not create new partition + + + + 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. + 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. + PartitionViewStep @@ -2571,7 +2581,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 support diff --git a/lang/calamares_en_GB.ts b/lang/calamares_en_GB.ts index 804626b78..9698dd084 100644 --- a/lang/calamares_en_GB.ts +++ b/lang/calamares_en_GB.ts @@ -477,13 +477,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ The installer will quit and all changes will be lost. Si&ze: - + En&crypt - + Logical Logical - + Primary Primary - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -858,7 +858,7 @@ The installer will quit and all changes will be lost. Flags: - + Mountpoint already in use. Please select another one. @@ -1682,10 +1682,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support %1 support diff --git a/lang/calamares_eo.ts b/lang/calamares_eo.ts index 9fbd2b307..f057b5aca 100644 --- a/lang/calamares_eo.ts +++ b/lang/calamares_eo.ts @@ -477,13 +477,13 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -858,7 +858,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + Mountpoint already in use. Please select another one. @@ -1682,10 +1682,20 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support diff --git a/lang/calamares_es.ts b/lang/calamares_es.ts index 3b7c17604..909c5e4ca 100644 --- a/lang/calamares_es.ts +++ b/lang/calamares_es.ts @@ -478,14 +478,14 @@ Saldrá del instalador y se perderán todos los cambios. CommandList - + Could not run command. No se pudo ejecutar el comando. - - No rootMountPoint is defined, so command cannot be run in the target environment. - No se ha definido ningún rootMountPoint (punto de montaje de root), así que el comando no se puede ejecutar en el entorno objetivo. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -549,27 +549,27 @@ Saldrá del instalador y se perderán todos los cambios. &Tamaño: - + En&crypt &Cifrar - + Logical Lógica - + Primary Primaria - + GPT GPT - + Mountpoint already in use. Please select another one. Punto de montaje ya en uso. Por favor, seleccione otro. @@ -859,7 +859,7 @@ Saldrá del instalador y se perderán todos los cambios. Banderas: - + Mountpoint already in use. Please select another one. Punto de montaje ya en uso. Por favor, seleccione otro. @@ -1683,10 +1683,20 @@ Saldrá del instalador y se perderán todos los cambios. Instalar gestor de arranque en: - + Are you sure you want to create a new partition table on %1? ¿Está seguro de querer crear una nueva tabla de particiones en %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2572,7 +2582,7 @@ Salida: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimientos: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg y al <a href="https://www.transifex.com/calamares/calamares/">equipo de traductores de Calamares</a>.<br/><br/> El desarrollo <a href="https://calamares.io/">Calamares</a> está patrocinado por <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberando Software. - + %1 support %1 ayuda diff --git a/lang/calamares_es_MX.ts b/lang/calamares_es_MX.ts index 35e4d7c5e..ea1fff2c5 100644 --- a/lang/calamares_es_MX.ts +++ b/lang/calamares_es_MX.ts @@ -480,13 +480,13 @@ El instalador terminará y se perderán todos los cambios. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -551,27 +551,27 @@ El instalador terminará y se perderán todos los cambios. &Tamaño: - + En&crypt - + Logical Lógica - + Primary Primaria - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -861,7 +861,7 @@ El instalador terminará y se perderán todos los cambios. Banderas: - + Mountpoint already in use. Please select another one. @@ -1685,10 +1685,20 @@ El instalador terminará y se perderán todos los cambios. - + Are you sure you want to create a new partition table on %1? ¿Está seguro de querer crear una nueva tabla de particiones en %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2572,7 +2582,7 @@ Output: - + %1 support %1 Soporte diff --git a/lang/calamares_es_PR.ts b/lang/calamares_es_PR.ts index c87c58b43..1208d9a82 100644 --- a/lang/calamares_es_PR.ts +++ b/lang/calamares_es_PR.ts @@ -476,13 +476,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -547,27 +547,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -857,7 +857,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1681,10 +1681,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2567,7 +2577,7 @@ Output: - + %1 support diff --git a/lang/calamares_et.ts b/lang/calamares_et.ts index de707a8a7..6fb5a0625 100644 --- a/lang/calamares_et.ts +++ b/lang/calamares_et.ts @@ -477,14 +477,14 @@ Installija sulgub ja kõik muutused kaovad. CommandList - + Could not run command. Käsku ei saanud käivitada. - - No rootMountPoint is defined, so command cannot be run in the target environment. - rootMountPoint pole defineeritud, seega käsku ei saa käivitada sihtkeskkonnas. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -548,27 +548,27 @@ Installija sulgub ja kõik muutused kaovad. Suurus: - + En&crypt &Krüpti - + Logical Loogiline köide - + Primary Peamine - + GPT GPT - + Mountpoint already in use. Please select another one. Monteerimispunkt on juba kasutusel. Palun vali mõni teine. @@ -858,7 +858,7 @@ Installija sulgub ja kõik muutused kaovad. Sildid: - + Mountpoint already in use. Please select another one. Monteerimispunkt on juba kasutusel. Palun vali mõni teine. @@ -1682,10 +1682,20 @@ Installija sulgub ja kõik muutused kaovad. Installi käivituslaadur kohta: - + Are you sure you want to create a new partition table on %1? Kas soovid kindlasti luua uut partitsioonitabelit kettale %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2571,7 +2581,7 @@ Väljund: <h1>%1</h1><br/><strong>%2<br/>%3 jaoks</strong><br/><br/>Autoriõigus 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autoriõigus 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Täname: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg ja <a href="https://www.transifex.com/calamares/calamares/">Calamares'i tõlkijate meeskonda</a>.<br/><br/><a href="https://calamares.io/">Calamares'i</a> arendust toetab <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 tugi diff --git a/lang/calamares_eu.ts b/lang/calamares_eu.ts index 1939fd091..b904080dc 100644 --- a/lang/calamares_eu.ts +++ b/lang/calamares_eu.ts @@ -476,13 +476,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -547,27 +547,27 @@ The installer will quit and all changes will be lost. Ta&maina: - + En&crypt - + Logical Logikoa - + Primary Primarioa - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -857,7 +857,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1681,10 +1681,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2567,7 +2577,7 @@ Output: - + %1 support %1 euskarria diff --git a/lang/calamares_fa.ts b/lang/calamares_fa.ts index 30dfc46b1..bf4a89baf 100644 --- a/lang/calamares_fa.ts +++ b/lang/calamares_fa.ts @@ -476,13 +476,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -547,27 +547,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -857,7 +857,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1681,10 +1681,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2567,7 +2577,7 @@ Output: - + %1 support diff --git a/lang/calamares_fi_FI.ts b/lang/calamares_fi_FI.ts index d7f1b8067..b4356ffd3 100644 --- a/lang/calamares_fi_FI.ts +++ b/lang/calamares_fi_FI.ts @@ -477,13 +477,13 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. K&oko: - + En&crypt - + Logical Looginen - + Primary Ensisijainen - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -858,7 +858,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Liput: - + Mountpoint already in use. Please select another one. @@ -1682,10 +1682,20 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - + Are you sure you want to create a new partition table on %1? Oletko varma, että haluat luoda uuden osion %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support diff --git a/lang/calamares_fr.ts b/lang/calamares_fr.ts index 26390c939..dbc00a823 100644 --- a/lang/calamares_fr.ts +++ b/lang/calamares_fr.ts @@ -477,14 +477,14 @@ L'installateur se fermera et les changements seront perdus. CommandList - + Could not run command. La commande n'a pas pu être exécutée. - - No rootMountPoint is defined, so command cannot be run in the target environment. - Aucun point de montage racine n'est défini, la commande n'a pas pu être exécutée dans l'environnement cible. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -548,27 +548,27 @@ L'installateur se fermera et les changements seront perdus. Ta&ille : - + En&crypt Chi&ffrer - + Logical Logique - + Primary Primaire - + GPT GPT - + Mountpoint already in use. Please select another one. Le point de montage est déjà utilisé. Merci d'en sélectionner un autre. @@ -858,7 +858,7 @@ L'installateur se fermera et les changements seront perdus. Drapeaux: - + Mountpoint already in use. Please select another one. Le point de montage est déjà utilisé. Merci d'en sélectionner un autre. @@ -1682,10 +1682,20 @@ L'installateur se fermera et les changements seront perdus. Installer le chargeur de démarrage sur: - + Are you sure you want to create a new partition table on %1? Êtes-vous sûr de vouloir créer une nouvelle table de partitionnement sur %1 ? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2572,7 +2582,7 @@ Sortie <h1>%1</h1><br/><strong>%2<br/> pour %3</strong><br/><br/> Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/> Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/> Merci à : Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg et <a href="https://www.transifex.com/calamares/calamares/">l'équipe de traducteurs de Calamares</a>.<br/><br/> Le développement de <a href="https://calamares.io/">Calamares</a> est sponsorisé par <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Support de %1 diff --git a/lang/calamares_fr_CH.ts b/lang/calamares_fr_CH.ts index 8df7f0675..7ec7a710e 100644 --- a/lang/calamares_fr_CH.ts +++ b/lang/calamares_fr_CH.ts @@ -476,13 +476,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -547,27 +547,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -857,7 +857,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1681,10 +1681,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2567,7 +2577,7 @@ Output: - + %1 support diff --git a/lang/calamares_gl.ts b/lang/calamares_gl.ts index baf14fb42..28cb9a787 100644 --- a/lang/calamares_gl.ts +++ b/lang/calamares_gl.ts @@ -478,13 +478,13 @@ O instalador pecharase e perderanse todos os cambios. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -549,27 +549,27 @@ O instalador pecharase e perderanse todos os cambios. &Tamaño: - + En&crypt Encriptar - + Logical Lóxica - + Primary Primaria - + GPT GPT - + Mountpoint already in use. Please select another one. Punto de montaxe xa en uso. Faga o favor de escoller outro @@ -859,7 +859,7 @@ O instalador pecharase e perderanse todos os cambios. Bandeiras: - + Mountpoint already in use. Please select another one. Punto de montaxe xa en uso. Faga o favor de escoller outro. @@ -1683,10 +1683,20 @@ O instalador pecharase e perderanse todos os cambios. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2569,7 +2579,7 @@ Output: - + %1 support %1 axuda diff --git a/lang/calamares_gu.ts b/lang/calamares_gu.ts index 0b1da0b3e..e53370b9e 100644 --- a/lang/calamares_gu.ts +++ b/lang/calamares_gu.ts @@ -476,13 +476,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -547,27 +547,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -857,7 +857,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1681,10 +1681,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2567,7 +2577,7 @@ Output: - + %1 support diff --git a/lang/calamares_he.ts b/lang/calamares_he.ts index 88422ec29..ef788f793 100644 --- a/lang/calamares_he.ts +++ b/lang/calamares_he.ts @@ -477,13 +477,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ The installer will quit and all changes will be lost. גו&דל: - + En&crypt ה&צפן - + Logical לוגי - + Primary ראשי - + GPT GPT - + Mountpoint already in use. Please select another one. נקודת העיגון בשימוש. אנא בחר נקודת עיגון אחרת. @@ -858,7 +858,7 @@ The installer will quit and all changes will be lost. סימונים: - + Mountpoint already in use. Please select another one. נקודת העיגון בשימוש. אנא בחר נקודת עיגון אחרת. @@ -1682,10 +1682,20 @@ The installer will quit and all changes will be lost. התקן &מנהל אתחול מערכת על: - + Are you sure you want to create a new partition table on %1? האם אתה בטוח שברצונך ליצור טבלת מחיצות חדשה על %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support תמיכה ב - %1 diff --git a/lang/calamares_hi.ts b/lang/calamares_hi.ts index 02238b665..71e7ce3e8 100644 --- a/lang/calamares_hi.ts +++ b/lang/calamares_hi.ts @@ -477,14 +477,14 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. कमांड run नहीं की जा सकी। - - No rootMountPoint is defined, so command cannot be run in the target environment. - कोई rootMountPoint परिभाषित नहीं है, इसलिए कमांड को लक्ष्य वातावरण में run नहीं किया जा सकता है। + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -548,27 +548,27 @@ The installer will quit and all changes will be lost. - + En&crypt En&crypt - + Logical - + Primary मुख्य - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -858,7 +858,7 @@ The installer will quit and all changes will be lost. Flags: - + Mountpoint already in use. Please select another one. @@ -1682,10 +1682,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, रोहन गर्ग व <a href="https://www.transifex.com/calamares/calamares/">Calamares अनुवादक टीम</a> का धन्यवाद।<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 सहायता diff --git a/lang/calamares_hr.ts b/lang/calamares_hr.ts index 93fed2798..7d70ee86f 100644 --- a/lang/calamares_hr.ts +++ b/lang/calamares_hr.ts @@ -477,14 +477,14 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. CommandList - + Could not run command. Ne mogu pokrenuti naredbu. - - No rootMountPoint is defined, so command cannot be run in the target environment. - Nije definirana root točka montiranja tako da se naredba ne može izvršiti na ciljanoj okolini. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -548,27 +548,27 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Ve&ličina: - + En&crypt Ši&friraj - + Logical Logično - + Primary Primarno - + GPT GPT - + Mountpoint already in use. Please select another one. Točka montiranja se već koristi. Odaberite drugu. @@ -858,7 +858,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Oznake: - + Mountpoint already in use. Please select another one. Točka montiranja se već koristi. Odaberite drugu. @@ -1682,10 +1682,20 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Instaliraj boot &učitavač na: - + Are you sure you want to create a new partition table on %1? Jeste li sigurni da želite stvoriti novu particijsku tablicu na %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2571,7 +2581,7 @@ Izlaz: <h1>%1</h1><br/><strong>%2<br/>za %3</strong><br/><br/>Autorska prava 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorska prava 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Zahvale: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg i <a href="https://www.transifex.com/calamares/calamares/">Calamares timu za prevođenje</a>.<br/><br/><a href="https://calamares.io/">Calamares sponzorira <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 podrška diff --git a/lang/calamares_hu.ts b/lang/calamares_hu.ts index 3652a5eec..c5d3aeb76 100644 --- a/lang/calamares_hu.ts +++ b/lang/calamares_hu.ts @@ -478,13 +478,13 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l CommandList - + Could not run command. A parancsot nem lehet futtatni. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -549,27 +549,27 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Mé&ret: - + En&crypt Titkosítás - + Logical Logikai - + Primary Elsődleges - + GPT GPT - + Mountpoint already in use. Please select another one. A csatolási pont már használatban van. Kérlek, válassz másikat. @@ -859,7 +859,7 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Zászlók: - + Mountpoint already in use. Please select another one. A csatolási pont már használatban van. Kérlek, válassz másikat. @@ -1683,10 +1683,20 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l &Rendszerbetöltő telepítése ide: - + Are you sure you want to create a new partition table on %1? Biztos vagy benne, hogy létrehozol egy új partíciós táblát itt %1 ? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2570,7 +2580,7 @@ Calamares hiba %1. - + %1 support %1 támogatás diff --git a/lang/calamares_id.ts b/lang/calamares_id.ts index 0babc5db5..0c5816d82 100644 --- a/lang/calamares_id.ts +++ b/lang/calamares_id.ts @@ -479,14 +479,14 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. CommandList - + Could not run command. Tidak dapat menjalankan perintah - - No rootMountPoint is defined, so command cannot be run in the target environment. - rootMountPoint tidak didefiniskan, sehingga perintah tidak dapat dijalankan dalam lingkungan environment + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -550,27 +550,27 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Uku&ran: - + En&crypt Enkripsi - + Logical Logikal - + Primary Utama - + GPT GPT - + Mountpoint already in use. Please select another one. Titik-kait sudah digunakan. Silakan pilih yang lainnya. @@ -860,7 +860,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Bendera: - + Mountpoint already in use. Please select another one. Titik-kait sudah digunakan. Silakan pilih yang lainnya. @@ -1684,10 +1684,20 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Pasang boot %loader pada: - + Are you sure you want to create a new partition table on %1? Apakah Anda yakin ingin membuat tabel partisi baru pada %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2573,7 +2583,7 @@ Keluaran: <h1>%1</h1><br/><strong>%2<br/>untuk %3</strong><br/><br/> Hak Cipta 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Hak Cipta 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/> Terimakasih kepada: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg dan <a href="https://www.transifex.com/calamares/calamares/"> tim penerjemah Calamares </a>. <br/><br/><a href="https://calamares.io/">Pengembangan Calamares</a>disponsori oleh <br/><a href="http://www.blue-systems.com/">Blue Systems</a>- Liberating Software. - + %1 support Dukungan %1 diff --git a/lang/calamares_is.ts b/lang/calamares_is.ts index 1960feb74..cec03d0c2 100644 --- a/lang/calamares_is.ts +++ b/lang/calamares_is.ts @@ -477,13 +477,13 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. St&ærð: - + En&crypt &Dulrita - + Logical Rökleg - + Primary Aðal - + GPT GPT - + Mountpoint already in use. Please select another one. Tengipunktur er þegar í notkun. Veldu einhvern annan. @@ -858,7 +858,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Flögg: - + Mountpoint already in use. Please select another one. Tengipunktur er þegar í notkun. Veldu einhvern annan. @@ -1682,10 +1682,20 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Setja upp ræsistjóran á: - + Are you sure you want to create a new partition table on %1? Ertu viss um að þú viljir búa til nýja disksneið á %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support %1 stuðningur diff --git a/lang/calamares_it_IT.ts b/lang/calamares_it_IT.ts index 78e1743e8..e691e62b6 100644 --- a/lang/calamares_it_IT.ts +++ b/lang/calamares_it_IT.ts @@ -477,14 +477,14 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno CommandList - + Could not run command. Impossibile eseguire il comando. - - No rootMountPoint is defined, so command cannot be run in the target environment. - Non è stato definito alcun rootMountPoint, quindi il comando non può essere eseguito nell'ambiente di destinazione. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -548,27 +548,27 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno &Dimensione: - + En&crypt Cr&iptare - + Logical Logica - + Primary Primaria - + GPT GPT - + Mountpoint already in use. Please select another one. Il punto di mount è già in uso. Sceglierne un altro. @@ -858,7 +858,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Flag: - + Mountpoint already in use. Please select another one. Il punto di mount è già in uso. Sceglierne un altro. @@ -1682,10 +1682,20 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Installare il boot &loader su: - + Are you sure you want to create a new partition table on %1? Si è sicuri di voler creare una nuova tabella delle partizioni su %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2570,7 +2580,7 @@ Output: - + %1 support supporto %1 diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index 3e6c2aca9..589d66db2 100644 --- a/lang/calamares_ja.ts +++ b/lang/calamares_ja.ts @@ -477,14 +477,14 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. コマンドを実行できませんでした。 - - No rootMountPoint is defined, so command cannot be run in the target environment. - rootMountPoint が定義されていません、それでターゲットとする環境でコマンドが起動しません。 + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -548,27 +548,27 @@ The installer will quit and all changes will be lost. サイズ(&Z) - + En&crypt 暗号化(&C) - + Logical 論理 - + Primary プライマリ - + GPT GPT - + Mountpoint already in use. Please select another one. マウントポイントは既に使用されています。他を選択してください。 @@ -858,7 +858,7 @@ The installer will quit and all changes will be lost. フラグ: - + Mountpoint already in use. Please select another one. マウントポイントは既に使用されています。他を選択してください。 @@ -1683,10 +1683,20 @@ The installer will quit and all changes will be lost. ブートローダーインストール先 (&L): - + Are you sure you want to create a new partition table on %1? %1 上で新しいパーティションテーブルを作成します。よろしいですか? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2572,7 +2582,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 サポート diff --git a/lang/calamares_kk.ts b/lang/calamares_kk.ts index e3105d100..b63a348ae 100644 --- a/lang/calamares_kk.ts +++ b/lang/calamares_kk.ts @@ -476,13 +476,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -547,27 +547,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -857,7 +857,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1681,10 +1681,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2567,7 +2577,7 @@ Output: - + %1 support %1 қолдауы diff --git a/lang/calamares_kn.ts b/lang/calamares_kn.ts index 90340bc67..e67824b9c 100644 --- a/lang/calamares_kn.ts +++ b/lang/calamares_kn.ts @@ -476,13 +476,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -547,27 +547,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -857,7 +857,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1681,10 +1681,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2567,7 +2577,7 @@ Output: - + %1 support diff --git a/lang/calamares_lo.ts b/lang/calamares_lo.ts index 84f5157a1..ba18f4e33 100644 --- a/lang/calamares_lo.ts +++ b/lang/calamares_lo.ts @@ -476,13 +476,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -547,27 +547,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -857,7 +857,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1681,10 +1681,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2567,7 +2577,7 @@ Output: - + %1 support diff --git a/lang/calamares_lt.ts b/lang/calamares_lt.ts index 0b0939d43..280248bd5 100644 --- a/lang/calamares_lt.ts +++ b/lang/calamares_lt.ts @@ -477,14 +477,14 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. CommandList - + Could not run command. Nepavyko paleisti komandos. - - No rootMountPoint is defined, so command cannot be run in the target environment. - Nėra apibrėžta šaknies prijungimo vieta, taigi komanda negali būti įvykdyta paskirties aplinkoje. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + Komanda yra vykdoma serverio aplinkoje ir turi žinoti šaknies kelią, tačiau nėra apibrėžtas joks rootMountPoint. @@ -548,27 +548,27 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. D&ydis: - + En&crypt Užši&fruoti - + Logical Loginė - + Primary Pagrindinė - + GPT GPT - + Mountpoint already in use. Please select another one. Prijungimo taškas jau yra naudojamas. Prašome pasirinkti kitą. @@ -858,7 +858,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Vėliavėlės: - + Mountpoint already in use. Please select another one. Prijungimo taškas jau yra naudojamas. Prašome pasirinkti kitą. @@ -1682,10 +1682,20 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Įdiegti pa&leidyklę skaidinyje: - + Are you sure you want to create a new partition table on %1? Ar tikrai %1 norite sukurti naują skaidinių lentelę? + + + Can not create new partition + Nepavyksta sukurti naują skaidinį + + + + 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. + Skaidinių lentelėje ties %1 jau yra %2 pirminiai skaidiniai ir daugiau nebegali būti pridėta. Pašalinkite vieną pirminį skaidinį ir vietoj jo, pridėkite išplėstą skaidinį. + PartitionViewStep @@ -2265,7 +2275,7 @@ Išvestis: rootMountPoint is %1 - šaknies prijungimo vieta yra %1 + rootMountPoint yra %1 @@ -2571,7 +2581,7 @@ Išvestis: <h1>%1</h1><br/><strong>%2<br/>sistemai %3</strong><br/><br/>Autorių teisės 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorių teisės 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Dėkojame: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg ir <a href="https://www.transifex.com/calamares/calamares/">Calamares vertėjų komandai</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> kūrimą remia <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Išlaisvinanti programinė įranga. - + %1 support %1 palaikymas diff --git a/lang/calamares_mr.ts b/lang/calamares_mr.ts index 4b9d431af..21d468067 100644 --- a/lang/calamares_mr.ts +++ b/lang/calamares_mr.ts @@ -476,13 +476,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -547,27 +547,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical तार्किक - + Primary प्राथमिक - + GPT - + Mountpoint already in use. Please select another one. @@ -857,7 +857,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1681,10 +1681,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2567,7 +2577,7 @@ Output: - + %1 support %1 पाठबळ diff --git a/lang/calamares_nb.ts b/lang/calamares_nb.ts index d9d38cd26..6dfebb4ff 100644 --- a/lang/calamares_nb.ts +++ b/lang/calamares_nb.ts @@ -477,13 +477,13 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt.St&ørrelse: - + En&crypt - + Logical Logisk - + Primary Primær - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -858,7 +858,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + Mountpoint already in use. Please select another one. @@ -1682,10 +1682,20 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support diff --git a/lang/calamares_nl.ts b/lang/calamares_nl.ts index c3ec57b23..090ca9d9e 100644 --- a/lang/calamares_nl.ts +++ b/lang/calamares_nl.ts @@ -477,13 +477,13 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. &Grootte: - + En&crypt &Versleutelen - + Logical Logisch - + Primary Primair - + GPT GPT - + Mountpoint already in use. Please select another one. Aankoppelpunt reeds in gebruik. Gelieve een andere te kiezen. @@ -858,7 +858,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Vlaggen: - + Mountpoint already in use. Please select another one. Aankoppelpunt reeds in gebruik. Gelieve een andere te kiezen. @@ -1682,10 +1682,20 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Installeer boot&loader op: - + Are you sure you want to create a new partition table on %1? Weet u zeker dat u een nieuwe partitie tabel wil maken op %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support %1 ondersteuning diff --git a/lang/calamares_pl.ts b/lang/calamares_pl.ts index f3c540d54..a0473e590 100644 --- a/lang/calamares_pl.ts +++ b/lang/calamares_pl.ts @@ -477,14 +477,14 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. CommandList - + Could not run command. Nie można wykonać polecenia. - - No rootMountPoint is defined, so command cannot be run in the target environment. - Nie określono rootMountPoint, więc polecenie nie może zostać wykonane w docelowym środowisku. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + Polecenie uruchomione jest w środowisku hosta i musi znać ścieżkę katalogu głównego, jednakże nie został określony punkt montowania katalogu głównego (root). @@ -548,27 +548,27 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Ro&zmiar: - + En&crypt Zaszy%fruj - + Logical Logiczna - + Primary Podstawowa - + GPT GPT - + Mountpoint already in use. Please select another one. Punkt montowania jest już używany. Proszę wybrać inny. @@ -858,7 +858,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Flagi: - + Mountpoint already in use. Please select another one. Punkt montowania jest już używany. Proszę wybrać inny. @@ -1465,7 +1465,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. Fatal failure - Krytyczne niepowodzenie + Błąd krytyczny @@ -1682,10 +1682,20 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Zainsta&luj program rozruchowy na: - + Are you sure you want to create a new partition table on %1? Czy na pewno chcesz utworzyć nową tablicę partycji na %1? + + + Can not create new partition + Nie można utworzyć nowej partycji + + + + 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. + Tablica partycji na %1 ma już %2 podstawowych partycji i więcej nie może już być dodanych. Prosimy o usunięcie jednej partycji systemowej i dodanie zamiast niej partycji rozszerzonej. + PartitionViewStep @@ -2387,7 +2397,7 @@ Wyjście: Machine feedback - + Maszynowa informacja zwrotna @@ -2398,17 +2408,17 @@ Wyjście: Error in machine feedback configuration. - + Błąd w konfiguracji maszynowej informacji zwrotnej. Could not configure machine feedback correctly, script error %1. - + Nie można poprawnie skonfigurować maszynowej informacji zwrotnej, błąd skryptu %1. Could not configure machine feedback correctly, Calamares error %1. - + Nie można poprawnie skonfigurować maszynowej informacji zwrotnej, błąd Calamares %1. @@ -2571,7 +2581,7 @@ Wyjście: <h1>%1</h1><br/><strong>%2<br/>dla %3</strong><br/><br/>Prawa autorskie 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Prawa autorskie 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Podziękowania dla: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg i <a href="https://www.transifex.com/calamares/calamares/">zespołu tłumaczy Calamares</a>.<br/><br/><a href="https://calamares.io/">Projekt Calamares</a> jest sponsorowany przez <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Wsparcie %1 diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index c73d4d958..daaf821c8 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -479,14 +479,14 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. CommandList - + Could not run command. Não foi possível executar o comando. - - No rootMountPoint is defined, so command cannot be run in the target environment. - O comando não pode ser executado no ambiente de destino porque o rootMontPoint não foi definido. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + O comando é executado no ambiente do hospedeiro e precisa saber o caminho root, mas nenhum rootMountPoint foi definido. @@ -550,27 +550,27 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.&Tamanho: - + En&crypt &Criptografar - + Logical Lógica - + Primary Primária - + GPT GPT - + Mountpoint already in use. Please select another one. Ponto de montagem já em uso. Por favor, selecione outro. @@ -860,7 +860,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Marcadores: - + Mountpoint already in use. Please select another one. Ponto de montagem já em uso. Por favor, selecione outro. @@ -1684,10 +1684,20 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Insta&lar o gerenciador de inicialização em: - + Are you sure you want to create a new partition table on %1? Você tem certeza de que deseja criar uma nova tabela de partições em %1? + + + Can not create new partition + Não foi possível criar uma nova partição + + + + 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. + A tabela de partições %1 já tem %2 partições primárias, e nenhuma a mais pode ser adicionada. Por favor, remova uma partição primária e adicione uma partição estendida no lugar. + PartitionViewStep @@ -2573,7 +2583,7 @@ Saída: <h1>%1</h1><br/><strong>%2<br/>para %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimentos a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg e às <a href="https://www.transifex.com/calamares/calamares/">equipes de tradução do Calamares</a>.<br/><br/>O desenvolvimento do <a href="https://calamares.io/">Calamares</a> tem apoio de <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suporte diff --git a/lang/calamares_pt_PT.ts b/lang/calamares_pt_PT.ts index f43c1e8db..270bc6b25 100644 --- a/lang/calamares_pt_PT.ts +++ b/lang/calamares_pt_PT.ts @@ -477,14 +477,14 @@ O instalador será encerrado e todas as alterações serão perdidas. CommandList - + Could not run command. Não foi possível correr o comando. - - No rootMountPoint is defined, so command cannot be run in the target environment. - Não está definido o Ponto de Montagem root, portanto o comando não pode ser corrido no ambiente alvo. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + O comando corre no ambiente do host e precisa de conhecer o caminho root, mas nenhum Ponto de Montagem root está definido. @@ -548,27 +548,27 @@ O instalador será encerrado e todas as alterações serão perdidas.Ta&manho: - + En&crypt En&criptar - + Logical Lógica - + Primary Primária - + GPT GPT - + Mountpoint already in use. Please select another one. Ponto de montagem já em uso. Por favor selecione outro. @@ -858,7 +858,7 @@ O instalador será encerrado e todas as alterações serão perdidas.Flags: - + Mountpoint already in use. Please select another one. Ponto de montagem já em uso. Por favor selecione outro. @@ -1682,10 +1682,20 @@ O instalador será encerrado e todas as alterações serão perdidas.Instalar &carregador de arranque em: - + Are you sure you want to create a new partition table on %1? Tem certeza de que deseja criar uma nova tabela de partições em %1? + + + Can not create new partition + Não é possível criar nova partição + + + + 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. + A tabela de partições em %1 já tem %2 partições primárias, e não podem ser adicionadas mais. Em vez disso, por favor remova uma partição primária e adicione uma partição estendida. + PartitionViewStep @@ -2571,7 +2581,7 @@ Saída de Dados: <h1>%1</h1><br/><strong>%2<br/>para %3</strong><br/><br/>Direitos de cópia 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Direitos de cópia 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimentos a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg e à <a href="https://www.transifex.com/calamares/calamares/">equipa de tradutores do Calamares</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> desenvolvimento patrocinado por <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suporte diff --git a/lang/calamares_ro.ts b/lang/calamares_ro.ts index 8087ad98e..f23907288 100644 --- a/lang/calamares_ro.ts +++ b/lang/calamares_ro.ts @@ -477,14 +477,14 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. CommandList - + Could not run command. Nu s-a putut executa comanda. - - No rootMountPoint is defined, so command cannot be run in the target environment. - Nu este definit niciun rootMountPoint, așadar comanda nu a putut fi executată în mediul dorit. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -548,27 +548,27 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Mă&rime: - + En&crypt &Criptează - + Logical Logică - + Primary Primară - + GPT GPT - + Mountpoint already in use. Please select another one. Punct de montare existent. Vă rugăm alegeţi altul. @@ -858,7 +858,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Flags: - + Mountpoint already in use. Please select another one. Punct de montare existent. Vă rugăm alegeţi altul. @@ -1685,10 +1685,20 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Instalează boot&loaderul pe: - + Are you sure you want to create a new partition table on %1? Sigur doriți să creați o nouă tabelă de partiție pe %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2574,7 +2584,7 @@ Output <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Mulțumiri: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg și <a href="https://www.transifex.com/calamares/calamares/">echipei de traducători Calamares</a>.<br/><br/><a href="https://calamares.io/">Calamares</a>, dezvoltare sponsorizată de <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suport diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts index 0d53c9b89..d84de4f44 100644 --- a/lang/calamares_ru.ts +++ b/lang/calamares_ru.ts @@ -476,13 +476,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. Не удалось выполнить команду. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -547,27 +547,27 @@ The installer will quit and all changes will be lost. Ра&змер: - + En&crypt Ши&фровать - + Logical Логический - + Primary Основной - + GPT GPT - + Mountpoint already in use. Please select another one. Точка монтирования уже занята. Пожалуйста, выберете другую. @@ -857,7 +857,7 @@ The installer will quit and all changes will be lost. Флаги: - + Mountpoint already in use. Please select another one. Точка монтирования уже занята. Пожалуйста, выберете другую. @@ -1681,10 +1681,20 @@ The installer will quit and all changes will be lost. Установить &загрузчик в: - + Are you sure you want to create a new partition table on %1? Вы уверены, что хотите создать новую таблицу разделов на %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2567,7 +2577,7 @@ Output: - + %1 support %1 поддержка diff --git a/lang/calamares_sk.ts b/lang/calamares_sk.ts index ee385a447..1d0f153cd 100644 --- a/lang/calamares_sk.ts +++ b/lang/calamares_sk.ts @@ -477,14 +477,14 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. CommandList - + Could not run command. Nepodarilo sa spustiť príkaz. - - No rootMountPoint is defined, so command cannot be run in the target environment. - Nie je definovaný parameter rootMountPoint, takže príkaz nemôže byť spustený v cieľovom prostredí. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -548,27 +548,27 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Veľ&kosť: - + En&crypt Zaši&frovať - + Logical Logický - + Primary Primárny - + GPT GPT - + Mountpoint already in use. Please select another one. Bod pripojenia sa už používa. Prosím, vyberte iný. @@ -858,7 +858,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Značky: - + Mountpoint already in use. Please select another one. Bod pripojenia sa už používa. Prosím, vyberte iný. @@ -1682,10 +1682,20 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Nainštalovať &zavádzač na: - + Are you sure you want to create a new partition table on %1? Naozaj chcete vytvoriť novú tabuľku oddielov na zariadení %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2571,7 +2581,7 @@ Výstup: <h1>%1</h1><br/><strong>%2<br/>pre distribúciu %3</strong><br/><br/>Autorské práva 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorské práva 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Poďakovanie: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg a <a href="https://www.transifex.com/calamares/calamares/">tím prekladateľov inštalátora Calamares</a>.<br/><br/>Vývoj inštalátora <a href="https://calamares.io/">Calamares</a> je podporovaný spoločnosťou <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Podpora distribúcie %1 diff --git a/lang/calamares_sl.ts b/lang/calamares_sl.ts index 47eae63c9..1bee31eae 100644 --- a/lang/calamares_sl.ts +++ b/lang/calamares_sl.ts @@ -477,13 +477,13 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Ve&likost - + En&crypt - + Logical Logičen - + Primary Primaren - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -858,7 +858,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Zastavice: - + Mountpoint already in use. Please select another one. @@ -1682,10 +1682,20 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + Are you sure you want to create a new partition table on %1? Ali ste prepričani, da želite ustvariti novo razpredelnico razdelkov na %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support diff --git a/lang/calamares_sq.ts b/lang/calamares_sq.ts index 78e9aa546..7b118abb0 100644 --- a/lang/calamares_sq.ts +++ b/lang/calamares_sq.ts @@ -9,12 +9,12 @@ This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - Ky sistem qe nisur me një mjedis nisjesh <strong>EFI</strong>.<br><br>Që të formësojë nisjen nga një mjedis EFI, ky instalues duhet të vërë në punë një aplikacion ngarkuesi nisësi, të tillë si <strong>GRUB</strong> ose <strong>systemd-boot</strong> në një <strong>Ndare EFI Sistemi</strong>. Kjo bëhet vetvetiu, hiq rastin kur zgjidhni pjesëzim dorazi, rast në të cilin duhet ta zgjidhni apo krijoni ju vetë. + Ky sistem qe nisur me një mjedis nisjesh <strong>EFI</strong>.<br><br>Që të formësojë nisjen nga një mjedis EFI, ky instalues duhet të vërë në punë një aplikacion ngarkuesi nisësi, të tillë si <strong>GRUB</strong> ose <strong>systemd-boot</strong> në një <strong>Pjesë EFI Sistemi</strong>. Kjo bëhet vetvetiu, hiq rastin kur zgjidhni pjesëzim dorazi, rast në të cilin duhet ta zgjidhni apo krijoni ju vetë. This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - Ky sistem qe nisur me një mjedis nisjesh <strong>BIOS</strong>.<br><br>Që të formësojë nisjen nga një mjedis BIOS, ky instalues duhet të instalojë një ngarkues nisjesh, të tillë si <strong>GRUB</strong>, ose në krye të n jë ndarjeje, ose te <strong>Master Boot Record</strong> pranë fillimit të tabelës së ndarjeve (e parapëlqyer). Kjo bëhet vetvetiu, veç në zgjedhshi ndarje dorazi, rast në të cilin duhet ta rregulloni ju vetë. + Ky sistem qe nisur me një mjedis nisjesh <strong>BIOS</strong>.<br><br>Që të formësojë nisjen nga një mjedis BIOS, ky instalues duhet të instalojë një ngarkues nisjesh, të tillë si <strong>GRUB</strong>, ose në krye të një pjese, ose te <strong>Master Boot Record</strong> pranë fillimit të tabelës së pjesëve (e parapëlqyer). Kjo bëhet vetvetiu, veç në zgjedhshi pjesëzim dorazi, rast në të cilin duhet ta rregulloni ju vetë. @@ -27,12 +27,12 @@ Boot Partition - Ndarje Nisjesh + Pjesë Nisjesh System Partition - Ndarje Sistemi + Pjesë Sistemi @@ -264,7 +264,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. unparseable Python error - Gabim kodi Python të papërtypshëm dot + Gabim kod Python i papërtypshëm dot @@ -310,7 +310,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. For best results, please ensure that this computer: - Për përfundime më të mirë, ju lutemi, garantoni që ky kompjuter: + Për përfundime më të mira, ju lutemi, garantoni që ky kompjuter: @@ -333,7 +333,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - <strong>Ndarje dorazi</strong><br/>Ndarjet mund t’i krijoni dhe ripërmasoni ju vetë. + <strong>Pjesëzim dorazi</strong><br/>Pjesët mund t’i krijoni dhe ripërmasoni ju vetë. @@ -343,7 +343,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - %1 do të zvogëlohet në %2MB dhe për %4 do të krijohet një ndarje e re %3MB. + %1 do të zvogëlohet në %2MB dhe për %4 do të krijohet një pjesë e re %3MB. @@ -361,37 +361,37 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Reuse %1 as home partition for %2. - Ripërdore %1 si ndarjen shtëpi për %2. + Ripërdore %1 si pjesën shtëpi për %2. <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - <strong>Përzgjidhni një ndarje që të zvogëlohet, mandej tërhiqni shtyllën e poshtme që ta ripërmasoni</strong> + <strong>Përzgjidhni një pjesë që të zvogëlohet, mandej tërhiqni shtyllën e poshtme që ta ripërmasoni</strong> <strong>Select a partition to install on</strong> - <strong>Përzgjidhni një ndarje ku të instalohet</strong> + <strong>Përzgjidhni një pjesë ku të instalohet</strong> An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Në këtë sistem s’mund të gjendet gjëkundi një ndarje EFI sistemi. Ju lutemi, kthehuni mbrapsht dhe përdorni pjesëzimin dorazi që të rregulloni %1. + Në këtë sistem s’gjendet gjëkundi një pjesë EFI sistemi. Ju lutemi, kthehuni mbrapsht dhe përdorni pjesëzimin dorazi që të rregulloni %1. The EFI system partition at %1 will be used for starting %2. - Për nisjen e %2 do të përdoret ndarja EFI e sistemit te %1. + Për nisjen e %2 do të përdoret pjesa EFI e sistemit te %1. EFI system partition: - Ndarje Sistemi EFI: + Pjesë Sistemi EFI: This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - Kjo pajisje depozitimi përmban %1 në të. Ç’do të donit të bënito?<br/>Do të jeni në gjendje të rishqyrtoni dhe ripohoni zgjedhjet tuaja, para se te pajisja e depozitimit të bëhet çfarëdo ndryshimi. + Kjo pajisje depozitimi përmban %1 në të. Ç’do të donit të bënit?<br/>Do të jeni në gjendje të rishqyrtoni dhe ripohoni zgjedhjet tuaja, para se te pajisja e depozitimit të bëhet çfarëdo ndryshimi. @@ -412,7 +412,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - <strong>Instaloje në krah të tij</strong><br/>Instaluesi do të zvogëlojë një ndarje për të bërë vend për %1. + <strong>Instaloje në krah të tij</strong><br/>Instaluesi do të zvogëlojë një pjesë për të bërë vend për %1. @@ -420,7 +420,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. <strong>Replace a partition</strong><br/>Replaces a partition with %1. - <strong>Zëvendëso një ndarje</strong><br/>Zëvendëson një ndarje me %1. + <strong>Zëvendëso një pjesë</strong><br/>Zëvendëson një pjesë me %1. @@ -461,7 +461,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Clearing all temporary mounts. - Po hiqenn krejt montimet e përkohshme. + Po hiqen krejt montimet e përkohshme. @@ -477,14 +477,14 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. CommandList - + Could not run command. S’u xhirua dot urdhri. - - No rootMountPoint is defined, so command cannot be run in the target environment. - S’ka të caktuar rootMountPoint, ndaj urdhri s’mund të xhirohet në mjedisin e synuar. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + Urdhri xhirohet në mjedisin strehë dhe është e nevojshme të dijë shtegun për rrënjën, por nuk ka rootMountPoint të përcaktuar. @@ -500,7 +500,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Create a Partition - Krijoni një Ndarje + Krijoni një Pjesë @@ -510,7 +510,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Partition &Type: - &Lloj Ndarjeje: + &Lloj Pjese: @@ -548,27 +548,27 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. &Madhësi: - + En&crypt &Fshehtëzoje - + Logical - Logjik + Logjike - + Primary - Parësor + Parësore - + GPT GPT - + Mountpoint already in use. Please select another one. Pikë montimi tashmë e përdorur. Ju lutemi, përzgjidhni një tjetër. @@ -578,22 +578,22 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Create new %2MB partition on %4 (%3) with file system %1. - Krijo ndarje të re %2MB te %4 (%3) me sistem kartelash %1. + Krijo pjesë të re %2MB te %4 (%3) me sistem kartelash %1. Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - Krijo ndarje të re <strong>%2MB</strong> te <strong>%4</strong> (%3) me sistem kartelash <strong>%1</strong>. + Krijo pjesë të re <strong>%2MB</strong> te <strong>%4</strong> (%3) me sistem kartelash <strong>%1</strong>. Creating new %1 partition on %2. - Po krijohet ndarje e re %1 te %2. + Po krijohet pjesë e re %1 te %2. The installer failed to create partition on disk '%1'. - Instaluesi s’arriti të krijojë ndarje në diskun '%1'. + Instaluesi s’arriti të krijojë pjesë në diskun '%1'. @@ -601,17 +601,17 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Create Partition Table - Krijo Tabelë Ndarjesh + Krijo Tabelë Pjesësh Creating a new partition table will delete all existing data on the disk. - Krijimi i një tabele të re ndarjesh do të fshijë krejt të dhënat ekzistuese në disk. + Krijimi i një tabele të re pjesësh do të fshijë krejt të dhënat ekzistuese në disk. What kind of partition table do you want to create? - Ç’lloj tabele ndarjesh doni të krijoni? + Ç’lloj tabele pjesësh doni të krijoni? @@ -621,7 +621,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. GUID Partition Table (GPT) - Tabelë Ndarjesh GUID (GPT) + Tabelë Pjesësh GUID (GPT) @@ -629,22 +629,22 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Create new %1 partition table on %2. - Krijo tabelë të re ndarjesh %1 te %2. + Krijo tabelë të re pjesësh %1 te %2. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - Krijoni tabelë ndarjeje të re <strong>%1</strong> te <strong>%2</strong> (%3). + Krijoni tabelë pjesësh të re <strong>%1</strong> te <strong>%2</strong> (%3). Creating new %1 partition table on %2. - Po krijohet tabelë e re ndarjesh %1 te %2. + Po krijohet tabelë e re pjesësh %1 te %2. The installer failed to create a partition table on %1. - Instaluesi s’arriti të krijojë tabelë ndarjesh në diskun %1. + Instaluesi s’arriti të krijojë tabelë pjesësh në diskun %1. @@ -720,22 +720,22 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Delete partition %1. - Fshije ndarjen %1. + Fshije pjesën %1. Delete partition <strong>%1</strong>. - Fshije ndarjen <strong>%1</strong>. + Fshije pjesën <strong>%1</strong>. Deleting partition %1. - Po fshihet ndarja %1. + Po fshihet pjesa %1. The installer failed to delete partition %1. - Instaluesi dështoi në fshirjen e ndarjes %1. + Instaluesi dështoi në fshirjen e pjesës %1. @@ -743,32 +743,32 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - Lloji i <strong>tabelës së ndarjeve</strong> në pajisjen e përzgjedhur të depozitimeve.<br><br>Mënyra e vetme për ndryshim të tabelës së ndarjeve është të fshihet dhe rikrijohet nga e para tabela e ndarjeve, çka shkatërron krejt të dhënat në pajisjen e depozitimit.<br>Ky instalues do të ruajë tabelën e tanishme të ndarjeve, veç në zgjedhshi shprehimisht ndryshe.<br>Nëse s’jeni i sigurt, në sisteme moderne parapëlqehet GPT. + Lloji i <strong>tabelës së pjesëve</strong> në pajisjen e përzgjedhur të depozitimeve.<br><br>Mënyra e vetme për ndryshim të tabelës së pjesëve është të fshihet dhe rikrijohet nga e para tabela e pjesëve, çka shkatërron krejt të dhënat në pajisjen e depozitimit.<br>Ky instalues do të ruajë tabelën e tanishme të pjesëve, veç në zgjedhshi shprehimisht ndryshe.<br>Nëse s’jeni i sigurt, në sisteme moderne parapëlqehet GPT. This device has a <strong>%1</strong> partition table. - Kjo pajisje ka një tabelë ndarjesh <strong>%1</strong>. + Kjo pajisje ka një tabelë pjesësh <strong>%1</strong>. This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - Kjo është një pajisje <strong>loop</strong>.<br><br>Është një pseudo-pajisje pa tabelë ndarjesh, që e bën një kartelë të përdorshme si një pajisje blloqesh. Kjo lloj skeme zakonisht përmban një sistem të vetëm kartelash. + Kjo është një pajisje <strong>loop</strong>.<br><br>Është një pseudo-pajisje pa tabelë pjesësh, që e bën një kartelë të përdorshme si një pajisje blloqesh. Kjo lloj skeme zakonisht përmban një sistem të vetëm kartelash. This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - Ky instalues <strong>s’pikas dot tabelë ndarjesh</strong> te pajisja e depozitimit e përzgjedhur.<br><br>Ose pajisja s’ka tabelë ndarjesh, ose tabela e ndarjeve është e dëmtuar ose e një lloji të panjohur.<br>Ky instalues mund të krijojë për ju një tabelë të re ndarjesh, ose vetvetiu, ose përmes faqes së pjesëzimit dorazi. + Ky instalues <strong>s’pikas dot tabelë pjesësh</strong> te pajisja e depozitimit e përzgjedhur.<br><br>Ose pajisja s’ka tabelë pjesësh, ose tabela e pjesëve është e dëmtuar ose e një lloji të panjohur.<br>Ky instalues mund të krijojë për ju një tabelë të re pjesësh, ose vetvetiu, ose përmes faqes së pjesëzimit dorazi. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - <br><br>Ky është lloji i parapëlqyer tabele ndarjesh për sisteme modernë që nisen nga një mjedis nisjesh <strong>EFI</strong>. + <br><br>Ky është lloji i parapëlqyer tabele pjesësh për sisteme modernë që nisen nga një mjedis nisjesh <strong>EFI</strong>. <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - <br><br>Ky lloj tabele ndarjesh është i këshillueshëm vetëm në sisteme të vjetër të cilët nisen nga një mjedis nisjesh <strong>BIOS</strong>. Në shumicën e rasteve të tjera këshillohet GPT.<br><br><strong>Kujdes:</strong> Tabela e ndarjeve MBR është një standard i vjetruar, i erës MS-DOS.<br>Mund të krijohen vetëm 4 ndarje <em>parësore</em>, dhe nga këto 4, një mund të jetë ndarje <em>extended</em>, e cila nga ana e vet mund të përmbajë mjaft ndarje <em>logjike</em>. + <br><br>Ky lloj tabele pjesësh është i këshillueshëm vetëm në sisteme të vjetër të cilët nisen nga një mjedis nisjesh <strong>BIOS</strong>. Në shumicën e rasteve të tjera këshillohet GPT.<br><br><strong>Kujdes:</strong> Tabela e pjesëve MBR është një standard i vjetruar, i erës MS-DOS.<br>Mund të krijohen vetëm 4 pjesë <em>parësore</em>, dhe nga këto 4, një mund të jetë pjesë <em>extended</em>, e cila nga ana e vet mund të përmbajë mjaft pjesë <em>logjike</em>. @@ -789,12 +789,12 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Skip writing LUKS configuration for Dracut: "/" partition is not encrypted - Anashkalo shkrim formësiim LUKS për Dracut: ndarja \"/\" s’është e fshehtëzuar + Anashkalo shkrim formësimi LUKS për Dracut: pjesa \"/\" s’është e fshehtëzuar Failed to open %1 - S’arriti të hapë %1 + S’u arrit të hapet %1 @@ -810,7 +810,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Edit Existing Partition - Përpuno Ndarje Ekzistuese + Përpuno Pjesën Ekzistuese @@ -830,7 +830,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Warning: Formatting the partition will erase all existing data. - Kujdes: Formatimi i ndarjes do të fshijë krejt të dhënat ekzistuese. + Kujdes: Formatimi i pjesës do të fshijë krejt të dhënat ekzistuese. @@ -858,7 +858,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Flamurka: - + Mountpoint already in use. Please select another one. Pikë montimi tashmë e përdorur. Ju lutemi, përzgjidhni një tjetër. @@ -896,27 +896,27 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Set partition information - Caktoni të dhëna ndarjeje + Caktoni të dhëna pjese Install %1 on <strong>new</strong> %2 system partition. - Instaloje %1 në ndarje sistemi <strong>të re</strong> %2. + Instaloje %1 në pjesë sistemi <strong>të re</strong> %2. Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - Rregullo ndarje të <strong>re</strong> %2 me pikë montimi <strong>%1</strong>. + Rregullo pjesë të <strong>re</strong> %2 me pikë montimi <strong>%1</strong>. Install %2 on %3 system partition <strong>%1</strong>. - Instaloje %2 te ndarja e sistemit %3 <strong>%1</strong>. + Instaloje %2 te pjesa e sistemit %3 <strong>%1</strong>. Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - Rregullo ndarje %3 <strong>%1</strong> me pikë montimi <strong>%2</strong>. + Rregullo pjesë %3 <strong>%1</strong> me pikë montimi <strong>%2</strong>. @@ -980,22 +980,22 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Format partition %1 (file system: %2, size: %3 MB) on %4. - Formatoje ndarjen %1 (sistem kartelash: %2, madhësi: %3 MB) në %4. + Formatoje pjesën %1 (sistem kartelash: %2, madhësi: %3 MB) në %4. Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - Formato ndarje <strong>%3MB</strong> <strong>%1</strong> me sistem kartelash <strong>%2</strong>. + Formato pjesë <strong>%3MB</strong> <strong>%1</strong> me sistem kartelash <strong>%2</strong>. Formatting partition %1 with file system %2. - Po formatohet ndarja %1 me sistem kartelash %2. + Po formatohet pjesa %1 me sistem kartelash %2. The installer failed to format partition %1 on disk '%2'. - Instaluesi s’arriti të formatojë ndarjen %1 në diskun '%2'. + Instaluesi s’arriti të formatojë pjesën %1 në diskun '%2'. @@ -1088,7 +1088,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - Ju lutemi, shqyrtoni Marrëveshje Licencimi Për Përdorues të Thjeshtë (EULAs) më sipër.<br/>Nëse nuk pajtohemi me kushtet, procedura e rregullimit s’mund të shkojë më tej. + Ju lutemi, shqyrtoni Marrëveshje Licencimi Për Përdorues të Thjeshtë (EULAs) më sipër.<br/>Nëse nuk pajtoheni me kushtet, procedura e rregullimit s’mund të shkojë më tej. @@ -1098,7 +1098,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - Ju lutemi, shqyrtoni Marrëveshje Licencimi Për Përdorues të Thjeshtë (EULAs) më sipër.<br/>Nëse nuk pajtohemi me kushtet, nuk do të instalohet software pronësor, dhe në vend të tij do të përdoren alternativa nga burimi i hapët. + Ju lutemi, shqyrtoni Marrëveshje Licencimi Për Përdorues të Thjeshtë (EULAs) më sipër.<br/>Nëse nuk pajtoheni me kushtet, nuk do të instalohet software pronësor, dhe në vend të tij do të përdoren alternativa nga burimi i hapët. @@ -1355,7 +1355,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. The password does not contain enough character classes - Fjalëkalimi nuk përmban klasa të mjaftueshme shenjash + Fjalëkalimi s’përmban klasa të mjaftueshme shenjash @@ -1405,12 +1405,12 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. The password fails the dictionary check - %1 - Fjalëkalimi s’kaloi dot kontrollin kundrejt fjalorit - %1 + Fjalëkalimi s’kalon dot kontrollin kundrejt fjalorit - %1 The password fails the dictionary check - Fjalëkalimi s’kaloi dot kontrollin kundrejt fjalorit + Fjalëkalimi s’kalon dot kontrollin kundrejt fjalorit @@ -1591,12 +1591,12 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. New partition for %1 - Ndarje e re për %1 + Pjesë e re për %1 New partition - Ndarje e re + Pjesë e re @@ -1616,7 +1616,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. New partition - Ndarje e re + Pjesë e re @@ -1659,7 +1659,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. New Partition &Table - &Tabelë e Re Ndarjesh + &Tabelë e Re Pjesësh @@ -1682,9 +1682,19 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Instalo &ngarkues nisjesh në: - + Are you sure you want to create a new partition table on %1? - Jeni i sigurt se doni të krijoni një tabelë të re ndarjesh në %1? + Jeni i sigurt se doni të krijoni një tabelë të re pjesësh në %1? + + + + Can not create new partition + S’krijohet dot pjesë e re + + + + 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. + Tabela e pjesëzimit te %1 ka tashmë %2 pjesë parësore, dhe s’mund të shtohen të tjera. Ju lutemi, në vend të kësaj, hiqni një pjesë parësore dhe shtoni një pjesë të zgjeruar. @@ -1697,7 +1707,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Partitions - Ndarje + Pjesë @@ -1712,7 +1722,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. <strong>Replace</strong> a partition with %1. - <strong>Zëvendësojeni</strong> një ndarje me %1. + <strong>Zëvendësojeni</strong> një pjesë me %1. @@ -1732,7 +1742,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - <strong>Zëvendëso</strong> një ndarje te disku <strong>%2</strong> (%3) me %1. + <strong>Zëvendëso</strong> një pjesë te disku <strong>%2</strong> (%3) me %1. @@ -1757,32 +1767,32 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. No EFI system partition configured - S’ka të formësuar ndarje sistemi EFI + S’ka të formësuar pjesë sistemi EFI An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - Që të niset %1, është e domosdoshme një ndarje sistemi EFI.<br/><br/>Që të formësoni një ndarje sistemi EFI, kthehuni mbrapsht dhe përzgjidhni ose krijoni një sistem kartelash FAT32 me flamurkën <strong>esp</strong> të aktivizuar dhe me pikë montimi <strong>%2</strong>.<br/><br/>Mund të vazhdoni pa rregulluar një ndarje sistemi EFI, por mundet që sistemi të mos arrijë dot të niset. + Që të niset %1, është e domosdoshme një pjesë sistemi EFI.<br/><br/>Që të formësoni një pjesë sistemi EFI, kthehuni mbrapsht dhe përzgjidhni ose krijoni një sistem kartelash FAT32 me flamurkën <strong>esp</strong> të aktivizuar dhe me pikë montimi <strong>%2</strong>.<br/><br/>Mund të vazhdoni pa rregulluar një pjesë sistemi EFI, por mundet që sistemi të mos arrijë dot të niset. EFI system partition flag not set - S’është vënë flamurkë EFI ndarjeje sistemi + S’është vënë flamurkë EFI pjese sistemi An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - Që të niset %1, është e domosdoshme një ndarje sistemi EFI.<br/><br/>Është formësuar një ndarje me pikë montimi <strong>%2</strong>, por pa i vënë flamurkën <strong>esp</strong>.<br/>Që t’ia vini, kthehuni mbrapsht dhe përpunoni ndarjen.<br/><br/>Mund të vazhdoni pa i vënë flamurkën, por mundet që sistemi të mos arrijë dot të niset. + Që të niset %1, është e domosdoshme një pjesë sistemi EFI.<br/><br/>Është formësuar një pjesë me pikë montimi <strong>%2</strong>, por pa i vënë flamurkën <strong>esp</strong>.<br/>Që t’ia vini, kthehuni mbrapsht dhe përpunoni pjesë.<br/><br/>Mund të vazhdoni pa i vënë flamurkën, por mundet që sistemi të mos arrijë dot të niset. Boot partition not encrypted - Ndarje nisjesh e pafshehtëzuar + Pjesë nisjesh e pafshehtëzuar A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - Tok me ndarjen e fshehtëzuar <em>root</em> qe rregulluar edhe një ndarje <em>boot</em> veçmas, por ndarja <em>boot</em> s’është e fshehtëzuar.<br/><br/>Ka preokupime mbi sigurinë e këtij lloj rregullimi, ngaqë kartela të rëndësishme sistemi mbahen në një ndarje të pafshehtëzuar.<br/>Mund të vazhdoni nëse doni, por shkyçja e sistemit të kartelave do të ndodhë më vonë, gjatë nisjes së sistemit.<br/>Që të fshehtëzoni ndarjen <em>boot</em>, kthehuni mbrapsht dhe rikrijojeni, duke përzgjedhur te skena e krijimit të ndarjes <strong>Fshehtëzoje</strong>. + Tok me pjesën e fshehtëzuar <em>root</em> qe rregulluar edhe një pjesë <em>boot</em> veçmas, por pjesa <em>boot</em> s’është e fshehtëzuar.<br/><br/>Ka preokupime mbi sigurinë e këtij lloj rregullimi, ngaqë kartela të rëndësishme sistemi mbahen në një pjesë të pafshehtëzuar.<br/>Mund të vazhdoni nëse doni, por shkyçja e sistemit të kartelave do të ndodhë më vonë, gjatë nisjes së sistemit.<br/>Që të fshehtëzoni pjesën <em>boot</em>, kthehuni mbrapsht dhe rikrijojeni, duke përzgjedhur te skena e krijimit të pjesës <strong>Fshehtëzoje</strong>. @@ -1814,7 +1824,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - Ju lutemi, zgjidhni një look-and-feel për KDE Plasma Desktop. Mundeni edhe ta anashkaloni këtë hap dhe ta formësoni look-and-feel-in pasi të jetë instaluar sistemi. Klikimi mbi një përzgjedhje look-and-feel do t’ju japë një paraparje të atypëratyshme të saj. + Ju lutemi, zgjidhni pamje dhe ndjesi për Desktopin KDE Plasma. Mundeni edhe ta anashkaloni këtë hap dhe të formësoni pamje dhe ndjesi pasi të jetë instaluar sistemi. Klikimi mbi një përzgjedhje për pamje dhe ndjesi do t’ju japë një paraparje të atypëratyshme të tyre. @@ -1876,12 +1886,12 @@ Përfundim: External command failed to finish. - Udhri i jashtëm s’arriti të përfundohej. + S’u arrit të përfundohej urdhër i jashtëm. Command <i>%1</i> failed to finish in %2 seconds. - Urdhri <i>%1</i> s’arriti të përfundohej në %2 sekonda. + S’u arrit të përfundohej urdhri <i>%1</i> në %2 sekonda. @@ -1930,7 +1940,7 @@ Përfundim: Unpartitioned space or unknown partition table - Hapësirë e papjesëzuar ose tabelë e panjohur ndarjesh + Hapësirë e papjesëzuar ose tabelë e panjohur pjesësh @@ -1943,59 +1953,59 @@ Përfundim: Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - Përzgjidhni ku të instalohet %1.<br/><font color=\"red\">Kujdes: </font>kjo do të sjellë fshirjen e krejt kartelave në ndarjen e përzgjedhur. + Përzgjidhni ku të instalohet %1.<br/><font color=\"red\">Kujdes: </font>kjo do të sjellë fshirjen e krejt kartelave në pjesën e përzgjedhur. The selected item does not appear to be a valid partition. - Objekti i përzgjedhur s’duket se është ndarje e vlefshme. + Objekti i përzgjedhur s’duket se është pjesë e vlefshme. %1 cannot be installed on empty space. Please select an existing partition. - %1 s’mund të instalohet në hapësirë të zbrazët. Ju lutemi, përzgjidhni një ndarje ekzistuese. + %1 s’mund të instalohet në hapësirë të zbrazët. Ju lutemi, përzgjidhni një pjesë ekzistuese. %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - %1 s’mund të instalohet në një ndarje të llojit extended. Ju lutemi, përzgjidhni një ndarje parësore ose logjike ekzistuese. + %1 s’mund të instalohet në një pjesë të llojit <em>extended</em>. Ju lutemi, përzgjidhni një pjesë parësore ose logjike ekzistuese. %1 cannot be installed on this partition. - %1 s’mund të instalohet në këtë ndarje. + %1 s’mund të instalohet në këtë pjesë. Data partition (%1) - Ndarje të dhënash (%1) + Pjesë të dhënash (%1) Unknown system partition (%1) - Ndarje sistemi e panjohur (%1) + Pjesë sistemi e panjohur (%1) %1 system partition (%2) - Ndarje sistemi %1 (%2) + Pjesë sistemi %1 (%2) <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - <strong>%4</strong><br/><br/>Ndarja %1 është shumë e vogël për %2. Ju lutemi, përzgjidhni një ndarje me kapacitet të paktën %3 GiB. + <strong>%4</strong><br/><br/>Ndarja %1 është shumë e vogël për %2. Ju lutemi, përzgjidhni një pjesë me kapacitet të paktën %3 GiB. <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - <strong>%2</strong><br/><br/>Në këtë sistem s’gjendet dot ndonjë ndarje sistemi EFI. Ju lutemi, që të rregulloni %1, kthehuni mbrapsht dhe përdorni procesin e pjesëzimit dorazi. + <strong>%2</strong><br/><br/>Në këtë sistem s’gjendet dot ndonjë pjesë sistemi EFI. Ju lutemi, që të rregulloni %1, kthehuni mbrapsht dhe përdorni procesin e pjesëzimit dorazi. <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - <strong>%3</strong><br/><br/>%1 do të instalohet në %2.<br/><font color=\"red\">Kujdes: </font>krejt të dhënat në ndarjen %2 do të humbin. + <strong>%3</strong><br/><br/>%1 do të instalohet në %2.<br/><font color=\"red\">Kujdes: </font>krejt të dhënat në pjesën %2 do të humbin. @@ -2005,7 +2015,7 @@ Përfundim: EFI system partition: - Ndarje Sistemi EFI: + Pjesë Sistemi EFI: @@ -2038,12 +2048,12 @@ Përfundim: is plugged in to a power source - është në prizë + është lidhur te një burim energjie The system is not plugged in to a power source. - Sistemi s'është i lidhur me ndonjë burim rryme. + Sistemi s'është i lidhur me ndonjë burim energjie. @@ -2071,12 +2081,12 @@ Përfundim: Resize partition %1. - Ripërmaso ndarjen %1. + Ripërmaso pjesën %1. Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. - Ripërmasoje ndarjen <strong>%2MB</strong> <strong>%1</strong> në <strong>%3MB</strong>. + Ripërmasoje pjesën <strong>%2MB</strong> <strong>%1</strong> në <strong>%3MB</strong>. @@ -2086,7 +2096,7 @@ Përfundim: The installer failed to resize partition %1 on disk '%2'. - Instaluesi s’arriti të ripërmasojë ndarjen %1 në diskun '%2'. + Instaluesi s’arriti të ripërmasojë pjesën %1 në diskun '%2'. @@ -2149,7 +2159,7 @@ Përfundim: Failed to write to %1 - Dështoi në shkrimin te %1 + S’u arrit të shkruhej te %1 @@ -2167,17 +2177,17 @@ Përfundim: Set flags on partition %1. - Caktoni flamurka në ndarjen %1. + Caktoni flamurka në pjesën %1. Set flags on %1MB %2 partition. - Caktoni flamurka në ndarjen %1MB %2.` + Caktoni flamurka në pjesën %1MB %2.` Set flags on new partition. - Caktoni flamurka në ndarje të re. + Caktoni flamurka në pjesë të re. @@ -2197,52 +2207,52 @@ Përfundim: Flag partition <strong>%1</strong> as <strong>%2</strong>. - I vini shenjë ndarjes <strong>%1</strong> si <strong>%2</strong>. + I vini shenjë pjesës <strong>%1</strong> si <strong>%2</strong>. Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. - I vini shenjë ndarjes %1MB <strong>%2</strong> si <strong>%3</strong>. + I vini shenjë pjesës %1MB <strong>%2</strong> si <strong>%3</strong>. Flag new partition as <strong>%1</strong>. - I vini shenjë ndarjes së re si <strong>%1</strong>. + I vini shenjë pjesës së re si <strong>%1</strong>. Clearing flags on partition <strong>%1</strong>. - Po hiqen shenjat në ndarjen <strong>%1</strong>. + Po hiqen shenjat në pjesën <strong>%1</strong>. Clearing flags on %1MB <strong>%2</strong> partition. - Po hiqen shenjat në ndarjen %1MB <strong>%2</strong>. + Po hiqen shenjat në pjesën %1MB <strong>%2</strong>. Clearing flags on new partition. - Po hiqen shenjat në ndarjen e re. + Po hiqen shenjat në pjesën e re. Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - Po vihen flamurkat <strong>%2</strong> në ndarjen <strong>%1</strong>. + Po vihen flamurkat <strong>%2</strong> në pjesën <strong>%1</strong>. Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. - Po vihen flamurkat <strong>%3</strong> në ndarjen %1MB <strong>%2</strong>. + Po vihen flamurkat <strong>%3</strong> në pjesën %1MB <strong>%2</strong>. Setting flags <strong>%1</strong> on new partition. - Po vihen flamurkat <strong>%1</strong> në ndarjen e re. + Po vihen flamurkat <strong>%1</strong> në pjesën e re. The installer failed to set flags on partition %1. - Instaluesi s’arriti të vërë flamurka në ndarjen %1. + Instaluesi s’arriti të vërë flamurka në pjesën %1. @@ -2455,7 +2465,7 @@ Përfundim: By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - Duke përzgjedhur këtë, di të dërgoni të dhëna mbi instalimin dhe hardware-in tuaj. Këto të dhëna do të <b>dërgohen vetëm një herë</b>, pasi të përfundojë instalimi. + Duke përzgjedhur këtë, do të dërgoni të dhëna mbi instalimin dhe hardware-in tuaj. Këto të dhëna do të <b>dërgohen vetëm një herë</b>, pasi të përfundojë instalimi. @@ -2571,7 +2581,7 @@ Përfundim: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Të drejta Kopjimi 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Të drejta Kopjimi 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Falënderime për: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg dhe <a href="https://www.transifex.com/calamares/calamares/">ekipin e përkthyesve të Calamares-it</a>.<br/><br/>Zhvillimi i <a href="https://calamares.io/">Calamares</a> sponsorizohet nga <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Asistencë %1 diff --git a/lang/calamares_sr.ts b/lang/calamares_sr.ts index 6db62432d..31b13303b 100644 --- a/lang/calamares_sr.ts +++ b/lang/calamares_sr.ts @@ -477,13 +477,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ The installer will quit and all changes will be lost. Вели&чина - + En&crypt - + Logical Логичка - + Primary Примарна - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -858,7 +858,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1682,10 +1682,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support %1 подршка diff --git a/lang/calamares_sr@latin.ts b/lang/calamares_sr@latin.ts index 00598c6d8..564a10b08 100644 --- a/lang/calamares_sr@latin.ts +++ b/lang/calamares_sr@latin.ts @@ -477,13 +477,13 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. Veli&čina - + En&crypt - + Logical Logička - + Primary Primarna - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -858,7 +858,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + Mountpoint already in use. Please select another one. @@ -1682,10 +1682,20 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support diff --git a/lang/calamares_sv.ts b/lang/calamares_sv.ts index 34d46b72a..5ee786adc 100644 --- a/lang/calamares_sv.ts +++ b/lang/calamares_sv.ts @@ -477,13 +477,13 @@ Alla ändringar kommer att gå förlorade. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ Alla ändringar kommer att gå förlorade. Storlek: - + En&crypt Kr%yptera - + Logical Logisk - + Primary Primär - + GPT GPT - + Mountpoint already in use. Please select another one. Monteringspunkt används redan. Välj en annan. @@ -858,7 +858,7 @@ Alla ändringar kommer att gå förlorade. Flaggor: - + Mountpoint already in use. Please select another one. Monteringspunkt används redan. Välj en annan. @@ -1682,10 +1682,20 @@ Alla ändringar kommer att gå förlorade. Installera uppstartshanterare på: - + Are you sure you want to create a new partition table on %1? Är du säker på att du vill skapa en ny partitionstabell på %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support %1-support diff --git a/lang/calamares_th.ts b/lang/calamares_th.ts index 0ee1821cb..9b8a95c00 100644 --- a/lang/calamares_th.ts +++ b/lang/calamares_th.ts @@ -477,13 +477,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ The installer will quit and all changes will be lost. &Z ขนาด: - + En&crypt - + Logical โลจิคอล - + Primary หลัก - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -858,7 +858,7 @@ The installer will quit and all changes will be lost. Flags: - + Mountpoint already in use. Please select another one. @@ -1682,10 +1682,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? คุณแน่ใจว่าจะสร้างตารางพาร์ทิชันใหม่บน %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support diff --git a/lang/calamares_tr_TR.ts b/lang/calamares_tr_TR.ts index 1903c9825..bf7de67a3 100644 --- a/lang/calamares_tr_TR.ts +++ b/lang/calamares_tr_TR.ts @@ -480,14 +480,14 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. CommandList - + Could not run command. Komut çalıştırılamadı. - - No rootMountPoint is defined, so command cannot be run in the target environment. - RootMountPoint kök bağlama noktası tanımlanmadığından, hedef ortamda komut çalıştırılamaz. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -551,27 +551,27 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Bo&yut: - + En&crypt Şif&rele - + Logical Mantıksal - + Primary Birincil - + GPT GPT - + Mountpoint already in use. Please select another one. Bağlama noktası zaten kullanımda. Lütfen diğerini seçiniz. @@ -861,7 +861,7 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Bayraklar: - + Mountpoint already in use. Please select another one. Bağlama noktası zaten kullanımda. Lütfen diğerini seçiniz. @@ -1685,10 +1685,20 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Şuraya ön &yükleyici kur: - + Are you sure you want to create a new partition table on %1? %1 tablosunda yeni bölüm oluşturmaya devam etmek istiyor musunuz? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2576,7 +2586,7 @@ Sistem güç kaynağına bağlı değil. <h1>%1</h1><br/><strong>%2<br/>için %3</strong><br/><br/>Telif Hakkı 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Telif Hakkı 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Teşekkürler: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg ve <a href="https://www.transifex.com/calamares/calamares/">Calamares çeviri takımı için</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> gelişim sponsoru <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Özgür Yazılım. - + %1 support %1 destek diff --git a/lang/calamares_uk.ts b/lang/calamares_uk.ts index 78af91c36..2238af0ba 100644 --- a/lang/calamares_uk.ts +++ b/lang/calamares_uk.ts @@ -477,13 +477,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -548,27 +548,27 @@ The installer will quit and all changes will be lost. Ро&змір: - + En&crypt За&шифрувати - + Logical Логічний - + Primary Основний - + GPT GPT - + Mountpoint already in use. Please select another one. Точка підключення наразі використовується. Оберіть, будь ласка, іншу. @@ -858,7 +858,7 @@ The installer will quit and all changes will be lost. Прапорці: - + Mountpoint already in use. Please select another one. Точка підключення наразі використовується. Оберіть, будь ласка, іншу. @@ -1682,10 +1682,20 @@ The installer will quit and all changes will be lost. Встановити за&вантажувач на: - + Are you sure you want to create a new partition table on %1? Ви впевнені, що бажаєте створити нову таблицю розділів на %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2568,7 +2578,7 @@ Output: - + %1 support Підтримка %1 diff --git a/lang/calamares_ur.ts b/lang/calamares_ur.ts index 5e2658784..8e01b47f6 100644 --- a/lang/calamares_ur.ts +++ b/lang/calamares_ur.ts @@ -476,13 +476,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -547,27 +547,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -857,7 +857,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1681,10 +1681,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2567,7 +2577,7 @@ Output: - + %1 support diff --git a/lang/calamares_uz.ts b/lang/calamares_uz.ts index 1510ebcb2..e3472169a 100644 --- a/lang/calamares_uz.ts +++ b/lang/calamares_uz.ts @@ -476,13 +476,13 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - - No rootMountPoint is defined, so command cannot be run in the target environment. + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. @@ -547,27 +547,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -857,7 +857,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1681,10 +1681,20 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2567,7 +2577,7 @@ Output: - + %1 support diff --git a/lang/calamares_zh_CN.ts b/lang/calamares_zh_CN.ts index b0f5f7ea1..2dd626a2c 100644 --- a/lang/calamares_zh_CN.ts +++ b/lang/calamares_zh_CN.ts @@ -478,14 +478,14 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. 无法运行命令 - - No rootMountPoint is defined, so command cannot be run in the target environment. - 未定义任何 rootMountPoint,无法在目标环境中运行命令。 + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + @@ -549,27 +549,27 @@ The installer will quit and all changes will be lost. 大小(&Z): - + En&crypt 加密(&C) - + Logical 逻辑分区 - + Primary 主分区 - + GPT GPT - + Mountpoint already in use. Please select another one. 挂载点已被占用。请选择另一个。 @@ -860,7 +860,7 @@ The installer will quit and all changes will be lost. 标记: - + Mountpoint already in use. Please select another one. 挂载点已被占用。请选择另一个。 @@ -1684,10 +1684,20 @@ The installer will quit and all changes will be lost. 安装引导程序于(&L): - + Are you sure you want to create a new partition table on %1? 您是否确定要在 %1 上创建新分区表? + + + Can not create new partition + + + + + 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. + + PartitionViewStep @@ -2573,7 +2583,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>特别感谢:Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg 及 <a href="https://www.transifex.com/calamares/calamares/">Calamares 翻译团队</a>。<br/><br/><a href="https://calamares.io/">Calamares</a> 的开发由 <br/><a href="http://www.blue-systems.com/">Blue Systems</a> 赞助。 - + %1 support %1 的支持信息 diff --git a/lang/calamares_zh_TW.ts b/lang/calamares_zh_TW.ts index 64a32fb14..711d87d06 100644 --- a/lang/calamares_zh_TW.ts +++ b/lang/calamares_zh_TW.ts @@ -477,14 +477,14 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. 無法執行指令。 - - No rootMountPoint is defined, so command cannot be run in the target environment. - 未定義 rootMountPoint,所以指令無法在目標環境中執行。 + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + 指令執行於主機環境中,且需要知道根路徑,但根掛載點未定義。 @@ -548,27 +548,27 @@ The installer will quit and all changes will be lost. 容量大小 (&z) : - + En&crypt 加密(&C) - + Logical 邏輯磁區 - + Primary 主要磁區 - + GPT GPT - + Mountpoint already in use. Please select another one. 掛載點使用中。請選擇其他的。 @@ -858,7 +858,7 @@ The installer will quit and all changes will be lost. 旗標: - + Mountpoint already in use. Please select another one. 掛載點使用中。請選擇其他的。 @@ -1682,10 +1682,20 @@ The installer will quit and all changes will be lost. 安裝開機載入器在(&L): - + Are you sure you want to create a new partition table on %1? 您是否確定要在 %1 上建立一個新的分割區表格? + + + Can not create new partition + 無法建立新分割區 + + + + 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. + 在 %1 上的分割表已有 %2 個主要分割區,無法再新增。請移除一個主要分割區並新增一個延伸分割區。 + PartitionViewStep @@ -2571,7 +2581,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>為 %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>感謝:Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg 與 <a href="https://www.transifex.com/calamares/calamares/">Calamares 翻譯團隊</a>。<br/><br/><a href="https://calamares.io/">Calamares</a> 開發由 <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software 贊助。 - + %1 support %1 支援 From 6b02da9e9e779d5d2bd41046629075aed9778d01 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 17 May 2018 11:04:13 -0400 Subject: [PATCH 168/385] i18n: [dummypythonqt] Automatic merge of Transifex translations --- .../lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo | Bin 1049 -> 1050 bytes .../lang/cs_CZ/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/fa/LC_MESSAGES/dummypythonqt.mo | Bin 434 -> 420 bytes .../lang/fa/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/he/LC_MESSAGES/dummypythonqt.mo | Bin 1081 -> 1130 bytes .../lang/he/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/kn/LC_MESSAGES/dummypythonqt.mo | Bin 434 -> 420 bytes .../lang/kn/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/lt/LC_MESSAGES/dummypythonqt.mo | Bin 1075 -> 1080 bytes .../lang/lt/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/pt_BR/LC_MESSAGES/dummypythonqt.mo | Bin 998 -> 993 bytes .../lang/pt_BR/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/sk/LC_MESSAGES/dummypythonqt.mo | Bin 958 -> 983 bytes .../lang/sk/LC_MESSAGES/dummypythonqt.po | 4 ++-- .../lang/uk/LC_MESSAGES/dummypythonqt.mo | Bin 630 -> 645 bytes .../lang/uk/LC_MESSAGES/dummypythonqt.po | 4 ++-- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo index 5f44a6bbd42f557b9c33dfba58810c6c0470fffd..a81437b9503dc63694c2c6bbaf5ebaa1f2b70524 100644 GIT binary patch delta 168 zcmbQqF^gkDi0OMq28IM6=4D`D2w-Ml&;!zOKw1z;_X24dAUz*QO9AOUK-vjNU*FiN z%gAA9reJ7jWn!>-AEOmxsI9Gnp@N#4LY{&ukOAZwXe!t%7${gNXyhr_*(w-8ByDUJ bOfZ!hf>nVuDgresfOHxGbsA6hVLl50IV2tB delta 167 zcmbQmF_U9Li0L~<28IM6=4D`D@MmUV&;!!3Kw1z;_W)@bAUzLAO9AQKK-vjNU)$KJ z%gAA1u3%tkWoWW_AEOmxh>e1wfr6TvLY{)Ef}w(~t%8B3f<2IBrJ#|gV549O1Q2OE XTdXRLAu2(d6~UUV6ig=jGM@zi8@wIO diff --git a/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.po index 64338fdc2..e70709472 100644 --- a/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: pavelrz, 2016\n" "Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs_CZ\n" -"Plural-Forms: nplurals=4; plural=(n < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" diff --git a/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo index 7d5b5fc3f1bf2c5642bc315dc2147ad79fd3bfdd..89339df1367d2e05f759b22a44fbde6db2850d7d 100644 GIT binary patch delta 34 pcmdnQyo7mz3S-tp)hrG}GX+CKD-(l_(^(if^Azk93^lE}7yzOI2n+xK delta 48 zcmZ3&yoq^&3S-4Y)hrGJa|HuSD?^iw(^(kBHS%n14HeYX6!PqB6$~^L>=g_(t+^Ng DG0qC{ diff --git a/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.po index 302568879..c635ffd83 100644 --- a/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Persian (https://www.transifex.com/calamares/teams/20061/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa\n" -"Plural-Forms: nplurals=2; plural=((n<=1 && n>= 0) ? 1);\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" diff --git a/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo index e569c334e032c6adc3e920809c869ba85cc1524f..c9628f7a773ffdaff55a3671667f5057101a859a 100644 GIT binary patch delta 185 zcmdnV@rq+Yh#4aj149BM0|Ore149xs1A{e?E(Fp7Kzc2ZwgS@ofV3iz{t2Z0fV4Er z#x5O34ns2qLqjVQgU$OGZ5dM(Y;6?`71Y!e@)T5o3?R=yQ^8)rK*35uBM-zi!jv=w d%K?=efYqZafbi^qk|1-8faVx))??;o1OWKYADRFF delta 136 zcmaFGv6Ev$h}i{328IM6=3`)BFl1(6um;i&Kw1Du*8piNAl(b36@l~#AngaFUomg& z(qZH, 2017\n" "Language-Team: Hebrew (https://www.transifex.com/calamares/teams/20061/he/)\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" -"Plural-Forms: nplurals=4; plural=(n==1 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" diff --git a/src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.mo index b23c6f69b7b9a172f67ca7dd1cbb50f5ac3347e0..a55906ecf652949cd4705bd3d4fe47e5aca77376 100644 GIT binary patch delta 34 pcmdnQyo7mz3S-tp)hrG}GX+CKD-(l_(^(if^Azk93^lE}7yzOI2n+xK delta 48 zcmZ3&yoq^&3S-4Y)hrGJa|HuSD?^iw(^(kBHS%n14HeYX6!PqB6$~^L>=g_(t+^Ng DG0qC{ diff --git a/src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.po index eefa4ff10..8625e3a21 100644 --- a/src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Kannada (https://www.transifex.com/calamares/teams/20061/kn/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: kn\n" -"Plural-Forms: nplurals=2; plural=((n<=1 && n>= 0) ? 1);\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" diff --git a/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo index 4c7bd058e0f50eccc22f420f59e29c865326b2ef..afcfc63d5c88c7183edf8297633a5cec68de2b3c 100644 GIT binary patch delta 118 zcmdnYv4dkmh$#;f149BM0|Ore14Aw|1A{S;t^v}*Kzaj^mITsAfV32lz6Yf3fb`Fe zow|%1hGq(ehE^s9oA)sWF>)FxSSe`aDX1z;7H77eEWpen2;vwjDB3C*DA+3)St%G# IPGLR|09W4>@&Et; delta 113 zcmdnNv6*8+h$%Z0149BM0|Ore149Ng1A{S;E(g-WKzcQhmITuKfwUBmz6qr5fb^G* zow|%12IdL|mR5!)oA)sWF|r#fSSe`asZN$;wiYr5vhx&F6$}*=Z50d@>=jHVXEL7$ E0PhYI761SM diff --git a/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.po index 30072fbf2..4b2efa540 100644 --- a/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Moo, 2016\n" "Language-Team: Lithuanian (https://www.transifex.com/calamares/teams/20061/lt/)\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt\n" -"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" diff --git a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo index 2c1d077a0b9826d9dd24aa5d74f8b5644a32b38f..e0ede8c3629bb0469631ab500bac106fba377f53 100644 GIT binary patch delta 90 zcmaFH{*Zk_i0KYS28IM67GPjtkYr|HFa^?DK$;IoCje<_Ae|4TyMeSNkiUFmrv{^d eg|30AuA!NNp`n$Dfv$nci0NKN28IM67GPjtkYi?GFa^^3K$;IorvhndAYB5bCje, 2017\n" +"Last-Translator: Guilherme , 2017\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo index befd441ffc3a2c7a712087ce0cb38dbf837d2f90..ff06e3d86e33f0cd6543346a65a9b098defd89e8 100644 GIT binary patch delta 143 zcmdnTew}@SkM0LX1_lct7G+>y&}3#{&D%dL+C|ChGsz5eSz(4^kWoN5k1Yz0ODwqHj8NwAQ Pf)v>+7+Fo`V%`D(lV}+O delta 118 zcmcc4zK?x^kM4Cw1_lct7G+>y5MX9t&uZfh+}81w#c}TLl9JH8q7iJ6j_#ZDVVqU_V)z Gc?$qQ{}hh^ diff --git a/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.po index d034c173b..46023f680 100644 --- a/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dušan Kazik , 2016\n" "Language-Team: Slovak (https://www.transifex.com/calamares/teams/20061/sk/)\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" -"Plural-Forms: nplurals=4; plural=(n % 1 == 0 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" diff --git a/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo index aa141e77ece0c9b6aa7494fde3281be17cf28011..c74193fef8b6fdd0b695ccfdec4500c86f6e1a9c 100644 GIT binary patch delta 175 zcmeyy(#kqPh0%MWY8Ho~nS!CAm5IT|>1>RX=P`=a+bS3;sHrLBDX1zK8W<=j0{Mmt z_6i0HRuC}-TU#Ipu0p}iR>25~Yh$Zm0^(}G46so!G*YOkfg5P2U}&NVG|&*kK(Lm{ UI!vy73Ys7lMpg>On$}zl0Mhv)sQ>@~ delta 177 zcmZo={l+puh0$iBY8Hoqxq^YEm7&ST>1>Sk3V8~u3Wf@{wh9IcYHARkfr70ef@7ed zXscjosHtENRA;520aAm|0OH!&Di}f3+t`|Df>>Zh3Wf#-3O0sD3N= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" From 7bdb2ef7354e1e61d4153f18e56a0bf22fc13fff Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 17 May 2018 11:04:13 -0400 Subject: [PATCH 169/385] i18n: [python] Automatic merge of Transifex translations --- lang/python.pot | 2 +- lang/python/ar/LC_MESSAGES/python.mo | Bin 503 -> 503 bytes lang/python/ar/LC_MESSAGES/python.po | 2 +- lang/python/ast/LC_MESSAGES/python.mo | Bin 668 -> 668 bytes lang/python/ast/LC_MESSAGES/python.po | 2 +- lang/python/bg/LC_MESSAGES/python.mo | Bin 894 -> 894 bytes lang/python/bg/LC_MESSAGES/python.po | 2 +- lang/python/ca/LC_MESSAGES/python.mo | Bin 1178 -> 1178 bytes lang/python/ca/LC_MESSAGES/python.po | 2 +- lang/python/cs_CZ/LC_MESSAGES/python.mo | Bin 1388 -> 1458 bytes lang/python/cs_CZ/LC_MESSAGES/python.po | 6 ++++-- lang/python/da/LC_MESSAGES/python.mo | Bin 1115 -> 1115 bytes lang/python/da/LC_MESSAGES/python.po | 2 +- lang/python/de/LC_MESSAGES/python.mo | Bin 1059 -> 1059 bytes lang/python/de/LC_MESSAGES/python.po | 2 +- lang/python/el/LC_MESSAGES/python.mo | Bin 568 -> 568 bytes lang/python/el/LC_MESSAGES/python.po | 2 +- lang/python/en_GB/LC_MESSAGES/python.mo | Bin 444 -> 444 bytes lang/python/en_GB/LC_MESSAGES/python.po | 2 +- lang/python/eo/LC_MESSAGES/python.mo | Bin 1161 -> 1161 bytes lang/python/eo/LC_MESSAGES/python.po | 2 +- lang/python/es/LC_MESSAGES/python.mo | Bin 1075 -> 1075 bytes lang/python/es/LC_MESSAGES/python.po | 2 +- lang/python/es_MX/LC_MESSAGES/python.mo | Bin 436 -> 436 bytes lang/python/es_MX/LC_MESSAGES/python.po | 2 +- lang/python/es_PR/LC_MESSAGES/python.mo | Bin 441 -> 441 bytes lang/python/es_PR/LC_MESSAGES/python.po | 2 +- lang/python/et/LC_MESSAGES/python.mo | Bin 1113 -> 1113 bytes lang/python/et/LC_MESSAGES/python.po | 2 +- lang/python/eu/LC_MESSAGES/python.mo | Bin 420 -> 420 bytes lang/python/eu/LC_MESSAGES/python.po | 2 +- lang/python/fa/LC_MESSAGES/python.mo | Bin 434 -> 420 bytes lang/python/fa/LC_MESSAGES/python.po | 4 ++-- lang/python/fi_FI/LC_MESSAGES/python.mo | Bin 437 -> 437 bytes lang/python/fi_FI/LC_MESSAGES/python.po | 2 +- lang/python/fr/LC_MESSAGES/python.mo | Bin 1193 -> 1193 bytes lang/python/fr/LC_MESSAGES/python.po | 2 +- lang/python/fr_CH/LC_MESSAGES/python.mo | Bin 439 -> 439 bytes lang/python/fr_CH/LC_MESSAGES/python.po | 2 +- lang/python/gl/LC_MESSAGES/python.mo | Bin 422 -> 422 bytes lang/python/gl/LC_MESSAGES/python.po | 2 +- lang/python/gu/LC_MESSAGES/python.mo | Bin 422 -> 422 bytes lang/python/gu/LC_MESSAGES/python.po | 2 +- lang/python/he/LC_MESSAGES/python.mo | Bin 1189 -> 1302 bytes lang/python/he/LC_MESSAGES/python.po | 6 ++++-- lang/python/hi/LC_MESSAGES/python.mo | Bin 1363 -> 1363 bytes lang/python/hi/LC_MESSAGES/python.po | 2 +- lang/python/hr/LC_MESSAGES/python.mo | Bin 1272 -> 1272 bytes lang/python/hr/LC_MESSAGES/python.po | 2 +- lang/python/hu/LC_MESSAGES/python.mo | Bin 844 -> 844 bytes lang/python/hu/LC_MESSAGES/python.po | 2 +- lang/python/id/LC_MESSAGES/python.mo | Bin 1082 -> 1082 bytes lang/python/id/LC_MESSAGES/python.po | 2 +- lang/python/is/LC_MESSAGES/python.mo | Bin 1066 -> 1066 bytes lang/python/is/LC_MESSAGES/python.po | 2 +- lang/python/it_IT/LC_MESSAGES/python.mo | Bin 1162 -> 1162 bytes lang/python/it_IT/LC_MESSAGES/python.po | 2 +- lang/python/ja/LC_MESSAGES/python.mo | Bin 1164 -> 1164 bytes lang/python/ja/LC_MESSAGES/python.po | 2 +- lang/python/kk/LC_MESSAGES/python.mo | Bin 418 -> 418 bytes lang/python/kk/LC_MESSAGES/python.po | 2 +- lang/python/kn/LC_MESSAGES/python.mo | Bin 434 -> 420 bytes lang/python/kn/LC_MESSAGES/python.po | 4 ++-- lang/python/lo/LC_MESSAGES/python.mo | Bin 410 -> 410 bytes lang/python/lo/LC_MESSAGES/python.po | 2 +- lang/python/lt/LC_MESSAGES/python.mo | Bin 1322 -> 1382 bytes lang/python/lt/LC_MESSAGES/python.po | 6 ++++-- lang/python/mr/LC_MESSAGES/python.mo | Bin 421 -> 421 bytes lang/python/mr/LC_MESSAGES/python.po | 2 +- lang/python/nb/LC_MESSAGES/python.mo | Bin 616 -> 616 bytes lang/python/nb/LC_MESSAGES/python.po | 2 +- lang/python/nl/LC_MESSAGES/python.mo | Bin 658 -> 658 bytes lang/python/nl/LC_MESSAGES/python.po | 2 +- lang/python/pl/LC_MESSAGES/python.mo | Bin 1434 -> 1434 bytes lang/python/pl/LC_MESSAGES/python.po | 2 +- lang/python/pt_BR/LC_MESSAGES/python.mo | Bin 1177 -> 1177 bytes lang/python/pt_BR/LC_MESSAGES/python.po | 2 +- lang/python/pt_PT/LC_MESSAGES/python.mo | Bin 1173 -> 1173 bytes lang/python/pt_PT/LC_MESSAGES/python.po | 2 +- lang/python/ro/LC_MESSAGES/python.mo | Bin 1277 -> 1277 bytes lang/python/ro/LC_MESSAGES/python.po | 2 +- lang/python/ru/LC_MESSAGES/python.mo | Bin 740 -> 740 bytes lang/python/ru/LC_MESSAGES/python.po | 2 +- lang/python/sk/LC_MESSAGES/python.mo | Bin 1342 -> 1432 bytes lang/python/sk/LC_MESSAGES/python.po | 6 ++++-- lang/python/sl/LC_MESSAGES/python.mo | Bin 475 -> 475 bytes lang/python/sl/LC_MESSAGES/python.po | 2 +- lang/python/sq/LC_MESSAGES/python.mo | Bin 1148 -> 1148 bytes lang/python/sq/LC_MESSAGES/python.po | 2 +- lang/python/sr/LC_MESSAGES/python.mo | Bin 495 -> 495 bytes lang/python/sr/LC_MESSAGES/python.po | 2 +- lang/python/sr@latin/LC_MESSAGES/python.mo | Bin 517 -> 517 bytes lang/python/sr@latin/LC_MESSAGES/python.po | 2 +- lang/python/sv/LC_MESSAGES/python.mo | Bin 421 -> 421 bytes lang/python/sv/LC_MESSAGES/python.po | 2 +- lang/python/th/LC_MESSAGES/python.mo | Bin 411 -> 411 bytes lang/python/th/LC_MESSAGES/python.po | 2 +- lang/python/tr_TR/LC_MESSAGES/python.mo | Bin 1192 -> 1192 bytes lang/python/tr_TR/LC_MESSAGES/python.po | 2 +- lang/python/uk/LC_MESSAGES/python.mo | Bin 630 -> 645 bytes lang/python/uk/LC_MESSAGES/python.po | 4 ++-- lang/python/ur/LC_MESSAGES/python.mo | Bin 418 -> 418 bytes lang/python/ur/LC_MESSAGES/python.po | 2 +- lang/python/uz/LC_MESSAGES/python.mo | Bin 412 -> 412 bytes lang/python/uz/LC_MESSAGES/python.po | 2 +- lang/python/zh_CN/LC_MESSAGES/python.mo | Bin 1101 -> 1101 bytes lang/python/zh_CN/LC_MESSAGES/python.po | 2 +- lang/python/zh_TW/LC_MESSAGES/python.mo | Bin 1126 -> 1126 bytes lang/python/zh_TW/LC_MESSAGES/python.po | 2 +- 109 files changed, 70 insertions(+), 62 deletions(-) diff --git a/lang/python.pot b/lang/python.pot index ca832f242..afce3007f 100644 --- a/lang/python.pot +++ b/lang/python.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/lang/python/ar/LC_MESSAGES/python.mo b/lang/python/ar/LC_MESSAGES/python.mo index a3ac141799c9b3fafaeb2fc97da92b5fc180f526..8003a12c728b005b5c098b26102937295219e00a 100644 GIT binary patch delta 19 acmey){GEA1KZl{2f}x?6iNVI{35)06514*8l(j delta 21 ccmbQkI)`-wGb4wAxq^YEm7&RIZpMj>067N)-v9sr diff --git a/lang/python/ast/LC_MESSAGES/python.po b/lang/python/ast/LC_MESSAGES/python.po index 1875c215c..a55cf974f 100644 --- a/lang/python/ast/LC_MESSAGES/python.po +++ b/lang/python/ast/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: enolp , 2017\n" "Language-Team: Asturian (https://www.transifex.com/calamares/teams/20061/ast/)\n" diff --git a/lang/python/bg/LC_MESSAGES/python.mo b/lang/python/bg/LC_MESSAGES/python.mo index 102a0fded4ebe204fda75e4146626c62315c5458..b43df8a288b6150b7c5cb3eec561b9cf3b74d682 100644 GIT binary patch delta 21 ccmeyz_K$6YJtK#qnS!CAm5IS-cSdt208BasyZ`_I delta 21 ccmeyz_K$6YJtK#Kxq^YEm7&RIcSdt208DxX!~g&Q diff --git a/lang/python/bg/LC_MESSAGES/python.po b/lang/python/bg/LC_MESSAGES/python.po index b7c648590..71995a29d 100644 --- a/lang/python/bg/LC_MESSAGES/python.po +++ b/lang/python/bg/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Georgi Georgiev , 2018\n" "Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n" diff --git a/lang/python/ca/LC_MESSAGES/python.mo b/lang/python/ca/LC_MESSAGES/python.mo index 7fc02383b59fc5f52e81c4d8843db4e933f470d7..815e48a4118bfe8181ff81ddad8bd7c3aec184a0 100644 GIT binary patch delta 21 ccmbQmIg4|HE)$2LnS!CAm5IS-Q>IiV06Y=}1^@s6 delta 21 ccmbQmIg4|HE)$1=xq^YEm7&RIQ>IiV06bC!4gdfE diff --git a/lang/python/ca/LC_MESSAGES/python.po b/lang/python/ca/LC_MESSAGES/python.po index 0dba18452..10e6289ae 100644 --- a/lang/python/ca/LC_MESSAGES/python.po +++ b/lang/python/ca/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Davidmp , 2017\n" "Language-Team: Catalan (https://www.transifex.com/calamares/teams/20061/ca/)\n" diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.mo b/lang/python/cs_CZ/LC_MESSAGES/python.mo index 7caee06737dc31b133cd82ea4d2bf24f8de207ba..082493dca83586348a6784b6d0bf9e1449a3a8e6 100644 GIT binary patch delta 192 zcmaFEwTXK|iYq@81H*Mj1_nt628QR%3=C30nvsQpK>yzG_*1?*lfxa#TaU9t6-?0rlydmpbBIFc?Oya_6i0H xRtg$<3U;;%Mi5CGTLlwLWrko?AdQMZjS3*0MnIj$lOHqRm^__j*JJ}$8vr<}B4q#o delta 191 zcmdnQ{f28oiYp%z1H*Mj1_nt628L(M3=C30nt_FZK>, 2017\n" "Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs_CZ\n" -"Plural-Forms: nplurals=4; plural=(n < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." @@ -50,6 +50,7 @@ msgid_plural "Installing %(num)d packages." msgstr[0] "Je instalován jeden balíček." msgstr[1] "Jsou instalovány %(num)d balíčky." msgstr[2] "Je instalováno %(num)d balíčků." +msgstr[3] "Je instalováno %(num)d balíčků." #: src/modules/packages/main.py:69 #, python-format @@ -58,3 +59,4 @@ msgid_plural "Removing %(num)d packages." msgstr[0] "Odebírá se jeden balíček." msgstr[1] "Odebírají se %(num)d balíčky." msgstr[2] "Odebírá se %(num)d balíčků." +msgstr[3] "Odebírá se %(num)d balíčků." diff --git a/lang/python/da/LC_MESSAGES/python.mo b/lang/python/da/LC_MESSAGES/python.mo index 0560de2c51b333fb20bef36e0aaff02e0c2ef06f..720ee411425ecefc5bcb16aeef72de83a0c2080d 100644 GIT binary patch delta 21 ccmcc3ahqd`XFD07)AKZ~y=R delta 21 ccmZ3?v6y4Se?|@ia|HuSD?^jb>`XFD07+W~cmMzZ diff --git a/lang/python/de/LC_MESSAGES/python.po b/lang/python/de/LC_MESSAGES/python.po index dbb878864..4dec5011e 100644 --- a/lang/python/de/LC_MESSAGES/python.po +++ b/lang/python/de/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dirk Hein , 2017\n" "Language-Team: German (https://www.transifex.com/calamares/teams/20061/de/)\n" diff --git a/lang/python/el/LC_MESSAGES/python.mo b/lang/python/el/LC_MESSAGES/python.mo index a163619097570b9ec98db7e143325a2e56526605..83476e5694575b45b20e2105d25fd1a9b2e0538c 100644 GIT binary patch delta 19 acmdnNvV P7Xse1w%tC6N8Nh%NYScL, 2017\n" "Language-Team: Greek (https://www.transifex.com/calamares/teams/20061/el/)\n" diff --git a/lang/python/en_GB/LC_MESSAGES/python.mo b/lang/python/en_GB/LC_MESSAGES/python.mo index 9edf0da87a277565819fecc376b206a36610ac91..763f8ab01ae3287d93f46742d23ece4cd3ba9b82 100644 GIT binary patch delta 19 acmdnPyoY&0KZl{2f}x?6iNVI{s*C_VL069nm(*OVf delta 21 ccmeC=?Bv{_%fw+|u3%tkWoWY5lqrM>06B;R+W-In diff --git a/lang/python/eo/LC_MESSAGES/python.po b/lang/python/eo/LC_MESSAGES/python.po index be231cec7..b93015618 100644 --- a/lang/python/eo/LC_MESSAGES/python.po +++ b/lang/python/eo/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: tradukanto , 2018\n" "Language-Team: Esperanto (https://www.transifex.com/calamares/teams/20061/eo/)\n" diff --git a/lang/python/es/LC_MESSAGES/python.mo b/lang/python/es/LC_MESSAGES/python.mo index e8321006a41ede1b0c428e0fa1f41a91f9713f4d..81e3121c0b2d703f436342332720fc02219d3ca7 100644 GIT binary patch delta 21 ccmdnYv6*ATe?|^NGX+CKD-(mw>`XdL086_Cpa1{> delta 21 ccmdnYv6*ATe?|@ia|HuSD?^jb>`XdL089G?r~m)} diff --git a/lang/python/es/LC_MESSAGES/python.po b/lang/python/es/LC_MESSAGES/python.po index e3a18bba4..31ee2ba77 100644 --- a/lang/python/es/LC_MESSAGES/python.po +++ b/lang/python/es/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: strel, 2017\n" "Language-Team: Spanish (https://www.transifex.com/calamares/teams/20061/es/)\n" diff --git a/lang/python/es_MX/LC_MESSAGES/python.mo b/lang/python/es_MX/LC_MESSAGES/python.mo index e3afad54e612a9cbcb059cda75487367e114e3a9..4ddd826e4e68e3c40a17dd97f3bb6a915b830872 100644 GIT binary patch delta 19 acmdnOyoGr}KZl{2f}x?6iNVI{vWx&c6a|9- delta 19 acmdnOyoGr}KZk+2f`O%#p~=SSvWx&cOa+So diff --git a/lang/python/es_MX/LC_MESSAGES/python.po b/lang/python/es_MX/LC_MESSAGES/python.po index a06559edf..f37751143 100644 --- a/lang/python/es_MX/LC_MESSAGES/python.po +++ b/lang/python/es_MX/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Spanish (Mexico) (https://www.transifex.com/calamares/teams/20061/es_MX/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/es_PR/LC_MESSAGES/python.mo b/lang/python/es_PR/LC_MESSAGES/python.mo index 4c9807b54ce629eaaf625f18c9fcef23f472e9e5..c85a27627b4fd40ebdb243d03bf686acdb2894b4 100644 GIT binary patch delta 19 acmdnVypwrCKZl{2f}x?6iNVI{N{j$J(gl(L delta 19 acmdnVypwrCKZk+2f`O%#p~=SSN{j$K3I&<~ diff --git a/lang/python/es_PR/LC_MESSAGES/python.po b/lang/python/es_PR/LC_MESSAGES/python.po index 1a934f1a7..20011ca91 100644 --- a/lang/python/es_PR/LC_MESSAGES/python.po +++ b/lang/python/es_PR/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Spanish (Puerto Rico) (https://www.transifex.com/calamares/teams/20061/es_PR/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/et/LC_MESSAGES/python.mo b/lang/python/et/LC_MESSAGES/python.mo index 0c36efd4eda18685089f52b755d4278d3faa7d72..6e9c6d0a8557cbd04b5d487d3d9b19c15cf14ef6 100644 GIT binary patch delta 21 ccmcb~ag$?%E)$2LnS!CAm5IS-QzjKA07XItK>z>% delta 21 ccmcb~ag$?%E)$1=xq^YEm7&RIQzjKA07ZfYNdN!< diff --git a/lang/python/et/LC_MESSAGES/python.po b/lang/python/et/LC_MESSAGES/python.po index 4f515daf3..deec076dc 100644 --- a/lang/python/et/LC_MESSAGES/python.po +++ b/lang/python/et/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Madis, 2018\n" "Language-Team: Estonian (https://www.transifex.com/calamares/teams/20061/et/)\n" diff --git a/lang/python/eu/LC_MESSAGES/python.mo b/lang/python/eu/LC_MESSAGES/python.mo index 9fd6ba35b395132eb6baa68eee7a67fd831be39d..b7e4b019641280e13561297e197e7410d7156806 100644 GIT binary patch delta 19 acmZ3&yo7l|KZl{2f}x?6iNVI{yo>-jv;|WD delta 19 acmZ3&yo7l|KZk+2f`O%#p~=SSyo>-j>;+o@ diff --git a/lang/python/eu/LC_MESSAGES/python.po b/lang/python/eu/LC_MESSAGES/python.po index fa905f0ff..5f21601ef 100644 --- a/lang/python/eu/LC_MESSAGES/python.po +++ b/lang/python/eu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Basque (https://www.transifex.com/calamares/teams/20061/eu/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/fa/LC_MESSAGES/python.mo b/lang/python/fa/LC_MESSAGES/python.mo index 7d5b5fc3f1bf2c5642bc315dc2147ad79fd3bfdd..89339df1367d2e05f759b22a44fbde6db2850d7d 100644 GIT binary patch delta 34 pcmdnQyo7mz3S-tp)hrG}GX+CKD-(l_(^(if^Azk93^lE}7yzOI2n+xK delta 48 zcmZ3&yoq^&3S-4Y)hrGJa|HuSD?^iw(^(kBHS%n14HeYX6!PqB6$~^L>=g_(t+^Ng DG0qC{ diff --git a/lang/python/fa/LC_MESSAGES/python.po b/lang/python/fa/LC_MESSAGES/python.po index 21e421d62..aef009a1a 100644 --- a/lang/python/fa/LC_MESSAGES/python.po +++ b/lang/python/fa/LC_MESSAGES/python.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Persian (https://www.transifex.com/calamares/teams/20061/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa\n" -"Plural-Forms: nplurals=2; plural=((n<=1 && n>= 0) ? 1);\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." diff --git a/lang/python/fi_FI/LC_MESSAGES/python.mo b/lang/python/fi_FI/LC_MESSAGES/python.mo index 978f9a7faaf52b0baf9a93871402de5532e7f612..25e22356f5a08dc22b7adaeeb3d78e963dc3a95d 100644 GIT binary patch delta 19 acmdnWyp?%EKZl{2f}x?6iNVI{a*O~xIt7LR delta 19 acmdnWyp?%EKZk+2f`O%#p~=SSa*O~xas`e6 diff --git a/lang/python/fi_FI/LC_MESSAGES/python.po b/lang/python/fi_FI/LC_MESSAGES/python.po index f178a5035..db7aad45d 100644 --- a/lang/python/fi_FI/LC_MESSAGES/python.po +++ b/lang/python/fi_FI/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Finnish (Finland) (https://www.transifex.com/calamares/teams/20061/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/fr/LC_MESSAGES/python.mo b/lang/python/fr/LC_MESSAGES/python.mo index 387872ec2e802ac49b419eccfed6110f2138bf7e..54d45fed762f230b5e58b674d01a81612d2048ac 100644 GIT binary patch delta 21 ccmZ3GFo06vHXGXMYp delta 21 ccmZ3GFo06xeCI{*Lx diff --git a/lang/python/fr/LC_MESSAGES/python.po b/lang/python/fr/LC_MESSAGES/python.po index 210cf2965..ebe18c3a8 100644 --- a/lang/python/fr/LC_MESSAGES/python.po +++ b/lang/python/fr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Jeremy Gourmel , 2018\n" "Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n" diff --git a/lang/python/fr_CH/LC_MESSAGES/python.mo b/lang/python/fr_CH/LC_MESSAGES/python.mo index 8bec20b88807dd00b571c7263b42e8509dbb2f72..b45acc7ee234bc9f21d000f89edd8101b50b8c9f 100644 GIT binary patch delta 19 acmdnayq$SMKZl{2f}x?6iNVI{3XA|eh6RiO delta 19 acmdnayq$SMKZk+2f`O%#p~=SS3XA|ez6F#3 diff --git a/lang/python/fr_CH/LC_MESSAGES/python.po b/lang/python/fr_CH/LC_MESSAGES/python.po index aa9d518aa..1bc4d48a9 100644 --- a/lang/python/fr_CH/LC_MESSAGES/python.po +++ b/lang/python/fr_CH/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: French (Switzerland) (https://www.transifex.com/calamares/teams/20061/fr_CH/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/gl/LC_MESSAGES/python.mo b/lang/python/gl/LC_MESSAGES/python.mo index fc2891ed044391c006cfeb4b89c2a066345cd2f0..797dd7426ed63a7e26aa95fdda323bbde966bb0c 100644 GIT binary patch delta 19 acmZ3+yo`B5KZl{2f}x?6iNVI{{EPrP00mh9 delta 19 acmZ3+yo`B5KZk+2f`O%#p~=SS{EPrPI0az< diff --git a/lang/python/gl/LC_MESSAGES/python.po b/lang/python/gl/LC_MESSAGES/python.po index 6780990ed..13dbb8f32 100644 --- a/lang/python/gl/LC_MESSAGES/python.po +++ b/lang/python/gl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Galician (https://www.transifex.com/calamares/teams/20061/gl/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/gu/LC_MESSAGES/python.mo b/lang/python/gu/LC_MESSAGES/python.mo index 8edd0e5dd3e1ef1c0ef595d676b011d2321daa9f..5e65e184e4b1d6a15c10d5e1e8581cf8509eaeb7 100644 GIT binary patch delta 19 acmZ3+yo`B5KZl{2f}x?6iNVI{{EPrP00mh9 delta 19 acmZ3+yo`B5KZk+2f`O%#p~=SS{EPrPI0az< diff --git a/lang/python/gu/LC_MESSAGES/python.po b/lang/python/gu/LC_MESSAGES/python.po index aaa39c5e8..5e00bc9bb 100644 --- a/lang/python/gu/LC_MESSAGES/python.po +++ b/lang/python/gu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Gujarati (https://www.transifex.com/calamares/teams/20061/gu/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/he/LC_MESSAGES/python.mo b/lang/python/he/LC_MESSAGES/python.mo index 51ca5223f49cb2146c5ca81cbbf35caa1e97047d..fa1a277e8e95e59d62d24370983c6c09b1761a30 100644 GIT binary patch delta 199 zcmZ3=IgM*Vj4dM*1H(#21_n6>28Pwl3=A?r`V^2h1k%rev>1?42hs*WS{q1D z0Md~_de6q0X^b3(W(tOeRwf3U*_mt^Qxt4%6$};B)D-d*RDld2&p=bbUco@YNR z!3s!cZJe3L$YEfvU|?xwXtJ4|$(GUB*49wLUct~xAy2{9R>26!Hd3%s(8yCzRWLLF d2^lCP=A{5-?SOnuptOnR, 2017\n" "Language-Team: Hebrew (https://www.transifex.com/calamares/teams/20061/he/)\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" -"Plural-Forms: nplurals=4; plural=(n==1 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." @@ -49,6 +49,7 @@ msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "מתקין חבילה אחת." msgstr[1] "מתקין %(num)d חבילות." +msgstr[2] "מתקין %(num)d חבילות." #: src/modules/packages/main.py:69 #, python-format @@ -56,3 +57,4 @@ msgid "Removing one package." msgid_plural "Removing %(num)d packages." msgstr[0] "מסיר חבילה אחת." msgstr[1] "מסיר %(num)d חבילות." +msgstr[2] "מסיר %(num)d חבילות." diff --git a/lang/python/hi/LC_MESSAGES/python.mo b/lang/python/hi/LC_MESSAGES/python.mo index c3fec771962d67db6e9bcb153c58e70a984917c1..9c5efc237e1d067609a51d483258c79a75bb8ab2 100644 GIT binary patch delta 21 ccmcc2b(w3!e?|^NGX+CKD-(mw>`Xq)08vN=1poj5 delta 21 ccmcc2b(w3!e?|@ia|HuSD?^jb>`Xq)08xkr4FCWD diff --git a/lang/python/hi/LC_MESSAGES/python.po b/lang/python/hi/LC_MESSAGES/python.po index cc20688de..3e2f7c7c5 100644 --- a/lang/python/hi/LC_MESSAGES/python.po +++ b/lang/python/hi/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Panwar108 , 2018\n" "Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n" diff --git a/lang/python/hr/LC_MESSAGES/python.mo b/lang/python/hr/LC_MESSAGES/python.mo index d8583ec90d75c40929c4091a305a0214f14b2159..ac931c69735676fef2e704669333a9d224156e57 100644 GIT binary patch delta 21 ccmeyt`Ga$VE)$2LnS!CAm5IS-Q>MdA084%bAOHXW delta 21 ccmeyt`Ga$VE)$1=xq^YEm7&RIQ>MdA0873GC;$Ke diff --git a/lang/python/hr/LC_MESSAGES/python.po b/lang/python/hr/LC_MESSAGES/python.po index 72ae3fc35..013b59492 100644 --- a/lang/python/hr/LC_MESSAGES/python.po +++ b/lang/python/hr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Lovro Kudelić , 2017\n" "Language-Team: Croatian (https://www.transifex.com/calamares/teams/20061/hr/)\n" diff --git a/lang/python/hu/LC_MESSAGES/python.mo b/lang/python/hu/LC_MESSAGES/python.mo index 7106fb16df38dd4a8ceacae41069635d4e6fddd8..19aa8389a76367523d7eed277d9ed2736c2fa39d 100644 GIT binary patch delta 21 ccmX@Zc7|<3B_oHSnS!CAm5IUTM#j^O07@AKUjP6A delta 21 ccmX@Zc7|<3B_oG{xq^YEm7&SzM#j^O07_W~X8-^I diff --git a/lang/python/hu/LC_MESSAGES/python.po b/lang/python/hu/LC_MESSAGES/python.po index fee0c1774..b6d3785a9 100644 --- a/lang/python/hu/LC_MESSAGES/python.po +++ b/lang/python/hu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: miku84, 2017\n" "Language-Team: Hungarian (https://www.transifex.com/calamares/teams/20061/hu/)\n" diff --git a/lang/python/id/LC_MESSAGES/python.mo b/lang/python/id/LC_MESSAGES/python.mo index 29c665814a05936f72e9afb1e9589342328e4c61..367bf272c440acc94560822fb6bdbb1656b86843 100644 GIT binary patch delta 21 ccmdnRv5RAaE)$2LnS!CAm5IS-Qzlj>06;7R06=U6>;M1& diff --git a/lang/python/id/LC_MESSAGES/python.po b/lang/python/id/LC_MESSAGES/python.po index bdd95214c..89616296d 100644 --- a/lang/python/id/LC_MESSAGES/python.po +++ b/lang/python/id/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Harry Suryapambagya , 2018\n" "Language-Team: Indonesian (https://www.transifex.com/calamares/teams/20061/id/)\n" diff --git a/lang/python/is/LC_MESSAGES/python.mo b/lang/python/is/LC_MESSAGES/python.mo index 1fecd1732f1d98700e916ce8e8f5c804f7410c8e..5caca1051cdd2275bcc2717ab38d9514bbd5eddd 100644 GIT binary patch delta 21 ccmZ3*v5I5Ee?|^NGX+CKD-(mw>`cl`07^jxg#Z8m delta 21 ccmZ3*v5I5Ee?|@ia|HuSD?^jb>`cl`07`)cjQ{`u diff --git a/lang/python/is/LC_MESSAGES/python.po b/lang/python/is/LC_MESSAGES/python.po index 63f563c7a..7ff9df520 100644 --- a/lang/python/is/LC_MESSAGES/python.po +++ b/lang/python/is/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kristján Magnússon, 2017\n" "Language-Team: Icelandic (https://www.transifex.com/calamares/teams/20061/is/)\n" diff --git a/lang/python/it_IT/LC_MESSAGES/python.mo b/lang/python/it_IT/LC_MESSAGES/python.mo index 1adb14cb428f2910d86c4e9b6d7d8e1fe5d4804e..69fdb80c94dbe198773b3fd7fb90fd8d08c16580 100644 GIT binary patch delta 21 ccmeC;?Bd*@%fw-5reJ7jWn!?|lqr-606B65)&Kwi delta 21 ccmeC;?Bd*@%fw+|u3%tkWoWY5lqr-606DS*-T(jq diff --git a/lang/python/it_IT/LC_MESSAGES/python.po b/lang/python/it_IT/LC_MESSAGES/python.po index 31a3cd3bf..89196b059 100644 --- a/lang/python/it_IT/LC_MESSAGES/python.po +++ b/lang/python/it_IT/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Mark , 2018\n" "Language-Team: Italian (Italy) (https://www.transifex.com/calamares/teams/20061/it_IT/)\n" diff --git a/lang/python/ja/LC_MESSAGES/python.mo b/lang/python/ja/LC_MESSAGES/python.mo index f9b74f4056aada4d10dbcb91654fb678066a9b6d..6956c7822aec2e3e3a82f83e61808acd0686a7e1 100644 GIT binary patch delta 21 ccmeC-?BU#?%fw-5reJ7jWn!?|lqsAE06E44+yDRo delta 21 ccmeC-?BU#?%fw+|u3%tkWoWY5lqsAE06GQ)8J@Xa!9G delta 19 acmZ3)yoh;1KZk+2f`O%#p~=SS+>8J@paoR` diff --git a/lang/python/kk/LC_MESSAGES/python.po b/lang/python/kk/LC_MESSAGES/python.po index 886e13f89..599a78ef1 100644 --- a/lang/python/kk/LC_MESSAGES/python.po +++ b/lang/python/kk/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Kazakh (https://www.transifex.com/calamares/teams/20061/kk/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/kn/LC_MESSAGES/python.mo b/lang/python/kn/LC_MESSAGES/python.mo index b23c6f69b7b9a172f67ca7dd1cbb50f5ac3347e0..a55906ecf652949cd4705bd3d4fe47e5aca77376 100644 GIT binary patch delta 34 pcmdnQyo7mz3S-tp)hrG}GX+CKD-(l_(^(if^Azk93^lE}7yzOI2n+xK delta 48 zcmZ3&yoq^&3S-4Y)hrGJa|HuSD?^iw(^(kBHS%n14HeYX6!PqB6$~^L>=g_(t+^Ng DG0qC{ diff --git a/lang/python/kn/LC_MESSAGES/python.po b/lang/python/kn/LC_MESSAGES/python.po index 2f95a3b0a..494299bf2 100644 --- a/lang/python/kn/LC_MESSAGES/python.po +++ b/lang/python/kn/LC_MESSAGES/python.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Kannada (https://www.transifex.com/calamares/teams/20061/kn/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: kn\n" -"Plural-Forms: nplurals=2; plural=((n<=1 && n>= 0) ? 1);\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." diff --git a/lang/python/lo/LC_MESSAGES/python.mo b/lang/python/lo/LC_MESSAGES/python.mo index c4ef7a6c088c159a990493f3ad5936507fcd3115..5bf185cf8649c8e82c7da00281b64250a226743d 100644 GIT binary patch delta 19 acmbQmJd1fkKZl{2f}x?6iNVI{%!~jyI0ZET delta 19 acmbQmJd1fkKZk+2f`O%#p~=SS%!~jya0NX8 diff --git a/lang/python/lo/LC_MESSAGES/python.po b/lang/python/lo/LC_MESSAGES/python.po index ba0904bfa..626e03b4a 100644 --- a/lang/python/lo/LC_MESSAGES/python.po +++ b/lang/python/lo/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Lao (https://www.transifex.com/calamares/teams/20061/lo/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/lt/LC_MESSAGES/python.mo b/lang/python/lt/LC_MESSAGES/python.mo index a31912debec8cb6dc7d10e662c67f8ca61685067..28557858d5e6820dc77dc70704252ec15ad8a726 100644 GIT binary patch delta 153 zcmZ3*^^9vmiYpHj1H*Mj1_nt628Jih3=A?r`X7)M1=7+i3=D!m+7L(=0BL6+tp%jF z0O=eceIH1J^!aRD*}}+SXr^FjXk}us*_0`Wk<&oIN{+7%C{* mDi|o(D;QZR7*D>`8a`5pWK delta 137 zcmaFHwTf#(iYq%41H*Mj1_nt628R303=A?r`X`VU1=345QUcqGY1Lhr*x3JVs_F 19 || n % 100 < 11) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." @@ -50,6 +50,7 @@ msgid_plural "Installing %(num)d packages." msgstr[0] "Įdiegiamas %(num)d paketas." msgstr[1] "Įdiegiami %(num)d paketai." msgstr[2] "Įdiegiama %(num)d paketų." +msgstr[3] "Įdiegiama %(num)d paketų." #: src/modules/packages/main.py:69 #, python-format @@ -58,3 +59,4 @@ msgid_plural "Removing %(num)d packages." msgstr[0] "Šalinamas %(num)d paketas." msgstr[1] "Šalinami %(num)d paketai." msgstr[2] "Šalinama %(num)d paketų." +msgstr[3] "Šalinama %(num)d paketų." diff --git a/lang/python/mr/LC_MESSAGES/python.mo b/lang/python/mr/LC_MESSAGES/python.mo index 531e39aaf3f8c021e9977a94c894fab568558a21..a089d694c9cc378160f672c85eaf447358532af3 100644 GIT binary patch delta 19 acmZ3=yp(xDKZl{2f}x?6iNVI{e2f4&+67hs delta 19 acmZ3=yp(xDKZk+2f`O%#p~=SSe2f4(5(QoW diff --git a/lang/python/mr/LC_MESSAGES/python.po b/lang/python/mr/LC_MESSAGES/python.po index fd8348ee2..e4d847a0a 100644 --- a/lang/python/mr/LC_MESSAGES/python.po +++ b/lang/python/mr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Marathi (https://www.transifex.com/calamares/teams/20061/mr/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/nb/LC_MESSAGES/python.mo b/lang/python/nb/LC_MESSAGES/python.mo index 3a0d9ad2c94a4ec57a74bf55b3cee118cd472d02..378cce55a8bc7527ef6a63557382808293d0e380 100644 GIT binary patch delta 19 acmaFC@`7c;Jq|-N1w%tC6N8P, 2017\n" "Language-Team: Norwegian Bokmål (https://www.transifex.com/calamares/teams/20061/nb/)\n" diff --git a/lang/python/nl/LC_MESSAGES/python.mo b/lang/python/nl/LC_MESSAGES/python.mo index c8eb3b833d765e3752a6226e633d0d621d666e5b..769e8e775f5702a15e184f4b117c1da83224f002 100644 GIT binary patch delta 21 ccmbQlI*D}yGb4wgnS!CAm5IS-ZpL;-05>B9xc~qF delta 21 ccmbQlI*D}yGb4wAxq^YEm7&RIZpL;-05@X, 2017\n" "Language-Team: Dutch (https://www.transifex.com/calamares/teams/20061/nl/)\n" diff --git a/lang/python/pl/LC_MESSAGES/python.mo b/lang/python/pl/LC_MESSAGES/python.mo index 0193f8ce473ce1636fff042d8d6db859fa8d2483..eaed55ed3951438681be9206a94fa7463b45eb1d 100644 GIT binary patch delta 21 ccmbQmJ&SvTE)$2LnS!CAm5IS-Q>IjA06bp>3jhEB delta 21 ccmbQmJ&SvTE)$1=xq^YEm7&RIQ>IjA06d=s6951J diff --git a/lang/python/pl/LC_MESSAGES/python.po b/lang/python/pl/LC_MESSAGES/python.po index d7b1e8dae..a32062bfa 100644 --- a/lang/python/pl/LC_MESSAGES/python.po +++ b/lang/python/pl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Marcin Mikołajczak , 2017\n" "Language-Team: Polish (https://www.transifex.com/calamares/teams/20061/pl/)\n" diff --git a/lang/python/pt_BR/LC_MESSAGES/python.mo b/lang/python/pt_BR/LC_MESSAGES/python.mo index c5bd4fde4ba995589baaa47b203644128302d3b1..a67e33f66e3e812e558681f857af7ab47736a5ae 100644 GIT binary patch delta 21 ccmbQqIg@jPE)$2LnS!CAm5IS-Q>GLq06XXf0{{R3 delta 21 ccmbQqIg@jPE)$1=xq^YEm7&RIQ>GLq06ZuK3jhEB diff --git a/lang/python/pt_BR/LC_MESSAGES/python.po b/lang/python/pt_BR/LC_MESSAGES/python.po index 29c5d81ad..89fdcbd0c 100644 --- a/lang/python/pt_BR/LC_MESSAGES/python.po +++ b/lang/python/pt_BR/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Caio Jordão Carvalho , 2018\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n" diff --git a/lang/python/pt_PT/LC_MESSAGES/python.mo b/lang/python/pt_PT/LC_MESSAGES/python.mo index 211b41cfcfca95fc8d96a9e521d69107a9fcffe6..f5b618b5d20dea1a31672d4acbcf8daf25217d66 100644 GIT binary patch delta 21 ccmbQrIhAvRE)$2LnS!CAm5IS-Q>Fwa06Rbg_W%F@ delta 21 ccmbQrIhAvRE)$1=xq^YEm7&RIQ>Fwa06TyL{{R30 diff --git a/lang/python/pt_PT/LC_MESSAGES/python.po b/lang/python/pt_PT/LC_MESSAGES/python.po index 8e781a848..9dabde94f 100644 --- a/lang/python/pt_PT/LC_MESSAGES/python.po +++ b/lang/python/pt_PT/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ricardo Simões , 2017\n" "Language-Team: Portuguese (Portugal) (https://www.transifex.com/calamares/teams/20061/pt_PT/)\n" diff --git a/lang/python/ro/LC_MESSAGES/python.mo b/lang/python/ro/LC_MESSAGES/python.mo index 46970e97f66bb3bd28a76c8560a05359fb27af3d..2f8f300df137c03f8968f0050acc03b23c8628d0 100644 GIT binary patch delta 21 ccmey%`ImEpE)$2LnS!CAm5IS-Q>GJ408CH@F8}}l delta 21 ccmey%`ImEpE)$1=xq^YEm7&RIQ>GJ408EeuHvj+t diff --git a/lang/python/ro/LC_MESSAGES/python.po b/lang/python/ro/LC_MESSAGES/python.po index baa8b2b4e..c5cd117e3 100644 --- a/lang/python/ro/LC_MESSAGES/python.po +++ b/lang/python/ro/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Baadur Jobava , 2018\n" "Language-Team: Romanian (https://www.transifex.com/calamares/teams/20061/ro/)\n" diff --git a/lang/python/ru/LC_MESSAGES/python.mo b/lang/python/ru/LC_MESSAGES/python.mo index 9ce189e368a7869068fbad44ef672491a1b389aa..434a4e0fc00f73cf50886b2491bd0b97fd9d6833 100644 GIT binary patch delta 19 acmaFD`h<1DWe!6#1w%tC6N8PnIhg=Qbp~7j delta 19 acmaFD`h<1DWex*#1p`YfLz9iSIhg=Qtp;QO diff --git a/lang/python/ru/LC_MESSAGES/python.po b/lang/python/ru/LC_MESSAGES/python.po index 1c3eba3fe..99f2b6eaf 100644 --- a/lang/python/ru/LC_MESSAGES/python.po +++ b/lang/python/ru/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Aleksey Kabanov , 2018\n" "Language-Team: Russian (https://www.transifex.com/calamares/teams/20061/ru/)\n" diff --git a/lang/python/sk/LC_MESSAGES/python.mo b/lang/python/sk/LC_MESSAGES/python.mo index a2c07cf6e616644167827f3246c246e16dc0d029..bb6e2937a9a951300fd170fe05168acc937dd47c 100644 GIT binary patch delta 175 zcmdnTHG_LXit7hP28QcEEYHBeaDo{^zW~x2Kt2Zx1A`clHU!euK-vRH8v^MgK)N1C ze*@BrK)P(>$`(crLo)?KLn{-5&8AGAj4ocv1JV*K3=GjgS|3Oo0_kob9S5ZM z0%=7cEwgcD3nPbtxq^YEm7&RIQzlPFZF>b1D}_8;TSEnV1w$Z9K~=#}!PZv6KtWAS cA, 2017\n" "Language-Team: Slovak (https://www.transifex.com/calamares/teams/20061/sk/)\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" -"Plural-Forms: nplurals=4; plural=(n % 1 == 0 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." @@ -50,6 +50,7 @@ msgid_plural "Installing %(num)d packages." msgstr[0] "Inštaluje sa jeden balík." msgstr[1] "Inštalujú sa %(num)d balíky." msgstr[2] "Inštaluje sa %(num)d balíkov." +msgstr[3] "Inštaluje sa %(num)d balíkov." #: src/modules/packages/main.py:69 #, python-format @@ -58,3 +59,4 @@ msgid_plural "Removing %(num)d packages." msgstr[0] "Odstraňuje sa jeden balík." msgstr[1] "Odstraňujú sa %(num)d balíky." msgstr[2] "Odstraňuje sa %(num)d balíkov." +msgstr[3] "Odstraňuje sa %(num)d balíkov." diff --git a/lang/python/sl/LC_MESSAGES/python.mo b/lang/python/sl/LC_MESSAGES/python.mo index 1cacc13e36f0423fe20de7cf53444696312c9b5a..4a3bfdf42263673aad9999987c6d61876db6091d 100644 GIT binary patch delta 19 acmcc3e4BYfKZl{2f}x?6iNVI{E{p&{-Uavo delta 19 acmcc3e4BYfKZk+2f`O%#p~=SSE{p&|76t$S diff --git a/lang/python/sl/LC_MESSAGES/python.po b/lang/python/sl/LC_MESSAGES/python.po index b6df06d94..023a40c60 100644 --- a/lang/python/sl/LC_MESSAGES/python.po +++ b/lang/python/sl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Slovenian (https://www.transifex.com/calamares/teams/20061/sl/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/sq/LC_MESSAGES/python.mo b/lang/python/sq/LC_MESSAGES/python.mo index 646afef3782a666e43b11506060ba6245ca60fc2..a5ee0c3af902fbabb5c6563416cfa4c9098ef79f 100644 GIT binary patch delta 21 ccmeyv@rPrBE)$2LnS!CAm5IS-QzmyN080P`ssI20 delta 21 ccmeyv@rPrBE)$1=xq^YEm7&RIQzmyN082mxvH$=8 diff --git a/lang/python/sq/LC_MESSAGES/python.po b/lang/python/sq/LC_MESSAGES/python.po index 76bbcc06b..7c78a70c4 100644 --- a/lang/python/sq/LC_MESSAGES/python.po +++ b/lang/python/sq/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Besnik , 2017\n" "Language-Team: Albanian (https://www.transifex.com/calamares/teams/20061/sq/)\n" diff --git a/lang/python/sr/LC_MESSAGES/python.mo b/lang/python/sr/LC_MESSAGES/python.mo index 006f4a10539c2c598424fe57b46e015ffc1535f9..b071a7166f2fd852c02794fc6dcbc2a4e4752b44 100644 GIT binary patch delta 19 acmaFQ{GNG2KZl{2f}x?6iNVI{5sUyt)&?{H delta 19 acmaFQ{GNG2KZk+2f`O%#p~=SS5sUyu4hB2` diff --git a/lang/python/sr/LC_MESSAGES/python.po b/lang/python/sr/LC_MESSAGES/python.po index 1ca4c756b..c8b52fdf9 100644 --- a/lang/python/sr/LC_MESSAGES/python.po +++ b/lang/python/sr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Serbian (https://www.transifex.com/calamares/teams/20061/sr/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/sr@latin/LC_MESSAGES/python.mo b/lang/python/sr@latin/LC_MESSAGES/python.mo index 1ef282c99e99b31d115e9cd2de8e085033d2a19e..815b243d70c5d26fb1bc0e962ca36c70606a53a1 100644 GIT binary patch delta 19 acmZo=X=Rzv&tYh$U}$J%Vz6;~9wPuYJOy|F delta 19 acmZo=X=Rzv&tYJ$U|?xwXtHs79wPuYbOnF_ diff --git a/lang/python/sr@latin/LC_MESSAGES/python.po b/lang/python/sr@latin/LC_MESSAGES/python.po index 7fd441f33..0cb8231c3 100644 --- a/lang/python/sr@latin/LC_MESSAGES/python.po +++ b/lang/python/sr@latin/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Serbian (Latin) (https://www.transifex.com/calamares/teams/20061/sr%40latin/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/sv/LC_MESSAGES/python.mo b/lang/python/sv/LC_MESSAGES/python.mo index 515a95c203b0ba6fc31f7f0a11807cff15c587aa..4a9a1f8804491d106141596ff70b7cf506fe4b2e 100644 GIT binary patch delta 19 acmZ3=yp(xDKZl{2f}x?6iNVI{e2f4&+67hs delta 19 acmZ3=yp(xDKZk+2f`O%#p~=SSe2f4(5(QoW diff --git a/lang/python/sv/LC_MESSAGES/python.po b/lang/python/sv/LC_MESSAGES/python.po index 92b751bd8..5c5ea66eb 100644 --- a/lang/python/sv/LC_MESSAGES/python.po +++ b/lang/python/sv/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Swedish (https://www.transifex.com/calamares/teams/20061/sv/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/th/LC_MESSAGES/python.mo b/lang/python/th/LC_MESSAGES/python.mo index aad4a814d5612bb91303ec1f3035e845cb6e6d0b..13c5108498fb42720760cd4ec21b9897e5856435 100644 GIT binary patch delta 19 acmbQuJezq!KZl{2f}x?6iNVI{EQ|m+UIjP+ delta 19 acmbQuJezq!KZk+2f`O%#p~=SSEQ|m+mIXin diff --git a/lang/python/th/LC_MESSAGES/python.po b/lang/python/th/LC_MESSAGES/python.po index c312cc439..5ff443631 100644 --- a/lang/python/th/LC_MESSAGES/python.po +++ b/lang/python/th/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Thai (https://www.transifex.com/calamares/teams/20061/th/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/tr_TR/LC_MESSAGES/python.mo b/lang/python/tr_TR/LC_MESSAGES/python.mo index 7f4007a70faed55cc04a5dd8e1a8f43b3215de7c..a26742798d03eb8950415ecba252495be2cd2b28 100644 GIT binary patch delta 21 ccmZ3%xq@?pE)$2LnS!CAm5IS-Q>J1j06ty?FaQ7m delta 21 ccmZ3%xq@?pE)$1=xq^YEm7&RIQ>J1j06v}tH~;_u diff --git a/lang/python/tr_TR/LC_MESSAGES/python.po b/lang/python/tr_TR/LC_MESSAGES/python.po index d5c13a300..05df72bcb 100644 --- a/lang/python/tr_TR/LC_MESSAGES/python.po +++ b/lang/python/tr_TR/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Demiray “tulliana” Muhterem , 2017\n" "Language-Team: Turkish (Turkey) (https://www.transifex.com/calamares/teams/20061/tr_TR/)\n" diff --git a/lang/python/uk/LC_MESSAGES/python.mo b/lang/python/uk/LC_MESSAGES/python.mo index aa141e77ece0c9b6aa7494fde3281be17cf28011..c74193fef8b6fdd0b695ccfdec4500c86f6e1a9c 100644 GIT binary patch delta 175 zcmeyy(#kqPh0%MWY8Ho~nS!CAm5IT|>1>RX=P`=a+bS3;sHrLBDX1zK8W<=j0{Mmt z_6i0HRuC}-TU#Ipu0p}iR>25~Yh$Zm0^(}G46so!G*YOkfg5P2U}&NVG|&*kK(Lm{ UI!vy73Ys7lMpg>On$}zl0Mhv)sQ>@~ delta 177 zcmZo={l+puh0$iBY8Hoqxq^YEm7&ST>1>Sk3V8~u3Wf@{wh9IcYHARkfr70ef@7ed zXscjosHtENRA;520aAm|0OH!&Di}f3+t`|Df>>Zh3Wf#-3O0sD3N= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." diff --git a/lang/python/ur/LC_MESSAGES/python.mo b/lang/python/ur/LC_MESSAGES/python.mo index 2c33ddaaf1b4f523a120d994a9b359c0d4220abc..9a286384d9520bb11ff2e5a6968c8f8fb1ea9094 100644 GIT binary patch delta 19 acmZ3)yoh;1KZl{2f}x?6iNVI{+>8J@Xa!9G delta 19 acmZ3)yoh;1KZk+2f`O%#p~=SS+>8J@paoR` diff --git a/lang/python/ur/LC_MESSAGES/python.po b/lang/python/ur/LC_MESSAGES/python.po index e1d6cc46f..7a4c4277a 100644 --- a/lang/python/ur/LC_MESSAGES/python.po +++ b/lang/python/ur/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Urdu (https://www.transifex.com/calamares/teams/20061/ur/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/uz/LC_MESSAGES/python.mo b/lang/python/uz/LC_MESSAGES/python.mo index a8c96cabf5230d29d97fb65c3d2a0e2d7ef04248..19c871a4125a4081e5a46c7b19f3e3db0c32041b 100644 GIT binary patch delta 19 acmbQkJcoHgKZl{2f}x?6iNVI{tc(CSgatbQ delta 19 acmbQkJcoHgKZk+2f`O%#p~=SStc(CSyahu5 diff --git a/lang/python/uz/LC_MESSAGES/python.po b/lang/python/uz/LC_MESSAGES/python.po index abf02a315..b65f871ab 100644 --- a/lang/python/uz/LC_MESSAGES/python.po +++ b/lang/python/uz/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Uzbek (https://www.transifex.com/calamares/teams/20061/uz/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/zh_CN/LC_MESSAGES/python.mo b/lang/python/zh_CN/LC_MESSAGES/python.mo index 27629f7b030a9c99f4ec12fa06ec14b8cac03f19..69bd2f8a5eb873b4377f1cc74e56f0f10bdcc886 100644 GIT binary patch delta 21 ccmX@hah79)E)$2LnS!CAm5IS-Qzi)}07FUz9RL6T delta 21 ccmX@hah79)E)$1=xq^YEm7&RIQzi)}07HreB>(^b diff --git a/lang/python/zh_CN/LC_MESSAGES/python.po b/lang/python/zh_CN/LC_MESSAGES/python.po index 23fb40c94..454a9ac9c 100644 --- a/lang/python/zh_CN/LC_MESSAGES/python.po +++ b/lang/python/zh_CN/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: leonfeng , 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/calamares/teams/20061/zh_CN/)\n" diff --git a/lang/python/zh_TW/LC_MESSAGES/python.mo b/lang/python/zh_TW/LC_MESSAGES/python.mo index c254d51114be2b8151302767b658fecf1a4898ce..5403be70282618031f7b4c37f319720dc53e7308 100644 GIT binary patch delta 21 ccmaFH@r+}GE)$2LnS!CAm5IS-Qzk, 2017\n" "Language-Team: Chinese (Taiwan) (https://www.transifex.com/calamares/teams/20061/zh_TW/)\n" From 4daf5fce10c249018edeab3034fd59341f5ac448 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 17 May 2018 11:13:54 -0400 Subject: [PATCH 170/385] CMake: drop RC status --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f6d5dca1c..113a491a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -261,7 +261,7 @@ list( SORT CALAMARES_TRANSLATION_LANGUAGES ) set( CALAMARES_VERSION_MAJOR 3 ) set( CALAMARES_VERSION_MINOR 2 ) set( CALAMARES_VERSION_PATCH 0 ) -set( CALAMARES_VERSION_RC 5 ) +set( CALAMARES_VERSION_RC 0 ) set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} ) set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" ) From 4826af97a943ee9c702bd0390a296f2146fbc59f Mon Sep 17 00:00:00 2001 From: bill auger Date: Sat, 19 May 2018 18:59:18 -0400 Subject: [PATCH 171/385] consistent indentation in src/modules/netinstall/page_netinst.ui this file has 1 space char indentation except for these lines --- src/modules/netinstall/page_netinst.ui | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/netinstall/page_netinst.ui b/src/modules/netinstall/page_netinst.ui index 15d27cfb4..3aa4e57ec 100644 --- a/src/modules/netinstall/page_netinst.ui +++ b/src/modules/netinstall/page_netinst.ui @@ -35,9 +35,9 @@ - - 11 - + + 11 + From 5bcd6eaef84b703d65aa036fa1cd227380473838 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 19 May 2018 09:08:11 -0400 Subject: [PATCH 172/385] [partition] Reduce warnings by removing unused code --- src/modules/partition/core/DeviceList.cpp | 17 +---------------- src/modules/partition/core/PartUtils.cpp | 2 +- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/src/modules/partition/core/DeviceList.cpp b/src/modules/partition/core/DeviceList.cpp index d7e6bab29..ebc40a03d 100644 --- a/src/modules/partition/core/DeviceList.cpp +++ b/src/modules/partition/core/DeviceList.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -52,22 +53,6 @@ hasRootPartition( Device* device ) return false; } -/* Unused */ -static bool -hasMountedPartitions( Device* device ) -{ - cDebug() << "Checking for mounted partitions in" << device->deviceNode(); - for ( auto it = PartitionIterator::begin( device ); it != PartitionIterator::end( device ); ++it ) - { - if ( ! ( *it )->isMounted() ) - { - cDebug() << " .." << ( *it )->partitionPath() << "is mounted on" << ( *it )->mountPoint(); - return true; - } - } - return false; -} - static bool isIso9660( const Device* device ) { diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp index 2c2944997..a39cb5395 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -139,7 +140,6 @@ canBeResized( PartitionCoreModule* core, const QString& partitionPath ) if ( partitionWithOs.startsWith( "/dev/" ) ) { cDebug() << partitionWithOs << "seems like a good path"; - bool canResize = false; DeviceModel* dm = core->deviceModel(); for ( int i = 0; i < dm->rowCount(); ++i ) { From 6c87747a5dc7df416452f4b9561e87b10d6cae7e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 20 May 2018 10:42:26 -0400 Subject: [PATCH 173/385] [libcalamares] Make it possible to get the logfile name --- src/libcalamares/utils/Logger.cpp | 2 +- src/libcalamares/utils/Logger.h | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libcalamares/utils/Logger.cpp b/src/libcalamares/utils/Logger.cpp index 0a13881d3..735414b85 100644 --- a/src/libcalamares/utils/Logger.cpp +++ b/src/libcalamares/utils/Logger.cpp @@ -116,7 +116,7 @@ CalamaresLogHandler( QtMsgType type, const QMessageLogContext& context, const QS } -static QString +QString logFile() { return CalamaresUtils::appLogDir().filePath( "session.log" ); diff --git a/src/libcalamares/utils/Logger.h b/src/libcalamares/utils/Logger.h index f7488b553..dba386eae 100644 --- a/src/libcalamares/utils/Logger.h +++ b/src/libcalamares/utils/Logger.h @@ -64,6 +64,11 @@ namespace Logger virtual ~CDebug(); }; + /** + * @brief The full path of the log file. + */ + DLLEXPORT QString logFile(); + /** * @brief Start logging to the log file. * From 6779a449913c687fe5261573225613c2419c2b39 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 19 May 2018 09:04:14 -0400 Subject: [PATCH 174/385] [preservefiles] New module preservefiles - more flexible way to keep (all kinds of) files from the host system, into the target system. - WIP: substitutions like in shellprocess (@@ROOT@@, @@HOME@@ probably) - WIP: creating a JSON file from global settings --- src/modules/preservefiles/CMakeLists.txt | 11 ++ src/modules/preservefiles/PreserveFiles.cpp | 181 +++++++++++++++++++ src/modules/preservefiles/PreserveFiles.h | 70 +++++++ src/modules/preservefiles/module.desc | 5 + src/modules/preservefiles/preservefiles.conf | 31 ++++ 5 files changed, 298 insertions(+) create mode 100644 src/modules/preservefiles/CMakeLists.txt create mode 100644 src/modules/preservefiles/PreserveFiles.cpp create mode 100644 src/modules/preservefiles/PreserveFiles.h create mode 100644 src/modules/preservefiles/module.desc create mode 100644 src/modules/preservefiles/preservefiles.conf diff --git a/src/modules/preservefiles/CMakeLists.txt b/src/modules/preservefiles/CMakeLists.txt new file mode 100644 index 000000000..43602024c --- /dev/null +++ b/src/modules/preservefiles/CMakeLists.txt @@ -0,0 +1,11 @@ +include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) + +calamares_add_plugin( preservefiles + TYPE job + EXPORT_MACRO PLUGINDLLEXPORT_PRO + SOURCES + PreserveFiles.cpp + LINK_PRIVATE_LIBRARIES + calamares + SHARED_LIB +) diff --git a/src/modules/preservefiles/PreserveFiles.cpp b/src/modules/preservefiles/PreserveFiles.cpp new file mode 100644 index 000000000..9ef473f27 --- /dev/null +++ b/src/modules/preservefiles/PreserveFiles.cpp @@ -0,0 +1,181 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "PreserveFiles.h" + +#include "CalamaresVersion.h" +#include "JobQueue.h" +#include "GlobalStorage.h" + +#include "utils/CalamaresUtils.h" +#include "utils/CalamaresUtilsSystem.h" +#include "utils/CommandList.h" +#include "utils/Logger.h" +#include "utils/Units.h" + +#include + +using CalamaresUtils::operator""_MiB; + +QString targetPrefix() +{ + if ( CalamaresUtils::System::instance()->doChroot() ) + { + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + if ( gs && gs->contains( "rootMountPoint" ) ) + { + QString r = gs->value( "rootMountPoint" ).toString(); + if ( !r.isEmpty() ) + return r; + else + cDebug() << "RootMountPoint is empty"; + } + else + { + cDebug() << "No rootMountPoint defined, preserving files to '/'"; + } + } + + return QLatin1Literal( "/" ); +} + +PreserveFiles::PreserveFiles( QObject* parent ) + : Calamares::CppJob( parent ) +{ +} + +PreserveFiles::~PreserveFiles() +{ +} + +QString +PreserveFiles::prettyName() const +{ + return tr( "Saving files for later ..." ); +} + +Calamares::JobResult PreserveFiles::exec() +{ + if ( m_items.isEmpty() ) + return Calamares::JobResult::error( tr( "No files configured to save for later." ) ); + + QString prefix = targetPrefix(); + if ( !prefix.endsWith( '/' ) ) + prefix.append( '/' ); + + int count = 0; + for ( const auto it : m_items ) + { + QString source = it.source; + if ( it.type == ItemType::Log ) + source = Logger::logFile(); + if ( it.type == ItemType::Config ) + cDebug() << "Config-preserving is not implemented yet."; + + if ( source.isEmpty() ) + cWarning() << "Skipping unnamed source file for" << it.dest; + else + { + QFile sourcef( source ); + if ( !sourcef.open( QFile::ReadOnly ) ) + { + cWarning() << "Could not read" << source; + continue; + } + + QFile destf( prefix + it.dest ); + if ( !destf.open( QFile::WriteOnly ) ) + { + sourcef.close(); + cWarning() << "Could not open" << destf.fileName() << "for writing; could not copy" << source; + continue; + } + + QByteArray b; + do + { + b = sourcef.read( 1_MiB ); + destf.write( b ); + } + while ( b.count() > 0 ); + + sourcef.close(); + destf.close(); + ++count; + } + } + + return count == m_items.count() ? + Calamares::JobResult::ok() : + Calamares::JobResult::error( tr( "Not all of the configured files could be preserved." ) ); +} + +void PreserveFiles::setConfigurationMap(const QVariantMap& configurationMap) +{ + auto files = configurationMap[ "files" ]; + + if ( ! ( files.isValid() && ( files.type() == QVariant::List ) ) ) + { + cDebug() << "No files: configuration key, or not a list."; + return; + } + + QVariantList l = files.toList(); + unsigned int c = 0; + for ( const auto li : l ) + { + if ( li.type() == QVariant::String ) + { + QString filename = li.toString(); + if ( !filename.isEmpty() ) + m_items.append( Item{ filename, filename, ItemType::Path } ); + else + cDebug() << "Empty filename for preservefiles, item" << c; + } + else if ( li.type() == QVariant::Map ) + { + const auto map = li.toMap(); + QString dest = map[ "dest" ].toString(); + QString from = map[ "from" ].toString(); + ItemType t = + ( from == "log" ) ? ItemType::Log : + ( from == "config" ) ? ItemType::Config : + ItemType::None; + + if ( dest.isEmpty() ) + { + cDebug() << "Empty dest for preservefiles, item" << c; + } + else if ( t == ItemType::None ) + { + cDebug() << "Invalid type for preservefiles, item" << c; + } + else + { + m_items.append( Item{ QString(), dest, t } ); + } + } + else + cDebug() << "Invalid type for preservefiles, item" << c; + + ++c; + } +} + +CALAMARES_PLUGIN_FACTORY_DEFINITION( PreserveFilesFactory, registerPlugin(); ) + diff --git a/src/modules/preservefiles/PreserveFiles.h b/src/modules/preservefiles/PreserveFiles.h new file mode 100644 index 000000000..0c9216336 --- /dev/null +++ b/src/modules/preservefiles/PreserveFiles.h @@ -0,0 +1,70 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef PRESERVEFILES_H +#define PRESERVEFILES_H + +#include +#include +#include + +#include "CppJob.h" + +#include "utils/PluginFactory.h" + +#include "PluginDllMacro.h" + + +class PLUGINDLLEXPORT PreserveFiles : public Calamares::CppJob +{ + Q_OBJECT + + enum class ItemType + { + None, + Path, + Log, + Config + } ; + + struct Item + { + QString source; + QString dest; + ItemType type; + } ; + + using ItemList = QList< Item >; + +public: + explicit PreserveFiles( QObject* parent = nullptr ); + virtual ~PreserveFiles() override; + + QString prettyName() const override; + + Calamares::JobResult exec() override; + + void setConfigurationMap( const QVariantMap& configurationMap ) override; + +private: + ItemList m_items; +}; + +CALAMARES_PLUGIN_FACTORY_DECLARATION( PreserveFilesFactory ) + +#endif // PRESERVEFILES_H diff --git a/src/modules/preservefiles/module.desc b/src/modules/preservefiles/module.desc new file mode 100644 index 000000000..953d8c81b --- /dev/null +++ b/src/modules/preservefiles/module.desc @@ -0,0 +1,5 @@ +--- +type: "job" +name: "preservefiles" +interface: "qtplugin" +load: "libcalamares_job_preservefiles.so" diff --git a/src/modules/preservefiles/preservefiles.conf b/src/modules/preservefiles/preservefiles.conf new file mode 100644 index 000000000..4c33d93d9 --- /dev/null +++ b/src/modules/preservefiles/preservefiles.conf @@ -0,0 +1,31 @@ +# Configuration for the preserve-files job +# +# The *files* key contains a list of files to preserve. Each element of +# the list should have one of these forms: +# +# - an absolute path (probably within the host system). This will be preserved +# as the same path within the target system (chroot). If, globally, dontChroot +# is true, then these items are ignored (since the destination is the same +# as the source). +# - a map with a *dest* key. The *dest* value is a path interpreted in the +# target system (if dontChroot is true, in the host system). Relative paths +# are not recommended. There are two possible other keys in the map: +# - *from*, which must have one of the values, below; it is used to +# preserve files whose pathname is known to Calamares internally. +# - *src*, to refer to a path interpreted in the host system. Relative +# paths are not recommended, and are interpreted relative to where +# Calamares is being run. +# Only one of the two other keys may be set. +# +# Special values for the key *from* are: +# - *log*, for the complete log file (up to the moment the preservefiles +# module is run), +# - *config*, for the Calamares configuration file +# - *globals*, for a JSON dump of the contents of global storage +--- +files: + - /etc/oem-information + - from: log + dest: /root/install.log + - from: config + dest: /root/install.cfg From 3160bd7a54ad17fcbbc9802de3a86b77d929d040 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 21 May 2018 10:49:47 -0400 Subject: [PATCH 175/385] [netinstall] Simplify getting configuration - Use convenience methods for getting bools and strings from the configuration map. Ignore empty groupsUrls. --- src/modules/netinstall/NetInstallViewStep.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/modules/netinstall/NetInstallViewStep.cpp b/src/modules/netinstall/NetInstallViewStep.cpp index 50e08486b..5744891cc 100644 --- a/src/modules/netinstall/NetInstallViewStep.cpp +++ b/src/modules/netinstall/NetInstallViewStep.cpp @@ -22,6 +22,8 @@ #include "JobQueue.h" #include "GlobalStorage.h" + +#include "utils/CalamaresUtils.h" #include "utils/Logger.h" #include "NetInstallPage.h" @@ -179,16 +181,12 @@ NetInstallViewStep::onLeave() void NetInstallViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { - m_widget->setRequired( - configurationMap.contains( "required" ) && - configurationMap.value( "required" ).type() == QVariant::Bool && - configurationMap.value( "required" ).toBool() ); + m_widget->setRequired( CalamaresUtils::getBool( configurationMap, "required", false ) ); - if ( configurationMap.contains( "groupsUrl" ) && - configurationMap.value( "groupsUrl" ).type() == QVariant::String ) + QString groupsUrl = CalamaresUtils::getString( configurationMap, "groupsUrl" ); + if ( !groupsUrl.isEmpty() ) { - Calamares::JobQueue::instance()->globalStorage()->insert( - "groupsUrl", configurationMap.value( "groupsUrl" ).toString() ); + Calamares::JobQueue::instance()->globalStorage()->insert( "groupsUrl", groupsUrl ); m_widget->loadGroupList(); } } From ba85fc760a884fa51c302bce7d5e79002d506d85 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 21 May 2018 10:58:57 -0400 Subject: [PATCH 176/385] [netinstall] Remove data-indirection - There is no need to move data around between two parts of the same module via global storage. --- src/modules/netinstall/NetInstallPage.cpp | 8 ++------ src/modules/netinstall/NetInstallPage.h | 13 ++++++++----- src/modules/netinstall/NetInstallViewStep.cpp | 4 +++- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/modules/netinstall/NetInstallPage.cpp b/src/modules/netinstall/NetInstallPage.cpp index b7bcdd457..37c489135 100644 --- a/src/modules/netinstall/NetInstallPage.cpp +++ b/src/modules/netinstall/NetInstallPage.cpp @@ -24,8 +24,8 @@ #include "PackageModel.h" #include "ui_page_netinst.h" -#include "GlobalStorage.h" #include "JobQueue.h" + #include "utils/Logger.h" #include "utils/Retranslator.h" #include "utils/YamlUtils.h" @@ -128,12 +128,8 @@ NetInstallPage::selectedPackages() const } void -NetInstallPage::loadGroupList() +NetInstallPage::loadGroupList( const QString& confUrl ) { - QString confUrl( - Calamares::JobQueue::instance()->globalStorage()->value( - "groupsUrl" ).toString() ); - QNetworkRequest request; request.setUrl( QUrl( confUrl ) ); // Follows all redirects except unsafe ones (https to http). diff --git a/src/modules/netinstall/NetInstallPage.h b/src/modules/netinstall/NetInstallPage.h index 58308412d..3dc8ee46e 100644 --- a/src/modules/netinstall/NetInstallPage.h +++ b/src/modules/netinstall/NetInstallPage.h @@ -25,13 +25,14 @@ #include "PackageTreeItem.h" #include "Typedefs.h" -#include #include #include +#include // required forward declarations class QByteArray; class QNetworkReply; +class QString; namespace Ui { @@ -46,10 +47,12 @@ public: void onActivate(); - // Retrieves the groups, with name, description and packages, from - // the remote URL configured in the settings. Assumes the URL is already - // in the global storage. This should be called before displaying the page. - void loadGroupList(); + /** @brief Retrieves the groups, with name, description and packages + * + * Loads data from the given URL. This should be called before + * displaying the page. + */ + void loadGroupList( const QString& url ); // Sets the "required" state of netinstall data. Influences whether // corrupt or unavailable data causes checkReady() to be emitted diff --git a/src/modules/netinstall/NetInstallViewStep.cpp b/src/modules/netinstall/NetInstallViewStep.cpp index 5744891cc..de4480cbb 100644 --- a/src/modules/netinstall/NetInstallViewStep.cpp +++ b/src/modules/netinstall/NetInstallViewStep.cpp @@ -186,8 +186,10 @@ NetInstallViewStep::setConfigurationMap( const QVariantMap& configurationMap ) QString groupsUrl = CalamaresUtils::getString( configurationMap, "groupsUrl" ); if ( !groupsUrl.isEmpty() ) { + // Keep putting groupsUrl into the global storage, + // even though it's no longer used for in-module data-passing. Calamares::JobQueue::instance()->globalStorage()->insert( "groupsUrl", groupsUrl ); - m_widget->loadGroupList(); + m_widget->loadGroupList( groupsUrl ); } } From d7b1811e5605f2a63fdefb57bd18088edd3d7d37 Mon Sep 17 00:00:00 2001 From: bill auger Date: Sat, 19 May 2018 19:13:46 -0400 Subject: [PATCH 177/385] avoid pinging hard-coded server for netinstall.yaml groupsUrl is optional and should be commented out by default also this URL is 404 also only chakra would ever want to ping the chakra server anyways --- src/modules/netinstall/netinstall.conf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/modules/netinstall/netinstall.conf b/src/modules/netinstall/netinstall.conf index f5977a267..fe99eb2be 100644 --- a/src/modules/netinstall/netinstall.conf +++ b/src/modules/netinstall/netinstall.conf @@ -1,7 +1,10 @@ --- # This is the URL that is retrieved to get the netinstall groups-and-packages -# data (which should be in the format described in netinstall.yaml). -groupsUrl: http://chakraos.org/netinstall.php +# data (which should be in the format described in netinstall.yaml), e.g.: +# groupsUrl: http://example.org/netinstall.php +# or it can be a locally installed file: +# groupsUrl: file:///usr/share/calamares/netinstall.yaml +# groupsUrl: file:///usr/share/calamares/netinstall.yaml # If the installation can proceed without netinstall (e.g. the Live CD # can create a working installed system, but netinstall is preferred From b6673f6324a2137da9fc3ab046ff4d7da9438149 Mon Sep 17 00:00:00 2001 From: bill auger Date: Tue, 22 May 2018 03:29:01 -0400 Subject: [PATCH 178/385] move thisModule->isLoaded assert to after it's warning message --- src/libcalamaresui/modulesystem/ModuleManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 7afe5eef8..cbee61129 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -290,10 +290,10 @@ ModuleManager::loadModules() // If it's a ViewModule, it also appends the ViewStep to the ViewManager. thisModule->loadSelf(); m_loadedModulesByInstanceKey.insert( instanceKey, thisModule ); - Q_ASSERT( thisModule->isLoaded() ); if ( !thisModule->isLoaded() ) { cWarning() << "Module" << moduleName << "loading FAILED"; + Q_ASSERT( thisModule->isLoaded() ); continue; } } From a43b87c6365b94a67315dda482fea1530c692f3c Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Tue, 22 May 2018 11:37:23 -0400 Subject: [PATCH 179/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_ca.ts | 10 +-- lang/calamares_cs_CZ.ts | 6 +- lang/calamares_de.ts | 181 ++++++++++++++++++++-------------------- lang/calamares_hr.ts | 6 +- lang/calamares_ru.ts | 4 +- 5 files changed, 105 insertions(+), 102 deletions(-) diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index 84bc809bb..2048f6af5 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -484,7 +484,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + L'odre s'executa a l'entorn de l'amfitrió i necessita saber el camí de l'arrel, però no hi ha definit el punt de muntatge de l'arrel. @@ -730,12 +730,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. Deleting partition %1. - Eliminant la partició %1. + Suprimint la partició %1. The installer failed to delete partition %1. - L'instal·lador no ha pogut eliminar la partició %1. + L'instal·lador no ha pogut suprimir la partició %1. @@ -1674,7 +1674,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. &Delete - &Suprimeix + E&limina @@ -1694,7 +1694,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. 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. - + La taula de particions de %1 ja té %2 particions primàries i no se n'hi poden afegir més. Si us plau, suprimiu una partició primària i afegiu-hi una partició ampliada. diff --git a/lang/calamares_cs_CZ.ts b/lang/calamares_cs_CZ.ts index a506e76d9..28a88e874 100644 --- a/lang/calamares_cs_CZ.ts +++ b/lang/calamares_cs_CZ.ts @@ -484,7 +484,7 @@ Instalační program bude ukončen a všechny změny ztraceny. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + Příkaz bude spuštěn v prostředí hostitele a potřebuje znát popis umístění kořene souborového systému. rootMountPoint ale není zadaný. @@ -1689,12 +1689,12 @@ Instalační program bude ukončen a všechny změny ztraceny. Can not create new partition - + Nevytvářet nový oddíl 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. - + Tabulka oddílů na %1 už obsahuje %2 hlavních oddílů a proto už není možné přidat další. Odeberte jeden z hlavních oddílů a namísto něj vytvořte rozšířený oddíl. diff --git a/lang/calamares_de.ts b/lang/calamares_de.ts index 63de0898d..a19100da1 100644 --- a/lang/calamares_de.ts +++ b/lang/calamares_de.ts @@ -184,7 +184,7 @@ &Install - + &Installieren @@ -479,12 +479,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Could not run command. - + Befehl konnte nicht ausgeführt werden. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + Dieser Befehl wird im installierten System ausgeführt und muss daher den Root-Pfad kennen, jedoch wurde kein rootMountPoint definiert. @@ -492,7 +492,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Contextual Processes Job - + Job für kontextuale Prozesse @@ -530,7 +530,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. LVM LV name - + LVM LV Name @@ -939,7 +939,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - + <html><head/><body><p>Wenn diese Option aktiviert ist, genügt zum Neustart des Systems ein Klick auf <span style=" font-style:italic;">Fertig</span> oder das Schließen des Installationsprogramms.</p></body></html> @@ -1245,232 +1245,232 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Password is too weak - + Das Passwort ist zu schwach Memory allocation error when setting '%1' - + Fehler bei der Speicherzuweisung beim Einrichten von '%1' Memory allocation error - + Fehler bei der Speicherzuweisung The password is the same as the old one - + Das Passwort ist dasselbe wie das alte The password is a palindrome - + Das Passwort ist ein Palindrom The password differs with case changes only - + Das Passwort unterscheidet sich nur durch Groß- und Kleinschreibung The password is too similar to the old one - + Das Passwort ist dem alten zu ähnlich The password contains the user name in some form - + Das Passwort enthält eine Form des Benutzernamens The password contains words from the real name of the user in some form - + Das Passwort enthält Teile des Klarnamens des Benutzers The password contains forbidden words in some form - + Das Passwort enthält verbotene Wörter The password contains less than %1 digits - + Das Passwort hat weniger als %1 Stellen The password contains too few digits - + Das Passwort hat zu wenige Stellen The password contains less than %1 uppercase letters - + Das Passwort enthält weniger als %1 Großbuchstaben The password contains too few uppercase letters - + Das Passwort enthält zu wenige Großbuchstaben The password contains less than %1 lowercase letters - + Das Passwort enthält weniger als %1 Kleinbuchstaben The password contains too few lowercase letters - + Das Passwort enthält zu wenige Kleinbuchstaben The password contains less than %1 non-alphanumeric characters - + Das Passwort enthält weniger als %1 nicht-alphanumerische Zeichen The password contains too few non-alphanumeric characters - + Das Passwort enthält zu wenige nicht-alphanumerische Zeichen The password is shorter than %1 characters - + Das Passwort hat weniger als %1 Stellen The password is too short - + Das Passwort ist zu kurz The password is just rotated old one - + Das Passwort wurde schon einmal verwendet The password contains less than %1 character classes - + Das Passwort enthält weniger als %1 verschiedene Zeichenarten The password does not contain enough character classes - + Das Passwort enthält nicht genügend verschiedene Zeichenarten The password contains more than %1 same characters consecutively - + Das Passwort enthält mehr als %1 gleiche Zeichen am Stück The password contains too many same characters consecutively - + Das Passwort enthält zu viele gleiche Zeichen am Stück The password contains more than %1 characters of the same class consecutively - + Das Passwort enthält mehr als %1 gleiche Zeichenarten am Stück The password contains too many characters of the same class consecutively - + Das Passwort enthält zu viele gleiche Zeichenarten am Stück The password contains monotonic sequence longer than %1 characters - + Das Passwort enthält eine gleichartige Sequenz von mehr als %1 Zeichen The password contains too long of a monotonic character sequence - + Das Passwort enthält eine gleichartige Sequenz von zu großer Länge No password supplied - + Kein Passwort angegeben Cannot obtain random numbers from the RNG device - + Zufallszahlen konnten nicht vom Zufallszahlengenerator abgerufen werden Password generation failed - required entropy too low for settings - + Passwortgeneration fehlgeschlagen - Zufallszahlen zu schwach für die gewählten Einstellungen The password fails the dictionary check - %1 - + Das Passwort besteht den Wörterbuch-Test nicht - %1 The password fails the dictionary check - + Das Passwort besteht den Wörterbuch-Test nicht Unknown setting - %1 - + Unbekannte Einstellung - %1 Unknown setting - + Unbekannte Einstellung Bad integer value of setting - %1 - + Fehlerhafter Integerwert der Einstellung - %1 Bad integer value - + Fehlerhafter Integerwert Setting %1 is not of integer type - + Die Einstellung %1 ist kein Integerwert Setting is not of integer type - + Die Einstellung ist kein Integerwert Setting %1 is not of string type - + Die Einstellung %1 ist keine Zeichenkette Setting is not of string type - + Die Einstellung ist keine Zeichenkette Opening the configuration file failed - + Öffnen der Konfigurationsdatei fehlgeschlagen The configuration file is malformed - + Die Konfigurationsdatei ist falsch strukturiert Fatal failure - + Fataler Fehler Unknown error - + Unbekannter Fehler @@ -1689,12 +1689,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Can not create new partition - + Neue Partition kann nicht erstellt werden 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. - + Die Partitionstabelle auf %1 hat bereits %2 primäre Partitionen und weitere können nicht hinzugefügt werden. Bitte entfernen Sie eine primäre Partition und fügen Sie stattdessen eine erweiterte Partition hinzu. @@ -1800,13 +1800,13 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Plasma Look-and-Feel Job - + Job für das Erscheinungsbild von Plasma Could not select KDE Plasma Look-and-Feel package - + Das Paket für das Erscheinungsbild von KDE Plasma konnte nicht ausgewählt werden @@ -1824,7 +1824,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + Bitte wählen Sie das Erscheinungsbild für den KDE Plasma Desktop. Sie können diesen Schritt auch überspringen und das Erscheinungsbild festlegen, sobald das System installiert ist. Per Klick auf einen Eintrag können Sie sich eine Vorschau dieses Erscheinungsbildes anzeigen lassen. @@ -1832,7 +1832,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Look-and-Feel - + Erscheinungsbild @@ -1841,39 +1841,42 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. There was no output from the command. - + +Dieser Befehl hat keine Ausgabe erzeugt. Output: - + +Ausgabe: + External command crashed. - + Externes Programm abgestürzt. Command <i>%1</i> crashed. - + Programm <i>%1</i> abgestürzt. External command failed to start. - + Externes Programm konnte nicht gestartet werden. Command <i>%1</i> failed to start. - + Das Programm <i>%1</i> konnte nicht gestartet werden. Internal error when starting command. - + Interner Fehler beim Starten des Programms. @@ -1883,22 +1886,22 @@ Output: External command failed to finish. - + Externes Programm konnte nicht abgeschlossen werden. Command <i>%1</i> failed to finish in %2 seconds. - + Programm <i>%1</i> konnte nicht innerhalb von %2 Sekunden abgeschlossen werden. External command finished with errors. - + Externes Programm mit Fehlern beendet. Command <i>%1</i> finished with exit code %2. - + Befehl <i>%1</i> beendet mit Exit-Code %2. @@ -2338,7 +2341,7 @@ Output: Shell Processes Job - + Job für Shell-Prozesse @@ -2347,7 +2350,7 @@ Output: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -2371,22 +2374,22 @@ Output: Installation feedback - Installationsrückmeldung + Rückmeldungen zur Installation Sending installation feedback. - Senden der Installationsrückmeldung + Senden der Rückmeldungen zur Installation. Internal error in install-tracking. - + Interner Fehler bei der Überwachung der Installation. HTTP request timed out. - + Zeitüberschreitung bei HTTP-Anfrage @@ -2394,28 +2397,28 @@ Output: Machine feedback - + Rückinformationen zum Computer Configuring machine feedback. - + Konfiguriere Rückmeldungen zum Computer. Error in machine feedback configuration. - + Fehler bei der Konfiguration der Rückmeldungen zum Computer Could not configure machine feedback correctly, script error %1. - + Rückmeldungen zum Computer konnten nicht korrekt konfiguriert werden, Skriptfehler %1. Could not configure machine feedback correctly, Calamares error %1. - + Rückmeldungen zum Computer konnten nicht korrekt konfiguriert werden, Calamares-Fehler %1. @@ -2433,14 +2436,14 @@ Output: <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - + <html><head/><body><p>Ist diese Option aktiviert, werden <span style=" font-weight:600;">keinerlei Informationen</span> über Ihre Installation gesendet.</p></body></html> TextLabel - Text Label + TextLabel @@ -2452,27 +2455,27 @@ Output: <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> - + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Klicken sie hier für weitere Informationen über Benutzer-Rückmeldungen</span></a></p></body></html> Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. - + Rückinformationen über die Installation helfen %1 festzustellen, wieviele Menschen es benutzen und auf welcher Hardware sie %1 installieren. Mit den beiden letzten Optionen gestatten Sie die Erhebung kontinuierlicher Informationen über Ihre bevorzugte Software. Um zu prüfen, welche Informationen gesendet werden, klicken Sie bitte auf das Hilfesymbol neben dem jeweiligen Abschnitt. By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - Wenn Sie diese Option auswählen, senden Sie Informationen zu Ihrer Installation und Hardware. Diese Informationen werden nur einmal nach Abschluss der Installation gesendet. + Wenn Sie diese Option auswählen, senden Sie Informationen zu Ihrer Installation und Hardware. Diese Informationen werden <b>nur einmalig</b> nach Abschluss der Installation gesendet. By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - Wenn Sie dies auswählen, senden Sie regelmäßig Informationen zu Ihrer Installation, Hardware und Anwendungen an %1. + Wenn Sie diese Option auswählen, senden Sie <b>regelmäßig</b> Informationen zu Installation, Hardware und Anwendungen an %1. By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. - Wenn Sie dies auswählen, senden Sie regelmäßig Informationen über Ihre Installation, Hardware, Anwendungen und Nutzungsmuster an %1. + Wenn Sie diese Option auswählen, senden Sie <b>regelmäßig</b> Informationen zu Installation, Hardware, Anwendungen und Nutzungsmuster an %1. @@ -2480,7 +2483,7 @@ Output: Feedback - Feedback + Rückmeldung @@ -2575,7 +2578,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/><strong>%2<br/>für %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Dank an: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg und das <a href="https://www.transifex.com/calamares/calamares/">Calamares Übersetzerteam</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> wird unterstützt von <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. diff --git a/lang/calamares_hr.ts b/lang/calamares_hr.ts index 7d70ee86f..267fbe127 100644 --- a/lang/calamares_hr.ts +++ b/lang/calamares_hr.ts @@ -484,7 +484,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + Naredba se pokreće u okruženju domaćina i treba znati korijenski put, međutim, rootMountPoint nije definiran. @@ -1689,12 +1689,12 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. Can not create new partition - + Ne mogu stvoriti novu particiju 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. - + Particijska tablica %1 već ima %2 primarne particije i nove se više ne mogu dodati. Molimo vas da uklonite jednu primarnu particiju i umjesto nje dodate proširenu particiju. diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts index d84de4f44..db81fb3f4 100644 --- a/lang/calamares_ru.ts +++ b/lang/calamares_ru.ts @@ -1688,12 +1688,12 @@ The installer will quit and all changes will be lost. Can not create new partition - + Не удалось создать новый раздел 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. - + В таблице разделов на %1 уже %2 первичных разделов, больше добавить нельзя. Удалите один из первичных разделов и добавьте расширенный раздел. From a79e62ac6baa0ed8b00cb3a63fad5ca2ea269acc Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Tue, 22 May 2018 11:37:24 -0400 Subject: [PATCH 180/385] i18n: [dummypythonqt] Automatic merge of Transifex translations --- .../lang/eo/LC_MESSAGES/dummypythonqt.mo | Bin 968 -> 975 bytes .../lang/eo/LC_MESSAGES/dummypythonqt.po | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo index 8eac3bf2f2cec83824eaa6c5c2472ab7b7bcdfc3..f06ac012c94042c363f936ce595fba997eb565e9 100644 GIT binary patch delta 100 zcmX@Xex7|oi0K+e28IM6=3!u9;ALiD&;im?KpMn%2hx&2Is`~d0qHy-?FytjH+JeW pau}K^7#doc7);*BXfNnpT2!Lon3tWQ5Rj3dnwMFznVsn%BLL+a5~~0J delta 93 zcmX@leu8~Mi0M*B28IM6=3!u9U}I)r&;ioIKpMn%0Me2`+80Pm0qJxg?FyuuHg@VV iau}E^7+6{vnoQouXwOwrl$cVQotRgWznPEeAR_=|n-F{e diff --git a/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.po index 4fcdcfd71..495a42896 100644 --- a/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-07 09:14-0400\n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: tradukanto , 2018\n" +"Last-Translator: Kurt Ankh Phoenix , 2018\n" "Language-Team: Esperanto (https://www.transifex.com/calamares/teams/20061/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" From 42d64f063062cf687c283eeef0b0b55ad2663d59 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Tue, 22 May 2018 11:37:24 -0400 Subject: [PATCH 181/385] i18n: [python] Automatic merge of Transifex translations --- lang/python/de/LC_MESSAGES/python.mo | Bin 1059 -> 1130 bytes lang/python/de/LC_MESSAGES/python.po | 4 ++-- lang/python/eo/LC_MESSAGES/python.mo | Bin 1161 -> 1168 bytes lang/python/eo/LC_MESSAGES/python.po | 2 +- lang/python/he/LC_MESSAGES/python.mo | Bin 1302 -> 1366 bytes lang/python/he/LC_MESSAGES/python.po | 2 ++ 6 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lang/python/de/LC_MESSAGES/python.mo b/lang/python/de/LC_MESSAGES/python.mo index 3b9a54b24b6d6527159e61c438226b8725a45eef..85b9b49f0ce6ab6cf16831f6e6b00c622115ea4e 100644 GIT binary patch delta 287 zcmZ3?@rtAVo)F7a1|Z-BVi_P#0b*VtUIWA+@BoMff%qX1ivaOwD9ynL5tjwhCO|QL zAgv9gQ-HJqke&dfMS=7|AUz+5uLH3FkYCQsz#tB!JAgD$K8|4lkO4Ay8;}NRJPo8Z zf%G3Btp%jjSQr>2fOH^`2AaXZ0mMu|3<4lWvjZ_Jhyw*cWnci*&cHVD=o8`4yxjcK zyb^`9%$!t(;>zNZ)ZER>7}b~<^(LQX4wH0AEJ@9T2&XC}mKJ9mUXqudny1GA0ED?I AegFUf delta 217 zcmaFGv6!R&o)F7a1|Z-7Vi_Qg0b*_-o&&@nZ~}-0f%qg4ivaO$DE$FQgTz@G85m4} zv^bE~2GTx2+5kvb0O|Qayb_27fP7D8pc)_@1*AoRbP8ez x)&kN$fHY7q13M720x^)wzy`!DKn!v$2rxk?28M}upKQL)sLaHuF!?ug7yxoA7K{J@ diff --git a/lang/python/de/LC_MESSAGES/python.po b/lang/python/de/LC_MESSAGES/python.po index 4dec5011e..ac9777c23 100644 --- a/lang/python/de/LC_MESSAGES/python.po +++ b/lang/python/de/LC_MESSAGES/python.po @@ -20,7 +20,7 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Dateisysteme aushängen." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." @@ -48,7 +48,7 @@ msgstr "Pakete installieren " msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Installiere ein Paket" -msgstr[1] "Installiere %(num)dPakete " +msgstr[1] "Installiere %(num)dPakete." #: src/modules/packages/main.py:69 #, python-format diff --git a/lang/python/eo/LC_MESSAGES/python.mo b/lang/python/eo/LC_MESSAGES/python.mo index ad2749b80d22215acbaf6ac75975537b74b81cfb..968d29e203c4e6b50831cad674a59b2d07178a16 100644 GIT binary patch delta 103 zcmeC=oWMCD#dQrM1H*M77Gq#wXklhx5C_t;fwUBm-VCG#f%G{bZ33hp0BKzyEy}{c pU<9O{fwUx$F59^BG^3z*X;F!SV_tTKLO@1-YF=i=<~k;BCIC^e6Ab_W delta 96 zcmbQh*~vK}#dRqo1H*M77Gq#wsAXng5C_szfV32lUIU~Bf%I`8Z33ik0%=_!&BwyP iU<9OXfV3o#&fmE5G$U6@QDRDIc4A&h{^nLDZYBWA7!b$+ diff --git a/lang/python/eo/LC_MESSAGES/python.po b/lang/python/eo/LC_MESSAGES/python.po index b93015618..b0622a9aa 100644 --- a/lang/python/eo/LC_MESSAGES/python.po +++ b/lang/python/eo/LC_MESSAGES/python.po @@ -10,7 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-05-16 11:40-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: tradukanto , 2018\n" +"Last-Translator: Kurt Ankh Phoenix , 2018\n" "Language-Team: Esperanto (https://www.transifex.com/calamares/teams/20061/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/lang/python/he/LC_MESSAGES/python.mo b/lang/python/he/LC_MESSAGES/python.mo index fa1a277e8e95e59d62d24370983c6c09b1761a30..ca254403fb4b52bd33e9a5bba8c1a8faf6fdf050 100644 GIT binary patch delta 40 scmbQnb&YF6i)aG_1A_qz1A{h@-Uy^Cfb`vsGk-BpE@D|S`8$g|0LdE*Gynhq delta 36 ocmcb{HH~XRi)cIp1A_qz1A{h@o&cmHf%Kk@Gk-Bp-onxh0G1*NCIA2c diff --git a/lang/python/he/LC_MESSAGES/python.po b/lang/python/he/LC_MESSAGES/python.po index c98599da2..43a0b9ae2 100644 --- a/lang/python/he/LC_MESSAGES/python.po +++ b/lang/python/he/LC_MESSAGES/python.po @@ -50,6 +50,7 @@ msgid_plural "Installing %(num)d packages." msgstr[0] "מתקין חבילה אחת." msgstr[1] "מתקין %(num)d חבילות." msgstr[2] "מתקין %(num)d חבילות." +msgstr[3] "מתקין %(num)d חבילות." #: src/modules/packages/main.py:69 #, python-format @@ -58,3 +59,4 @@ msgid_plural "Removing %(num)d packages." msgstr[0] "מסיר חבילה אחת." msgstr[1] "מסיר %(num)d חבילות." msgstr[2] "מסיר %(num)d חבילות." +msgstr[3] "מסיר %(num)d חבילות." From 6aa5be192b04edbaab45ef494db4f5ef5fb9fa6f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 22 May 2018 11:43:14 -0400 Subject: [PATCH 182/385] [netinstall] Drop unused includes --- src/modules/netinstall/NetInstallPage.cpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/modules/netinstall/NetInstallPage.cpp b/src/modules/netinstall/NetInstallPage.cpp index 37c489135..5272d83fd 100644 --- a/src/modules/netinstall/NetInstallPage.cpp +++ b/src/modules/netinstall/NetInstallPage.cpp @@ -30,19 +30,11 @@ #include "utils/Retranslator.h" #include "utils/YamlUtils.h" -#include -#include -#include - #include #include #include #include -#include -#include -#include -#include #include From 3a59574128fb37f58a836f572264d9a27930cb88 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 22 May 2018 11:45:39 -0400 Subject: [PATCH 183/385] [users] Factor out command-line to useradd - This is prep-work for #964, which was caused by #955 - Original assumption was that distro's would have a working useradd configuration; @abucodonosor already pointed out that this was probably not the case, but I ignored that. --- src/modules/users/CreateUserJob.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index d4d299e39..96b14c365 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -146,13 +146,12 @@ CreateUserJob::exec() } } - int ec = CalamaresUtils::System::instance()-> - targetEnvCall( { "useradd", - "-m", - "-U", - "-c", - m_fullName, - m_userName } ); + QStringList useradd{ "useradd", "-m", "-U" }; + // TODO: shell-settings + useradd << "-c" << m_fullName; + useradd << m_userName; + + int ec = CalamaresUtils::System::instance()->targetEnvCall( useradd ); if ( ec ) return Calamares::JobResult::error( tr( "Cannot create user %1." ) .arg( m_userName ), From ed15edabf9be0b1a68c9521068c31ebfc8578322 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 23 May 2018 03:30:51 -0400 Subject: [PATCH 184/385] [users] Document passwordRequirements and code --- src/modules/users/UsersPage.h | 6 ++++++ src/modules/users/users.conf | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 5990d8693..817f73d0b 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -52,6 +52,12 @@ public: void setAutologinDefault( bool checked ); void setReusePasswordDefault( bool checked ); + /** @brief Process entries in the passwordRequirements config entry + * + * Called once for each item in the config entry, which should + * be a key-value pair. What makes sense as a value depends on + * the key. Supported keys are documented in users.conf. + */ void addPasswordCheck( const QString& key, const QVariant& value ); protected slots: diff --git a/src/modules/users/users.conf b/src/modules/users/users.conf index 6111a6e80..be0221c8b 100644 --- a/src/modules/users/users.conf +++ b/src/modules/users/users.conf @@ -72,5 +72,5 @@ passwordRequirements: minLength: -1 # Password at least this many characters maxLength: -1 # Password at most this many characters libpwquality: - - minlen=8 - - minclass=2 + - minlen=0 + - minclass=0 From 0d24c1db6ce843392e5dab672bb0a0b4d3bc7b64 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 23 May 2018 05:23:46 -0400 Subject: [PATCH 185/385] [users] Introduce userShell setting - Add a *userShell* key, which can be left out (default, backwards- compatible) to retain the old /bin/bash behavior, or explicitly set to empty to defer to useradd-configuration, or explicitly set to something non-empty to use that shell. --- src/modules/users/CreateUserJob.cpp | 4 +++- src/modules/users/UsersViewStep.cpp | 11 ++++++++++- src/modules/users/users.conf | 9 +++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 96b14c365..7d4ded545 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -147,7 +147,9 @@ CreateUserJob::exec() } QStringList useradd{ "useradd", "-m", "-U" }; - // TODO: shell-settings + QString shell = gs->value( "userShell" ).toString(); + if ( !shell.isEmpty() ) + useradd << "-s" << shell; useradd << "-c" << m_fullName; useradd << m_userName; diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 015d7e997..37d86819e 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -22,9 +22,11 @@ #include "UsersPage.h" +#include "utils/CalamaresUtils.h" #include "utils/Logger.h" -#include "JobQueue.h" + #include "GlobalStorage.h" +#include "JobQueue.h" CALAMARES_PLUGIN_FACTORY_DEFINITION( UsersViewStepFactory, registerPlugin(); ) @@ -181,5 +183,12 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) m_widget->addPasswordCheck( i.key(), i.value() ); } } + + QString shell( QLatin1Literal( "/bin/bash" ) ); // as if it's not set at all + if ( configurationMap.contains( "userShell" ) ) + shell = CalamaresUtils::getString( configurationMap, "userShell" ); + // Now it might be explicitly set to empty, which is ok + + Calamares::JobQueue::instance()->globalStorage()->insert( "userShell", shell ); } diff --git a/src/modules/users/users.conf b/src/modules/users/users.conf index be0221c8b..0c40faeff 100644 --- a/src/modules/users/users.conf +++ b/src/modules/users/users.conf @@ -74,3 +74,12 @@ passwordRequirements: libpwquality: - minlen=0 - minclass=0 + +# Shell to be used for the regular user of the target system. +# There are three possible kinds of settings: +# - unset (i.e. commented out, the default), act as if set to /bin/bash +# - empty (explicit), don't pass shell information to useradd at all +# and rely on a correct configuration file in /etc/default/useradd +# - set, non-empty, use that path as shell. No validation is done +# that the shell actually exists or is executable. +# userShell: /bin/bash From 01ff1efc5dc2b054db1c4bd5ccdc8f1bef269795 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 23 May 2018 07:03:59 -0400 Subject: [PATCH 186/385] [users] Improve explanation when useradd fails --- src/modules/users/CreateUserJob.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 7d4ded545..119028059 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -153,14 +154,14 @@ CreateUserJob::exec() useradd << "-c" << m_fullName; useradd << m_userName; - int ec = CalamaresUtils::System::instance()->targetEnvCall( useradd ); - if ( ec ) - return Calamares::JobResult::error( tr( "Cannot create user %1." ) - .arg( m_userName ), - tr( "useradd terminated with error code %1." ) - .arg( ec ) ); + auto pres = CalamaresUtils::System::instance()->targetEnvCommand( useradd ); + if ( pres.getExitCode() ) + { + cError() << "useradd failed" << pres.getExitCode(); + return pres.explainProcess( useradd, 10 /* bogus timeout */ ); + } - ec = CalamaresUtils::System::instance()-> + int ec = CalamaresUtils::System::instance()-> targetEnvCall( { "usermod", "-aG", defaultGroups, From dae84d3bb14658ade2c03e6374d3a0ce597e3ae8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 23 May 2018 08:11:49 -0400 Subject: [PATCH 187/385] [users] Improve explanation of other steps of adding a user --- src/modules/users/CreateUserJob.cpp | 40 ++++++++++++----------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 119028059..052af87c6 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -161,29 +161,23 @@ CreateUserJob::exec() return pres.explainProcess( useradd, 10 /* bogus timeout */ ); } - int ec = CalamaresUtils::System::instance()-> - targetEnvCall( { "usermod", - "-aG", - defaultGroups, - m_userName } ); - if ( ec ) - return Calamares::JobResult::error( tr( "Cannot add user %1 to groups: %2." ) - .arg( m_userName ) - .arg( defaultGroups ), - tr( "usermod terminated with error code %1." ) - .arg( ec ) ); - - ec = CalamaresUtils::System::instance()-> - targetEnvCall( { "chown", - "-R", - QString( "%1:%2" ).arg( m_userName ) - .arg( m_userName ), - QString( "/home/%1" ).arg( m_userName ) } ); - if ( ec ) - return Calamares::JobResult::error( tr( "Cannot set home directory ownership for user %1." ) - .arg( m_userName ), - tr( "chown terminated with error code %1." ) - .arg( ec ) ); + pres = CalamaresUtils::System::instance()->targetEnvCommand( + { "usermod", "-aG", defaultGroups, m_userName } ); + if ( pres.getExitCode() ) + { + cError() << "usermod failed" << pres.getExitCode(); + return pres.explainProcess( "usermod", 10 ); + } + + QString userGroup = QString( "%1:%2" ).arg( m_userName ).arg( m_userName ); + QString homeDir = QString( "/home/%1" ).arg( m_userName ); + pres = CalamaresUtils::System::instance()->targetEnvCommand( + { "chown", "-R", userGroup, homeDir } ); + if ( pres.getExitCode() ) + { + cError() << "chown failed" << pres.getExitCode(); + return pres.explainProcess( "chown", 10 ); + } return Calamares::JobResult::ok(); } From ac287a0ac5b1f6cdbf2706663082aa3b3f66661f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 23 May 2018 08:53:11 -0400 Subject: [PATCH 188/385] [libcalamares] Add a save() method to global storage - This is a quick way to dump GS to JSON, which is useful for the preservefiles module #928 - Also useful for, e.g., #466 --- src/libcalamares/GlobalStorage.cpp | 18 +++++++++++++++++- src/libcalamares/GlobalStorage.h | 11 ++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/libcalamares/GlobalStorage.cpp b/src/libcalamares/GlobalStorage.cpp index fd72697cf..4f98ea2eb 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,6 +22,9 @@ #include "utils/Logger.h" +#include +#include + #ifdef WITH_PYTHON #include "PythonHelper.h" @@ -94,6 +97,19 @@ GlobalStorage::debugDump() const } } +bool +GlobalStorage::save(const QString& filename) +{ + QFile f( filename ); + if ( !f.open( QFile::WriteOnly ) ) + return false; + + f.write( QJsonDocument::fromVariant( m ).toJson() ) ; + f.close(); + return true; +} + + } // namespace Calamares #ifdef WITH_PYTHON diff --git a/src/libcalamares/GlobalStorage.h b/src/libcalamares/GlobalStorage.h index dc79c55e8..72524ba4f 100644 --- a/src/libcalamares/GlobalStorage.h +++ b/src/libcalamares/GlobalStorage.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -58,7 +58,16 @@ public: int remove( const QString& key ); QVariant value( const QString& key ) const; + /// @brief dump keys and values to the debug log void debugDump() const; + /** @brief write as JSON to the given filename + * + * No tidying, sanitization, or censoring is done -- for instance, + * the user module sets a slightly-obscured password in global storage, + * and this JSON file will contain that password in-the-only-slightly- + * obscured form. + */ + bool save( const QString& filename ); signals: void changed(); From b7890d865f33f59e630c2e715509d2bd9482e481 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 23 May 2018 09:09:03 -0400 Subject: [PATCH 189/385] [preservefiles] Save GS, munge destination - using `from: config` now writes a JSON file - using @@ROOT@@ and @@USER@@ in dest does a sensible substitution. --- src/modules/preservefiles/PreserveFiles.cpp | 30 ++++++++++++++++---- src/modules/preservefiles/preservefiles.conf | 7 ++++- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/modules/preservefiles/PreserveFiles.cpp b/src/modules/preservefiles/PreserveFiles.cpp index 9ef473f27..6490f8303 100644 --- a/src/modules/preservefiles/PreserveFiles.cpp +++ b/src/modules/preservefiles/PreserveFiles.cpp @@ -54,6 +54,20 @@ QString targetPrefix() return QLatin1Literal( "/" ); } +QString atReplacements( QString s ) +{ + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + QString root( "/" ); + QString user; + + if ( gs && gs->contains( "rootMountPoint" ) ) + root = gs->value( "rootMountPoint" ).toString(); + if ( gs && gs->contains( "username" ) ) + user = gs->value( "username" ).toString(); + + return s.replace( "@@ROOT@@", root ).replace( "@@USER@@", user ); +} + PreserveFiles::PreserveFiles( QObject* parent ) : Calamares::CppJob( parent ) { @@ -82,13 +96,19 @@ Calamares::JobResult PreserveFiles::exec() for ( const auto it : m_items ) { QString source = it.source; + QString dest = prefix + atReplacements( it.dest ); + if ( it.type == ItemType::Log ) source = Logger::logFile(); if ( it.type == ItemType::Config ) - cDebug() << "Config-preserving is not implemented yet."; - - if ( source.isEmpty() ) - cWarning() << "Skipping unnamed source file for" << it.dest; + { + if ( Calamares::JobQueue::instance()->globalStorage()->save( dest ) ) + cWarning() << "Could not write config for" << dest; + else + ++count; + } + else if ( source.isEmpty() ) + cWarning() << "Skipping unnamed source file for" << dest; else { QFile sourcef( source ); @@ -98,7 +118,7 @@ Calamares::JobResult PreserveFiles::exec() continue; } - QFile destf( prefix + it.dest ); + QFile destf( dest ); if ( !destf.open( QFile::WriteOnly ) ) { sourcef.close(); diff --git a/src/modules/preservefiles/preservefiles.conf b/src/modules/preservefiles/preservefiles.conf index 4c33d93d9..ab9114d20 100644 --- a/src/modules/preservefiles/preservefiles.conf +++ b/src/modules/preservefiles/preservefiles.conf @@ -15,7 +15,12 @@ # - *src*, to refer to a path interpreted in the host system. Relative # paths are not recommended, and are interpreted relative to where # Calamares is being run. -# Only one of the two other keys may be set. +# Only one of the two other keys (either *from* or *src*) may be set. +# +# The target filename is modified as follows: +# - `@@ROOT@@` is replaced by the path to the target root (may be /) +# - `@@USER@@` is replaced by the username entered by on the user +# page (may be empty, for instance if no user page is enabled) # # Special values for the key *from* are: # - *log*, for the complete log file (up to the moment the preservefiles From b5d900c1c6da2b25c185ad16f98d56861c4921d5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 23 May 2018 09:25:57 -0400 Subject: [PATCH 190/385] [libcalamares] Allow a @@USER@@ replacement in commands - Following example in preservefiles module, allow @@USER@@ in commands (e.g. to do something specific in the home-dir of the new user). --- src/libcalamares/utils/CommandList.cpp | 31 +++++++++++++++------- src/libcalamares/utils/CommandList.h | 3 +++ src/modules/shellprocess/shellprocess.conf | 8 +++--- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/libcalamares/utils/CommandList.cpp b/src/libcalamares/utils/CommandList.cpp index 3b2935c55..8e332a066 100644 --- a/src/libcalamares/utils/CommandList.cpp +++ b/src/libcalamares/utils/CommandList.cpp @@ -98,9 +98,19 @@ CommandList::~CommandList() { } +static inline bool +findInCommands( const CommandList& l, const QString& needle ) +{ + for ( CommandList::const_iterator i = l.cbegin(); i != l.cend(); ++i ) + if ( i->command().contains( needle ) ) + return true; + return false; +} + Calamares::JobResult CommandList::run() { QLatin1Literal rootMagic( "@@ROOT@@" ); + QLatin1Literal userMagic( "@@USER@@" ); System::RunLocation location = m_doChroot ? System::RunLocation::RunInTarget : System::RunLocation::RunInHost; @@ -108,14 +118,7 @@ Calamares::JobResult CommandList::run() QString root = QStringLiteral( "/" ); Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); - bool needsRootSubstitution = false; - for ( CommandList::const_iterator i = cbegin(); i != cend(); ++i ) - if ( i->command().contains( rootMagic ) ) - { - needsRootSubstitution = true; - break; - } - + bool needsRootSubstitution = findInCommands( *this, rootMagic ); if ( needsRootSubstitution && ( location == System::RunLocation::RunInHost ) ) { if ( !gs || !gs->contains( "rootMountPoint" ) ) @@ -127,10 +130,20 @@ Calamares::JobResult CommandList::run() root = gs->value( "rootMountPoint" ).toString(); } + bool needsUserSubstitution = findInCommands( *this, userMagic ); + if ( needsUserSubstitution && ( !gs || !gs->contains( "username" ) ) ) + { + cError() << "No username defined."; + return Calamares::JobResult::error( + QCoreApplication::translate( "CommandList", "Could not run command." ), + QCoreApplication::translate( "CommandList", "The command needs to know the user's name, but no username is defined." ) ); + } + QString user = gs->value( "username" ).toString(); // may be blank if unset + for ( CommandList::const_iterator i = cbegin(); i != cend(); ++i ) { QString processed_cmd = i->command(); - processed_cmd.replace( rootMagic, root ); + processed_cmd.replace( rootMagic, root ).replace( userMagic, user ); bool suppress_result = false; if ( processed_cmd.startsWith( '-' ) ) { diff --git a/src/libcalamares/utils/CommandList.h b/src/libcalamares/utils/CommandList.h index b766259c0..9faf705f2 100644 --- a/src/libcalamares/utils/CommandList.h +++ b/src/libcalamares/utils/CommandList.h @@ -74,6 +74,9 @@ using CommandList_t = QList< CommandLine >; * A list of commands; the list may have its own default timeout * for commands (which is then applied to each individual command * that doesn't have one of its own). + * + * Documentation for the format of commands can be found in + * `shellprocess.conf`. */ class CommandList : protected CommandList_t { diff --git a/src/modules/shellprocess/shellprocess.conf b/src/modules/shellprocess/shellprocess.conf index ff53dc228..4734aaadd 100644 --- a/src/modules/shellprocess/shellprocess.conf +++ b/src/modules/shellprocess/shellprocess.conf @@ -4,9 +4,11 @@ # If the top-level key *dontChroot* is true, then the commands # are executed in the context of the live system, otherwise # in the context of the target system. In all of the commands, -# `@@ROOT@@` is replaced by the root mount point of the **target** -# system from the point of view of the command (for chrooted -# commands, that will be */*). +# the following substitutions will take place: +# - `@@ROOT@@` is replaced by the root mount point of the **target** +# system from the point of view of the command (for chrooted +# commands, that will be */*). +# - `@@USER@@` is replaced by the username, set on the user page. # # The (global) timeout for the command list can be set with # the *timeout* key. The value is a time in seconds, default From 8b00a03423b2c5fb6290e4aa7fefb5088d14d3e7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 16 May 2018 11:36:59 -0400 Subject: [PATCH 191/385] [shellprocess] Test command-substitution --- src/modules/shellprocess/Tests.cpp | 13 +++++++++++++ src/modules/shellprocess/Tests.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/src/modules/shellprocess/Tests.cpp b/src/modules/shellprocess/Tests.cpp index c6643325f..ebfb8046b 100644 --- a/src/modules/shellprocess/Tests.cpp +++ b/src/modules/shellprocess/Tests.cpp @@ -149,3 +149,16 @@ script: QCOMPARE( cl.at(0).command(), QStringLiteral( "ls /tmp" ) ); QCOMPARE( cl.at(1).timeout(), -1 ); // not set } + +void ShellProcessTests::testRootSubstitution() +{ + YAML::Node doc = YAML::Load( R"(--- +script: + - "ls /tmp" +)" ); + QVariant script = CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ); + + // Doesn't use @@ROOT@@, so no failures + QVERIFY( bool(CommandList(script, true, 10 ).run()) ); + QVERIFY( bool(CommandList(script, false, 10 ).run()) ); +} diff --git a/src/modules/shellprocess/Tests.h b/src/modules/shellprocess/Tests.h index af1f78487..5b4ebebbb 100644 --- a/src/modules/shellprocess/Tests.h +++ b/src/modules/shellprocess/Tests.h @@ -40,6 +40,8 @@ private Q_SLOTS: void testProcessFromObject(); // Create from a complex YAML list void testProcessListFromObject(); + // Check @@ROOT@@ substitution + void testRootSubstitution(); }; #endif From 87b9c421588889b12defbae7da0c8cac597d9a82 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 23 May 2018 09:53:03 -0400 Subject: [PATCH 192/385] [shellprocess] Don't crash test - May need to create a JobQueue before doing anything internal - May need to create global settings - Chroot always needs rootMountPath internally --- src/modules/shellprocess/Tests.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/modules/shellprocess/Tests.cpp b/src/modules/shellprocess/Tests.cpp index ebfb8046b..55c5a9560 100644 --- a/src/modules/shellprocess/Tests.cpp +++ b/src/modules/shellprocess/Tests.cpp @@ -18,7 +18,11 @@ #include "Tests.h" +#include "JobQueue.h" +#include "Settings.h" + #include "utils/CommandList.h" +#include "utils/Logger.h" #include "utils/YamlUtils.h" #include @@ -158,7 +162,17 @@ script: )" ); QVariant script = CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ); + if ( !Calamares::JobQueue::instance() ) + (void *)new Calamares::JobQueue( nullptr ); + if ( !Calamares::Settings::instance() ) + (void *)new Calamares::Settings( QString(), true ); + + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + QVERIFY( gs != nullptr ); + // Doesn't use @@ROOT@@, so no failures - QVERIFY( bool(CommandList(script, true, 10 ).run()) ); QVERIFY( bool(CommandList(script, false, 10 ).run()) ); + + // Doesn't use @@ROOT@@, but does chroot, so fails + QVERIFY( !bool(CommandList(script, true, 10 ).run()) ); } From d3e57e9c9f3eb0464575365fc3cd6b9696a72662 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 23 May 2018 13:49:23 -0400 Subject: [PATCH 193/385] [shellprocess] Expand tests These tests run (shell) commands as part of the test; this may be a security problem, although I've tried to do things safely. --- src/modules/shellprocess/Tests.cpp | 41 +++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/src/modules/shellprocess/Tests.cpp b/src/modules/shellprocess/Tests.cpp index 55c5a9560..7ebb8e624 100644 --- a/src/modules/shellprocess/Tests.cpp +++ b/src/modules/shellprocess/Tests.cpp @@ -18,6 +18,7 @@ #include "Tests.h" +#include "GlobalStorage.h" #include "JobQueue.h" #include "Settings.h" @@ -160,7 +161,19 @@ void ShellProcessTests::testRootSubstitution() script: - "ls /tmp" )" ); - QVariant script = CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ); + QVariant plainScript = CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ); + QVariant rootScript = CalamaresUtils::yamlMapToVariant( + YAML::Load( R"(--- +script: + - "ls @@ROOT@@" +)" ) ).toMap().value( "script" ); + QVariant userScript = CalamaresUtils::yamlMapToVariant( + YAML::Load( R"(--- +script: + - mktemp -d @@ROOT@@/calatestXXXXXXXX + - "chown @@USER@@ @@ROOT@@/calatest*" + - rm -rf @@ROOT@@/calatest* +)" ) ).toMap().value( "script" ); if ( !Calamares::JobQueue::instance() ) (void *)new Calamares::JobQueue( nullptr ); @@ -170,9 +183,31 @@ script: Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); QVERIFY( gs != nullptr ); + qDebug() << "Expect WARNING, ERROR, WARNING"; // Doesn't use @@ROOT@@, so no failures - QVERIFY( bool(CommandList(script, false, 10 ).run()) ); + QVERIFY( bool(CommandList(plainScript, false, 10 ).run()) ); // Doesn't use @@ROOT@@, but does chroot, so fails - QVERIFY( !bool(CommandList(script, true, 10 ).run()) ); + QVERIFY( !bool(CommandList(plainScript, true, 10 ).run()) ); + + // Does use @@ROOT@@, which is not set, so fails + QVERIFY( !bool(CommandList(rootScript, false, 10 ).run()) ); + // .. fails for two reasons + QVERIFY( !bool(CommandList(rootScript, true, 10 ).run()) ); + + gs->insert( "rootMountPoint", "/tmp" ); + // Now that the root is set, two variants work .. still can't + // chroot, unless the rootMountPoint contains a full system, + // *and* we're allowed to chroot (ie. running tests as root). + qDebug() << "Expect no output."; + QVERIFY( bool(CommandList(plainScript, false, 10 ).run()) ); + QVERIFY( bool(CommandList(rootScript, false, 10 ).run()) ); + + qDebug() << "Expect ERROR"; + // But no user set yet + QVERIFY( !bool(CommandList(userScript, false, 10 ).run()) ); + + // Now play dangerous games with shell expansion + gs->insert( "username", "`id -u`" ); + QVERIFY( bool(CommandList(userScript, false, 10 ).run()) ); } From 45b95e1b65c403d37a4f03113d2de31c6b38decf Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 26 Feb 2018 13:54:08 +0100 Subject: [PATCH 194/385] PythonQt: default to enabled - This just causes it to be enabled and used when present by default, rather than disabled by default (even when present). --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 113a491a1..0a9b26aee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -141,7 +141,7 @@ endif() option( INSTALL_CONFIG "Install configuration files" ON ) option( WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON ) -option( WITH_PYTHONQT "Enable next generation Python modules API (experimental, requires PythonQt)." OFF ) +option( WITH_PYTHONQT "Enable next generation Python modules API (experimental, requires PythonQt)." ON ) option( WITH_KF5Crash "Enable crash reporting with KCrash." ON ) option( BUILD_TESTING "Build the testing tree." ON ) From f26ac63c078f1f18eff486fd2a96c7252961541b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 26 Feb 2018 14:22:24 +0100 Subject: [PATCH 195/385] [libcalamaresui] Make Python code const - This is always loaded into the Python context, so it may as well be done only once. --- src/libcalamaresui/modulesystem/PythonQtViewModule.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp index e2b497f2e..486d9a8e2 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp @@ -143,12 +143,12 @@ PythonQtViewModule::loadSelf() return; } - QString calamares_module_annotation = + static const QLatin1Literal calamares_module_annotation( "_calamares_module_typename = ''\n" "def calamares_module(viewmodule_type):\n" " global _calamares_module_typename\n" " _calamares_module_typename = viewmodule_type.__name__\n" - " return viewmodule_type\n"; + " return viewmodule_type\n"); // Load in the decorator PythonQt::self()->evalScript( cxt, calamares_module_annotation ); From 261c545476a4fa4a1b18524929dc0ec22a355bf1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 26 Feb 2018 15:04:20 +0100 Subject: [PATCH 196/385] [libcalamaresui] Refactor loading of YAML to QVariantMap --- src/libcalamares/utils/YamlUtils.cpp | 46 +++++++++++++++++++++++++++- src/libcalamares/utils/YamlUtils.h | 12 +++++++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/src/libcalamares/utils/YamlUtils.cpp b/src/libcalamares/utils/YamlUtils.cpp index 962cbd1da..3bc9c36d2 100644 --- a/src/libcalamares/utils/YamlUtils.cpp +++ b/src/libcalamares/utils/YamlUtils.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,6 +23,8 @@ #include #include +#include +#include #include void @@ -146,4 +148,46 @@ explainYamlException( const YAML::Exception& e, const QByteArray& yamlData, cons } } +QVariantMap +loadYaml(const QFileInfo& fi, bool* ok) +{ + return loadYaml( fi.absoluteFilePath(), ok ); +} + +QVariantMap +loadYaml(const QString& filename, bool* ok) +{ + if ( ok ) + *ok = false; + + QFile descriptorFile( filename ); + QVariant moduleDescriptor; + if ( descriptorFile.exists() && descriptorFile.open( QFile::ReadOnly | QFile::Text ) ) + { + QByteArray ba = descriptorFile.readAll(); + try + { + YAML::Node doc = YAML::Load( ba.constData() ); + moduleDescriptor = CalamaresUtils::yamlToVariant( doc ); + } + catch ( YAML::Exception& e ) + { + explainYamlException( e, ba, filename.toLatin1().constData() ); + return QVariantMap(); + } + } + + + if ( moduleDescriptor.isValid() && + !moduleDescriptor.isNull() && + moduleDescriptor.type() == QVariant::Map ) + { + if ( ok ) + *ok = true; + return moduleDescriptor.toMap(); + } + + return QVariantMap(); +} + } // namespace diff --git a/src/libcalamares/utils/YamlUtils.h b/src/libcalamares/utils/YamlUtils.h index 33ee8dca0..ad8de7d57 100644 --- a/src/libcalamares/utils/YamlUtils.h +++ b/src/libcalamares/utils/YamlUtils.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,6 +24,7 @@ #include class QByteArray; +class QFileInfo; namespace YAML { @@ -35,6 +36,15 @@ void operator>>( const YAML::Node& node, QStringList& v ); namespace CalamaresUtils { +/** + * Loads a given @p filename and returns the YAML data + * as a QVariantMap. If filename doesn't exist, or is + * malformed in some way, returns an empty map and sets + * @p *ok to false. Otherwise sets @p *ok to true. + */ +QVariantMap loadYaml( const QString& filename, bool* ok = nullptr ); +/** Convenience overload. */ +QVariantMap loadYaml( const QFileInfo&, bool* ok = nullptr ); QVariant yamlToVariant( const YAML::Node& node ); QVariant yamlScalarToVariant( const YAML::Node& scalarNode ); From e5ca8e091f8ce36ac0b6d1753fc9fac753480258 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 26 Feb 2018 15:06:13 +0100 Subject: [PATCH 197/385] [libcalamaresui] Use refactored loadYaml --- .../modulesystem/ModuleManager.cpp | 39 ++++--------------- 1 file changed, 8 insertions(+), 31 deletions(-) diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index cbee61129..83273e924 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -103,39 +103,16 @@ ModuleManager::doInit() continue; } - QFile descriptorFile( descriptorFileInfo.absoluteFilePath() ); - QVariant moduleDescriptor; - if ( descriptorFile.exists() && descriptorFile.open( QFile::ReadOnly | QFile::Text ) ) - { - QByteArray ba = descriptorFile.readAll(); - try - { - YAML::Node doc = YAML::Load( ba.constData() ); - - moduleDescriptor = CalamaresUtils::yamlToVariant( doc ); - } - catch ( YAML::Exception& e ) - { - cWarning() << "YAML parser error " << e.what(); - continue; - } - } - + bool ok = false; + QVariantMap moduleDescriptorMap = CalamaresUtils::loadYaml( descriptorFileInfo, &ok ); + QString moduleName = ok ? moduleDescriptorMap.value( "name" ).toString() : QString(); - if ( moduleDescriptor.isValid() && - !moduleDescriptor.isNull() && - moduleDescriptor.type() == QVariant::Map ) + if ( ok && ( moduleName == currentDir.dirName() ) && + !m_availableDescriptorsByModuleName.contains( moduleName ) ) { - QVariantMap moduleDescriptorMap = moduleDescriptor.toMap(); - - if ( moduleDescriptorMap.value( "name" ) == currentDir.dirName() && - !m_availableDescriptorsByModuleName.contains( moduleDescriptorMap.value( "name" ).toString() ) ) - { - m_availableDescriptorsByModuleName.insert( moduleDescriptorMap.value( "name" ).toString(), - moduleDescriptorMap ); - m_moduleDirectoriesByModuleName.insert( moduleDescriptorMap.value( "name" ).toString(), - descriptorFileInfo.absoluteDir().absolutePath() ); - } + m_availableDescriptorsByModuleName.insert( moduleName, moduleDescriptorMap ); + m_moduleDirectoriesByModuleName.insert( moduleName, + descriptorFileInfo.absoluteDir().absolutePath() ); } } else From fdda0e14aa04451f30a0f85ff5bc1b5642987ef2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 26 Feb 2018 20:07:06 +0100 Subject: [PATCH 198/385] [libcalamaresui] Improve explainYamlException - overloads for common kinds of label - improve error reporting when reading settings and branding files --- src/libcalamares/Settings.cpp | 4 ++-- src/libcalamares/utils/YamlUtils.cpp | 15 ++++++++++++++- src/libcalamares/utils/YamlUtils.h | 2 ++ src/libcalamaresui/Branding.cpp | 4 ++-- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/libcalamares/Settings.cpp b/src/libcalamares/Settings.cpp index 06178c621..732afa8d8 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -156,12 +156,12 @@ Settings::Settings( const QString& settingsFilePath, } catch ( YAML::Exception& e ) { - cWarning() << "YAML parser error " << e.what() << "in" << file.fileName(); + CalamaresUtils::explainYamlException( e, ba, file.fileName() ); } } else { - cWarning() << "Cannot read " << file.fileName(); + cWarning() << "Cannot read settings file" << file.fileName(); } s_instance = this; diff --git a/src/libcalamares/utils/YamlUtils.cpp b/src/libcalamares/utils/YamlUtils.cpp index 3bc9c36d2..474ced2a1 100644 --- a/src/libcalamares/utils/YamlUtils.cpp +++ b/src/libcalamares/utils/YamlUtils.cpp @@ -114,6 +114,19 @@ void explainYamlException( const YAML::Exception& e, const QByteArray& yamlData, const char *label ) { cWarning() << "YAML error " << e.what() << "in" << label << '.'; + explainYamlException( e, yamlData ); +} + +void +explainYamlException( const YAML::Exception& e, const QByteArray& yamlData, const QString& label ) +{ + cWarning() << "YAML error " << e.what() << "in" << label << '.'; + explainYamlException( e, yamlData ); +} + +void +explainYamlException( const YAML::Exception& e, const QByteArray& yamlData ) +{ if ( ( e.mark.line >= 0 ) && ( e.mark.column >= 0 ) ) { // Try to show the line where it happened. @@ -172,7 +185,7 @@ loadYaml(const QString& filename, bool* ok) } catch ( YAML::Exception& e ) { - explainYamlException( e, ba, filename.toLatin1().constData() ); + explainYamlException( e, ba, filename ); return QVariantMap(); } } diff --git a/src/libcalamares/utils/YamlUtils.h b/src/libcalamares/utils/YamlUtils.h index ad8de7d57..268c0bdc7 100644 --- a/src/libcalamares/utils/YamlUtils.h +++ b/src/libcalamares/utils/YamlUtils.h @@ -57,6 +57,8 @@ QVariant yamlMapToVariant( const YAML::Node& mapNode ); * Uses @p label when labeling the data source (e.g. "netinstall data") */ void explainYamlException( const YAML::Exception& e, const QByteArray& data, const char *label ); +void explainYamlException( const YAML::Exception& e, const QByteArray& data, const QString& label ); +void explainYamlException( const YAML::Exception& e, const QByteArray& data ); } //ns diff --git a/src/libcalamaresui/Branding.cpp b/src/libcalamaresui/Branding.cpp index 584d85c0b..c71b1daa5 100644 --- a/src/libcalamaresui/Branding.cpp +++ b/src/libcalamaresui/Branding.cpp @@ -179,7 +179,7 @@ Branding::Branding( const QString& brandingFilePath, } catch ( YAML::Exception& e ) { - cWarning() << "YAML parser error " << e.what() << "in" << file.fileName(); + CalamaresUtils::explainYamlException( e, ba, file.fileName() ); } QDir translationsDir( componentDir.filePath( "lang" ) ); @@ -192,7 +192,7 @@ Branding::Branding( const QString& brandingFilePath, } else { - cWarning() << "Cannot read " << file.fileName(); + cWarning() << "Cannot read branding file" << file.fileName(); } s_instance = this; From 308f508c7ef2c4cdc3849f614c942b485c97eb17 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 26 Feb 2018 14:29:26 +0100 Subject: [PATCH 199/385] [calamares] Add a test-application. This test-application should load a single module and execute it -- that can be used to quickly test configurations, loading, etc. This is preparation for loading all sorts of Python modules by PythonQt. The loader does some internals initialization and gets the module, but doesn't actually run it yet. --- src/calamares/CMakeLists.txt | 6 ++ src/calamares/testmain.cpp | 153 +++++++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 src/calamares/testmain.cpp diff --git a/src/calamares/CMakeLists.txt b/src/calamares/CMakeLists.txt index 270abbb88..e1f8e4236 100644 --- a/src/calamares/CMakeLists.txt +++ b/src/calamares/CMakeLists.txt @@ -68,3 +68,9 @@ install( FILES ${CMAKE_SOURCE_DIR}/data/images/squid.svg RENAME calamares.svg DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps ) + +if( BUILD_TESTING ) + add_executable( loadmodule testmain.cpp ) + target_link_libraries( loadmodule ${CALAMARES_LIBRARIES} Qt5::Core Qt5::Widgets calamaresui ) + # Don't install, it's just for enable_testing +endif() diff --git a/src/calamares/testmain.cpp b/src/calamares/testmain.cpp new file mode 100644 index 000000000..dfd6ed7eb --- /dev/null +++ b/src/calamares/testmain.cpp @@ -0,0 +1,153 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +/* + * This executable loads and runs a Calamares Python module + * within a C++ application, in order to test the different + * bindings. + */ + +#include "utils/Logger.h" +#include "utils/YamlUtils.h" +#include "modulesystem/Module.h" + +#include "Settings.h" + +#include +#include +#include +#include + +#include + +static QString +handle_args( QCoreApplication& a ) +{ + QCommandLineOption debugLevelOption( QStringLiteral("D"), + "Verbose output for debugging purposes (0-8).", "level" ); + + QCommandLineParser parser; + parser.setApplicationDescription( "Calamares module tester" ); + parser.addHelpOption(); + parser.addVersionOption(); + + parser.addOption( debugLevelOption ); + parser.addPositionalArgument( "module", "Path or name of module to run." ); + + parser.process( a ); + + if ( parser.isSet( debugLevelOption ) ) + { + bool ok = true; + int l = parser.value( debugLevelOption ).toInt( &ok ); + unsigned int dlevel = 0; + if ( !ok || ( l < 0 ) ) + dlevel = Logger::LOGVERBOSE; + else + dlevel = l; + Logger::setupLogLevel( dlevel ); + } + + const QStringList args = parser.positionalArguments(); + if ( args.isEmpty() ) + { + cError() << "Missing path.\n"; + parser.showHelp(); + return QString(); // NOTREACHED + } + if ( args.size() > 1 ) + { + cError() << "More than one path.\n"; + parser.showHelp(); + return QString(); // NOTREACHED + } + + return args.first(); +} + + +static Calamares::Module* +load_module( const QString& moduleName ) +{ + QFileInfo fi; + + bool ok = false; + QVariantMap descriptor; + + for ( const QString& prefix : QStringList{ "./", "src/modules/", "modules/" } ) + { + // Could be a complete path, eg. src/modules/dummycpp/module.desc + fi = QFileInfo( prefix + moduleName ); + if ( fi.exists() && fi.isFile() ) + descriptor = CalamaresUtils::loadYaml( fi, &ok ); + if ( ok ) + break; + + // Could be a path without module.desc + fi = QFileInfo( prefix + moduleName ); + if ( fi.exists() && fi.isDir() ) + { + fi = QFileInfo( prefix + moduleName + "/module.desc" ); + if ( fi.exists() && fi.isFile() ) + descriptor = CalamaresUtils::loadYaml( fi, &ok ); + if ( ok ) break; + } + } + + if ( !ok ) + { + cWarning() << "No suitable module descriptor found."; + return nullptr; + } + + QString name = descriptor.value( "name" ).toString(); + if ( name.isEmpty() ) + { + cWarning() << "No name found in module descriptor" << fi.absoluteFilePath(); + return nullptr; + } + + QString moduleDirectory = fi.absolutePath(); + QString configFile = moduleDirectory + '/' + name + ".conf"; + + Calamares::Module* module = Calamares::Module::fromDescriptor( + descriptor, name, configFile, moduleDirectory ); + + return module; +} + +int +main( int argc, char* argv[] ) +{ + QCoreApplication a( argc, argv ); + + QString module = handle_args( a ); + if ( module.isEmpty() ) + return 1; + + std::unique_ptr< Calamares::Settings > settings_p( new Calamares::Settings( QString(), true ) ); + cDebug() << "Calamares test module-loader" << module; + Calamares::Module* m = load_module( module ); + if ( !m ) + { + cError() << "No module.desc data found in" << module; + return 1; + } + + return 0; +} From 48771f968a68b0a54270bca6e08f1ffb2450397f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 27 Feb 2018 01:04:35 +0100 Subject: [PATCH 200/385] [calamares] Load and execute the modules This runs dummyprocess, at least, but the other three dummies coredump. --- src/calamares/testmain.cpp | 58 ++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/src/calamares/testmain.cpp b/src/calamares/testmain.cpp index dfd6ed7eb..1b5cb41f4 100644 --- a/src/calamares/testmain.cpp +++ b/src/calamares/testmain.cpp @@ -27,6 +27,7 @@ #include "modulesystem/Module.h" #include "Settings.h" +#include "Job.h" #include #include @@ -35,7 +36,16 @@ #include -static QString +struct ModuleConfig : public QPair< QString, QString > +{ + ModuleConfig( const QString& a, const QString& b ) : QPair< QString, QString >(a, b) { } + ModuleConfig() : QPair< QString, QString >( QString(), QString() ) { } + + QString moduleName() const { return first; } + QString configFile() const { return second; } +} ; + +static ModuleConfig handle_args( QCoreApplication& a ) { QCommandLineOption debugLevelOption( QStringLiteral("D"), @@ -68,22 +78,23 @@ handle_args( QCoreApplication& a ) { cError() << "Missing path.\n"; parser.showHelp(); - return QString(); // NOTREACHED + return ModuleConfig(); // NOTREACHED } - if ( args.size() > 1 ) + if ( args.size() > 2 ) { cError() << "More than one path.\n"; parser.showHelp(); - return QString(); // NOTREACHED + return ModuleConfig(); // NOTREACHED } - return args.first(); + return ModuleConfig( args.first(), args.size() == 2 ? args.at(1) : QString() ); } static Calamares::Module* -load_module( const QString& moduleName ) +load_module( const ModuleConfig& moduleConfig ) { + QString moduleName = moduleConfig.moduleName(); QFileInfo fi; bool ok = false; @@ -123,7 +134,10 @@ load_module( const QString& moduleName ) } QString moduleDirectory = fi.absolutePath(); - QString configFile = moduleDirectory + '/' + name + ".conf"; + QString configFile( + moduleConfig.configFile().isEmpty() + ? moduleDirectory + '/' + name + ".conf" + : moduleConfig.configFile() ); Calamares::Module* module = Calamares::Module::fromDescriptor( descriptor, name, configFile, moduleDirectory ); @@ -136,18 +150,40 @@ main( int argc, char* argv[] ) { QCoreApplication a( argc, argv ); - QString module = handle_args( a ); - if ( module.isEmpty() ) + ModuleConfig module = handle_args( a ); + if ( module.moduleName().isEmpty() ) return 1; std::unique_ptr< Calamares::Settings > settings_p( new Calamares::Settings( QString(), true ) ); - cDebug() << "Calamares test module-loader" << module; + cDebug() << "Calamares test module-loader" << module.moduleName(); Calamares::Module* m = load_module( module ); if ( !m ) { - cError() << "No module.desc data found in" << module; + cError() << "No module.desc data found in" << module.moduleName(); + return 1; + } + + if ( !m->isLoaded() ) + m->loadSelf(); + + if ( !m->isLoaded() ) + { + cError() << "Module" << module.moduleName() << "could not be loaded."; return 1; } + cDebug() << "Module" << m->name() << m->typeString() << m->interfaceString(); + + Calamares::JobList jobList = m->jobs(); + unsigned int count = 1; + for ( const auto& p : jobList ) + { + cDebug() << count << p->prettyName(); + Calamares::JobResult r = p->exec(); + if ( !r ) + cDebug() << count << ".. failed" << r; + ++count; + } + return 0; } From 182458ad5a0ae1819acfcf9fbc0ba06bda8c1dcd Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 27 Feb 2018 01:34:32 +0100 Subject: [PATCH 201/385] [calamares] Need a JobQueue and global storage before running any job. The 'singleton' instances don't do a very good job of being singletons or ensuring their own creation. --- src/calamares/testmain.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/calamares/testmain.cpp b/src/calamares/testmain.cpp index 1b5cb41f4..4dcbfea96 100644 --- a/src/calamares/testmain.cpp +++ b/src/calamares/testmain.cpp @@ -28,6 +28,7 @@ #include "Settings.h" #include "Job.h" +#include "JobQueue.h" #include #include @@ -155,6 +156,8 @@ main( int argc, char* argv[] ) return 1; std::unique_ptr< Calamares::Settings > settings_p( new Calamares::Settings( QString(), true ) ); + std::unique_ptr< Calamares::JobQueue > jobqueue_p( new Calamares::JobQueue( nullptr ) ); + cDebug() << "Calamares test module-loader" << module.moduleName(); Calamares::Module* m = load_module( module ); if ( !m ) From cdadc2f0036b40fc07188a3005b986102b51c44a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 1 Mar 2018 12:24:00 +0100 Subject: [PATCH 202/385] [libcalamares] Improve error logging during module loading --- src/calamares/testmain.cpp | 2 +- src/libcalamaresui/modulesystem/Module.cpp | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/calamares/testmain.cpp b/src/calamares/testmain.cpp index 4dcbfea96..c22342f9a 100644 --- a/src/calamares/testmain.cpp +++ b/src/calamares/testmain.cpp @@ -162,7 +162,7 @@ main( int argc, char* argv[] ) Calamares::Module* m = load_module( module ); if ( !m ) { - cError() << "No module.desc data found in" << module.moduleName(); + cError() << "Could not load module" << module.moduleName(); return 1; } diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index f80f4d48b..05394e69f 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -86,7 +86,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, #ifdef WITH_PYTHONQT m = new PythonQtViewModule(); #else - cError() << "PythonQt modules are not supported in this version of Calamares."; + cError() << "PythonQt view modules are not supported in this version of Calamares."; #endif } else @@ -118,7 +118,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, if ( !m ) { - cDebug() << "Bad module type (" << typeString + cError() << "Bad module type (" << typeString << ") or interface string (" << intfString << ") for module " << instanceId; return nullptr; @@ -129,8 +129,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, m->m_directory = moduleDir.absolutePath(); else { - cError() << "Bad module directory" << moduleDirectory - << "for" << instanceId; + cError() << "Bad module directory" << moduleDirectory << "for" << instanceId; delete m; return nullptr; } @@ -144,7 +143,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, } catch ( YAML::Exception& e ) { - cWarning() << "YAML parser error " << e.what(); + cError() << "YAML parser error " << e.what(); delete m; return nullptr; } From ce3e09318a7fa343949dc232f7a8e05ae3024a88 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 24 May 2018 07:03:19 -0400 Subject: [PATCH 203/385] [preservefiles] Improve failure messages --- src/modules/preservefiles/PreserveFiles.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/modules/preservefiles/PreserveFiles.cpp b/src/modules/preservefiles/PreserveFiles.cpp index 6490f8303..29564fcd1 100644 --- a/src/modules/preservefiles/PreserveFiles.cpp +++ b/src/modules/preservefiles/PreserveFiles.cpp @@ -148,10 +148,15 @@ Calamares::JobResult PreserveFiles::exec() void PreserveFiles::setConfigurationMap(const QVariantMap& configurationMap) { auto files = configurationMap[ "files" ]; + if ( !files.isValid() ) + { + cDebug() << "No 'files' key for preservefiles."; + return; + } - if ( ! ( files.isValid() && ( files.type() == QVariant::List ) ) ) + if ( files.type() != QVariant::List ) { - cDebug() << "No files: configuration key, or not a list."; + cDebug() << "Configuration key 'files' is not a list for preservefiles."; return; } From fc8d961049be3de32a0391672eba8af535b24c0a Mon Sep 17 00:00:00 2001 From: Philip Date: Sat, 26 May 2018 09:49:27 +0200 Subject: [PATCH 204/385] [ci] fix link in HACKING.md --- ci/HACKING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/HACKING.md b/ci/HACKING.md index dfc768be9..ca3901f07 100644 --- a/ci/HACKING.md +++ b/ci/HACKING.md @@ -44,7 +44,7 @@ it's just a typo-fix which might not be copyrightable in all jurisdictions). Formatting C++ -------------- This formatting guide applies to C++ code only; for Python modules, we use -[pycodestyle][https://github.com/PyCQA/pycodestyle] to apply a check of +[pycodestyle](https://github.com/PyCQA/pycodestyle) to apply a check of some PEP8 guidelines. * Spaces, not tabs. From 41f70975ea8545aa79b3ad0663c698ecea7bd537 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 26 May 2018 12:27:55 +0200 Subject: [PATCH 205/385] i18n: add Byelorussian (new translation team) --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a9b26aee..4031e698a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -213,7 +213,7 @@ set( _tx_complete da pt_PT ro tr_TR zh_TW zh_CN pt_BR fr hr ca lt id cs_CZ ) set( _tx_good sq es pl ja sk it_IT hu ru he de nl bg uk ) set( _tx_ok ast is ar sv el es_MX gl en_GB th fi_FI hi eu sr nb sl sr@latin mr es_PR kk kn et ) -set( _tx_bad uz lo ur gu fr_CH fa eo ) +set( _tx_bad uz lo ur gu fr_CH fa be eo ) # check translation update set( prev_tx ${p_tx_complete} ${p_tx_good} ${p_tx_ok} ${p_tx_bad} ) From 50dea6ded3f19c8e3098698b8312981176b52b41 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 26 May 2018 07:06:46 -0400 Subject: [PATCH 206/385] [interactiveterminal] Make optional if requirements not met This is orthogonal to the SKIP_* mechanism already documented for avoiding modules. If the module is enabled, but its dependencies are not present, don't bother building the module. This follows e.g. plasmalnf as an "avoidably heavy dependency". Related to a misplaced comment in ISSUE #956 --- .../interactiveterminal/CMakeLists.txt | 51 ++++++++++--------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/src/modules/interactiveterminal/CMakeLists.txt b/src/modules/interactiveterminal/CMakeLists.txt index d419a22a7..5eff610d5 100644 --- a/src/modules/interactiveterminal/CMakeLists.txt +++ b/src/modules/interactiveterminal/CMakeLists.txt @@ -1,27 +1,32 @@ find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE) -include(KDEInstallDirs) -include(GenerateExportHeader) +set( kf5_ver 5.41 ) -find_package( KF5 REQUIRED Service Parts ) - -include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui - ${QTERMWIDGET_INCLUDE_DIR} ) - -set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} - ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules ) - - -calamares_add_plugin( interactiveterminal - TYPE viewmodule - EXPORT_MACRO PLUGINDLLEXPORT_PRO - SOURCES - InteractiveTerminalViewStep.cpp - InteractiveTerminalPage.cpp - LINK_PRIVATE_LIBRARIES - calamaresui - LINK_LIBRARIES - KF5::Service - KF5::Parts - SHARED_LIB +find_package( KF5Service ${kf5_ver} ) +find_package( KF5Parts ${kf5_ver} ) +set_package_properties( + KF5Service PROPERTIES + PURPOSE "For finding KDE services at runtime" +) +set_package_properties( + KF5Parts PROPERTIES + PURPOSE "For finding KDE parts at runtime" ) + +if ( KF5Parts_FOUND AND KF5Service_FOUND ) + calamares_add_plugin( interactiveterminal + TYPE viewmodule + EXPORT_MACRO PLUGINDLLEXPORT_PRO + SOURCES + InteractiveTerminalViewStep.cpp + InteractiveTerminalPage.cpp + LINK_PRIVATE_LIBRARIES + calamaresui + LINK_LIBRARIES + KF5::Service + KF5::Parts + SHARED_LIB + ) +else() + calamares_skip_module( "interactiveterminal (missing requirements)" ) +endif() From 96b1f1cfbc2c9759376add57971f1dbf5edac106 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Sat, 26 May 2018 07:24:35 -0400 Subject: [PATCH 207/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_be.ts | 2593 +++++++++++++++++++++++++++++++++++++++ lang/calamares_tr_TR.ts | 6 +- 2 files changed, 2596 insertions(+), 3 deletions(-) create mode 100644 lang/calamares_be.ts diff --git a/lang/calamares_be.ts b/lang/calamares_be.ts new file mode 100644 index 000000000..6b80bf3c5 --- /dev/null +++ b/lang/calamares_be.ts @@ -0,0 +1,2593 @@ + + + BootInfoWidget + + + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. + + + + + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. + + + + + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. + + + + + BootLoaderModel + + + Master Boot Record of %1 + + + + + Boot Partition + + + + + System Partition + + + + + Do not install a boot loader + + + + + %1 (%2) + + + + + Calamares::DebugWindow + + + Form + + + + + GlobalStorage + + + + + JobQueue + + + + + Modules + + + + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + + Debug information + + + + + Calamares::ExecutionViewStep + + + Install + + + + + Calamares::JobThread + + + Done + + + + + Calamares::ProcessJob + + + Run command %1 %2 + + + + + Running command %1 %2 + + + + + Calamares::PythonJob + + + Running %1 operation. + + + + + Bad working directory path + + + + + Working directory %1 for python job %2 is not readable. + + + + + Bad main script file + + + + + Main script file %1 for python job %2 is not readable. + + + + + Boost.Python error in job "%1". + + + + + Calamares::ViewManager + + + &Back + + + + + + &Next + + + + + + &Cancel + + + + + + Cancel installation without changing the system. + + + + + &Install + + + + + Cancel installation? + + + + + Do you really want to cancel the current install process? +The installer will quit and all changes will be lost. + + + + + &Yes + + + + + &No + + + + + &Close + + + + + Continue with setup? + + + + + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> + + + + + &Install now + + + + + Go &back + + + + + &Done + + + + + The installation is complete. Close the installer. + + + + + Error + + + + + Installation Failed + + + + + CalamaresPython::Helper + + + Unknown exception type + + + + + unparseable Python error + + + + + unparseable Python traceback + + + + + Unfetchable Python error. + + + + + CalamaresWindow + + + %1 Installer + + + + + Show debug information + + + + + CheckerWidget + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + + + + + For best results, please ensure that this computer: + + + + + System requirements + + + + + ChoicePage + + + Form + + + + + After: + + + + + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + + + + + Boot loader location: + + + + + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. + + + + + Select storage de&vice: + + + + + + + + Current: + + + + + Reuse %1 as home partition for %2. + + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> + + + + + <strong>Select a partition to install on</strong> + + + + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + ClearMountsJob + + + Clear mounts for partitioning operations on %1 + + + + + Clearing mounts for partitioning operations on %1. + + + + + Cleared all mounts for %1 + + + + + ClearTempMountsJob + + + Clear all temporary mounts. + + + + + Clearing all temporary mounts. + + + + + Cannot get list of temporary mounts. + + + + + Cleared all temporary mounts. + + + + + CommandList + + + Could not run command. + + + + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + + + ContextualProcessJob + + + Contextual Processes Job + + + + + CreatePartitionDialog + + + Create a Partition + + + + + MiB + + + + + Partition &Type: + + + + + &Primary + + + + + E&xtended + + + + + Fi&le System: + + + + + LVM LV name + + + + + Flags: + + + + + &Mount Point: + + + + + Si&ze: + + + + + En&crypt + + + + + Logical + + + + + Primary + + + + + GPT + + + + + Mountpoint already in use. Please select another one. + + + + + CreatePartitionJob + + + Create new %2MB partition on %4 (%3) with file system %1. + + + + + Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. + + + + + Creating new %1 partition on %2. + + + + + The installer failed to create partition on disk '%1'. + + + + + CreatePartitionTableDialog + + + Create Partition Table + + + + + Creating a new partition table will delete all existing data on the disk. + + + + + What kind of partition table do you want to create? + + + + + Master Boot Record (MBR) + + + + + GUID Partition Table (GPT) + + + + + CreatePartitionTableJob + + + Create new %1 partition table on %2. + + + + + Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). + + + + + Creating new %1 partition table on %2. + + + + + The installer failed to create a partition table on %1. + + + + + CreateUserJob + + + Create user %1 + + + + + Create user <strong>%1</strong>. + + + + + Creating user %1. + + + + + Sudoers dir is not writable. + + + + + Cannot create sudoers file for writing. + + + + + Cannot chmod sudoers file. + + + + + Cannot open groups file for reading. + + + + + Cannot create user %1. + + + + + useradd terminated with error code %1. + + + + + Cannot add user %1 to groups: %2. + + + + + usermod terminated with error code %1. + + + + + Cannot set home directory ownership for user %1. + + + + + chown terminated with error code %1. + + + + + DeletePartitionJob + + + Delete partition %1. + + + + + Delete partition <strong>%1</strong>. + + + + + Deleting partition %1. + + + + + The installer failed to delete partition %1. + + + + + DeviceInfoWidget + + + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. + + + + + This device has a <strong>%1</strong> partition table. + + + + + This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. + + + + + This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. + + + + + <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. + + + + + <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. + + + + + DeviceModel + + + %1 - %2 (%3) + + + + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + + + + + Failed to open %1 + + + + + DummyCppJob + + + Dummy C++ Job + + + + + EditExistingPartitionDialog + + + Edit Existing Partition + + + + + Content: + + + + + &Keep + + + + + Format + + + + + Warning: Formatting the partition will erase all existing data. + + + + + &Mount Point: + + + + + Si&ze: + + + + + MiB + + + + + Fi&le System: + + + + + Flags: + + + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + + + + + En&crypt system + + + + + Passphrase + + + + + Confirm passphrase + + + + + Please enter the same passphrase in both boxes. + + + + + FillGlobalStorageJob + + + Set partition information + + + + + Install %1 on <strong>new</strong> %2 system partition. + + + + + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. + + + + + Install %2 on %3 system partition <strong>%1</strong>. + + + + + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. + + + + + Install boot loader on <strong>%1</strong>. + + + + + Setting up mount points. + + + + + FinishedPage + + + Form + + + + + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> + + + + + &Restart now + + + + + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + + + + FinishedViewStep + + + Finish + + + + + Installation Complete + + + + + The installation of %1 is complete. + + + + + FormatPartitionJob + + + Format partition %1 (file system: %2, size: %3 MB) on %4. + + + + + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. + + + + + Formatting partition %1 with file system %2. + + + + + The installer failed to format partition %1 on disk '%2'. + + + + + InteractiveTerminalPage + + + Konsole not installed + + + + + Please install KDE Konsole and try again! + + + + + Executing script: &nbsp;<code>%1</code> + + + + + InteractiveTerminalViewStep + + + Script + + + + + KeyboardPage + + + Set keyboard model to %1.<br/> + + + + + Set keyboard layout to %1/%2. + + + + + KeyboardViewStep + + + Keyboard + + + + + LCLocaleDialog + + + System locale setting + + + + + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + + + &Cancel + + + + + &OK + + + + + LicensePage + + + Form + + + + + I accept the terms and conditions above. + + + + + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. + + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. + + + + + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. + + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. + + + + + <strong>%1 driver</strong><br/>by %2 + %1 is an untranslatable product name, example: Creative Audigy driver + + + + + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> + %1 is usually a vendor name, example: Nvidia graphics driver + + + + + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 package</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1</strong><br/><font color="Grey">by %2</font> + + + + + <a href="%1">view license agreement</a> + + + + + LicenseViewStep + + + License + + + + + LocalePage + + + The system language will be set to %1. + + + + + The numbers and dates locale will be set to %1. + + + + + Region: + + + + + Zone: + + + + + + &Change... + + + + + Set timezone to %1/%2.<br/> + + + + + %1 (%2) + Language (Country) + + + + + LocaleViewStep + + + Loading location data... + + + + + Location + + + + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + Network Installation. (Disabled: Received invalid groups data) + + + + + NetInstallViewStep + + + Package selection + + + + + PWQ + + + Password is too short + + + + + Password is too long + + + + + Password is too weak + + + + + Memory allocation error when setting '%1' + + + + + Memory allocation error + + + + + The password is the same as the old one + + + + + The password is a palindrome + + + + + The password differs with case changes only + + + + + The password is too similar to the old one + + + + + The password contains the user name in some form + + + + + The password contains words from the real name of the user in some form + + + + + The password contains forbidden words in some form + + + + + The password contains less than %1 digits + + + + + The password contains too few digits + + + + + The password contains less than %1 uppercase letters + + + + + The password contains too few uppercase letters + + + + + The password contains less than %1 lowercase letters + + + + + The password contains too few lowercase letters + + + + + The password contains less than %1 non-alphanumeric characters + + + + + The password contains too few non-alphanumeric characters + + + + + The password is shorter than %1 characters + + + + + The password is too short + + + + + The password is just rotated old one + + + + + The password contains less than %1 character classes + + + + + The password does not contain enough character classes + + + + + The password contains more than %1 same characters consecutively + + + + + The password contains too many same characters consecutively + + + + + The password contains more than %1 characters of the same class consecutively + + + + + The password contains too many characters of the same class consecutively + + + + + The password contains monotonic sequence longer than %1 characters + + + + + The password contains too long of a monotonic character sequence + + + + + No password supplied + + + + + Cannot obtain random numbers from the RNG device + + + + + Password generation failed - required entropy too low for settings + + + + + The password fails the dictionary check - %1 + + + + + The password fails the dictionary check + + + + + Unknown setting - %1 + + + + + Unknown setting + + + + + Bad integer value of setting - %1 + + + + + Bad integer value + + + + + Setting %1 is not of integer type + + + + + Setting is not of integer type + + + + + Setting %1 is not of string type + + + + + Setting is not of string type + + + + + Opening the configuration file failed + + + + + The configuration file is malformed + + + + + Fatal failure + + + + + Unknown error + + + + + Page_Keyboard + + + Form + + + + + Keyboard Model: + + + + + Type here to test your keyboard + + + + + Page_UserSetup + + + Form + + + + + What is your name? + + + + + What name do you want to use to log in? + + + + + + + font-weight: normal + + + + + <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> + + + + + Choose a password to keep your account safe. + + + + + <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> + + + + + What is the name of this computer? + + + + + <small>This name will be used if you make the computer visible to others on a network.</small> + + + + + Log in automatically without asking for the password. + + + + + Use the same password for the administrator account. + + + + + Choose a password for the administrator account. + + + + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + + + + PartitionLabelsView + + + Root + + + + + Home + + + + + Boot + + + + + EFI system + + + + + Swap + + + + + New partition for %1 + + + + + New partition + + + + + %1 %2 + + + + + PartitionModel + + + + Free Space + + + + + + New partition + + + + + Name + + + + + File System + + + + + Mount Point + + + + + Size + + + + + PartitionPage + + + Form + + + + + Storage de&vice: + + + + + &Revert All Changes + + + + + New Partition &Table + + + + + &Create + + + + + &Edit + + + + + &Delete + + + + + Install boot &loader on: + + + + + Are you sure you want to create a new partition table on %1? + + + + + Can not create new partition + + + + + 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. + + + + + PartitionViewStep + + + Gathering system information... + + + + + Partitions + + + + + Install %1 <strong>alongside</strong> another operating system. + + + + + <strong>Erase</strong> disk and install %1. + + + + + <strong>Replace</strong> a partition with %1. + + + + + <strong>Manual</strong> partitioning. + + + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). + + + + + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. + + + + + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. + + + + + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). + + + + + Disk <strong>%1</strong> (%2) + + + + + Current: + + + + + After: + + + + + No EFI system partition configured + + + + + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. + + + + + EFI system partition flag not set + + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + + + + PlasmaLnfJob + + + Plasma Look-and-Feel Job + + + + + + Could not select KDE Plasma Look-and-Feel package + + + + + PlasmaLnfPage + + + Form + + + + + Placeholder + + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + PlasmaLnfViewStep + + + Look-and-Feel + + + + + ProcessResult + + + +There was no output from the command. + + + + + +Output: + + + + + + External command crashed. + + + + + Command <i>%1</i> crashed. + + + + + External command failed to start. + + + + + Command <i>%1</i> failed to start. + + + + + Internal error when starting command. + + + + + Bad parameters for process job call. + + + + + External command failed to finish. + + + + + Command <i>%1</i> failed to finish in %2 seconds. + + + + + External command finished with errors. + + + + + Command <i>%1</i> finished with exit code %2. + + + + + QObject + + + Default Keyboard Model + + + + + + Default + + + + + unknown + + + + + extended + + + + + unformatted + + + + + swap + + + + + Unpartitioned space or unknown partition table + + + + + ReplaceWidget + + + Form + + + + + Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. + + + + + The selected item does not appear to be a valid partition. + + + + + %1 cannot be installed on empty space. Please select an existing partition. + + + + + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. + + + + + %1 cannot be installed on this partition. + + + + + Data partition (%1) + + + + + Unknown system partition (%1) + + + + + %1 system partition (%2) + + + + + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. + + + + + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + RequirementsChecker + + + Gathering system information... + + + + + has at least %1 GB available drive space + + + + + There is not enough drive space. At least %1 GB is required. + + + + + has at least %1 GB working memory + + + + + The system does not have enough working memory. At least %1 GB is required. + + + + + is plugged in to a power source + + + + + The system is not plugged in to a power source. + + + + + is connected to the Internet + + + + + The system is not connected to the Internet. + + + + + The installer is not running with administrator rights. + + + + + The screen is too small to display the installer. + + + + + ResizePartitionJob + + + Resize partition %1. + + + + + Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. + + + + + Resizing %2MB partition %1 to %3MB. + + + + + The installer failed to resize partition %1 on disk '%2'. + + + + + ScanningDialog + + + Scanning storage devices... + + + + + Partitioning + + + + + SetHostNameJob + + + Set hostname %1 + + + + + Set hostname <strong>%1</strong>. + + + + + Setting hostname %1. + + + + + + Internal Error + + + + + + Cannot write hostname to target system + + + + + SetKeyboardLayoutJob + + + Set keyboard model to %1, layout to %2-%3 + + + + + Failed to write keyboard configuration for the virtual console. + + + + + + + Failed to write to %1 + + + + + Failed to write keyboard configuration for X11. + + + + + Failed to write keyboard configuration to existing /etc/default directory. + + + + + SetPartFlagsJob + + + Set flags on partition %1. + + + + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + + Clear flags on partition <strong>%1</strong>. + + + + + Clear flags on %1MB <strong>%2</strong> partition. + + + + + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + + + + + Flag new partition as <strong>%1</strong>. + + + + + Clearing flags on partition <strong>%1</strong>. + + + + + Clearing flags on %1MB <strong>%2</strong> partition. + + + + + Clearing flags on new partition. + + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + + The installer failed to set flags on partition %1. + + + + + SetPasswordJob + + + Set password for user %1 + + + + + Setting password for user %1. + + + + + Bad destination system path. + + + + + rootMountPoint is %1 + + + + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + + Cannot set password for user %1. + + + + + usermod terminated with error code %1. + + + + + SetTimezoneJob + + + Set timezone to %1/%2 + + + + + Cannot access selected timezone path. + + + + + Bad path: %1 + + + + + Cannot set timezone. + + + + + Link creation failed, target: %1; link name: %2 + + + + + Cannot set timezone, + + + + + Cannot open /etc/timezone for writing + + + + + ShellProcessJob + + + Shell Processes Job + + + + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + + + SummaryPage + + + This is an overview of what will happen once you start the install procedure. + + + + + SummaryViewStep + + + Summary + + + + + TrackingInstallJob + + + Installation feedback + + + + + Sending installation feedback. + + + + + Internal error in install-tracking. + + + + + HTTP request timed out. + + + + + TrackingMachineNeonJob + + + Machine feedback + + + + + Configuring machine feedback. + + + + + + Error in machine feedback configuration. + + + + + Could not configure machine feedback correctly, script error %1. + + + + + Could not configure machine feedback correctly, Calamares error %1. + + + + + TrackingPage + + + Form + + + + + Placeholder + + + + + <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> + + + + + + + TextLabel + + + + + + + ... + + + + + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> + + + + + Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. + + + + + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. + + + + + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. + + + + + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. + + + + + TrackingViewStep + + + Feedback + + + + + UsersPage + + + Your username is too long. + + + + + Your username contains invalid characters. Only lowercase letters and numbers are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. + + + + + + Your passwords do not match! + + + + + UsersViewStep + + + Users + + + + + WelcomePage + + + Form + + + + + &Language: + + + + + &Release notes + + + + + &Known issues + + + + + &Support + + + + + &About + + + + + <h1>Welcome to the %1 installer.</h1> + + + + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + + About %1 installer + + + + + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + + + + + %1 support + + + + + WelcomeViewStep + + + Welcome + + + + \ No newline at end of file diff --git a/lang/calamares_tr_TR.ts b/lang/calamares_tr_TR.ts index bf7de67a3..56a1fba88 100644 --- a/lang/calamares_tr_TR.ts +++ b/lang/calamares_tr_TR.ts @@ -487,7 +487,7 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + Komut, ana bilgisayar ortamında çalışır ve kök yolunu bilmesi gerekir, ancak kökMontajNoktası tanımlanmamıştır. @@ -1692,12 +1692,12 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. Can not create new partition - + Yeni disk bölümü oluşturulamıyor 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. - + % 1 üzerindeki bölüm tablosu zaten% 2 birincil bölüme sahip ve artık eklenemiyor. Lütfen bir birincil bölümü kaldırın ve bunun yerine genişletilmiş bir bölüm ekleyin. From febe597387166b779877f13ab574c580f66d104c Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Sat, 26 May 2018 07:24:36 -0400 Subject: [PATCH 208/385] i18n: [desktop] Automatic merge of Transifex translations --- calamares.desktop | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/calamares.desktop b/calamares.desktop index 6fa758604..caba57a7e 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -14,6 +14,10 @@ Categories=Qt;System; X-AppStream-Ignore=true Name[ar]=نظام التثبيت +Icon[be]=calamares +GenericName[be]=Усталёўшчык сістэмы +Comment[be]=Calamares — усталёўшчык сістэмы +Name[be]=Усталяваць сістэму Icon[bg]=calamares GenericName[bg]=Системен Инсталатор Comment[bg]=Calamares — Системен Инсталатор From 51b50b9366f68aa46f54a116746321837fbe53fe Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Sat, 26 May 2018 07:24:36 -0400 Subject: [PATCH 209/385] i18n: [dummypythonqt] Automatic merge of Transifex translations --- .../lang/be/LC_MESSAGES/dummypythonqt.mo | Bin 0 -> 562 bytes .../lang/be/LC_MESSAGES/dummypythonqt.po | 42 ++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.mo create mode 100644 src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.po diff --git a/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 0000000000000000000000000000000000000000..4454d0f300ea558ca047a2b4836933e54b1e3dbf GIT binary patch literal 562 zcmYLE!EVz)5G{g}kDNIS5>$;~;$7ob=_Z>hOexy9}~DvW?v`SRWQ>{Z9S&0D3^G?E*$2yfMA;CIJR1O65)mNT0q2j57{yD z6X0CL3|Y(=5pkw}m96bH0D~Z1f1(i*|jT` zfumdR8z;hWv)OdLRmPP!`mVdESK&fcYNf1pp(m9KBgRg6IM-n(NGEBszlwKRFs_Z) z#$*1wp>4gs^I=n|()3|*tE|&re#35q7nCoC#t*xr? zvbHNHz%<*^$+!;>sXQ`oIg^sZ;UTmsdo4MKGhje;s)sUqY7J!ErdtIY@CfejA0$H_ ncSyn?B~r4swdD=v@m_w~+5M9*jd_|mkmPU%5gB~w^n-){CIOZG literal 0 HcmV?d00001 diff --git a/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..3556e37d2 --- /dev/null +++ b/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,42 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Belarusian (https://www.transifex.com/calamares/teams/20061/be/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: be\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "" + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "" From 1dc11a9d5d4acb2d69946d79a88104c5a20afc4f Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Sat, 26 May 2018 07:24:37 -0400 Subject: [PATCH 210/385] i18n: [python] Automatic merge of Transifex translations --- lang/python/be/LC_MESSAGES/python.mo | Bin 0 -> 562 bytes lang/python/be/LC_MESSAGES/python.po | 61 +++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 lang/python/be/LC_MESSAGES/python.mo create mode 100644 lang/python/be/LC_MESSAGES/python.po diff --git a/lang/python/be/LC_MESSAGES/python.mo b/lang/python/be/LC_MESSAGES/python.mo new file mode 100644 index 0000000000000000000000000000000000000000..4454d0f300ea558ca047a2b4836933e54b1e3dbf GIT binary patch literal 562 zcmYLE!EVz)5G{g}kDNIS5>$;~;$7ob=_Z>hOexy9}~DvW?v`SRWQ>{Z9S&0D3^G?E*$2yfMA;CIJR1O65)mNT0q2j57{yD z6X0CL3|Y(=5pkw}m96bH0D~Z1f1(i*|jT` zfumdR8z;hWv)OdLRmPP!`mVdESK&fcYNf1pp(m9KBgRg6IM-n(NGEBszlwKRFs_Z) z#$*1wp>4gs^I=n|()3|*tE|&re#35q7nCoC#t*xr? zvbHNHz%<*^$+!;>sXQ`oIg^sZ;UTmsdo4MKGhje;s)sUqY7J!ErdtIY@CfejA0$H_ ncSyn?B~r4swdD=v@m_w~+5M9*jd_|mkmPU%5gB~w^n-){CIOZG literal 0 HcmV?d00001 diff --git a/lang/python/be/LC_MESSAGES/python.po b/lang/python/be/LC_MESSAGES/python.po new file mode 100644 index 000000000..96b3351ad --- /dev/null +++ b/lang/python/be/LC_MESSAGES/python.po @@ -0,0 +1,61 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Belarusian (https://www.transifex.com/calamares/teams/20061/be/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: be\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 +msgid "Install packages." +msgstr "" + +#: src/modules/packages/main.py:66 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/modules/packages/main.py:69 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" From a878c1a6109349c8f7182663fae60932a109af9c Mon Sep 17 00:00:00 2001 From: udeved Date: Mon, 28 May 2018 01:31:55 +0200 Subject: [PATCH 211/385] add openrccfg --- src/modules/openrccfg/main.py | 58 ++++++++++++++++++++++++++++ src/modules/openrccfg/module.desc | 5 +++ src/modules/openrccfg/openrccfg.conf | 8 ++++ 3 files changed, 71 insertions(+) create mode 100644 src/modules/openrccfg/main.py create mode 100644 src/modules/openrccfg/module.desc create mode 100644 src/modules/openrccfg/openrccfg.conf diff --git a/src/modules/openrccfg/main.py b/src/modules/openrccfg/main.py new file mode 100644 index 000000000..724b02c3f --- /dev/null +++ b/src/modules/openrccfg/main.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# === This file is part of Calamares - === +# +# Copyright 2016, Artoo +# Copyright 2017, Philip Müller +# Copyright 2018, Artoo +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . + +import libcalamares + +from libcalamares.utils import target_env_call +from os.path import exists, join + + +class OpenrcController: + """This is the service controller + """ + + def __init__(self): + self.root = libcalamares.globalstorage.value('rootMountPoint') + self.services = libcalamares.job.configuration.get('services', []) + + def update(self, state): + """Update init scripts + """ + + for svc in self.services[state]: + if exists(self.root + "/etc/init.d/" + svc["name"]): + target_env_call( + ["rc-update", state, svc["name"], svc["runlevel"]] + ) + + def run(self): + """Run the controller + """ + + for state in self.services.keys(): + self.update(state) + +def run(): + """Setup services + """ + + return OpenrcController().run() diff --git a/src/modules/openrccfg/module.desc b/src/modules/openrccfg/module.desc new file mode 100644 index 000000000..1be7af923 --- /dev/null +++ b/src/modules/openrccfg/module.desc @@ -0,0 +1,5 @@ +--- +type: "job" +name: "openrccfg" +interface: "python" +script: "main.py" diff --git a/src/modules/openrccfg/openrccfg.conf b/src/modules/openrccfg/openrccfg.conf new file mode 100644 index 000000000..e10da15ce --- /dev/null +++ b/src/modules/openrccfg/openrccfg.conf @@ -0,0 +1,8 @@ +--- +services: + add: + - name: "NetworkManager" + runlevel: "default" +# del: +# - name: "hwclock" +# runlevel: "boot" From e4bda546cf302aa55dba00ec1b245015b0c7e181 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 28 May 2018 09:24:43 -0400 Subject: [PATCH 212/385] [bootloader] factor our EFI-platform-bitness discovery --- src/modules/bootloader/main.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index 2c8e5faac..9103bfbe2 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -179,6 +179,18 @@ def efi_label(): return efi_bootloader_id.translate(file_name_sanitizer) +def efi_word_size(): + # get bitness of the underlying UEFI + try: + sysfile = open("/sys/firmware/efi/fw_platform_size", "r") + efi_bitness = sysfile.read(2) + except Exception: + # if the kernel is older than 4.0, the UEFI bitness likely isn't + # exposed to the userspace so we assume a 64 bit UEFI here + efi_bitness = "64" + return efi_bitness + + def install_systemd_boot(efi_directory): """ Installs systemd-boot as bootloader for EFI setups. @@ -231,15 +243,7 @@ def install_grub(efi_directory, fw_type): os.makedirs(install_efi_directory) efi_bootloader_id = efi_label() - - # get bitness of the underlying UEFI - try: - sysfile = open("/sys/firmware/efi/fw_platform_size", "r") - efi_bitness = sysfile.read(2) - except Exception: - # if the kernel is older than 4.0, the UEFI bitness likely isn't - # exposed to the userspace so we assume a 64 bit UEFI here - efi_bitness = "64" + efi_bitness = efi_word_size() if efi_bitness == "32": efi_target = "i386-efi" From dad3669eaee1c5ec5f7fbc11497fa397d5776425 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 28 May 2018 09:26:20 -0400 Subject: [PATCH 213/385] [bootloader] Take a stab at determining the shim name --- src/modules/bootloader/main.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index 9103bfbe2..a09f49868 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -314,6 +314,15 @@ def install_secureboot(efi_directory): Installs the secureboot shim in the system by calling efibootmgr. """ efi_bootloader_id = efi_label() + + install_path = libcalamares.globalstorage.value("rootMountPoint") + install_efi_directory = install_path + efi_directory + + if efi_word_size() == "64": + install_efi_bin = "shim64.efi" + else: + install_efi_bin = "shim.efi" + subprocess.call([ "/usr/sbin/efibootmgr", "-c", @@ -321,8 +330,7 @@ def install_secureboot(efi_directory): "-L", efi_bootloader_id, "-d", path, # TODO "-p", num, # TODO - "-l", efidir)# TODO - + "-l", install_efi_directory + "/" + install_efi_bin]) def vfat_correct_case(parent, name): From fdda1ef8405268e7fd87be76b0193ec7d3cd050c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 28 May 2018 11:47:47 -0400 Subject: [PATCH 214/385] [bootloader] Mimic openSUSE's efibootmgr calls --- src/modules/bootloader/bootloader.conf | 4 ++++ src/modules/bootloader/main.py | 31 ++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/modules/bootloader/bootloader.conf b/src/modules/bootloader/bootloader.conf index 3c6120542..def686262 100644 --- a/src/modules/bootloader/bootloader.conf +++ b/src/modules/bootloader/bootloader.conf @@ -20,9 +20,13 @@ timeout: "10" # GRUB 2 binary names and boot directory # Some distributions (e.g. Fedora) use grub2-* (resp. /boot/grub2/) names. +# These names are also used when using sb-shim, since that needs some +# GRUB functionality (notably grub-probe) to work. +# grubInstall: "grub-install" grubMkconfig: "grub-mkconfig" grubCfg: "/boot/grub/grub.cfg" +grubProbe: "/usr/sbin/grub2-probe" # Optionally set the bootloader ID to use for EFI. This is passed to # grub-install --bootloader-id. diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index a09f49868..1abee68f7 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -323,13 +323,40 @@ def install_secureboot(efi_directory): else: install_efi_bin = "shim.efi" + # Copied, roughly, from openSUSE's install script, + # and pythonified. *disk* is something like /dev/sda, + # while *drive* may return "(disk/dev/sda,gpt1)" .. + # we're interested in the numbers in the second part + # of that tuple. + efi_drive = subprocess.check_output([ + libcalamares.job.configuration["grubProbe"], + "-t", "drive", "--device-map=", install_efi_directory]) + efi_disk = subprocess.check_output([ + libcalamares.job.configuration["grubProbe"], + "-t", "disk", "--device-map=", install_efi_directory]) + + efi_drive_partition = efi_drive.replace("(","").replace(")","").split(",")[1] + # Get the first run of digits from the partition + efi_partititon_number = None + c = 0 + start = None + while c < len(efi_drive_partition): + if efi_drive_partition[c].isdigit() and start is None: + start = c + if not efi_drive_partition[c].isdigit() and start is not None: + efi_drive_number = efi_drive_partition[start:c] + break + c += 1 + if efi_partititon_number is None: + raise ValueError("No partition number found for %s" % install_efi_directory) + subprocess.call([ "/usr/sbin/efibootmgr", "-c", "-w", "-L", efi_bootloader_id, - "-d", path, # TODO - "-p", num, # TODO + "-d", efi_disk, + "-p", efi_partititon_number, "-l", install_efi_directory + "/" + install_efi_bin]) From a29bd5a18d8525aeecc920cda18e52a01446c115 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Tue, 29 May 2018 03:27:20 -0400 Subject: [PATCH 215/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_ar.ts | 84 +++++++++++++++++-------------------- lang/calamares_ast.ts | 84 +++++++++++++++++-------------------- lang/calamares_be.ts | 84 +++++++++++++++++-------------------- lang/calamares_bg.ts | 84 +++++++++++++++++-------------------- lang/calamares_ca.ts | 84 +++++++++++++++++-------------------- lang/calamares_cs_CZ.ts | 84 +++++++++++++++++-------------------- lang/calamares_da.ts | 86 ++++++++++++++++++-------------------- lang/calamares_de.ts | 84 +++++++++++++++++-------------------- lang/calamares_el.ts | 84 +++++++++++++++++-------------------- lang/calamares_en.ts | 84 +++++++++++++++++-------------------- lang/calamares_en_GB.ts | 84 +++++++++++++++++-------------------- lang/calamares_eo.ts | 84 +++++++++++++++++-------------------- lang/calamares_es.ts | 84 +++++++++++++++++-------------------- lang/calamares_es_MX.ts | 84 +++++++++++++++++-------------------- lang/calamares_es_PR.ts | 84 +++++++++++++++++-------------------- lang/calamares_et.ts | 84 +++++++++++++++++-------------------- lang/calamares_eu.ts | 84 +++++++++++++++++-------------------- lang/calamares_fa.ts | 84 +++++++++++++++++-------------------- lang/calamares_fi_FI.ts | 84 +++++++++++++++++-------------------- lang/calamares_fr.ts | 84 +++++++++++++++++-------------------- lang/calamares_fr_CH.ts | 84 +++++++++++++++++-------------------- lang/calamares_gl.ts | 84 +++++++++++++++++-------------------- lang/calamares_gu.ts | 84 +++++++++++++++++-------------------- lang/calamares_he.ts | 84 +++++++++++++++++-------------------- lang/calamares_hi.ts | 84 +++++++++++++++++-------------------- lang/calamares_hr.ts | 84 +++++++++++++++++-------------------- lang/calamares_hu.ts | 84 +++++++++++++++++-------------------- lang/calamares_id.ts | 84 +++++++++++++++++-------------------- lang/calamares_is.ts | 84 +++++++++++++++++-------------------- lang/calamares_it_IT.ts | 84 +++++++++++++++++-------------------- lang/calamares_ja.ts | 84 +++++++++++++++++-------------------- lang/calamares_kk.ts | 84 +++++++++++++++++-------------------- lang/calamares_kn.ts | 84 +++++++++++++++++-------------------- lang/calamares_lo.ts | 84 +++++++++++++++++-------------------- lang/calamares_lt.ts | 84 +++++++++++++++++-------------------- lang/calamares_mr.ts | 84 +++++++++++++++++-------------------- lang/calamares_nb.ts | 84 +++++++++++++++++-------------------- lang/calamares_nl.ts | 84 +++++++++++++++++-------------------- lang/calamares_pl.ts | 84 +++++++++++++++++-------------------- lang/calamares_pt_BR.ts | 84 +++++++++++++++++-------------------- lang/calamares_pt_PT.ts | 84 +++++++++++++++++-------------------- lang/calamares_ro.ts | 84 +++++++++++++++++-------------------- lang/calamares_ru.ts | 84 +++++++++++++++++-------------------- lang/calamares_sk.ts | 86 ++++++++++++++++++-------------------- lang/calamares_sl.ts | 84 +++++++++++++++++-------------------- lang/calamares_sq.ts | 84 +++++++++++++++++-------------------- lang/calamares_sr.ts | 84 +++++++++++++++++-------------------- lang/calamares_sr@latin.ts | 84 +++++++++++++++++-------------------- lang/calamares_sv.ts | 84 +++++++++++++++++-------------------- lang/calamares_th.ts | 84 +++++++++++++++++-------------------- lang/calamares_tr_TR.ts | 84 +++++++++++++++++-------------------- lang/calamares_uk.ts | 84 +++++++++++++++++-------------------- lang/calamares_ur.ts | 84 +++++++++++++++++-------------------- lang/calamares_uz.ts | 84 +++++++++++++++++-------------------- lang/calamares_zh_CN.ts | 84 +++++++++++++++++-------------------- lang/calamares_zh_TW.ts | 84 +++++++++++++++++-------------------- 56 files changed, 2186 insertions(+), 2522 deletions(-) diff --git a/lang/calamares_ar.ts b/lang/calamares_ar.ts index bb68d29b5..af11201ae 100644 --- a/lang/calamares_ar.ts +++ b/lang/calamares_ar.ts @@ -477,15 +477,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 أنشئ المستخدم %1 - + Create user <strong>%1</strong>. أنشئ المستخدم <strong>%1</strong>. - + Creating user %1. ينشئ المستخدم %1. - + Sudoers dir is not writable. دليل Sudoers لا يمكن الكتابة فيه. - + Cannot create sudoers file for writing. تعذّر إنشاء ملفّ sudoers للكتابة. - + Cannot chmod sudoers file. تعذّر تغيير صلاحيّات ملفّ sudores. - + Cannot open groups file for reading. تعذّر فتح ملفّ groups للقراءة. - - - Cannot create user %1. - تعذّر إنشاء المستخدم %1. - - - - useradd terminated with error code %1. - أُنهي useradd برمز الخطأ %1. - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - أُنهي usermod برمز الخطأ %1. - - - - Cannot set home directory ownership for user %1. - تعذّر تعيين مالك دليل المستخدم ليكون %1. - - - - chown terminated with error code %1. - أُنهي chown برمز الخطأ %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name الاسم - + Description الوصف - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1835,6 +1811,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users المستخدمين diff --git a/lang/calamares_ast.ts b/lang/calamares_ast.ts index fb89c2a95..885bcf6c1 100644 --- a/lang/calamares_ast.ts +++ b/lang/calamares_ast.ts @@ -477,15 +477,21 @@ L'instalador colará y perderánse toles camudancies. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ L'instalador colará y perderánse toles camudancies. CreateUserJob - + Create user %1 Crear l'usuariu %1 - + Create user <strong>%1</strong>. Crearáse l'usuariu <strong>%1</strong>. - + Creating user %1. Creando l'usuariu %1. - + Sudoers dir is not writable. Nun pue escribise nel direutoriu sudoers. - + Cannot create sudoers file for writing. Nun pue crease'l ficheru sudoers pa escritura. - + Cannot chmod sudoers file. Nun pue facese chmod al ficheru sudoers. - + Cannot open groups file for reading. Nun pue abrise'l ficheru de grupos pa escritura. - - - Cannot create user %1. - Nun pue crease l'usuariu %1. - - - - useradd terminated with error code %1. - useradd finó col códigu de fallu %1. - - - - Cannot add user %1 to groups: %2. - Nun pue amestase l'usuariu %1 a los grupos: %2 - - - - usermod terminated with error code %1. - usermod finó col códigu de fallu %1. - - - - Cannot set home directory ownership for user %1. - Nun pue afitase la propiedá del direutoriu Home al usuariu %1. - - - - chown terminated with error code %1. - chown finó col códigu de fallu %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ L'instalador colará y perderánse toles camudancies. NetInstallPage - + Name Nome - + Description Descripción - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalación de rede. (Deshabilitáu: Nun pue dise en cata del llistáu de paquetes, comprueba la conexón de rede) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ L'instalador colará y perderánse toles camudancies. NetInstallViewStep - + Package selection Esbilla de paquetes @@ -1835,6 +1811,24 @@ L'instalador colará y perderánse toles camudancies. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users Usuarios diff --git a/lang/calamares_be.ts b/lang/calamares_be.ts index 6b80bf3c5..7b5bb9a30 100644 --- a/lang/calamares_be.ts +++ b/lang/calamares_be.ts @@ -476,15 +476,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -649,70 +655,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1201,22 +1177,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1224,7 +1200,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1834,6 +1810,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2519,7 +2513,7 @@ Output: UsersViewStep - + Users diff --git a/lang/calamares_bg.ts b/lang/calamares_bg.ts index f3b4e2258..6700177fe 100644 --- a/lang/calamares_bg.ts +++ b/lang/calamares_bg.ts @@ -478,15 +478,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -651,70 +657,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Създай потребител %1 - + Create user <strong>%1</strong>. Създай потребител <strong>%1</strong>. - + Creating user %1. Създаване на потребител %1. - + Sudoers dir is not writable. Директорията sudoers е незаписваема. - + Cannot create sudoers file for writing. Не може да се създаде sudoers файл за записване. - + Cannot chmod sudoers file. Не може да се изпълни chmod върху sudoers файла. - + Cannot open groups file for reading. Не може да се отвори файла на групите за четене. - - - Cannot create user %1. - Не може да се създаде потребител %1. - - - - useradd terminated with error code %1. - useradd прекратен с грешка, код %1. - - - - Cannot add user %1 to groups: %2. - Не може да се добави потребител %1 към групи: %2. - - - - usermod terminated with error code %1. - usermod е прекратен с грешка %1. - - - - Cannot set home directory ownership for user %1. - Не може да се постави притежанието на домашната директория за потребител %1. - - - - chown terminated with error code %1. - chown прекратен с грешка, код %1. - DeletePartitionJob @@ -1203,22 +1179,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name Име - + Description Описание - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1226,7 +1202,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection Избор на пакети @@ -1836,6 +1812,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2521,7 +2515,7 @@ Output: UsersViewStep - + Users Потребители diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index 2048f6af5..1153ce587 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -477,15 +477,21 @@ L'instal·lador es tancarà i tots els canvis es perdran. CommandList - + + Could not run command. No s'ha pogut executar l'ordre. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. L'odre s'executa a l'entorn de l'amfitrió i necessita saber el camí de l'arrel, però no hi ha definit el punt de muntatge de l'arrel. + + + The command needs to know the user's name, but no username is defined. + L'ordre necessita saber el nom de l'usuari, però no s'ha definit cap nom d'usuari. + ContextualProcessJob @@ -650,70 +656,40 @@ L'instal·lador es tancarà i tots els canvis es perdran. CreateUserJob - + Create user %1 Crea l'usuari %1 - + Create user <strong>%1</strong>. Crea l'usuari <strong>%1</strong>. - + Creating user %1. Creant l'usuari %1. - + Sudoers dir is not writable. El directori de sudoers no té permisos d'escriptura. - + Cannot create sudoers file for writing. No es pot crear el fitxer sudoers a escriure. - + Cannot chmod sudoers file. No es pot fer chmod al fitxer sudoers. - + Cannot open groups file for reading. No es pot obrir el fitxer groups per ser llegit. - - - Cannot create user %1. - No es pot crear l'usuari %1. - - - - useradd terminated with error code %1. - useradd ha acabat amb el codi d'error %1. - - - - Cannot add user %1 to groups: %2. - No es pot afegir l'usuari %1 als grups: %2. - - - - usermod terminated with error code %1. - usermod ha acabat amb el codi d'error %1. - - - - Cannot set home directory ownership for user %1. - No es pot establir la propietat del directori personal a l'usuari %1. - - - - chown terminated with error code %1. - chown ha acabat amb el codi d'error %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ L'instal·lador es tancarà i tots els canvis es perdran. NetInstallPage - + Name Nom - + Description Descripció - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instal·lació per xarxa. (Inhabilitada: no es poden obtenir les llistes de paquets, comproveu la connexió.) - + Network Installation. (Disabled: Received invalid groups data) Instal·lació per xarxa. (Inhabilitat: dades de grups rebudes no vàlides) @@ -1225,7 +1201,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. NetInstallViewStep - + Package selection Selecció de paquets @@ -1835,6 +1811,24 @@ L'instal·lador es tancarà i tots els canvis es perdran. Aspecte i comportament + + PreserveFiles + + + Saving files for later ... + Desament dels fitxers per a més tard... + + + + No files configured to save for later. + No s'ha configurat cap fitxer per desar per a més tard. + + + + Not all of the configured files could be preserved. + No es poden conservar tots els fitxers configurats. + + ProcessResult @@ -2523,7 +2517,7 @@ Sortida: UsersViewStep - + Users Usuaris diff --git a/lang/calamares_cs_CZ.ts b/lang/calamares_cs_CZ.ts index 28a88e874..d105703c3 100644 --- a/lang/calamares_cs_CZ.ts +++ b/lang/calamares_cs_CZ.ts @@ -477,15 +477,21 @@ Instalační program bude ukončen a všechny změny ztraceny. CommandList - + + Could not run command. Nedaří se spustit příkaz. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Příkaz bude spuštěn v prostředí hostitele a potřebuje znát popis umístění kořene souborového systému. rootMountPoint ale není zadaný. + + + The command needs to know the user's name, but no username is defined. + Příkaz potřebuje znát uživatelské jméno, to ale zadáno nebylo. + ContextualProcessJob @@ -650,70 +656,40 @@ Instalační program bude ukončen a všechny změny ztraceny. CreateUserJob - + Create user %1 Vytvořit uživatele %1 - + Create user <strong>%1</strong>. Vytvořit uživatele <strong>%1</strong>. - + Creating user %1. Vytváří se účet pro uživatele %1. - + Sudoers dir is not writable. Nepodařilo se zapsat do složky sudoers.d. - + Cannot create sudoers file for writing. Nepodařilo se vytvořit soubor pro sudoers do kterého je třeba zapsat. - + Cannot chmod sudoers file. Nepodařilo se změnit přístupová práva (chmod) na souboru se sudoers. - + Cannot open groups file for reading. Nepodařilo se otevřít soubor groups pro čtení. - - - Cannot create user %1. - Nepodařilo se vytvořit uživatele %1. - - - - useradd terminated with error code %1. - Příkaz useradd ukončen s chybovým kódem %1. - - - - Cannot add user %1 to groups: %2. - Nepodařilo se přidat uživatele %1 do skupin: %2. - - - - usermod terminated with error code %1. - Příkaz usermod ukončen s chybovým kódem %1. - - - - Cannot set home directory ownership for user %1. - Nepodařilo se nastavit vlastnictví domovské složky pro uživatele %1. - - - - chown terminated with error code %1. - Příkaz chown ukončen s chybovým kódem %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Instalační program bude ukončen a všechny změny ztraceny. NetInstallPage - + Name Jméno - + Description Popis - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Síťová instalace. (Vypnuto: Nedaří se stáhnout seznamy balíčků – zkontrolujte připojení k síti) - + Network Installation. (Disabled: Received invalid groups data) Síťová instalace. (Vypnuto: Obdrženy neplatné údaje skupin) @@ -1225,7 +1201,7 @@ Instalační program bude ukončen a všechny změny ztraceny. NetInstallViewStep - + Package selection Výběr balíčků @@ -1835,6 +1811,24 @@ Instalační program bude ukončen a všechny změny ztraceny. Vzhled a dojem z + + PreserveFiles + + + Saving files for later ... + Ukládání souborů pro pozdější využití… + + + + No files configured to save for later. + U žádných souborů nebylo nastaveno, že mají být uloženy pro pozdější využití. + + + + Not all of the configured files could be preserved. + Ne všechny nastavené soubory bylo možné zachovat. + + ProcessResult @@ -2523,7 +2517,7 @@ Výstup: UsersViewStep - + Users Uživatelé diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts index 070463376..8ee303ef1 100644 --- a/lang/calamares_da.ts +++ b/lang/calamares_da.ts @@ -477,15 +477,21 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. CommandList - + + Could not run command. Kunne ikke køre kommando. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. CreateUserJob - + Create user %1 Opret bruger %1 - + Create user <strong>%1</strong>. Opret bruger <strong>%1</strong>. - + Creating user %1. Opretter bruger %1. - + Sudoers dir is not writable. Sudoers mappe er skrivebeskyttet. - + Cannot create sudoers file for writing. Kan ikke oprette sudoers fil til skrivning. - + Cannot chmod sudoers file. Kan ikke chmod sudoers fil. - + Cannot open groups file for reading. Kan ikke åbne gruppernes fil til læsning. - - - Cannot create user %1. - Kan ikke oprette bruger %1. - - - - useradd terminated with error code %1. - useradd stoppet med fejlkode %1. - - - - Cannot add user %1 to groups: %2. - Kan ikke tilføje bruger %1 til grupperne: %2. - - - - usermod terminated with error code %1. - usermod stoppet med fejlkode %1. - - - - Cannot set home directory ownership for user %1. - Kan ikke sætte hjemmemappens ejerskab for bruger %1. - - - - chown terminated with error code %1. - chown stoppet med fejlkode %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. NetInstallPage - + Name Navn - + Description Beskrivelse - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Netværksinstallation. (Deaktiveret: Kunne ikke hente pakkelister, tjek din netværksforbindelse) - + Network Installation. (Disabled: Received invalid groups data) Netværksinstallation. (Deaktiveret: Modtog ugyldige gruppers data) @@ -1225,7 +1201,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. NetInstallViewStep - + Package selection Valg af pakke @@ -1689,7 +1665,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Can not create new partition - + Kan ikke oprette ny partition @@ -1835,6 +1811,24 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Udseende og fremtoning + + PreserveFiles + + + Saving files for later ... + Gemmer filer til senere ... + + + + No files configured to save for later. + Ingen filer er konfigureret til at blive gemt til senere. + + + + Not all of the configured files could be preserved. + Kunne ikke bevare alle de konfigurerede filer. + + ProcessResult @@ -2523,7 +2517,7 @@ Output: UsersViewStep - + Users Brugere diff --git a/lang/calamares_de.ts b/lang/calamares_de.ts index a19100da1..2022e398b 100644 --- a/lang/calamares_de.ts +++ b/lang/calamares_de.ts @@ -477,15 +477,21 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. CommandList - + + Could not run command. Befehl konnte nicht ausgeführt werden. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Dieser Befehl wird im installierten System ausgeführt und muss daher den Root-Pfad kennen, jedoch wurde kein rootMountPoint definiert. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. CreateUserJob - + Create user %1 Erstelle Benutzer %1 - + Create user <strong>%1</strong>. Erstelle Benutzer <strong>%1</strong>. - + Creating user %1. Erstelle Benutzer %1. - + Sudoers dir is not writable. Sudoers-Verzeichnis ist nicht beschreibbar. - + Cannot create sudoers file for writing. Kann sudoers-Datei nicht zum Schreiben erstellen. - + Cannot chmod sudoers file. Kann chmod nicht auf sudoers-Datei anwenden. - + Cannot open groups file for reading. Kann groups-Datei nicht zum Lesen öffnen. - - - Cannot create user %1. - Kann Benutzer %1 nicht erstellen. - - - - useradd terminated with error code %1. - useradd wurde mit Fehlercode %1 beendet. - - - - Cannot add user %1 to groups: %2. - Folgenden Gruppen konnte Benutzer %1 nicht hinzugefügt werden: %2. - - - - usermod terminated with error code %1. - Usermod beendet mit Fehlercode %1. - - - - Cannot set home directory ownership for user %1. - Kann Besitzrechte des Home-Verzeichnisses von Benutzer %1 nicht setzen. - - - - chown terminated with error code %1. - chown wurde mit Fehlercode %1 beendet. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. NetInstallPage - + Name Name - + Description Beschreibung - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Netzwerk-Installation. (Deaktiviert: Paketlisten nicht erreichbar, prüfe deine Netzwerk-Verbindung) - + Network Installation. (Disabled: Received invalid groups data) Netwerk-Installation. (Deaktiviert: Ungültige Gruppen-Daten eingegeben) @@ -1225,7 +1201,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. NetInstallViewStep - + Package selection Paketauswahl @@ -1835,6 +1811,24 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Erscheinungsbild + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2523,7 +2517,7 @@ Ausgabe: UsersViewStep - + Users Benutzer diff --git a/lang/calamares_el.ts b/lang/calamares_el.ts index 9fd438391..711c7a9e5 100644 --- a/lang/calamares_el.ts +++ b/lang/calamares_el.ts @@ -477,15 +477,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Δημιουργία χρήστη %1 - + Create user <strong>%1</strong>. Δημιουργία χρήστη <strong>%1</strong>. - + Creating user %1. Δημιουργείται ο χρήστης %1. - + Sudoers dir is not writable. Ο κατάλογος sudoers δεν είναι εγγράψιμος. - + Cannot create sudoers file for writing. Δεν είναι δυνατή η δημιουργία του αρχείου sudoers για εγγραφή. - + Cannot chmod sudoers file. Δεν είναι δυνατό το chmod στο αρχείο sudoers. - + Cannot open groups file for reading. Δεν είναι δυνατό το άνοιγμα του αρχείου ομάδων για ανάγνωση. - - - Cannot create user %1. - Δεν είναι δυνατή η δημιουργία του χρήστη %1. - - - - useradd terminated with error code %1. - Το useradd τερματίστηκε με κωδικό σφάλματος %1. - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - Δεν είναι δυνατός ο ορισμός της ιδιοκτησία του προσωπικού καταλόγου για τον χρήστη %1. - - - - chown terminated with error code %1. - Το chown τερματίστηκε με κωδικό σφάλματος %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name Όνομα - + Description Περιγραφή - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection Επιλογή πακέτου @@ -1835,6 +1811,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users Χρήστες diff --git a/lang/calamares_en.ts b/lang/calamares_en.ts index 62a4b46c4..8bd9c5bda 100644 --- a/lang/calamares_en.ts +++ b/lang/calamares_en.ts @@ -477,15 +477,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + The command needs to know the user's name, but no username is defined. + ContextualProcessJob @@ -650,70 +656,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Create user %1 - + Create user <strong>%1</strong>. Create user <strong>%1</strong>. - + Creating user %1. Creating user %1. - + Sudoers dir is not writable. Sudoers dir is not writable. - + Cannot create sudoers file for writing. Cannot create sudoers file for writing. - + Cannot chmod sudoers file. Cannot chmod sudoers file. - + Cannot open groups file for reading. Cannot open groups file for reading. - - - Cannot create user %1. - Cannot create user %1. - - - - useradd terminated with error code %1. - useradd terminated with error code %1. - - - - Cannot add user %1 to groups: %2. - Cannot add user %1 to groups: %2. - - - - usermod terminated with error code %1. - usermod terminated with error code %1. - - - - Cannot set home directory ownership for user %1. - Cannot set home directory ownership for user %1. - - - - chown terminated with error code %1. - chown terminated with error code %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name Name - + Description Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection Package selection @@ -1835,6 +1811,24 @@ The installer will quit and all changes will be lost. Look-and-Feel + + PreserveFiles + + + Saving files for later ... + Saving files for later ... + + + + No files configured to save for later. + No files configured to save for later. + + + + Not all of the configured files could be preserved. + Not all of the configured files could be preserved. + + ProcessResult @@ -2523,7 +2517,7 @@ Output: UsersViewStep - + Users Users diff --git a/lang/calamares_en_GB.ts b/lang/calamares_en_GB.ts index 9698dd084..025036232 100644 --- a/lang/calamares_en_GB.ts +++ b/lang/calamares_en_GB.ts @@ -477,15 +477,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. Sudoers dir is not writable. - + Cannot create sudoers file for writing. Cannot create sudoers file for writing. - + Cannot chmod sudoers file. Cannot chmod sudoers file. - + Cannot open groups file for reading. Cannot open groups file for reading. - - - Cannot create user %1. - Cannot create user %1. - - - - useradd terminated with error code %1. - useradd terminated with error code %1. - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - usermod terminated with error code %1. - - - - Cannot set home directory ownership for user %1. - Cannot set home directory ownership for user %1. - - - - chown terminated with error code %1. - chown terminated with error code %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1835,6 +1811,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users Users diff --git a/lang/calamares_eo.ts b/lang/calamares_eo.ts index f057b5aca..ff2e18047 100644 --- a/lang/calamares_eo.ts +++ b/lang/calamares_eo.ts @@ -477,15 +477,21 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1202,22 +1178,22 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. NetInstallViewStep - + Package selection @@ -1835,6 +1811,24 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users diff --git a/lang/calamares_es.ts b/lang/calamares_es.ts index 909c5e4ca..47a1e6b06 100644 --- a/lang/calamares_es.ts +++ b/lang/calamares_es.ts @@ -478,15 +478,21 @@ Saldrá del instalador y se perderán todos los cambios. CommandList - + + Could not run command. No se pudo ejecutar el comando. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -651,70 +657,40 @@ Saldrá del instalador y se perderán todos los cambios. CreateUserJob - + Create user %1 Crear usuario %1 - + Create user <strong>%1</strong>. Crear usuario <strong>%1</strong>. - + Creating user %1. Creando usuario %1. - + Sudoers dir is not writable. El directorio de sudoers no dispone de permisos de escritura. - + Cannot create sudoers file for writing. No es posible crear el archivo de escritura para sudoers. - + Cannot chmod sudoers file. No es posible modificar los permisos de sudoers. - + Cannot open groups file for reading. No es posible abrir el archivo de grupos del sistema. - - - Cannot create user %1. - No se puede crear el usuario %1. - - - - useradd terminated with error code %1. - useradd terminó con código de error %1. - - - - Cannot add user %1 to groups: %2. - No se puede añadir al usuario %1 a los grupos: %2. - - - - usermod terminated with error code %1. - usermod finalizó con un código de error %1. - - - - Cannot set home directory ownership for user %1. - No se puede dar la propiedad del directorio home al usuario %1 - - - - chown terminated with error code %1. - chown terminó con código de error %1. - DeletePartitionJob @@ -1203,22 +1179,22 @@ Saldrá del instalador y se perderán todos los cambios. NetInstallPage - + Name Nombre - + Description Descripción - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalación a través de la Red. (Desactivada: no se ha podido obtener una lista de paquetes, comprueba tu conexión a la red) - + Network Installation. (Disabled: Received invalid groups data) Instalación de red. (Deshabilitada: Se recibieron grupos de datos no válidos) @@ -1226,7 +1202,7 @@ Saldrá del instalador y se perderán todos los cambios. NetInstallViewStep - + Package selection Selección de paquetes @@ -1836,6 +1812,24 @@ Saldrá del instalador y se perderán todos los cambios. Apariencia + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2524,7 +2518,7 @@ Salida: UsersViewStep - + Users Usuarios diff --git a/lang/calamares_es_MX.ts b/lang/calamares_es_MX.ts index ea1fff2c5..f6e76dc9a 100644 --- a/lang/calamares_es_MX.ts +++ b/lang/calamares_es_MX.ts @@ -480,15 +480,21 @@ El instalador terminará y se perderán todos los cambios. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -653,70 +659,40 @@ El instalador terminará y se perderán todos los cambios. CreateUserJob - + Create user %1 Crear usuario %1 - + Create user <strong>%1</strong>. Crear usuario <strong>%1</strong>. - + Creating user %1. Creando cuenta de susuario %1. - + Sudoers dir is not writable. El directorio "Sudoers" no es editable. - + Cannot create sudoers file for writing. No se puede crear el archivo sudoers para editarlo. - + Cannot chmod sudoers file. No se puede aplicar chmod al archivo sudoers. - + Cannot open groups file for reading. No se puede abrir el archivo groups para lectura. - - - Cannot create user %1. - No se puede crear el usuario %1. - - - - useradd terminated with error code %1. - useradd ha finalizado con elcódigo de error %1. - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - usermod ha terminado con el código de error %1 - - - - Cannot set home directory ownership for user %1. - No se pueden aplicar permisos de propiedad a la carpeta home para el usuario %1. - - - - chown terminated with error code %1. - chown ha finalizado con elcódigo de error %1. - DeletePartitionJob @@ -1205,22 +1181,22 @@ El instalador terminará y se perderán todos los cambios. NetInstallPage - + Name Nombre - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1228,7 +1204,7 @@ El instalador terminará y se perderán todos los cambios. NetInstallViewStep - + Package selection @@ -1838,6 +1814,24 @@ El instalador terminará y se perderán todos los cambios. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2524,7 +2518,7 @@ Output: UsersViewStep - + Users Usuarios diff --git a/lang/calamares_es_PR.ts b/lang/calamares_es_PR.ts index 1208d9a82..7abee6088 100644 --- a/lang/calamares_es_PR.ts +++ b/lang/calamares_es_PR.ts @@ -476,15 +476,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -649,70 +655,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1201,22 +1177,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1224,7 +1200,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1834,6 +1810,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2519,7 +2513,7 @@ Output: UsersViewStep - + Users diff --git a/lang/calamares_et.ts b/lang/calamares_et.ts index 6fb5a0625..e56118622 100644 --- a/lang/calamares_et.ts +++ b/lang/calamares_et.ts @@ -477,15 +477,21 @@ Installija sulgub ja kõik muutused kaovad. CommandList - + + Could not run command. Käsku ei saanud käivitada. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Installija sulgub ja kõik muutused kaovad. CreateUserJob - + Create user %1 Loo kasutaja %1 - + Create user <strong>%1</strong>. Loo kasutaja <strong>%1</strong>. - + Creating user %1. Loon kasutajat %1. - + Sudoers dir is not writable. Sudoja tee ei ole kirjutatav. - + Cannot create sudoers file for writing. Sudoja faili ei saa kirjutamiseks luua. - + Cannot chmod sudoers file. Sudoja faili ei saa chmod-ida. - + Cannot open groups file for reading. Grupifaili ei saa lugemiseks avada. - - - Cannot create user %1. - Kasutajat %1 ei saa luua. - - - - useradd terminated with error code %1. - useradd peatatud veakoodiga %1. - - - - Cannot add user %1 to groups: %2. - Kasutajat %1 ei saa lisada gruppidesse: %2. - - - - usermod terminated with error code %1. - usermod peatatud veakoodiga %1. - - - - Cannot set home directory ownership for user %1. - Kasutajale %1 ei saa kodukausta omandust määrata. - - - - chown terminated with error code %1. - chown peatatud veakoodiga %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Installija sulgub ja kõik muutused kaovad. NetInstallPage - + Name Nimi - + Description Kirjeldus - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Võrguinstall. (Keelatud: paketinimistute saamine ebaõnnestus, kontrolli oma võrguühendust) - + Network Installation. (Disabled: Received invalid groups data) Võrguinstall. (Keelatud: vastu võetud sobimatud grupiandmed) @@ -1225,7 +1201,7 @@ Installija sulgub ja kõik muutused kaovad. NetInstallViewStep - + Package selection Paketivalik @@ -1835,6 +1811,24 @@ Installija sulgub ja kõik muutused kaovad. Välimus-ja-tunnetus + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2523,7 +2517,7 @@ Väljund: UsersViewStep - + Users Kasutajad diff --git a/lang/calamares_eu.ts b/lang/calamares_eu.ts index b904080dc..7c40917d2 100644 --- a/lang/calamares_eu.ts +++ b/lang/calamares_eu.ts @@ -476,15 +476,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -649,70 +655,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Sortu %1 erabiltzailea - + Create user <strong>%1</strong>. - + Creating user %1. %1 erabiltzailea sortzen. - + Sudoers dir is not writable. Ezin da sudoers direktorioan idatzi. - + Cannot create sudoers file for writing. Ezin da sudoers fitxategia sortu bertan idazteko. - + Cannot chmod sudoers file. Ezin zaio chmod egin sudoers fitxategiari. - + Cannot open groups file for reading. Ezin da groups fitxategia ireki berau irakurtzeko. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1201,22 +1177,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name Izena - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1224,7 +1200,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1834,6 +1810,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2519,7 +2513,7 @@ Output: UsersViewStep - + Users Erabiltzaileak diff --git a/lang/calamares_fa.ts b/lang/calamares_fa.ts index bf4a89baf..60e59dbc1 100644 --- a/lang/calamares_fa.ts +++ b/lang/calamares_fa.ts @@ -476,15 +476,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -649,70 +655,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1201,22 +1177,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1224,7 +1200,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1834,6 +1810,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2519,7 +2513,7 @@ Output: UsersViewStep - + Users diff --git a/lang/calamares_fi_FI.ts b/lang/calamares_fi_FI.ts index b4356ffd3..5e89d75f9 100644 --- a/lang/calamares_fi_FI.ts +++ b/lang/calamares_fi_FI.ts @@ -477,15 +477,21 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. CreateUserJob - + Create user %1 Luo käyttäjä %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. Ei voitu kirjoittaa Sudoers -hakemistoon. - + Cannot create sudoers file for writing. Ei voida luoda sudoers -tiedostoa kirjoitettavaksi. - + Cannot chmod sudoers file. Ei voida tehdä käyttöoikeuden muutosta sudoers -tiedostolle. - + Cannot open groups file for reading. Ei voida avata ryhmätiedostoa luettavaksi. - - - Cannot create user %1. - Käyttäjää %1 ei voi luoda. - - - - useradd terminated with error code %1. - useradd päättyi virhekoodilla %1. - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - usermod päättyi virhekoodilla %1. - - - - Cannot set home directory ownership for user %1. - Ei voida asettaa kotihakemiston omistusoikeutta käyttäjälle %1. - - - - chown terminated with error code %1. - chown päättyi virhekoodilla %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. NetInstallPage - + Name Nimi - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. NetInstallViewStep - + Package selection @@ -1835,6 +1811,24 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users Käyttäjät diff --git a/lang/calamares_fr.ts b/lang/calamares_fr.ts index dbc00a823..f9796a5c9 100644 --- a/lang/calamares_fr.ts +++ b/lang/calamares_fr.ts @@ -477,15 +477,21 @@ L'installateur se fermera et les changements seront perdus. CommandList - + + Could not run command. La commande n'a pas pu être exécutée. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ L'installateur se fermera et les changements seront perdus. CreateUserJob - + Create user %1 Créer l'utilisateur %1 - + Create user <strong>%1</strong>. Créer l'utilisateur <strong>%1</strong>. - + Creating user %1. Création de l'utilisateur %1. - + Sudoers dir is not writable. Le répertoire Superutilisateur n'est pas inscriptible. - + Cannot create sudoers file for writing. Impossible de créer le fichier sudoers en écriture. - + Cannot chmod sudoers file. Impossible d'exécuter chmod sur le fichier sudoers. - + Cannot open groups file for reading. Impossible d'ouvrir le fichier groups en lecture. - - - Cannot create user %1. - Impossible de créer l'utilisateur %1. - - - - useradd terminated with error code %1. - useradd s'est terminé avec le code erreur %1. - - - - Cannot add user %1 to groups: %2. - Impossible d'ajouter l'utilisateur %1 au groupe %2. - - - - usermod terminated with error code %1. - usermod s'est terminé avec le code erreur %1. - - - - Cannot set home directory ownership for user %1. - Impossible de définir le propriétaire du répertoire home pour l'utilisateur %1. - - - - chown terminated with error code %1. - chown s'est terminé avec le code erreur %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ L'installateur se fermera et les changements seront perdus. NetInstallPage - + Name Nom - + Description Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Installation par le réseau (Désactivée : impossible de récupérer leslistes de paquets, vérifiez la connexion réseau) - + Network Installation. (Disabled: Received invalid groups data) Installation par le réseau. (Désactivée : données de groupes reçues invalides) @@ -1225,7 +1201,7 @@ L'installateur se fermera et les changements seront perdus. NetInstallViewStep - + Package selection Sélection des paquets @@ -1836,6 +1812,24 @@ Vous pouvez obtenir un aperçu des différentes apparences en cliquant sur celle Apparence + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2524,7 +2518,7 @@ Sortie UsersViewStep - + Users Utilisateurs diff --git a/lang/calamares_fr_CH.ts b/lang/calamares_fr_CH.ts index 7ec7a710e..3b220a4e9 100644 --- a/lang/calamares_fr_CH.ts +++ b/lang/calamares_fr_CH.ts @@ -476,15 +476,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -649,70 +655,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1201,22 +1177,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1224,7 +1200,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1834,6 +1810,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2519,7 +2513,7 @@ Output: UsersViewStep - + Users diff --git a/lang/calamares_gl.ts b/lang/calamares_gl.ts index 28cb9a787..9a2e365c0 100644 --- a/lang/calamares_gl.ts +++ b/lang/calamares_gl.ts @@ -478,15 +478,21 @@ O instalador pecharase e perderanse todos os cambios. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -651,70 +657,40 @@ O instalador pecharase e perderanse todos os cambios. CreateUserJob - + Create user %1 Crear o usuario %1 - + Create user <strong>%1</strong>. Crear usario <strong>%1</strong> - + Creating user %1. Creación do usuario %1. - + Sudoers dir is not writable. O directorio sudoers non ten permisos de escritura. - + Cannot create sudoers file for writing. Non foi posible crear o arquivo de sudoers. - + Cannot chmod sudoers file. Non se puideron cambiar os permisos do arquivo sudoers. - + Cannot open groups file for reading. Non foi posible ler o arquivo grupos. - - - Cannot create user %1. - Non foi posible crear o usuario %1. - - - - useradd terminated with error code %1. - useradd terminou co código de erro %1. - - - - Cannot add user %1 to groups: %2. - Non foi posible engadir o usuario %1 ós grupos: %2. - - - - usermod terminated with error code %1. - usermod terminou co código de erro %1. - - - - Cannot set home directory ownership for user %1. - Non foi posible asignar o directorio home como propio para o usuario %1. - - - - chown terminated with error code %1. - chown terminou co código de erro %1. - DeletePartitionJob @@ -1203,22 +1179,22 @@ O instalador pecharase e perderanse todos os cambios. NetInstallPage - + Name Nome - + Description Descripción - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Installación por rede. (Desactivadas. Non se pudo recupera-la lista de pacotes, comprobe a sua conexión a rede) - + Network Installation. (Disabled: Received invalid groups data) @@ -1226,7 +1202,7 @@ O instalador pecharase e perderanse todos os cambios. NetInstallViewStep - + Package selection Selección de pacotes. @@ -1836,6 +1812,24 @@ O instalador pecharase e perderanse todos os cambios. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2521,7 +2515,7 @@ Output: UsersViewStep - + Users Usuarios diff --git a/lang/calamares_gu.ts b/lang/calamares_gu.ts index e53370b9e..f5fe5932d 100644 --- a/lang/calamares_gu.ts +++ b/lang/calamares_gu.ts @@ -476,15 +476,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -649,70 +655,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1201,22 +1177,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1224,7 +1200,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1834,6 +1810,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2519,7 +2513,7 @@ Output: UsersViewStep - + Users diff --git a/lang/calamares_he.ts b/lang/calamares_he.ts index ef788f793..da62f86d6 100644 --- a/lang/calamares_he.ts +++ b/lang/calamares_he.ts @@ -477,15 +477,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 צור משתמש %1 - + Create user <strong>%1</strong>. צור משתמש <strong>%1</strong>. - + Creating user %1. יוצר משתמש %1. - + Sudoers dir is not writable. תיקיית מנהלי המערכת לא ניתנת לכתיבה. - + Cannot create sudoers file for writing. לא ניתן ליצור את קובץ מנהלי המערכת לכתיבה. - + Cannot chmod sudoers file. לא ניתן לשנות את מאפייני קובץ מנהלי המערכת. - + Cannot open groups file for reading. לא ניתן לפתוח את קובץ הקבוצות לקריאה. - - - Cannot create user %1. - לא ניתן ליצור משתמש %1. - - - - useradd terminated with error code %1. - פקודת יצירת המשתמש, useradd, נכשלה עם קוד יציאה %1. - - - - Cannot add user %1 to groups: %2. - לא ניתן להוסיף את המשתמש %1 לקבוצות: %2. - - - - usermod terminated with error code %1. - פקודת שינוי מאפייני המשתמש, usermod, נכשלה עם קוד יציאה %1. - - - - Cannot set home directory ownership for user %1. - לא ניתן להגדיר בעלות על תיקיית הבית עבור משתמש %1. - - - - chown terminated with error code %1. - פקודת שינוי בעלות, chown, נכשלה עם קוד יציאה %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name שם - + Description תיאור - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) התקנת רשת. (מנוטרלת: לא ניתן לאחזר רשימות של חבילות תוכנה, אנא בדוק את חיבורי הרשת) - + Network Installation. (Disabled: Received invalid groups data) התקנה מהרשת. (מנוטרל: התקבל מידע שגוי בנושא הקבוצות) @@ -1225,7 +1201,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection בחירת חבילות @@ -1835,6 +1811,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users משתמשים diff --git a/lang/calamares_hi.ts b/lang/calamares_hi.ts index 71e7ce3e8..eab89c1f4 100644 --- a/lang/calamares_hi.ts +++ b/lang/calamares_hi.ts @@ -477,15 +477,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. कमांड run नहीं की जा सकी। - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1202,22 +1178,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1835,6 +1811,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users diff --git a/lang/calamares_hr.ts b/lang/calamares_hr.ts index 267fbe127..6fc3c0645 100644 --- a/lang/calamares_hr.ts +++ b/lang/calamares_hr.ts @@ -477,15 +477,21 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. CommandList - + + Could not run command. Ne mogu pokrenuti naredbu. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Naredba se pokreće u okruženju domaćina i treba znati korijenski put, međutim, rootMountPoint nije definiran. + + + The command needs to know the user's name, but no username is defined. + Naredba treba znati ime korisnika, ali nije definirano korisničko ime. + ContextualProcessJob @@ -650,70 +656,40 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. CreateUserJob - + Create user %1 Stvori korisnika %1 - + Create user <strong>%1</strong>. Stvori korisnika <strong>%1</strong>. - + Creating user %1. Stvaram korisnika %1. - + Sudoers dir is not writable. Po sudoers direktoriju nije moguće spremati. - + Cannot create sudoers file for writing. Ne mogu stvoriti sudoers datoteku za pisanje. - + Cannot chmod sudoers file. Ne mogu chmod sudoers datoteku. - + Cannot open groups file for reading. Ne mogu otvoriti groups datoteku za čitanje. - - - Cannot create user %1. - Ne mogu stvoriti korisnika %1. - - - - useradd terminated with error code %1. - useradd je prestao s radom sa greškom koda %1. - - - - Cannot add user %1 to groups: %2. - Ne mogu dodati korisnika %1 u grupe: %2. - - - - usermod terminated with error code %1. - korisnički mod je prekinut s greškom %1. - - - - Cannot set home directory ownership for user %1. - Ne mogu postaviti vlasništvo radnog direktorija za korisnika %1. - - - - chown terminated with error code %1. - chown je prestao s radom sa greškom koda %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. NetInstallPage - + Name Ime - + Description Opis - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Mrežna instalacija. (Onemogućeno: Ne mogu dohvatiti listu paketa, provjerite da li ste spojeni na mrežu) - + Network Installation. (Disabled: Received invalid groups data) Mrežna instalacija. (Onemogućeno: Primanje nevažećih podataka o grupama) @@ -1225,7 +1201,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. NetInstallViewStep - + Package selection Odabir paketa @@ -1835,6 +1811,24 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Izgled + + PreserveFiles + + + Saving files for later ... + Spremanje datoteka za kasnije ... + + + + No files configured to save for later. + Nema datoteka konfiguriranih za spremanje za kasnije. + + + + Not all of the configured files could be preserved. + Nije moguće sačuvati sve konfigurirane datoteke. + + ProcessResult @@ -2523,7 +2517,7 @@ Izlaz: UsersViewStep - + Users Korisnici diff --git a/lang/calamares_hu.ts b/lang/calamares_hu.ts index c5d3aeb76..6def290b1 100644 --- a/lang/calamares_hu.ts +++ b/lang/calamares_hu.ts @@ -478,15 +478,21 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l CommandList - + + Could not run command. A parancsot nem lehet futtatni. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -651,70 +657,40 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l CreateUserJob - + Create user %1 %1 nevű felhasználó létrehozása - + Create user <strong>%1</strong>. <strong>%1</strong> nevű felhasználó létrehozása. - + Creating user %1. %1 nevű felhasználó létrehozása - + Sudoers dir is not writable. Sudoers mappa nem írható. - + Cannot create sudoers file for writing. Nem lehet sudoers fájlt létrehozni írásra. - + Cannot chmod sudoers file. Nem lehet a sudoers fájlt "chmod" -olni. - + Cannot open groups file for reading. Nem lehet a groups fájlt megnyitni olvasásra. - - - Cannot create user %1. - Nem lehet a %1 felhasználót létrehozni. - - - - useradd terminated with error code %1. - useradd megszakítva %1 hibakóddal. - - - - Cannot add user %1 to groups: %2. - Nem lehet a %1 felhasználót létrehozni a %2 csoportban. - - - - usermod terminated with error code %1. - usermod megszakítva %1 hibakóddal. - - - - Cannot set home directory ownership for user %1. - Nem lehet a home könyvtár tulajdonos jogosultságát beállítani %1 felhasználónak. - - - - chown terminated with error code %1. - chown megszakítva %1 hibakóddal. - DeletePartitionJob @@ -1203,22 +1179,22 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l NetInstallPage - + Name Név - + Description Leírás - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Hálózati telepítés. (Kikapcsolva: A csomagokat nem lehet letölteni, ellenőrizd a hálózati kapcsolatot) - + Network Installation. (Disabled: Received invalid groups data) Hálózati Telepítés. (Letiltva: Hibás adat csoportok fogadva) @@ -1226,7 +1202,7 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l NetInstallViewStep - + Package selection Csomag választása @@ -1836,6 +1812,24 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2522,7 +2516,7 @@ Calamares hiba %1. UsersViewStep - + Users Felhasználók diff --git a/lang/calamares_id.ts b/lang/calamares_id.ts index 0c5816d82..ebfb416c3 100644 --- a/lang/calamares_id.ts +++ b/lang/calamares_id.ts @@ -479,15 +479,21 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. CommandList - + + Could not run command. Tidak dapat menjalankan perintah - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -652,70 +658,40 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. CreateUserJob - + Create user %1 Buat pengguna %1 - + Create user <strong>%1</strong>. Buat pengguna <strong>%1</strong>. - + Creating user %1. Membuat pengguna %1. - + Sudoers dir is not writable. Direktori sudoers tidak dapat ditulis. - + Cannot create sudoers file for writing. Tidak dapat membuat berkas sudoers untuk ditulis. - + Cannot chmod sudoers file. Tidak dapat chmod berkas sudoers. - + Cannot open groups file for reading. Tidak dapat membuka berkas groups untuk dibaca. - - - Cannot create user %1. - Tidak dapat membuat pengguna %1. - - - - useradd terminated with error code %1. - useradd dihentikan dengan kode kesalahan %1. - - - - Cannot add user %1 to groups: %2. - Tak bisa menambahkan pengguna %1 ke kelompok: %2. - - - - usermod terminated with error code %1. - usermod terhenti dengan kode galat %1. - - - - Cannot set home directory ownership for user %1. - Tidak dapat menyetel kepemilikan direktori home untuk pengguna %1. - - - - chown terminated with error code %1. - chown dihentikan dengan kode kesalahan %1. - DeletePartitionJob @@ -1204,22 +1180,22 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. NetInstallPage - + Name Nama - + Description Deskripsi - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Pemasangan Jaringan. (Dinonfungsikan: Tak mampu menarik daftar paket, periksa sambungan jaringanmu) - + Network Installation. (Disabled: Received invalid groups data) Pemasangan jaringan. (Menonaktifkan: Penerimaan kelompok data yang tidak sah) @@ -1227,7 +1203,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. NetInstallViewStep - + Package selection Pemilihan paket @@ -1837,6 +1813,24 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Lihat-dan-Rasakan + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2525,7 +2519,7 @@ Keluaran: UsersViewStep - + Users Pengguna diff --git a/lang/calamares_is.ts b/lang/calamares_is.ts index cec03d0c2..5a377c5f1 100644 --- a/lang/calamares_is.ts +++ b/lang/calamares_is.ts @@ -477,15 +477,21 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. CreateUserJob - + Create user %1 Búa til notanda %1 - + Create user <strong>%1</strong>. Búa til notanda <strong>%1</strong>. - + Creating user %1. Bý til notanda %1. - + Sudoers dir is not writable. Sudoers dir er ekki skrifanleg. - + Cannot create sudoers file for writing. Get ekki búið til sudoers skrá til að lesa. - + Cannot chmod sudoers file. Get ekki chmod sudoers skrá. - + Cannot open groups file for reading. Get ekki opnað hópa skrá til að lesa. - - - Cannot create user %1. - Get ekki búið til notanda %1. - - - - useradd terminated with error code %1. - useradd endaði með villu kóðann %1. - - - - Cannot add user %1 to groups: %2. - Get ekki bætt við notanda %1 til hóps: %2. - - - - usermod terminated with error code %1. - usermod endaði með villu kóðann %1. - - - - Cannot set home directory ownership for user %1. - Get ekki stillt heimasvæðis eignarhald fyrir notandann %1. - - - - chown terminated with error code %1. - chown endaði með villu kóðann %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. NetInstallPage - + Name Heiti - + Description Lýsing - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. NetInstallViewStep - + Package selection Valdir pakkar @@ -1835,6 +1811,24 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users Notendur diff --git a/lang/calamares_it_IT.ts b/lang/calamares_it_IT.ts index e691e62b6..889f60c97 100644 --- a/lang/calamares_it_IT.ts +++ b/lang/calamares_it_IT.ts @@ -477,15 +477,21 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno CommandList - + + Could not run command. Impossibile eseguire il comando. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno CreateUserJob - + Create user %1 Creare l'utente %1 - + Create user <strong>%1</strong>. Creare l'utente <strong>%1</strong> - + Creating user %1. Creazione utente %1. - + Sudoers dir is not writable. La cartella sudoers non è scrivibile. - + Cannot create sudoers file for writing. Impossibile creare il file sudoers in scrittura. - + Cannot chmod sudoers file. Impossibile eseguire chmod sul file sudoers. - + Cannot open groups file for reading. Impossibile aprire il file groups in lettura. - - - Cannot create user %1. - Impossibile creare l'utente %1. - - - - useradd terminated with error code %1. - useradd si è chiuso con codice di errore %1. - - - - Cannot add user %1 to groups: %2. - Impossibile aggiungere l'utente %1 ai gruppi: %2. - - - - usermod terminated with error code %1. - usermod è terminato con codice di errore: %1. - - - - Cannot set home directory ownership for user %1. - Impossibile impostare i diritti sulla cartella home per l'utente %1. - - - - chown terminated with error code %1. - chown si è chiuso con codice di errore %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno NetInstallPage - + Name Nome - + Description Descrizione - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Installazione di rete. (Disabilitata: impossibile recuperare le liste dei pacchetti, controllare la connessione di rete) - + Network Installation. (Disabled: Received invalid groups data) Installazione di rete. (Disabilitata: Ricevuti dati non validi sui gruppi) @@ -1225,7 +1201,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno NetInstallViewStep - + Package selection Selezione del pacchetto @@ -1835,6 +1811,24 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Tema + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2522,7 +2516,7 @@ Output: UsersViewStep - + Users Utenti diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index 589d66db2..e28b72dc9 100644 --- a/lang/calamares_ja.ts +++ b/lang/calamares_ja.ts @@ -477,15 +477,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. コマンドを実行できませんでした。 - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 ユーザー %1 を作成 - + Create user <strong>%1</strong>. ユーザー <strong>%1</strong> を作成。 - + Creating user %1. ユーザー %1 を作成中。 - + Sudoers dir is not writable. sudoers ディレクトリは書き込み可能ではありません。 - + Cannot create sudoers file for writing. sudoersファイルを作成できません。 - + Cannot chmod sudoers file. sudoersファイルの権限を変更できません。 - + Cannot open groups file for reading. groups ファイルを読み込めません。 - - - Cannot create user %1. - ユーザー %1 を作成できません。 - - - - useradd terminated with error code %1. - エラーコード %1 によりuseraddを中止しました。 - - - - Cannot add user %1 to groups: %2. - ユーザー %1 をグループに追加することができません。: %2 - - - - usermod terminated with error code %1. - エラーコード %1 によりusermodが停止しました。 - - - - Cannot set home directory ownership for user %1. - ユーザー %1 のホームディレクトリの所有者を設定できません。 - - - - chown terminated with error code %1. - エラーコード %1 によりchown は中止しました。 - DeletePartitionJob @@ -1203,22 +1179,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name 名前 - + Description 説明 - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) ネットワークインストール。(無効: パッケージリストを取得できません。ネットワーク接続を確認してください。) - + Network Installation. (Disabled: Received invalid groups data) ネットワークインストール (不可: 無効なグループデータを受け取りました) @@ -1226,7 +1202,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection パッケージの選択 @@ -1836,6 +1812,24 @@ The installer will quit and all changes will be lost. Look-and-Feel + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2524,7 +2518,7 @@ Output: UsersViewStep - + Users ユーザー情報 diff --git a/lang/calamares_kk.ts b/lang/calamares_kk.ts index b63a348ae..730129017 100644 --- a/lang/calamares_kk.ts +++ b/lang/calamares_kk.ts @@ -476,15 +476,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -649,70 +655,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1201,22 +1177,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1224,7 +1200,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1834,6 +1810,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2519,7 +2513,7 @@ Output: UsersViewStep - + Users Пайдаланушылар diff --git a/lang/calamares_kn.ts b/lang/calamares_kn.ts index e67824b9c..5c8be86ba 100644 --- a/lang/calamares_kn.ts +++ b/lang/calamares_kn.ts @@ -476,15 +476,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -649,70 +655,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1201,22 +1177,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1224,7 +1200,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1834,6 +1810,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2519,7 +2513,7 @@ Output: UsersViewStep - + Users diff --git a/lang/calamares_lo.ts b/lang/calamares_lo.ts index ba18f4e33..13eddda4b 100644 --- a/lang/calamares_lo.ts +++ b/lang/calamares_lo.ts @@ -476,15 +476,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -649,70 +655,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1201,22 +1177,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1224,7 +1200,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1834,6 +1810,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2519,7 +2513,7 @@ Output: UsersViewStep - + Users diff --git a/lang/calamares_lt.ts b/lang/calamares_lt.ts index 280248bd5..24daa7a86 100644 --- a/lang/calamares_lt.ts +++ b/lang/calamares_lt.ts @@ -477,15 +477,21 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. CommandList - + + Could not run command. Nepavyko paleisti komandos. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Komanda yra vykdoma serverio aplinkoje ir turi žinoti šaknies kelią, tačiau nėra apibrėžtas joks rootMountPoint. + + + The command needs to know the user's name, but no username is defined. + Komanda turi žinoti naudotojo vardą, tačiau nebuvo apibrėžtas joks naudotojo vardas. + ContextualProcessJob @@ -650,70 +656,40 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. CreateUserJob - + Create user %1 Sukurti naudotoją %1 - + Create user <strong>%1</strong>. Sukurti naudotoją <strong>%1</strong>. - + Creating user %1. Kuriamas naudotojas %1. - + Sudoers dir is not writable. Nepavyko įrašymui sukurti katalogo sudoers. - + Cannot create sudoers file for writing. Nepavyko įrašymui sukurti failo sudoers. - + Cannot chmod sudoers file. Nepavyko pritaikyti chmod failui sudoers. - + Cannot open groups file for reading. Nepavyko skaitymui atverti grupių failo. - - - Cannot create user %1. - Nepavyko sukurti naudotojo %1. - - - - useradd terminated with error code %1. - komanda useradd nutraukė darbą dėl klaidos kodo %1. - - - - Cannot add user %1 to groups: %2. - Nepavyksta pridėti naudotojo %1 į grupes: %2. - - - - usermod terminated with error code %1. - usermod nutraukta su klaidos kodu %1. - - - - Cannot set home directory ownership for user %1. - Nepavyko nustatyti home katalogo nuosavybės naudotojui %1. - - - - chown terminated with error code %1. - komanda chown nutraukė darbą dėl klaidos kodo %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. NetInstallPage - + Name Pavadinimas - + Description Aprašas - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Tinklo diegimas. (Išjungta: Nepavyksta gauti paketų sąrašus, patikrinkite savo tinklo ryšį) - + Network Installation. (Disabled: Received invalid groups data) Tinklo diegimas. (Išjungtas: Gauti neteisingi grupių duomenys) @@ -1225,7 +1201,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. NetInstallViewStep - + Package selection Paketų pasirinkimas @@ -1835,6 +1811,24 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Išvaizda ir turinys + + PreserveFiles + + + Saving files for later ... + Įrašomi failai vėlesniam naudojimui ... + + + + No files configured to save for later. + Nėra sukonfigūruota įrašyti jokius failus vėlesniam naudojimui. + + + + Not all of the configured files could be preserved. + Ne visus iš sukonfigūruotų failų pavyko išsaugoti. + + ProcessResult @@ -2523,7 +2517,7 @@ Išvestis: UsersViewStep - + Users Naudotojai diff --git a/lang/calamares_mr.ts b/lang/calamares_mr.ts index 21d468067..46700c6fd 100644 --- a/lang/calamares_mr.ts +++ b/lang/calamares_mr.ts @@ -476,15 +476,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -649,70 +655,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. -  %1 या एरर कोडसहित usermod रद्द केले. - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1201,22 +1177,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1224,7 +1200,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1834,6 +1810,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2519,7 +2513,7 @@ Output: UsersViewStep - + Users वापरकर्ते diff --git a/lang/calamares_nb.ts b/lang/calamares_nb.ts index 6dfebb4ff..e2279ec0d 100644 --- a/lang/calamares_nb.ts +++ b/lang/calamares_nb.ts @@ -477,15 +477,21 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. CreateUserJob - + Create user %1 Opprett bruker %1 - + Create user <strong>%1</strong>. - + Creating user %1. Oppretter bruker %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - Klarte ikke opprette bruker %1 - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1202,22 +1178,22 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. NetInstallViewStep - + Package selection @@ -1835,6 +1811,24 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users Brukere diff --git a/lang/calamares_nl.ts b/lang/calamares_nl.ts index 090ca9d9e..eadf349a9 100644 --- a/lang/calamares_nl.ts +++ b/lang/calamares_nl.ts @@ -477,15 +477,21 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. CreateUserJob - + Create user %1 Maak gebruiker %1 - + Create user <strong>%1</strong>. Maak gebruiker <strong>%1</strong> - + Creating user %1. Gebruiker %1 aanmaken. - + Sudoers dir is not writable. Sudoers map is niet schrijfbaar. - + Cannot create sudoers file for writing. Kan het bestand sudoers niet aanmaken. - + Cannot chmod sudoers file. chmod sudoers gefaald. - + Cannot open groups file for reading. Kan het bestand groups niet lezen. - - - Cannot create user %1. - Kan gebruiker %1 niet aanmaken. - - - - useradd terminated with error code %1. - useradd is gestopt met foutcode %1. - - - - Cannot add user %1 to groups: %2. - Kan gebruiker %1 niet toevoegen aan groepen: %2. - - - - usermod terminated with error code %1. - usermod is gestopt met foutcode %1. - - - - Cannot set home directory ownership for user %1. - Kan eigendomsrecht gebruikersmap niet instellen voor gebruiker %1. - - - - chown terminated with error code %1. - chown is gestopt met foutcode %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. NetInstallPage - + Name Naam - + Description Beschrijving - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Netwerkinstallatie. (Uitgeschakeld: kon de pakketlijsten niet binnenhalen, controleer de netwerkconnectie) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. NetInstallViewStep - + Package selection Pakketkeuze @@ -1835,6 +1811,24 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users Gebruikers diff --git a/lang/calamares_pl.ts b/lang/calamares_pl.ts index a0473e590..ea5512300 100644 --- a/lang/calamares_pl.ts +++ b/lang/calamares_pl.ts @@ -477,15 +477,21 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. CommandList - + + Could not run command. Nie można wykonać polecenia. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Polecenie uruchomione jest w środowisku hosta i musi znać ścieżkę katalogu głównego, jednakże nie został określony punkt montowania katalogu głównego (root). + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. CreateUserJob - + Create user %1 Utwórz użytkownika %1 - + Create user <strong>%1</strong>. Utwórz użytkownika <strong>%1</strong>. - + Creating user %1. Tworzenie użytkownika %1. - + Sudoers dir is not writable. Katalog sudoers nie ma prawa do zapisu. - + Cannot create sudoers file for writing. Nie można utworzyć pliku sudoers z możliwością zapisu. - + Cannot chmod sudoers file. Nie można wykonać chmod na pliku sudoers. - + Cannot open groups file for reading. Nie można otworzyć pliku groups do odczytu. - - - Cannot create user %1. - Nie można utworzyć użytkownika %1. - - - - useradd terminated with error code %1. - Polecenie useradd zostało przerwane z kodem błędu %1. - - - - Cannot add user %1 to groups: %2. - Nie można dodać użytkownika %1 do grup: %2 - - - - usermod terminated with error code %1. - usermod zakończony z kodem błędu %1. - - - - Cannot set home directory ownership for user %1. - Nie można ustawić właściciela katalogu domowego dla użytkownika %1. - - - - chown terminated with error code %1. - Polecenie chown zostało przerwane z kodem błędu %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. NetInstallPage - + Name Nazwa - + Description Opis - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalacja sieciowa. (Wyłączona: Nie można pobrać listy pakietów, sprawdź swoje połączenie z siecią) - + Network Installation. (Disabled: Received invalid groups data) Instalacja sieciowa. (Niedostępna: Otrzymano nieprawidłowe dane grupowe) @@ -1225,7 +1201,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. NetInstallViewStep - + Package selection Wybór pakietów @@ -1835,6 +1811,24 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Wygląd-i-Zachowanie + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2523,7 +2517,7 @@ Wyjście: UsersViewStep - + Users Użytkownicy diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index daaf821c8..f307c2e80 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -479,15 +479,21 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. CommandList - + + Could not run command. Não foi possível executar o comando. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. O comando é executado no ambiente do hospedeiro e precisa saber o caminho root, mas nenhum rootMountPoint foi definido. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -652,70 +658,40 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. CreateUserJob - + Create user %1 Criar usuário %1 - + Create user <strong>%1</strong>. Criar usuário <strong>%1</strong>. - + Creating user %1. Criando usuário %1. - + Sudoers dir is not writable. O diretório do sudoers não é gravável. - + Cannot create sudoers file for writing. Não foi possível criar arquivo sudoers para gravação. - + Cannot chmod sudoers file. Não foi possível utilizar chmod no arquivo sudoers. - + Cannot open groups file for reading. Não foi possível abrir arquivo de grupos para leitura. - - - Cannot create user %1. - Impossível criar o usuário %1. - - - - useradd terminated with error code %1. - useradd terminou com código de erro %1. - - - - Cannot add user %1 to groups: %2. - Não foi possível adicionar o usuário %1 aos grupos: %2. - - - - usermod terminated with error code %1. - O usermod terminou com o código de erro %1. - - - - Cannot set home directory ownership for user %1. - Impossível definir proprietário da pasta pessoal para o usuário %1. - - - - chown terminated with error code %1. - chown terminou com código de erro %1. - DeletePartitionJob @@ -1204,22 +1180,22 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. NetInstallPage - + Name Nome - + Description Descrição - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalação pela Rede. (Desabilitada: Não foi possível adquirir lista de pacotes, verifique sua conexão com a internet) - + Network Installation. (Disabled: Received invalid groups data) Instalação pela Rede. (Desabilitado: Recebidos dados de grupos inválidos) @@ -1227,7 +1203,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. NetInstallViewStep - + Package selection Seleção de pacotes @@ -1837,6 +1813,24 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Tema + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2525,7 +2519,7 @@ Saída: UsersViewStep - + Users Usuários diff --git a/lang/calamares_pt_PT.ts b/lang/calamares_pt_PT.ts index 270bc6b25..d08fc8a87 100644 --- a/lang/calamares_pt_PT.ts +++ b/lang/calamares_pt_PT.ts @@ -477,15 +477,21 @@ O instalador será encerrado e todas as alterações serão perdidas. CommandList - + + Could not run command. Não foi possível correr o comando. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. O comando corre no ambiente do host e precisa de conhecer o caminho root, mas nenhum Ponto de Montagem root está definido. + + + The command needs to know the user's name, but no username is defined. + O comando precisa de saber o nome do utilizador, mas não está definido nenhum nome de utilizador. + ContextualProcessJob @@ -650,70 +656,40 @@ O instalador será encerrado e todas as alterações serão perdidas. CreateUserJob - + Create user %1 Criar utilizador %1 - + Create user <strong>%1</strong>. Criar utilizador <strong>%1</strong>. - + Creating user %1. A criar utilizador %1. - + Sudoers dir is not writable. O diretório dos super utilizadores não é gravável. - + Cannot create sudoers file for writing. Impossível criar ficheiro do super utilizador para escrita. - + Cannot chmod sudoers file. Impossível de usar chmod no ficheiro dos super utilizadores. - + Cannot open groups file for reading. Impossível abrir ficheiro dos grupos para leitura. - - - Cannot create user %1. - Não é possível criar utilizador %1. - - - - useradd terminated with error code %1. - useradd terminou com código de erro %1. - - - - Cannot add user %1 to groups: %2. - Não é possível adicionar o utilizador %1 aos grupos: %2. - - - - usermod terminated with error code %1. - usermod terminou com código de erro %1. - - - - Cannot set home directory ownership for user %1. - Impossível definir permissão da pasta pessoal para o utilizador %1. - - - - chown terminated with error code %1. - chown terminou com código de erro %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ O instalador será encerrado e todas as alterações serão perdidas. NetInstallPage - + Name Nome - + Description Descrição - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalaçao de Rede. (Desativada: Incapaz de buscar listas de pacotes, verifique a sua ligação de rede) - + Network Installation. (Disabled: Received invalid groups data) Instalação de Rede. (Desativada: Recebeu dados de grupos inválidos) @@ -1225,7 +1201,7 @@ O instalador será encerrado e todas as alterações serão perdidas. NetInstallViewStep - + Package selection Seleção de pacotes @@ -1835,6 +1811,24 @@ O instalador será encerrado e todas as alterações serão perdidas.Aparência + + PreserveFiles + + + Saving files for later ... + A guardar ficheiros para mais tarde ... + + + + No files configured to save for later. + Nenhuns ficheiros configurados para guardar para mais tarde. + + + + Not all of the configured files could be preserved. + Nem todos os ficheiros configurados puderam ser preservados. + + ProcessResult @@ -2523,7 +2517,7 @@ Saída de Dados: UsersViewStep - + Users Utilizadores diff --git a/lang/calamares_ro.ts b/lang/calamares_ro.ts index f23907288..8364bf400 100644 --- a/lang/calamares_ro.ts +++ b/lang/calamares_ro.ts @@ -477,15 +477,21 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. CommandList - + + Could not run command. Nu s-a putut executa comanda. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. CreateUserJob - + Create user %1 Creează utilizatorul %1 - + Create user <strong>%1</strong>. Creează utilizatorul <strong>%1</strong>. - + Creating user %1. Se creează utilizator %1. - + Sudoers dir is not writable. Nu se poate scrie în dosarul sudoers. - + Cannot create sudoers file for writing. Nu se poate crea fișierul sudoers pentru scriere. - + Cannot chmod sudoers file. Nu se poate chmoda fișierul sudoers. - + Cannot open groups file for reading. Nu se poate deschide fișierul groups pentru citire. - - - Cannot create user %1. - Nu se poate crea utilizatorul %1. - - - - useradd terminated with error code %1. - useradd s-a terminat cu codul de eroare %1. - - - - Cannot add user %1 to groups: %2. - Nu s-a reușit adăugarea utilizatorului %1 la grupurile: %2 - - - - usermod terminated with error code %1. - usermod s-a terminat cu codul de eroare %1. - - - - Cannot set home directory ownership for user %1. - Nu se poate seta apartenența dosarului home pentru utilizatorul %1. - - - - chown terminated with error code %1. - chown s-a terminat cu codul de eroare %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. NetInstallPage - + Name Nume - + Description Despre - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalarea rețelei. (Dezactivat: Nu se pot obține listele de pachete, verificați conexiunea la rețea) - + Network Installation. (Disabled: Received invalid groups data) Instalare prin rețea. (Dezactivată: S-au recepționat grupuri de date invalide) @@ -1225,7 +1201,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. NetInstallViewStep - + Package selection Selecția pachetelor @@ -1838,6 +1814,24 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Interfață + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2526,7 +2520,7 @@ Output UsersViewStep - + Users Utilizatori diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts index db81fb3f4..4eb4ec417 100644 --- a/lang/calamares_ru.ts +++ b/lang/calamares_ru.ts @@ -476,15 +476,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. Не удалось выполнить команду. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -649,70 +655,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Создать учетную запись %1 - + Create user <strong>%1</strong>. Создать учетную запись <strong>%1</strong>. - + Creating user %1. Создается учетная запись %1. - + Sudoers dir is not writable. Каталог sudoers не доступен для записи. - + Cannot create sudoers file for writing. Не удалось записать файл sudoers. - + Cannot chmod sudoers file. Не удалось применить chmod к файлу sudoers. - + Cannot open groups file for reading. Не удалось открыть файл groups для чтения. - - - Cannot create user %1. - Не удалось создать учетную запись пользователя %1. - - - - useradd terminated with error code %1. - Команда useradd завершилась с кодом ошибки %1. - - - - Cannot add user %1 to groups: %2. - Не удается добавить пользователя %1 в группы: %2. - - - - usermod terminated with error code %1. - Команда usermod завершилась с кодом ошибки %1. - - - - Cannot set home directory ownership for user %1. - Не удалось задать владельца домашней папки пользователя %1. - - - - chown terminated with error code %1. - Команда chown завершилась с кодом ошибки %1. - DeletePartitionJob @@ -1201,22 +1177,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name Имя - + Description Описание - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Установка по сети. (Отключено: не удается получить список пакетов, проверьте сетевое подключение) - + Network Installation. (Disabled: Received invalid groups data) @@ -1224,7 +1200,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection Выбор пакетов @@ -1834,6 +1810,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2519,7 +2513,7 @@ Output: UsersViewStep - + Users Пользователи diff --git a/lang/calamares_sk.ts b/lang/calamares_sk.ts index 1d0f153cd..13a4d1d7b 100644 --- a/lang/calamares_sk.ts +++ b/lang/calamares_sk.ts @@ -477,15 +477,21 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. CommandList - + + Could not run command. Nepodarilo sa spustiť príkaz. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. CreateUserJob - + Create user %1 Vytvoriť používateľa %1 - + Create user <strong>%1</strong>. Vytvoriť používateľa <strong>%1</strong>. - + Creating user %1. Vytvára sa používateľ %1. - + Sudoers dir is not writable. Adresár Sudoers nie je zapisovateľný. - + Cannot create sudoers file for writing. Nedá sa vytvoriť súbor sudoers na zapisovanie. - + Cannot chmod sudoers file. Nedá sa vykonať príkaz chmod na súbori sudoers. - + Cannot open groups file for reading. Nedá sa otvoriť súbor skupín na čítanie. - - - Cannot create user %1. - Nedá sa vytvoriť používateľ %1. - - - - useradd terminated with error code %1. - Príkaz useradd ukončený s chybovým kódom %1. - - - - Cannot add user %1 to groups: %2. - Nedá sa pridať používateľ %1 do skupín: %2. - - - - usermod terminated with error code %1. - Príkaz usermod ukončený s chybovým kódom %1. - - - - Cannot set home directory ownership for user %1. - Nedá sa nastaviť vlastníctvo domovského adresára pre používateľa %1. - - - - chown terminated with error code %1. - Príkaz chown ukončený s chybovým kódom %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. NetInstallPage - + Name Názov - + Description Popis - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Sieťová inštalácia. (Zakázaná: Nie je možné získať zoznamy balíkov. Skontrolujte vaše sieťové pripojenie.) - + Network Installation. (Disabled: Received invalid groups data) Sieťová inštalácia. (Zakázaná: Boli prijaté neplatné údaje o skupinách) @@ -1225,7 +1201,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. NetInstallViewStep - + Package selection Výber balíkov @@ -1689,7 +1665,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Can not create new partition - + Nedá sa vytvoriť nový oddiel @@ -1835,6 +1811,24 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Vzhľad a dojem + + PreserveFiles + + + Saving files for later ... + Ukladajú sa súbory na neskôr... + + + + No files configured to save for later. + Žiadne konfigurované súbory pre uloženie na neskôr. + + + + Not all of the configured files could be preserved. + Nie všetky konfigurované súbory môžu byť uchované. + + ProcessResult @@ -2523,7 +2517,7 @@ Výstup: UsersViewStep - + Users Používatelia diff --git a/lang/calamares_sl.ts b/lang/calamares_sl.ts index 1bee31eae..1da5bd297 100644 --- a/lang/calamares_sl.ts +++ b/lang/calamares_sl.ts @@ -477,15 +477,21 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. CreateUserJob - + Create user %1 Ustvari uporabnika %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. Mapa sudoers ni zapisljiva. - + Cannot create sudoers file for writing. Ni mogoče ustvariti datoteke sudoers za pisanje. - + Cannot chmod sudoers file. Na datoteki sudoers ni mogoče izvesti opravila chmod. - + Cannot open groups file for reading. Datoteke skupin ni bilo mogoče odpreti za branje. - - - Cannot create user %1. - Ni mogoče ustvariti uporabnika %1. - - - - useradd terminated with error code %1. - useradd se je prekinil s kodo napake %1. - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - Ni mogoče nastaviti lastništva domače mape za uporabnika %1. - - - - chown terminated with error code %1. - chown se je prekinil s kodo napake %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. NetInstallPage - + Name Ime - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. NetInstallViewStep - + Package selection @@ -1835,6 +1811,24 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users diff --git a/lang/calamares_sq.ts b/lang/calamares_sq.ts index 7b118abb0..e1696323a 100644 --- a/lang/calamares_sq.ts +++ b/lang/calamares_sq.ts @@ -477,15 +477,21 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. CommandList - + + Could not run command. S’u xhirua dot urdhri. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Urdhri xhirohet në mjedisin strehë dhe është e nevojshme të dijë shtegun për rrënjën, por nuk ka rootMountPoint të përcaktuar. + + + The command needs to know the user's name, but no username is defined. + Urdhri lypset të dijë emrin e përdoruesit, por s’ka të përcaktuar emër përdoruesi. + ContextualProcessJob @@ -650,70 +656,40 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. CreateUserJob - + Create user %1 Krijo përdoruesin %1 - + Create user <strong>%1</strong>. Krijo përdoruesin <strong>%1</strong>. - + Creating user %1. Po krijohet përdoruesi %1. - + Sudoers dir is not writable. Drejtoria sudoers s’është e shkrueshme. - + Cannot create sudoers file for writing. S’krijohet dot kartelë sudoers për shkrim. - + Cannot chmod sudoers file. S’mund të kryhet chmod mbi kartelën sudoers. - + Cannot open groups file for reading. S’hapet dot kartelë grupesh për lexim. - - - Cannot create user %1. - S’krijohet dot përdoruesi %1. - - - - useradd terminated with error code %1. - useradd përfundoi me kod gabimi %1. - - - - Cannot add user %1 to groups: %2. - S’shton dot përdoruesin %1 te grupe: %2. - - - - usermod terminated with error code %1. - usermod përfundoi me kod gabimi %1. - - - - Cannot set home directory ownership for user %1. - S’caktohet dot pronësia e drejtorisë shtëpi për përdoruesin %1. - - - - chown terminated with error code %1. - chown përfundoi me kod gabimi %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. NetInstallPage - + Name Emër - + Description Përshkrim - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalim Nga Rrjeti. (U çaktivizua: S’arrihet të sillen lista paketash, kontrolloni lidhjen tuaj në rrjet) - + Network Installation. (Disabled: Received invalid groups data) Instalim Nga Rrjeti. (U çaktivizua: U morën të dhëna të pavlefshme grupesh) @@ -1225,7 +1201,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. NetInstallViewStep - + Package selection Përzgjedhje paketash @@ -1835,6 +1811,24 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Pamje-dhe-Ndjesi + + PreserveFiles + + + Saving files for later ... + Po ruhen kartela për më vonë ... + + + + No files configured to save for later. + S’ka kartela të formësuara për t’i ruajtur më vonë. + + + + Not all of the configured files could be preserved. + S’u mbajtën dot tërë kartelat e formësuara. + + ProcessResult @@ -2523,7 +2517,7 @@ Përfundim: UsersViewStep - + Users Përdorues diff --git a/lang/calamares_sr.ts b/lang/calamares_sr.ts index 31b13303b..669ed0ec3 100644 --- a/lang/calamares_sr.ts +++ b/lang/calamares_sr.ts @@ -477,15 +477,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Направи корисника %1 - + Create user <strong>%1</strong>. - + Creating user %1. Правим корисника %1 - + Sudoers dir is not writable. Није могуће писати у "Судоерс" директоријуму. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. Није могуће променити мод (chmod) над "судоерс" фајлом - + Cannot open groups file for reading. - - - Cannot create user %1. - Није могуће направити корисника %1. - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1202,22 +1178,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name Назив - + Description Опис - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection Избор пакета @@ -1835,6 +1811,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users Корисници diff --git a/lang/calamares_sr@latin.ts b/lang/calamares_sr@latin.ts index 564a10b08..96c30bf86 100644 --- a/lang/calamares_sr@latin.ts +++ b/lang/calamares_sr@latin.ts @@ -477,15 +477,21 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. CreateUserJob - + Create user %1 Napravi korisnika %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. Nemoguće mijenjati fajlove u sudoers direktorijumu - + Cannot create sudoers file for writing. Nemoguće napraviti sudoers fajl - + Cannot chmod sudoers file. Nemoguće uraditi chmod nad sudoers fajlom. - + Cannot open groups file for reading. Nemoguće otvoriti groups fajl - - - Cannot create user %1. - Nemoguće napraviti korisnika %1. - - - - useradd terminated with error code %1. - Komanda useradd prekinuta sa kodom greške %1 - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - Nemoguće postaviti vlasništvo nad početnim direktorijumom za korisnika %1. - - - - chown terminated with error code %1. - Komanda chown prekinuta sa kodom greške %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. NetInstallPage - + Name Naziv - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. NetInstallViewStep - + Package selection @@ -1835,6 +1811,24 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users Korisnici diff --git a/lang/calamares_sv.ts b/lang/calamares_sv.ts index 5ee786adc..e60aa4e03 100644 --- a/lang/calamares_sv.ts +++ b/lang/calamares_sv.ts @@ -477,15 +477,21 @@ Alla ändringar kommer att gå förlorade. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ Alla ändringar kommer att gå förlorade. CreateUserJob - + Create user %1 Skapar användare %1 - + Create user <strong>%1</strong>. Skapa användare <strong>%1</strong>. - + Creating user %1. Skapar användare %1 - + Sudoers dir is not writable. Sudoerkatalogen är inte skrivbar. - + Cannot create sudoers file for writing. Kunde inte skapa sudoerfil för skrivning. - + Cannot chmod sudoers file. Kunde inte chmodda sudoerfilen. - + Cannot open groups file for reading. Kunde inte öppna gruppfilen för läsning. - - - Cannot create user %1. - Kunde inte skapa användaren %1. - - - - useradd terminated with error code %1. - useradd stoppades med felkod %1. - - - - Cannot add user %1 to groups: %2. - Kan inte lägga till användare %1 till grupper: %2. - - - - usermod terminated with error code %1. - usermod avslutade med felkod %1. - - - - Cannot set home directory ownership for user %1. - Kunde inte ge användaren %1 äganderätt till sin hemkatalog. - - - - chown terminated with error code %1. - chown stoppades med felkod %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ Alla ändringar kommer att gå förlorade. NetInstallPage - + Name Namn - + Description Beskrivning - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Nätverksinstallation. (Inaktiverad: Kan inte hämta paketlistor, kontrollera nätverksanslutningen) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ Alla ändringar kommer att gå förlorade. NetInstallViewStep - + Package selection Paketval @@ -1835,6 +1811,24 @@ Alla ändringar kommer att gå förlorade. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users Användare diff --git a/lang/calamares_th.ts b/lang/calamares_th.ts index 9b8a95c00..cee8c5501 100644 --- a/lang/calamares_th.ts +++ b/lang/calamares_th.ts @@ -477,15 +477,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 สร้างผู้ใช้ %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. ไม่สามารถเขียนไดเรคทอรี Sudoers ได้ - + Cannot create sudoers file for writing. ไม่สามารถสร้างไฟล์ sudoers เพื่อเขียนได้ - + Cannot chmod sudoers file. ไม่สามารถ chmod ไฟล์ sudoers - + Cannot open groups file for reading. ไม่สามารถเปิดไฟล์ groups เพื่ออ่านได้ - - - Cannot create user %1. - ไม่สามารถสร้างผู้ใช้ %1 - - - - useradd terminated with error code %1. - useradd จบด้วยโค้ดข้อผิดพลาด %1 - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - usermod จบด้วยโค้ดข้อผิดพลาด %1 - - - - Cannot set home directory ownership for user %1. - ไม่สามารถตั้งค่าความเป็นเจ้าของไดเรคทอรี home สำหรับผู้ใช้ %1 - - - - chown terminated with error code %1. - chown จบด้วยโค้ดข้อผิดพลาด %1 - DeletePartitionJob @@ -1202,22 +1178,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name ชื่อ - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1225,7 +1201,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1835,6 +1811,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users ผู้ใช้ diff --git a/lang/calamares_tr_TR.ts b/lang/calamares_tr_TR.ts index 56a1fba88..d95659742 100644 --- a/lang/calamares_tr_TR.ts +++ b/lang/calamares_tr_TR.ts @@ -480,15 +480,21 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. CommandList - + + Could not run command. Komut çalıştırılamadı. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Komut, ana bilgisayar ortamında çalışır ve kök yolunu bilmesi gerekir, ancak kökMontajNoktası tanımlanmamıştır. + + + The command needs to know the user's name, but no username is defined. + Komutun kullanıcının adını bilmesi gerekir, ancak kullanıcı adı tanımlanmamıştır. + ContextualProcessJob @@ -653,70 +659,40 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. CreateUserJob - + Create user %1 %1 Kullanıcısı oluşturuluyor... - + Create user <strong>%1</strong>. <strong>%1</strong> kullanıcı oluştur. - + Creating user %1. %1 Kullanıcısı oluşturuluyor... - + Sudoers dir is not writable. Sudoers dosyası yazılabilir değil. - + Cannot create sudoers file for writing. sudoers dosyası oluşturulamadı ve yazılamadı. - + Cannot chmod sudoers file. Sudoers dosya izinleri ayarlanamadı. - + Cannot open groups file for reading. groups dosyası okunamadı. - - - Cannot create user %1. - %1 Kullanıcısı oluşturulamadı... - - - - useradd terminated with error code %1. - useradd komutu şu hata ile çöktü %1. - - - - Cannot add user %1 to groups: %2. - %1 Kullanıcısı şu gruba eklenemedi: %2. - - - - usermod terminated with error code %1. - usermod %1 hata koduyla çöktü. - - - - Cannot set home directory ownership for user %1. - %1 Kullanıcısı için ev dizini sahipliği ayarlanamadı. - - - - chown terminated with error code %1. - chown %1 hata koduyla sonlandırıldı. - DeletePartitionJob @@ -1205,22 +1181,22 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. NetInstallPage - + Name İsim - + Description Açıklama - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Ağ Üzerinden Kurulum. (Devre Dışı: Paket listeleri alınamıyor, ağ bağlantısını kontrol ediniz) - + Network Installation. (Disabled: Received invalid groups data) Ağ Kurulum. (Devre dışı: Geçersiz grup verileri alındı) @@ -1228,7 +1204,7 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. NetInstallViewStep - + Package selection Paket seçimi @@ -1839,6 +1815,24 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Look-and-Feel + + PreserveFiles + + + Saving files for later ... + Dosyalar daha sonrası için kaydediliyor ... + + + + No files configured to save for later. + Daha sonra kaydetmek için dosya yapılandırılmamış. + + + + Not all of the configured files could be preserved. + Yapılandırılmış dosyaların tümü korunamadı. + + ProcessResult @@ -2528,7 +2522,7 @@ Sistem güç kaynağına bağlı değil. UsersViewStep - + Users Kullanıcı Tercihleri diff --git a/lang/calamares_uk.ts b/lang/calamares_uk.ts index 2238af0ba..065ba5c95 100644 --- a/lang/calamares_uk.ts +++ b/lang/calamares_uk.ts @@ -477,15 +477,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -650,70 +656,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Створити користувача %1 - + Create user <strong>%1</strong>. Створити користувача <strong>%1</strong>. - + Creating user %1. Створення користувача %1. - + Sudoers dir is not writable. Неможливо запиcати у директорію sudoers. - + Cannot create sudoers file for writing. Неможливо створити файл sudoers для запису. - + Cannot chmod sudoers file. Неможливо встановити права на файл sudoers. - + Cannot open groups file for reading. Неможливо відкрити файл груп для читання. - - - Cannot create user %1. - Неможливо створити користувача %1. - - - - useradd terminated with error code %1. - useradd завершилася з кодом помилки %1. - - - - Cannot add user %1 to groups: %2. - Неможливо додати користувача %1 до груп: %2. - - - - usermod terminated with error code %1. - usermod завершилася з кодом помилки %1. - - - - Cannot set home directory ownership for user %1. - Неможливо встановити права власності на домашню теку для користувача %1. - - - - chown terminated with error code %1. - chown завершилася з кодом помилки %1. - DeletePartitionJob @@ -1202,22 +1178,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name Ім'я - + Description Опис - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Встановлення через мережу. (Вимкнено: Неможливо отримати список пакетів, перевірте ваше підключення до мережі) - + Network Installation. (Disabled: Received invalid groups data) Встановлення через мережу. (Вимкнено: Отримано неправильні дані про групи) @@ -1225,7 +1201,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection Вибір пакетів @@ -1835,6 +1811,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2520,7 +2514,7 @@ Output: UsersViewStep - + Users Користувачі diff --git a/lang/calamares_ur.ts b/lang/calamares_ur.ts index 8e01b47f6..75c265cda 100644 --- a/lang/calamares_ur.ts +++ b/lang/calamares_ur.ts @@ -476,15 +476,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -649,70 +655,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1201,22 +1177,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1224,7 +1200,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1834,6 +1810,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2519,7 +2513,7 @@ Output: UsersViewStep - + Users diff --git a/lang/calamares_uz.ts b/lang/calamares_uz.ts index e3472169a..da044a690 100644 --- a/lang/calamares_uz.ts +++ b/lang/calamares_uz.ts @@ -476,15 +476,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -649,70 +655,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - - - Cannot create user %1. - - - - - useradd terminated with error code %1. - - - - - Cannot add user %1 to groups: %2. - - - - - usermod terminated with error code %1. - - - - - Cannot set home directory ownership for user %1. - - - - - chown terminated with error code %1. - - DeletePartitionJob @@ -1201,22 +1177,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) @@ -1224,7 +1200,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection @@ -1834,6 +1810,24 @@ The installer will quit and all changes will be lost. + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2519,7 +2513,7 @@ Output: UsersViewStep - + Users diff --git a/lang/calamares_zh_CN.ts b/lang/calamares_zh_CN.ts index 2dd626a2c..ea18e8767 100644 --- a/lang/calamares_zh_CN.ts +++ b/lang/calamares_zh_CN.ts @@ -478,15 +478,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. 无法运行命令 - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + The command needs to know the user's name, but no username is defined. + + ContextualProcessJob @@ -651,70 +657,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 创建用户 %1 - + Create user <strong>%1</strong>. 创建用户 <strong>%1</strong>。 - + Creating user %1. 正在创建用户 %1。 - + Sudoers dir is not writable. Sudoers 目录不可写。 - + Cannot create sudoers file for writing. 无法创建要写入的 sudoers 文件。 - + Cannot chmod sudoers file. 无法修改 sudoers 文件权限。 - + Cannot open groups file for reading. 无法打开要读取的 groups 文件。 - - - Cannot create user %1. - 无法创建用户 %1。 - - - - useradd terminated with error code %1. - useradd 以错误代码 %1 中止。 - - - - Cannot add user %1 to groups: %2. - 无法将用户 %1 加入到群组:%2. - - - - usermod terminated with error code %1. - usermod 终止,错误代码 %1. - - - - Cannot set home directory ownership for user %1. - 无法设置用户 %1 的主文件夹所有者。 - - - - chown terminated with error code %1. - chown 以错误代码 %1 中止。 - DeletePartitionJob @@ -1204,22 +1180,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name 名称 - + Description 描述 - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) 网络安装。(已禁用:无法获取软件包列表,请检查网络连接) - + Network Installation. (Disabled: Received invalid groups data) 联网安装。(已禁用:收到无效组数据) @@ -1227,7 +1203,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection 软件包选择 @@ -1837,6 +1813,24 @@ The installer will quit and all changes will be lost. 外观主题 + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + ProcessResult @@ -2525,7 +2519,7 @@ Output: UsersViewStep - + Users 用户 diff --git a/lang/calamares_zh_TW.ts b/lang/calamares_zh_TW.ts index 711d87d06..407a72e04 100644 --- a/lang/calamares_zh_TW.ts +++ b/lang/calamares_zh_TW.ts @@ -477,15 +477,21 @@ The installer will quit and all changes will be lost. CommandList - + + Could not run command. 無法執行指令。 - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. 指令執行於主機環境中,且需要知道根路徑,但根掛載點未定義。 + + + The command needs to know the user's name, but no username is defined. + 指令需要知道使用者名稱,但是使用者名稱未定義。 + ContextualProcessJob @@ -650,70 +656,40 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 建立使用者 %1 - + Create user <strong>%1</strong>. 建立使用者 <strong>%1</strong>。 - + Creating user %1. 正在建立使用者 %1。 - + Sudoers dir is not writable. Sudoers 目錄不可寫入。 - + Cannot create sudoers file for writing. 無法建立要寫入的 sudoers 檔案。 - + Cannot chmod sudoers file. 無法修改 sudoers 檔案權限。 - + Cannot open groups file for reading. 無法開啟要讀取的 groups 檔案。 - - - Cannot create user %1. - 無法建立使用者 %1 。 - - - - useradd terminated with error code %1. - useradd 以錯誤代碼 %1 終止。 - - - - Cannot add user %1 to groups: %2. - 無法將使用者 %1 加入至群組:%2。 - - - - usermod terminated with error code %1. - usermod 以錯誤代碼 %1 終止。 - - - - Cannot set home directory ownership for user %1. - 無法將使用者 %1 設定為家目錄的擁有者。 - - - - chown terminated with error code %1. - chown 以錯誤代碼 %1 終止。 - DeletePartitionJob @@ -1202,22 +1178,22 @@ The installer will quit and all changes will be lost. NetInstallPage - + Name 名稱 - + Description 描述 - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) 網路安裝。(已停用:無法擷取軟體包清單,請檢查您的網路連線) - + Network Installation. (Disabled: Received invalid groups data) 網路安裝。(已停用:收到無效的群組資料) @@ -1225,7 +1201,7 @@ The installer will quit and all changes will be lost. NetInstallViewStep - + Package selection 軟體包選擇 @@ -1835,6 +1811,24 @@ The installer will quit and all changes will be lost. 外觀與感覺 + + PreserveFiles + + + Saving files for later ... + 稍後儲存檔案…… + + + + No files configured to save for later. + 沒有檔案被設定為稍後儲存。 + + + + Not all of the configured files could be preserved. + 並非所有已設定的檔案都可以被保留。 + + ProcessResult @@ -2523,7 +2517,7 @@ Output: UsersViewStep - + Users 使用者 From 960c33a5122e71cb8b6dc1d73cfb3540898d9b22 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Tue, 29 May 2018 03:27:21 -0400 Subject: [PATCH 216/385] i18n: [python] Automatic merge of Transifex translations --- lang/python.pot | 2 +- lang/python/ar/LC_MESSAGES/python.mo | Bin 503 -> 503 bytes lang/python/ar/LC_MESSAGES/python.po | 2 +- lang/python/ast/LC_MESSAGES/python.mo | Bin 668 -> 668 bytes lang/python/ast/LC_MESSAGES/python.po | 2 +- lang/python/be/LC_MESSAGES/python.mo | Bin 562 -> 562 bytes lang/python/be/LC_MESSAGES/python.po | 2 +- lang/python/bg/LC_MESSAGES/python.mo | Bin 894 -> 894 bytes lang/python/bg/LC_MESSAGES/python.po | 2 +- lang/python/ca/LC_MESSAGES/python.mo | Bin 1178 -> 1178 bytes lang/python/ca/LC_MESSAGES/python.po | 2 +- lang/python/cs_CZ/LC_MESSAGES/python.mo | Bin 1458 -> 1458 bytes lang/python/cs_CZ/LC_MESSAGES/python.po | 2 +- lang/python/da/LC_MESSAGES/python.mo | Bin 1115 -> 1115 bytes lang/python/da/LC_MESSAGES/python.po | 2 +- lang/python/de/LC_MESSAGES/python.mo | Bin 1130 -> 1130 bytes lang/python/de/LC_MESSAGES/python.po | 2 +- lang/python/el/LC_MESSAGES/python.mo | Bin 568 -> 568 bytes lang/python/el/LC_MESSAGES/python.po | 2 +- lang/python/en_GB/LC_MESSAGES/python.mo | Bin 444 -> 444 bytes lang/python/en_GB/LC_MESSAGES/python.po | 2 +- lang/python/eo/LC_MESSAGES/python.mo | Bin 1168 -> 1168 bytes lang/python/eo/LC_MESSAGES/python.po | 2 +- lang/python/es/LC_MESSAGES/python.mo | Bin 1075 -> 1075 bytes lang/python/es/LC_MESSAGES/python.po | 2 +- lang/python/es_MX/LC_MESSAGES/python.mo | Bin 436 -> 436 bytes lang/python/es_MX/LC_MESSAGES/python.po | 2 +- lang/python/es_PR/LC_MESSAGES/python.mo | Bin 441 -> 441 bytes lang/python/es_PR/LC_MESSAGES/python.po | 2 +- lang/python/et/LC_MESSAGES/python.mo | Bin 1113 -> 1113 bytes lang/python/et/LC_MESSAGES/python.po | 2 +- lang/python/eu/LC_MESSAGES/python.mo | Bin 420 -> 420 bytes lang/python/eu/LC_MESSAGES/python.po | 2 +- lang/python/fa/LC_MESSAGES/python.mo | Bin 420 -> 420 bytes lang/python/fa/LC_MESSAGES/python.po | 2 +- lang/python/fi_FI/LC_MESSAGES/python.mo | Bin 437 -> 437 bytes lang/python/fi_FI/LC_MESSAGES/python.po | 2 +- lang/python/fr/LC_MESSAGES/python.mo | Bin 1193 -> 1193 bytes lang/python/fr/LC_MESSAGES/python.po | 2 +- lang/python/fr_CH/LC_MESSAGES/python.mo | Bin 439 -> 439 bytes lang/python/fr_CH/LC_MESSAGES/python.po | 2 +- lang/python/gl/LC_MESSAGES/python.mo | Bin 422 -> 422 bytes lang/python/gl/LC_MESSAGES/python.po | 2 +- lang/python/gu/LC_MESSAGES/python.mo | Bin 422 -> 422 bytes lang/python/gu/LC_MESSAGES/python.po | 2 +- lang/python/he/LC_MESSAGES/python.mo | Bin 1366 -> 1366 bytes lang/python/he/LC_MESSAGES/python.po | 2 +- lang/python/hi/LC_MESSAGES/python.mo | Bin 1363 -> 1363 bytes lang/python/hi/LC_MESSAGES/python.po | 2 +- lang/python/hr/LC_MESSAGES/python.mo | Bin 1272 -> 1272 bytes lang/python/hr/LC_MESSAGES/python.po | 2 +- lang/python/hu/LC_MESSAGES/python.mo | Bin 844 -> 844 bytes lang/python/hu/LC_MESSAGES/python.po | 2 +- lang/python/id/LC_MESSAGES/python.mo | Bin 1082 -> 1082 bytes lang/python/id/LC_MESSAGES/python.po | 2 +- lang/python/is/LC_MESSAGES/python.mo | Bin 1066 -> 1066 bytes lang/python/is/LC_MESSAGES/python.po | 2 +- lang/python/it_IT/LC_MESSAGES/python.mo | Bin 1162 -> 1162 bytes lang/python/it_IT/LC_MESSAGES/python.po | 2 +- lang/python/ja/LC_MESSAGES/python.mo | Bin 1164 -> 1164 bytes lang/python/ja/LC_MESSAGES/python.po | 2 +- lang/python/kk/LC_MESSAGES/python.mo | Bin 418 -> 418 bytes lang/python/kk/LC_MESSAGES/python.po | 2 +- lang/python/kn/LC_MESSAGES/python.mo | Bin 420 -> 420 bytes lang/python/kn/LC_MESSAGES/python.po | 2 +- lang/python/lo/LC_MESSAGES/python.mo | Bin 410 -> 410 bytes lang/python/lo/LC_MESSAGES/python.po | 2 +- lang/python/lt/LC_MESSAGES/python.mo | Bin 1382 -> 1382 bytes lang/python/lt/LC_MESSAGES/python.po | 2 +- lang/python/mr/LC_MESSAGES/python.mo | Bin 421 -> 421 bytes lang/python/mr/LC_MESSAGES/python.po | 2 +- lang/python/nb/LC_MESSAGES/python.mo | Bin 616 -> 616 bytes lang/python/nb/LC_MESSAGES/python.po | 2 +- lang/python/nl/LC_MESSAGES/python.mo | Bin 658 -> 658 bytes lang/python/nl/LC_MESSAGES/python.po | 2 +- lang/python/pl/LC_MESSAGES/python.mo | Bin 1434 -> 1434 bytes lang/python/pl/LC_MESSAGES/python.po | 2 +- lang/python/pt_BR/LC_MESSAGES/python.mo | Bin 1177 -> 1177 bytes lang/python/pt_BR/LC_MESSAGES/python.po | 2 +- lang/python/pt_PT/LC_MESSAGES/python.mo | Bin 1173 -> 1173 bytes lang/python/pt_PT/LC_MESSAGES/python.po | 2 +- lang/python/ro/LC_MESSAGES/python.mo | Bin 1277 -> 1277 bytes lang/python/ro/LC_MESSAGES/python.po | 2 +- lang/python/ru/LC_MESSAGES/python.mo | Bin 740 -> 740 bytes lang/python/ru/LC_MESSAGES/python.po | 2 +- lang/python/sk/LC_MESSAGES/python.mo | Bin 1432 -> 1432 bytes lang/python/sk/LC_MESSAGES/python.po | 2 +- lang/python/sl/LC_MESSAGES/python.mo | Bin 475 -> 475 bytes lang/python/sl/LC_MESSAGES/python.po | 2 +- lang/python/sq/LC_MESSAGES/python.mo | Bin 1148 -> 1148 bytes lang/python/sq/LC_MESSAGES/python.po | 2 +- lang/python/sr/LC_MESSAGES/python.mo | Bin 495 -> 495 bytes lang/python/sr/LC_MESSAGES/python.po | 2 +- lang/python/sr@latin/LC_MESSAGES/python.mo | Bin 517 -> 517 bytes lang/python/sr@latin/LC_MESSAGES/python.po | 2 +- lang/python/sv/LC_MESSAGES/python.mo | Bin 421 -> 421 bytes lang/python/sv/LC_MESSAGES/python.po | 2 +- lang/python/th/LC_MESSAGES/python.mo | Bin 411 -> 411 bytes lang/python/th/LC_MESSAGES/python.po | 2 +- lang/python/tr_TR/LC_MESSAGES/python.mo | Bin 1192 -> 1192 bytes lang/python/tr_TR/LC_MESSAGES/python.po | 2 +- lang/python/uk/LC_MESSAGES/python.mo | Bin 645 -> 645 bytes lang/python/uk/LC_MESSAGES/python.po | 2 +- lang/python/ur/LC_MESSAGES/python.mo | Bin 418 -> 418 bytes lang/python/ur/LC_MESSAGES/python.po | 2 +- lang/python/uz/LC_MESSAGES/python.mo | Bin 412 -> 412 bytes lang/python/uz/LC_MESSAGES/python.po | 2 +- lang/python/zh_CN/LC_MESSAGES/python.mo | Bin 1101 -> 1101 bytes lang/python/zh_CN/LC_MESSAGES/python.po | 2 +- lang/python/zh_TW/LC_MESSAGES/python.mo | Bin 1126 -> 1126 bytes lang/python/zh_TW/LC_MESSAGES/python.po | 2 +- 111 files changed, 56 insertions(+), 56 deletions(-) diff --git a/lang/python.pot b/lang/python.pot index afce3007f..fab6d56ba 100644 --- a/lang/python.pot +++ b/lang/python.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/lang/python/ar/LC_MESSAGES/python.mo b/lang/python/ar/LC_MESSAGES/python.mo index 8003a12c728b005b5c098b26102937295219e00a..ed23b6f29e9760ebcdf682fd4350a6964de06278 100644 GIT binary patch delta 19 acmey){GEA1KZlWpf`N&Zsrkm~35)Jm8tn=ZpMj>068uM06514*8l(j diff --git a/lang/python/ast/LC_MESSAGES/python.po b/lang/python/ast/LC_MESSAGES/python.po index a55cf974f..ea5d77ca1 100644 --- a/lang/python/ast/LC_MESSAGES/python.po +++ b/lang/python/ast/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: enolp , 2017\n" "Language-Team: Asturian (https://www.transifex.com/calamares/teams/20061/ast/)\n" diff --git a/lang/python/be/LC_MESSAGES/python.mo b/lang/python/be/LC_MESSAGES/python.mo index 4454d0f300ea558ca047a2b4836933e54b1e3dbf..d553eb62fdf54bcf74cdc6ace069f24ac170996b 100644 GIT binary patch delta 19 acmdnQvWaCvKZlWpf`N&Zsrkm~vl#(BLIMG* diff --git a/lang/python/be/LC_MESSAGES/python.po b/lang/python/be/LC_MESSAGES/python.po index 96b3351ad..249c65dc1 100644 --- a/lang/python/be/LC_MESSAGES/python.po +++ b/lang/python/be/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Belarusian (https://www.transifex.com/calamares/teams/20061/be/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/bg/LC_MESSAGES/python.mo b/lang/python/bg/LC_MESSAGES/python.mo index b43df8a288b6150b7c5cb3eec561b9cf3b74d682..15606e67b21508211d5223b05ee2be7a7bd150a9 100644 GIT binary patch delta 21 ccmeyz_K$6YJtK#ag@S>Jm8tn=cSdt208F6;$p8QV delta 21 ccmeyz_K$6YJtK#qnS!CAm5IS-cSdt208BasyZ`_I diff --git a/lang/python/bg/LC_MESSAGES/python.po b/lang/python/bg/LC_MESSAGES/python.po index 71995a29d..9b7153326 100644 --- a/lang/python/bg/LC_MESSAGES/python.po +++ b/lang/python/bg/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Georgi Georgiev , 2018\n" "Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n" diff --git a/lang/python/ca/LC_MESSAGES/python.mo b/lang/python/ca/LC_MESSAGES/python.mo index 815e48a4118bfe8181ff81ddad8bd7c3aec184a0..4c682cf45ba3f5ec47a70ffef6da0b34f631b6d8 100644 GIT binary patch delta 21 ccmbQmIg4|HE)$25g@S>Jm8tn=Q>IiV06cjG6951J delta 21 ccmbQmIg4|HE)$2LnS!CAm5IS-Q>IiV06Y=}1^@s6 diff --git a/lang/python/ca/LC_MESSAGES/python.po b/lang/python/ca/LC_MESSAGES/python.po index 10e6289ae..a6aa48f8f 100644 --- a/lang/python/ca/LC_MESSAGES/python.po +++ b/lang/python/ca/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Davidmp , 2017\n" "Language-Team: Catalan (https://www.transifex.com/calamares/teams/20061/ca/)\n" diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.mo b/lang/python/cs_CZ/LC_MESSAGES/python.mo index 082493dca83586348a6784b6d0bf9e1449a3a8e6..3099769f1db82525b1fb781b69d740206f4f1afc 100644 GIT binary patch delta 21 ccmdnQy@`8+E)$25g@S>Jm8tn=Q>I#G06?|{U;qFB delta 21 ccmdnQy@`8+E)$2LnS!CAm5IS-Q>I#G06, 2017\n" "Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n" diff --git a/lang/python/da/LC_MESSAGES/python.mo b/lang/python/da/LC_MESSAGES/python.mo index 720ee411425ecefc5bcb16aeef72de83a0c2080d..74ff6ea90e1b892aea1736a4eadade9a3197a65d 100644 GIT binary patch delta 21 ccmcc3ahqdJm8tn=QzkVg07d-;Q~&?~ delta 21 ccmcc3ahqdJm8tn=Qzla;07!EMfdBvi delta 21 ccmaFG@rq-EE)$2LnS!CAm5IS-Qzla;07wi4bN~PV diff --git a/lang/python/de/LC_MESSAGES/python.po b/lang/python/de/LC_MESSAGES/python.po index ac9777c23..66bcb4663 100644 --- a/lang/python/de/LC_MESSAGES/python.po +++ b/lang/python/de/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dirk Hein , 2017\n" "Language-Team: German (https://www.transifex.com/calamares/teams/20061/de/)\n" diff --git a/lang/python/el/LC_MESSAGES/python.mo b/lang/python/el/LC_MESSAGES/python.mo index 83476e5694575b45b20e2105d25fd1a9b2e0538c..0e75c505149d2829e39d59c01ddc33efa9f71dfe 100644 GIT binary patch delta 19 acmdnNvV P7Wgr1p^Z+Q}c}n%NYSco(4z& delta 19 acmdnNvV P7Xse1w%tC6N8Nh%NYScL, 2017\n" "Language-Team: Greek (https://www.transifex.com/calamares/teams/20061/el/)\n" diff --git a/lang/python/en_GB/LC_MESSAGES/python.mo b/lang/python/en_GB/LC_MESSAGES/python.mo index 763f8ab01ae3287d93f46742d23ece4cd3ba9b82..b32de75241a90adfbcff42b825f9a9b3cf5247c8 100644 GIT binary patch delta 19 acmdnPyoY&0KZlWpf`N&Zsrkm~s*C_Vo&~4? delta 19 acmdnPyoY&0KZl{2f}x?6iNVI{s*C_VLJm8tn=Q>JJp06NtK^#A|> delta 21 ccmbQhIe~M7E)$2LnS!CAm5IS-Q>JJp06K02=l}o! diff --git a/lang/python/eo/LC_MESSAGES/python.po b/lang/python/eo/LC_MESSAGES/python.po index b0622a9aa..bffb7bf5d 100644 --- a/lang/python/eo/LC_MESSAGES/python.po +++ b/lang/python/eo/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kurt Ankh Phoenix , 2018\n" "Language-Team: Esperanto (https://www.transifex.com/calamares/teams/20061/eo/)\n" diff --git a/lang/python/es/LC_MESSAGES/python.mo b/lang/python/es/LC_MESSAGES/python.mo index 81e3121c0b2d703f436342332720fc02219d3ca7..0487a6d7e9f1c65fb586ca012de283631433c4d4 100644 GIT binary patch delta 21 ccmdnYv6*ATe?|@?3k3rcD^v5$>`XdL08AnUtpET3 delta 21 ccmdnYv6*ATe?|^NGX+CKD-(mw>`XdL086_Cpa1{> diff --git a/lang/python/es/LC_MESSAGES/python.po b/lang/python/es/LC_MESSAGES/python.po index 31ee2ba77..c88771e11 100644 --- a/lang/python/es/LC_MESSAGES/python.po +++ b/lang/python/es/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: strel, 2017\n" "Language-Team: Spanish (https://www.transifex.com/calamares/teams/20061/es/)\n" diff --git a/lang/python/es_MX/LC_MESSAGES/python.mo b/lang/python/es_MX/LC_MESSAGES/python.mo index 4ddd826e4e68e3c40a17dd97f3bb6a915b830872..3b6df235cfd484222c6a19c026a0dc5175d2f352 100644 GIT binary patch delta 19 acmdnOyoGr}KZlWpf`N&Zsrkm~vWx&cZUvA4 delta 19 acmdnOyoGr}KZl{2f}x?6iNVI{vWx&c6a|9- diff --git a/lang/python/es_MX/LC_MESSAGES/python.po b/lang/python/es_MX/LC_MESSAGES/python.po index f37751143..386952128 100644 --- a/lang/python/es_MX/LC_MESSAGES/python.po +++ b/lang/python/es_MX/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Spanish (Mexico) (https://www.transifex.com/calamares/teams/20061/es_MX/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/es_PR/LC_MESSAGES/python.mo b/lang/python/es_PR/LC_MESSAGES/python.mo index c85a27627b4fd40ebdb243d03bf686acdb2894b4..c5fb7e34afc88165b20b491e26a096dc929053d7 100644 GIT binary patch delta 19 acmdnVypwrCKZlWpf`N&Zsrkm~N{j$KECrtc delta 19 acmdnVypwrCKZl{2f}x?6iNVI{N{j$J(gl(L diff --git a/lang/python/es_PR/LC_MESSAGES/python.po b/lang/python/es_PR/LC_MESSAGES/python.po index 20011ca91..8deeae26d 100644 --- a/lang/python/es_PR/LC_MESSAGES/python.po +++ b/lang/python/es_PR/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Spanish (Puerto Rico) (https://www.transifex.com/calamares/teams/20061/es_PR/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/et/LC_MESSAGES/python.mo b/lang/python/et/LC_MESSAGES/python.mo index 6e9c6d0a8557cbd04b5d487d3d9b19c15cf14ef6..89b3804b58ec00152f1f59824b47e745391b9d6c 100644 GIT binary patch delta 21 ccmcb~ag$?%E)$25g@S>Jm8tn=QzjKA07a<z>% diff --git a/lang/python/et/LC_MESSAGES/python.po b/lang/python/et/LC_MESSAGES/python.po index deec076dc..eeccccc30 100644 --- a/lang/python/et/LC_MESSAGES/python.po +++ b/lang/python/et/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Madis, 2018\n" "Language-Team: Estonian (https://www.transifex.com/calamares/teams/20061/et/)\n" diff --git a/lang/python/eu/LC_MESSAGES/python.mo b/lang/python/eu/LC_MESSAGES/python.mo index b7e4b019641280e13561297e197e7410d7156806..2cac09113490e6a47a5ca67a4c0801caf75284f7 100644 GIT binary patch delta 19 acmZ3&yo7l|KZlWpf`N&Zsrkm~yo>-k4h3KU delta 19 acmZ3&yo7l|KZl{2f}x?6iNVI{yo>-jv;|WD diff --git a/lang/python/eu/LC_MESSAGES/python.po b/lang/python/eu/LC_MESSAGES/python.po index 5f21601ef..3afc95834 100644 --- a/lang/python/eu/LC_MESSAGES/python.po +++ b/lang/python/eu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Basque (https://www.transifex.com/calamares/teams/20061/eu/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/fa/LC_MESSAGES/python.mo b/lang/python/fa/LC_MESSAGES/python.mo index 89339df1367d2e05f759b22a44fbde6db2850d7d..388bb4facc13b8bfe95f85d83448f4db1059ff89 100644 GIT binary patch delta 19 acmZ3&yo7l|KZlWpf`N&Zsrkm~yo>-k4h3KU delta 19 acmZ3&yo7l|KZl{2f}x?6iNVI{yo>-jv;|WD diff --git a/lang/python/fa/LC_MESSAGES/python.po b/lang/python/fa/LC_MESSAGES/python.po index aef009a1a..ef4e66649 100644 --- a/lang/python/fa/LC_MESSAGES/python.po +++ b/lang/python/fa/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Persian (https://www.transifex.com/calamares/teams/20061/fa/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/fi_FI/LC_MESSAGES/python.mo b/lang/python/fi_FI/LC_MESSAGES/python.mo index 25e22356f5a08dc22b7adaeeb3d78e963dc3a95d..dfa6aba76be140ad6bbcdd608d7bef9591f14766 100644 GIT binary patch delta 19 acmdnWyp?%EKZlWpf`N&Zsrkm~a*O~xlm(Lj delta 19 acmdnWyp?%EKZl{2f}x?6iNVI{a*O~xIt7LR diff --git a/lang/python/fi_FI/LC_MESSAGES/python.po b/lang/python/fi_FI/LC_MESSAGES/python.po index db7aad45d..623176d9b 100644 --- a/lang/python/fi_FI/LC_MESSAGES/python.po +++ b/lang/python/fi_FI/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Finnish (Finland) (https://www.transifex.com/calamares/teams/20061/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/fr/LC_MESSAGES/python.mo b/lang/python/fr/LC_MESSAGES/python.mo index 54d45fed762f230b5e58b674d01a81612d2048ac..416fa75c9881d4e397f5b5b83c345a873907d797 100644 GIT binary patch delta 21 ccmZ3Jm8tn=Q>GFo06y;pKmY&$ delta 21 ccmZ3GFo06vHXGXMYp diff --git a/lang/python/fr/LC_MESSAGES/python.po b/lang/python/fr/LC_MESSAGES/python.po index ebe18c3a8..f2bd01b95 100644 --- a/lang/python/fr/LC_MESSAGES/python.po +++ b/lang/python/fr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Jeremy Gourmel , 2018\n" "Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n" diff --git a/lang/python/fr_CH/LC_MESSAGES/python.mo b/lang/python/fr_CH/LC_MESSAGES/python.mo index b45acc7ee234bc9f21d000f89edd8101b50b8c9f..8bea975fdbd3fc3fa839c3550390bf586e8d40f6 100644 GIT binary patch delta 19 acmdnayq$SMKZlWpf`N&Zsrkm~3XA|e;02ig delta 19 acmdnayq$SMKZl{2f}x?6iNVI{3XA|eh6RiO diff --git a/lang/python/fr_CH/LC_MESSAGES/python.po b/lang/python/fr_CH/LC_MESSAGES/python.po index 1bc4d48a9..e0a7526fe 100644 --- a/lang/python/fr_CH/LC_MESSAGES/python.po +++ b/lang/python/fr_CH/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: French (Switzerland) (https://www.transifex.com/calamares/teams/20061/fr_CH/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/gl/LC_MESSAGES/python.mo b/lang/python/gl/LC_MESSAGES/python.mo index 797dd7426ed63a7e26aa95fdda323bbde966bb0c..5c0b1ef3386133a18fc13b15f66b5c3ee204418b 100644 GIT binary patch delta 19 acmZ3+yo`B5KZlWpf`N&Zsrkm~{EPrPS_NhR delta 19 acmZ3+yo`B5KZl{2f}x?6iNVI{{EPrP00mh9 diff --git a/lang/python/gl/LC_MESSAGES/python.po b/lang/python/gl/LC_MESSAGES/python.po index 13dbb8f32..cc8c6401e 100644 --- a/lang/python/gl/LC_MESSAGES/python.po +++ b/lang/python/gl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Galician (https://www.transifex.com/calamares/teams/20061/gl/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/gu/LC_MESSAGES/python.mo b/lang/python/gu/LC_MESSAGES/python.mo index 5e65e184e4b1d6a15c10d5e1e8581cf8509eaeb7..9c4847bcd77b26ec77b6d4217837c0e1ae923491 100644 GIT binary patch delta 19 acmZ3+yo`B5KZlWpf`N&Zsrkm~{EPrPS_NhR delta 19 acmZ3+yo`B5KZl{2f}x?6iNVI{{EPrP00mh9 diff --git a/lang/python/gu/LC_MESSAGES/python.po b/lang/python/gu/LC_MESSAGES/python.po index 5e00bc9bb..9e31e587c 100644 --- a/lang/python/gu/LC_MESSAGES/python.po +++ b/lang/python/gu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Gujarati (https://www.transifex.com/calamares/teams/20061/gu/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/he/LC_MESSAGES/python.mo b/lang/python/he/LC_MESSAGES/python.mo index ca254403fb4b52bd33e9a5bba8c1a8faf6fdf050..5231dab2887f389115c0805e4dfcb942b4405155 100644 GIT binary patch delta 21 ccmcb{b&YGoe?|@?3k3rcD^v5$>`ea508%Xm8vp`ea508z#U4gdfE diff --git a/lang/python/he/LC_MESSAGES/python.po b/lang/python/he/LC_MESSAGES/python.po index 43a0b9ae2..36f95015d 100644 --- a/lang/python/he/LC_MESSAGES/python.po +++ b/lang/python/he/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Eli Shleifer , 2017\n" "Language-Team: Hebrew (https://www.transifex.com/calamares/teams/20061/he/)\n" diff --git a/lang/python/hi/LC_MESSAGES/python.mo b/lang/python/hi/LC_MESSAGES/python.mo index 9c5efc237e1d067609a51d483258c79a75bb8ab2..5504f771576dcfb266632cc13284f05d9b5d25aa 100644 GIT binary patch delta 21 ccmcc2b(w3!e?|@?3k3rcD^v5$>`Xq)08y_75&!@I delta 21 ccmcc2b(w3!e?|^NGX+CKD-(mw>`Xq)08vN=1poj5 diff --git a/lang/python/hi/LC_MESSAGES/python.po b/lang/python/hi/LC_MESSAGES/python.po index 3e2f7c7c5..a2a8bb3d4 100644 --- a/lang/python/hi/LC_MESSAGES/python.po +++ b/lang/python/hi/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Panwar108 , 2018\n" "Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n" diff --git a/lang/python/hr/LC_MESSAGES/python.mo b/lang/python/hr/LC_MESSAGES/python.mo index ac931c69735676fef2e704669333a9d224156e57..dd66059bbda62a95bdc6549e74a02a8d5656f659 100644 GIT binary patch delta 21 ccmeyt`Ga$VE)$25g@S>Jm8tn=Q>MdA088ZtEdT%j delta 21 ccmeyt`Ga$VE)$2LnS!CAm5IS-Q>MdA084%bAOHXW diff --git a/lang/python/hr/LC_MESSAGES/python.po b/lang/python/hr/LC_MESSAGES/python.po index 013b59492..24b5462a3 100644 --- a/lang/python/hr/LC_MESSAGES/python.po +++ b/lang/python/hr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Lovro Kudelić , 2017\n" "Language-Team: Croatian (https://www.transifex.com/calamares/teams/20061/hr/)\n" diff --git a/lang/python/hu/LC_MESSAGES/python.mo b/lang/python/hu/LC_MESSAGES/python.mo index 19aa8389a76367523d7eed277d9ed2736c2fa39d..4f62c3a16232a9590cbb139f3b21df05296ea00e 100644 GIT binary patch delta 21 ccmX@Zc7|<3B_oHCg@S>Jm8tpWM#j^O07`%cYybcN delta 21 ccmX@Zc7|<3B_oHSnS!CAm5IUTM#j^O07@AKUjP6A diff --git a/lang/python/hu/LC_MESSAGES/python.po b/lang/python/hu/LC_MESSAGES/python.po index b6d3785a9..90b3b9704 100644 --- a/lang/python/hu/LC_MESSAGES/python.po +++ b/lang/python/hu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: miku84, 2017\n" "Language-Team: Hungarian (https://www.transifex.com/calamares/teams/20061/hu/)\n" diff --git a/lang/python/id/LC_MESSAGES/python.mo b/lang/python/id/LC_MESSAGES/python.mo index 367bf272c440acc94560822fb6bdbb1656b86843..2cb9642e685c3f3e340371fe6865fe6515abb5ca 100644 GIT binary patch delta 21 ccmdnRv5RAaE)$25g@S>Jm8tn=Qzlj>06>!j@c;k- delta 21 ccmdnRv5RAaE)$2LnS!CAm5IS-Qzlj>06;7R, 2018\n" "Language-Team: Indonesian (https://www.transifex.com/calamares/teams/20061/id/)\n" diff --git a/lang/python/is/LC_MESSAGES/python.mo b/lang/python/is/LC_MESSAGES/python.mo index 5caca1051cdd2275bcc2717ab38d9514bbd5eddd..ceede96f685a268f316fd41ca04ee42147f9b516 100644 GIT binary patch delta 21 ccmZ3*v5I5Ee?|@?3k3rcD^v5$>`cl`07|F@k^lez delta 21 ccmZ3*v5I5Ee?|^NGX+CKD-(mw>`cl`07^jxg#Z8m diff --git a/lang/python/is/LC_MESSAGES/python.po b/lang/python/is/LC_MESSAGES/python.po index 7ff9df520..aeb38611d 100644 --- a/lang/python/is/LC_MESSAGES/python.po +++ b/lang/python/is/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kristján Magnússon, 2017\n" "Language-Team: Icelandic (https://www.transifex.com/calamares/teams/20061/is/)\n" diff --git a/lang/python/it_IT/LC_MESSAGES/python.mo b/lang/python/it_IT/LC_MESSAGES/python.mo index 69fdb80c94dbe198773b3fd7fb90fd8d08c16580..2407dbe213cb18d12278dc8098376a97dc9363bb 100644 GIT binary patch delta 21 ccmeC;?Bd*@%fw-1p, 2018\n" "Language-Team: Italian (Italy) (https://www.transifex.com/calamares/teams/20061/it_IT/)\n" diff --git a/lang/python/ja/LC_MESSAGES/python.mo b/lang/python/ja/LC_MESSAGES/python.mo index 6956c7822aec2e3e3a82f83e61808acd0686a7e1..22b7f39614cc084e894c22feb021da98d93f4483 100644 GIT binary patch delta 21 ccmeC-?BU#?%fw-1pPx# delta 21 ccmeC-?BU#?%fw-5reJ7jWn!?|lqsAE06E44+yDRo diff --git a/lang/python/ja/LC_MESSAGES/python.po b/lang/python/ja/LC_MESSAGES/python.po index 094731313..53280b249 100644 --- a/lang/python/ja/LC_MESSAGES/python.po +++ b/lang/python/ja/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Takefumi Nagata, 2017\n" "Language-Team: Japanese (https://www.transifex.com/calamares/teams/20061/ja/)\n" diff --git a/lang/python/kk/LC_MESSAGES/python.mo b/lang/python/kk/LC_MESSAGES/python.mo index f80a34e830ef797ca41efb61a23182d675c2e172..a869d667e372bbe415763ec14a08caf8730f06c1 100644 GIT binary patch delta 19 acmZ3)yoh;1KZlWpf`N&Zsrkm~+>8J@!Ub9Y delta 19 acmZ3)yoh;1KZl{2f}x?6iNVI{+>8J@Xa!9G diff --git a/lang/python/kk/LC_MESSAGES/python.po b/lang/python/kk/LC_MESSAGES/python.po index 599a78ef1..048347b3c 100644 --- a/lang/python/kk/LC_MESSAGES/python.po +++ b/lang/python/kk/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Kazakh (https://www.transifex.com/calamares/teams/20061/kk/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/kn/LC_MESSAGES/python.mo b/lang/python/kn/LC_MESSAGES/python.mo index a55906ecf652949cd4705bd3d4fe47e5aca77376..cf404326f066dbde67092bf80009278c7529780e 100644 GIT binary patch delta 19 acmZ3&yo7l|KZlWpf`N&Zsrkm~yo>-k4h3KU delta 19 acmZ3&yo7l|KZl{2f}x?6iNVI{yo>-jv;|WD diff --git a/lang/python/kn/LC_MESSAGES/python.po b/lang/python/kn/LC_MESSAGES/python.po index 494299bf2..3c6ca0953 100644 --- a/lang/python/kn/LC_MESSAGES/python.po +++ b/lang/python/kn/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Kannada (https://www.transifex.com/calamares/teams/20061/kn/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/lo/LC_MESSAGES/python.mo b/lang/python/lo/LC_MESSAGES/python.mo index 5bf185cf8649c8e82c7da00281b64250a226743d..878622b20159e8f9efcaed54fd3541b01f936d44 100644 GIT binary patch delta 19 acmbQmJd1fkKZlWpf`N&Zsrkm~%!~jyk_AEl delta 19 acmbQmJd1fkKZl{2f}x?6iNVI{%!~jyI0ZET diff --git a/lang/python/lo/LC_MESSAGES/python.po b/lang/python/lo/LC_MESSAGES/python.po index 626e03b4a..18f49126d 100644 --- a/lang/python/lo/LC_MESSAGES/python.po +++ b/lang/python/lo/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Lao (https://www.transifex.com/calamares/teams/20061/lo/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/lt/LC_MESSAGES/python.mo b/lang/python/lt/LC_MESSAGES/python.mo index 28557858d5e6820dc77dc70704252ec15ad8a726..e5a4083ba80ab9969390f5702d6fe2858fb45c96 100644 GIT binary patch delta 21 ccmaFH^^9wSE)$25g@S>Jm8tn=Qzk=Z07w`GdH?_b delta 21 ccmaFH^^9wSE)$2LnS!CAm5IS-Qzk=Z07tO}Z2$lO diff --git a/lang/python/lt/LC_MESSAGES/python.po b/lang/python/lt/LC_MESSAGES/python.po index fe1dd58ed..d2221eeb9 100644 --- a/lang/python/lt/LC_MESSAGES/python.po +++ b/lang/python/lt/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Moo, 2017\n" "Language-Team: Lithuanian (https://www.transifex.com/calamares/teams/20061/lt/)\n" diff --git a/lang/python/mr/LC_MESSAGES/python.mo b/lang/python/mr/LC_MESSAGES/python.mo index a089d694c9cc378160f672c85eaf447358532af3..5ecb5178cf6fbe491d19c275519215f07c54f390 100644 GIT binary patch delta 19 acmZ3=yp(xDKZlWpf`N&Zsrkm~e2f4(GzDV- delta 19 acmZ3=yp(xDKZl{2f}x?6iNVI{e2f4&+67hs diff --git a/lang/python/mr/LC_MESSAGES/python.po b/lang/python/mr/LC_MESSAGES/python.po index e4d847a0a..8f61a6bb1 100644 --- a/lang/python/mr/LC_MESSAGES/python.po +++ b/lang/python/mr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Marathi (https://www.transifex.com/calamares/teams/20061/mr/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/nb/LC_MESSAGES/python.mo b/lang/python/nb/LC_MESSAGES/python.mo index 378cce55a8bc7527ef6a63557382808293d0e380..86155114f1d6248b2f371b50a056f7df91f7e483 100644 GIT binary patch delta 19 acmaFC@`7c;Jq{xa1p^Z+Q}d0_niv5|=?47( delta 19 acmaFC@`7c;Jq|-N1w%tC6N8P, 2017\n" "Language-Team: Norwegian Bokmål (https://www.transifex.com/calamares/teams/20061/nb/)\n" diff --git a/lang/python/nl/LC_MESSAGES/python.mo b/lang/python/nl/LC_MESSAGES/python.mo index 769e8e775f5702a15e184f4b117c1da83224f002..8f6558834f4411c97ff6a35345a11ceab3f7cd0a 100644 GIT binary patch delta 21 ccmbQlI*D}yGb4wQg@S>Jm8tn=ZpL;-05^&R#sB~S delta 21 ccmbQlI*D}yGb4wgnS!CAm5IS-ZpL;-05>B9xc~qF diff --git a/lang/python/nl/LC_MESSAGES/python.po b/lang/python/nl/LC_MESSAGES/python.po index 49cfa3d3e..721f9d667 100644 --- a/lang/python/nl/LC_MESSAGES/python.po +++ b/lang/python/nl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Adriaan de Groot , 2017\n" "Language-Team: Dutch (https://www.transifex.com/calamares/teams/20061/nl/)\n" diff --git a/lang/python/pl/LC_MESSAGES/python.mo b/lang/python/pl/LC_MESSAGES/python.mo index eaed55ed3951438681be9206a94fa7463b45eb1d..9be7aab577b382cfa5e023484fd190b7852dfabc 100644 GIT binary patch delta 21 ccmbQmJ&SvTE)$25g@S>Jm8tn=Q>IjA06fM87ytkO delta 21 ccmbQmJ&SvTE)$2LnS!CAm5IS-Q>IjA06bp>3jhEB diff --git a/lang/python/pl/LC_MESSAGES/python.po b/lang/python/pl/LC_MESSAGES/python.po index a32062bfa..09b27b53f 100644 --- a/lang/python/pl/LC_MESSAGES/python.po +++ b/lang/python/pl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Marcin Mikołajczak , 2017\n" "Language-Team: Polish (https://www.transifex.com/calamares/teams/20061/pl/)\n" diff --git a/lang/python/pt_BR/LC_MESSAGES/python.mo b/lang/python/pt_BR/LC_MESSAGES/python.mo index a67e33f66e3e812e558681f857af7ab47736a5ae..eac961ff71aa33ee5ec2d8eb093bf0d3c57f5d33 100644 GIT binary patch delta 21 ccmbQqIg@jPE)$25g@S>Jm8tn=Q>GLq06b3x5C8xG delta 21 ccmbQqIg@jPE)$2LnS!CAm5IS-Q>GLq06XXf0{{R3 diff --git a/lang/python/pt_BR/LC_MESSAGES/python.po b/lang/python/pt_BR/LC_MESSAGES/python.po index 89fdcbd0c..4f40ef9c6 100644 --- a/lang/python/pt_BR/LC_MESSAGES/python.po +++ b/lang/python/pt_BR/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Caio Jordão Carvalho , 2018\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n" diff --git a/lang/python/pt_PT/LC_MESSAGES/python.mo b/lang/python/pt_PT/LC_MESSAGES/python.mo index f5b618b5d20dea1a31672d4acbcf8daf25217d66..a89214d0142291899ab96985ec493538cde51c3d 100644 GIT binary patch delta 21 ccmbQrIhAvRE)$25g@S>Jm8tn=Q>Fwa06V7z1ONa4 delta 21 ccmbQrIhAvRE)$2LnS!CAm5IS-Q>Fwa06Rbg_W%F@ diff --git a/lang/python/pt_PT/LC_MESSAGES/python.po b/lang/python/pt_PT/LC_MESSAGES/python.po index 9dabde94f..7f2a70dc1 100644 --- a/lang/python/pt_PT/LC_MESSAGES/python.po +++ b/lang/python/pt_PT/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ricardo Simões , 2017\n" "Language-Team: Portuguese (Portugal) (https://www.transifex.com/calamares/teams/20061/pt_PT/)\n" diff --git a/lang/python/ro/LC_MESSAGES/python.mo b/lang/python/ro/LC_MESSAGES/python.mo index 2f8f300df137c03f8968f0050acc03b23c8628d0..1bd4758e88117cae8c737baba2145a24d3c67180 100644 GIT binary patch delta 21 ccmey%`ImEpE)$25g@S>Jm8tn=Q>GJ408FGJ408CH@F8}}l diff --git a/lang/python/ro/LC_MESSAGES/python.po b/lang/python/ro/LC_MESSAGES/python.po index c5cd117e3..fd16c3533 100644 --- a/lang/python/ro/LC_MESSAGES/python.po +++ b/lang/python/ro/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Baadur Jobava , 2018\n" "Language-Team: Romanian (https://www.transifex.com/calamares/teams/20061/ro/)\n" diff --git a/lang/python/ru/LC_MESSAGES/python.mo b/lang/python/ru/LC_MESSAGES/python.mo index 434a4e0fc00f73cf50886b2491bd0b97fd9d6833..e3e2b032d90cf0760a89b15a300c4efebb298b4a 100644 GIT binary patch delta 19 acmaFD`h<1DWey_?1p^Z+Q}d0tIhg=Q&jx7# delta 19 acmaFD`h<1DWe!6#1w%tC6N8PnIhg=Qbp~7j diff --git a/lang/python/ru/LC_MESSAGES/python.po b/lang/python/ru/LC_MESSAGES/python.po index 99f2b6eaf..3e4fc4e8f 100644 --- a/lang/python/ru/LC_MESSAGES/python.po +++ b/lang/python/ru/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Aleksey Kabanov , 2018\n" "Language-Team: Russian (https://www.transifex.com/calamares/teams/20061/ru/)\n" diff --git a/lang/python/sk/LC_MESSAGES/python.mo b/lang/python/sk/LC_MESSAGES/python.mo index bb6e2937a9a951300fd170fe05168acc937dd47c..0dd441495e1a3b5d0f613d78ccda91bb593c92c1 100644 GIT binary patch delta 21 ccmbQiJ%f9LE)$25g@S>Jm8tn=Q>J8Q06cO95&!@I delta 21 ccmbQiJ%f9LE)$2LnS!CAm5IS-Q>J8Q06Yr?1poj5 diff --git a/lang/python/sk/LC_MESSAGES/python.po b/lang/python/sk/LC_MESSAGES/python.po index 8367fa5c3..2f3b0ba8a 100644 --- a/lang/python/sk/LC_MESSAGES/python.po +++ b/lang/python/sk/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dušan Kazik , 2017\n" "Language-Team: Slovak (https://www.transifex.com/calamares/teams/20061/sk/)\n" diff --git a/lang/python/sl/LC_MESSAGES/python.mo b/lang/python/sl/LC_MESSAGES/python.mo index 4a3bfdf42263673aad9999987c6d61876db6091d..e800ecf1cae40b9bb1c6eb152a11d317983a65a0 100644 GIT binary patch delta 19 acmcc3e4BYfKZlWpf`N&Zsrkm~E{p&|I0gj( delta 19 acmcc3e4BYfKZl{2f}x?6iNVI{E{p&{-Uavo diff --git a/lang/python/sl/LC_MESSAGES/python.po b/lang/python/sl/LC_MESSAGES/python.po index 023a40c60..8e811c48f 100644 --- a/lang/python/sl/LC_MESSAGES/python.po +++ b/lang/python/sl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Slovenian (https://www.transifex.com/calamares/teams/20061/sl/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/sq/LC_MESSAGES/python.mo b/lang/python/sq/LC_MESSAGES/python.mo index a5ee0c3af902fbabb5c6563416cfa4c9098ef79f..b411951a24f2757c772bd609923e52189d7ae2a3 100644 GIT binary patch delta 21 ccmeyv@rPrBE)$25g@S>Jm8tn=QzmyN083{Dw*UYD delta 21 ccmeyv@rPrBE)$2LnS!CAm5IS-QzmyN080P`ssI20 diff --git a/lang/python/sq/LC_MESSAGES/python.po b/lang/python/sq/LC_MESSAGES/python.po index 7c78a70c4..0f3e368de 100644 --- a/lang/python/sq/LC_MESSAGES/python.po +++ b/lang/python/sq/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Besnik , 2017\n" "Language-Team: Albanian (https://www.transifex.com/calamares/teams/20061/sq/)\n" diff --git a/lang/python/sr/LC_MESSAGES/python.mo b/lang/python/sr/LC_MESSAGES/python.mo index b071a7166f2fd852c02794fc6dcbc2a4e4752b44..24eecc19b1864f89a8a2d9b235ee9ece293adca4 100644 GIT binary patch delta 19 acmaFQ{GNG2KZlWpf`N&Zsrkm~5sUyuFa|*Y delta 19 acmaFQ{GNG2KZl{2f}x?6iNVI{5sUyt)&?{H diff --git a/lang/python/sr/LC_MESSAGES/python.po b/lang/python/sr/LC_MESSAGES/python.po index c8b52fdf9..d883887db 100644 --- a/lang/python/sr/LC_MESSAGES/python.po +++ b/lang/python/sr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Serbian (https://www.transifex.com/calamares/teams/20061/sr/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/sr@latin/LC_MESSAGES/python.mo b/lang/python/sr@latin/LC_MESSAGES/python.mo index 815b243d70c5d26fb1bc0e962ca36c70606a53a1..27d72a95b7be2a361e0f38e6477b21f4054a2f21 100644 GIT binary patch delta 19 acmZo=X=Rzv&tYVtU|?cpYQAxL9wPuYmIZ|X delta 19 acmZo=X=Rzv&tYh$U}$J%Vz6;~9wPuYJOy|F diff --git a/lang/python/sr@latin/LC_MESSAGES/python.po b/lang/python/sr@latin/LC_MESSAGES/python.po index 0cb8231c3..bf6a1a557 100644 --- a/lang/python/sr@latin/LC_MESSAGES/python.po +++ b/lang/python/sr@latin/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Serbian (Latin) (https://www.transifex.com/calamares/teams/20061/sr%40latin/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/sv/LC_MESSAGES/python.mo b/lang/python/sv/LC_MESSAGES/python.mo index 4a9a1f8804491d106141596ff70b7cf506fe4b2e..c3236012c7ff174c3f669bdd76d6eda325773820 100644 GIT binary patch delta 19 acmZ3=yp(xDKZlWpf`N&Zsrkm~e2f4(GzDV- delta 19 acmZ3=yp(xDKZl{2f}x?6iNVI{e2f4&+67hs diff --git a/lang/python/sv/LC_MESSAGES/python.po b/lang/python/sv/LC_MESSAGES/python.po index 5c5ea66eb..b9cb74c5c 100644 --- a/lang/python/sv/LC_MESSAGES/python.po +++ b/lang/python/sv/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Swedish (https://www.transifex.com/calamares/teams/20061/sv/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/th/LC_MESSAGES/python.mo b/lang/python/th/LC_MESSAGES/python.mo index 13c5108498fb42720760cd4ec21b9897e5856435..8dfdbaca7337d582f247bc457ef4065e5f8493c7 100644 GIT binary patch delta 19 acmbQuJezq!KZlWpf`N&Zsrkm~EQ|m+xCKQ3 delta 19 acmbQuJezq!KZl{2f}x?6iNVI{EQ|m+UIjP+ diff --git a/lang/python/th/LC_MESSAGES/python.po b/lang/python/th/LC_MESSAGES/python.po index 5ff443631..4d83497f2 100644 --- a/lang/python/th/LC_MESSAGES/python.po +++ b/lang/python/th/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Thai (https://www.transifex.com/calamares/teams/20061/th/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/tr_TR/LC_MESSAGES/python.mo b/lang/python/tr_TR/LC_MESSAGES/python.mo index a26742798d03eb8950415ecba252495be2cd2b28..6976a94d235d93280c427bd5ce897514d664acb8 100644 GIT binary patch delta 21 ccmZ3%xq@?pE)$25g@S>Jm8tn=Q>J1j06xV9Jpcdz delta 21 ccmZ3%xq@?pE)$2LnS!CAm5IS-Q>J1j06ty?FaQ7m diff --git a/lang/python/tr_TR/LC_MESSAGES/python.po b/lang/python/tr_TR/LC_MESSAGES/python.po index 05df72bcb..59ea61cb8 100644 --- a/lang/python/tr_TR/LC_MESSAGES/python.po +++ b/lang/python/tr_TR/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Demiray “tulliana” Muhterem , 2017\n" "Language-Team: Turkish (Turkey) (https://www.transifex.com/calamares/teams/20061/tr_TR/)\n" diff --git a/lang/python/uk/LC_MESSAGES/python.mo b/lang/python/uk/LC_MESSAGES/python.mo index c74193fef8b6fdd0b695ccfdec4500c86f6e1a9c..64f638da4f7c1af08fc375806d0b454efa1699f7 100644 GIT binary patch delta 19 acmZo=ZDpO%&tYVtU|?cpYQAy$J4OIExCRFR delta 19 acmZo=ZDpO%&tYh$U}$J%Vz6=gJ4OIEUIqF9 diff --git a/lang/python/uk/LC_MESSAGES/python.po b/lang/python/uk/LC_MESSAGES/python.po index 51401375f..9aca36a28 100644 --- a/lang/python/uk/LC_MESSAGES/python.po +++ b/lang/python/uk/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Ukrainian (https://www.transifex.com/calamares/teams/20061/uk/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/ur/LC_MESSAGES/python.mo b/lang/python/ur/LC_MESSAGES/python.mo index 9a286384d9520bb11ff2e5a6968c8f8fb1ea9094..ae1248fd1d2ead9cf98552204ef47ff4d2f17906 100644 GIT binary patch delta 19 acmZ3)yoh;1KZlWpf`N&Zsrkm~+>8J@!Ub9Y delta 19 acmZ3)yoh;1KZl{2f}x?6iNVI{+>8J@Xa!9G diff --git a/lang/python/ur/LC_MESSAGES/python.po b/lang/python/ur/LC_MESSAGES/python.po index 7a4c4277a..f10805858 100644 --- a/lang/python/ur/LC_MESSAGES/python.po +++ b/lang/python/ur/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Urdu (https://www.transifex.com/calamares/teams/20061/ur/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/uz/LC_MESSAGES/python.mo b/lang/python/uz/LC_MESSAGES/python.mo index 19c871a4125a4081e5a46c7b19f3e3db0c32041b..0978980d556f2a9a84fc1ecdfedfe5f68583e736 100644 GIT binary patch delta 19 acmbQkJcoHgKZlWpf`N&Zsrkm~tc(CS-UUbi delta 19 acmbQkJcoHgKZl{2f}x?6iNVI{tc(CSgatbQ diff --git a/lang/python/uz/LC_MESSAGES/python.po b/lang/python/uz/LC_MESSAGES/python.po index b65f871ab..1e02a193a 100644 --- a/lang/python/uz/LC_MESSAGES/python.po +++ b/lang/python/uz/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Uzbek (https://www.transifex.com/calamares/teams/20061/uz/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/zh_CN/LC_MESSAGES/python.mo b/lang/python/zh_CN/LC_MESSAGES/python.mo index 69bd2f8a5eb873b4377f1cc74e56f0f10bdcc886..22a166e353f807ef52fc67df09699accc5816ff4 100644 GIT binary patch delta 21 ccmX@hah79)E)$25g@S>Jm8tn=Qzi)}07J0_DgXcg delta 21 ccmX@hah79)E)$2LnS!CAm5IS-Qzi)}07FUz9RL6T diff --git a/lang/python/zh_CN/LC_MESSAGES/python.po b/lang/python/zh_CN/LC_MESSAGES/python.po index 454a9ac9c..f20d60e7a 100644 --- a/lang/python/zh_CN/LC_MESSAGES/python.po +++ b/lang/python/zh_CN/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: leonfeng , 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/calamares/teams/20061/zh_CN/)\n" diff --git a/lang/python/zh_TW/LC_MESSAGES/python.mo b/lang/python/zh_TW/LC_MESSAGES/python.mo index 5403be70282618031f7b4c37f319720dc53e7308..bc07e495fffb574012b1e55b45f106345b882b87 100644 GIT binary patch delta 21 ccmaFH@r+}GE)$25g@S>Jm8tn=Qzk, 2017\n" "Language-Team: Chinese (Taiwan) (https://www.transifex.com/calamares/teams/20061/zh_TW/)\n" From cfcc753130a70137cf989535d7bb1c189283a699 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 29 May 2018 03:29:58 -0400 Subject: [PATCH 217/385] i18n: Enable Belorussian translation --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4031e698a..8e7ca237f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -212,8 +212,8 @@ endif() set( _tx_complete da pt_PT ro tr_TR zh_TW zh_CN pt_BR fr hr ca lt id cs_CZ ) set( _tx_good sq es pl ja sk it_IT hu ru he de nl bg uk ) set( _tx_ok ast is ar sv el es_MX gl en_GB th fi_FI hi eu sr nb - sl sr@latin mr es_PR kk kn et ) -set( _tx_bad uz lo ur gu fr_CH fa be eo ) + sl sr@latin mr es_PR kk kn et be ) +set( _tx_bad uz lo ur gu fr_CH fa eo ) # check translation update set( prev_tx ${p_tx_complete} ${p_tx_good} ${p_tx_ok} ${p_tx_bad} ) From a04915e6fac6b93452cba1f6013ea6466068769f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 29 May 2018 03:37:37 -0400 Subject: [PATCH 218/385] [libcalamaresui] Add 'emergency' concept to modules. --- src/libcalamaresui/modulesystem/Module.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/libcalamaresui/modulesystem/Module.h b/src/libcalamaresui/modulesystem/Module.h index 896d3b597..ae9379859 100644 --- a/src/libcalamaresui/modulesystem/Module.h +++ b/src/libcalamaresui/modulesystem/Module.h @@ -155,6 +155,17 @@ public: */ virtual void loadSelf() = 0; + /** + * @brief Is this an emergency module? + * + * An emergency module is run even if an error occurs + * which would terminate Calamares earlier in the same + * *exec* block. Emergency modules in later exec blocks + * are not run (in the common case where there is only + * one exec block, this doesn't really matter). + */ + bool isEmergency() const { return m_emergency; } + /** * @brief jobs returns any jobs exposed by this module. * @return a list of jobs (can be empty). @@ -176,11 +187,14 @@ protected: private: void loadConfigurationFile( const QString& configFileName ); //throws YAML::Exception + QString m_name; QStringList m_requiredModules; QString m_directory; QString m_instanceId; + bool m_emergency; + friend void ::operator>>( const QVariantMap& moduleDescriptor, Calamares::Module* m ); }; From eddee7d76acfaf7eae69eb1fc42420719363ed46 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 29 May 2018 03:38:17 -0400 Subject: [PATCH 219/385] [libcalamaresui] No point in isLoaded() being virtual. --- src/libcalamaresui/modulesystem/Module.cpp | 7 ------- src/libcalamaresui/modulesystem/Module.h | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index 05394e69f..54b6639ff 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -276,13 +276,6 @@ Module::interfaceString() const } -bool -Module::isLoaded() const -{ - return m_loaded; -} - - QVariantMap Module::configurationMap() { diff --git a/src/libcalamaresui/modulesystem/Module.h b/src/libcalamaresui/modulesystem/Module.h index ae9379859..9b481b157 100644 --- a/src/libcalamaresui/modulesystem/Module.h +++ b/src/libcalamaresui/modulesystem/Module.h @@ -147,7 +147,7 @@ public: * @brief isLoaded reports on the loaded status of a module. * @return true if the module's loading phase has finished, otherwise false. */ - virtual bool isLoaded() const; + bool isLoaded() const { return m_loaded; } /** * @brief loadSelf initialized the module. From 9f8f76befcd4d975f6c225597d1c508df07f49b5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 29 May 2018 03:45:14 -0400 Subject: [PATCH 220/385] [locale] Introduce timezone-widget debugging Replace pin and text label with just a dot (to pinpoint where locations are) and draw latitude lines on the globe when DEbUG_TIMEZONE is set at compile time. Since there's probably still timezone-related bugs (in particular in the images that map points on the globe to timezones), leave this in the codebase. --- src/modules/locale/CMakeLists.txt | 5 +++ src/modules/locale/LocalePage.cpp | 4 +- .../locale/timezonewidget/timezonewidget.cpp | 45 ++++++++++++++++++- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index 384135d4c..853ad8cc2 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -4,6 +4,11 @@ if( ECM_FOUND AND BUILD_TESTING ) find_package( Qt5 COMPONENTS Core Test REQUIRED ) endif() +# When debugging the timezone widget, add this debugging definition +# to have a debugging-friendly timezone widget, debug logging, +# and no intrusive timezone-setting while clicking around. +add_definitions( -DDEBUG_TIMEZONES ) + include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) set( geoip_src GeoIP.cpp GeoIPJSON.cpp ) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index e2571d085..e4f36daad 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -494,13 +494,15 @@ LocalePage::updateGlobalStorage() Calamares::JobQueue::instance()->globalStorage()->insert( "locale", bcp47 ); // If we're in chroot mode (normal install mode), then we immediately set the - // timezone on the live system. + // timezone on the live system. When debugging timezones, don't bother. +#ifndef DEBUG_TIMEZONES if ( Calamares::Settings::instance()->doChroot() ) { QProcess ::execute( "timedatectl", // depends on systemd { "set-timezone", location.region + '/' + location.zone } ); } +#endif // Preserve those settings that have been made explicit. auto newLocale = guessLocaleConfiguration(); diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index 976c139fc..a06d3169d 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -23,6 +23,8 @@ #include +#include "utils/Logger.h" + #include "timezonewidget.h" constexpr double MATH_PI = 3.14159265; @@ -75,6 +77,13 @@ void TimeZoneWidget::setCurrentLocation( LocaleGlobal::Location location ) { currentLocation = location; +#ifdef DEBUG_TIMEZONES + cDebug() << "Setting location" << location.region << location.zone << location.country; + cDebug() << " .. long" << location.longitude << "lat" << location.latitude; + + bool found = false; +#endif + // Set zone QPoint pos = getLocationPosition( currentLocation.longitude, currentLocation.latitude ); @@ -85,8 +94,21 @@ void TimeZoneWidget::setCurrentLocation( LocaleGlobal::Location location ) // If not transparent set as current if ( zone.pixel( pos ) != RGB_TRANSPARENT ) { +#ifdef DEBUG_TIMEZONES + // Log *all* the zones that contain this point, + // but only pick the first. + if ( !found ) + { + currentZoneImage = zone; + found = true; + cDebug() << " .. First zone found" << i; + } + else + cDebug() << " .. Also in zone" << i; +#else currentZoneImage = zone; break; +#endif } } @@ -149,8 +171,28 @@ void TimeZoneWidget::paintEvent( QPaintEvent* ) // Draw zone image painter.drawImage( 0, 0, currentZoneImage ); - // Draw pin +#ifdef DEBUG_TIMEZONES QPoint point = getLocationPosition( currentLocation.longitude, currentLocation.latitude ); + // Draw latitude lines + for ( int y_lat = -50; y_lat < 80 ; y_lat+=5 ) + { + QPen p( y_lat ? Qt::black : Qt::red ); + p.setWidth( 0 ); + painter.setPen( p ); + QPoint latLine0( getLocationPosition( 0, y_lat ) ); + int llx = latLine0.x() + ((y_lat & 1) ? -10 : 0); + int lly = latLine0.y(); + + for ( int c = 0 ; c < width ; ++c ) + painter.drawPoint( c, lly ); + } + // Just a dot in the selected location, no label + painter.setPen( Qt::red ); + painter.drawPoint( point ); +#else + // Draw pin at current location + QPoint point = getLocationPosition( currentLocation.longitude, currentLocation.latitude ); + painter.drawImage( point.x() - pin.width()/2, point.y() - pin.height()/2, pin ); // Draw text and box @@ -173,6 +215,7 @@ void TimeZoneWidget::paintEvent( QPaintEvent* ) painter.drawRoundedRect( rect, 3, 3 ); painter.setPen( Qt::white ); painter.drawText( rect.x() + 5, rect.bottom() - 4, LocaleGlobal::Location::pretty( currentLocation.zone ) ); +#endif painter.end(); } From 2c18ba6ddb37a9d220b86c1cbc5b7cc1ac63ec54 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 29 May 2018 05:52:07 -0400 Subject: [PATCH 221/385] [locale] Adjust latitude calculation in the southern hemisphere The scaling on the map was a little off; the degrees of latitude are a little wider there than around the equator and Europe. - Johannesburg is in the right spot - Hobart is no longer a suburb of Melbourne - Punta Arenas is in Chile --- src/modules/locale/timezonewidget/timezonewidget.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index a06d3169d..ae048ab6f 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -131,13 +131,17 @@ QPoint TimeZoneWidget::getLocationPosition( double longitude, double latitude ) double x = ( width / 2.0 + ( width / 2.0 ) * longitude / 180.0 ) + MAP_X_OFFSET * width; double y = ( height / 2.0 - ( height / 2.0 ) * latitude / 90.0 ) + MAP_Y_OFFSET * height; - //Far north, the MAP_Y_OFFSET no longer holds, cancel the Y offset; it's noticeable + // Far north, the MAP_Y_OFFSET no longer holds, cancel the Y offset; it's noticeable // from 62 degrees north, so scale those 28 degrees as if the world is flat south // of there, and we have a funny "rounded" top of the world. In practice the locations // of the different cities / regions looks ok -- at least Thule ends up in the right // country, and Inuvik isn't in the ocean. if ( latitude > 62.0 ) y -= sin( MATH_PI * ( latitude - 62.0 ) / 56.0 ) * MAP_Y_OFFSET * height; + // Far south, some stretching occurs as well, but it is less pronounced. + // Move down by 1 pixel per 5 degrees past 10 south + if ( latitude < - 14 ) + y += int( (-latitude) / 5.0 ); // Antarctica isn't shown on the map, but you could try clicking there if ( latitude < -60 ) y = height - 1; From b7dbc8cc1ff4dea3d31005626e4a942c8de9d90a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 29 May 2018 06:33:50 -0400 Subject: [PATCH 222/385] [locale] Name zones when debugging - When debugging timezones, state their names (e.g. UTC offset) and also log the pixel position under consideration. --- .../locale/timezonewidget/timezonewidget.cpp | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index ae048ab6f..5acdb6458 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -27,7 +27,12 @@ #include "timezonewidget.h" -constexpr double MATH_PI = 3.14159265; +constexpr static double MATH_PI = 3.14159265; + +#ifdef DEBUG_TIMEZONES +// Adds a label to the timezone with this name +constexpr static QLatin1Literal ZONE_NAME( "zone" ); +#endif TimeZoneWidget::TimeZoneWidget( QWidget* parent ) : QWidget( parent ) @@ -50,7 +55,12 @@ TimeZoneWidget::TimeZoneWidget( QWidget* parent ) : // Zone images QStringList zones = QString( ZONES ).split( " ", QString::SkipEmptyParts ); for ( int i = 0; i < zones.size(); ++i ) + { timeZoneImages.append( QImage( ":/images/timezone_" + zones.at( i ) + ".png" ).scaled( X_SIZE, Y_SIZE, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) ); +#ifdef DEBUG_TIMEZONES + timeZoneImages.last().setText( ZONE_NAME, zones.at( i ) ); +#endif + } } @@ -77,15 +87,17 @@ void TimeZoneWidget::setCurrentLocation( LocaleGlobal::Location location ) { currentLocation = location; + // Set zone + QPoint pos = getLocationPosition( currentLocation.longitude, currentLocation.latitude ); + #ifdef DEBUG_TIMEZONES cDebug() << "Setting location" << location.region << location.zone << location.country; cDebug() << " .. long" << location.longitude << "lat" << location.latitude; + cDebug() << " .. x" << pos.x() << "y" << pos.y(); bool found = false; #endif - // Set zone - QPoint pos = getLocationPosition( currentLocation.longitude, currentLocation.latitude ); for ( int i = 0; i < timeZoneImages.size(); ++i ) { @@ -101,10 +113,10 @@ void TimeZoneWidget::setCurrentLocation( LocaleGlobal::Location location ) { currentZoneImage = zone; found = true; - cDebug() << " .. First zone found" << i; + cDebug() << " .. First zone found" << i << zone.text( ZONE_NAME ); } else - cDebug() << " .. Also in zone" << i; + cDebug() << " .. Also in zone" << i << zone.text( ZONE_NAME ); #else currentZoneImage = zone; break; From 4bacafb41102252321dbcb30235131fca0e5b8b0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 29 May 2018 06:44:28 -0400 Subject: [PATCH 223/385] [locale] Fix timezone pixel map for Tierra del Fuego region - Punta Arenas, draw like it's in -4 - Ushuaia, draw like it's in -3 FIXUP pixel --- src/modules/locale/images/timezone_-3.0.png | Bin 16635 -> 15999 bytes src/modules/locale/images/timezone_-4.0.png | Bin 18758 -> 17925 bytes src/modules/locale/images/timezone_-5.0.png | Bin 23061 -> 22353 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/modules/locale/images/timezone_-3.0.png b/src/modules/locale/images/timezone_-3.0.png index 0c5246e10f5d225623eca6f1e6948a00055690b4..dc64644fcd17b5e8f0bc6039f8dcff700293f923 100644 GIT binary patch literal 15999 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 literal 16635 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 diff --git a/src/modules/locale/images/timezone_-4.0.png b/src/modules/locale/images/timezone_-4.0.png index d556e93f4095a72015eb6a96ca4fc8a05fb1bf10..da1e73735a3ec08d13659cc69ca04b356a109650 100644 GIT binary patch literal 17925 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 OBs^XHT-G@yGywo*;s?(F literal 18758 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 SY@~pS7(8A5T-G@yGywocC$v%k diff --git a/src/modules/locale/images/timezone_-5.0.png b/src/modules/locale/images/timezone_-5.0.png index 8facd09f8a0441c6ea868acb773b33b0ba582f6a..1ab1a6713841f2a9a7e982ca7727563622b46235 100644 GIT binary patch literal 22353 zcmY(r1yq#X7dMKpfdWcOhje%MpO6kg7+~nmp-WPch5?D8Lxln99!fyz?iy0M8R>@m zjQ8HPzK;cK2Ie_u_dfgl&OSuF(@=bgMUI7mf$>sVNnRTR<1r2f#v`5Q&w#%~NjCQa zFE3n`3_LI}o_$CEJbJsx3%tP~^L(rC`QF9G)5qN18pFrOhs)mC(ZkZ*)tbx2-8S=3 zf*g2=5&e*rxu><5rMorog2Bhb%f|_P^YH2L3W)KGhzSU?^YDuC@c5HhBmS=e5Em%*L^r#{oe;RjIc<;K6zhn>|$Nl`$; zUk8LV=fErQ^=B#U*S|Ly!lD1i8=4nRu~(Hn=uaxCXnB79v4mEle{qe$BSpVr{0YY+ z{gd~oZ3q2Jedl#0CWb4jQLD)}m-fbhTADHN5g6i6Vr|QJL4sCY1H`N%>44V-(5792``x zLv_sG5RGLMUm=}|`ni1`PbFTkL>l+Cc}e*dn!(R9 zW*Wx zSjl#iLagSTiMVxByGJzle_rZ;_|Z1+9ZT`lyGE;CF9z;9H?sFrBzdf~b#mdc<8(}X?TEfs zKgvAl4x;SrtF7=r-ipRN(*>wIiHWE%>UmTYr=cx}JqPg&ksvAE>X3B1NPYt%h+#s?E^ziG4ZN6*4H{1utKk6e5s{PQqZznWHfb5H7> zIEI-^B{FHSaB_NtxvGGz_-knCh{u1j<5Zdrzn-!~d{qc-IC}>{uItBnN80gI;!QNq z^`sBcAh|?4lBP*QEA`pGi}1C?4FoSz4FzRJ{`2WSa-V-;Jf`1`>8w`XjCRNph0DTu z`30s8$C&D<6tBPoKMXub(&}nC)~wu%t;D+tR~P5$cnNuzKan-;9VB$RJhbx4Dv+e8ZK-IHoF z*`DH&$$^vX>-VQ(b5nlC_AMp2y1p#y`$F5{5{hrBltgQZLk7#}WO+|76KI1->YSVt zyi&0g`~cS~xvSH~$L*FUR9G~9{)$%dLiI_2s_ivjh3WsQjX@U{D4q0Cdxp+M)=A%tnuF%Kh{hh%o@@pQKtPJ#-n z1_7D;r|s}Z7ea-v>8hQq8>Kd8MUZMsK_dG-B%kB1RCk+WJYy@f+0Z;Ep?M~Sd)2QA zguQ(!7oHwfx7vB;IegT+=EEh%CqL9=^zy%Yg$%V;QfOn&5y#E+Jy$Ff;ptoUsJGh< zY+GBptVwGUgbB4Aij3~X6H0BbpN{FlH;fO3R=Z$ta-{F4)^-j|CDC@6M%!WKb$;d$ zL@J*`9qb5_?>1*jC{QpUR<@xlGa#c+6d}5sVt+qU_1Y$8W7xB8Z?fZ8trPQ*Un^T< zPG7*6lbSc@d`w$5I-ute!m6?8JZIH%0Z>v~T*x7fknnbwW!n|>tgH#`#~423|2@XR z$%_?YAh495wEr+bF?Gv0^RmC2WuSU?9jiD$Ir7H1VtUWU;Vy1@_;N8ZcMlh-ku|b8 zK|8?5g}pj77m-=gWI+oj zg!W>~gYQPn{!8I2T#yb+YjPE)uw5N zVZQYsc~}Az6MS}SR1Y&SG#->n<(~F|MRY7`llPGFoj#hTgtNkxIj&_%2de7^Iyv&) zjD&|6c@?K%{m8m7OpV%%2#``Et15lyD2<%~AzD{0X!gT3JROqN`kaQ}G?3|1rrRx< zQtzBPI9}BZWwco+!_IE=eBX0;-c%e!@pAxPV!%}S+V$kVk zLm$^)QfPWtMc7^)l@3*gz-#lOB13smIof#g3WaG7Xyrj(pvm=zI1OyQqDdWIu(PfW z>OE5fJ@0VQVaA>jY~5ph$VTyJsAXuAhp|C~H~b1=2E+<6-X%Y`x1f6;%-sSZo2SR^ z9b0MGeN#J+U$^y`g?<%y0gt+-JMc+(rCiLd6%-74z2l$2}+m`ViX83$})!tkvKxO65fRVEaO46=8ly?!J1ax@}7 zm!Kx*NVQoD?KRUFCf(kl6l6T;)kFM@43P~1hv|%9X=F=GJwOuUPn;Z(C}?~2Q(nXP zM5zfwSWLG;wM5QK0Lqb6`aMWqR6@{-Es3$oAiX?*zt&RMr5v@6G1*h8@q$duG;WiB@hV!* z%a*21IRP@i7C)ggjjsgf)dvG_{(UUvNyquUvzIR4Bq-GgDa?EEmcJ%s@aCs%g$L;v ziU&kBFp&DK<1fZ?XzJ;FMZY9 zID8!S^1HCD;OVr=AbSb%*AC)R5o-KLbB7Hz|(Vo=Pb^xzL7$0 ztBXAkG?W!;guuljY*XY=xe_*5bb5L|oy_2j|B{{COgKVH4|BBkfloEGLdZ)GSX z+9}^sP&e&}9I8YisvGZrOlM(z%ND2$f!1Ynd+kmP3~lDHk?|cn6xy6@2A2<{>GUYG zR~>Mu?i44_eX7jr^j3v4{CF907RIt$KGP9Y!fHjZl--Ob>1qp<-M=a!=CJU!KBG_U z-FWyDn_HgrN+oyq#d1_uQu2R`g|veuBvqwB-DV>u56LsWC9QZ>ZN z4Llpxr#9M7D zdtpNm=i=WLrOhNQwljOL(Zg-cjJue7gpK?zEVf5nhq-0gESLJuqOcfD z)0v_&sqGJ(J1iva$D?w#1bD6H4c!{i8uWRJ4udPb>@b^? z?HL0~yrSXo_Gr%EFS&O(c1#K4RlrzYi-IwUD` znwPgh$8W|mB6}OIRwhSjZF)FQ58fI&mDZlGU-S%|)|FuAqv;@Cb0~*=GXL3g0y;eU zp2Xf9M~DoEGbL$espZtbverJxo;F!R>);*IU}F*YrYfmgAp!4Q*U=KE{2hJM1+b1U z$-ogblV->&+*{)+ulZGNVmFu1_Ww#+E-ki(v(OdSpTplcfGoy}{$bg;Sq&~uY<|7m zwFSx5|M9gqq?@JnR*qB7%qVDj%~`6pco!k)MA>Kg7VV78OP^O=ilROJiF-57#xRZJVy> zws18@4e#dviAw{-0>|KHOZ3xFGbS01&=d~8r%YjmAAk=(UVMyTBqg2uD=7N=T|K0% z2S36k1~o|AkXi!5%+)nx9lQK*2XjEN|&BZBj?cRg#<(rpmv}4kG7= zyW7@pkn6F7WJZd}hWsqOZl~&C5y3>=c~nBPEzg0$e-zNwV%7()`pKA_%fL1xG7T6B zqZ@5vmXf_sw$nGT3L!Jr%^E~qyQFhWEv0+%KVZ-=e{?#>XKt5Yd1o5>o|A8m=Y$#VmOg!I5!WVsHMrygUKU*;I;ux>ynQ#1v^Jd*y06Ro*Ak@CgKv1vH` zgoRc6!sKC%jVBk<%X72MHnDk2s4QSYjL-j;j>+G4zFUF8H&<0;cR$vOOCc0`N=zr+ z0iUc38<8Cq!NpaF+@nglDjTkact@GmINieQB-i5X9cOZST!S=izSk2Y6l=8q0#or{ zsX9M~fWU(?$PrF*oldbI90zo43ZjapJEmZ_j_i5`Ca(L81Kz8NAaA^$YIt43xJtE? zKx%~E#hmxu*_$-`D!2jZ=W9EFze^>w<`QUDjLh}ptxj~lBtA7QYzq;x%70B#9D_N6 z*rP9L)aG7BT}ev6r(nYs^lk_Wp0(q<3n~zl3Un8W)61BuL+WNHx8ts5paqt4dJZIx z>CLjaZ5)^N=vuwVJz>k3YcUf;YSEpoR0S+JRGBu5VN;2CU;uLHHkoR1Wo9=x$0V|q)>8~qKi$)7w-v`y^wZPPi$glGw5EMtqbV>b^$y94($@JiN54#q z(ogJtt&8+d?g@F4KD}fCuPHH7W`Z-S5uIPlK7oUVUabxeJ2Xp8%VNR=U9;@c4>nIw>>b3Zza_d)myfAr*2cjj2 z7s_W&kQ%~5eTZ+~jusdpj9!0XFN|FS*;HBA&r;}(H36CAt!}fpUbw9l`pd}=b|U12 z_}?dzX7?4yAtl^MU6;?AE#EhupI)vX=an;ug80CuR8oN(t8(0RDN`E)+ut8i0#iGw zqJ2t7Ma40}DLibb^GiWDUKMhIr|%0dow+&3=8#yp$&9h1&Oj>LS~eBZNg#2k%aS8< ziQSb{&dR{b_M}_GA}LboNs4;9k%?Zi$~Z#-OJu1HIXjbA^*feQ(+?Z_1FD9>|F(jM z5@<1|-WpWIHj_*wOVVjfOzwS|?xY*GS66W)gR>T@X>42PsW1`7Zn!s%?m29A@=M>{ zDt$v^4ag)4fm*7i92nn+N2@B2<10JoZo(%N*eDqD&iNdDWn~bIyaR# z@n=qKcEbha!#ET`6TM12rd+<1_a^c@upzbC)5_PKrLljyxC8rYx_jLS`)0ztOqMI= zKYPTdde9wrB9pckua=bonJP%-&XTw;)UdJi-CBY%-(|HHjlS8~)MkP!DHll$fMlQB zW5Ev(Yc*KfuYsv+bJ3kPEwYi_x0 z-fCA5TJ?EIxa)k^!Rs|4)lQQSy?%VD463pMloEx*g~_6Kxb_pSz#l-BDE$ zil)5GnmZ@xfZuel&L-nGY%FFlLy_5JmcQ!clwLIzH+wrGFPnpP%=zVr;k- z(TxF#q;$iZI#+kyZ#Yv@-tq;M;MUTv|D)E8riKGe3)x8HIGLy5!Y-m3_))zvEBd?Y zZF?m{S7!#&&ZOb*ACI!`R$ZZ#!wXyTDaMEO{REeXP{wrb>_$`tWqm3YIe2kz-&sOd zt=%p5#^mi7IB6_e8_oi?#F~esc7 zZpzufKZ8k#?DhAIt7jYS9|pXM5?}(rYR1wp$YfiLyQ#V|2(=*(eRJ;7%^jCk^fiy) zZC4URmJmF0^^yo{ygwYJbqg{$U|vkfYeS*!nMq{VIK*MDyH z2~u>V?AMK>%DKB9x-E|Vy-pxauC%S2y0;tBm(?QfyOAHRcM8v@7tl8UXoyBu!uoi| z#AmR0UuxDK2J@TjJzaMmru#wgb}mirwb&Qw;384oBD5C zRPZ;e$rC*b0d*G&HP14wA{dUYn}9^6({{J@Yo<6Q_zSxuY1kQ6T>TCo|d$QpVYaGV<@Sr(+|3vcaQFOLP@SIEHCN7hOyaHFW=!SvxYzD+}Znc;gV&XM%Bbem`A$Vn^1N^8}3 zN=bD!O?n=H$6pa>bm)<$^pR>3b}EyHHyH{RG zN^Kvsd&ZKG|1F|?1AbJM_YAizHD;(K4zbftTnitynVRx3;~>ilGR0Nfg0MfMovT3( z2({+5o1jB>Mce?6n~UR)-w7He3t#S>X56l?6v_maQ3rOj+5}qHORzqd(F`b)atKiZ z1A&dll{UeR+w2G;Qad7jx%53xXYx_r*y0UwQ2W3(2R=SFeb}2KBKy3?8U3ney?B?^ zzv=Lp&6!v}WaV3FBPlmJ-!0O(yXzUQiA_ERv;lFc{(J1?h%`1O6F+`|QpKdPzf;N3 zuCD&7;ao~3hE(oyCrG_U8G%ntYHgB^N<^h+j*>(O&&0$2mt_4@ZP|@avT%aZw1}(T zBm-G(6B{lPv%PtI#ibh!Qw*z09S_MBa_} zC@_;peD8&L8g_L#&)eUG9V)>WGTm=oJG~~x>&#c~fW_(3Se%cR18sc-fTPT(_+PHo zq>uIAs}1*KnLEw%=In)uT82n=SVA!iZMZ7RxpIR6sC4Vf#tWt5P~8XJq%d+}3|{|c z8_Z?8d*CUVJ>nsuOYKZ^;3Kap)=jL|?gi}$acO{{!S!EnfI=K%KVxZ1HuCB~`W;z) z_pMQd1yZ4P>VMF_>OPGL=LrT9kT=TkJ}u)eq0#lY4^>MczPlZXPopnv3GmZ;TUCd?R=prb^qa{LZKkU)M;jTuxM7@VuOjTugB#~|IO}2 zk9fuHALjeDzn!<`P6&P?MU(m&P8X-r18{AYzC+gnL{}_szP_h$_z>y8J~?7_a6w+0HZ6mwaThU=5aQ!IQs?*v_H19?ig?(iDsmm}`h@R- zH!N&cOCBO|cnOoLylSLcT3h-2n6^ur*3N5MX>j>ZY8O#C;-1VyVND z*RstBf6J3cCS!hQe~#yNSFCAIPn>P&DSG5SSq&I13Pu^!I0_$cB!tO9p*?Lg<)|E6 zVwAz$pw*6st?dxRlaJoABqCA%luFaKk0*iFT@qFjd+KwsJKU#gyZ^U*0gY08eIficqb&K%k!SZi*%Wx|#ja^qR`ZPy(4>Iz z=iEH}5hBbOm;X?m_y6w&2&!5Kc~cGIj1Z;kx3s`M6$lJ5iw$?l^00T<*j!x19nSe5 z@{>tZI|$#gXK(&>puDQW%ZQ5PXx{QQk)-H`n~-l<63CMUxA4?lbSXj!ikG>{T_(M` zyJg_qkt|bDy{{{94BSml#n#TgN-yxwfs(DpH@ko9=3Q<$qXOu+TEOB-!gR2*vt+w(Z z`(IH)F&l@kq)DJ&;!DTl3x}u?Q{QbJ^7vCE-@?H@a@)&iDi+~cR{X)sdU;{?GHj8} zfDk&x@_nce$I}&UYzVL)M});Xo(z?LC8XOptHa!ynW4^V8*|Km=S@00WMcc>p?0$S zQh9Ww)Gw%>g=38e|LV$fcBDQ$Dl(SVFE2m6U#_Kv?BUc-NH6!N`%!O{v+YHb#z_>f zA3q+c`S&HAoBpmMz4x#C5BnRB<8JPQcKY|)mK%otL0hgf-_XYVwx~(8zp%~4Exo!N zg}a+M)DQNsT-UDgHVcb|!>T+pLR%7!rsz{33qGwm%ZMM5ebvxRZZBJjwiK6{yNx$# zP6@n&9G7!_PiU#MwdP4=%gaqAOxg}U{VQUv)674{=l_sidg-4;#R_{vmzW>A<%KD<)-v8;{JbriUlIx4Kr3Y=@fl<=MG?3!dVm3q2C%Am5dB=2p$<-t+l# z2&TO-?1$+;jqeoD#9=&3sZu9BurKA1xO8u`72J7T{=tGNv0Vg_y~&~KZ?A24b~6F7 zuV1W++KR`~%*oZbK00HoLnn;G4{7EYUxyT&w1U64RA~oErY>I+1^+602jc^?s!UAc z#q{b%D`Cm(m0)t8?wO}i9PW!=!Rq|~zZ zcf2s#dh4BI%Y(GU8LaUB_EIlCj{=QrEhJSky!aUDRI;am^1B)vE1JF=q`5`OKDQX4 zWnSAeDyrobmvHw}aWoI*BH$->h*LSnT?&>+2}01!*7#!5y<{m z9?h6-5zi7Io+6582)vi)d@eIJ4;Jc=lOYr+@3_~eR?YJSoIQJuar4Pq+fVHi)nijS zv!3^q+w>HgN{R5coa4Feo`db__uo?FVHQlRD29u(GlSmk0nB1t5CL#)w3YHo|~wdIJaV#d+Yguen4mvkbhXCc3V zaiVswam2z1Zu`ke3Hj(90)grey@Pt<`r^MZ9(U(Xx!tjf;GVZDFy>uqpE5ELVs% z;Ap+7Ef#e<^>5{%e)0^1j_#n)gCr*a;`L#9VI|_eK)BBFK$+ILtXq+NT!pMdjV>wA zh-oGu^yv%QbUTj|xNsrQ6T;UDKarAJIwBgAEpmEjHeGwZZj&Lx-l*VIA;&juWl7^Y zj)vj<@zN705yyHzO5)BG&d@b1R!$rHD!h;iL%$Wj^;E@eJ!FAgXqzHhPRx}@Pk}&A znCyG)C%P)n#)wiful%NCH>7Yff1&l#&oX;c;fgZdu%z6E$)>f@I35RRnyE9=Lqt7) zI)dh4Db%y|J zm{lk(orMsS#=(6y`NNHYsY>u@@p1p67RoJGVv0!`GKl^IW^c9q` zIR-Y@8enhFg0&B|fiw+sL@7-S1$_^OSwpP43r!^?c+Yn8+=vvlc&6SYhAVxkr4vQ0 zP2P2B2V(~QT3d<+=^7gu$L0pQ-mc6Qy)Q&~B47Wb7Do20p|EQG#SCHY(TNUUc&~e` zxWsh8FR$QtX-KcbfEq26Mg94zQRiWSC*r#W@v16Hssqmco>H*|GcOJNP6EDBX8Kt# z|5aKWU3`u$FP|sAuPAdb%dIfGcI~$L)8K`g{pe9 za^=Qo>NEmUaJXUe9;Bismz0KeE*xH{1`cTC|ItaD42kR|9a39`n?`)ovn5Ew06BW(;A}TB@F7C4uLEiec8)8%5H)+eP2oJ2Nss7s= z@0VQ_hnIPik%-TvUK3^Ql@)91F#v1qi=x`1p(b}+KsAW@Ge@}KB!I-0^g*dq@vNo@ zn^1<_^hg|hY`QXd31PO0K}!fD`q<1>6F5OR7{Vj7NK8rSQmOsSl3`9KKeLa$IfotAqL}-km~VXEfaNIw0lzxQUKZt0XEA9^3#e~O3*df{M5A%Q zE@4Eu!JIE3L^iHH?pdRa_Y56)^xLrr@ z+*tXwqT!U>9O?G}gTtcOzTm&`F0us{+%y!Y-;dy}SiZJD>{=p0#+e-bE{=O@x?EDYasu|#6(E{ZuKhXn z88l>VKRc?EPlm%Cd1Cc11Zlt)2e0F??^}JY>jr1Wl_pMeW)4Su&)nt(MZcFJ!Dry0oCrSA z8&(TCZb#}${zjUSb>F!G5%JvXr3Jw+L4vad4oNt|Ip)cxBDd=Jv<>?{Pr>a~V2Q zKI`u$2CR@?Jkbxd2zSx(I-wEE@;jgm<`ZqSwF>#!%#Use{+JnoZXX@gqmUsqNNG^z zHGfYK^9Ji6TqVmp0~}~WFjr||F;O0Iz%uFMAp#7*5C+1;tb|uDv z6S#4zX%m=c3_0TCMo>}yY>+8`AHiSf=NE9EJo{K?(Q7wUq@6#V+M|&be0S6a&Fd?# zq+`{u(b87@R5Mm;phNAq(&{wVm52r<8n)i>{6ZuaC%uKCjsH=RFW;9w$Am4#sH7rq0?x~_l~&M*uPJWXJ4OP<7gGLj77g6 z5aJ@!c4UXAk_^)XEDaSL4hP!Oug#`a zlO#}PAKKez<-2Wrk?$c-Qb!JMoLidwi)M12s}eFIx$;%g=y8Kvnmtfq+#=3kyur@Z zLncf)t6GcKij;3Z?bjM2*=1&yX9KrSnQM^e)b@L&wffzUyw;SQfF%~374P@+XRDR; zyirjrQC(AN-l2pIx^4JR4gjHE2*g|u#B3?tqdF-s^=oeWbjO|YdDNVQe8lL~^@gRd z!KBILWNlJ>bsj5G3&uGRGbV4NHRS=3J@%y{hFU-V8b?ji?4}mPRlLeho33)AUQx}M z19(q)#CjlFrB2uOtgfwgb4&9!LToH-yZq%p!jAz&z<;i)Lfh|e?;Qo43b)(_>yxCw z^{xhMGjezQ^VYa$K6mKKSLv}9SBGmwg&x^{X>adA6IRijVdIHIvjNt(_8uKA7O|7> zn_@F=}tas?ABh*jj*q_bzze^5Jyd=Y;&Q(b{>90{sdkhA*ISU zS}gFjaXJ}!wQwaRV%bD`jy0u$2M_)`pZn0js2HpjQzc8JDI_-3 zS6u55CW&bp7!p=R!c7%a-gG-^4fBhR>~-b1z4cofK~%pN*Q8!-yy&-eQnalP$`2O; zO&vAP2Z5DTK`nFGm;hrNVm#TAjn2KXza`#fd8z27*S|*&RuM#yU zXEDM4Rn4%ie+BjgfEyZurR&PUTe;Bii@>1cPnsivM}IoF?+3SiPk!vBXW@0bF9;M` zyq?;dAV~^>kAxsopo8~$%Xg)CM2HMHG+}Jx4pHLavPUphwrS5L;%>PW@8i{c{;Z2~;d&xQkhUe?B`P;A7My+P$ z>b|u`>?j%Sb<} z<~h^`$?B*}__z5u*}R(rwPqTesaMi}7gA3cjT@1Vijvoy=MDF~Z#T|1kb0Y3QoeC4 zncg#8&lay6uQ%_}br{Ax(D3G@N>8s?ja2!dLzn~_K0 zUS_0h*fitr_ilT9uI03o!6uY7zU1>U;tv;EN+-!D&t_B9GRDM4EYcxY(qNlAcVjtId!;F%y;x=?TF#CNvjP=Q+r`)-8gNvL#5!f4;uZ&w( zybv<_QHrChKwRJhHM*`Ef4B7!KyuXDUy{+OvT^HyX?799yHeY_qR0^Jzp|_5w5zIR1CQe0I)zLCU>MXCdZ2@9C zGv4{?JBy)77hcoCAmXwd!!O&GejNO)Y`vX*ON-NvwrD{9*WW}=;)*$9iP_Rrrq0u+G4`@P zwaYRDT9fvD(8>zJyikI6eG`Qb?AYH zRV+Ld@|i6p&Z!$;)*9Ffp@c>vCx3(~D2Cg2SNHc)zQi`6EpW-wRM)MGK~w#{N3)3L zZmRJrrpIwP>uy~>Q#qERqxH-B(LtA)4PBhvt7&3e4aIMZ`o;mrlMqVinu&Um$;t6` z*V@@UIl7taR|EziD*puPVl8aoY9?$gz*NN#roZkKQ5gDj>YCDWJan8TxrL>7vY1`- zws%|2Z-CxvvsUjt>%S9dr}r#=;SiUr&Zzs`?60X&+Z(~hQ{3uJQqm6M>q{y?m%hyi zb3NVo3pv$`3Xbih`sT?#QX5DiOA3%Q0LV@dhexFK);gVi?1yziu=rFTn2hjLtzwzj z*uG*DHT!Q*i=ajKYqVYJU%ue(hzAQ9cv3`tO7E*i_NTUwIhC6TB(I{-IbW(8K((H= zk34Xj&bHnBI9c8pxaFnY5lVR=jV4Uu8iJY3>q}m{Hw)GjKzRtTqk$oR=&^t;WJtCL zjfYWCZ?*E0%E5p53B399FN0gFw8WN+;|FJ^QMtCqwN_4r=<1us80h4{6Wcp_O;_O% z=@T@1K`y7@s6kP;A68Q#b!2dhN@McnmGY#OK8h9vxB~YGRI=u0 z!vhSc0#6j?RU$cGVXb-_wxPW?z!&gZGopwETH<6&rlutgYz7$#GABM=?<7_P%iZ@Eu7o&lAb99O>W(+z_*3PPi=pzozWWj}c6yqf^Cx8fa?H1n7>)*g>oA^ajeaB1fF6y@Zj~GFHr)7`Ab&eO!-N zG@bdE=o5EZXn7gqa&5i@1!I19!G`qE`sIB|AX)X5-S>A!=yQScc$XDt1;&O?`YJ{<0WP|r$Tz9ku;@)P-&xyW2u4_B#`ql ze^*PBM#v@{>Jj{Y`S=7a*@8I`HZld;?nZYH^**+|iN+U!Jr7$8W#>!vI|lwjuOcY9 z5|vbIt>&}|dZLs6_vsIY`|;N&JYSgUKWO4S|MUst5y2CgFA@wN2^pTp%Ewu&V7*l( zdK;DBz+K~dez>z!SKM^I!L_w+u9T5HTLbb^_X(E%g~2bV`*73tx%Gc{n@$R%G+b7$ z#uV!wjx}?8O}CeTd<*2uX_a}e-G}w-%PcLOv+hch6VvbZ;y2vk?H~>1YNnN+0McH` ziBDRY*K)afw$-d2$Q8wS|F>@8odCb6$7aJ#6jjpo9m{24InZh~3N*&<+wG0yI%fr2 zt}>Uz?9?aehtbi2W5_eXQm?HtK1C|A@k{fG9gUlpk(|iv?&qJg75(-GZc?~Dyx}qH zY5sfo>FNqwF$mwgr9Yy=z9-$DMA&c zR@+rx*flMo6=pZu0w^2@NI%Ugg_27|_+#KA+qdWU#n939dwV)5%+E1_^}_%^^aipxqNOSjS0amg@uBgJ zv~w3}RGDR|^69s47E*dYY$n1$QoXI@`g@&B(@fFT2hRL64z&v8TDA@Jagm5}fjwrB zynLqvJDo+Bu!UvW;*=8+s)TLBfD?>3{v`}pMTVZoY~JH@>2VD`8;hD@CJVo)ySc^4 zHxJxb&{FDy+U&SGHZ1MMm0Q=7uUp7BSc?j?>SZ$}VO@YakKOBj+IEmy%O599pXXIQ zVQkgvuVYGgW>K!K=9~dn_4g?%$d*Ca$kqb^T{;2X?cO++b!T^7?fVO=nj6?<>6PNO z)d7LajmP~9-)Tx;4P}d*AOpTN_MCm!asI)ZO5;pPMP5X`?|tV`lfuenBzo=*_dRYR zxTuK0D@D*X>KDCZx3_a_p`iV}gcN-_t)4asRRNZ|^nL?&aoT-sU-;7#?81>7#CW#u7`9ty^e&Cmt)&*krUf>H z!w53-6DyNm=J6~;1Q)Cmeo%QYf`fj1aJ9=1G;^x?RMDK6NuRVN1<*N1C+&LnBHtT!w%5hhcq0jI<^0$I7gN#x7ew3!k7$c z3we3fdPz{Lr}MtQ+rFZZyX8Sdj(!PvXvJ@q%9%B)j)VxCA9LA%b+%|&9wO;?lDceq zd$AQQnDZ%W&Xc2)*A(I+wWf|+ z>yD2025K;egU4{y3VGI${Zm_PpAV=pFuqCyQ7>3}CcHR5c{Z?9)pz1AIU{y3ZC5u% zSyXShrd|~#sDRXI%F154+5J2h)8Z{TwOvbB*P1Auq%xHP;?k{f*+K74ooE5?O;Fdc z2Pwe$2Rd$E<@)nw?y1#f-Yd9SAK$`aOarF6<&4WrAz zM3JerUE6AbSQVe9e+xvG?E&|A%^dMbKjPXs!nQBZrN7qJsRU%RqHikyii2Y=VpL|^ z_Z%4or~LwE^yc{Qv1@&7Az&{U~0*sGQsvZ$u^;a9cM*F)?iHEBK@L@_mKM z(bky^`ZD*Z>XT=Gyjk<)30{P#*erh&){Il<${{keucbKRZyj!B)0oC-dJCja6QCbX zI4@RZ3xu^sxb^Cp47+fZ?Oo_r7c2L6tRVXe;AqabeYtlrd#LEFSD1@HbJIUD)%By! zIwyCKd4(qTe&0rsshv%k!wmGwbOl<1(tdXp)AvY^hr_NgnF|028r1~WX`Oz5^$#qKkk4zmx_Z+N$CmlV~`z+OCR23mcGPB_|3*lA(M9ieQv z-~OwAC1V-e;(c`)&z&2*3j@O|Df4F{6q$uI)Q34J)e;r9I_X^=T5er$zIsbt#R948 zM0eUPOKuH!xU}smb!&-ovIU5ef6G$sekc9r^)Vqktp8I?V}P~3xcRVK(&_Du#|W3v zeY>Ig|I^5I#x<3FTjt@&*hT@RMZrIyGyw%62qNM{O6byCKv6>tQWB6r6w5$Rf*=u* z4$=&v41^X48H6wt2_n6y5K$pOq=XhA@5DFX-iP<{<^FQd%_-~bv-aBioEv1#i8uxF zc3wN;vF{@v6GzW) zeY7{#u(^2go6#y!cEqJ1oimV@mREkuss%s4S>h% zRVSQ>Ja;5t>og6%mT$tawlP|5kmUc}XU5CDR)^Eg@2iCz!~QKpElb@GllB|vvH8j@ zG1^%%+Fc>-G${d#Cbw#sk9elmzT1jT8G?6qM7UFKkOmdlg~Sh>!-?T*Pe$Acw7WET zl69%QeCQlQ&F!yWc^Akj&7ZcQUibb(T#D{U3l~#T^)Es4S99*IN9Qbpz$`Zy&?CC0 zcJA#0;Zm>6EjA_D(dR{3SjKbid`0S#y{bX;r_G0W!(J#%jhw1icnlk5m}YO^potc_>%o1Cwn__yA&}9;2(kS*?So^pOy+I_VWmc$o`c! zj-zM5)#;J&e8N|t$7F?@dcfTes@d_1LA-1O_y zP|HH49l>zV0au}-&TwJZbG`jByQ!=MwRI_pR53s3P4sN&_9qH^w_k?TNO?`6c^L6~ zx|gmb$pCiyX`ArumQ2IYWulUa65OJTSxn?C1vjx6vts*A;7)Z0vp=AR7-wCwB;B?&#chokh~BTqa)1q zL8R$&gZNGf2x=+^!Bd`PwQz_ttW72Wi};w}a*li3plrPngthdOAPgbZqdGu-)~$Lm z@I1Tm#)6U)bfQ|ZN?u;Fw*|9%Lz4}#{i*yD&b^(4;+7~zSkAkLM!wL8DU>%61qb1Z zzdJ(llkFs?*TQNUNOjVMeh&F8;fQJ1!9?=Yp7|iF!%2^|oAvHZ{Q-yN+jemiZpSHt z&iPc5RWTy!@;APGuFA>DG{9{IA2o3cgL5%9j%xBDH(xkaoLXrvI{*MT18OSbti03Q zZk|tZi-(k->>}Fbh^YCEWIfAXuPDFW=!yUVih>ZuO#k=s(pNhAG%l8t$%=pdSFgAY zj`caX8`?5jU1|-i{vphpUY^$m?S5j9Oo5?!=)^!{X5vEfy=7j~upDPtN3hU_=XmUrpZLgzj=iyPE}JYNaEX(WOh$Qcrz@h&t)@cAXkY zR_Z;QrI96a)YErWbn+}yG9rKcF!+WG%^P8FfmYmO>Gw}?p2tqTEj-}VdZ*+=85X#P zw8I<5DIBz~ty?O4w!y)~vDo_JkD-Qd%#bbchUW;zW%X$m)BhH6i+k3aqE0rfiJaLf zxJOh}o!>!UeNeNf^yv!EUSyKF+5|R#=n^0TcCKdVbPvlKxR3wiL2ER;Cyuv<)1>4pUt$i?AiFV z#p5rBC5eH|E*)d)Ep(~qgLHt`Mcybh|3Bs<0j0`7hYD8eFIypDyT-L_I-CP zfN5_mVB-A&gPha;W+pQMd7Q^f_|)YO|!h^UJ-Zc7kLt~3~M^}3+dLeoW?Sk^6m zhry(s1H^sRf1(Ysc>)a&&s;q?vG-KDpVQYaPIJ_c z4&$gDV*1Xvucy~N49@8zqV&u<{#Z6f*}@%ECuOoH+$%h&N5lowQ`_;IFs6wrcYVXr zDOCb*r7_`R(B$DZ9#J@Mr-tZT)=uwDRX)XVDJ^SfHt$p~=Un8=;lfLiP|)nzlYo3W zs-5nQJ$OhhB0El-Sl1a2&?47n>oT~>i3*2lGKtm$vWqo6@WK)rZ=xk8_789%l}@+} zWO&Mu)26;%;b5GEJNZ4w+NOEAoaNEj6kfGb7T@-85v=H3$=?oMK3oIA1|TKg%1JUM zy&AV$BPtFz0x5qVF?D=zu4!tdie|Nv`g*M`SOK4DSG2Nh*8O<HD>!eG)3+eZe~tqMX4q+3d5K`W-fjfyMM`;G#)qws)8DmYK}*O;Y*JBrmp*u^bg z3+pqWs8;O2`6`xcP-=YiktE*pWMTn@g@wbWX&#`^8{~&abn>HI+s(V-{j64k*+l6$ z%11?P_AVN9AXfgYcUoV+a+YU;+hAC})+EBYuBfna(%bgy~~F8{x3Qw_d@6DcXuud>k( zHTk_86VB6E@+~XpI$b!?qWIpA+A`XQ`K$Lped`K9vi$1PcAG)?YJa--Q-C@dhIXH+ zboC^6&KYDOR>6?&v;cI5?`+fc8Pqy?Hw&@2E|W<(a*7)!pR)S;0)UTqG(f5n`|{&} znLeeShVetsZm+b>g?Tv(#mP!n7(GvtU%=7$tc64T|9$QHFs7E zr$_m9THkS?NZ^pD4~Fui>^k)H&meHsXXI-oxu9S%0uYR@N(Y7Je24M7p_cAoo<4bal1*sH)%cC#Ynn>Sjt*mj7 z`DyU(ozmgLms_l4`CZ8aKYB_q*X9jDLF zCnrP@cAsz&pDVH7M@=+qr8xsKK-c z+if*#{qV-D>`Ym}&UcJJYOAB#ZE{5tdur&>g4_2ZEdonVcecjaVnx&I-$~U5=t5He z8d|Ex;lBPY{oc6R)!jop*|#qStiDx9fYg0=t?5YDtem^Prxyp-{g`SIT~E$nfN4?z z`t?@jY1S}UBllEt$$vswn|P5iuvv0B=iI4%^^eOSk06LWKGFb}M6sf5<}!??>=Zq1PAas?jfJJbZUZZ=I=)Ezby zRYyG|jK5oc<##L~biJ4kdKU-*H9(U`%+T-yom~w`$ub=T#+Pp!w!50{7E~2Y)d`Jj zIXgRwieN3XpPGS*42q)*1-2^U!@Hk^Y<6|85Ve`juU?Hn#Uk8z@Y^_+_1x>$TFBVZ zCj|iCTEJ4e*Hg;Ll1!z)e|$_YRibU$9<6PCe1O@cNFps5l-f6~eTBC~0o(l!{V(Cl zeZ$O>r2-p~X{Doila3D3hU3R12 z$WSZlOR(hLNlCDRovuIn#UPvFW*+)2N84PH%vB3P&xAu~2l~y$kl}T;!-u0!$s?ma z3bcAmJQ$4px#R&0$wFF`6YTZOM!K)h(l#W$ik0;f;!4MtDSHC1sG0scJLT{!i{smE7nls>&?<%29k}kTARDaV>$8rD7Rd|cT{YXtG39n{C`&9;0l+$hXwbkTj z4N9Lc|C!WQ@LW5_ANa=H3Q+OHBX*(qiJRg68}v&Hx0ks@3mwshEbU_x+w;PIs05FN zRg3%3zSV9`0?Pk4ak8L1^V);SoO#e$fC$>7DXS)Tn64BpuJH)jmF-K{A_b`e*vx@4+9iM!Z3VhW8C3+pSNB z&mjEjs5-qj0Mg@Pz;3Pd;Nz=(ftfj%@*st3*P|l&ccN}G#9ikFfBiKu=^ed<= zMB-hr#Ug@i!UR<6x)935H9%h-3dQwEo*Uh|rj^!hrC!fc(n_z|9_wd+;&CbaL}EUW zHR9g)g-`E!>o4R940ZLO!a=&al&Px^i?EOC#G8HJL+i-yvN^G_U~}kzy!^YOaTg=c zgjWCeV;Zpn!wmrRbUKwi*7IZcY!<|(>?O=^K?Tn?A5bP7-5Mlb zL*tyNS;L_@<@q6l@*GK$qV%fZ@8~AL;gvgT46}hVB(z{aH^_&M!!CKv1xEq$mmFXaeQ zK%V4E8A$0Z;6(vXU!Vm)T)p#Ju@p^x_a^7WJBT>8p^6nZHu(5~IiSqd%=d?NV z;~my&UUpr$W&+KUa4gmEg37pogcGdSoHiz)q zyl2aytOoCez+TuCBIA*H5O>FIUN37tR>9a9yRhiXjuLyJ;ZROp}SNz7|*}E~6c08-x3FWUxnoL$MCyNVGu^54DqAv-vH;kvhF&tD| zlzf89%Jx|el#wu-2|AQ`B$%2&i)j2WQJqpD7eB?nhSkKU$r9`BlQBU-eOUq-k1r>3PM3u zM8iE8z(D?f<)kPs1XVhU{|EBNMqPkV{{8p`ZYaP*8jNP*B`I zp`ftrQyUd{A^&)5C@n4m1%Cd@Y{`#+!k|Ki2ZVQLY zuIh2Ki|2ei0e5k{214uF!wuc!P5`@Vn0bLQx3wq@l= zN2{*c{WG({0wEU*pz#p;XV3XZQ~4#z@1T0nItF1tCxNdt$LVcB;-J1Yfw||&N>vJVe_gqxIVbm z`K(0fl7DN)^&9(xi#qMIf?u@=u~TDsFj(*C`|o z+N~r<4)g$N#Ty?GbU`7o4|?H6M&R!=Biu2QM^8<8Gxu;R8mo(glkFTmFl!|SJi^aru5pWDQHt)Ez>Yuksy!sw{2HOH z%Fu{GZp{$Z&-^NH@#NdbdUPXaEq4(2|U2SYSs*05+mo~>pxF*I^B zdIDo}F&THp>;b<{(`E21Fi3BsV`atFqUe~|uS0ifaklBsBrM9TjlZQ`+W^ORj z49f$HJ0Mb;GarG*!E-SDtJQ$kU|uUXb%A?%r2DBTLCtFc@GwSX$J#3BwHT%Q%t^ZP z_^zxuS(Kv-Q&_VaH*aA4vj>8zfAupIK5(dQSiy1hXVs-~52V1P8*N>Ygg_gB zaj-E@^tH~RJ;T32*vlI+8Wx6JPkPe3VGAtQWsmEb*|V3V0Fpg8i3|#LNxf zJuXFcAt1m^9R;j;kHSxJeCgQK{=^x-B=wLqHT)p7*!iI62zTlr1YIQ^D{l*{z0+&Z zog{lX=2**X?~RrQ|j8=`TBWiOYc``aE!eOP6c~otRCB*rb+|Wezk`40$Tit zYy3Im#w7@4tx2MLXVKaQ!f`TAuj*OPuEwQFTMT`yVcO#qeyTQm`#gl=LSz8M{y$zFCh^C4;E59x5Lu$hjn399B%>on8?o(R!t4Nf2Z}_9-O8xPisE4f;GvAA-n%&5 zsSyb(g6=<0tsmZ~$lGhq_V6dnZJrv9V_Nw1BgzF5vo_N)oO;V^?4A3q`GIM=x}Gv- zm7B(UxJ5Cvl#WGVkaQ^T)n(#$`j(bAw^tDmheAb~P^QdO5lp43hEd23dEt~{Dmg_V-K0U1>K0SRUH1N@Pm8k&*?}dGJ4S3g;BIGIo+cG0| z48KB6i;Dk#S2f<#D}74nDaP_WW+VN&j3$S}6?HU8+B6ujfjW`0)cd5Pi@LB?#cvWv z#i7F-N1q~;y(}Q3-JUl>iltxitO1lQTew7Lw^OdZ&A95;t2`f-yrgQG^(x&eQm?v9 zTCc>+DP&Z{z~fkqlQXj1%Gi^rXYXKW#n(DB)!>^r-u|>zSfl}%DN4QQqJkq_hP;RhLW0!02 ztf-p1cg)oA9bK#6BeV*(cSDf^&?Dd}CH^iv5e*U>3TT@7b8VHv7@H9pqLuKJHtvCq zonYT3?{8AGKM;U|FUZ*t$kWG+1p+cw!99(J(DLlL5EgikCs`of%P{#1H6IFTJ+BLQ@1!EIA z$dpKspa~pA$W}BYE<;O}O1bs-@6_`XoEgp7v3d`GrGQp0^kOP?6J%P~^Oz)Q%G%g7 zNmHG7X$v^@nX12b&K}VUOl=%4BLsQ^k1_(Rk*q%~AAz!(kU?LL&7T$u|%F^fx1>dOsQ*DD+xu#3+<0LKxYJ@g~v zCkwj+kIU(;Tu=nDV%z;B-z8Lj4(a;!Z2Pu zYJH?S5FX1t#!T9)Wru@_?Fb}+1k*e^@L_lL_}V>guQheDgFC?|iGEZW9GHVSGckoY z<4|~-97XMDYX~j`oR!~nJnd3Y$fCx5YJ1bYd zQi;xep40lF-h|kwmk!SR?sonn7@la0fA2gZUA7OBL_=OnRG1!dVkkWGCZQvn4&Gy{ zq~eAD)-itdRdy0u?t_L!9u_(`-fQT# zpuH7*R{v5CJUe2qtw8q!l%Tq{2CcdKdu=#W zzdFu&);ikLZ{7;)XWmgaOKGz+lCd>`@#{skcaxjBl1hi<03o343PsGJVY16_L+G66 ziKm5baM0I*!>4n*{3D`P0xPMVj6t)wrVEoOI^A%jKF|#K9w=BYp(^N4W^ZeY# z-{PHb-J~aCC2OU`yL_8ktLMhf0^N&a)QO)b;Ok;YiBmS*IWHdkuhqV8)3aT@wAASD zEfo;64mgIj-9Cb|iAi+x{YZD_uBN+w8B;%gOxG4!!LzK$o~PMg)U7sUw5F}Ej{c)B zNwO3^X}>0vCA@~+t5Ucaq`V_ChU47QN5)e#79QTLL7G3WCBSAo(M*}1aZ2`YC!gtd zeB7`MMY_YSNrQv+=jO{er13d2y*#8RtBdIawu!5``$*=LX|H9Z)yKCOPQyBBWUopI zL#r%8oa`pU2?&kJRwHDqAZc_=fMeQa_ylW*@BF5~;#%NjjwO1@3G5$@&A;FuaPAnMqAv8^T3 zVsvhu`i$wpfl%|!tVS1Ef&3!_hX5V|9z&v9H$}0bwWViH84P>NpF<8~C2xU~0o6RkaCxrczfG)-^ zeh`D@Rw_Gh{%cq*Im{}cm!z=&7PqrA(7%nWSppJNf9jK`3z+)#DV6T`q)c{;PbzjjC0$_aG^~sk41<) zRY3CqQu^_hNC6+wovpU_{(MgJm?5jkTOe$XlOY;iSjNUr7!`X^e1u8YbROxter ztue?(;2x0UBm5WS)0)Wtbam8`>hMD9m8wR$bs6iDommu5k>C;)lgbnMEiX zz>jL`yMK-cKGIx0a9UI5cd~ovT|}1Zeb#@uzaDyCI!X16Bswn#bBt&muelX*A!`^7 zE1;H~)x#%lY5SDr^0Gh*3IeC>?b78)K-8V%icM(e8JgKnFHcp6on?&C05silP7tmPlp zxml&^Hk+h>pA~4@P_dH?tNKBMMz#3E0yTX^;d?jv#r0cZsiynmsqrZf-?fBBYSPAq z9WHytIBMsT_)$_!z(pPGamWR%5 zDWItBJQ+FSxod-DFA!S|RY1ZQQiw3F;@bgiVrsWuLdyw190Kl=o?@P;t2jzhcz>%g zwy;t6X{*wR{9PjH`tEwJlk1A)tfKymSj~_P<&QU7NN>AlH_83VU~Cn(dpK^qVj$@< zA8>xZX-*T2^lXGPQ|?|?*dPhSKxd7jt0JK0J0(dPtpBvr4>{KrH4{}sJ zqj8cA%3Uvq|M$o$6sD5yTVp3kB6{aYkdB6z)c36xHe4fV0ik12M3i_D;~k%>_#yhi zHBaog$V1YCWUAaTu?Iq#19Qc|MqfSmF$3wfl$1=5GLtjQ-_-O=kCZ{Z1gtv22ieVv zYTNZ#9{3Lko5zA$Fg*(Kx*3*Q0~@CZ#d@SJ@2aH{-F*sdh@&X$P$&Uu-8g%kN?y>o| z&#?HU89|ufYWg!7 zYlQoEPd>+W%3B9zT`qyFv42ieIJt=F1}neTkq48cJX9&MYfum6Qe?Rx{!7{|OL?3m z=Mc*}H`%WRe%pQ4$JYLoHYY+TYe@`Nj<0BoO|17#pX}wed5@Nlnxft|7zVwPvp=cE z)4d~ly035;-c~C()BO~*jEBvZ z>v$8wj8Hg#kJoh)NR1R_(oP|Z3HoU9Wm%148A$M!|J>7nCyakY5h;Ij@`i-N1+?4Wo1B zm<(JWtfNPsHt0k*{w44+!RZ|#B^01T-*U=3F-yvGYfDOpph8iJeUi~#ZjC-5!TZ93 zB-}GpkgIU_d7yqGfy?pGx(h%fI z9{8&41L7NJIHVvBnxO|!C?qvvYF)VpbKbkD%oO@l2j5uRc(vRkNzxGt=*b#XN5PUV zPkkKiR<82-p6KS4M}2;ysEmAJd4t$CnHdR>$8(6K{_)v^d|e!%OR!)Vy)INyd(%ug zh-4EzM@pURLGM_$5>qRx(Dg>U_+8FT_EI4m^-0wOH4_2reI$lNIxR;SSVv_D*~-k zNBvu7=3{yENa&>oQB_&Kdm2(pGu07M1cI+TXK63B8Dc z(XGre%RP^0GUSaG?F(|(Ub0>Ii$_!i*-ilfgEftlDtq{Gv_I@|#U%tpU`9e{UO3Zj zmRF*_mZg(nNneC<#i3=jJ>QE?MdEaW(abAIo|IHO;}mI%=c=c!B*n8Y-^KZ4CpvLw zduDBjcAB5{<1!M&ef@~Zd$sg!MJCxQwJQ!0w#h64y7&F^TKVqL6NX`O;jsZF6z zH>rZc*-QjMiKvdsoCeIu!BI@r5b1rf{>3rW)Glbe{m#EBSVuD2jNw9KjZ?QiBb|zC zx0c3h$T52jt#2h9;|2S#4{T<@!R}v~!z}|F?K)dU1R{7r0)^{G?2AJRksUFuBBTP~ z^4mSD?K6*GJIU3T3XuBSYR`*5y7cOv(VDU>B0i~^*uJQK+|2u;bUbaHWX}^^`}?!E zK;btxo=+)^mpU8UgnIH`Nt1F{u-9B-{M;Vh{_0FGw#M_3@kTFqjt4EbZn z>VvJ26^Ik-<4x3urVUnruAV9OlWZ@_w*@LrQh@_71&vZ-&lsE?{0arnE+j6qIEyRW zO1*Pm*Mk=3x>fzcZXrn45V3vefcf4rRmE@rfC7jAsN8SNhM|U_cfPB6mgV;rVcrY| z+=pic?5kc2KbUayDUB=`7JBnL$gU(fKS@mXWG6w=92$CH(xa6o$Nmq4R2f?*aAe9* zS><=NFoJa?5w326h)QK;sni-CH1u3SyDz^W3UrBehQ+T7rRcZpcHE0c`exSEU1yCQ z8q-nf+rom5@~(6aZ!R2xbh6bMl5ilY{0acOy86pJ;B~P0k46;gxBNObO>13UdzA3i zhj_xfNj4L+Z=vQV6*+Lhxs_7*<&st5Rr1QXwbC)i6=H3pQW_L&@n3jQY_u(ZhH1GY zI(Qn1-Y(r;kSh0?pGB00^8(unq%T(6KYR0w=aSom&c05bg*6kFu+L^fBe>(QyMe0E zSd>binqq8=Ub5h@2`!uNTH+f%eWhW`Pzi{-#(p;jas1CJYBQ)7rr`Nzh^tpg>l#orj5>ee3C|2TGcuN!BVv5wY_n(5nSlb@sUbFS?y~<1i zlT#Hwm|OQPggRS~NtLXd)87x7JQMp4!~gi+fOpF68w6osoHQc)y;Zhx-6hRArax#d zN~Mn1GRsSZ3pJJ~b4^@TG)(Af++D7J3rW~yKO2jfEy&t|gNEiCHHdmZHqukZsbX=C zL#r5HJ|J#mvz@9t%8#OET0aa9v^LB$*Xjpt?EM5)D#@CS7|FH0qk;4qA?8L$2*}~% z9yObj4sX#dM+XY|vxg&!9Yq$LYZfgH4a#WPVO6o%CY2AIw1Y-l5;7T)F%Jw8sYtKF zq)=0uTc@v)AH}1iE{^rT@W8)HF@D$SIt1J0LX9Ma6zH5^9n**KYps44YW}Dxs2uyI zK4+$bxHbJ$PKsv&uc0gEd~%X2`imYB+cnh!3rl*Y`>wY65m1f+&WYfIPiYDQ%fOpD zs+Z(dyNRmHv=L^MOp!D6)%-UvRnrH|=;;Zb2llXYf_09ZpCMz{YW0=&p8Uk5^G zBoLaNtM5{1g@2c=l{?}N-!ZT5qvy2UjMB zk)$E&9@9zO7+K|tP9|cGAPK#c(V?yB8~_S<&eyeB|xo@nyRc(nVx&AD@h;^_`Kr`SUV|2)qaR0JN55 z?iq$qx=o@5)id?G&xf6Ww=dNsRQ-Ui<^hLg?L9?aAT5WK0`7`rU_dz0TsF-gy8s)L z;zaZtR#-$acFykO@D^tz2>cYXj8y_WzflFrrcYddHv_J~QV|pzouRh58d>qSCSZAb zV>cvfk<-C?(d8|iOaIHU$A!E4#tHGb{&f7YwaAn14142J(ZE!A_MP;P_)jcMk~$PK zPM);R$Ol^S59dEqVv|F&pXN__4zl2sl}T%#2;uxa8K&Tt6xnm%*oBX-?R=o_aveDL zhBR9lqK85Ok}DX;KkHdKWHd>tLKn)eG!m=1T071cr2~J!y%q-56m~DZf7yjlb))4U zW-6)9y@bo-COyx^_Gmg^ist= zedy1VG!6i^((dt7!k#Xhx(<@w}BIvsDhc%5#(v`Ki@{;d~i^EKek!*xQW=KuBPzI?N}W( z+xr6}S1T`gfg;*-Uo{Y40rmp2X2BQ<6};Done2(_ta|jVI^T=YryM+kl$^_K)8>+M z#9hKZcw_2wojMfe8?;+(xE;C;j`5!|ezz}EQaQ*h6=_f$tbQ3;h!C||%6-5rMJby; zF=LsP(#T{);W(A;*|C#lPGoz(q?T8_vn@8m(`_g1EV+_Zqe`Usu*g>2n}u0wH5jBU zY4Anf5pUo8E~Z2L$9rLOdoY`I$}!<@d+?usTJ6qDZdZR$T~~u(BuI?B#d=d(zv9h+ z1?XBua2R=$xCWq8VuzM?1|9=EfoQ#4PW%~+Mq!6>_B?f_`i=8dt+)c*x0J%;nYue= zvl!QHF23~zSU-mlrN?|*z@C_4xG_qTwcX?vl$}uVA=+)6 z>r>7xp8dvNPJ8U@#)*mYtmUeydr!pugZ7xLuIVKEQ=6-`?GE$r%1KfeX{6^y88_u& zR6gv_v11C>bKyD~L`9xg{QDcVNkc%}(RWj)mxQ2PK$YBnlSckzqdFxjE^lih`de2j z#CI*dAR-MSrNes%DV}>IYWN$IKAXBP=mWrS=ECNyigol!ctYa7IwEKwdKcdxV|SY) zxXagu#^ zI4ANo&9ng|te+t0Q0{ll@efJ(+gN^OGy^|%@ZH3 zvZl9lwBL_Z%D)Tx(tYRt=zYpMGS91`mmUYB$ZKeoIeHu$pgh*Z6*@V~K5SoTfMRonjtE9H4b9 zIh1jnF2;$7Xkgh*avE{>VmZdJjTo0j9HTww==%?WSQ_y2Ys8%9ve3$^|5&dD64nLi zOYBpO<+*%^7??&|;Bf*L_Nmre*vtlsEU_m=xdwYlk*eMO=1J{#Eu0x`(U+xQ zO|xx9fvVv0&gTh$a<$hlS4KaM`U*@8dhtzq8S^Lr95S|}spAYjEPPFEeb$&H>7Gobz4%F?lk2@-#)*XGe>K2 z@QJP@oHGTIkWXA+fVzJ`y7MTN1CpyB>wJfivCGGwrvb{;_S1qYBn-dW<)Kh1Bdo*_x{JJlQ)ZjBkmzeKvy ziJ`oQogFvZQ`VMHKLdSE%EPePDR*zchPqH^(Q27i(NONU$JD!vbSv{! z7X;GMs2h66zOz7ei{~MHE!xa;$YR={&DcIN{X`zo=bVukhGA;ZX-e?d1~oDmoZP@eQh+nfzm=tb)%;w$bzuh)}ZlnIR1S8$J z$0~vka!Mej^15tK&^w>gX;w>`FCL{T$7dS(D>h~GIA#h56Iv*==k4;jRKQT9od))dP^_D#2R3V0@*ZU_7y)`U z2Y#K*Y_eZXq#&ciXGFUTsqS9sDsyeLOd*~{S06oC@Fo)d`)08ebheH39D68u$iOGO16f5sm>LkE`2hHRS9=!ez`xzLh)hD#0)m(60V@!*#UTvdG+6d-m@)IWUrhaxLHJR{|X zutmjP8r6uT;<rsn|;-%nv4F`HQqDVloKWwq(q#5-7?pVnT22oE73 zN=|gFj($IkeXUDa7gVYhXG>9XY&B&{T!tlbfQhvaNk?qAD{^i;&Uhw#JW_&J*o~7P zQ~N@V-z7UagHUqs-MAubo~(2(572i|)E)j)6CeA|mfDh3KHv})D`hBrv$yk{4`(>1 zMkqhPCiD~`9kepMZnjqg&>7Y>NIws{rOh4~ofz6tcO1!Jc?gRZIj|ofuc=Kx5A8uR z_;0h?3cmy|GWG^A8GVGcqvT57q20DBO?BuB-bO~r{4W~^@cfCBnVpN;PPf>4@K33_ z#yM)SI@XK||M7*}UgZf8Vt=LKxVijNFvbf&T94pouxgHsfuAEvtP>S_Z+K{U)&15k zo@jMDfHfbIjV&LPGoIkQ#T_NDL&;Y*8AgKlC4^gC|HOR8<_S;p-`b`?il9hIo$jPL z+?nV>X0WR$j33{E>eaEsWpRe>wnL6DPoc;oPD5O4(s(2PKgp4Pf*|3CX&COBICqK~ zfA?)uU7!b$ASi;g8x%yAQGl>4)Ew|v%SgX9m#7~uR~ZhMD_|@gjGNLz+G=qfLJtuQ z%$X8exMSGmb-mrH1-!rg5CJS~_zXT^&tqagz6OeL8}SISZCS6PMozgR26aN8N$#EP z_bqqhpd&!kDSr5WLT<|51QDKDYhvviLqOM``T}je>~~)mlqZMllxM<T|P9a_qDR-K#ylNP~4M~Cnv>XSfLXbZDJu8FR9d@g!d)P1-lxw}u1_RQ03 ztYs?+=cVF9Ul24kF22&pXpGr={64;U+Op=E|1RoNZU)@vLB)*dR8;o-VKNR8x$+xNlJqVbCsl?=$t`XWLL+3#BJTx zIddTdED6U?tCtWvg+L+epL{bGt!BZ0BlP&*Ps{kWbU>@77m}qi z8$g1f2E7iUT4rrHopM8&%pjyC>pfpLWFIaBakIP_Dt}IME2s9epIKOY-oG0|Sb&G! zp*g1OY8HM<-G)893)u|m0uIi{{?U_1p1TgTFFk|yOE<4gR?YFZeYusw5n1(`y(p0e z-P25MU*hlEh-#$)AB{bSbrtx_)es{j<7{(;#dmBE^L{aRj7uv&n*m zAVO0H43dJe8E*mYQl&-SCVW46U(> zb&XL(&Erl8Se;<5^^-DAD=B{+kGC}(f;mX5U^L68$9COWL>dIYsh*|Ms>xZ73CaYp@sQ8{2e zn9jX^d=sB>_MTVK(+*lXO0&BvCg~Zv%a?`4XwO+vI9%sK%j_TapCL5e5Et{LT}D70 zXPw<=H1KRPP_{8^45QxG6b;i+>5Yae){!7_tmky7%&xlRKo1CBB&sB(?$d1HQB~SG zZ)n|l80(pF^Iogsx8?CPQLI%{UB{dWyI?~+)rx)p7#1JnnHyY?7D9snH?=RO2GcB^ zV^&)E9cw5ekWL%Y6`O_7ol>3;(Nua*y(z|hR-m2k>|#hdJ$=7sdRkqbJ`Tf4^8$-N zQc6H5wMg{iSRoB$9ttmf1#0}gX(5FAK}NZJm&zy$OTN|wjN7){(vv4nNGww8x*>li zZ)`%?B?uq^AGW}eP+48josGm&rOaF}6W6R?GHy_N`!N#y#6J{skYyv0k7d>~Wna-J zQr#nD@uIH%WL6IPekXup#%`eGAiJ#>(Z{XMJQD(`y(EVJbCW}S<&&FQB7yb9b`p-)ORUhb* zev%JU?4+ATZK9m7v%Qwlh$6YTe(I#%a-9Dmk{_J7BnEJODym(>^`JpE+rSIW-g5+9 z-@32KqIkN+3u;Z@heXuiK*(yAO+USvX7-?|pZf|~1kdQV;9nssUaH(FQi!M~10}v7 zoqD%?;_Nc0WX?JkdmDet)r9f>I~Du(^OpV=!IG!>b+4Tql|RzAfNv(9h*6>SX;vh8 zE*Qx-5PtMO8n#Ui?*YZ{THU^itRe(>NcmqN1wuMBs;ZgUV@`@MR5YY7!a}6CZ=L%5 zR{;d&;6G=Zwdb;Pw!M(PnmmNC0m0-x6gpkth+3SWIB5W#Gx^t~#Psw}*xm$f{m*U~ zrwwL5b#*<+et@4k&F-eS&iG-XOVr2ly-iHT-CGXhOO={wDdCdQTH$N|zbC}n=}vF@ zDTAq`wG9<{Y`ydu0|Iqz;2g9eCmL!W%CGMSYz{!euI~}!XqeTKq;PN5&@e~e1rY?b zBZs#`76ejS(8w@m-2Dt*S<%uMJYWq7!qe>gz9dDcmQdNYd35eBtGan_3#qNJ8KSj} zASb?bM-<5Z84VV8(7a?Z(TR*}CHi*bmbq5Q@jF|Q#+CN(GqUNCCB#0VOL$Yg5<}`h z&Vxt(qz1>WngE!8Z$`s5x5d?3=no}5c6Xd|iiUGayQxqaR*OsS*MmoTnDz9w1jUdk zv|jTJu@(L1RTV$3Pso<|J6EpX45EMcri{9Gv-KL#o8@bLR_0PjTM#5{yK4WODr-p* zC5h8pJI+koy+yTAPbGJzi z8=Cuq%`f)Rz|E7$_wZ{F&Lj%W3(97X7pYZ5AI8y3>T!(99mWz zq5ZSp{>{2wh^vPvfznAZjidW5rt!PewM_C5&U=Z|?~*~*xJ??F?pd{qzt6W%ft*2b zv#<=2XDK}n%3)!eZY6TMI;Bxh3Z17|=kBP{%@6xe6Z>}#kpSk2DMp^MT$c`H^wB*? zH5PC3bUY522b#uOPB0t%2EYUg`uPR_eM3qMr|Z(moMqioD?hv%3Z`>fFeSk$re7w>SFM z34#{J|4V8*L~l*Qi5>s^0BR$UmO3Pp>znp`)VrZ~_wzn@`lKYu0v3B02nXFI_s>v9 z*kF1+DZ>P)X<;vH9ze^KvQ({mKreY*xt@JV3tD2PU9^v5o^lvN%!(Ami=9buW z$_QP#LjKKUCxE^H=m`jX_4iz5yDxmwfpr2dFvp`jSL2FhKSzHDJ`p9mLbs?f0A@q?oV)GR0Sw#hMey}}gunFf?mH^`c^P3=% zzk}r&QEvLfx`QnjaPrkIu`~`~_>uLK)FTLzmlrU{vz{LqUiD4_l4$5Q8!Q(KWJ43e zP;o9V@fy2U|LpRc#@RZS5gs59e*h>$8lb8G)A$mS{i@$ zy>pULhFm2J&y9=<_3ti4Wb2aMssEv6`~D4G^Eg46mxkoHmGd$#WHkjDk+EsxgG~@m zJy{=l;3B=0P6cxtia$GSycS0ND?AM!yP(t53J}w&7?aPAGW#$c+@U@5QQsu5IDBac zSo=jegC?N#xzR-}OTK0Jcdm$K?sOUGAO>+&VbJV5p>Biydsz_-3lAY3EY$mZLby7x zhz?C`t#~>2bjG=p=SUBiucdo@rZ4g3h4i7GU-ctmV~*YjJ)->Cy*R-*V&)+1CR*#M z^YaGMj1*ELrXGvH#r2cqev@yAqs)Rl5T0)b6QqZF=ik-d<&6en;^&zs_R$goSL9H% zCRI-&qeGH0Sf;;&LS}P!FP^|3lYQv<1=HL^{LUTDAC3#|HPXqjDBiRjZc9S^FP+0G zen9qhV+8G34b9B=B)s3LaaX+x%jrNNGbKsT?xF>!FOMS2n1~`JW4v-W?PimaOgDm8 zTq{39$zMwp9&qMZo)jg12Q$^x0EyHasntC6UardN>-Hxo&qYVa(}|ddLp$CF*bl0tZutt{j{qOAFk z*^4dY*P#sQJg5>Viyo{g4}?F0PzlkMtJLz!Y81C<2-ewi?48_I3M<>|j0(L4AYM#< zud$z{g6)ZjT3XnX^ZpG6{lNZYL1SQ>z>QK9EW&H0Q(|{tee=x}Z3CUI%yvece=$YI zNmi%vlUv)@M)qm#35;oT1ksCNt zQmY##2GUAwB@$Ef^i7@|<;K+7f8=r{YIAHb6>rYX5;LZ-*}Qi3vgMmC`c-kD}GVF)fNrS|>OTk%FJT%Ij1u4CcBZ{Jf*(6OdP@qJce>dd{iZq^|ZL6qZf$S9bQ- zlHn~?le6<;ScS#PqGwyld=*0hHu%(D7j33AfQUb_UC7u0=Z`MudHI_@j z)QsBLgwLqr7+bQs|**u#*L%Ufktd^a-vD&|>j zT?&E%yK=}Ok2#v(l|r>cNO!g&AWZ%Dh)?rOT!b_?R8=~%l!gf}dL2!+GcrP!6?XQ= z0s1qVc0cFMpC(!)}jdAF|C2-eg^lB@U@4Eeb z!Vo#1Q}XPcI?!lEtC;@Y;H_UjNNlr3he#8Vx{lq3UiCsl`PzO`*RGGQK=N}y+rVGr zrI7xtf1_1ZXVOePpSf*T0;`l>R+!{X`vFzbu-*Igjk z3@n)AYaAAk5wGb>Nebn+cI-#IsXy)pwptZ$8ipAy8UF8L=3O9rX;QVS zG4&iURdSauBefDS?gioc+CDz0MX|fe*?kzk208WPcqPWJ8Q#5y#A|ZOX^QtOd{qDk zI~gH6)Q;L>bx{n98oJKhWgzUEZafwf-mT{n`cQ8AIT5z)!>7Nux1nR_M0$D3>Q>J# zbdUI@OyB>=?I;shy9F~qjzs!5hd6wds7&((g?vCNekhD!U&zDyPZ!1<-p|>xPEyTz z?fQ^UdSLuLlMAGNSdq3hdW@Odd{Xj2nlIWX8|zkP8lvOuWl*p)AhZl~f0KN0(??k@l9qyvz&?oeLIl<#mqtuD%Ke$0yYH%i0%o7{!#S$2E zpoQ6Wis;RJN9QSNUG;Lc`ed}?P%5-y%1Yn+2SM)W zna~%ZRYH!vgp{6n>dg*tI|%CUQjAfsGquHIa_0*$ttW{ycD>k$uzEYUSn*kT-~Dr> zvee@BnXL7A`uU$bzYGNRc9*a#1WM)S0JwE^&7HiU@3EdgbAqrau96Kxz}@oYlU4{#SFmtZ)Q6q9yBOSJ7qrb0RWB7WI5uH1H3klJPzL)Px}=Wh?!9897l`+ zotY(-{*dDo#+n@N6s;YPeUN_K)K;g^9ZDq!q`sjTrBoH04xaeGO0GN{>hA4(Y+1(A zf?>iFvePhjB80NFNKt6)WX;Z4nmi_Cd7?5?B4tS=Yxb?NRk9?6v1SV~mhAL9zB9eo z`~LC!I(O5gDzX%hh zU504o4%NZn7rv!EO>#!l8ag8C_7l{)SHs|gLD>`f`#zs-;&Usmx=0F;yfO$&kBcQ# zs|Gi|OR=#@{A^0UG}YeUn-#b6O5Vx(it0<#f9H?Pb1!Km4BlpHv+KI6Ea!?v%qlEB zDzJb+A$Qc(k)`|oS#wz-@)nY}&K}0lJ8lc~{g7gY(e>xE3w(IfbO|`8-d)4p4;%~8 zN6&JLig^n^1A)rPg%p*p`!~|c6aQ)cpOJZmA%E-N7wf$lbo;e;2_&7}e@XiL55Ji1 zOUgLB+s@BEMKpva7&hL3&UnQILV=cg0&i}y6SWeA9lWmd3`j|NpHE*bot2;vzBF*M z!={S?jGNCR0N|RxvN6N1Jkv!C@A{K#)bu;ZQv zzw2f&{E$(YfVfKZ_7smLSZn58T!WUrHwYkg)He(?;F3O>Vj%Hv)xeAZ^mMN)cJ@aoT7e=gCxp7yuB?B8Q2Z#+){u&Kp z7anmVS9F!SXY5ZxL&6!OU8V@p*DI<+RjTB|GsIyfK59qVt67nTFq=V;*XGanDPb zw=QpZf&WV}|w3(K>E=>eW>VZJHc}fGOJrV%5SkJx+ul7W9+h_-Nya zs7%geD9Gs{DZDG)YO<1s4yT5T%&@huia!n_KfpDDR5;-j#xa1nF?G4U3r+}{l`*iL zrmRInG~CZ9iBNi3S_M9U@AKbd=!oEec}AJazf1`$nZ*Y|GCy$`E?aT6OnahI6_sK6kpNg} zp6A-{WiC|~sk2qdzEG|r`G5Wvl`Qz4+GtF}zY4RDGo9)ly*{Vy^g2L-eJAvQ$0m#j zp)V(IPuc2p4-MUqfn1t!dF;4VcS%uUywQbErc+bPc?X^eFTXtT>Mb$T-X?ak*bX;Oq?hvGa{Cn#zKEzW?e#4QL_HV{NfI)jd@fIiC9H=lWLs%eGDIRsBXS z`WtrCIk|{_ehVJj*Su)#T3=Mg%HxmGM3^_evY$WB9pY4Fw?dh@%V_jl;}K54dJqHb zE|?M>y566bHcb|thW`9}N!`b#q2+h55&!`Cgp{ubj{J8$@T2-KIQe5t-9^GDm;8?= zq@G^2&8Or9K(MfDd9i9Lk3SOSZ)=}50{e9G^Pp?=8=(=VVV&})Miv}INhmKYrlHHn zvvlS7(SYXW%dN>Fo*m1XrJgHs#rU+&=s-MQZ&RZVCFiq-Gx4IDX6ae|Ae`}b$+o;m zc~a}it+k-+K3f&)ZLb3cQvw#|EezUaobZW{z78=_eqgE|%@4u7@|mdZdPC0#Ipb+y zWesQ8p1#s$@sIkA*%nx72dKTG-u&N3r;Agm_flOXa&1Yz$)n%D*p!soa3=iZw^pC` zRBhGR02~t2;1(@u?)cXdDf&9&oZ^?No&AMg|HG~3_XuxsUSiUJw4pq*lzf2rllN^l z^ceaTh)sAaR%a$4I;ZI0E@_*VH*&Hi;DP0YwThS6 zqqI^T%`clI){+>!&DE14SjuJD?WEGtM3v1HC{T^3&8i}8gb|6q{rOE|bA@c!NaxB^ z7gd-cEFFz^IXxrF^5vZ}yI-*tA)Q_YZYdct8nT*WqD>3Xsv_xOGnV>9g5QX{xUG%2 z{rr4}0f(2I7;gCGXV9*BFbNIT+;HP&8I7E#T0WC!t;+o)`SAl&1%Zl0Y7HJ(?Jw=X z6NErmPpvL1@*Bz1Gnz}h95DG_L0`La`p;?@Wf){Z zCRoHz72uERo72hKsQT*u;e=`OyXHNfTh6xLF6TT?hL6v5UE@8ZTKf-WJe!^Lxca+v zfrRI%FNWrltCs0WZ)7>bg==%P6fyy{J=U(=PAaYWt0UGFA9^6{JL;Oq3Kx$QA1?>= ztROI|EnW^+zgIBy3c!jsG6M=tTY3+t-}CZi&FoIA1$M;h#BlGHwq`-+|JE}zF{6TXxOt47LOD|}3ZDvK( zd!^eUL>S24jK!9VPyX%o#OULZ|49TkN;0-B*ED8T?mM+`3JdJ88UJ^xfsqp~%LQNe z%~2JTZHa^C2;2xHk>1&AEvK6PB<%itoEfEE*?2TR3x)hsPo%z7r^Q7v{CpYVxMEN6 zF(=4Pk7gnSl+Z<%J}Q4`CY!2Pa6KG2lr`dbDSG%iwy}eJrZZy>=GoygBQs?l>x{|w zMb-@O;VB526Ao%z@QSJ9FQbp_zZl!AiP8>M_Ph92wI6feB{sRGg&eSfZlP#HEA*?e zc9E-`X3vf|0fWP{AmLWOYr{>hDd?ZR zLug{jAv8(u%=1l3?f{|*;#s$W%ev^GV<_m>gZxTImy>EQoj-Hx`?b+KmxL|g4-s-B zmmS=hU>kNgNJ@)$ftK``A{bsT@PgYAIW_2kVF9C|+&gV~{5XOd>(1?DF4cY z&{8fgg&#+NTn`lp+Q_^UNbgUT{rvE=Y6)?kcl|_*7{nMl3 zFGRfCb>6z-%@2M7&(r%}=Oz$(0_*&rNP>g7ioK^f|W4*m^JB?R=GSVnF+=tU@-Ae&(uc1-Zh0R zCkk~0JaAtil7x&RTVL3|JGw(5Uq6mb=Q!?w% zI8MvWg|}0u zfzFHfZ7eGC!J=leg{xMlGh&9zcVq%17(|~;l?56OfQ*+Ma$RgM7P#Mb(e7IHjrp-b z@;xQW0}Te7p@qaVAvX0><-4txWVD5IWYWWb6NyViN>6rM=^_CMLcRFpbMzCVVzemA zOf5Lr?^{W-j7fU9;}362R~jNTka)wLTX1?@|APyqk7Gm!#B0)mY^N)nMe%I^t1iH6 z1UQDu{cty)gvRPhdo6rHKQ%}b*jYn;Hz}CiGx+R12klZC?-T|`0QZcjTVh`XBr3Cj zh^Sa}P+SLBUpf{w{+-)qdFOyr#TN${RUny-$+EzJ>-jDa7CQMb z@3nQ%M3m*mMLH>HYQ1^D2`OoAuPu|V_PA7~^p4gC{SJj1(q5-YS?%kM2%q-UIw&Je zpc#6WgDsR;&($GxZP^BIAaA1-le$g1QZ0t0EWJPzbeF31l$9=9WFc0$6XP~X@8;SC zh=@qtCBrp0ttRbJx3WK#<^}&YFo;{CiiC#&=eT=o!~x?!+4h578>~KtI%HyV_(aq| zXIvUF^cZDlkOetlSN7h+LY{19HHX(6PL}xzG)L7 zMAUg``GA2Qknn(zis>5U=&G?ntPTh$eb8hvNP-3chTnB_(@G3KQ(~?V;L5qt++3Fdx*>zC zak$w(-R(P@5?X&qFl_z7Kz`Z!ry%nqC`Ow5lvjTN44?poP> z#WSScZ{cI8ibt{gA9p_Pq}VH$zyhF8&5P*k*hkO97^n&3C85kD@ga*8* z?6!DGQ+~}@*jmiu{DRoP>%01&{Vca9gwmZ2Is-79TdHyAeQTArKK~lw)BK>xNA*_~ zz+f};y!5^refL|X$*_oUrD5MD2dV8@g6z8s353;;Kp9V?;Jo92uZO=ymd$2mLFB%( zKt%ZV{i7a}9X(cNv|bwN;iaO>#ON8Z? zqk_R93(@!P)sr`CIW+DTLQ9G)$O4O0*IwnJU*Ni6DIk^RB0OVUc;sGU>f+ee!dc&z zHrI85m(FU{@p$)2a&8eTj%vl&x5tjZ9cy?yj?jC^1h&<<>AOUB0$PG4Xh1>Ur6x=K zJ*Nn*jS{oqy+=?(n~99L#?y#bLk}M>OGfEGxVObh>qFmTZANUp!6Zu6F8lLX+lyEQ zF5sQ;*i{ukuwk{MDN7$5)8o%+i5lrYGm;m&e^AfqaUX0WJM|8QrDBG_o$9}&jQQ*f z^3T69M8``aL7z_g=~?(W*!nrD+50$x4;p!-oV*P9L&{%~Q&2;xs3|B)A?4JNNDPnT zyZ=+b!^^?dDVS0KsVXBccLj-5Q$(pDQBp{GP~gr);3-gm_n-wcFDJi1TOUW7z`#IR fS5G%zds}ZuSuY>wr;8eph5Wpp>DdAu^xgje`a)mG From 6b3299e6ffda4064c7861b9dc020079df12215bc Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 29 May 2018 07:56:50 -0400 Subject: [PATCH 224/385] [locale] Adjust the North - Fudge the numbers in the North, to improve location of the pins and lines of latitude. - Inuvik, Yellowknife, Cambridge Bay, Resolute look ok - Thule, Scoresbysund look ok; Danmarkshavn a pixel or so too far North - Reykjavik is a bit too far North - Longyearbyen is a bit too far North Since these places are off by one or two pixels, this becomes invisible when a large pin + text label is placed on it. --- .../locale/timezonewidget/timezonewidget.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index 5acdb6458..64557c151 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -148,11 +148,21 @@ QPoint TimeZoneWidget::getLocationPosition( double longitude, double latitude ) // of there, and we have a funny "rounded" top of the world. In practice the locations // of the different cities / regions looks ok -- at least Thule ends up in the right // country, and Inuvik isn't in the ocean. - if ( latitude > 62.0 ) - y -= sin( MATH_PI * ( latitude - 62.0 ) / 56.0 ) * MAP_Y_OFFSET * height; + if ( latitude > 70.0 ) + y -= sin( MATH_PI * ( latitude - 70.0 ) / 56.0 ) * MAP_Y_OFFSET * height * 0.8; + if ( latitude > 74.0 ) + y += 4; + if ( latitude > 69.0 ) + y -= 2; + if ( latitude > 59.0 ) + y -= 4 * int( ( latitude - 54.0 ) / 5.0 ); + if ( latitude > 54.0 ) + y -= 2; + if ( latitude > 49.0 ) + y -= int ( (latitude - 44.0) / 5.0 ); // Far south, some stretching occurs as well, but it is less pronounced. // Move down by 1 pixel per 5 degrees past 10 south - if ( latitude < - 14 ) + if ( latitude < 0 ) y += int( (-latitude) / 5.0 ); // Antarctica isn't shown on the map, but you could try clicking there if ( latitude < -60 ) From 1ee87c3cdeb4c861ae5997f9e7e441bd06a4e254 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 29 May 2018 08:00:50 -0400 Subject: [PATCH 225/385] [locale] Drop debugging define --- src/modules/locale/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index 853ad8cc2..24259d797 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -7,7 +7,8 @@ endif() # When debugging the timezone widget, add this debugging definition # to have a debugging-friendly timezone widget, debug logging, # and no intrusive timezone-setting while clicking around. -add_definitions( -DDEBUG_TIMEZONES ) +# +# add_definitions( -DDEBUG_TIMEZONES ) include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) From 40b60abcb31e9f088c25e403e7225fff5ccd1ffe Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 29 May 2018 11:29:44 -0400 Subject: [PATCH 226/385] [locale] Move constants for map-munging These don't have to be defines at all. --- src/modules/locale/timezonewidget/timezonewidget.cpp | 3 +++ src/modules/locale/timezonewidget/timezonewidget.h | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index 64557c151..6609160d5 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -27,6 +27,9 @@ #include "timezonewidget.h" + +static constexpr double MAP_Y_OFFSET = 0.125; +static constexpr double MAP_X_OFFSET = -0.0370; constexpr static double MATH_PI = 3.14159265; #ifdef DEBUG_TIMEZONES diff --git a/src/modules/locale/timezonewidget/timezonewidget.h b/src/modules/locale/timezonewidget/timezonewidget.h index a96a0309c..8589dc74d 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.h +++ b/src/modules/locale/timezonewidget/timezonewidget.h @@ -36,8 +36,6 @@ #include "localeglobal.h" -#define MAP_Y_OFFSET 0.125 -#define MAP_X_OFFSET -0.0370 #define RGB_TRANSPARENT 0 #define ZONES "0.0 1.0 2.0 3.0 3.5 4.0 4.5 5.0 5.5 5.75 6.0 6.5 7.0 8.0 9.0 9.5 10.0 10.5 11.0 11.5 12.0 12.75 13.0 -1.0 -2.0 -3.0 -3.5 -4.0 -4.5 -5.0 -5.5 -6.0 -7.0 -8.0 -9.0 -9.5 -10.0 -11.0" #define X_SIZE 780 From b66d4856e753241fc7de014cd884adc99f65a71d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 30 May 2018 07:51:23 -0400 Subject: [PATCH 227/385] [libcalamaresui] Use modern C++ for (auto)deleting failed modules --- src/libcalamaresui/modulesystem/Module.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index 54b6639ff..2d0de8e55 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -64,7 +64,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, const QString& configFileName, const QString& moduleDirectory ) { - Module* m = nullptr; + std::unique_ptr m; QString typeString = moduleDescriptor.value( "type" ).toString(); QString intfString = moduleDescriptor.value( "interface" ).toString(); @@ -79,12 +79,12 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, { if ( intfString == "qtplugin" ) { - m = new ViewModule(); + m.reset( new ViewModule() ); } else if ( intfString == "pythonqt" ) { #ifdef WITH_PYTHONQT - m = new PythonQtViewModule(); + m.reset( new PythonQtViewModule() ); #else cError() << "PythonQt view modules are not supported in this version of Calamares."; #endif @@ -96,16 +96,16 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, { if ( intfString == "qtplugin" ) { - m = new CppJobModule(); + m.reset( new CppJobModule() ); } else if ( intfString == "process" ) { - m = new ProcessJobModule(); + m.reset( new ProcessJobModule() ); } else if ( intfString == "python" ) { #ifdef WITH_PYTHON - m = new PythonJobModule(); + m.reset( new PythonJobModule() ); #else cError() << "Python modules are not supported in this version of Calamares."; #endif @@ -130,7 +130,6 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, else { cError() << "Bad module directory" << moduleDirectory << "for" << instanceId; - delete m; return nullptr; } @@ -144,10 +143,9 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, catch ( YAML::Exception& e ) { cError() << "YAML parser error " << e.what(); - delete m; return nullptr; } - return m; + return m.release(); } From 41d427e543071a8692b994f95354989aad6aa209 Mon Sep 17 00:00:00 2001 From: Gabriel Craciunescu Date: Fri, 1 Jun 2018 17:45:40 +0200 Subject: [PATCH 228/385] [modules]: hwclock fix typo - methode -> method --- src/modules/hwclock/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/hwclock/main.py b/src/modules/hwclock/main.py index d247ccd00..e2f70ee61 100644 --- a/src/modules/hwclock/main.py +++ b/src/modules/hwclock/main.py @@ -46,7 +46,7 @@ def run(): libcalamares.utils.debug("Hwclock returned error code {}".format(ret)) libcalamares.utils.debug(" .. ISA bus method failed.") else: - libcalamares.utils.debug("Hwclock set using ISA bus methode.") + libcalamares.utils.debug("Hwclock set using ISA bus method.") if is_broken_rtc and is_broken_isa: libcalamares.utils.debug("BIOS or Kernel BUG: Setting hwclock failed.") From 8430970e719251cb871a79743455c010e1d66ae0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 7 Jun 2018 13:47:41 +0200 Subject: [PATCH 229/385] [preservefiles] Reduce copying by using const-ref into list --- src/modules/preservefiles/PreserveFiles.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/preservefiles/PreserveFiles.cpp b/src/modules/preservefiles/PreserveFiles.cpp index 29564fcd1..0fe1d278b 100644 --- a/src/modules/preservefiles/PreserveFiles.cpp +++ b/src/modules/preservefiles/PreserveFiles.cpp @@ -93,7 +93,7 @@ Calamares::JobResult PreserveFiles::exec() prefix.append( '/' ); int count = 0; - for ( const auto it : m_items ) + for ( const auto& it : m_items ) { QString source = it.source; QString dest = prefix + atReplacements( it.dest ); @@ -162,7 +162,7 @@ void PreserveFiles::setConfigurationMap(const QVariantMap& configurationMap) QVariantList l = files.toList(); unsigned int c = 0; - for ( const auto li : l ) + for ( const auto& li : l ) { if ( li.type() == QVariant::String ) { From d82b103edae31067d5d7f71ddb9bf7a747f6ba4c Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 4 Jun 2018 08:21:57 -0400 Subject: [PATCH 230/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_da.ts | 6 +- lang/calamares_et.ts | 14 ++-- lang/calamares_fr.ts | 14 ++-- lang/calamares_id.ts | 14 ++-- lang/calamares_it_IT.ts | 165 ++++++++++++++++++++-------------------- lang/calamares_pl.ts | 8 +- 6 files changed, 111 insertions(+), 110 deletions(-) diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts index 8ee303ef1..edbe2737f 100644 --- a/lang/calamares_da.ts +++ b/lang/calamares_da.ts @@ -485,12 +485,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + Kommandoen kører i værtsmiljøet og har brug for at kende rodstien, men der er ikke defineret nogen rootMountPoint. The command needs to know the user's name, but no username is defined. - + Kommandoen har brug for at kende brugerens navn, men der er ikke defineret noget brugernavn. @@ -1670,7 +1670,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. 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. - + Partitionstabellen på %1 har allerede %2 primære partitioner, og der kan ikke tilføjes flere. Fjern venligst en primær partition og tilføj i stedet en udviddet partition. diff --git a/lang/calamares_et.ts b/lang/calamares_et.ts index e56118622..871f447da 100644 --- a/lang/calamares_et.ts +++ b/lang/calamares_et.ts @@ -485,12 +485,12 @@ Installija sulgub ja kõik muutused kaovad. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + See käsklus käivitatakse hostikeskkonnas ning peab teadma juurteed, kuid rootMountPoint pole defineeritud. The command needs to know the user's name, but no username is defined. - + Käsklus peab teadma kasutaja nime, aga kasutajanimi pole defineeritud. @@ -1665,12 +1665,12 @@ Installija sulgub ja kõik muutused kaovad. Can not create new partition - + Uut partitsiooni ei saa luua 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. - + Partitsioonitabel kohas %1 juba omab %2 peamist partitsiooni ning rohkem juurde ei saa lisada. Palun eemalda selle asemel üks peamine partitsioon ja lisa juurde laiendatud partitsioon. @@ -1816,17 +1816,17 @@ Installija sulgub ja kõik muutused kaovad. Saving files for later ... - + Salvestan faile hiljemaks... No files configured to save for later. - + Ühtegi faili ei konfigureeritud hiljemaks salvestamiseks. Not all of the configured files could be preserved. - + Ühtegi konfigureeritud faili ei suudetud säilitada. diff --git a/lang/calamares_fr.ts b/lang/calamares_fr.ts index f9796a5c9..b2356b5d2 100644 --- a/lang/calamares_fr.ts +++ b/lang/calamares_fr.ts @@ -485,12 +485,12 @@ L'installateur se fermera et les changements seront perdus. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + La commande est exécutée dans l'environnement hôte et a besoin de connaître le chemin racine, mais aucun point de montage racine n'est défini. The command needs to know the user's name, but no username is defined. - + La commande a besoin de connaître le nom de l'utilisateur, mais aucun nom d'utilisateur n'est défini. @@ -1665,12 +1665,12 @@ L'installateur se fermera et les changements seront perdus. Can not create new partition - + Impossible de créer une nouvelle partition 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. - + La table de partition sur %1 contient déjà %2 partitions primaires, et aucune supplémentaire ne peut être ajoutée. Veuillez supprimer une partition primaire et créer une partition étendue à la place. @@ -1817,17 +1817,17 @@ Vous pouvez obtenir un aperçu des différentes apparences en cliquant sur celle Saving files for later ... - + Sauvegarde des fichiers en cours pour plus tard... No files configured to save for later. - + Aucun fichier de sélectionné pour sauvegarde ultérieure. Not all of the configured files could be preserved. - + Certains des fichiers configurés n'ont pas pu être préservés. diff --git a/lang/calamares_id.ts b/lang/calamares_id.ts index ebfb416c3..3e6e991bd 100644 --- a/lang/calamares_id.ts +++ b/lang/calamares_id.ts @@ -487,12 +487,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + Perintah berjalan di lingkungan host dan perlu diketahui alur root-nya, tetapi bukan rootMountPoint yang ditentukan. The command needs to know the user's name, but no username is defined. - + Perintah perlu diketahui nama si pengguna, tetapi bukan nama pengguna yang ditentukan. @@ -1667,12 +1667,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. Can not create new partition - + Tidak bisa menciptakan partisi baru. 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. - + Partisi tabel pada %1 sudah memiliki %2 partisi primer, dan tidak ada lagi yang bisa ditambahkan. Silakan hapus salah satu partisi primer dan tambahkan sebuah partisi extended, sebagai gantinya. @@ -1818,17 +1818,17 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. Saving files for later ... - + Menyimpan file untuk kemudian... No files configured to save for later. - + Tiada file yang dikonfigurasi untuk penyimpanan nanti. Not all of the configured files could be preserved. - + Tidak semua file yang dikonfigurasi dapat dipertahankan. diff --git a/lang/calamares_it_IT.ts b/lang/calamares_it_IT.ts index 889f60c97..453321e44 100644 --- a/lang/calamares_it_IT.ts +++ b/lang/calamares_it_IT.ts @@ -4,7 +4,7 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - L'<strong>ambiente di avvio</strong> di questo sistema. <br><br>I vecchi sistemi x86 supportano solo <strong>BIOS</strong>. <bt>I sistemi moderni normalmente usano <strong>EFI</strong> ma possono anche usare BIOS se l'avvio viene eseguito in modalità compatibile. + L'<strong>ambiente di avvio</strong> di questo sistema. <br><br>I vecchi sistemi x86 supportano solo <strong>BIOS</strong>. <bt>I sistemi moderni normalmente usano <strong>EFI</strong> ma possono anche apparire come sistemi BIOS se avviati in modalità compatibile. @@ -241,7 +241,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno The installation is complete. Close the installer. - L'installazione è terminata. Chiudere l'installer. + L'installazione è terminata. Chiudere il programma d'installazione. @@ -485,12 +485,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + Il comando viene eseguito nell'ambiente host e richiede il percorso di root ma nessun rootMountPoint (punto di montaggio di root) è definito. The command needs to know the user's name, but no username is defined. - + Il comando richiede il nome utente, nessun nome utente definito. @@ -498,7 +498,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Contextual Processes Job - Attività dei processi contestuali + Job dei processi contestuali @@ -536,7 +536,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno LVM LV name - Nome LVM LV + Nome LV di LVM @@ -915,7 +915,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - + <html><head/><body><p>Quando questa casella è selezionata, il sistema sarà riavviato immediatamente al click su <span style=" font-style:italic;">Fatto</span> o alla chiusura del programma d'installazione.</p></body></html> @@ -943,12 +943,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Installation Complete - Installazione Eseguita + Installazione completata The installation of %1 is complete. - L'installazione di %1 è completa. + L'installazione di %1 è completata. @@ -979,12 +979,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Konsole not installed - Konsole non installato + Konsole non installata Please install KDE Konsole and try again! - Si prega di installare KDE Konsole e provare nuovamente! + Si prega di installare KDE Konsole e riprovare! @@ -1195,7 +1195,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Network Installation. (Disabled: Received invalid groups data) - Installazione di rete. (Disabilitata: Ricevuti dati non validi sui gruppi) + Installazione di rete. (Disabilitata: Ricevuti dati non validi dei gruppi) @@ -1221,12 +1221,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Password is too weak - La password è troppo debole + Password troppo debole Memory allocation error when setting '%1' - + Errore di allocazione della memoria quando si imposta '%1' @@ -1236,217 +1236,217 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno The password is the same as the old one - La nuova password coincide con la precedente + La password coincide con la precedente The password is a palindrome - La password è palindroma + La password è un palindromo The password differs with case changes only - + La password differisce solo per lettere minuscole e maiuscole The password is too similar to the old one - La nuova password è troppo simile a quella precedente + La password è troppo simile a quella precedente The password contains the user name in some form - La password contiene il nome utente in una qualche forma + La password contiene il nome utente in qualche campo The password contains words from the real name of the user in some form - La password contiene parte del nome reale dell'utente in qualche forma + La password contiene parti del nome utente reale in qualche campo The password contains forbidden words in some form - + La password contiene parole vietate in alcuni campi The password contains less than %1 digits - La password contiene meno di %1 numeri + La password contiene meno di %1 cifre The password contains too few digits - La password contiene troppo pochi numeri + La password contiene poche cifre The password contains less than %1 uppercase letters - + La password contiene meno di %1 lettere maiuscole The password contains too few uppercase letters - + La password contiene poche lettere maiuscole The password contains less than %1 lowercase letters - + La password contiene meno di %1 lettere minuscole The password contains too few lowercase letters - + La password contiene poche lettere minuscole The password contains less than %1 non-alphanumeric characters - + La password contiene meno di %1 caratteri non alfanumerici The password contains too few non-alphanumeric characters - + La password contiene pochi caratteri non alfanumerici The password is shorter than %1 characters - + La password ha meno di %1 caratteri The password is too short - + La password è troppo corta The password is just rotated old one - + La password è solo una rotazione della precedente The password contains less than %1 character classes - + La password contiene meno di %1 classi di caratteri The password does not contain enough character classes - + La password non contiene classi di caratteri sufficienti The password contains more than %1 same characters consecutively - + La password contiene più di %1 caratteri uguali consecutivi The password contains too many same characters consecutively - + La password contiene troppi caratteri uguali consecutivi The password contains more than %1 characters of the same class consecutively - + La password contiene più di %1 caratteri consecutivi della stessa classe The password contains too many characters of the same class consecutively - + La password contiene molti caratteri consecutivi della stessa classe The password contains monotonic sequence longer than %1 characters - + La password contiene una sequenza monotona più lunga di %1 caratteri The password contains too long of a monotonic character sequence - + La password contiene una sequenza di caratteri monotona troppo lunga No password supplied - + Nessuna password fornita Cannot obtain random numbers from the RNG device - + Impossibile ottenere numeri casuali dal dispositivo RNG Password generation failed - required entropy too low for settings - + Generazione della password fallita - entropia richiesta troppo bassa per le impostazioni The password fails the dictionary check - %1 - + La password non supera il controllo del dizionario - %1 The password fails the dictionary check - + La password non supera il controllo del dizionario Unknown setting - %1 - + Impostazioni sconosciute - %1 Unknown setting - + Impostazione sconosciuta Bad integer value of setting - %1 - + Valore intero non valido per l'impostazione - %1 Bad integer value - + Valore intero non valido Setting %1 is not of integer type - + Impostazione %1 non è di tipo intero Setting is not of integer type - + Impostazione non è di tipo intero Setting %1 is not of string type - + Impostazione %1 non è di tipo stringa Setting is not of string type - + Impostazione non è di tipo stringa Opening the configuration file failed - + Apertura del file di configurazione fallita The configuration file is malformed - + Il file di configurazione non è corretto Fatal failure - + Errore fatale Unknown error - + Errore sconosciuto @@ -1665,12 +1665,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Can not create new partition - + Impossibile creare nuova partizione 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. - + La tabella delle partizioni su %1 contiene già %2 partizioni primarie, non se ne possono aggiungere altre. Rimuovere una partizione primaria e aggiungere una partizione estesa invece. @@ -1776,13 +1776,13 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Plasma Look-and-Feel Job - Attività del tema di Plasma + Job di Plasma Look-and-Feel Could not select KDE Plasma Look-and-Feel package - Impossibile selezionare il pacchetto del tema di KDE Plasma + Impossibile selezionare il pacchetto di KDE Plasma Look-and-Feel @@ -1800,7 +1800,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + Scegliere il tema per il desktop KDE Plasma. Si può anche saltare questa scelta e configurare il tema dopo aver installato il sistema. Cliccando su selezione del tema, ne sarà mostrata un'anteprima dal vivo. @@ -1808,7 +1808,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Look-and-Feel - Tema + Look-and-Feel @@ -1816,17 +1816,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Saving files for later ... - + Salvataggio dei file per dopo ... No files configured to save for later. - + Nessun file configurato per dopo. Not all of the configured files could be preserved. - + Non tutti i file configurati possono essere preservati. @@ -1835,7 +1835,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno There was no output from the command. - + Non c'era output dal comando. @@ -1864,7 +1864,8 @@ Output: Command <i>%1</i> failed to start. - Il comando %1 non si è avviato. + Il comando %1 non si è avviato. + @@ -1874,7 +1875,7 @@ Output: Bad parameters for process job call. - Parametri errati per elaborare l'attività richiesta + Parametri errati per elaborare la chiamata al job. @@ -2334,7 +2335,7 @@ Output: Shell Processes Job - + Job dei processi della shell @@ -2343,7 +2344,7 @@ Output: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -2372,7 +2373,7 @@ Output: Sending installation feedback. - Invio in corso della valutazione dell'installazione + Invio della valutazione dell'installazione. @@ -2382,7 +2383,7 @@ Output: HTTP request timed out. - La richiesta HTTP ha raggiunto il timeout. + La richiesta HTTP è scaduta. @@ -2406,12 +2407,12 @@ Output: Could not configure machine feedback correctly, script error %1. - Non è stato possibile configurare correttamente la valutazione automatica, errore script %1. + Non è stato possibile configurare correttamente la valutazione automatica, errore dello script %1. Could not configure machine feedback correctly, Calamares error %1. - Non è stato possibile configurare correttamente la valutazione automatica, errore Calamares %1. + Non è stato possibile configurare correttamente la valutazione automatica, errore di Calamares %1. @@ -2429,7 +2430,7 @@ Output: <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - <html><head/><body><p>Selezionando questo, non verrà inviata <span style=" font-weight:600;">alcuna informazione</span> riguardo la propria installazione.</p></body></html> + <html><head/><body><p>Selezionando questo, non verrà inviata <span style=" font-weight:600;">alcuna informazione</span> relativa alla propria installazione.</p></body></html> @@ -2448,27 +2449,27 @@ Output: <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> - <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Cliccare qui per maggiori informazioni riguardo la valutazione degli utenti</span></a></p></body></html> + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Cliccare qui per maggiori informazioni sulla valutazione degli utenti</span></a></p></body></html> Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. - Il tracciamento dell'installazione aiuta %1 a capire quanti utenti vengono serviti, su quale hardware installano %1 e (con le ultime due opzioni qui sotto), a ricevere continue informazioni riguardo le applicazioni preferite. Per vedere cosa verrà inviato, si prega di cliccare sull'icona di aiuto vicino ad ogni area. + Il tracciamento dell'installazione aiuta %1 a capire quanti utenti vengono serviti, su quale hardware si installa %1 e (con le ultime due opzioni sotto), a ricevere continue informazioni sulle applicazioni preferite. Per vedere cosa verrà inviato, cliccare sull'icona di aiuto accanto ad ogni area. By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - Selezionando questa opzione verranno inviate informazioni riguardo l'installazione e l'hardware. Queste informazioni verranno <b>inviate solo una volta</b> dopo che l'installazione è terminata. + Selezionando questa opzione saranno inviate informazioni relative all'installazione e all'hardware. I dati saranno <b>inviati solo una volta</b> al termine dell'installazione. By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - Selezionando questa opzione verranno inviate <b>periodicamente</b> informazioni riguardo l'installazione, l'hardware e le applicazioni, a %1. + Selezionando questa opzione saranno inviate <b>periodicamente</b> informazioni sull'installazione, l'hardware e le applicazioni, a %1. By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. - Selezionando questa opzione verranno inviate <b>regolarmente</b> informazioni riguardo l'installazione, l'hardware, le applicazioni e il modo di utilizzo, a %1. + Selezionando questa opzione verranno inviate <b>regolarmente</b> informazioni sull'installazione, l'hardware, le applicazioni e i modi di utilizzo, a %1. @@ -2571,7 +2572,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Grazie a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg e al <a href="https://www.transifex.com/calamares/calamares/">team dei traduttori di Calamares</a>.<br/><br/>Lo sviluppo di<a href="https://calamares.io/">Calamares</a> è sponsorizzato da <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. diff --git a/lang/calamares_pl.ts b/lang/calamares_pl.ts index ea5512300..65c0343f0 100644 --- a/lang/calamares_pl.ts +++ b/lang/calamares_pl.ts @@ -490,7 +490,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. The command needs to know the user's name, but no username is defined. - + Polecenie musi znać nazwę użytkownika, ale żadna nazwa nie została jeszcze zdefiniowana. @@ -1816,17 +1816,17 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. Saving files for later ... - + Zapisywanie plików na później ... No files configured to save for later. - + Nie skonfigurowano żadnych plików do zapisania na później. Not all of the configured files could be preserved. - + Nie wszystkie pliki konfiguracyjne mogą być zachowane. From 8acb88ed4dd1e82e2abd5f4a60821d9b9f9f6561 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 4 Jun 2018 08:21:58 -0400 Subject: [PATCH 231/385] i18n: [desktop] Automatic merge of Transifex translations --- calamares.desktop | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/calamares.desktop b/calamares.desktop index caba57a7e..f8be5d1f3 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -92,9 +92,9 @@ GenericName[lt]=Sistemos diegimas į kompiuterį Comment[lt]=Calamares — Sistemos diegimo programa Name[lt]=Įdiegti Sistemą Icon[it_IT]=calamares -GenericName[it_IT]=Programma di installazione -Comment[it_IT]=Calamares — Installare il Sistema -Name[it_IT]=Installa il Sistema +GenericName[it_IT]=Programma d'installazione del sistema +Comment[it_IT]=Calamares — Programma d'installazione del sistema +Name[it_IT]=Installa il sistema Icon[nb]=calamares GenericName[nb]=Systeminstallatør Comment[nb]=Calamares-systeminstallatør From 54515688f7afa87592376e4e8d439b5e9cb43d8f Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 4 Jun 2018 08:21:59 -0400 Subject: [PATCH 232/385] i18n: [dummypythonqt] Automatic merge of Transifex translations --- .../lang/it_IT/LC_MESSAGES/dummypythonqt.mo | Bin 970 -> 979 bytes .../lang/it_IT/LC_MESSAGES/dummypythonqt.po | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.mo index 14d83f4892241afb32aee1a8c69b5ee5b3c93ee7..2c001df40a95891aa1c484f764d780697ee2e759 100644 GIT binary patch delta 141 zcmX@bewlqji0O7l28IM67Gz*xkYHwDFaXk8K$;s!M+0doAe|1RMS*k^khTKSGd6Z= zFbY`c8kp)DStuBoSecsZ8kkHz$Y`SzoLH7xl$oz!Qw(9~B^4#+B_}2)XXZPk=O$+6 b=q2ap+UY1585o*vR$vNXWK5e}$Q%g(2gn~} delta 132 zcmcc2eu{lUi0L{;28IM67Gz*x;AduFFaXkuK$;s!2LWj*ARPy!MS*lBkhTKS{Tn+q z7zNCA4UKe-3>6H`tV~R_4GbqAWVBKCO)N^zSBTP6u*uELORO?8GjmAKP0Y;EOU}== W(@`)oFf`w+$rQlI=r*~EIT8Sxwi;Cc diff --git a/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.po index 02dec56cb..6b22b4b65 100644 --- a/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-21 16:44+0100\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Marco Z. , 2017\n" +"Last-Translator: Saverio , 2016\n" "Language-Team: Italian (Italy) (https://www.transifex.com/calamares/teams/20061/it_IT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,7 +28,7 @@ msgstr "Una nuova QLabel." #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" -msgstr "PythonQt ViewStep Fittizio" +msgstr "PythonQt ViewStep fittizio" #: src/modules/dummypythonqt/main.py:183 msgid "The Dummy PythonQt Job" From 430ca800f7454f341375c78f96494c4492a45cb6 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 4 Jun 2018 08:21:59 -0400 Subject: [PATCH 233/385] i18n: [python] Automatic merge of Transifex translations --- lang/python/it_IT/LC_MESSAGES/python.mo | Bin 1162 -> 1173 bytes lang/python/it_IT/LC_MESSAGES/python.po | 14 +++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lang/python/it_IT/LC_MESSAGES/python.mo b/lang/python/it_IT/LC_MESSAGES/python.mo index 2407dbe213cb18d12278dc8098376a97dc9363bb..9aee6696ec0bbaacade9577ec1c0e5ad4d389a30 100644 GIT binary patch delta 254 zcmeC;oXR;N#dRek1H*M77GYpuXk=z!5C_uJfV2>hUI(Owf%HKjZ40EY0%;>4EzH8e zU;(7vfV3!(uHU%wG^1QVW@<@MzJgm(VqS7;aWasVpI4HYm#Cv)WMF7Mc{0;`W3T)q zg@VeGjQl)>w9Jx{%&N?MJ%#{?KygWGfkJgHT!O(pH7~U&ak2oT$mGM!`r1IXd8rC1 znF^{Jd8N6UDGCLN$;lb1KvVP>TyqkW@{1CoN>V3_usCq$!!%5eW|0z5$OIakld4c$ K3A86yj{yLesz*lv delta 174 zcmbQr*~K{_#dQ@U1H*M77Gz*xXkuny5CPItfV2>hUJ0ayf%G0AZ2_b&0BJoS&B?;R zUSaQa(;Y4VsffOZgHMoa(=Fzj)IYap~d7$Oz$T? z)SbMA*_k;nC4cgNW@#26tuR@M#euyvzbq9bn9U+3nx3ASuaJ_OqmY)Fld4c$SzMBu G%K!iuXe-hH diff --git a/lang/python/it_IT/LC_MESSAGES/python.po b/lang/python/it_IT/LC_MESSAGES/python.po index 24100878d..0ad2a26ed 100644 --- a/lang/python/it_IT/LC_MESSAGES/python.po +++ b/lang/python/it_IT/LC_MESSAGES/python.po @@ -10,7 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Mark , 2018\n" +"Last-Translator: Pietro Francesco Fontana, 2017\n" "Language-Team: Italian (Italy) (https://www.transifex.com/calamares/teams/20061/it_IT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,15 +20,15 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "Smontaggio del file system" +msgstr "Smonta i file system." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "Dummy python job." +msgstr "Job python fittizio." #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "Dummy python step {}" +msgstr "Python step {} fittizio" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." @@ -37,7 +37,7 @@ msgstr "Genera machine-id." #: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "Elaborando i pacchetti (%(count)d / %(total)d)" +msgstr "Elaborazione dei pacchetti (%(count)d / %(total)d)" #: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." @@ -48,11 +48,11 @@ msgstr "Installa pacchetti." msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Installando un pacchetto." -msgstr[1] "Installando %(num)d pacchetti." +msgstr[1] "Installazione di %(num)d pacchetti." #: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." msgstr[0] "Rimuovendo un pacchetto." -msgstr[1] "Rimuovendo %(num)d pacchetti." +msgstr[1] "Rimozione di %(num)d pacchetti." From d15ce56c9703f2509fb55b3b497d66ede2c806d9 Mon Sep 17 00:00:00 2001 From: Caio Date: Mon, 4 Jun 2018 16:31:58 -0300 Subject: [PATCH 234/385] [partition] Initial implementation of VolumeGroupBaseDialog. --- src/modules/partition/CMakeLists.txt | 4 + .../partition/core/PartitionCoreModule.cpp | 48 +++++ .../partition/core/PartitionCoreModule.h | 6 + src/modules/partition/core/PartitionInfo.cpp | 4 + .../gui/ListPhysicalVolumeWidgetItem.cpp | 36 ++++ .../gui/ListPhysicalVolumeWidgetItem.h | 37 ++++ src/modules/partition/gui/PartitionPage.cpp | 18 ++ src/modules/partition/gui/PartitionPage.h | 1 + src/modules/partition/gui/PartitionPage.ui | 9 +- .../partition/gui/VolumeGroupBaseDialog.cpp | 42 ++++ .../partition/gui/VolumeGroupBaseDialog.h | 48 +++++ .../partition/gui/VolumeGroupBaseDialog.ui | 193 ++++++++++++++++++ .../partition/jobs/CreateVolumeGroupJob.cpp | 88 ++++++++ .../partition/jobs/CreateVolumeGroupJob.h | 47 +++++ 14 files changed, 580 insertions(+), 1 deletion(-) create mode 100644 src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp create mode 100644 src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h create mode 100644 src/modules/partition/gui/VolumeGroupBaseDialog.cpp create mode 100644 src/modules/partition/gui/VolumeGroupBaseDialog.h create mode 100644 src/modules/partition/gui/VolumeGroupBaseDialog.ui create mode 100644 src/modules/partition/jobs/CreateVolumeGroupJob.cpp create mode 100644 src/modules/partition/jobs/CreateVolumeGroupJob.h diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index 156ff86f5..2f0e46bea 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -38,6 +38,7 @@ if ( KPMcore_FOUND ) gui/DeviceInfoWidget.cpp gui/EditExistingPartitionDialog.cpp gui/EncryptWidget.cpp + gui/ListPhysicalVolumeWidgetItem.cpp gui/PartitionPage.cpp gui/PartitionBarsView.cpp gui/PartitionLabelsView.cpp @@ -47,10 +48,12 @@ if ( KPMcore_FOUND ) gui/PrettyRadioButton.cpp gui/ScanningDialog.cpp gui/ReplaceWidget.cpp + gui/VolumeGroupBaseDialog.cpp jobs/ClearMountsJob.cpp jobs/ClearTempMountsJob.cpp jobs/CreatePartitionJob.cpp jobs/CreatePartitionTableJob.cpp + jobs/CreateVolumeGroupJob.cpp jobs/DeletePartitionJob.cpp jobs/FillGlobalStorageJob.cpp jobs/FormatPartitionJob.cpp @@ -65,6 +68,7 @@ if ( KPMcore_FOUND ) gui/EncryptWidget.ui gui/PartitionPage.ui gui/ReplaceWidget.ui + gui/VolumeGroupBaseDialog.ui LINK_PRIVATE_LIBRARIES kpmcore calamaresui diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index 43ba33d7b..7229c8305 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -33,6 +33,7 @@ #include "jobs/ClearTempMountsJob.h" #include "jobs/CreatePartitionJob.h" #include "jobs/CreatePartitionTableJob.h" +#include "jobs/CreateVolumeGroupJob.h" #include "jobs/DeletePartitionJob.h" #include "jobs/FillGlobalStorageJob.h" #include "jobs/FormatPartitionJob.h" @@ -44,10 +45,12 @@ // KPMcore #include +#include #include #include #include #include +#include // Qt #include @@ -177,6 +180,8 @@ PartitionCoreModule::doInit() m_bootLoaderModel->init( bootLoaderDevices ); + scanForLVMPVs(); + //FIXME: this should be removed in favor of // proper KPM support for EFI if ( PartUtils::isEfiSystem() ) @@ -263,6 +268,27 @@ PartitionCoreModule::createPartition( Device* device, refresh(); } +void +PartitionCoreModule::createVolumeGroup( QString &vgName, + QVector< const Partition* > pvList, + qint32 peSize ) +{ + CreateVolumeGroupJob* job = new CreateVolumeGroupJob( vgName, pvList, peSize ); + job->updatePreview(); + + LvmDevice* device = new LvmDevice(vgName); + + for ( const Partition* p : pvList ) + device->physicalVolumes() << p; + + DeviceInfo* deviceInfo = new DeviceInfo( device ); + + m_deviceInfos << deviceInfo; + deviceInfo->jobs << Calamares::job_ptr( job ); + + refresh(); +} + void PartitionCoreModule::deletePartition( Device* device, Partition* partition ) { @@ -432,6 +458,12 @@ PartitionCoreModule::efiSystemPartitions() const return m_efiSystemPartitions; } +QList< const Partition* > +PartitionCoreModule::lvmPVs() const +{ + return m_lvmPVs; +} + void PartitionCoreModule::dumpQueue() const { @@ -523,6 +555,22 @@ PartitionCoreModule::scanForEfiSystemPartitions() m_efiSystemPartitions = efiSystemPartitions; } +void +PartitionCoreModule::scanForLVMPVs() +{ + m_lvmPVs.clear(); + + QList< Device* > devices; + + for ( DeviceInfo* deviceInfo : m_deviceInfos ) + devices << deviceInfo->device.data(); + + LvmDevice::scanSystemLVM( devices ); + + for ( auto p : LVM::pvList ) + m_lvmPVs << p.partition().data(); +} + PartitionCoreModule::DeviceInfo* PartitionCoreModule::infoForDevice( const Device* device ) const { diff --git a/src/modules/partition/core/PartitionCoreModule.h b/src/modules/partition/core/PartitionCoreModule.h index 49564dad1..05c029381 100644 --- a/src/modules/partition/core/PartitionCoreModule.h +++ b/src/modules/partition/core/PartitionCoreModule.h @@ -111,6 +111,8 @@ public: void createPartition( Device* device, Partition* partition, PartitionTable::Flags flags = PartitionTable::FlagNone ); + void createVolumeGroup( QString &vgName, QVector< const Partition* > pvList, qint32 peSize ); + void deletePartition( Device* device, Partition* partition ); void formatPartition( Device* device, Partition* partition ); @@ -132,6 +134,8 @@ public: QList< Partition* > efiSystemPartitions() const; + QList< const Partition* > lvmPVs() const; + /** * @brief findPartitionByMountPoint returns a Partition* for a given mount point. * @param mountPoint the mount point to find a partition for. @@ -194,6 +198,7 @@ private: }; QList< DeviceInfo* > m_deviceInfos; QList< Partition* > m_efiSystemPartitions; + QList< const Partition* > m_lvmPVs; DeviceModel* m_deviceModel; BootLoaderModel* m_bootLoaderModel; @@ -205,6 +210,7 @@ private: void updateHasRootMountPoint(); void updateIsDirty(); void scanForEfiSystemPartitions(); + void scanForLVMPVs(); DeviceInfo* infoForDevice( const Device* ) const; diff --git a/src/modules/partition/core/PartitionInfo.cpp b/src/modules/partition/core/PartitionInfo.cpp index 72cca8976..20cd6f8a9 100644 --- a/src/modules/partition/core/PartitionInfo.cpp +++ b/src/modules/partition/core/PartitionInfo.cpp @@ -19,6 +19,7 @@ #include "core/PartitionInfo.h" // KPMcore +#include #include // Qt @@ -64,6 +65,9 @@ reset( Partition* partition ) bool isDirty( Partition* partition ) { + if ( LvmDevice::s_DirtyPVs.contains( partition ) ) + return true; + return !mountPoint( partition ).isEmpty() || format( partition ); } diff --git a/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp new file mode 100644 index 000000000..cd480aa55 --- /dev/null +++ b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp @@ -0,0 +1,36 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "ListPhysicalVolumeWidgetItem.h" + +#include + +ListPhysicalVolumeWidgetItem::ListPhysicalVolumeWidgetItem( const Partition* partition, bool checked ) + : QListWidgetItem(QString("%1 | %2").arg( partition->deviceNode(), Capacity::formatByteSize( partition->capacity() ))) + , m_partition(partition) +{ + setToolTip( partition->deviceNode() ); + setSizeHint( QSize(0, 32) ); + setCheckState( checked ? Qt::Checked : Qt::Unchecked ); +} + +const Partition* +ListPhysicalVolumeWidgetItem::partition() const +{ + return m_partition; +} diff --git a/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h new file mode 100644 index 000000000..44ba8c3bf --- /dev/null +++ b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h @@ -0,0 +1,37 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef LISTPHYSICALVOLUMEWIDGETITEM_H +#define LISTPHYSICALVOLUMEWIDGETITEM_H + +#include + +#include + +class ListPhysicalVolumeWidgetItem : public QListWidgetItem +{ +public: + ListPhysicalVolumeWidgetItem( const Partition* partition, bool checked ); + + const Partition* partition() const; + +private: + const Partition* m_partition; +}; + +#endif // LISTPHYSICALVOLUMEWIDGETITEM_H diff --git a/src/modules/partition/gui/PartitionPage.cpp b/src/modules/partition/gui/PartitionPage.cpp index c521604fb..adebb3418 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -30,6 +30,7 @@ #include "gui/CreatePartitionDialog.h" #include "gui/EditExistingPartitionDialog.h" #include "gui/ScanningDialog.h" +#include "gui/VolumeGroupBaseDialog.h" #include "ui_PartitionPage.h" #include "ui_CreatePartitionTableDialog.h" @@ -99,6 +100,7 @@ PartitionPage::PartitionPage( PartitionCoreModule* core, QWidget* parent ) connect( m_ui->partitionTreeView, &QAbstractItemView::doubleClicked, this, &PartitionPage::onPartitionViewActivated ); connect( m_ui->revertButton, &QAbstractButton::clicked, this, &PartitionPage::onRevertClicked ); + connect( m_ui->newVolumeGroupButton, &QAbstractButton::clicked, this, &PartitionPage::onNewVolumeGroupClicked ); connect( m_ui->newPartitionTableButton, &QAbstractButton::clicked, this, &PartitionPage::onNewPartitionTableClicked ); connect( m_ui->createButton, &QAbstractButton::clicked, this, &PartitionPage::onCreateClicked ); connect( m_ui->editButton, &QAbstractButton::clicked, this, &PartitionPage::onEditClicked ); @@ -178,6 +180,22 @@ PartitionPage::onNewPartitionTableClicked() updateBootLoaderIndex(); } +void +PartitionPage::onNewVolumeGroupClicked() +{ + QString vgName; + qint32 peSize = 4; + + QPointer< VolumeGroupBaseDialog > dlg = new VolumeGroupBaseDialog( vgName, m_core->lvmPVs(), peSize, this ); + + if ( dlg->exec() == QDialog::Accepted ) + { + + } + + delete dlg; +} + void PartitionPage::onCreateClicked() { diff --git a/src/modules/partition/gui/PartitionPage.h b/src/modules/partition/gui/PartitionPage.h index 24cf65675..ef6eeea15 100644 --- a/src/modules/partition/gui/PartitionPage.h +++ b/src/modules/partition/gui/PartitionPage.h @@ -50,6 +50,7 @@ private: PartitionCoreModule* m_core; void updateButtons(); void onNewPartitionTableClicked(); + void onNewVolumeGroupClicked(); void onCreateClicked(); void onEditClicked(); void onDeleteClicked(); diff --git a/src/modules/partition/gui/PartitionPage.ui b/src/modules/partition/gui/PartitionPage.ui index 7d24204c9..2b3d568cf 100644 --- a/src/modules/partition/gui/PartitionPage.ui +++ b/src/modules/partition/gui/PartitionPage.ui @@ -88,6 +88,13 @@ + + + + New Volume Group + + + @@ -145,7 +152,7 @@ - Install boot &loader on: + I&nstall boot loader on: bootLoaderComboBox diff --git a/src/modules/partition/gui/VolumeGroupBaseDialog.cpp b/src/modules/partition/gui/VolumeGroupBaseDialog.cpp new file mode 100644 index 000000000..b3535a004 --- /dev/null +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.cpp @@ -0,0 +1,42 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "VolumeGroupBaseDialog.h" +#include "ui_VolumeGroupBaseDialog.h" + +#include "gui/ListPhysicalVolumeWidgetItem.h" + +VolumeGroupBaseDialog::VolumeGroupBaseDialog( QString& vgName, + QList< const Partition* > pvList, + qint32& peSize, + QWidget *parent) + : QDialog(parent) + , ui(new Ui::VolumeGroupBaseDialog) + , m_vgName(vgName) + , m_peSize(peSize) +{ + ui->setupUi(this); + + for ( const Partition* p : pvList ) + ui->pvList->addItem( new ListPhysicalVolumeWidgetItem(p, false) ); +} + +VolumeGroupBaseDialog::~VolumeGroupBaseDialog() +{ + delete ui; +} diff --git a/src/modules/partition/gui/VolumeGroupBaseDialog.h b/src/modules/partition/gui/VolumeGroupBaseDialog.h new file mode 100644 index 000000000..294effb1d --- /dev/null +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.h @@ -0,0 +1,48 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef VOLUMEGROUPBASEDIALOG_H +#define VOLUMEGROUPBASEDIALOG_H + +#include + +#include + +namespace Ui { +class VolumeGroupBaseDialog; +} + +class VolumeGroupBaseDialog : public QDialog +{ + Q_OBJECT + +public: + explicit VolumeGroupBaseDialog(QString& vgName, + QList< const Partition* > pvList, + qint32& peSize, + QWidget* parent = 0); + ~VolumeGroupBaseDialog(); + +private: + Ui::VolumeGroupBaseDialog *ui; + + QString &m_vgName; + qint32 &m_peSize; +}; + +#endif // VOLUMEGROUPBASEDIALOG_H diff --git a/src/modules/partition/gui/VolumeGroupBaseDialog.ui b/src/modules/partition/gui/VolumeGroupBaseDialog.ui new file mode 100644 index 000000000..c9cb853b8 --- /dev/null +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.ui @@ -0,0 +1,193 @@ + + + VolumeGroupBaseDialog + + + + 0 + 0 + 611 + 367 + + + + VolumeGroupDialog + + + + + + List of Physical Volumes + + + + + + + + + + Volume Group Name: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Volume Group Type: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Physical Extent Size: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Total Size: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + --- + + + Qt::AlignCenter + + + + + + + Used Size: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + --- + + + Qt::AlignCenter + + + + + + + Total Sectors: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + --- + + + Qt::AlignCenter + + + + + + + Quantity of LVs: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + --- + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + VolumeGroupBaseDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + VolumeGroupBaseDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/modules/partition/jobs/CreateVolumeGroupJob.cpp b/src/modules/partition/jobs/CreateVolumeGroupJob.cpp new file mode 100644 index 000000000..3b05b684a --- /dev/null +++ b/src/modules/partition/jobs/CreateVolumeGroupJob.cpp @@ -0,0 +1,88 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "CreateVolumeGroupJob.h" + +// KPMcore +#include +#include +#include +#include + +CreateVolumeGroupJob::CreateVolumeGroupJob( QString& vgName, QVector< const Partition* > pvList, const qint32 peSize ) + : m_vgName(vgName) + , m_pvList(pvList) + , m_peSize(peSize) +{ + +} + +QString +CreateVolumeGroupJob::prettyName() const +{ + return tr( "Create new volume group named %1." ) + .arg( m_vgName ); +} + +QString +CreateVolumeGroupJob::prettyDescription() const +{ + return tr( "Create new volume group named %1." ) + .arg( m_vgName ); +} + +QString +CreateVolumeGroupJob::prettyStatusMessage() const +{ + return tr( "Creating new volume group named %1." ) + .arg( m_vgName ); +} + +Calamares::JobResult +CreateVolumeGroupJob::exec() +{ + Report report( nullptr ); + + QVector< const Partition* > pvList; + + pvList << m_pvList; + + CreateVolumeGroupOperation op( m_vgName, m_pvList, m_peSize ); + + op.setStatus( Operation::StatusRunning ); + + QString message = tr( "The installer failed to create a volume group named '%1'.").arg( m_vgName ); + if (op.execute(report)) + return Calamares::JobResult::ok(); + + return Calamares::JobResult::error(message, report.toText()); +} + +void +CreateVolumeGroupJob::updatePreview() +{ + LvmDevice::s_DirtyPVs << m_pvList; +} + +void +CreateVolumeGroupJob::undoPreview() +{ + for ( const auto& pv : m_pvList ) + if ( LvmDevice::s_DirtyPVs.contains( pv )) + LvmDevice::s_DirtyPVs.removeAll( pv ); +} diff --git a/src/modules/partition/jobs/CreateVolumeGroupJob.h b/src/modules/partition/jobs/CreateVolumeGroupJob.h new file mode 100644 index 000000000..9e84fba73 --- /dev/null +++ b/src/modules/partition/jobs/CreateVolumeGroupJob.h @@ -0,0 +1,47 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef CREATEVOLUMEGROUPJOB_H +#define CREATEVOLUMEGROUPJOB_H + +#include + +#include + +#include + +class CreateVolumeGroupJob : public Calamares::Job +{ +public: + CreateVolumeGroupJob( QString& vgName, QVector< const Partition* > pvList, const qint32 peSize ); + + QString prettyName() const override; + QString prettyDescription() const override; + QString prettyStatusMessage() const override; + Calamares::JobResult exec() override; + + void updatePreview(); + void undoPreview(); + +private: + QString m_vgName; + QVector< const Partition* > m_pvList; + qint32 m_peSize; +}; + +#endif // CREATEVOLUMEGROUPJOB_H From 91a5ec426d57aa1724fd7ca0e4faa4e0eb14c426 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 7 Jun 2018 13:16:57 +0200 Subject: [PATCH 236/385] CMake: shuffle the top-level CMakeLists - Put all the options near the top, easy to spot when reading the file - Put the settings that need regular updates, like version, near the top - Add some "section headers" --- CMakeLists.txt | 61 +++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e7ca237f..2de3d661a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,12 +33,33 @@ project( calamares C CXX ) cmake_minimum_required( VERSION 3.2 ) -set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules" ) -set( CMAKE_CXX_STANDARD 14 ) -set( CMAKE_CXX_STANDARD_REQUIRED ON ) -set( CMAKE_C_STANDARD 99 ) -set( CMAKE_C_STANDARD_REQUIRED ON ) +### OPTIONS +# +option( INSTALL_CONFIG "Install configuration files" ON ) +option( BUILD_TESTING "Build the testing tree." ON ) +option( WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON ) +option( WITH_PYTHONQT "Enable next generation Python modules API (experimental, requires PythonQt)." ON ) +option( WITH_KF5Crash "Enable crash reporting with KCrash." ON ) + + +### Calamares application info +# +set( CALAMARES_ORGANIZATION_NAME "Calamares" ) +set( CALAMARES_ORGANIZATION_DOMAIN "github.com/calamares" ) +set( CALAMARES_APPLICATION_NAME "Calamares" ) +set( CALAMARES_DESCRIPTION_SUMMARY + "The distribution-independent installer framework" ) + +set( CALAMARES_VERSION_MAJOR 3 ) +set( CALAMARES_VERSION_MINOR 2 ) +set( CALAMARES_VERSION_PATCH 0 ) +set( CALAMARES_VERSION_RC 0 ) + + +### CMAKE SETUP +# +set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules" ) # CMake 3.9, 3.10 compatibility if( POLICY CMP0071 ) @@ -52,8 +73,15 @@ if(NOT CMAKE_VERSION VERSION_LESS "3.10.0") ) endif() - set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" ) +### C++ SETUP +# +set( CMAKE_CXX_STANDARD 14 ) +set( CMAKE_CXX_STANDARD_REQUIRED ON ) +set( CMAKE_C_STANDARD 99 ) +set( CMAKE_C_STANDARD_REQUIRED ON ) + +set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" ) if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) message( STATUS "Found Clang ${CMAKE_CXX_COMPILER_VERSION}, setting up Clang-specific compiler flags." ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" ) @@ -139,12 +167,6 @@ if( ECM_FOUND ) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH}) endif() -option( INSTALL_CONFIG "Install configuration files" ON ) -option( WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON ) -option( WITH_PYTHONQT "Enable next generation Python modules API (experimental, requires PythonQt)." ON ) -option( WITH_KF5Crash "Enable crash reporting with KCrash." ON ) -option( BUILD_TESTING "Build the testing tree." ON ) - find_package( KF5 COMPONENTS CoreAddons Crash ) if( NOT KF5Crash_FOUND ) set( WITH_KF5Crash OFF ) @@ -245,23 +267,10 @@ endif() unset( prev_tx ) unset( curr_tx ) -add_subdirectory( lang ) # i18n tools - -### -### Calamares application info -### -set( CALAMARES_ORGANIZATION_NAME "Calamares" ) -set( CALAMARES_ORGANIZATION_DOMAIN "github.com/calamares" ) -set( CALAMARES_APPLICATION_NAME "Calamares" ) -set( CALAMARES_DESCRIPTION_SUMMARY "The distribution-independent installer framework" ) set( CALAMARES_TRANSLATION_LANGUAGES en ${_tx_complete} ${_tx_good} ${_tx_ok} ) list( SORT CALAMARES_TRANSLATION_LANGUAGES ) -### Bump version here -set( CALAMARES_VERSION_MAJOR 3 ) -set( CALAMARES_VERSION_MINOR 2 ) -set( CALAMARES_VERSION_PATCH 0 ) -set( CALAMARES_VERSION_RC 0 ) +add_subdirectory( lang ) # i18n tools set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} ) set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" ) From fc979404d1e8e443f7820e0efcfbbea023442219 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 7 Jun 2018 13:26:22 +0200 Subject: [PATCH 237/385] CMake: move translation settings up - Follow previous move of user-adaptable settings and regularly-updated variables to the top of CMakeLists.txt with a move of the list of translated languages. --- CMakeLists.txt | 60 ++++++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2de3d661a..73af6b201 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,6 +57,37 @@ set( CALAMARES_VERSION_PATCH 0 ) set( CALAMARES_VERSION_RC 0 ) +### Transifex (languages) info +# +# complete = 100% translated, +# good = nearly complete (use own judgement, right now >= 75%) +# ok = incomplete (more than 25% untranslated), +# bad = 0% translated, placeholder in tx; these are not included. +# +# Language en (source language) is added later. It isn't listed in +# Transifex either. Get the list of languages and their status +# from https://transifex.com/calamares/calamares/ . +# +# When adding a new language, take care that it is properly loaded +# by the translation framework. Languages with alternate scripts +# (sr@latin in particular) may need special handling in CalamaresUtils.cpp. +# +# TODO: drop the es_ES translation from Transifex +# TODO: move eo (Esperanto) to _ok once Qt can actually create a +# locale for it. +# +# NOTE: when updating the list from Transifex, copy these four lines +# and prefix each variable name with "p", so that the automatic +# checks for new languages and misspelled ones are done (that is, +# copy these four lines to four backup lines, add "p", and then update +# 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_good sq es pl ja sk it_IT hu ru he de nl bg uk ) +set( _tx_ok ast is ar sv el es_MX gl en_GB th fi_FI hi eu sr nb + sl sr@latin mr es_PR kk kn et be ) +set( _tx_bad uz lo ur gu fr_CH fa eo ) + + ### CMAKE SETUP # set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules" ) @@ -211,33 +242,10 @@ endif() ### Transifex Translation status # -# complete = 100% translated, -# good = nearly complete (use own judgement, right now >= 75%) -# ok = incomplete (more than 25% untranslated), -# bad = 0% translated, placeholder in tx; these are not included. -# -# Language en (source language) is added later. It isn't listed in -# Transifex either. Get the list of languages and their status -# from https://transifex.com/calamares/calamares/ . -# -# When adding a new language, take care that it is properly loaded -# by the translation framework. Languages with alternate scripts -# (sr@latin in particular) may need special handling in CalamaresUtils.cpp. +# Construct language lists for use. If there are p_tx* variables, +# then run an extra cmake-time check for consistency of the old +# (p_tx*) and new (_tx*) lists. # -# TODO: drop the es_ES translation from Transifex -# TODO: move eo (Esperanto) to _ok once Qt can actually create a -# locale for it. -# -# NOTE: when updating the list from Transifex, copy these four lines -# and prefix each variable name with "p", so that the automatic -# checks for new languages and misspelled ones are done. -set( _tx_complete da pt_PT ro tr_TR zh_TW zh_CN pt_BR fr hr ca lt id cs_CZ ) -set( _tx_good sq es pl ja sk it_IT hu ru he de nl bg uk ) -set( _tx_ok ast is ar sv el es_MX gl en_GB th fi_FI hi eu sr nb - sl sr@latin mr es_PR kk kn et be ) -set( _tx_bad uz lo ur gu fr_CH fa eo ) - -# check translation update set( prev_tx ${p_tx_complete} ${p_tx_good} ${p_tx_ok} ${p_tx_bad} ) set( curr_tx ${_tx_complete} ${_tx_good} ${_tx_ok} ${_tx_bad} ) if ( prev_tx ) From 15b97f8e3f330b5548c365dbedd84d3059e32a1b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 7 Jun 2018 13:31:12 +0200 Subject: [PATCH 238/385] [libcalamares] Add missing include-dir - Fix build on FreeBSD, where the yaml-cpp headers don't live in any normally-searched include directory. --- src/libcalamares/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index cbc049ac6..598d3c313 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -40,6 +40,7 @@ mark_thirdparty_code( ${kdsagSources} ) include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} + ${YAMLCPP_INCLUDE_DIR} ) if( WITH_PYTHON ) From dfd76ed384f617856870e361759e088f97cc8331 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 7 Jun 2018 13:34:15 +0200 Subject: [PATCH 239/385] CMake: drop unused variable (no thirdparty/ dir anymore) --- CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 73af6b201..1c393a675 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -329,7 +329,6 @@ configure_file( set( CALAMARES_CMAKE_DIR "${CMAKE_SOURCE_DIR}/CMakeModules" ) set( CALAMARES_LIBRARIES calamares ) -set( THIRDPARTY_DIR "${CMAKE_SOURCE_DIR}/thirdparty" ) ### Example Distro # @@ -382,7 +381,6 @@ endif() # "http://tldp.org/HOWTO/SquashFS-HOWTO/creatingandusing.html" add_feature_info( ExampleDistro ${mksquashfs_FOUND} "Create example-distro target.") -# add_subdirectory( thirdparty ) add_subdirectory( src ) add_feature_info(Python ${WITH_PYTHON} "Python job modules") From fd2afc3ba9e1058b9ee284a49f1a2d60a70d52b5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 7 Jun 2018 13:39:28 +0200 Subject: [PATCH 240/385] CMake: move dependency-versioning info to top --- CMakeLists.txt | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c393a675..66550a13e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,6 +88,16 @@ set( _tx_ok ast is ar sv el es_MX gl en_GB th fi_FI hi eu sr nb set( _tx_bad uz lo ur gu fr_CH fa eo ) +### Required versions +# +# See DEPENDENCIES section below. +set( QT_VERSION 5.6.0 ) +set( YAMLCPP_VERSION 0.5.1 ) +set( ECM_VERSION 5.18 ) +set( PYTHONLIBS_VERSION 3.3 ) +set( BOOSTPYTHON_VERSION 1.54.0 ) + + ### CMAKE SETUP # set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules" ) @@ -182,17 +192,17 @@ endif() include( FeatureSummary ) include( CMakeColors ) -set( QT_VERSION 5.6.0 ) +### DEPENDENCIES +# find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Core Gui Widgets LinguistTools Svg Quick QuickWidgets ) -find_package( YAMLCPP 0.5.1 REQUIRED ) +find_package( YAMLCPP ${YAMLCPP_VERSION} REQUIRED ) find_package( PolkitQt5-1 REQUIRED ) # Find ECM once, and add it to the module search path; Calamares # modules that need ECM can do # find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE), # no need to mess with the module path after. -set( ECM_VERSION 5.18 ) find_package(ECM ${ECM_VERSION} NO_MODULE) if( ECM_FOUND ) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH}) @@ -207,7 +217,7 @@ if( BUILD_TESTING ) enable_testing() endif () -find_package( PythonLibs 3.3 ) +find_package( PythonLibs ${PYTHONLIBS_VERSION} ) set_package_properties( PythonLibs PROPERTIES DESCRIPTION "C interface libraries for the Python 3 interpreter." @@ -217,7 +227,7 @@ set_package_properties( if ( PYTHONLIBS_FOUND ) include( BoostPython3 ) - find_boost_python3( 1.54.0 ${PYTHONLIBS_VERSION_STRING} CALAMARES_BOOST_PYTHON3_FOUND ) + find_boost_python3( ${BOOSTPYTHON_VERSION} ${PYTHONLIBS_VERSION_STRING} CALAMARES_BOOST_PYTHON3_FOUND ) set_package_properties( Boost PROPERTIES PURPOSE "Boost.Python is used for Python job modules." From e52c99685d1165ea8de0ae532c636860e7868cf9 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 7 Jun 2018 13:43:44 +0200 Subject: [PATCH 241/385] CMake: untangle more sections of top-level CMakeLists.txt --- CMakeLists.txt | 119 ++++++++++++++++++++++++++----------------------- 1 file changed, 62 insertions(+), 57 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 66550a13e..4d4a24550 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -290,55 +290,6 @@ list( SORT CALAMARES_TRANSLATION_LANGUAGES ) add_subdirectory( lang ) # i18n tools -set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} ) -set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" ) -if( CALAMARES_VERSION_RC ) - set( CALAMARES_VERSION ${CALAMARES_VERSION}rc${CALAMARES_VERSION_RC} ) -endif() - -# additional info for non-release builds -if( NOT BUILD_RELEASE AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git/" ) - include( CMakeDateStamp ) - set( CALAMARES_VERSION_DATE "${CMAKE_DATESTAMP_YEAR}${CMAKE_DATESTAMP_MONTH}${CMAKE_DATESTAMP_DAY}" ) - if( CALAMARES_VERSION_DATE GREATER 0 ) - set( CALAMARES_VERSION ${CALAMARES_VERSION}.${CALAMARES_VERSION_DATE} ) - endif() - - include( CMakeVersionSource ) - if( CMAKE_VERSION_SOURCE ) - set( CALAMARES_VERSION ${CALAMARES_VERSION}-${CMAKE_VERSION_SOURCE} ) - endif() -endif() - -# enforce using constBegin, constEnd for const-iterators -add_definitions( "-DQT_STRICT_ITERATORS" ) - -# set paths -set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) -set( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) -set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) - -# Better default installation paths: GNUInstallDirs defines -# CMAKE_INSTALL_FULL_SYSCONFDIR to be CMAKE_INSTALL_PREFIX/etc by default -# but we really want /etc -if( NOT DEFINED CMAKE_INSTALL_SYSCONFDIR ) - set( CMAKE_INSTALL_SYSCONFDIR "/etc" ) -endif() - -# make predefined install dirs available everywhere -include( GNUInstallDirs ) - -# make uninstall support -configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY -) - -# Early configure these files as we need them later on -set( CALAMARES_CMAKE_DIR "${CMAKE_SOURCE_DIR}/CMakeModules" ) -set( CALAMARES_LIBRARIES calamares ) - ### Example Distro # @@ -391,6 +342,58 @@ endif() # "http://tldp.org/HOWTO/SquashFS-HOWTO/creatingandusing.html" add_feature_info( ExampleDistro ${mksquashfs_FOUND} "Create example-distro target.") + +### CALAMARES PROPER +# +set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} ) +set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" ) +if( CALAMARES_VERSION_RC ) + set( CALAMARES_VERSION ${CALAMARES_VERSION}rc${CALAMARES_VERSION_RC} ) +endif() + +# additional info for non-release builds +if( NOT BUILD_RELEASE AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git/" ) + include( CMakeDateStamp ) + set( CALAMARES_VERSION_DATE "${CMAKE_DATESTAMP_YEAR}${CMAKE_DATESTAMP_MONTH}${CMAKE_DATESTAMP_DAY}" ) + if( CALAMARES_VERSION_DATE GREATER 0 ) + set( CALAMARES_VERSION ${CALAMARES_VERSION}.${CALAMARES_VERSION_DATE} ) + endif() + + include( CMakeVersionSource ) + if( CMAKE_VERSION_SOURCE ) + set( CALAMARES_VERSION ${CALAMARES_VERSION}-${CMAKE_VERSION_SOURCE} ) + endif() +endif() + +# enforce using constBegin, constEnd for const-iterators +add_definitions( "-DQT_STRICT_ITERATORS" ) + +# set paths +set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) +set( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) +set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) + +# Better default installation paths: GNUInstallDirs defines +# CMAKE_INSTALL_FULL_SYSCONFDIR to be CMAKE_INSTALL_PREFIX/etc by default +# but we really want /etc +if( NOT DEFINED CMAKE_INSTALL_SYSCONFDIR ) + set( CMAKE_INSTALL_SYSCONFDIR "/etc" ) +endif() + +# make predefined install dirs available everywhere +include( GNUInstallDirs ) + +# make uninstall support +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY +) + +# Early configure these files as we need them later on +set( CALAMARES_CMAKE_DIR "${CMAKE_SOURCE_DIR}/CMakeModules" ) +set( CALAMARES_LIBRARIES calamares ) + add_subdirectory( src ) add_feature_info(Python ${WITH_PYTHON} "Python job modules") @@ -398,14 +401,6 @@ add_feature_info(PythonQt ${WITH_PYTHONQT} "Python view modules") add_feature_info(Config ${INSTALL_CONFIG} "Install Calamares configuration") add_feature_info(KCrash ${WITH_KF5Crash} "Crash dumps via KCrash") -feature_summary(WHAT ALL) - -get_directory_property( SKIPPED_MODULES - DIRECTORY src/modules - DEFINITION LIST_SKIPPED_MODULES -) -calamares_explain_skipped_modules( ${SKIPPED_MODULES} ) - # Add all targets to the build-tree export set set( CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/Calamares" CACHE PATH "Installation directory for CMake files" ) set( CMAKE_INSTALL_FULL_CMAKEDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}" ) @@ -490,3 +485,13 @@ configure_file( add_custom_target( uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake ) + +### CMAKE SUMMARY REPORT +# +feature_summary(WHAT ALL) + +get_directory_property( SKIPPED_MODULES + DIRECTORY src/modules + DEFINITION LIST_SKIPPED_MODULES +) +calamares_explain_skipped_modules( ${SKIPPED_MODULES} ) From 52f2161c35d84b921681649d2a1e4f49c8d7a914 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 7 Jun 2018 14:17:43 +0200 Subject: [PATCH 242/385] CMake: make polkit-qt5-1 optional - This is only found in order to know where polkit files should be installed. In distro's that don't use polkit, may as well make it entirely optional. --- CMakeLists.txt | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4d4a24550..c33ad8e6f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,6 +37,7 @@ cmake_minimum_required( VERSION 3.2 ) ### OPTIONS # option( INSTALL_CONFIG "Install configuration files" ON ) +option( INSTALL_POLKIT "Install Polkit configuration" ON ) option( BUILD_TESTING "Build the testing tree." ON ) option( WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON ) option( WITH_PYTHONQT "Enable next generation Python modules API (experimental, requires PythonQt)." ON ) @@ -197,7 +198,18 @@ include( CMakeColors ) # find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Core Gui Widgets LinguistTools Svg Quick QuickWidgets ) find_package( YAMLCPP ${YAMLCPP_VERSION} REQUIRED ) -find_package( PolkitQt5-1 REQUIRED ) +if( INSTALL_POLKIT ) + find_package( PolkitQt5-1 REQUIRED ) +else() + # Find it anyway, for dependencies-reporting + find_package( PolkitQt5-1 ) +endif() +set_package_properties( + PolkitQt5-1 PROPERTIES + DESCRIPTION "Qt5 support for Polkit" + URL "https://cgit.kde.org/polkit-qt-1.git" + PURPOSE "PolkitQt5-1 helps with installing Polkit configuration" +) # Find ECM once, and add it to the module search path; Calamares # modules that need ECM can do @@ -454,12 +466,14 @@ if( INSTALL_CONFIG ) ) endif() -install( - FILES - com.github.calamares.calamares.policy - DESTINATION - "${POLKITQT-1_POLICY_FILES_INSTALL_DIR}" -) +if( INSTALL_POLKIT ) + install( + FILES + com.github.calamares.calamares.policy + DESTINATION + "${POLKITQT-1_POLICY_FILES_INSTALL_DIR}" + ) +endif() install( FILES From 24b0df3c044eb8445d938c989bca365c8f6b21a0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 7 Jun 2018 09:03:54 -0400 Subject: [PATCH 243/385] [locale] Missing includes - Implicitly included in recent Qt, but not in old versions Reported from Neptune Linux --- src/modules/locale/GeoIPTests.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp index 42779ede0..d9c0a5898 100644 --- a/src/modules/locale/GeoIPTests.cpp +++ b/src/modules/locale/GeoIPTests.cpp @@ -23,6 +23,10 @@ #include "GeoIPXML.h" #endif +#include +#include +#include + #include QTEST_GUILESS_MAIN( GeoIPTests ) From 208d58bcd93edfa31e80e8d1a99425573f929de5 Mon Sep 17 00:00:00 2001 From: Caio Date: Thu, 7 Jun 2018 17:22:22 -0300 Subject: [PATCH 244/385] [partition] Including CreateVolumeGroupDialog and fixing some of its GUI issues. --- src/modules/partition/CMakeLists.txt | 1 + src/modules/partition/core/DeviceModel.cpp | 16 ++ src/modules/partition/core/DeviceModel.h | 2 + .../partition/core/PartitionCoreModule.cpp | 37 ++++- .../partition/core/PartitionCoreModule.h | 9 +- .../partition/gui/CreateVolumeGroupDialog.cpp | 53 +++++++ .../partition/gui/CreateVolumeGroupDialog.h | 39 +++++ src/modules/partition/gui/PartitionPage.cpp | 47 +++++- .../partition/gui/VolumeGroupBaseDialog.cpp | 148 +++++++++++++++++- .../partition/gui/VolumeGroupBaseDialog.h | 47 +++++- .../partition/gui/VolumeGroupBaseDialog.ui | 41 +++-- .../partition/jobs/CreateVolumeGroupJob.cpp | 4 - 12 files changed, 408 insertions(+), 36 deletions(-) create mode 100644 src/modules/partition/gui/CreateVolumeGroupDialog.cpp create mode 100644 src/modules/partition/gui/CreateVolumeGroupDialog.h diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index 2f0e46bea..279eaf0ef 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -35,6 +35,7 @@ if ( KPMcore_FOUND ) gui/BootInfoWidget.cpp gui/ChoicePage.cpp gui/CreatePartitionDialog.cpp + gui/CreateVolumeGroupDialog.cpp gui/DeviceInfoWidget.cpp gui/EditExistingPartitionDialog.cpp gui/EncryptWidget.cpp diff --git a/src/modules/partition/core/DeviceModel.cpp b/src/modules/partition/core/DeviceModel.cpp index 00058bac4..95d7ddb72 100644 --- a/src/modules/partition/core/DeviceModel.cpp +++ b/src/modules/partition/core/DeviceModel.cpp @@ -25,10 +25,12 @@ // KPMcore #include +#include // KF5 #include +#include #include // STL @@ -116,3 +118,17 @@ DeviceModel::swapDevice( Device* oldDevice, Device* newDevice ) emit dataChanged( index( indexOfOldDevice ), index( indexOfOldDevice ) ); } + +void +DeviceModel::addDevice( Device *device ) +{ + beginResetModel(); + + m_devices << device; + std::sort( m_devices.begin(), m_devices.end(), []( const Device* dev1, const Device* dev2 ) + { + return dev1->deviceNode() < dev2->deviceNode(); + } ); + + endResetModel(); +} diff --git a/src/modules/partition/core/DeviceModel.h b/src/modules/partition/core/DeviceModel.h index ccca426bd..84f1c3c9d 100644 --- a/src/modules/partition/core/DeviceModel.h +++ b/src/modules/partition/core/DeviceModel.h @@ -49,6 +49,8 @@ public: void swapDevice( Device* oldDevice, Device* newDevice ); + void addDevice( Device* device ); + private: QList< Device* > m_devices; }; diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index 7229c8305..710f85378 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -273,6 +273,10 @@ PartitionCoreModule::createVolumeGroup( QString &vgName, QVector< const Partition* > pvList, qint32 peSize ) { + // Appending '_' character in case of repeated VG name + while ( hasVGwithThisName( vgName ) ) + vgName.append('_'); + CreateVolumeGroupJob* job = new CreateVolumeGroupJob( vgName, pvList, peSize ); job->updatePreview(); @@ -283,6 +287,10 @@ PartitionCoreModule::createVolumeGroup( QString &vgName, DeviceInfo* deviceInfo = new DeviceInfo( device ); + deviceInfo->partitionModel->init( device, osproberEntries() ); + + m_deviceModel->addDevice( device ); + m_deviceInfos << deviceInfo; deviceInfo->jobs << Calamares::job_ptr( job ); @@ -458,12 +466,37 @@ PartitionCoreModule::efiSystemPartitions() const return m_efiSystemPartitions; } -QList< const Partition* > +QVector< const Partition* > PartitionCoreModule::lvmPVs() const { return m_lvmPVs; } +bool +PartitionCoreModule::hasVGwithThisName( const QString& name ) const +{ + for ( DeviceInfo* d : m_deviceInfos ) + if ( dynamic_cast(d->device.data()) && + d->device.data()->name() == name) + return true; + + return false; +} + +bool +PartitionCoreModule::isInVG( const Partition *partition ) const +{ + for ( DeviceInfo* d : m_deviceInfos ) + { + LvmDevice* vg = dynamic_cast( d->device.data() ); + + if ( vg && vg->physicalVolumes().contains( partition )) + return true; + } + + return false; +} + void PartitionCoreModule::dumpQueue() const { @@ -503,6 +536,8 @@ PartitionCoreModule::refresh() updateIsDirty(); m_bootLoaderModel->update(); + scanForLVMPVs(); + //FIXME: this should be removed in favor of // proper KPM support for EFI if ( PartUtils::isEfiSystem() ) diff --git a/src/modules/partition/core/PartitionCoreModule.h b/src/modules/partition/core/PartitionCoreModule.h index 05c029381..cedda391d 100644 --- a/src/modules/partition/core/PartitionCoreModule.h +++ b/src/modules/partition/core/PartitionCoreModule.h @@ -24,6 +24,7 @@ #include "Typedefs.h" // KPMcore +#include #include // Qt @@ -134,7 +135,11 @@ public: QList< Partition* > efiSystemPartitions() const; - QList< const Partition* > lvmPVs() const; + QVector< const Partition* > lvmPVs() const; + + bool hasVGwithThisName( const QString& name ) const; + + bool isInVG( const Partition* partition ) const; /** * @brief findPartitionByMountPoint returns a Partition* for a given mount point. @@ -198,7 +203,7 @@ private: }; QList< DeviceInfo* > m_deviceInfos; QList< Partition* > m_efiSystemPartitions; - QList< const Partition* > m_lvmPVs; + QVector< const Partition* > m_lvmPVs; DeviceModel* m_deviceModel; BootLoaderModel* m_bootLoaderModel; diff --git a/src/modules/partition/gui/CreateVolumeGroupDialog.cpp b/src/modules/partition/gui/CreateVolumeGroupDialog.cpp new file mode 100644 index 000000000..f1ed32551 --- /dev/null +++ b/src/modules/partition/gui/CreateVolumeGroupDialog.cpp @@ -0,0 +1,53 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "CreateVolumeGroupDialog.h" + +#include +#include + +#include +#include +#include + +CreateVolumeGroupDialog::CreateVolumeGroupDialog( QString& vgName, + QVector< const Partition* >& selectedPVs, + QVector< const Partition* > pvList, + qint32& peSize, + QWidget* parent ) + : VolumeGroupBaseDialog( vgName, pvList, peSize, parent ) + , m_selectedPVs( selectedPVs ) +{ + setWindowTitle( "Create Volume Group" ); + + vgType()->setEnabled( false ); +} + +void +CreateVolumeGroupDialog::accept() +{ + QString& name = vgNameValue(); + name = vgName()->text(); + + m_selectedPVs << checkedItems(); + + qint32& pe = peSizeValue(); + pe = peSize()->value(); + + QDialog::accept(); +} diff --git a/src/modules/partition/gui/CreateVolumeGroupDialog.h b/src/modules/partition/gui/CreateVolumeGroupDialog.h new file mode 100644 index 000000000..eb2ced137 --- /dev/null +++ b/src/modules/partition/gui/CreateVolumeGroupDialog.h @@ -0,0 +1,39 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef CREATEVOLUMEGROUPDIALOG_H +#define CREATEVOLUMEGROUPDIALOG_H + +#include "gui/VolumeGroupBaseDialog.h" + +class CreateVolumeGroupDialog : public VolumeGroupBaseDialog +{ +public: + CreateVolumeGroupDialog( QString& vgName, + QVector< const Partition* >& selectedPVs, + QVector< const Partition* > pvList, + qint32& peSize, + QWidget* parent ); + + void accept() override; + +private: + QVector< const Partition* >& m_selectedPVs; +}; + +#endif // CREATEVOLUMEGROUPDIALOG_H diff --git a/src/modules/partition/gui/PartitionPage.cpp b/src/modules/partition/gui/PartitionPage.cpp index adebb3418..503a4e2ea 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -28,9 +28,9 @@ #include "core/PartUtils.h" #include "core/KPMHelpers.h" #include "gui/CreatePartitionDialog.h" +#include "gui/CreateVolumeGroupDialog.h" #include "gui/EditExistingPartitionDialog.h" #include "gui/ScanningDialog.h" -#include "gui/VolumeGroupBaseDialog.h" #include "ui_PartitionPage.h" #include "ui_CreatePartitionTableDialog.h" @@ -133,6 +133,8 @@ PartitionPage::updateButtons() bool isFree = KPMHelpers::isPartitionFreeSpace( partition ); bool isExtended = partition->roles().has( PartitionRole::Extended ); + bool isInVG = m_core->isInVG( partition ); + create = isFree; // Keep it simple for now: do not support editing extended partitions as // it does not work with our current edit implementation which is @@ -140,8 +142,9 @@ PartitionPage::updateButtons() // because they need to be created *before* creating logical partitions // inside them, so an edit must be applied without altering the job // order. + // TODO: See if LVM PVs can be edited in Calamares edit = !isFree && !isExtended; - del = !isFree; + del = !isFree && !isInVG; } if ( m_ui->deviceComboBox->currentIndex() >= 0 ) @@ -184,13 +187,51 @@ void PartitionPage::onNewVolumeGroupClicked() { QString vgName; + QVector< const Partition* > selectedPVs; qint32 peSize = 4; - QPointer< VolumeGroupBaseDialog > dlg = new VolumeGroupBaseDialog( vgName, m_core->lvmPVs(), peSize, this ); + QVector< const Partition* > availablePVs; + + for ( const Partition* p : m_core->lvmPVs() ) + if ( !m_core->isInVG( p ) ) + availablePVs << p; + + QPointer< CreateVolumeGroupDialog > dlg = new CreateVolumeGroupDialog( vgName, + selectedPVs, + availablePVs, + peSize, + this ); if ( dlg->exec() == QDialog::Accepted ) { + QModelIndex partitionIndex = m_ui->partitionTreeView->currentIndex(); + + if ( partitionIndex.isValid() ) + { + const PartitionModel* model = static_cast< const PartitionModel* >( partitionIndex.model() ); + Q_ASSERT( model ); + Partition* partition = model->partitionForIndex( partitionIndex ); + Q_ASSERT( partition ); + + // Disable delete button if current partition was selected to be in VG + // TODO: Should Calamares edit LVM PVs which are in VGs? + if ( selectedPVs.contains( partition ) ) + m_ui->deleteButton->setEnabled( false ); + } + + QModelIndex deviceIndex = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 ); + Q_ASSERT( deviceIndex.isValid() ); + + QVariant previousDeviceData = m_core->deviceModel()->data( deviceIndex, Qt::ToolTipRole ); + + m_core->createVolumeGroup( vgName, selectedPVs, peSize ); + + // As createVolumeGroup method call resets deviceModel, + // is needed to set the current index in deviceComboBox as the previous one + int previousIndex = m_ui->deviceComboBox->findData( previousDeviceData, Qt::ToolTipRole ); + if ( previousIndex != -1 ) + m_ui->deviceComboBox->setCurrentIndex( previousIndex ); } delete dlg; diff --git a/src/modules/partition/gui/VolumeGroupBaseDialog.cpp b/src/modules/partition/gui/VolumeGroupBaseDialog.cpp index b3535a004..e5da2c0ad 100644 --- a/src/modules/partition/gui/VolumeGroupBaseDialog.cpp +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.cpp @@ -21,22 +21,160 @@ #include "gui/ListPhysicalVolumeWidgetItem.h" +#include + +#include +#include +#include +#include +#include +#include + VolumeGroupBaseDialog::VolumeGroupBaseDialog( QString& vgName, - QList< const Partition* > pvList, + QVector< const Partition* > pvList, qint32& peSize, - QWidget *parent) + QWidget *parent ) : QDialog(parent) , ui(new Ui::VolumeGroupBaseDialog) - , m_vgName(vgName) - , m_peSize(peSize) + , m_vgNameValue(vgName) + , m_peSizeValue(peSize) + , m_totalSizeValue(0) + , m_usedSizeValue(0) { ui->setupUi(this); for ( const Partition* p : pvList ) - ui->pvList->addItem( new ListPhysicalVolumeWidgetItem(p, false) ); + ui->pvList->addItem( new ListPhysicalVolumeWidgetItem( p, false ) ); + + ui->vgType->addItems( QStringList() << "LVM" << "RAID" ); + ui->vgType->setCurrentIndex(0); + + QRegularExpression re(R"(^(?!_|\.)[\w\-.+]+)"); + ui->vgName->setValidator( new QRegularExpressionValidator( re, this ) ); + ui->vgName->setText( m_vgNameValue ); + + ui->peSize->setValue( m_peSizeValue ); + + updateOkButton(); + updateTotalSize(); + + connect( ui->pvList, &QListWidget::itemChanged, this, + [&](QListWidgetItem*) { + updateTotalSize(); + updateOkButton(); + } ); + + connect( ui->peSize, qOverload(&QSpinBox::valueChanged), this, + [&](int) { + updateTotalSectors(); + updateOkButton(); + }); + + connect( ui->vgName, &QLineEdit::textChanged, this, + [&](const QString&) { + updateOkButton(); + }); } VolumeGroupBaseDialog::~VolumeGroupBaseDialog() { delete ui; } + +QVector< const Partition* > +VolumeGroupBaseDialog::checkedItems() const +{ + QVector< const Partition* > items; + + for ( int i = 0; i < ui->pvList->count(); i++) { + ListPhysicalVolumeWidgetItem* item = dynamic_cast< ListPhysicalVolumeWidgetItem* >( ui->pvList->item(i) ); + + if ( item && item->checkState() == Qt::Checked ) + items << item->partition(); + } + + return items; +} + +bool +VolumeGroupBaseDialog::isSizeValid() const +{ + return m_totalSizeValue >= m_usedSizeValue; +} + +void +VolumeGroupBaseDialog::updateOkButton() +{ + okButton()->setEnabled(isSizeValid() && + !checkedItems().empty() && + !ui->vgName->text().isEmpty() && + ui->peSize->value() > 0); +} + +void +VolumeGroupBaseDialog::updateTotalSize() +{ + m_totalSizeValue = 0; + + for ( const Partition *p : checkedItems()) + m_totalSizeValue += p->capacity() - p->capacity() % (ui->peSize->value() * Capacity::unitFactor(Capacity::Unit::Byte, Capacity::Unit::MiB)); + + ui->totalSize->setText(Capacity::formatByteSize(m_totalSizeValue)); + + updateTotalSectors(); +} + +void +VolumeGroupBaseDialog::updateTotalSectors() +{ + qint32 totalSectors = 0; + + qint32 extentSize = ui->peSize->value() * Capacity::unitFactor(Capacity::Unit::Byte, Capacity::Unit::MiB); + + if ( extentSize > 0 ) + totalSectors = m_totalSizeValue / extentSize; + + ui->totalSectors->setText( QString::number( totalSectors ) ); +} + +QString& +VolumeGroupBaseDialog::vgNameValue() const +{ + return m_vgNameValue; +} + +qint32& +VolumeGroupBaseDialog::peSizeValue() const +{ + return m_peSizeValue; +} + +QLineEdit* +VolumeGroupBaseDialog::vgName() const +{ + return ui->vgName; +} + +QComboBox* +VolumeGroupBaseDialog::vgType() const +{ + return ui->vgType; +} + +QSpinBox* +VolumeGroupBaseDialog::peSize() const +{ + return ui->peSize; +} + +QListWidget* +VolumeGroupBaseDialog::pvList() const +{ + return ui->pvList; +} + +QPushButton* +VolumeGroupBaseDialog::okButton() const +{ + return ui->buttonBox->button( QDialogButtonBox::StandardButton::Ok ); +} diff --git a/src/modules/partition/gui/VolumeGroupBaseDialog.h b/src/modules/partition/gui/VolumeGroupBaseDialog.h index 294effb1d..0b4a48372 100644 --- a/src/modules/partition/gui/VolumeGroupBaseDialog.h +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.h @@ -27,22 +27,55 @@ namespace Ui { class VolumeGroupBaseDialog; } +class QComboBox; +class QLineEdit; +class QListWidget; +class QSpinBox; + class VolumeGroupBaseDialog : public QDialog { Q_OBJECT public: - explicit VolumeGroupBaseDialog(QString& vgName, - QList< const Partition* > pvList, - qint32& peSize, - QWidget* parent = 0); + explicit VolumeGroupBaseDialog( QString& vgName, + QVector< const Partition* > pvList, + qint32& peSize, + QWidget* parent = nullptr ); ~VolumeGroupBaseDialog(); +protected: + virtual void updateOkButton(); + + void updateTotalSize(); + + void updateTotalSectors(); + + QVector< const Partition* > checkedItems() const; + + bool isSizeValid() const; + + QString& vgNameValue() const; + + qint32& peSizeValue() const; + + QLineEdit* vgName() const; + + QComboBox* vgType() const; + + QSpinBox* peSize() const; + + QListWidget* pvList() const; + + QPushButton* okButton() const; + private: - Ui::VolumeGroupBaseDialog *ui; + Ui::VolumeGroupBaseDialog* ui; + + QString& m_vgNameValue; + qint32& m_peSizeValue; - QString &m_vgName; - qint32 &m_peSize; + qint64 m_totalSizeValue; + qint64 m_usedSizeValue; }; #endif // VOLUMEGROUPBASEDIALOG_H diff --git a/src/modules/partition/gui/VolumeGroupBaseDialog.ui b/src/modules/partition/gui/VolumeGroupBaseDialog.ui index c9cb853b8..b45d204e2 100644 --- a/src/modules/partition/gui/VolumeGroupBaseDialog.ui +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.ui @@ -25,7 +25,7 @@ - + Volume Group Name: @@ -35,10 +35,10 @@ - + - + Volume Group Type: @@ -48,10 +48,10 @@ - + - + Physical Extent Size: @@ -61,10 +61,23 @@ - + + + MiB + + + 1 + + + 999 + + + 4 + + - + Total Size: @@ -74,7 +87,7 @@ - + --- @@ -84,7 +97,7 @@ - + Used Size: @@ -94,7 +107,7 @@ - + --- @@ -104,7 +117,7 @@ - + Total Sectors: @@ -114,7 +127,7 @@ - + --- @@ -124,7 +137,7 @@ - + Quantity of LVs: @@ -134,7 +147,7 @@ - + --- diff --git a/src/modules/partition/jobs/CreateVolumeGroupJob.cpp b/src/modules/partition/jobs/CreateVolumeGroupJob.cpp index 3b05b684a..7debd9475 100644 --- a/src/modules/partition/jobs/CreateVolumeGroupJob.cpp +++ b/src/modules/partition/jobs/CreateVolumeGroupJob.cpp @@ -58,10 +58,6 @@ CreateVolumeGroupJob::exec() { Report report( nullptr ); - QVector< const Partition* > pvList; - - pvList << m_pvList; - CreateVolumeGroupOperation op( m_vgName, m_pvList, m_peSize ); op.setStatus( Operation::StatusRunning ); From e5351cdf3c0d3d548ed4f82456acb942fe960eef Mon Sep 17 00:00:00 2001 From: Caio Date: Thu, 7 Jun 2018 17:49:25 -0300 Subject: [PATCH 245/385] [partition] Don't show capacity of new LVM VGs in DeviceModel. --- src/modules/partition/core/DeviceModel.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/modules/partition/core/DeviceModel.cpp b/src/modules/partition/core/DeviceModel.cpp index 95d7ddb72..fe4f71b4f 100644 --- a/src/modules/partition/core/DeviceModel.cpp +++ b/src/modules/partition/core/DeviceModel.cpp @@ -79,10 +79,18 @@ DeviceModel::data( const QModelIndex& index, int role ) const if ( device->name().isEmpty() ) return device->deviceNode(); else - return tr( "%1 - %2 (%3)" ) - .arg( device->name() ) - .arg( KFormat().formatByteSize( device->capacity() ) ) - .arg( device->deviceNode() ); + { + if ( device->capacity() != 1 ) + return tr( "%1 - %2 (%3)" ) + .arg( device->name() ) + .arg( KFormat().formatByteSize( device->capacity() ) ) + .arg( device->deviceNode() ); + // Newly LVM VGs don't have capacity property yet (i.e. always has 1B capacity), so don't show it for a while + else + return tr( "%1 - (%2)" ) + .arg( device->name() ) + .arg( device->deviceNode() ); + } case Qt::DecorationRole: return CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionDisk, CalamaresUtils::Original, From a626e52bf32cba3900a209e190d02992491e6ccd Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 8 Jun 2018 17:36:29 -0400 Subject: [PATCH 246/385] [libcalamares] Introduce more descriptive type name --- src/libcalamares/Settings.cpp | 2 +- src/libcalamares/Settings.h | 6 ++++-- src/libcalamaresui/modulesystem/ModuleManager.cpp | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/libcalamares/Settings.cpp b/src/libcalamares/Settings.cpp index 732afa8d8..087822623 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -175,7 +175,7 @@ Settings::modulesSearchPaths() const } -QList > +Settings::InstanceDescriptionList Settings::customModuleInstances() const { return m_customModuleInstances; diff --git a/src/libcalamares/Settings.h b/src/libcalamares/Settings.h index 42720b986..35527243a 100644 --- a/src/libcalamares/Settings.h +++ b/src/libcalamares/Settings.h @@ -43,7 +43,9 @@ public: QStringList modulesSearchPaths() const; - QList< QMap< QString, QString > > customModuleInstances() const; + using InstanceDescription = QMap< QString, QString >; + using InstanceDescriptionList = QList< InstanceDescription >; + InstanceDescriptionList customModuleInstances() const; QList< QPair< ModuleAction, QStringList > > modulesSequence() const; @@ -60,7 +62,7 @@ private: QStringList m_modulesSearchPaths; - QList< QMap< QString, QString > > m_customModuleInstances; + InstanceDescriptionList m_customModuleInstances; QList< QPair< ModuleAction, QStringList > > m_modulesSequence; QString m_brandingComponentName; diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 83273e924..df77c5602 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -159,7 +159,7 @@ ModuleManager::loadModules() { QTimer::singleShot( 0, this, [ this ]() { - QList< QMap< QString, QString > > customInstances = + Settings::InstanceDescriptionList customInstances = Settings::instance()->customModuleInstances(); const auto modulesSequence = Settings::instance()->modulesSequence(); From f8897e0e0b7800dbac9f5d95fd7a05debf697702 Mon Sep 17 00:00:00 2001 From: Caio Date: Fri, 8 Jun 2018 18:52:53 -0300 Subject: [PATCH 247/385] [partition] Including new LVM PVs in LVM VG creation GUI. --- src/modules/partition/core/DeviceModel.cpp | 3 +-- .../partition/core/PartitionCoreModule.cpp | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/modules/partition/core/DeviceModel.cpp b/src/modules/partition/core/DeviceModel.cpp index fe4f71b4f..ba0df2c18 100644 --- a/src/modules/partition/core/DeviceModel.cpp +++ b/src/modules/partition/core/DeviceModel.cpp @@ -25,7 +25,6 @@ // KPMcore #include -#include // KF5 #include @@ -80,7 +79,7 @@ DeviceModel::data( const QModelIndex& index, int role ) const return device->deviceNode(); else { - if ( device->capacity() != 1 ) + if ( device->logicalSize() >= 0 && device->totalLogical() >= 0 ) return tr( "%1 - %2 (%3)" ) .arg( device->name() ) .arg( KFormat().formatByteSize( device->capacity() ) ) diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index 710f85378..d6be78844 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #include // Qt @@ -604,6 +605,30 @@ PartitionCoreModule::scanForLVMPVs() for ( auto p : LVM::pvList ) m_lvmPVs << p.partition().data(); + + for ( DeviceInfo* d : m_deviceInfos ) + { + for ( auto job : d->jobs ) + { + // Including new LVM PVs + CreatePartitionJob* partJob = dynamic_cast( job.data() ); + if ( partJob ) + { + Partition* p = partJob->partition(); + + if ( p->fileSystem().type() == FileSystem::Type::Lvm2_PV ) + m_lvmPVs << p; + else if ( p->fileSystem().type() == FileSystem::Type::Luks || p->fileSystem().type() == FileSystem::Type::Luks2 ) + { + // Encrypted LVM PVs + FileSystem* innerFS = static_cast(&p->fileSystem())->innerFS(); + + if ( innerFS && innerFS->type() == FileSystem::Type::Lvm2_PV ) + m_lvmPVs << p; + } + } + } + } } PartitionCoreModule::DeviceInfo* From dccf6f16f5cec7d7ed94c4ffa028687c58cbfea5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 8 Jun 2018 17:56:23 -0400 Subject: [PATCH 248/385] [libcalamaresui] Lambdas are fun, but not always the solution --- .../modulesystem/ModuleManager.cpp | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index df77c5602..317ca884f 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -154,6 +154,26 @@ ModuleManager::moduleInstance( const QString& instanceKey ) } +/** + * @brief Search a list of instance descriptions for one matching @p module and @p id + * + * @return -1 on failure, otherwise index of the instance that matches. + */ +static int findCustomInstance( const Settings::InstanceDescriptionList& customInstances, + const QString& module, + const QString& id ) +{ + for ( int i = 0; i < customInstances.count(); ++i ) + { + const auto& thisInstance = customInstances[ i ]; + if ( thisInstance.value( "module" ) == module && + thisInstance.value( "id" ) == id ) + return i; + } + return -1; +} + + void ModuleManager::loadModules() { @@ -196,25 +216,11 @@ ModuleManager::loadModules() return; } - auto findCustomInstance = - [ customInstances ]( const QString& module, - const QString& id) -> int - { - for ( int i = 0; i < customInstances.count(); ++i ) - { - auto thisInstance = customInstances[ i ]; - if ( thisInstance.value( "module" ) == module && - thisInstance.value( "id" ) == id ) - return i; - } - return -1; - }; - if ( moduleName != instanceId ) //means this is a custom instance { - if ( findCustomInstance( moduleName, instanceId ) > -1 ) + if ( int found = findCustomInstance( customInstances, moduleName, instanceId ) > -1 ) { - configFileName = customInstances[ findCustomInstance( moduleName, instanceId ) ].value( "config" ); + configFileName = customInstances[ found ].value( "config" ); } else //ought to be a custom instance, but cannot find instance entry { From 1999e4e5c2839628a88ce4816b711af18e171a8c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 8 Jun 2018 18:14:51 -0400 Subject: [PATCH 249/385] [libcalamaresui] Error out consistently when module loading fails - Some module-loading failures were ignored and produce only a warning, instead of erroring out. --- .../modulesystem/ModuleManager.cpp | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 317ca884f..48a2c1476 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -177,6 +177,8 @@ static int findCustomInstance( const Settings::InstanceDescriptionList& customIn void ModuleManager::loadModules() { + static const char GOODBYE[] = "\nCalamares will now quit."; + QTimer::singleShot( 0, this, [ this ]() { Settings::InstanceDescriptionList customInstances = @@ -197,8 +199,8 @@ ModuleManager::loadModules() if ( moduleEntrySplit.length() < 1 || moduleEntrySplit.length() > 2 ) { - cError() << "Wrong module entry format for module" << moduleEntry << '.'; - cError() << "Calamares will now quit."; + cError() << "Wrong module entry format for module" << moduleEntry << '.' + << GOODBYE; qApp->exit( 1 ); return; } @@ -210,8 +212,8 @@ ModuleManager::loadModules() m_availableDescriptorsByModuleName.value( moduleName ).isEmpty() ) { cError() << "Module" << moduleName << "not found in module search paths." - << Logger::DebugList( m_paths ); - cError() << "Calamares will now quit."; + << Logger::DebugList( m_paths ) + << GOODBYE; qApp->exit( 1 ); return; } @@ -224,8 +226,8 @@ ModuleManager::loadModules() } else //ought to be a custom instance, but cannot find instance entry { - cError() << "Custom instance" << moduleEntry << "not found in custom instances section."; - cError() << "Calamares will now quit."; + cError() << "Custom instance" << moduleEntry << "not found in custom instances section." + << GOODBYE; qApp->exit( 1 ); return; } @@ -248,7 +250,7 @@ ModuleManager::loadModules() if ( thisModule && !thisModule->isLoaded() ) { cError() << "Module" << instanceKey << "exists but not loaded." - << "\nCalamares will now quit."; + << GOODBYE; qApp->exit( 1 ); return; } @@ -266,18 +268,18 @@ ModuleManager::loadModules() m_moduleDirectoriesByModuleName.value( moduleName ) ); if ( !thisModule ) { - cWarning() << "Module" << instanceKey << "cannot be created from descriptor."; - Q_ASSERT( thisModule ); - continue; + cError() << "Module" << instanceKey << "cannot be created from descriptor" << configFileName + << GOODBYE; + qApp->exit( 1 ); } // If it's a ViewModule, it also appends the ViewStep to the ViewManager. thisModule->loadSelf(); m_loadedModulesByInstanceKey.insert( instanceKey, thisModule ); if ( !thisModule->isLoaded() ) { - cWarning() << "Module" << moduleName << "loading FAILED"; - Q_ASSERT( thisModule->isLoaded() ); - continue; + cError() << "Module" << instanceKey << "loading FAILED" + << GOODBYE; + qApp->exit( 1 ); } } From 0465cc4214cf6fc47c15c003067cb731eb1d021e Mon Sep 17 00:00:00 2001 From: Caio Date: Fri, 8 Jun 2018 20:20:05 -0300 Subject: [PATCH 250/385] [partition] Including revert on creation of LVM VGs. --- src/modules/partition/core/DeviceModel.cpp | 14 +++++++++ src/modules/partition/core/DeviceModel.h | 2 ++ .../partition/core/PartitionCoreModule.cpp | 30 +++++++++++++++++-- src/modules/partition/gui/PartitionPage.cpp | 11 +++---- 4 files changed, 50 insertions(+), 7 deletions(-) diff --git a/src/modules/partition/core/DeviceModel.cpp b/src/modules/partition/core/DeviceModel.cpp index ba0df2c18..260315729 100644 --- a/src/modules/partition/core/DeviceModel.cpp +++ b/src/modules/partition/core/DeviceModel.cpp @@ -139,3 +139,17 @@ DeviceModel::addDevice( Device *device ) endResetModel(); } + +void +DeviceModel::removeDevice( Device *device ) +{ + beginResetModel(); + + m_devices.removeAll( device ); + std::sort( m_devices.begin(), m_devices.end(), []( const Device* dev1, const Device* dev2 ) + { + return dev1->deviceNode() < dev2->deviceNode(); + } ); + + endResetModel(); +} diff --git a/src/modules/partition/core/DeviceModel.h b/src/modules/partition/core/DeviceModel.h index 84f1c3c9d..2e2f99342 100644 --- a/src/modules/partition/core/DeviceModel.h +++ b/src/modules/partition/core/DeviceModel.h @@ -51,6 +51,8 @@ public: void addDevice( Device* device ); + void removeDevice( Device* device ); + private: QList< Device* > m_devices; }; diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index d6be78844..fc7ce9753 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -680,8 +680,33 @@ PartitionCoreModule::revert() void PartitionCoreModule::revertAllDevices() { - foreach ( DeviceInfo* devInfo, m_deviceInfos ) - revertDevice( devInfo->device.data() ); + for ( auto it = m_deviceInfos.begin(); it != m_deviceInfos.end(); ) + { + // In new VGs device info, there will be always a CreateVolumeGroupJob as the first job in jobs list + if ( !( *it )->jobs.empty() ) + { + CreateVolumeGroupJob* vgJob = dynamic_cast( ( *it )->jobs[0].data() ); + + if ( vgJob ) + { + vgJob->undoPreview(); + + ( *it )->forgetChanges(); + + m_deviceModel->removeDevice( ( *it )->device.data() ); + + it = m_deviceInfos.erase( it ); + + scanForLVMPVs(); + } + } + else + { + revertDevice( ( *it )->device.data() ); + ++it; + } + } + refresh(); } @@ -691,6 +716,7 @@ PartitionCoreModule::revertDevice( Device* dev ) { QMutexLocker locker( &m_revertMutex ); DeviceInfo* devInfo = infoForDevice( dev ); + if ( !devInfo ) return; devInfo->forgetChanges(); diff --git a/src/modules/partition/gui/PartitionPage.cpp b/src/modules/partition/gui/PartitionPage.cpp index 503a4e2ea..550e356c0 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -222,16 +222,17 @@ PartitionPage::onNewVolumeGroupClicked() QModelIndex deviceIndex = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 ); Q_ASSERT( deviceIndex.isValid() ); - QVariant previousDeviceData = m_core->deviceModel()->data( deviceIndex, Qt::ToolTipRole ); + QVariant previousIndexDeviceData = m_core->deviceModel()->data( deviceIndex, Qt::ToolTipRole ); + // Creating new VG m_core->createVolumeGroup( vgName, selectedPVs, peSize ); // As createVolumeGroup method call resets deviceModel, // is needed to set the current index in deviceComboBox as the previous one - int previousIndex = m_ui->deviceComboBox->findData( previousDeviceData, Qt::ToolTipRole ); + int previousIndex = m_ui->deviceComboBox->findData( previousIndexDeviceData, Qt::ToolTipRole ); - if ( previousIndex != -1 ) - m_ui->deviceComboBox->setCurrentIndex( previousIndex ); + m_ui->deviceComboBox->setCurrentIndex( ( previousIndex < 0 ) ? 0 : previousIndex ); + updateFromCurrentDevice(); } delete dlg; @@ -301,7 +302,7 @@ PartitionPage::onRevertClicked() int oldIndex = m_ui->deviceComboBox->currentIndex(); m_core->revertAllDevices(); - m_ui->deviceComboBox->setCurrentIndex( oldIndex ); + m_ui->deviceComboBox->setCurrentIndex( ( oldIndex < 0 ) ? 0 : oldIndex ); updateFromCurrentDevice(); } ), [ this ]{ From a40c36ef493b6a5596515d9d288cc4c91e270834 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 11 Jun 2018 05:59:56 -0400 Subject: [PATCH 251/385] [libcalamaresui] Report on failed module loading - Collect the failed modules, instead of bailing out on the first one (this also prevents crashes caused by quit() called from a timer). - Introduce a slot to report on failed module loading (no UI yet). --- src/calamares/CalamaresApplication.cpp | 8 ++++++ src/calamares/CalamaresApplication.h | 1 + .../modulesystem/ModuleManager.cpp | 28 +++++++++++-------- .../modulesystem/ModuleManager.h | 3 +- 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index 2bb0af8df..2f61749b0 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -335,6 +335,8 @@ CalamaresApplication::initView() connect( m_moduleManager, &Calamares::ModuleManager::modulesLoaded, this, &CalamaresApplication::initViewSteps ); + connect( m_moduleManager, &Calamares::ModuleManager::modulesFailed, + this, &CalamaresApplication::initFailed ); m_moduleManager->loadModules(); @@ -356,6 +358,12 @@ CalamaresApplication::initViewSteps() cDebug() << "STARTUP: Window now visible and ProgressTreeView populated"; } +void +CalamaresApplication::initFailed(const QStringList& l) +{ + cError() << "STARTUP: failed modules are" << l; + m_mainwindow->show(); +} void CalamaresApplication::initJobQueue() diff --git a/src/calamares/CalamaresApplication.h b/src/calamares/CalamaresApplication.h index 3cfd4f79f..a588afcee 100644 --- a/src/calamares/CalamaresApplication.h +++ b/src/calamares/CalamaresApplication.h @@ -70,6 +70,7 @@ public: private slots: void initView(); void initViewSteps(); + void initFailed( const QStringList& l ); private: void initQmlPath(); diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 48a2c1476..57a82994f 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -181,6 +181,7 @@ ModuleManager::loadModules() QTimer::singleShot( 0, this, [ this ]() { + QStringList failedModules; Settings::InstanceDescriptionList customInstances = Settings::instance()->customModuleInstances(); @@ -201,8 +202,8 @@ ModuleManager::loadModules() { cError() << "Wrong module entry format for module" << moduleEntry << '.' << GOODBYE; - qApp->exit( 1 ); - return; + failedModules.append( moduleEntry ); + continue; } moduleName = moduleEntrySplit.first(); instanceId = moduleEntrySplit.last(); @@ -214,8 +215,8 @@ ModuleManager::loadModules() cError() << "Module" << moduleName << "not found in module search paths." << Logger::DebugList( m_paths ) << GOODBYE; - qApp->exit( 1 ); - return; + failedModules.append( moduleName ); + continue; } if ( moduleName != instanceId ) //means this is a custom instance @@ -228,8 +229,8 @@ ModuleManager::loadModules() { cError() << "Custom instance" << moduleEntry << "not found in custom instances section." << GOODBYE; - qApp->exit( 1 ); - return; + failedModules.append( moduleEntry ); + continue; } } @@ -251,8 +252,8 @@ ModuleManager::loadModules() { cError() << "Module" << instanceKey << "exists but not loaded." << GOODBYE; - qApp->exit( 1 ); - return; + failedModules.append( instanceKey ); + continue; } if ( thisModule && thisModule->isLoaded() ) @@ -270,7 +271,8 @@ ModuleManager::loadModules() { cError() << "Module" << instanceKey << "cannot be created from descriptor" << configFileName << GOODBYE; - qApp->exit( 1 ); + failedModules.append( instanceKey ); + continue; } // If it's a ViewModule, it also appends the ViewStep to the ViewManager. thisModule->loadSelf(); @@ -279,7 +281,8 @@ ModuleManager::loadModules() { cError() << "Module" << instanceKey << "loading FAILED" << GOODBYE; - qApp->exit( 1 ); + failedModules.append( instanceKey ); + continue; } } @@ -300,7 +303,10 @@ ModuleManager::loadModules() } } } - emit modulesLoaded(); + if ( !failedModules.isEmpty() ) + emit modulesFailed( failedModules ); + else + emit modulesLoaded(); } ); } diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index ed7700c40..e1763d93c 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -82,7 +82,8 @@ public: signals: void initDone(); - void modulesLoaded(); + void modulesLoaded(); /// All of the modules were loaded successfully + void modulesFailed( QStringList ); /// .. or not private slots: void doInit(); From 49622a6a3079172b8ba86f9be0e4f3f6d4819ba2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 11 Jun 2018 06:28:31 -0400 Subject: [PATCH 252/385] Tests: expand test-application test_conf - Add -v (verbose) and -b (load via bytearray) - Verbose prints the keys read from the file, - Bytes reads via an indirection through QByteArray, like Settings does --- src/modules/CMakeLists.txt | 2 +- src/modules/test_conf.cpp | 55 +++++++++++++++++++++++++++++++++----- 2 files changed, 50 insertions(+), 7 deletions(-) diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt index 7f93c555a..514d6b4f6 100644 --- a/src/modules/CMakeLists.txt +++ b/src/modules/CMakeLists.txt @@ -6,7 +6,7 @@ set( LIST_SKIPPED_MODULES "" ) if( BUILD_TESTING ) add_executable( test_conf test_conf.cpp ) - target_link_libraries( test_conf ${YAMLCPP_LIBRARY} ) + target_link_libraries( test_conf ${YAMLCPP_LIBRARY} Qt5::Core ) target_include_directories( test_conf PUBLIC ${YAMLCPP_INCLUDE_DIR} ) endif() diff --git a/src/modules/test_conf.cpp b/src/modules/test_conf.cpp index 7ef557a3c..082f626c8 100644 --- a/src/modules/test_conf.cpp +++ b/src/modules/test_conf.cpp @@ -21,43 +21,86 @@ * shipped with each module for correctness -- well, for parseability. */ +#include +#include + #include + #include +#include +#include + using std::cerr; +static const char usage[] = "Usage: test_conf [-v] [-b] ...\n"; + int main(int argc, char** argv) { - if (argc != 2) + bool verbose = false; + bool bytes = false; + + int opt; + while ((opt = getopt(argc, argv, "vb")) != -1) { + switch (opt) { + case 'v': + verbose = true; + break; + case 'b': + bytes = true; + break; + default: /* '?' */ + cerr << usage; + return 1; + } + } + + if ( optind >= argc ) { - cerr << "Usage: test_conf \n"; + cerr << usage; return 1; } + const char* filename = argv[optind]; try { - YAML::Node doc = YAML::LoadFile( argv[1] ); + YAML::Node doc; + if ( bytes ) + { + QFile f( filename ); + if ( f.open( QFile::ReadOnly | QFile::Text ) ) + doc = YAML::Load( f.readAll().constData() ); + } + else + doc = YAML::LoadFile( filename ); if ( doc.IsNull() ) { // Special case: empty config files are valid, // but aren't a map. For the example configs, // this is still an error. - cerr << "WARNING:" << argv[1] << '\n'; + cerr << "WARNING:" << filename << '\n'; cerr << "WARNING: empty YAML\n"; return 1; } if ( !doc.IsMap() ) { - cerr << "WARNING:" << argv[1] << '\n'; + cerr << "WARNING:" << filename << '\n'; cerr << "WARNING: not-a-YAML-map\n"; return 1; } + + if ( verbose ) + { + cerr << "Keys:\n"; + for ( auto i = doc.begin(); i != doc.end(); ++i ) + cerr << i->first.as() << '\n'; + } } catch ( YAML::Exception& e ) { - cerr << "WARNING:" << argv[1] << '\n'; + cerr << "WARNING:" << filename << '\n'; cerr << "WARNING: YAML parser error " << e.what() << '\n'; return 1; } From a732ce11bcf60c6c9ac978200d0bab0e0081cd45 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 11 Jun 2018 08:33:47 -0400 Subject: [PATCH 253/385] [libcalamares] Warn more about badly-formed config --- src/libcalamares/Settings.cpp | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/src/libcalamares/Settings.cpp b/src/libcalamares/Settings.cpp index 087822623..bc645ab39 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -30,6 +30,32 @@ #include +/** Helper function to grab a QString out of the config, and to warn if not present. */ +static QString +requireString( const YAML::Node& config, const char* key ) +{ + if ( config[ key ] ) + return QString::fromStdString( config[ key ].as< std::string >() ); + else + { + cWarning() << "Required settings.conf key" << key << "is missing."; + return QString(); + } +} + +/** Helper function to grab a bool out of the config, and to warn if not present. */ +static bool +requireBool( const YAML::Node& config, const char* key, bool d ) +{ + if ( config[ key ] ) + return config[ key ].as< bool >(); + else + { + cWarning() << "Required settings.conf key" << key << "is missing."; + return d; + } +} + namespace Calamares { @@ -41,7 +67,6 @@ Settings::instance() return s_instance; } - Settings::Settings( const QString& settingsFilePath, bool debugMode, QObject* parent ) @@ -148,11 +173,9 @@ Settings::Settings( const QString& settingsFilePath, } } - m_brandingComponentName = QString::fromStdString( config[ "branding" ] - .as< std::string >() ); - m_promptInstall = config[ "prompt-install" ].as< bool >(); - - m_doChroot = config[ "dont-chroot" ] ? !config[ "dont-chroot" ].as< bool >() : true; + m_brandingComponentName = requireString( config, "branding" ); + m_promptInstall = requireBool( config, "prompt-install", false ); + m_doChroot = requireBool( config, "dont-chroot", true ); } catch ( YAML::Exception& e ) { From 35124c149e493a1659eed73b6b29dc8ad6d9e5e2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 11 Jun 2018 13:35:12 -0400 Subject: [PATCH 254/385] [libcalamaresui] Drop the 'goodbye' message --- .../modulesystem/ModuleManager.cpp | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 57a82994f..194db65a2 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -177,8 +177,6 @@ static int findCustomInstance( const Settings::InstanceDescriptionList& customIn void ModuleManager::loadModules() { - static const char GOODBYE[] = "\nCalamares will now quit."; - QTimer::singleShot( 0, this, [ this ]() { QStringList failedModules; @@ -200,8 +198,7 @@ ModuleManager::loadModules() if ( moduleEntrySplit.length() < 1 || moduleEntrySplit.length() > 2 ) { - cError() << "Wrong module entry format for module" << moduleEntry << '.' - << GOODBYE; + cError() << "Wrong module entry format for module" << moduleEntry; failedModules.append( moduleEntry ); continue; } @@ -213,8 +210,7 @@ ModuleManager::loadModules() m_availableDescriptorsByModuleName.value( moduleName ).isEmpty() ) { cError() << "Module" << moduleName << "not found in module search paths." - << Logger::DebugList( m_paths ) - << GOODBYE; + << Logger::DebugList( m_paths ); failedModules.append( moduleName ); continue; } @@ -227,8 +223,7 @@ ModuleManager::loadModules() } else //ought to be a custom instance, but cannot find instance entry { - cError() << "Custom instance" << moduleEntry << "not found in custom instances section." - << GOODBYE; + cError() << "Custom instance" << moduleEntry << "not found in custom instances section."; failedModules.append( moduleEntry ); continue; } @@ -250,8 +245,7 @@ ModuleManager::loadModules() m_loadedModulesByInstanceKey.value( instanceKey, nullptr ); if ( thisModule && !thisModule->isLoaded() ) { - cError() << "Module" << instanceKey << "exists but not loaded." - << GOODBYE; + cError() << "Module" << instanceKey << "exists but not loaded."; failedModules.append( instanceKey ); continue; } @@ -269,8 +263,7 @@ ModuleManager::loadModules() m_moduleDirectoriesByModuleName.value( moduleName ) ); if ( !thisModule ) { - cError() << "Module" << instanceKey << "cannot be created from descriptor" << configFileName - << GOODBYE; + cError() << "Module" << instanceKey << "cannot be created from descriptor" << configFileName; failedModules.append( instanceKey ); continue; } @@ -279,8 +272,7 @@ ModuleManager::loadModules() m_loadedModulesByInstanceKey.insert( instanceKey, thisModule ); if ( !thisModule->isLoaded() ) { - cError() << "Module" << instanceKey << "loading FAILED" - << GOODBYE; + cError() << "Module" << instanceKey << "loading FAILED."; failedModules.append( instanceKey ); continue; } From 3b6c764f753f92cac394c4b57b371719b8c2cc5c Mon Sep 17 00:00:00 2001 From: Caio Carvalho Date: Mon, 11 Jun 2018 18:38:57 -0300 Subject: [PATCH 255/385] [partition] Fixing revert device loop error in PartitionCoreModule::revertAllDevices. --- src/modules/partition/core/PartitionCoreModule.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index fc7ce9753..1f84e55be 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -683,7 +683,7 @@ PartitionCoreModule::revertAllDevices() for ( auto it = m_deviceInfos.begin(); it != m_deviceInfos.end(); ) { // In new VGs device info, there will be always a CreateVolumeGroupJob as the first job in jobs list - if ( !( *it )->jobs.empty() ) + if ( dynamic_cast( ( *it )->device.data() ) && !( *it )->jobs.empty() ) { CreateVolumeGroupJob* vgJob = dynamic_cast( ( *it )->jobs[0].data() ); @@ -697,14 +697,12 @@ PartitionCoreModule::revertAllDevices() it = m_deviceInfos.erase( it ); - scanForLVMPVs(); + continue; } } - else - { - revertDevice( ( *it )->device.data() ); - ++it; - } + + revertDevice( ( *it )->device.data() ); + ++it; } refresh(); From d61b32aba65901236c00ff67db0df1b57ec0717c Mon Sep 17 00:00:00 2001 From: Raul Rodrigo Segura Date: Tue, 12 Jun 2018 13:44:28 +0200 Subject: [PATCH 256/385] Add configuration values into pythonqt modules --- src/libcalamaresui/modulesystem/PythonQtViewModule.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp index 486d9a8e2..d010f2200 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp @@ -95,6 +95,9 @@ PythonQtViewModule::loadSelf() s_utils = new ::Utils( Calamares::JobQueue::instance()->globalStorage() ); cala.addObject( "utils", s_utils ); + // Append configuration object, in module PythonQt.calamares + cala.addVariable("configuration",m_configurationMap); + // Basic stdout/stderr handling QObject::connect( PythonQt::self(), &PythonQt::pythonStdOut, []( const QString& message ) From 8b406cac9b57a8e5f535087ea743f2e8fde46c79 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 13 Jun 2018 04:37:52 -0400 Subject: [PATCH 257/385] [libcalamaresui] Improve module loading - Add a TODO for allowing modules to come from somewhere other than the module loader (this would allow "internal" modules that are always present) - Warnings are warnings --- src/libcalamaresui/modulesystem/ViewModule.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/libcalamaresui/modulesystem/ViewModule.cpp b/src/libcalamaresui/modulesystem/ViewModule.cpp index 1f940b30b..317d32712 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.cpp +++ b/src/libcalamaresui/modulesystem/ViewModule.cpp @@ -52,27 +52,32 @@ ViewModule::loadSelf() PluginFactory* pf = qobject_cast< PluginFactory* >( m_loader->instance() ); if ( !pf ) { - cDebug() << Q_FUNC_INFO << "No factory:" << m_loader->errorString(); + cWarning() << Q_FUNC_INFO << "No factory:" << m_loader->errorString(); return; } m_viewStep = pf->create< Calamares::ViewStep >(); if ( !m_viewStep ) { - cDebug() << Q_FUNC_INFO << "create() failed" << m_loader->errorString(); + cWarning() << Q_FUNC_INFO << "create() failed" << m_loader->errorString(); return; } -// cDebug() << "ViewModule loading self for instance" << instanceKey() -// << "\nViewModule at address" << this -// << "\nCalamares::PluginFactory at address" << pf -// << "\nViewStep at address" << m_viewStep; + } + + // TODO: allow internal view steps to be created here; they would + // have to be linked into the main application somehow. + // If any method created the view step, use it now. + if ( m_viewStep ) + { m_viewStep->setModuleInstanceKey( instanceKey() ); m_viewStep->setConfigurationMap( m_configurationMap ); ViewManager::instance()->addViewStep( m_viewStep ); m_loaded = true; cDebug() << "ViewModule" << instanceKey() << "loading complete."; } + else + cWarning() << Q_FUNC_INFO << "No view step was created"; } From 3e24c3c58fce63ec223dc317fda8dc9b15e52aae Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 13 Jun 2018 19:31:00 +0200 Subject: [PATCH 258/385] [libcalamaresui] Provide standardised large font --- src/libcalamaresui/utils/CalamaresUtilsGui.cpp | 9 +++++++++ src/libcalamaresui/utils/CalamaresUtilsGui.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp index b05d4ea4f..3c59b0f89 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp @@ -226,6 +226,15 @@ defaultFont() } +QFont +largeFont() +{ + QFont f; + f.setPointSize( defaultFontSize() + 4 ); + return f; +} + + void setDefaultFontSize( int points ) { diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.h b/src/libcalamaresui/utils/CalamaresUtilsGui.h index c0905d4d0..98a49db61 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.h +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.h @@ -115,6 +115,7 @@ UIDLLEXPORT void setDefaultFontSize( int points ); UIDLLEXPORT int defaultFontSize(); // in points UIDLLEXPORT int defaultFontHeight(); // in pixels, DPI-specific UIDLLEXPORT QFont defaultFont(); +UIDLLEXPORT QFont largeFont(); UIDLLEXPORT QSize defaultIconSize(); /** From 9918dfb95ffc17fcf0885cb036356d76c7d1f201 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 13 Jun 2018 05:11:31 -0400 Subject: [PATCH 259/385] [libcalamaresui] Reporting on failures - Provide information on failed modules - Disallow further progress when configuration is borked --- src/libcalamaresui/CMakeLists.txt | 1 + src/libcalamaresui/ViewManager.cpp | 15 +++ src/libcalamaresui/ViewManager.h | 6 + .../modulesystem/ModuleManager.cpp | 3 + .../viewpages/BlankViewStep.cpp | 113 ++++++++++++++++++ src/libcalamaresui/viewpages/BlankViewStep.h | 70 +++++++++++ 6 files changed, 208 insertions(+) create mode 100644 src/libcalamaresui/viewpages/BlankViewStep.cpp create mode 100644 src/libcalamaresui/viewpages/BlankViewStep.h diff --git a/src/libcalamaresui/CMakeLists.txt b/src/libcalamaresui/CMakeLists.txt index 6bbb285bb..efd0ebb29 100644 --- a/src/libcalamaresui/CMakeLists.txt +++ b/src/libcalamaresui/CMakeLists.txt @@ -15,6 +15,7 @@ set( calamaresui_SOURCES utils/qjsonitem.cpp viewpages/AbstractPage.cpp + viewpages/BlankViewStep.cpp viewpages/ViewStep.cpp widgets/ClickableLabel.cpp diff --git a/src/libcalamaresui/ViewManager.cpp b/src/libcalamaresui/ViewManager.cpp index e597bf6a3..8777f79d7 100644 --- a/src/libcalamaresui/ViewManager.cpp +++ b/src/libcalamaresui/ViewManager.cpp @@ -20,6 +20,7 @@ #include "ViewManager.h" #include "utils/Logger.h" +#include "viewpages/BlankViewStep.h" #include "viewpages/ViewStep.h" #include "ExecutionViewStep.h" #include "JobQueue.h" @@ -172,6 +173,20 @@ ViewManager::onInstallationFailed( const QString& message, const QString& detail } +void +ViewManager::onInitFailed( const QStringList& modules) +{ + QString title( tr( "Calamares Initialization Failed" ) ); + QString description( tr( "Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 can not be installed." ) ); + QStringList details; + details << QLatin1Literal("
    "); + for( const auto& m : modules ) + details << QLatin1Literal("
  • ") << m << QLatin1Literal("
  • "); + details << QLatin1Literal("
"); + + insertViewStep( 0, new BlankViewStep( title, description.arg( *Calamares::Branding::ShortProductName ), details.join( QString() ) ) ); +} + ViewStepList ViewManager::viewSteps() const { diff --git a/src/libcalamaresui/ViewManager.h b/src/libcalamaresui/ViewManager.h index e4f215f8f..ee199f725 100644 --- a/src/libcalamaresui/ViewManager.h +++ b/src/libcalamaresui/ViewManager.h @@ -117,6 +117,12 @@ public slots: */ void onInstallationFailed( const QString& message, const QString& details ); + /** @brief Replaces the stack with a view step stating that initialization failed. + * + * @param modules a list of failed modules. + */ + void onInitFailed( const QStringList& modules ); + signals: void currentStepChanged(); void enlarge( QSize enlarge ) const; // See ViewStep::enlarge() diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 194db65a2..6361fa20b 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -296,7 +296,10 @@ ModuleManager::loadModules() } } if ( !failedModules.isEmpty() ) + { + ViewManager::instance()->onInitFailed( failedModules ); emit modulesFailed( failedModules ); + } else emit modulesLoaded(); } ); diff --git a/src/libcalamaresui/viewpages/BlankViewStep.cpp b/src/libcalamaresui/viewpages/BlankViewStep.cpp new file mode 100644 index 000000000..093d19d8b --- /dev/null +++ b/src/libcalamaresui/viewpages/BlankViewStep.cpp @@ -0,0 +1,113 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ +#include "BlankViewStep.h" + +#include "utils/CalamaresUtilsGui.h" + +#include +#include +#include + +namespace Calamares +{ + +BlankViewStep::BlankViewStep( const QString& title, const QString& description, const QString& details, QObject* parent) + : Calamares::ViewStep( parent ) + , m_widget( new QWidget() ) +{ + QBoxLayout* layout = new QVBoxLayout(); + + auto* label = new QLabel( title ); + label->setAlignment( Qt::AlignHCenter ); + label->setFont( CalamaresUtils::largeFont() ); + layout->addWidget( label ); + + label = new QLabel( description ); + label->setWordWrap( true ); + layout->addSpacing( 10 ); + layout->addWidget( label ); + + if ( !details.isEmpty() ) + { + label = new QLabel( details ); + layout->addSpacing( 10 ); + layout->addWidget( label ); + } + + layout->addStretch( 10 ); + + m_widget->setLayout( layout ); +} + +BlankViewStep::~BlankViewStep() +{ +} + +QString +BlankViewStep::prettyName() const +{ + return tr( "Blank Page" ); +} + +void +BlankViewStep::back() +{ +} + +void +BlankViewStep::next() +{ +} + +bool +BlankViewStep::isBackEnabled() const +{ + return false; +} + +bool +BlankViewStep::isNextEnabled() const +{ + return false; +} + +bool +BlankViewStep::isAtBeginning() const +{ + return true; +} + +bool +BlankViewStep::isAtEnd() const +{ + return false; +} + +QWidget* +BlankViewStep::widget() +{ + return m_widget; +} + +Calamares::JobList +BlankViewStep::jobs() const +{ + return JobList(); +} + +} // namespace diff --git a/src/libcalamaresui/viewpages/BlankViewStep.h b/src/libcalamaresui/viewpages/BlankViewStep.h new file mode 100644 index 000000000..5e6938143 --- /dev/null +++ b/src/libcalamaresui/viewpages/BlankViewStep.h @@ -0,0 +1,70 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef BLANKVIEWSTEP_H +#define BLANKVIEWSTEP_H + +#include + +#include +#include + +class QWidget; + +namespace Calamares +{ + +/** @brief A "blank" view step, used for error and status reporting + * + * + */ +class BlankViewStep : public Calamares::ViewStep +{ + Q_OBJECT + +public: + explicit BlankViewStep( const QString& title, const QString& description, const QString& details = QString(), QObject* parent = nullptr ); + virtual ~BlankViewStep() override; + + QString prettyName() const override; + + QWidget* widget() override; + + void next() override; + void back() override; + + bool isNextEnabled() const override; + bool isBackEnabled() const override; + + bool isAtBeginning() const override; + bool isAtEnd() const override; + + Calamares::JobList jobs() const override; +#if 0 + void onActivate() override; + + + void setConfigurationMap( const QVariantMap& configurationMap ) override; +#endif + +private: + QWidget* m_widget; +}; + +} // namespace +#endif // BLANKVIEWSTEP_H From bb5ac0326d35d8649d4a504e1a049f06449957e8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 14 Jun 2018 02:31:06 -0400 Subject: [PATCH 260/385] [libcalamaresui] Improve layout of "blank" view step --- src/libcalamaresui/viewpages/BlankViewStep.cpp | 11 ++++++++--- src/libcalamaresui/viewpages/BlankViewStep.h | 9 ++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libcalamaresui/viewpages/BlankViewStep.cpp b/src/libcalamaresui/viewpages/BlankViewStep.cpp index 093d19d8b..243305c1f 100644 --- a/src/libcalamaresui/viewpages/BlankViewStep.cpp +++ b/src/libcalamaresui/viewpages/BlankViewStep.cpp @@ -32,6 +32,9 @@ BlankViewStep::BlankViewStep( const QString& title, const QString& description, { QBoxLayout* layout = new QVBoxLayout(); + constexpr int const marginWidth = 10; + constexpr int const spacingHeight = 10; + auto* label = new QLabel( title ); label->setAlignment( Qt::AlignHCenter ); label->setFont( CalamaresUtils::largeFont() ); @@ -39,17 +42,19 @@ BlankViewStep::BlankViewStep( const QString& title, const QString& description, label = new QLabel( description ); label->setWordWrap( true ); - layout->addSpacing( 10 ); + label->setMargin( marginWidth ); + layout->addSpacing( spacingHeight ); layout->addWidget( label ); if ( !details.isEmpty() ) { label = new QLabel( details ); - layout->addSpacing( 10 ); + label->setMargin( marginWidth ); + layout->addSpacing( spacingHeight ); layout->addWidget( label ); } - layout->addStretch( 10 ); + layout->addStretch( 1 ); // Push the rest to the top m_widget->setLayout( layout ); } diff --git a/src/libcalamaresui/viewpages/BlankViewStep.h b/src/libcalamaresui/viewpages/BlankViewStep.h index 5e6938143..a3f46d1d5 100644 --- a/src/libcalamaresui/viewpages/BlankViewStep.h +++ b/src/libcalamaresui/viewpages/BlankViewStep.h @@ -31,7 +31,8 @@ namespace Calamares /** @brief A "blank" view step, used for error and status reporting * - * + * This view step never allows navigation (forward or back); it's a trap. + * It displays a title and explanation, and optional details. */ class BlankViewStep : public Calamares::ViewStep { @@ -55,12 +56,6 @@ public: bool isAtEnd() const override; Calamares::JobList jobs() const override; -#if 0 - void onActivate() override; - - - void setConfigurationMap( const QVariantMap& configurationMap ) override; -#endif private: QWidget* m_widget; From 97a45db4bf87e416f5096c1b92ecaec09bb22dbe Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 14 Jun 2018 02:35:49 -0400 Subject: [PATCH 261/385] [libcalamaresui] Reset font height when changing size - defaultFontHeight() caches the result; clear cache when changing the default size, even though this happens only once in the current codebase. --- src/libcalamaresui/utils/CalamaresUtilsGui.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp index 3c59b0f89..e4dc6b555 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp @@ -239,6 +239,7 @@ void setDefaultFontSize( int points ) { s_defaultFontSize = points; + s_defaultFontHeight = 0; // Recalculate on next call to defaultFontHeight() } From a8426730ca1dd05ccd9f290935566d6e33d52dbe Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 14 Jun 2018 02:48:52 -0400 Subject: [PATCH 262/385] [libcalamaresui] Improve wording of modules failure warning --- src/libcalamaresui/ViewManager.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/libcalamaresui/ViewManager.cpp b/src/libcalamaresui/ViewManager.cpp index 8777f79d7..2b9f87db8 100644 --- a/src/libcalamaresui/ViewManager.cpp +++ b/src/libcalamaresui/ViewManager.cpp @@ -177,14 +177,21 @@ void ViewManager::onInitFailed( const QStringList& modules) { QString title( tr( "Calamares Initialization Failed" ) ); - QString description( tr( "Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 can not be installed." ) ); - QStringList details; - details << QLatin1Literal("
    "); - for( const auto& m : modules ) - details << QLatin1Literal("
  • ") << m << QLatin1Literal("
  • "); - details << QLatin1Literal("
"); - - insertViewStep( 0, new BlankViewStep( title, description.arg( *Calamares::Branding::ShortProductName ), details.join( QString() ) ) ); + QString description( tr( "%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." ) ); + QString detailString; + + if ( modules.count() > 0 ) + { + description.append( tr( "
The following modules could not be loaded:" ) ); + QStringList details; + details << QLatin1Literal("
    "); + for( const auto& m : modules ) + details << QLatin1Literal("
  • ") << m << QLatin1Literal("
  • "); + details << QLatin1Literal("
"); + detailString = details.join( QString() ); + } + + insertViewStep( 0, new BlankViewStep( title, description.arg( *Calamares::Branding::ShortProductName ), detailString ) ); } ViewStepList From c47fd88ff0e2c23972d21f3fdbfdcb5ec2b3b676 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 14 Jun 2018 04:47:51 -0400 Subject: [PATCH 263/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_es_MX.ts | 427 ++++++++++++++++++++-------------------- lang/calamares_et.ts | 134 ++++++------- 2 files changed, 281 insertions(+), 280 deletions(-) diff --git a/lang/calamares_es_MX.ts b/lang/calamares_es_MX.ts index f6e76dc9a..657507b9d 100644 --- a/lang/calamares_es_MX.ts +++ b/lang/calamares_es_MX.ts @@ -4,17 +4,17 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + El <strong>entorno de arranque </strong>de este sistema. <br><br>Sistemas antiguos x86 solo admiten <strong>BIOS</strong>. <br>Sistemas modernos usualmente usan <strong>EFI</strong>, pero podrían aparecer como BIOS si inició en modo de compatibilidad. This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - + Este sistema fue iniciado con un entorno de arranque <strong>EFI. </strong><br><br>Para configurar el arranque desde un entorno EFI, este instalador debe hacer uso de un cargador de arranque, como <strong>GRUB</strong>, <strong>system-boot </strong> o una <strong>Partición de sistema EFI</strong>. Esto es automático, a menos que escoja el particionado manual, en tal caso debe escogerla o crearla por su cuenta. This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - + Este sistema fue iniciado con un entorno de arranque <strong>BIOS. </strong><br><br>Para configurar el arranque desde un entorno BIOS, este instalador debe instalar un gestor de arranque como <strong>GRUB</strong>, ya sea al inicio de la partición o en el <strong> Master Boot Record</strong> cerca del inicio de la tabla de particiones (preferido). Esto es automático, a menos que escoja el particionado manual, en este caso debe configurarlo por su cuenta.
@@ -76,12 +76,12 @@ none - + ninguno Interface: - + Interfaz: @@ -138,7 +138,7 @@ Working directory %1 for python job %2 is not readable. - La carpeta de trabajo %1 para la tarea de python %2 no se pudo leer. + La carpeta de trabajo %1 para la tarea de python %2 no es accesible. @@ -179,44 +179,44 @@ Cancel installation without changing the system. - + Cancelar instalación sin cambiar el sistema. &Install - + &Instalar Cancel installation? - Cancelar la instalación? + ¿Cancelar la instalación? Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - Realmente desea cancelar el proceso de instalación actual? + ¿Realmente desea cancelar el proceso de instalación actual? El instalador terminará y se perderán todos los cambios. &Yes - + &Si &No - + &No &Close - + &Cerrar Continue with setup? - Continuar con la instalación? + ¿Continuar con la instalación? @@ -236,12 +236,12 @@ El instalador terminará y se perderán todos los cambios. &Done - + &Hecho The installation is complete. Close the installer. - + Instalación completa. Cierre el instalador. @@ -259,12 +259,12 @@ El instalador terminará y se perderán todos los cambios. Unknown exception type - Excepción desconocida + Tipo de excepción desconocida unparseable Python error - error no analizable Python + error Python no analizable @@ -274,7 +274,7 @@ El instalador terminará y se perderán todos los cambios. Unfetchable Python error. - Error de Python Unfetchable. + Error de Python inalcanzable. @@ -305,8 +305,7 @@ El instalador terminará y se perderán todos los cambios. This program will ask you some questions and set up %2 on your computer. - El programa le hará algunas preguntas y configurará %2 en su ordenador. - + El programa le hará algunas preguntas y configurará %2 en su ordenador. @@ -344,7 +343,7 @@ El instalador terminará y se perderán todos los cambios. %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + %1 será reducido a %2MB y una nueva partición de %3MB será creado para %4. @@ -362,7 +361,7 @@ El instalador terminará y se perderán todos los cambios. Reuse %1 as home partition for %2. - + Reuse %1 como partición home para %2. @@ -393,7 +392,7 @@ El instalador terminará y se perderán todos los cambios. This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Este dispositivo de almacenamiento parece no tener un sistema operativo en el. ¿que le gustaría hacer?<br/> Usted podrá revisar y confirmar sus elecciones antes que cualquier cambio se realice al dispositivo de almacenamiento. @@ -401,12 +400,12 @@ El instalador terminará y se perderán todos los cambios. <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + <strong>Borrar disco</strong> <br/>Esto <font color="red">borrará</font> todos los datos presentes actualmente en el dispositivo de almacenamiento seleccionado. This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Este dispositivo de almacenamiento tiene %1 en el. ¿Que le gustaría hacer? <br/>Usted podrá revisar y confirmar sus elecciones antes de que cualquier cambio se realice al dispositivo de almacenamiento. @@ -414,7 +413,7 @@ El instalador terminará y se perderán todos los cambios. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - + <strong>Instalar junto a</strong> <br/>El instalador reducirá una partición con el fin de hacer espacio para %1. @@ -422,17 +421,17 @@ El instalador terminará y se perderán todos los cambios. <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + <strong>Reemplazar una partición</strong> <br/>Reemplaza una partición con %1. This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Este dispositivo de almacenamiento ya tiene un sistema operativo en el. ¿Que le gustaría hacer?<br/> Usted podrá revisar y confirmar sus elecciones antes que cualquier cambio se realice al dispositivo de almacenamiento. This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Este dispositivo de almacenamiento tiene múltiples sistemas operativos en el. ¿Que le gustaria hacer?<br/> Usted podrá revisar y confirmar sus elecciones antes que cualquier cambio se realice al dispositivo de almacenamiento. @@ -440,18 +439,17 @@ El instalador terminará y se perderán todos los cambios. Clear mounts for partitioning operations on %1 - <b>Instalar %1 en una partición existente</b><br/>Podrás elegir que partición borrar. + Despejar puntos de montaje para operaciones de particionamiento en %1 Clearing mounts for partitioning operations on %1. - Limpiar puntos de montaje para operaciones de particionamiento en %1 + Despejando puntos de montaje para operaciones de particionamiento en %1 Cleared all mounts for %1 - Todas las unidades desmontadas en %1 - + Puntos de montaje despejados para %1 @@ -459,12 +457,12 @@ El instalador terminará y se perderán todos los cambios. Clear all temporary mounts. - Quitar todos los puntos de montaje temporales. + Despejar todos los puntos de montaje temporales. Clearing all temporary mounts. - Limpiando todos los puntos de montaje temporales. + Despejando todos los puntos de montaje temporales. @@ -474,7 +472,7 @@ El instalador terminará y se perderán todos los cambios. Cleared all temporary mounts. - Se han quitado todos los puntos de montaje temporales. + Todos los puntos de montaje temporales despejados. @@ -483,17 +481,17 @@ El instalador terminará y se perderán todos los cambios. Could not run command. - + No puede ejecutarse el comando. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + Este comando se ejecuta en el entorno host y necesita saber la ruta root, pero no hay rootMountPoint definido. The command needs to know the user's name, but no username is defined. - + Este comando necesita saber el nombre de usuario, pero no hay nombre de usuario definido. @@ -501,7 +499,7 @@ El instalador terminará y se perderán todos los cambios. Contextual Processes Job - + Tareas de procesos contextuales. @@ -509,12 +507,12 @@ El instalador terminará y se perderán todos los cambios. Create a Partition - Crear partición + Crear una partición MiB - + MiB @@ -539,27 +537,27 @@ El instalador terminará y se perderán todos los cambios. LVM LV name - + Nombre del LVM LV. Flags: - Banderas: + Indicadores: &Mount Point: - Punto de &montaje: + Punto de &Montaje: Si&ze: - &Tamaño: + Ta&maño: En&crypt - + En&criptar @@ -579,7 +577,7 @@ El instalador terminará y se perderán todos los cambios. Mountpoint already in use. Please select another one. - + Punto de montaje ya esta en uso. Por favor seleccione otro. @@ -722,32 +720,32 @@ El instalador terminará y se perderán todos los cambios. The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + Este tipo de <strong>tabla de partición</strong> en el dispositivo de almacenamiento seleccionado.<br> <br>La única forma de cambiar el tipo de tabla de partición es borrar y recrear la tabla de partición de cero. lo cual destruye todos los datos en el dispositivo de almacenamiento.<br> Este instalador conservará la actual tabla de partición a menos que usted explícitamente elija lo contrario. <br>Si no está seguro, en los sistemas modernos GPT es lo preferible. This device has a <strong>%1</strong> partition table. - + Este dispositivo tiene una tabla de partición <strong>%1</strong> This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - + Este es un dispositivo<br> <strong>loop</strong>. <br>Es un pseudo - dispositivo sin tabla de partición que hace un archivo accesible como un dispositivo bloque. Este tipo de configuración usualmente contiene un solo sistema de archivos. This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - + Este instalador <strong>no puede detectar una tabla de partición</strong> en el dispositivo de almacenamiento seleccionado.<br> <br>El dispositivo o no tiene tabla de partición, o la tabla de partición esta corrupta o de un tipo desconocido. <br>Este instalador puede crear una nueva tabla de partición por usted ya sea automáticamente, o a través de la página de particionado manual. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>Este es el tipo de tabla de partición recomendada para sistemas modernos que inician desde un entorno de arranque <strong>EFI</strong>. <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - + <br><br>Este tipo de tabla de partición solo es recomendable en sistemas antiguos que inician desde un entorno de arranque <strong>BIOS</strong>. GPT es recomendado en la otra mayoría de casos.<br><br><strong> Precaución:</strong> La tabla de partición MBR es una era estándar MS-DOS obsoleta.<br> Unicamente 4 particiones <em>primarias</em> pueden ser creadas, y de esas 4, una puede ser una partición <em>extendida</em>, la cual puede a su vez contener varias particiones <em>logicas</em>. @@ -763,17 +761,17 @@ El instalador terminará y se perderán todos los cambios. Write LUKS configuration for Dracut to %1 - + Escribe configuración LUKS para Dracut a %1 Skip writing LUKS configuration for Dracut: "/" partition is not encrypted - + Omitir escritura de configuración LUKS por Dracut: "/" partición no está encriptada. Failed to open %1 - + Falla al abrir %1 @@ -781,7 +779,7 @@ El instalador terminará y se perderán todos los cambios. Dummy C++ Job - + Trabajo C++ Simulado @@ -824,7 +822,7 @@ El instalador terminará y se perderán todos los cambios. MiB - + MiB @@ -834,12 +832,12 @@ El instalador terminará y se perderán todos los cambios. Flags: - Banderas: + Indicadores: Mountpoint already in use. Please select another one. - + Punto de montaje ya esta en uso. Por favor seleccione otro. @@ -852,22 +850,22 @@ El instalador terminará y se perderán todos los cambios. En&crypt system - + En&criptar sistema Passphrase - + Contraseña segura Confirm passphrase - + Confirmar contraseña segura Please enter the same passphrase in both boxes. - + Favor ingrese la misma contraseña segura en ambas casillas. @@ -913,12 +911,12 @@ El instalador terminará y se perderán todos los cambios. Form - Forma + Formulario <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - + <html><head/><body><p>Cuando esta casilla esta chequeada, su sistema reiniciará inmediatamente cuando de click en <span style=" font-style:italic;">Hecho</span> o cierre el instalador.</p></body></html> @@ -933,7 +931,7 @@ El instalador terminará y se perderán todos los cambios. <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. - + <h1>Instalación fallida</h1> <br/>%1 no ha sido instalado en su computador. <br/>El mensaje de error es: %2. @@ -946,12 +944,12 @@ El instalador terminará y se perderán todos los cambios. Installation Complete - + Instalación Completa The installation of %1 is complete. - + La instalación de %1 está completa. @@ -987,7 +985,7 @@ El instalador terminará y se perderán todos los cambios. Please install KDE Konsole and try again! - + Favor instale la Konsola KDE e intentelo de nuevo! @@ -1044,7 +1042,7 @@ El instalador terminará y se perderán todos los cambios. &OK - + &OK @@ -1130,12 +1128,12 @@ El instalador terminará y se perderán todos los cambios. The system language will be set to %1. - + El lenguaje del sistema será establecido a %1. The numbers and dates locale will be set to %1. - + Los números y datos locales serán establecidos a %1. @@ -1188,17 +1186,17 @@ El instalador terminará y se perderán todos los cambios. Description - + Descripción Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Instalación de Red. (Deshabilitada: No se puede acceder a la lista de paquetes, verifique su conección de red) Network Installation. (Disabled: Received invalid groups data) - + Instalación de Red. (Deshabilitada: Grupos de datos invalidos recibidos) @@ -1206,7 +1204,7 @@ El instalador terminará y se perderán todos los cambios. Package selection - + Selección de paquete @@ -1214,242 +1212,242 @@ El instalador terminará y se perderán todos los cambios. Password is too short - + La contraseña es muy corta Password is too long - + La contraseña es muy larga Password is too weak - + La contraseña es muy débil Memory allocation error when setting '%1' - + Error de asignación de memoria al configurar '%1' Memory allocation error - + Error en la asignación de memoria The password is the same as the old one - + La contraseña es la misma que la anterior The password is a palindrome - + La contraseña es un Palíndromo The password differs with case changes only - + La contraseña solo difiere en cambios de mayúsculas y minúsculas The password is too similar to the old one - + La contraseña es muy similar a la anterior. The password contains the user name in some form - + La contraseña contiene el nombre de usuario de alguna forma The password contains words from the real name of the user in some form - + La contraseña contiene palabras del nombre real del usuario de alguna forma The password contains forbidden words in some form - + La contraseña contiene palabras prohibidas de alguna forma The password contains less than %1 digits - + La contraseña contiene menos de %1 dígitos The password contains too few digits - + La contraseña contiene muy pocos dígitos The password contains less than %1 uppercase letters - + La contraseña contiene menos de %1 letras mayúsculas The password contains too few uppercase letters - + La contraseña contiene muy pocas letras mayúsculas The password contains less than %1 lowercase letters - + La contraseña continee menos de %1 letras minúsculas The password contains too few lowercase letters - + La contraseña contiene muy pocas letras minúsculas The password contains less than %1 non-alphanumeric characters - + La contraseña contiene menos de %1 caracteres no alfanuméricos The password contains too few non-alphanumeric characters - + La contraseña contiene muy pocos caracteres alfanuméricos The password is shorter than %1 characters - + La contraseña es mas corta que %1 caracteres The password is too short - + La contraseña es muy corta The password is just rotated old one - + La contraseña solo es la rotación de la anterior The password contains less than %1 character classes - + La contraseña contiene menos de %1 tipos de caracteres The password does not contain enough character classes - + La contraseña no contiene suficientes tipos de caracteres The password contains more than %1 same characters consecutively - + La contraseña contiene más de %1 caracteres iguales consecutivamente The password contains too many same characters consecutively - + La contraseña contiene muchos caracteres iguales repetidos consecutivamente The password contains more than %1 characters of the same class consecutively - + La contraseña contiene mas de %1 caracteres de la misma clase consecutivamente The password contains too many characters of the same class consecutively - + La contraseña contiene muchos caracteres de la misma clase consecutivamente The password contains monotonic sequence longer than %1 characters - + La contraseña contiene secuencias monotónicas mas larga que %1 caracteres The password contains too long of a monotonic character sequence - + La contraseña contiene secuencias monotónicas muy largas No password supplied - + Contraseña no suministrada Cannot obtain random numbers from the RNG device - + No pueden obtenerse números aleatorios del dispositivo RING Password generation failed - required entropy too low for settings - + Generación de contraseña fallida - entropía requerida muy baja para los ajustes The password fails the dictionary check - %1 - + La contraseña falla el chequeo del diccionario %1 The password fails the dictionary check - + La contraseña falla el chequeo del diccionario Unknown setting - %1 - + Configuración desconocida - %1 Unknown setting - + Configuración desconocida Bad integer value of setting - %1 - + Valor entero de configuración incorrecto - %1 Bad integer value - + Valor entero incorrecto Setting %1 is not of integer type - + Ajuste de % 1 no es de tipo entero Setting is not of integer type - + Ajuste no es de tipo entero Setting %1 is not of string type - + El ajuste %1 no es de tipo cadena Setting is not of string type - + El ajuste no es de tipo cadena Opening the configuration file failed - + Apertura del archivo de configuración fallida The configuration file is malformed - + El archivo de configuración está malformado Fatal failure - + Falla fatal Unknown error - + Error desconocido @@ -1545,32 +1543,32 @@ El instalador terminará y se perderán todos los cambios. Root - + Root Home - + Home Boot - + Boot EFI system - + Sistema EFI Swap - + Swap New partition for %1 - + Partición nueva para %1 @@ -1580,7 +1578,7 @@ El instalador terminará y se perderán todos los cambios. %1 %2 - + %1 %2 @@ -1628,7 +1626,7 @@ El instalador terminará y se perderán todos los cambios. Storage de&vice: - + Dis&positivo de almacenamiento: @@ -1658,7 +1656,7 @@ El instalador terminará y se perderán todos los cambios. Install boot &loader on: - + Instalar &cargador de arranque en: @@ -1668,12 +1666,12 @@ El instalador terminará y se perderán todos los cambios. Can not create new partition - + No se puede crear nueva partición 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. - + La tabla de partición en %1 ya tiene %2 particiones primarias, y no pueden agregarse mas. Favor remover una partición primaria y en cambio, agregue una partición extendida. @@ -1746,32 +1744,32 @@ El instalador terminará y se perderán todos los cambios. No EFI system partition configured - + Sistema de partición EFI no configurada An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + Un sistema de partición EFI es necesario para iniciar %1. <br/><br/>Para configurar un sistema de partición EFI, Regrese y seleccione o cree un sistema de archivos FAT32 con la bandera <strong>esp</strong> activada y el punto de montaje <strong>%2</strong>. <br/><br/>Puede continuar sin configurar una partición de sistema EFI, pero su sistema podría fallar al iniciar. EFI system partition flag not set - + Indicador de partición del sistema EFI no configurado An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Una partición del sistema EFI es necesaria para iniciar% 1. <br/><br/>Una partición se configuró con el punto de montaje <strong>% 2</strong>, pero su bandera <strong>esp</strong> no está configurada. <br/>Para establecer el indicador, retroceda y edite la partición.<br/><br/> Puede continuar sin configurar el indicador, pero su sistema puede fallar al iniciar. Boot partition not encrypted - + Partición de arranque no encriptada A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + Se creó una partición de arranque separada junto con una partición raíz cifrada, pero la partición de arranque no está encriptada.<br/><br/> Existen problemas de seguridad con este tipo de configuración, ya que los archivos importantes del sistema se guardan en una partición no encriptada. <br/>Puede continuar si lo desea, pero el desbloqueo del sistema de archivos ocurrirá más tarde durante el inicio del sistema. <br/>Para encriptar la partición de arranque, retroceda y vuelva a crearla, seleccionando <strong>Encriptar</strong> en la ventana de creación de la partición. @@ -1779,13 +1777,13 @@ El instalador terminará y se perderán todos los cambios. Plasma Look-and-Feel Job - + Trabajo Plasma Look-and-Feel Could not select KDE Plasma Look-and-Feel package - + No se pudo seleccionar el paquete KDE Plasma Look-and-Feel @@ -1798,12 +1796,12 @@ El instalador terminará y se perderán todos los cambios. Placeholder - + Marcador de posición Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + Favor seleccione un Escritorio Plasma KDE Look-and-Feel. También puede omitir este paso y configurar el Look-and-Feel una vez el sistema está instalado. Haciendo clic en la selección Look-and-Feel le dará una previsualización en vivo de ese Look-and-Feel. @@ -1811,7 +1809,7 @@ El instalador terminará y se perderán todos los cambios. Look-and-Feel - + Look-and-Feel @@ -1819,17 +1817,17 @@ El instalador terminará y se perderán todos los cambios. Saving files for later ... - + Guardando archivos para más tarde ... No files configured to save for later. - + No hay archivos configurados para guardar más tarde. Not all of the configured files could be preserved. - + No todos los archivos configurados podrían conservarse. @@ -1838,39 +1836,42 @@ El instalador terminará y se perderán todos los cambios. There was no output from the command. - + +No hubo salida desde el comando. Output: - + +Salida + External command crashed. - + El comando externo ha fallado. Command <i>%1</i> crashed. - + El comando <i>%1</i> ha fallado. External command failed to start. - + El comando externo falló al iniciar. Command <i>%1</i> failed to start. - + El comando <i>%1</i> Falló al iniciar. Internal error when starting command. - + Error interno al iniciar el comando. @@ -1880,22 +1881,22 @@ Output: External command failed to finish. - + Comando externo falla al finalizar Command <i>%1</i> failed to finish in %2 seconds. - + Comando <i>%1</i> falló al finalizar en %2 segundos. External command finished with errors. - + Comando externo finalizado con errores Command <i>%1</i> finished with exit code %2. - + Comando <i>%1</i> finalizó con código de salida %2. @@ -1914,27 +1915,27 @@ Output: unknown - + desconocido extended - + extendido unformatted - + no formateado swap - + swap Unpartitioned space or unknown partition table - + Espacio no particionado o tabla de partición desconocida @@ -2068,7 +2069,7 @@ Output: The screen is too small to display the installer. - + La pantalla es muy pequeña para mostrar el instalador @@ -2099,12 +2100,12 @@ Output: Scanning storage devices... - + Escaneando dispositivos de almacenamiento... Partitioning - + Particionando @@ -2164,7 +2165,7 @@ Output: Failed to write keyboard configuration to existing /etc/default directory. - + Fallo al escribir la configuración del teclado en el directorio /etc/default existente. @@ -2172,82 +2173,82 @@ Output: Set flags on partition %1. - + Establecer indicadores en la partición% 1. Set flags on %1MB %2 partition. - + Establecer indicadores en la partición %1MB %2. Set flags on new partition. - + Establecer indicadores en la nueva partición. Clear flags on partition <strong>%1</strong>. - + Borrar indicadores en la partición <strong>%1</strong>. Clear flags on %1MB <strong>%2</strong> partition. - + Borrar indicadores %1MB en la partición <strong>%2</strong>. Clear flags on new partition. - + Borrar indicadores en la nueva partición. Flag partition <strong>%1</strong> as <strong>%2</strong>. - + Indicador de partición <strong>%1</strong> como <strong>%2</strong>. Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. - + Indicador %1MB de partición <strong>%2</strong> como <strong>%3</strong>. Flag new partition as <strong>%1</strong>. - + Marcar la nueva partición como <strong>%1</strong>. Clearing flags on partition <strong>%1</strong>. - + Borrar indicadores en la partición <strong>%1</strong>. Clearing flags on %1MB <strong>%2</strong> partition. - + Borrar indicadores en la partición %1MB <strong>%2</strong>. Clearing flags on new partition. - + Borrar indicadores en la nueva partición. Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Establecer indicadores <strong>%2</strong> en la partición <strong>%1</strong>. Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. - + Establecer indicadores <strong>%3</strong> en partición %1MB <strong>%2</strong> Setting flags <strong>%1</strong> on new partition. - + Establecer indicadores <strong>%1</strong> en nueva partición. The installer failed to set flags on partition %1. - + El instalador no pudo establecer indicadores en la partición% 1. @@ -2275,12 +2276,12 @@ Output: Cannot disable root account. - + No se puede deshabilitar la cuenta root. passwd terminated with error code %1. - + Contraseña terminada con un error de código %1. @@ -2336,7 +2337,7 @@ Output: Shell Processes Job - + Trabajo de procesos Shell @@ -2345,7 +2346,7 @@ Output: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -2369,22 +2370,22 @@ Output: Installation feedback - + Retroalimentacion de la instalación Sending installation feedback. - + Envío de retroalimentación de instalación. Internal error in install-tracking. - + Error interno en el seguimiento de instalación. HTTP request timed out. - + Tiempo de espera en la solicitud HTTP agotado. @@ -2392,28 +2393,28 @@ Output: Machine feedback - + Retroalimentación de la maquina Configuring machine feedback. - + Configurando la retroalimentación de la maquina. Error in machine feedback configuration. - + Error en la configuración de retroalimentación de la máquina. Could not configure machine feedback correctly, script error %1. - + No se pudo configurar correctamente la retroalimentación de la máquina, error de script% 1. Could not configure machine feedback correctly, Calamares error %1. - + No se pudo configurar la retroalimentación de la máquina correctamente, Calamares error% 1. @@ -2426,51 +2427,51 @@ Output: Placeholder - + Marcador de posición <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - + <html><head/><body><p>Al seleccionar esto, usted no enviará <span style=" font-weight:600;">ninguna información</span> acerca de su instalacion.</p></body></html> TextLabel - + Etiqueta de texto ... - + ... <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> - + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Haga clic aquí para más información acerca de comentarios del usuario</span></a></p></body></html> Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. - + El seguimiento de instalación ayuda a% 1 a ver cuántos usuarios tienen, qué hardware instalan% 1 y (con las dos últimas opciones a continuación), obtener información continua sobre las aplicaciones preferidas. Para ver qué se enviará, haga clic en el ícono de ayuda al lado de cada área. By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + Al seleccionar esto usted enviará información acerca de su instalación y hardware. Esta informacion será <b>enviada unicamente una vez</b> después de terminada la instalación. By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + Al seleccionar esto usted enviará información <b>periodicamente</b> acerca de su instalación, hardware y aplicaciones a %1. By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. - + Al seleccionar esto usted enviará información <b>regularmente</b> acerca de su instalación, hardware y patrones de uso de aplicaciones a %1. @@ -2478,7 +2479,7 @@ Output: Feedback - + Retroalimentación @@ -2563,7 +2564,7 @@ Output: <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Bienvenido al instalador Calamares para %1.</h1> @@ -2573,7 +2574,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/><strong>%2<br/>por %3</strong><br/><br/>Derechos de autor 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt; <br/> Derechos de autor 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/> Gracias a Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg y al <a href="https://www.transifex.com/calamares/calamares/">equipo de traductores Calamares</a>. <br/><br/> Desarrollo de <a href="https://calamares.io/">Calamares</a> patrocinado por <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. diff --git a/lang/calamares_et.ts b/lang/calamares_et.ts index 871f447da..8fcf5f20e 100644 --- a/lang/calamares_et.ts +++ b/lang/calamares_et.ts @@ -9,12 +9,12 @@ This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - See süsteem käivitati <strong>EFI</strong> käivituskeskkonnas.<br><br>Et seadistada käivitust EFI keskkonnast, peab see installija paigaldama käivituslaaduri rakenduse, näiteks <strong>GRUB</strong> või <strong>systemd-boot</strong> sinu <strong>EFI süsteemipartitsioonile</strong>. See on automaatne, välja arvatud juhul, kui valid käsitsi partitsioneerimise, sel juhul pead sa selle valima või ise looma. + See süsteem käivitati <strong>EFI</strong> käivituskeskkonnas.<br><br>Et seadistada käivitust EFI keskkonnast, peab see paigaldaja paigaldama käivituslaaduri rakenduse, näiteks <strong>GRUB</strong> või <strong>systemd-boot</strong> sinu <strong>EFI süsteemipartitsioonile</strong>. See on automaatne, välja arvatud juhul, kui valid käsitsi partitsioneerimise, sel juhul pead sa selle valima või ise looma. This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - See süsteem käivitati <strong>BIOS</strong> käivituskeskkonnas.<br><br>Et seadistada käivitust BIOS keskkonnast, peab see installija paigaldama käivituslaaduri, näiteks <strong>GRUB</strong>, kas mõne partitsiooni algusse või <strong>Master Boot Record</strong>'i paritsioonitabeli alguse lähedale (eelistatud). See on automaatne, välja arvatud juhul, kui valid käsitsi partitsioneerimise, sel juhul pead sa selle ise seadistama. + See süsteem käivitati <strong>BIOS</strong> käivituskeskkonnas.<br><br>Et seadistada käivitust BIOS keskkonnast, peab see paigaldaja paigaldama käivituslaaduri, näiteks <strong>GRUB</strong>, kas mõne partitsiooni algusse või <strong>Master Boot Record</strong>'i paritsioonitabeli alguse lähedale (eelistatud). See on automaatne, välja arvatud juhul, kui valid käsitsi partitsioneerimise, sel juhul pead sa selle ise seadistama. @@ -37,7 +37,7 @@ Do not install a boot loader - Ära installi käivituslaadurit + Ära paigalda käivituslaadurit @@ -99,7 +99,7 @@ Install - Installi + Paigalda @@ -179,24 +179,24 @@ Cancel installation without changing the system. - Tühista installimine ilma süsteemi muutmata. + Tühista paigaldamine ilma süsteemi muutmata. &Install - &Installi + &Paigalda Cancel installation? - Tühista installimine? + Tühista paigaldamine? Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - Kas sa tõesti soovid tühistada praeguse installiprotsessi? -Installija sulgub ja kõik muutused kaovad. + Kas sa tõesti soovid tühistada praeguse paigaldusprotsessi? +Paigaldaja sulgub ning kõik muutused kaovad. @@ -221,12 +221,12 @@ Installija sulgub ja kõik muutused kaovad. The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - %1 installija on tegemas muudatusi sinu kettale, et installida %2.<br/><strong>Sa ei saa neid muudatusi tagasi võtta.</strong> + %1 paigaldaja on tegemas muudatusi sinu kettale, et paigaldada %2.<br/><strong>Sa ei saa neid muudatusi tagasi võtta.</strong> &Install now - &Installi kohe + &Paigalda kohe @@ -241,7 +241,7 @@ Installija sulgub ja kõik muutused kaovad. The installation is complete. Close the installer. - Installimine on lõpetatud. Sulge installija. + Paigaldamine on lõpetatud. Sulge paigaldaja. @@ -251,7 +251,7 @@ Installija sulgub ja kõik muutused kaovad. Installation Failed - Installimine ebaõnnestus + Paigaldamine ebaõnnestus @@ -282,7 +282,7 @@ Installija sulgub ja kõik muutused kaovad. %1 Installer - %1 installija + %1 paigaldaja @@ -295,12 +295,12 @@ Installija sulgub ja kõik muutused kaovad. This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - See arvuti ei rahulda %1 installimiseks vajalikke minimaaltingimusi.<br/>Installimine ei saa jätkuda. <a href="#details">Detailid...</a> + See arvuti ei rahulda %1 paigldamiseks vajalikke minimaaltingimusi.<br/>Paigaldamine ei saa jätkuda. <a href="#details">Detailid...</a> This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - See arvuti ei rahulda mõnda %1 installimiseks soovitatud tingimust.<br/>Installimine võib jätkuda, ent mõned funktsioonid võivad olla keelatud. + See arvuti ei rahulda mõnda %1 paigaldamiseks soovitatud tingimust.<br/>Paigaldamine võib jätkuda, ent mõned funktsioonid võivad olla keelatud. @@ -371,7 +371,7 @@ Installija sulgub ja kõik muutused kaovad. <strong>Select a partition to install on</strong> - <strong>Vali partitsioon, kuhu installida</strong> + <strong>Vali partitsioon, kuhu paigaldada</strong> @@ -412,7 +412,7 @@ Installija sulgub ja kõik muutused kaovad. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - <strong>Installi kõrvale</strong><br/>Installija vähendab partitsiooni, et teha ruumi operatsioonisüsteemile %1. + <strong>Paigalda kõrvale</strong><br/>Paigaldaja vähendab partitsiooni, et teha ruumi operatsioonisüsteemile %1. @@ -599,7 +599,7 @@ Installija sulgub ja kõik muutused kaovad. The installer failed to create partition on disk '%1'. - Installija ei suutnud luua partitsiooni kettale "%1". + Paigaldaja ei suutnud luua partitsiooni kettale "%1". @@ -650,7 +650,7 @@ Installija sulgub ja kõik muutused kaovad. The installer failed to create a partition table on %1. - Installija ei suutnud luua partitsioonitabelit kettale %1. + Paigaldaja ei suutnud luua partitsioonitabelit kettale %1. @@ -711,7 +711,7 @@ Installija sulgub ja kõik muutused kaovad. The installer failed to delete partition %1. - Installija ei suutnud kustutada partitsiooni %1. + Paigaldaja ei suutnud kustutada partitsiooni %1. @@ -719,7 +719,7 @@ Installija sulgub ja kõik muutused kaovad. The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - <strong>Partitsioonitabeli</strong> tüüp valitud mäluseadmel.<br><br>Ainuke viis partitsioonitabelit muuta on see kustutada ja nullist taasluua, mis hävitab kõik andmed mäluseadmel.<br>See installija säilitab praeguse partitsioonitabeli, v.a juhul kui sa ise valid vastupidist.<br>Kui pole kindel, eelista modernsetel süsteemidel GPT-d. + <strong>Partitsioonitabeli</strong> tüüp valitud mäluseadmel.<br><br>Ainuke viis partitsioonitabelit muuta on see kustutada ja nullist taasluua, mis hävitab kõik andmed mäluseadmel.<br>See paigaldaja säilitab praeguse partitsioonitabeli, v.a juhul kui sa ise valid vastupidist.<br>Kui pole kindel, eelista modernsetel süsteemidel GPT-d. @@ -734,7 +734,7 @@ Installija sulgub ja kõik muutused kaovad. This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - See installija <strong>ei suuda tuvastada partitsioonitabelit</strong>valitud mäluseadmel.<br><br>Seadmel kas pole partitsioonitabelit, see on korrumpeerunud või on tundmatut tüüpi.<br>See installija võib sulle luua uue partitsioonitabeli, kas automaatselt või läbi käsitsi partitsioneerimise lehe. + See paigaldaja <strong>ei suuda tuvastada partitsioonitabelit</strong>valitud mäluseadmel.<br><br>Seadmel kas pole partitsioonitabelit, see on korrumpeerunud või on tundmatut tüüpi.<br>See paigaldaja võib sulle luua uue partitsioonitabeli, kas automaatselt või läbi käsitsi partitsioneerimise lehe. @@ -877,7 +877,7 @@ Installija sulgub ja kõik muutused kaovad. Install %1 on <strong>new</strong> %2 system partition. - Installi %1 <strong>uude</strong> %2 süsteemipartitsiooni. + Paigalda %1 <strong>uude</strong> %2 süsteemipartitsiooni. @@ -887,7 +887,7 @@ Installija sulgub ja kõik muutused kaovad. Install %2 on %3 system partition <strong>%1</strong>. - Installi %2 %3 süsteemipartitsioonile <strong>%1</strong>. + Paigalda %2 %3 süsteemipartitsioonile <strong>%1</strong>. @@ -897,7 +897,7 @@ Installija sulgub ja kõik muutused kaovad. Install boot loader on <strong>%1</strong>. - Installi käivituslaadur kohta <strong>%1</strong>. + Paigalda käivituslaadur kohta <strong>%1</strong>. @@ -915,7 +915,7 @@ Installija sulgub ja kõik muutused kaovad. <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - <html><head/><body><p>Kui see märkeruut on täidetud, taaskäivitab su süsteem automaatselt, kui vajutad <span style=" font-style:italic;">Valmis</span> või sulged installija.</p></body></html> + <html><head/><body><p>Kui see märkeruut on täidetud, taaskäivitab su süsteem automaatselt, kui vajutad <span style=" font-style:italic;">Valmis</span> või sulged paigaldaja.</p></body></html> @@ -925,12 +925,12 @@ Installija sulgub ja kõik muutused kaovad. <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - <h1>Kõik on valmis.</h1><br/>%1 on installitud sinu arvutisse.<br/>Sa võid nüüd taaskäivitada oma uude süsteemi või jätkata %2 live-keskkonna kasutamist. + <h1>Kõik on valmis.</h1><br/>%1 on paigaldatud sinu arvutisse.<br/>Sa võid nüüd taaskäivitada oma uude süsteemi või jätkata %2 live-keskkonna kasutamist. <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. - <h1>Installimine ebaõnnestus</h1><br/>%1 ei installitud sinu arvutisse.<br/>Veateade oli: %2. + <h1>Paigaldamine ebaõnnestus</h1><br/>%1 ei paigaldatud sinu arvutisse.<br/>Veateade oli: %2. @@ -943,12 +943,12 @@ Installija sulgub ja kõik muutused kaovad. Installation Complete - Installimine lõpetatud + Paigaldus valmis The installation of %1 is complete. - %1 installimine on lõpetatud. + %1 paigaldus on valmis. @@ -971,7 +971,7 @@ Installija sulgub ja kõik muutused kaovad. The installer failed to format partition %1 on disk '%2'. - Installija ei suutnud vormindada partitsiooni %1 kettal "%2". + Paigaldaja ei suutnud vormindada partitsiooni %1 kettal "%2". @@ -979,12 +979,12 @@ Installija sulgub ja kõik muutused kaovad. Konsole not installed - Konsole pole installitud + Konsole pole paigaldatud Please install KDE Konsole and try again! - Palun installi KDE Konsole ja proovi uuesti! + Palun paigalda KDE Konsole ja proovi uuesti! @@ -1059,7 +1059,7 @@ Installija sulgub ja kõik muutused kaovad. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - <h1>Litsensileping</h1>See seadistusprotseduur installib omandiõigusega tarkvara, mis vastab litsensitingimustele. + <h1>Litsensileping</h1>See seadistusprotseduur paigaldab omandiõigusega tarkvara, mis vastab litsensitingimustele. @@ -1069,12 +1069,12 @@ Installija sulgub ja kõik muutused kaovad. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - <h1>Litsensileping</h1>See seadistusprotseduur võib installida omandiõigusega tarkvara, mis vastab litsensitingimustele, et pakkuda lisafunktsioone ja täiendada kasutajakogemust. + <h1>Litsensileping</h1>See seadistusprotseduur võib paigaldada omandiõigusega tarkvara, mis vastab litsensitingimustele, et pakkuda lisafunktsioone ja täiendada kasutajakogemust. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - Palun loe läbi allolevad lõppkasutaja litsensilepingud (EULAd).<br/>Kui sa tingimustega ei nõustu, ei installita omandiõigusega tarkvara ning selle asemel kasutatakse avatud lähtekoodiga alternatiive. + Palun loe läbi allolevad lõppkasutaja litsensilepingud (EULAd).<br/>Kui sa tingimustega ei nõustu, ei paigaldata omandiõigusega tarkvara ning selle asemel kasutatakse avatud lähtekoodiga alternatiive. @@ -1190,12 +1190,12 @@ Installija sulgub ja kõik muutused kaovad. Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - Võrguinstall. (Keelatud: paketinimistute saamine ebaõnnestus, kontrolli oma võrguühendust) + Võrgupaigaldus. (Keelatud: paketinimistute saamine ebaõnnestus, kontrolli oma võrguühendust) Network Installation. (Disabled: Received invalid groups data) - Võrguinstall. (Keelatud: vastu võetud sobimatud grupiandmed) + Võrgupaigaldus. (Keelatud: vastu võetud sobimatud grupiandmed) @@ -1494,7 +1494,7 @@ Installija sulgub ja kõik muutused kaovad. <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - <small>Kui rohkem kui üks inimene kasutab seda arvutit, saad sa määrata mitu kontot peale installi.</small> + <small>Kui rohkem kui üks inimene kasutab seda arvutit, saad sa pärast paigaldust määrata mitu kontot.</small> @@ -1655,7 +1655,7 @@ Installija sulgub ja kõik muutused kaovad. Install boot &loader on: - Installi käivituslaadur kohta: + Paigalda käivituslaadur kohta: @@ -1688,12 +1688,12 @@ Installija sulgub ja kõik muutused kaovad. Install %1 <strong>alongside</strong> another operating system. - Installi %1 praeguse operatsioonisüsteemi <strong>kõrvale</strong> + Paigalda %1 praeguse operatsioonisüsteemi <strong>kõrvale</strong> <strong>Erase</strong> disk and install %1. - <strong>Tühjenda</strong> ketas ja installi %1. + <strong>Tühjenda</strong> ketas ja paigalda %1. @@ -1708,12 +1708,12 @@ Installija sulgub ja kõik muutused kaovad. Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - Installi %1 teise operatsioonisüsteemi <strong>kõrvale</strong> kettal <strong>%2</strong> (%3). + Paigalda %1 teise operatsioonisüsteemi <strong>kõrvale</strong> kettal <strong>%2</strong> (%3). <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - <strong>Tühjenda</strong> ketas <strong>%2</strong> (%3) ja installi %1. + <strong>Tühjenda</strong> ketas <strong>%2</strong> (%3) ja paigalda %1. @@ -1800,7 +1800,7 @@ Installija sulgub ja kõik muutused kaovad. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - Palun vali KDE Plasma Desktop'ile välimus-ja-tunnetus. Sa võid selle sammu ka vahele jätta ja seadistada välimust-ja-tunnetust siis, kui süsteem on installitud. Välimuse-ja-tunnetuse valikule klõpsates näed selle reaalajas eelvaadet. + Palun vali KDE Plasma töölauale välimus-ja-tunnetus. Sa võid selle sammu ka vahele jätta ja seadistada välimust-ja-tunnetust siis, kui süsteem on paigaldatud. Välimuse-ja-tunnetuse valikule klõpsates näed selle reaalajas eelvaadet. @@ -1947,7 +1947,7 @@ Väljund: Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - Vali, kuhu soovid %1 installida.<br/><font color="red">Hoiatus: </font>see kustutab valitud partitsioonilt kõik failid. + Vali, kuhu soovid %1 paigaldada.<br/><font color="red">Hoiatus: </font>see kustutab valitud partitsioonilt kõik failid. @@ -1957,17 +1957,17 @@ Väljund: %1 cannot be installed on empty space. Please select an existing partition. - %1 ei saa installida tühjale kohale. Palun vali olemasolev partitsioon. + %1 ei saa paigldada tühjale kohale. Palun vali olemasolev partitsioon. %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - %1 ei saa installida laiendatud partitsioonile. Palun vali olemasolev põhiline või loogiline partitsioon. + %1 ei saa paigaldada laiendatud partitsioonile. Palun vali olemasolev põhiline või loogiline partitsioon. %1 cannot be installed on this partition. - %1 ei saa installida sellele partitsioonidel. + %1 ei saa sellele partitsioonile paigaldada. @@ -1999,7 +1999,7 @@ Väljund: <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - <strong>%3</strong><br/><br/>%1 installitakse partitsioonile %2.<br/><font color="red">Hoiatus: </font>kõik andmed partitsioonil %2 kaovad. + <strong>%3</strong><br/><br/>%1 paigaldatakse partitsioonile %2.<br/><font color="red">Hoiatus: </font>kõik andmed partitsioonil %2 kaovad. @@ -2062,12 +2062,12 @@ Väljund: The installer is not running with administrator rights. - Installija ei tööta administraatoriõigustega. + Paigaldaja pole käivitatud administraatoriõigustega. The screen is too small to display the installer. - Ekraan on liiga väike installija kuvamiseks. + Ekraan on paigaldaja kuvamiseks liiga väike. @@ -2090,7 +2090,7 @@ Väljund: The installer failed to resize partition %1 on disk '%2'. - Installijal ebaõnnestus partitsiooni %1 suuruse muutmine kettal "%2". + Paigaldajal ebaõnnestus partitsiooni %1 suuruse muutmine kettal "%2". @@ -2246,7 +2246,7 @@ Väljund: The installer failed to set flags on partition %1. - Installija ei suutnud silte määrata partitsioonile %1. + Paigaldaja ei suutnud partitsioonile %1 silte määrata. @@ -2352,7 +2352,7 @@ Väljund: This is an overview of what will happen once you start the install procedure. - See on ülevaade sellest mis juhtub, kui alustad installiprotseduuri. + See on ülevaade sellest mis juhtub, kui alustad paigaldusprotseduuri. @@ -2368,17 +2368,17 @@ Väljund: Installation feedback - Installimise tagasiside + Paigalduse tagasiside Sending installation feedback. - Saadan installimise tagasisidet. + Saadan paigalduse tagasisidet. Internal error in install-tracking. - Installi jälitamisel esines sisemine viga. + Paigaldate jälitamisel esines sisemine viga. @@ -2430,7 +2430,7 @@ Väljund: <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - <html><head/><body><p>Seda valides <span style=" font-weight:600;">ei saada sa üldse</span> teavet oma installi kohta.</p></body></html> + <html><head/><body><p>Seda valides <span style=" font-weight:600;">ei saada sa üldse</span> teavet oma paigalduse kohta.</p></body></html> @@ -2454,22 +2454,22 @@ Väljund: Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. - Installijälitamine aitab %1-l näha, mitu kasutajat neil on, mis riistvarale nad %1 installivad ja (märkides kaks alumist valikut) saada pidevat teavet eelistatud rakenduste kohta. Et näha, mis infot saadetakse, palun klõpsa abiikooni iga ala kõrval. + Paigalduse jälitamine aitab %1-l näha, mitu kasutajat neil on, mis riistvarale nad %1 paigaldavad ja (märkides kaks alumist valikut) saada pidevat teavet eelistatud rakenduste kohta. Et näha, mis infot saadetakse, palun klõpsa abiikooni iga ala kõrval. By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - Seda valides saadad sa teavet oma installi ja riistvara kohta. See teave <b>saadetakse ainult korra</b>peale installi lõppu. + Seda valides saadad sa teavet oma paigalduse ja riistvara kohta. See teave <b>saadetakse ainult korra</b>peale paigalduse lõppu. By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - Seda valides saadad sa %1-le <b>perioodiliselt</b> infot oma installi, riistvara ja rakenduste kohta. + Seda valides saadad sa %1-le <b>perioodiliselt</b> infot oma paigalduse, riistvara ja rakenduste kohta. By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. - Seda valides saadad sa %1-le <b>regulaarselt</b> infot oma installi, riistvara, rakenduste ja kasutusharjumuste kohta. + Seda valides saadad sa %1-le <b>regulaarselt</b> infot oma paigalduse, riistvara, rakenduste ja kasutusharjumuste kohta. @@ -2557,17 +2557,17 @@ Väljund: <h1>Welcome to the %1 installer.</h1> - <h1>Tere tulemast %1 installijasse.</h1> + <h1>Tere tulemast %1 paigaldajasse.</h1> <h1>Welcome to the Calamares installer for %1.</h1> - <h1>Tere tulemast Calamares'i installijasse %1 jaoks.</h1> + <h1>Tere tulemast Calamares'i paigaldajasse %1 jaoks.</h1> About %1 installer - Teave %1 installija kohta + Teave %1 paigaldaja kohta From e6dc7473dae929c9bf88e66c3e7156e4c11d02dc Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 14 Jun 2018 04:47:51 -0400 Subject: [PATCH 264/385] i18n: [desktop] Automatic merge of Transifex translations --- calamares.desktop | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/calamares.desktop b/calamares.desktop index f8be5d1f3..c1c8d44e2 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -47,9 +47,9 @@ GenericName[es]=Instalador del Sistema Comment[es]=Calamares — Instalador del Sistema Name[es]=Instalar Sistema Icon[et]=calamares -GenericName[et]=Süsteemi installija -Comment[et]=Calamares — Süsteemi installija -Name[et]=Installi süsteem +GenericName[et]=Süsteemipaigaldaja +Comment[et]=Calamares — süsteemipaigaldaja +Name[et]=Paigalda süsteem Name[eu]=Sistema instalatu Name[es_PR]=Instalar el sistema Icon[fr]=calamares @@ -156,6 +156,9 @@ Icon[eo]=calamares GenericName[eo]=Sistema Instalilo Comment[eo]=Calamares — Sistema Instalilo Name[eo]=Instali Sistemo +Icon[es_MX]=calamares +GenericName[es_MX]=Instalador del sistema +Comment[es_MX]=Calamares - Instalador del sistema Name[es_MX]=Instalar el Sistema Icon[pt_PT]=calamares GenericName[pt_PT]=Instalador de Sistema From 0ea3d85ab0313fcc46180ddeb4f9b3537cbe4200 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 14 Jun 2018 04:47:53 -0400 Subject: [PATCH 265/385] i18n: [dummypythonqt] Automatic merge of Transifex translations --- .../lang/es_MX/LC_MESSAGES/dummypythonqt.mo | Bin 436 -> 1017 bytes .../lang/es_MX/LC_MESSAGES/dummypythonqt.po | 15 ++++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo index 73c58bb4a405e077a87de0ffb9937f1c23637c35..bb3f4ea3f029e4c94ce4ae387f07af9a8114fba7 100644 GIT binary patch literal 1017 zcmZuv&2G~`5H?Ui7;&HnxB!~o62aO|)St*Dh%|L+plL#yM!*F&&L-Yq?^@n<(@^mS zT#>l)09+9qxWIw8;2Ah`V(hkw1YP;tZ)bL9zV+_>T3mQ<;JA#qh3F!#BHkgg@da@W z@fA@({6t(q{6^eF{6XA6ES@urRpcV_H^eK%b+qqXFpM>12YC@WK+bfIkZ&V@K;A(9 zjEpJyIFB=$#=@~Vn=j!iJLkpBQv<;!@N|dvS!ki9G}Wnsh$%%!42Cj+%`}Rp(4Oi* zil-VL%f4mQL+-!Es3qf{-5zI?Jzp4ZuHw06x7i)EroQ;qn5Y@{Pay3z%+-RhEh!l=e1 zvPm^_q3o0@#91Nb3OLK|${KN&9R~wRhaK>&_(|Mzuht>W7TK)9cFS!x?!IX4dgcyQ znsgH?R7kZbOo|WLVOGKRX-FfQFlB4ZRd(5NR!cThFPqQoqS$@Y3vIMB4r13)@b_zn@1=*#@A+8 zQPV+odkF;=0{(EHj^(`NhTPZO=h8C1f83^Tz{l`2C0F8$?=Rqyym(FmbwNe T3I-NdhGvuZF&a!ZWO@q#z1|Dt diff --git a/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.po index 22412c347..8ccd80311 100644 --- a/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.po @@ -8,8 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-04 08:16-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: guillermo pacheco , 2018\n" "Language-Team: Spanish (Mexico) (https://www.transifex.com/calamares/teams/20061/es_MX/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,24 +20,24 @@ msgstr "" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" -msgstr "" +msgstr "¡Haz clic en mí!" #: src/modules/dummypythonqt/main.py:94 msgid "A new QLabel." -msgstr "" +msgstr "Una nueva QLabel." #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" -msgstr "" +msgstr "Vision del PythonQt ficticio" #: src/modules/dummypythonqt/main.py:183 msgid "The Dummy PythonQt Job" -msgstr "" +msgstr "Trabajo del PythonQt ficticio" #: src/modules/dummypythonqt/main.py:186 msgid "This is the Dummy PythonQt Job. The dummy job says: {}" -msgstr "" +msgstr "Este es el Trabajo PythonQt ficticio. El trabajo ficticio dice: {}" #: src/modules/dummypythonqt/main.py:190 msgid "A status message for Dummy PythonQt Job." -msgstr "" +msgstr "Un mensaje de estado para el trabajo PythonQt ficticio." From 781bdcc1a42d3be808c801603455a32133d49442 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 14 Jun 2018 04:47:53 -0400 Subject: [PATCH 266/385] i18n: [python] Automatic merge of Transifex translations --- lang/python/es_MX/LC_MESSAGES/python.mo | Bin 436 -> 1199 bytes lang/python/es_MX/LC_MESSAGES/python.po | 21 +++++++++++---------- lang/python/et/LC_MESSAGES/python.mo | Bin 1113 -> 1123 bytes lang/python/et/LC_MESSAGES/python.po | 10 +++++----- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/lang/python/es_MX/LC_MESSAGES/python.mo b/lang/python/es_MX/LC_MESSAGES/python.mo index 3b6df235cfd484222c6a19c026a0dc5175d2f352..b8b639ba04f8d2b6e209d6dde77e4c334b54a960 100644 GIT binary patch literal 1199 zcmZWo%Wl&^6g5zwL}Eb&f(4*qQIx1m?1UB~mmor$mI%^BX<7jiLQ{K^OtEKN&$w-b z_=j%#7l;jO76^%7V29uXSn&fK=LvMAqvN^0_uQH5A34;03S`cECsAE8x%IPrx_e8urI$EbA)x1Nb)hD|in43tR+S zGnSPD-36!nSKyoABQPYaS>QB~uJp|3fwSpmw2(Gfkh9LEPpe57_DR$?JtfJm+R6VL z(S}Fl?K^9oOCB@BNyxmOkemuXZ`GtWEC@)%yf>`N^&}!>mng}{FaC+oXJr!R{P8;! zHDl#*t<$2h63NbIJ(Wm_NJj*m=sxZf4qNVW z&(NArw|T6Ek}hdhR-RVYt7N;{+N?D;GA$md*wDJ}3ZFhsx|+6?OES$yo36y185Ge~ zjKn2Hr%)ppTw?iFmVU)P`8xlFxQ zuTCda$UB)8B@LH2a6iJ$4L>w?6fhx|iPvMX=BB*WUZbUHUfQk0V_KD-^6}+dQrZz_ za%7hbdS#kH60?A=sW{Xwk<5uQ43Tr#xt tpk%D`m!0hsX6FBk58XTnkJQIH_&K=_@da>3EmAKtonC^)_$l`>fIo$eTvz}A delta 69 zcmZ3_xrN!{o)F7a1|VPrVi_P-0b*t#)&XJ=umIvJprj>`2C0F8$=4YBC$C_73jh$u B2(bVF diff --git a/lang/python/es_MX/LC_MESSAGES/python.po b/lang/python/es_MX/LC_MESSAGES/python.po index 386952128..45fc72c65 100644 --- a/lang/python/es_MX/LC_MESSAGES/python.po +++ b/lang/python/es_MX/LC_MESSAGES/python.po @@ -10,6 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: guillermo pacheco , 2018\n" "Language-Team: Spanish (Mexico) (https://www.transifex.com/calamares/teams/20061/es_MX/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,39 +20,39 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Desmontar sistemas de archivo." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "" +msgstr "Trabajo python ficticio." #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "" +msgstr "Paso python ficticio {}" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "" +msgstr "Generar identificación de la maquina." #: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" +msgstr "Procesando paquetes (%(count)d/%(total)d)" #: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." -msgstr "" +msgstr "Instalar paquetes." #: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Instalando un paquete." +msgstr[1] "Instalando%(num)d paquetes." #: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Removiendo un paquete." +msgstr[1] "Removiendo %(num)dpaquetes." diff --git a/lang/python/et/LC_MESSAGES/python.mo b/lang/python/et/LC_MESSAGES/python.mo index 89b3804b58ec00152f1f59824b47e745391b9d6c..2fea8bab0fa4fa571dd762e4ebb2a478a6bbccfc 100644 GIT binary patch delta 133 zcmcb~@t9*mi>e?41H)2g1_nbQy&XvF0O^-NS|3P@u`n>m0BN_4EB`P#1|(*tC+4Ii zDikDUre!1#FzhxcTpf<=)9RWy;@Oj*F*{mh>M^*c<|gK(B<3j~O9I6` g5);!i719zjb25t$?_W07oA)$N&HU diff --git a/lang/python/et/LC_MESSAGES/python.po b/lang/python/et/LC_MESSAGES/python.po index eeccccc30..ccd9b1b7d 100644 --- a/lang/python/et/LC_MESSAGES/python.po +++ b/lang/python/et/LC_MESSAGES/python.po @@ -41,18 +41,18 @@ msgstr "Pakkide töötlemine (%(count)d / %(total)d)" #: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." -msgstr "Installi pakid." +msgstr "Paigalda paketid." #: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "Installin ühe paki." -msgstr[1] "Installin %(num)d pakki." +msgstr[0] "Paigaldan ühe paketi." +msgstr[1] "Paigaldan %(num)d paketti." #: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "Eemaldan ühe paki." -msgstr[1] "Eemaldan %(num)d pakki." +msgstr[0] "Eemaldan ühe paketi." +msgstr[1] "Eemaldan %(num)d paketti." From ef897f59f5156c327c505b65cc2d63e473e2fdd4 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Thu, 14 Jun 2018 05:01:20 -0400 Subject: [PATCH 267/385] i18n: Add Korean (ko) language translations Since this is a new language, it is currently 0% translated. That is why it goes into _tx_bad. It will move to one of the other categories once some translation has happened. Add the (still empty) Transifex files already. --- CMakeLists.txt | 2 +- lang/calamares_ko.ts | 2587 +++++++++++++++++ lang/python/ko/LC_MESSAGES/python.mo | Bin 0 -> 413 bytes lang/python/ko/LC_MESSAGES/python.po | 55 + .../lang/ko/LC_MESSAGES/dummypythonqt.mo | Bin 0 -> 413 bytes .../lang/ko/LC_MESSAGES/dummypythonqt.po | 42 + 6 files changed, 2685 insertions(+), 1 deletion(-) create mode 100644 lang/calamares_ko.ts create mode 100644 lang/python/ko/LC_MESSAGES/python.mo create mode 100644 lang/python/ko/LC_MESSAGES/python.po create mode 100644 src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.mo create mode 100644 src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.po diff --git a/CMakeLists.txt b/CMakeLists.txt index c33ad8e6f..1627ff32f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,7 +86,7 @@ set( _tx_complete da pt_PT ro tr_TR zh_TW zh_CN pt_BR fr hr ca lt id cs_CZ ) set( _tx_good sq es pl ja sk it_IT hu ru he de nl bg uk ) set( _tx_ok ast is ar sv el es_MX gl en_GB th fi_FI hi eu sr nb sl sr@latin mr es_PR kk kn et be ) -set( _tx_bad uz lo ur gu fr_CH fa eo ) +set( _tx_bad uz lo ur gu fr_CH fa eo ko ) ### Required versions diff --git a/lang/calamares_ko.ts b/lang/calamares_ko.ts new file mode 100644 index 000000000..73b81b498 --- /dev/null +++ b/lang/calamares_ko.ts @@ -0,0 +1,2587 @@ + + + BootInfoWidget + + + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. + + + + + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. + + + + + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. + + + + + BootLoaderModel + + + Master Boot Record of %1 + + + + + Boot Partition + + + + + System Partition + + + + + Do not install a boot loader + + + + + %1 (%2) + + + + + Calamares::DebugWindow + + + Form + + + + + GlobalStorage + + + + + JobQueue + + + + + Modules + + + + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + + Debug information + + + + + Calamares::ExecutionViewStep + + + Install + + + + + Calamares::JobThread + + + Done + + + + + Calamares::ProcessJob + + + Run command %1 %2 + + + + + Running command %1 %2 + + + + + Calamares::PythonJob + + + Running %1 operation. + + + + + Bad working directory path + + + + + Working directory %1 for python job %2 is not readable. + + + + + Bad main script file + + + + + Main script file %1 for python job %2 is not readable. + + + + + Boost.Python error in job "%1". + + + + + Calamares::ViewManager + + + &Back + + + + + + &Next + + + + + + &Cancel + + + + + + Cancel installation without changing the system. + + + + + &Install + + + + + Cancel installation? + + + + + Do you really want to cancel the current install process? +The installer will quit and all changes will be lost. + + + + + &Yes + + + + + &No + + + + + &Close + + + + + Continue with setup? + + + + + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> + + + + + &Install now + + + + + Go &back + + + + + &Done + + + + + The installation is complete. Close the installer. + + + + + Error + + + + + Installation Failed + + + + + CalamaresPython::Helper + + + Unknown exception type + + + + + unparseable Python error + + + + + unparseable Python traceback + + + + + Unfetchable Python error. + + + + + CalamaresWindow + + + %1 Installer + + + + + Show debug information + + + + + CheckerWidget + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + + + + + For best results, please ensure that this computer: + + + + + System requirements + + + + + ChoicePage + + + Form + + + + + After: + + + + + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + + + + + Boot loader location: + + + + + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. + + + + + Select storage de&vice: + + + + + + + + Current: + + + + + Reuse %1 as home partition for %2. + + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> + + + + + <strong>Select a partition to install on</strong> + + + + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + ClearMountsJob + + + Clear mounts for partitioning operations on %1 + + + + + Clearing mounts for partitioning operations on %1. + + + + + Cleared all mounts for %1 + + + + + ClearTempMountsJob + + + Clear all temporary mounts. + + + + + Clearing all temporary mounts. + + + + + Cannot get list of temporary mounts. + + + + + Cleared all temporary mounts. + + + + + CommandList + + + + Could not run command. + + + + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + + + The command needs to know the user's name, but no username is defined. + + + + + ContextualProcessJob + + + Contextual Processes Job + + + + + CreatePartitionDialog + + + Create a Partition + + + + + MiB + + + + + Partition &Type: + + + + + &Primary + + + + + E&xtended + + + + + Fi&le System: + + + + + LVM LV name + + + + + Flags: + + + + + &Mount Point: + + + + + Si&ze: + + + + + En&crypt + + + + + Logical + + + + + Primary + + + + + GPT + + + + + Mountpoint already in use. Please select another one. + + + + + CreatePartitionJob + + + Create new %2MB partition on %4 (%3) with file system %1. + + + + + Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. + + + + + Creating new %1 partition on %2. + + + + + The installer failed to create partition on disk '%1'. + + + + + CreatePartitionTableDialog + + + Create Partition Table + + + + + Creating a new partition table will delete all existing data on the disk. + + + + + What kind of partition table do you want to create? + + + + + Master Boot Record (MBR) + + + + + GUID Partition Table (GPT) + + + + + CreatePartitionTableJob + + + Create new %1 partition table on %2. + + + + + Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). + + + + + Creating new %1 partition table on %2. + + + + + The installer failed to create a partition table on %1. + + + + + CreateUserJob + + + Create user %1 + + + + + Create user <strong>%1</strong>. + + + + + Creating user %1. + + + + + Sudoers dir is not writable. + + + + + Cannot create sudoers file for writing. + + + + + Cannot chmod sudoers file. + + + + + Cannot open groups file for reading. + + + + + DeletePartitionJob + + + Delete partition %1. + + + + + Delete partition <strong>%1</strong>. + + + + + Deleting partition %1. + + + + + The installer failed to delete partition %1. + + + + + DeviceInfoWidget + + + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. + + + + + This device has a <strong>%1</strong> partition table. + + + + + This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. + + + + + This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. + + + + + <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. + + + + + <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. + + + + + DeviceModel + + + %1 - %2 (%3) + + + + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + + + + + Failed to open %1 + + + + + DummyCppJob + + + Dummy C++ Job + + + + + EditExistingPartitionDialog + + + Edit Existing Partition + + + + + Content: + + + + + &Keep + + + + + Format + + + + + Warning: Formatting the partition will erase all existing data. + + + + + &Mount Point: + + + + + Si&ze: + + + + + MiB + + + + + Fi&le System: + + + + + Flags: + + + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + + + + + En&crypt system + + + + + Passphrase + + + + + Confirm passphrase + + + + + Please enter the same passphrase in both boxes. + + + + + FillGlobalStorageJob + + + Set partition information + + + + + Install %1 on <strong>new</strong> %2 system partition. + + + + + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. + + + + + Install %2 on %3 system partition <strong>%1</strong>. + + + + + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. + + + + + Install boot loader on <strong>%1</strong>. + + + + + Setting up mount points. + + + + + FinishedPage + + + Form + + + + + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> + + + + + &Restart now + + + + + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + + + + FinishedViewStep + + + Finish + + + + + Installation Complete + + + + + The installation of %1 is complete. + + + + + FormatPartitionJob + + + Format partition %1 (file system: %2, size: %3 MB) on %4. + + + + + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. + + + + + Formatting partition %1 with file system %2. + + + + + The installer failed to format partition %1 on disk '%2'. + + + + + InteractiveTerminalPage + + + Konsole not installed + + + + + Please install KDE Konsole and try again! + + + + + Executing script: &nbsp;<code>%1</code> + + + + + InteractiveTerminalViewStep + + + Script + + + + + KeyboardPage + + + Set keyboard model to %1.<br/> + + + + + Set keyboard layout to %1/%2. + + + + + KeyboardViewStep + + + Keyboard + + + + + LCLocaleDialog + + + System locale setting + + + + + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + + + &Cancel + + + + + &OK + + + + + LicensePage + + + Form + + + + + I accept the terms and conditions above. + + + + + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. + + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. + + + + + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. + + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. + + + + + <strong>%1 driver</strong><br/>by %2 + %1 is an untranslatable product name, example: Creative Audigy driver + + + + + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> + %1 is usually a vendor name, example: Nvidia graphics driver + + + + + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 package</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1</strong><br/><font color="Grey">by %2</font> + + + + + <a href="%1">view license agreement</a> + + + + + LicenseViewStep + + + License + + + + + LocalePage + + + The system language will be set to %1. + + + + + The numbers and dates locale will be set to %1. + + + + + Region: + + + + + Zone: + + + + + + &Change... + + + + + Set timezone to %1/%2.<br/> + + + + + %1 (%2) + Language (Country) + + + + + LocaleViewStep + + + Loading location data... + + + + + Location + + + + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + Network Installation. (Disabled: Received invalid groups data) + + + + + NetInstallViewStep + + + Package selection + + + + + PWQ + + + Password is too short + + + + + Password is too long + + + + + Password is too weak + + + + + Memory allocation error when setting '%1' + + + + + Memory allocation error + + + + + The password is the same as the old one + + + + + The password is a palindrome + + + + + The password differs with case changes only + + + + + The password is too similar to the old one + + + + + The password contains the user name in some form + + + + + The password contains words from the real name of the user in some form + + + + + The password contains forbidden words in some form + + + + + The password contains less than %1 digits + + + + + The password contains too few digits + + + + + The password contains less than %1 uppercase letters + + + + + The password contains too few uppercase letters + + + + + The password contains less than %1 lowercase letters + + + + + The password contains too few lowercase letters + + + + + The password contains less than %1 non-alphanumeric characters + + + + + The password contains too few non-alphanumeric characters + + + + + The password is shorter than %1 characters + + + + + The password is too short + + + + + The password is just rotated old one + + + + + The password contains less than %1 character classes + + + + + The password does not contain enough character classes + + + + + The password contains more than %1 same characters consecutively + + + + + The password contains too many same characters consecutively + + + + + The password contains more than %1 characters of the same class consecutively + + + + + The password contains too many characters of the same class consecutively + + + + + The password contains monotonic sequence longer than %1 characters + + + + + The password contains too long of a monotonic character sequence + + + + + No password supplied + + + + + Cannot obtain random numbers from the RNG device + + + + + Password generation failed - required entropy too low for settings + + + + + The password fails the dictionary check - %1 + + + + + The password fails the dictionary check + + + + + Unknown setting - %1 + + + + + Unknown setting + + + + + Bad integer value of setting - %1 + + + + + Bad integer value + + + + + Setting %1 is not of integer type + + + + + Setting is not of integer type + + + + + Setting %1 is not of string type + + + + + Setting is not of string type + + + + + Opening the configuration file failed + + + + + The configuration file is malformed + + + + + Fatal failure + + + + + Unknown error + + + + + Page_Keyboard + + + Form + + + + + Keyboard Model: + + + + + Type here to test your keyboard + + + + + Page_UserSetup + + + Form + + + + + What is your name? + + + + + What name do you want to use to log in? + + + + + + + font-weight: normal + + + + + <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> + + + + + Choose a password to keep your account safe. + + + + + <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> + + + + + What is the name of this computer? + + + + + <small>This name will be used if you make the computer visible to others on a network.</small> + + + + + Log in automatically without asking for the password. + + + + + Use the same password for the administrator account. + + + + + Choose a password for the administrator account. + + + + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + + + + PartitionLabelsView + + + Root + + + + + Home + + + + + Boot + + + + + EFI system + + + + + Swap + + + + + New partition for %1 + + + + + New partition + + + + + %1 %2 + + + + + PartitionModel + + + + Free Space + + + + + + New partition + + + + + Name + + + + + File System + + + + + Mount Point + + + + + Size + + + + + PartitionPage + + + Form + + + + + Storage de&vice: + + + + + &Revert All Changes + + + + + New Partition &Table + + + + + &Create + + + + + &Edit + + + + + &Delete + + + + + Install boot &loader on: + + + + + Are you sure you want to create a new partition table on %1? + + + + + Can not create new partition + + + + + 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. + + + + + PartitionViewStep + + + Gathering system information... + + + + + Partitions + + + + + Install %1 <strong>alongside</strong> another operating system. + + + + + <strong>Erase</strong> disk and install %1. + + + + + <strong>Replace</strong> a partition with %1. + + + + + <strong>Manual</strong> partitioning. + + + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). + + + + + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. + + + + + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. + + + + + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). + + + + + Disk <strong>%1</strong> (%2) + + + + + Current: + + + + + After: + + + + + No EFI system partition configured + + + + + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. + + + + + EFI system partition flag not set + + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + + + + PlasmaLnfJob + + + Plasma Look-and-Feel Job + + + + + + Could not select KDE Plasma Look-and-Feel package + + + + + PlasmaLnfPage + + + Form + + + + + Placeholder + + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + PlasmaLnfViewStep + + + Look-and-Feel + + + + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + + + ProcessResult + + + +There was no output from the command. + + + + + +Output: + + + + + + External command crashed. + + + + + Command <i>%1</i> crashed. + + + + + External command failed to start. + + + + + Command <i>%1</i> failed to start. + + + + + Internal error when starting command. + + + + + Bad parameters for process job call. + + + + + External command failed to finish. + + + + + Command <i>%1</i> failed to finish in %2 seconds. + + + + + External command finished with errors. + + + + + Command <i>%1</i> finished with exit code %2. + + + + + QObject + + + Default Keyboard Model + + + + + + Default + + + + + unknown + + + + + extended + + + + + unformatted + + + + + swap + + + + + Unpartitioned space or unknown partition table + + + + + ReplaceWidget + + + Form + + + + + Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. + + + + + The selected item does not appear to be a valid partition. + + + + + %1 cannot be installed on empty space. Please select an existing partition. + + + + + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. + + + + + %1 cannot be installed on this partition. + + + + + Data partition (%1) + + + + + Unknown system partition (%1) + + + + + %1 system partition (%2) + + + + + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. + + + + + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + RequirementsChecker + + + Gathering system information... + + + + + has at least %1 GB available drive space + + + + + There is not enough drive space. At least %1 GB is required. + + + + + has at least %1 GB working memory + + + + + The system does not have enough working memory. At least %1 GB is required. + + + + + is plugged in to a power source + + + + + The system is not plugged in to a power source. + + + + + is connected to the Internet + + + + + The system is not connected to the Internet. + + + + + The installer is not running with administrator rights. + + + + + The screen is too small to display the installer. + + + + + ResizePartitionJob + + + Resize partition %1. + + + + + Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. + + + + + Resizing %2MB partition %1 to %3MB. + + + + + The installer failed to resize partition %1 on disk '%2'. + + + + + ScanningDialog + + + Scanning storage devices... + + + + + Partitioning + + + + + SetHostNameJob + + + Set hostname %1 + + + + + Set hostname <strong>%1</strong>. + + + + + Setting hostname %1. + + + + + + Internal Error + + + + + + Cannot write hostname to target system + + + + + SetKeyboardLayoutJob + + + Set keyboard model to %1, layout to %2-%3 + + + + + Failed to write keyboard configuration for the virtual console. + + + + + + + Failed to write to %1 + + + + + Failed to write keyboard configuration for X11. + + + + + Failed to write keyboard configuration to existing /etc/default directory. + + + + + SetPartFlagsJob + + + Set flags on partition %1. + + + + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + + Clear flags on partition <strong>%1</strong>. + + + + + Clear flags on %1MB <strong>%2</strong> partition. + + + + + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + + + + + Flag new partition as <strong>%1</strong>. + + + + + Clearing flags on partition <strong>%1</strong>. + + + + + Clearing flags on %1MB <strong>%2</strong> partition. + + + + + Clearing flags on new partition. + + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + + The installer failed to set flags on partition %1. + + + + + SetPasswordJob + + + Set password for user %1 + + + + + Setting password for user %1. + + + + + Bad destination system path. + + + + + rootMountPoint is %1 + + + + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + + Cannot set password for user %1. + + + + + usermod terminated with error code %1. + + + + + SetTimezoneJob + + + Set timezone to %1/%2 + + + + + Cannot access selected timezone path. + + + + + Bad path: %1 + + + + + Cannot set timezone. + + + + + Link creation failed, target: %1; link name: %2 + + + + + Cannot set timezone, + + + + + Cannot open /etc/timezone for writing + + + + + ShellProcessJob + + + Shell Processes Job + + + + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + + + SummaryPage + + + This is an overview of what will happen once you start the install procedure. + + + + + SummaryViewStep + + + Summary + + + + + TrackingInstallJob + + + Installation feedback + + + + + Sending installation feedback. + + + + + Internal error in install-tracking. + + + + + HTTP request timed out. + + + + + TrackingMachineNeonJob + + + Machine feedback + + + + + Configuring machine feedback. + + + + + + Error in machine feedback configuration. + + + + + Could not configure machine feedback correctly, script error %1. + + + + + Could not configure machine feedback correctly, Calamares error %1. + + + + + TrackingPage + + + Form + + + + + Placeholder + + + + + <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> + + + + + + + TextLabel + + + + + + + ... + + + + + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> + + + + + Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. + + + + + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. + + + + + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. + + + + + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. + + + + + TrackingViewStep + + + Feedback + + + + + UsersPage + + + Your username is too long. + + + + + Your username contains invalid characters. Only lowercase letters and numbers are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. + + + + + + Your passwords do not match! + + + + + UsersViewStep + + + Users + + + + + WelcomePage + + + Form + + + + + &Language: + + + + + &Release notes + + + + + &Known issues + + + + + &Support + + + + + &About + + + + + <h1>Welcome to the %1 installer.</h1> + + + + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + + About %1 installer + + + + + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + + + + + %1 support + + + + + WelcomeViewStep + + + Welcome + + + + \ No newline at end of file diff --git a/lang/python/ko/LC_MESSAGES/python.mo b/lang/python/ko/LC_MESSAGES/python.mo new file mode 100644 index 0000000000000000000000000000000000000000..9dfa007bded575a5934de04c1ed37c5ebb18a03d GIT binary patch literal 413 zcmYL^K~KUk6vs7s+R?Lz9z1CD(T;%55)KoFE;zQ#Nuswp%9xCHX^Y?o@$30n?9{+N z`Q^2F|Nraj_sQ|sfz_eq)N*DyvRqjjd6wKZZ*6TnJ0(iK^V~ol;u;&9(6~*=wTqV$UpP@11^XYlE#eHMFkBeOK5M(F;ah|2ij|^= z@&!|xoBne)0&nkYo|, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 +msgid "Install packages." +msgstr "" + +#: src/modules/packages/main.py:66 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:69 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" diff --git a/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 0000000000000000000000000000000000000000..9dfa007bded575a5934de04c1ed37c5ebb18a03d GIT binary patch literal 413 zcmYL^K~KUk6vs7s+R?Lz9z1CD(T;%55)KoFE;zQ#Nuswp%9xCHX^Y?o@$30n?9{+N z`Q^2F|Nraj_sQ|sfz_eq)N*DyvRqjjd6wKZZ*6TnJ0(iK^V~ol;u;&9(6~*=wTqV$UpP@11^XYlE#eHMFkBeOK5M(F;ah|2ij|^= z@&!|xoBne)0&nkYo|, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "" + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "" From fa0518f9688fcc715f92f664bb31cd0726c31fbd Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 14 Jun 2018 05:41:43 -0400 Subject: [PATCH 268/385] [contextualprocess] Make conversion explicit - Should help with Qt 5.7 compatibility. Reported from Neptune Linux, #979 --- src/modules/contextualprocess/ContextualProcessJob.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/contextualprocess/ContextualProcessJob.cpp b/src/modules/contextualprocess/ContextualProcessJob.cpp index 380a92d0a..3c0a24433 100644 --- a/src/modules/contextualprocess/ContextualProcessJob.cpp +++ b/src/modules/contextualprocess/ContextualProcessJob.cpp @@ -66,7 +66,7 @@ struct ContextualProcessBinding void append( const QString& value, CalamaresUtils::CommandList* commands ) { checks.append( ValueCheck( value, commands ) ); - if ( value == '*' ) + if ( value == QLatin1Char('*') ) wildcard = commands; } From 5935d57069d2460d49dd4aee59cc4240b65fbcbf Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 14 Jun 2018 05:50:24 -0400 Subject: [PATCH 269/385] CMake: bump minimum Qt to 5.7 to match kpmcore --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1627ff32f..60048f44c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,7 +92,7 @@ set( _tx_bad uz lo ur gu fr_CH fa eo ko ) ### Required versions # # See DEPENDENCIES section below. -set( QT_VERSION 5.6.0 ) +set( QT_VERSION 5.7.0 ) set( YAMLCPP_VERSION 0.5.1 ) set( ECM_VERSION 5.18 ) set( PYTHONLIBS_VERSION 3.3 ) From 7eae99223ec414bd7f579cde48d7857e453dbb24 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 14 Jun 2018 06:11:39 -0400 Subject: [PATCH 270/385] CMake: check if rcc supports --format-version - The new format was introduced in Qt 5.7, and Qt 5.9 introduced the --format-version flag to rcc to switch back to the reproducible format 1. For distro's with Qt 5.7, don't use the new flag. - Reported from Neptune Linux, #979 --- CMakeModules/CalamaresAddTranslations.cmake | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index f5dd8c50c..924ee2483 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -22,6 +22,25 @@ include( CMakeParseArguments ) +if( NOT _rcc_version_support_checked ) + set( _rcc_version_support_checked TRUE ) + execute_process( + COMMAND echo "" + COMMAND ${Qt5Core_RCC_EXECUTABLE} --format-version 1 --list - + RESULT_VARIABLE _rcc_version_rv + ERROR_VARIABLE _rcc_version_dump + ) + message( STATUS "RCC ${_rcc_version_rv} ${_rcc_version_dump}" ) + if ( _rc_version_rv ) # Not zero + set( _rcc_version_support "" ) # Assume it is version 1 (Qt 5.7) or derpy (Qt 5.8) + else() + set( _rcc_version_support --format-version 1 ) + endif() + unset( _rcc_version_rv ) + unset( _rcc_version_dump ) +endif() + + # Internal macro for adding the C++ / Qt translations to the # build and install tree. Should be called only once, from # src/calamares/CMakeLists.txt. @@ -61,7 +80,7 @@ macro(add_calamares_translations language) add_custom_command( OUTPUT ${trans_outfile} COMMAND "${Qt5Core_RCC_EXECUTABLE}" - ARGS ${rcc_options} --format-version 1 -name ${trans_file} -o ${trans_outfile} ${trans_infile} + ARGS ${rcc_options} ${_rcc_version_support} -name ${trans_file} -o ${trans_outfile} ${trans_infile} MAIN_DEPENDENCY ${trans_infile} DEPENDS ${QM_FILES} ) From 0ffb6ed67ca49e04e9e528437d61bcc10f5765ad Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 14 Jun 2018 06:41:08 -0400 Subject: [PATCH 271/385] CMake: fix checks for supported rcc format versions --- CMakeModules/CalamaresAddTranslations.cmake | 23 +++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index 924ee2483..4892cc0f9 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -24,17 +24,32 @@ include( CMakeParseArguments ) if( NOT _rcc_version_support_checked ) set( _rcc_version_support_checked TRUE ) + + # Extract the executable name + get_property( _rcc_executable + TARGET ${Qt5Core_RCC_EXECUTABLE} + PROPERTY IMPORTED_LOCATION + ) + if( NOT _rcc_executable ) + # Weird, probably now uses Qt5::rcc which is wrong too + set( _rcc_executable ${Qt5Core_RCC_EXECUTABLE} ) + endif() + + # Try an empty RCC file with explicit format-version execute_process( COMMAND echo "" COMMAND ${Qt5Core_RCC_EXECUTABLE} --format-version 1 --list - RESULT_VARIABLE _rcc_version_rv ERROR_VARIABLE _rcc_version_dump ) - message( STATUS "RCC ${_rcc_version_rv} ${_rcc_version_dump}" ) - if ( _rc_version_rv ) # Not zero - set( _rcc_version_support "" ) # Assume it is version 1 (Qt 5.7) or derpy (Qt 5.8) - else() + if ( _rcc_version_rv EQUAL 0 ) + # Supported: force to the reproducible version set( _rcc_version_support --format-version 1 ) + else() + # Older Qt versions (5.7, 5.8) don't support setting the + # rcc format-version, so won't be reproducible if they + # default to version 2. + set( _rcc_version_support "" ) endif() unset( _rcc_version_rv ) unset( _rcc_version_dump ) From 2d29bf4449554015a1b2c90b370c78c0c189a246 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 14 Jun 2018 06:46:06 -0400 Subject: [PATCH 272/385] [contextualprocess] Make conversion explicit - Qt 5.7 doesn't like QLatin1Char comparison, so switch to a full string. Tested on Neptune Linux, #979 --- src/modules/contextualprocess/ContextualProcessJob.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/contextualprocess/ContextualProcessJob.cpp b/src/modules/contextualprocess/ContextualProcessJob.cpp index 3c0a24433..d3f4554d2 100644 --- a/src/modules/contextualprocess/ContextualProcessJob.cpp +++ b/src/modules/contextualprocess/ContextualProcessJob.cpp @@ -66,7 +66,7 @@ struct ContextualProcessBinding void append( const QString& value, CalamaresUtils::CommandList* commands ) { checks.append( ValueCheck( value, commands ) ); - if ( value == QLatin1Char('*') ) + if ( value == QLatin1Literal("*") ) wildcard = commands; } From 0ccca6902bb8a58203e2fd8b7b26225d8d1f8185 Mon Sep 17 00:00:00 2001 From: Gabriel Craciunescu Date: Mon, 11 Jun 2018 15:25:26 +0200 Subject: [PATCH 273/385] [grubcfg] fix inter-module dependency with plymouthcfg modules The plymouthcfg Calamares module is optional. Distributions which write filesystems with a full plymouth configuration won't even want to use it (see plymouthcfg docs). However, now grubcfg depends on plymouthcfg to run because the globalstorage value to trigger setting 'splash' in grub, is set in the plymouthcfg module. Just check for plymouth existence separately in the grub module. Fixes ea1c8a0e5ddfc6b72311cf744e2ac514c6630009 --- src/modules/grubcfg/main.py | 13 +++++++++---- src/modules/plymouthcfg/main.py | 7 +------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py index 197a22edf..419aa67c1 100644 --- a/src/modules/grubcfg/main.py +++ b/src/modules/grubcfg/main.py @@ -44,16 +44,21 @@ def modify_grub_default(partitions, root_mount_point, distributor): dracut_bin = libcalamares.utils.target_env_call( ["sh", "-c", "which dracut"] ) - have_dracut = dracut_bin == 0 # Shell exit value 0 means success + plymouth_bin = libcalamares.utils.target_env_call( + ["sh", "-c", "which plymouth"] + ) + + # Shell exit value 0 means success + have_plymouth = plymouth_bin == 0 + have_dracut = dracut_bin == 0 use_splash = "" swap_uuid = "" swap_outer_uuid = "" swap_outer_mappername = None - if libcalamares.globalstorage.contains("hasPlymouth"): - if libcalamares.globalstorage.value("hasPlymouth"): - use_splash = "splash" + if have_plymouth: + use_splash = "splash" cryptdevice_params = [] diff --git a/src/modules/plymouthcfg/main.py b/src/modules/plymouthcfg/main.py index 2cb4f6dac..0bbd80de4 100644 --- a/src/modules/plymouthcfg/main.py +++ b/src/modules/plymouthcfg/main.py @@ -40,14 +40,9 @@ class PlymouthController: "/etc/plymouth/plymouthd.conf"]) def detect(self): - isPlymouth = target_env_call(["which", "plymouth"]) + isPlymouth = target_env_call(["sh", "-c", "which plymouth"]) debug("which plymouth exit code: {!s}".format(isPlymouth)) - if isPlymouth == 0: - libcalamares.globalstorage.insert("hasPlymouth", True) - else: - libcalamares.globalstorage.insert("hasPlymouth", False) - return isPlymouth def run(self): From 011310091c13faab5c4673757d2d62700bec96eb Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 14 Jun 2018 14:50:47 +0200 Subject: [PATCH 274/385] [contextualprocess] QLatin1String -> QString As Kevin pointed out, there's an extra conversion involved here -- although with -O3 the difference boils away leaving only a call to a from-ASCII helper or a from-Latin1 helper. While here, coding-style. --- src/modules/contextualprocess/ContextualProcessJob.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/contextualprocess/ContextualProcessJob.cpp b/src/modules/contextualprocess/ContextualProcessJob.cpp index d3f4554d2..d79297029 100644 --- a/src/modules/contextualprocess/ContextualProcessJob.cpp +++ b/src/modules/contextualprocess/ContextualProcessJob.cpp @@ -66,7 +66,7 @@ struct ContextualProcessBinding void append( const QString& value, CalamaresUtils::CommandList* commands ) { checks.append( ValueCheck( value, commands ) ); - if ( value == QLatin1Literal("*") ) + if ( value == QString( "*" ) ) wildcard = commands; } From 67ad37581f16b1ff1bb79abea7dc7c8f67e590c7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 14 Jun 2018 14:57:17 +0200 Subject: [PATCH 275/385] [contextualprocess] Document corner-case The "*" will match its literal value, but is also used as a wildcard. --- src/modules/contextualprocess/contextualprocess.conf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/modules/contextualprocess/contextualprocess.conf b/src/modules/contextualprocess/contextualprocess.conf index 1f148328c..74bd2304a 100644 --- a/src/modules/contextualprocess/contextualprocess.conf +++ b/src/modules/contextualprocess/contextualprocess.conf @@ -17,7 +17,10 @@ # # As a special case, the value-check "*" matches any value, but **only** # if no other value-check matches. Use it as an *else* form for value- -# checks. Take care to put the asterisk in quotes. +# checks. Take care to put the asterisk in quotes. The value-check "*" +# **also** matches a literal asterisk as value; a confusing corner case +# is checking for an asterisk **and** having a wildcard match with +# different commands. This is currently not possible. # # Global configuration variables are not checked in a deterministic # order, so do not rely on commands from one variable-check to From 448c5eae169d10a243dcc35dc91e95c693d499d7 Mon Sep 17 00:00:00 2001 From: Raul Rodrigo Segura Date: Thu, 14 Jun 2018 16:33:58 +0200 Subject: [PATCH 276/385] style code --- src/libcalamaresui/modulesystem/PythonQtViewModule.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp index d010f2200..88b0c207f 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp @@ -96,7 +96,7 @@ PythonQtViewModule::loadSelf() cala.addObject( "utils", s_utils ); // Append configuration object, in module PythonQt.calamares - cala.addVariable("configuration",m_configurationMap); + cala.addVariable("configuration", m_configurationMap); // Basic stdout/stderr handling QObject::connect( PythonQt::self(), &PythonQt::pythonStdOut, From 98a158c6e5d3920cd92423921c3b25805a914e74 Mon Sep 17 00:00:00 2001 From: Caio Carvalho Date: Thu, 14 Jun 2018 15:37:00 -0300 Subject: [PATCH 277/385] [partition] kpmcore latest release doesn't support FileSystem::Type::Luks2 --- src/modules/partition/CMakeLists.txt | 4 ++++ src/modules/partition/core/PartitionCoreModule.cpp | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index 279eaf0ef..874440177 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -12,6 +12,10 @@ set_package_properties( ) if ( KPMcore_FOUND ) + if ( KPMcore_VERSION VERSION_GREATER "3.3.0") + add_definitions(-DWITH_KPMCOREGT33) # kpmcore greater than 3.3 + endif() + include_directories( ${KPMCORE_INCLUDE_DIR} ) include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index 1f84e55be..9646d31cd 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -618,7 +618,7 @@ PartitionCoreModule::scanForLVMPVs() if ( p->fileSystem().type() == FileSystem::Type::Lvm2_PV ) m_lvmPVs << p; - else if ( p->fileSystem().type() == FileSystem::Type::Luks || p->fileSystem().type() == FileSystem::Type::Luks2 ) + else if ( p->fileSystem().type() == FileSystem::Type::Luks ) { // Encrypted LVM PVs FileSystem* innerFS = static_cast(&p->fileSystem())->innerFS(); @@ -626,6 +626,16 @@ PartitionCoreModule::scanForLVMPVs() if ( innerFS && innerFS->type() == FileSystem::Type::Lvm2_PV ) m_lvmPVs << p; } +#ifdef WITH_KPMCOREGT33 + else if ( p->fileSystem().type() == FileSystem::Type::Luks2 ) + { + // Encrypted LVM PVs + FileSystem* innerFS = static_cast(&p->fileSystem())->innerFS(); + + if ( innerFS && innerFS->type() == FileSystem::Type::Lvm2_PV ) + m_lvmPVs << p; + } +#endif } } } From ac769d1de89f890586db524a307300f37c11d768 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 15 Jun 2018 04:41:41 -0400 Subject: [PATCH 278/385] Style: use QStringLiteral - In many cases, using QLatin1String is a de-optimization, when applied to a C string literal. Kevin Kofler pointed out that those should basically all be QStringLiteral, instead. (Compile tests with -O3 show that in the optimized object file, the code size difference is negligible). - Drop the explicit constructor entirely in cases where we're calling QProcess::execute(), for consistency. - Do a little less messing around in the mapping of keyboard locales to keyboard map names. --- src/calamares/CalamaresApplication.cpp | 8 ++-- src/modules/keyboard/KeyboardPage.cpp | 20 +++++---- src/modules/locale/GeoIPJSON.cpp | 2 +- src/modules/locale/GeoIPTests.cpp | 58 +++++++++++++------------- src/modules/locale/GeoIPXML.cpp | 2 +- src/modules/locale/test_geoip.cpp | 4 +- 6 files changed, 48 insertions(+), 46 deletions(-) diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index 2f61749b0..1e1d90f42 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -49,10 +49,10 @@ CalamaresApplication::CalamaresApplication( int& argc, char* argv[] ) // //, so we end up with ~/.cache/Calamares/calamares/ // which is excessively squidly. // - // setOrganizationName( QLatin1String( CALAMARES_ORGANIZATION_NAME ) ); - setOrganizationDomain( QLatin1String( CALAMARES_ORGANIZATION_DOMAIN ) ); - setApplicationName( QLatin1String( CALAMARES_APPLICATION_NAME ) ); - setApplicationVersion( QLatin1String( CALAMARES_VERSION ) ); + // setOrganizationName( QStringLiteral( CALAMARES_ORGANIZATION_NAME ) ); + setOrganizationDomain( QStringLiteral( CALAMARES_ORGANIZATION_DOMAIN ) ); + setApplicationName( QStringLiteral( CALAMARES_APPLICATION_NAME ) ); + setApplicationVersion( QStringLiteral( CALAMARES_VERSION ) ); cDebug() << "Calamares version:" << CALAMARES_VERSION; diff --git a/src/modules/keyboard/KeyboardPage.cpp b/src/modules/keyboard/KeyboardPage.cpp index 9e4b7e3ae..a9a8c02a7 100644 --- a/src/modules/keyboard/KeyboardPage.cpp +++ b/src/modules/keyboard/KeyboardPage.cpp @@ -95,8 +95,7 @@ KeyboardPage::KeyboardPage( QWidget* parent ) QString model = m_models.value( text, "pc105" ); // Set Xorg keyboard model - QProcess::execute( QLatin1Literal( "setxkbmap" ), - QStringList() << "-model" << model ); + QProcess::execute( "setxkbmap", QStringList{ "-model", model } ); } ); CALAMARES_RETRANSLATE( ui->retranslateUi( this ); ) @@ -356,11 +355,15 @@ KeyboardPage::onActivate() lang.replace( '-', '_' ); // Normalize separators } - if ( !lang.isEmpty() && specialCaseMap.contains( lang.toStdString() ) ) + if ( !lang.isEmpty() ) { - QLatin1String newLang( specialCaseMap.value( lang.toStdString() ).c_str() ); - cDebug() << " .. special case language" << lang << '>' << newLang; - lang = newLang; + std::string lang_s = lang.toStdString(); + if ( specialCaseMap.contains( lang_s ) ) + { + QString newLang = QString::fromStdString( specialCaseMap.value( lang_s ) ); + cDebug() << " .. special case language" << lang << "becomes" << newLang; + lang = newLang; + } } if ( !lang.isEmpty() ) { @@ -478,9 +481,8 @@ KeyboardPage::onListVariantCurrentItemChanged( QListWidgetItem* current, QListWi connect( &m_setxkbmapTimer, &QTimer::timeout, this, [=] { - QProcess::execute( QLatin1Literal( "setxkbmap" ), - xkbmap_args( QStringList(), layout, variant ) ); - cDebug() << "xkbmap selection changed to: " << layout << "-" << variant; + QProcess::execute( "setxkbmap", xkbmap_args( QStringList(), layout, variant ) ); + cDebug() << "xkbmap selection changed to: " << layout << '-' << variant; m_setxkbmapTimer.disconnect( this ); } ); m_setxkbmapTimer.start( QApplication::keyboardInputInterval() ); diff --git a/src/modules/locale/GeoIPJSON.cpp b/src/modules/locale/GeoIPJSON.cpp index ee99e6c11..b4daf2084 100644 --- a/src/modules/locale/GeoIPJSON.cpp +++ b/src/modules/locale/GeoIPJSON.cpp @@ -28,7 +28,7 @@ #include GeoIPJSON::GeoIPJSON(const QString& attribute) - : GeoIP( attribute.isEmpty() ? QLatin1String( "time_zone" ) : attribute ) + : GeoIP( attribute.isEmpty() ? QStringLiteral( "time_zone" ) : attribute ) { } diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp index d9c0a5898..af114611e 100644 --- a/src/modules/locale/GeoIPTests.cpp +++ b/src/modules/locale/GeoIPTests.cpp @@ -53,15 +53,15 @@ GeoIPTests::testJSON() GeoIPJSON handler; auto tz = handler.processReply( json_data_attribute ); - QCOMPARE( tz.first, QLatin1String( "Europe" ) ); - QCOMPARE( tz.second, QLatin1String( "Amsterdam" ) ); + QCOMPARE( tz.first, QStringLiteral( "Europe" ) ); + QCOMPARE( tz.second, QStringLiteral( "Amsterdam" ) ); // JSON is quite tolerant tz = handler.processReply( "time_zone: \"Europe/Brussels\"" ); - QCOMPARE( tz.second, QLatin1String( "Brussels" ) ); + QCOMPARE( tz.second, QStringLiteral( "Brussels" ) ); tz = handler.processReply( "time_zone: America/New_York\n" ); - QCOMPARE( tz.first, QLatin1String( "America" ) ); + QCOMPARE( tz.first, QStringLiteral( "America" ) ); } void GeoIPTests::testJSONalt() @@ -72,8 +72,8 @@ void GeoIPTests::testJSONalt() QCOMPARE( tz.first, QString() ); // Not found tz = handler.processReply( "tarifa: 12\nzona_de_hora: Europe/Madrid" ); - QCOMPARE( tz.first, QLatin1String( "Europe" ) ); - QCOMPARE( tz.second, QLatin1String( "Madrid" ) ); + QCOMPARE( tz.first, QStringLiteral( "Europe" ) ); + QCOMPARE( tz.second, QStringLiteral( "Madrid" ) ); } void @@ -122,8 +122,8 @@ GeoIPTests::testXML() GeoIPXML handler; auto tz = handler.processReply( xml_data_ubiquity ); - QCOMPARE( tz.first, QLatin1String( "Europe" ) ); - QCOMPARE( tz.second, QLatin1String( "Amsterdam" ) ); + QCOMPARE( tz.first, QStringLiteral( "Europe" ) ); + QCOMPARE( tz.second, QStringLiteral( "Amsterdam" ) ); #endif } @@ -137,8 +137,8 @@ GeoIPTests::testXML2() GeoIPXML handler; auto tz = handler.processReply( data ); - QCOMPARE( tz.first, QLatin1String( "America" ) ); - QCOMPARE( tz.second, QLatin1String( "North_Dakota/Beulah" ) ); // Without space + QCOMPARE( tz.first, QStringLiteral( "America" ) ); + QCOMPARE( tz.second, QStringLiteral( "North_Dakota/Beulah" ) ); // Without space #endif } @@ -149,8 +149,8 @@ void GeoIPTests::testXMLalt() GeoIPXML handler( "ZT" ); auto tz = handler.processReply( "Moon/Dark_side" ); - QCOMPARE( tz.first, QLatin1String( "Moon" ) ); - QCOMPARE( tz.second, QLatin1String( "Dark_side" ) ); + QCOMPARE( tz.first, QStringLiteral( "Moon" ) ); + QCOMPARE( tz.second, QStringLiteral( "Dark_side" ) ); #endif } @@ -172,26 +172,26 @@ GeoIPTests::testXMLbad() void GeoIPTests::testSplitTZ() { - auto tz = GeoIP::splitTZString( QLatin1String("Moon/Dark_side") ); - QCOMPARE( tz.first, QLatin1String("Moon") ); - QCOMPARE( tz.second, QLatin1String("Dark_side") ); + auto tz = GeoIP::splitTZString( QStringLiteral("Moon/Dark_side") ); + QCOMPARE( tz.first, QStringLiteral("Moon") ); + QCOMPARE( tz.second, QStringLiteral("Dark_side") ); // Some providers return weirdly escaped data - tz = GeoIP::splitTZString( QLatin1String("America\\/NewYork") ); - QCOMPARE( tz.first, QLatin1String("America") ); - QCOMPARE( tz.second, QLatin1String("NewYork") ); // That's not actually the zone name + tz = GeoIP::splitTZString( QStringLiteral("America\\/NewYork") ); + QCOMPARE( tz.first, QStringLiteral("America") ); + QCOMPARE( tz.second, QStringLiteral("NewYork") ); // That's not actually the zone name // Check that bogus data fails tz = GeoIP::splitTZString( QString() ); QCOMPARE( tz.first, QString() ); - tz = GeoIP::splitTZString( QLatin1String("America.NewYork") ); + tz = GeoIP::splitTZString( QStringLiteral("America.NewYork") ); QCOMPARE( tz.first, QString() ); // Check that three-level is split properly and space is replaced - tz = GeoIP::splitTZString( QLatin1String("America/North Dakota/Beulah") ); - QCOMPARE( tz.first, QLatin1String("America") ); - QCOMPARE( tz.second, QLatin1String("North_Dakota/Beulah") ); + tz = GeoIP::splitTZString( QStringLiteral("America/North Dakota/Beulah") ); + QCOMPARE( tz.first, QStringLiteral("America") ); + QCOMPARE( tz.second, QStringLiteral("North_Dakota/Beulah") ); } @@ -221,7 +221,7 @@ synchronous_get( const char* urlstring ) void GeoIPTests::testGet() { - if ( !QProcessEnvironment::systemEnvironment().contains( QLatin1String("TEST_HTTP_GET") ) ) + if ( !QProcessEnvironment::systemEnvironment().contains( QStringLiteral("TEST_HTTP_GET") ) ) { qDebug() << "Skipping HTTP GET tests"; return; @@ -232,8 +232,8 @@ void GeoIPTests::testGet() auto default_tz = default_handler.processReply( synchronous_get( "https://geoip.kde.org/v1/calamares" ) ); // This is bogus, because the test isn't always run by me - // QCOMPARE( default_tz.first, QLatin1String("Europe") ); - // QCOMPARE( default_tz.second, QLatin1String("Amsterdam") ); + // QCOMPARE( default_tz.first, QStringLiteral("Europe") ); + // QCOMPARE( default_tz.second, QStringLiteral("Amsterdam") ); QVERIFY( !default_tz.first.isEmpty() ); QVERIFY( !default_tz.second.isEmpty() ); @@ -242,12 +242,12 @@ void GeoIPTests::testGet() // services don't agree on the location of where the test is run. CHECK_GET( JSON, QString(), "https://geoip.kde.org/v1/calamares" ) // Check it's consistent CHECK_GET( JSON, QString(), "http://freegeoip.net/json/" ) // Original FreeGeoIP service - CHECK_GET( JSON, QLatin1String("timezone"), "https://ipapi.co/json" ) // Different JSON - CHECK_GET( JSON, QLatin1String("timezone"), "http://ip-api.com/json" ) + CHECK_GET( JSON, QStringLiteral("timezone"), "https://ipapi.co/json" ) // Different JSON + CHECK_GET( JSON, QStringLiteral("timezone"), "http://ip-api.com/json" ) - CHECK_GET( JSON, QLatin1String("location.time_zone"), "http://geoip.nekudo.com/api/" ) // 2-level JSON + CHECK_GET( JSON, QStringLiteral("location.time_zone"), "http://geoip.nekudo.com/api/" ) // 2-level JSON - CHECK_GET( JSON, QLatin1String("Location.TimeZone"), "https://geoip.kde.org/debug" ) // 2-level JSON + CHECK_GET( JSON, QStringLiteral("Location.TimeZone"), "https://geoip.kde.org/debug" ) // 2-level JSON #ifdef HAVE_XML CHECK_GET( XML, QString(), "http://geoip.ubuntu.com/lookup" ) // Ubiquity's XML format diff --git a/src/modules/locale/GeoIPXML.cpp b/src/modules/locale/GeoIPXML.cpp index 0fb5359f3..bd675c2ef 100644 --- a/src/modules/locale/GeoIPXML.cpp +++ b/src/modules/locale/GeoIPXML.cpp @@ -24,7 +24,7 @@ #include GeoIPXML::GeoIPXML( const QString& element ) - : GeoIP( element.isEmpty() ? QLatin1String( "TimeZone" ) : element ) + : GeoIP( element.isEmpty() ? QStringLiteral( "TimeZone" ) : element ) { } diff --git a/src/modules/locale/test_geoip.cpp b/src/modules/locale/test_geoip.cpp index 7b6584f0c..5ba43f72e 100644 --- a/src/modules/locale/test_geoip.cpp +++ b/src/modules/locale/test_geoip.cpp @@ -38,10 +38,10 @@ int main(int argc, char** argv) } GeoIP* handler = nullptr; - if ( QLatin1String( "json" ) == argv[1] ) + if ( QStringLiteral( "json" ) == argv[1] ) handler = new GeoIPJSON; #ifdef HAVE_XML - else if ( QLatin1String( "xml" ) == argv[1] ) + else if ( QStringLiteral( "xml" ) == argv[1] ) handler = new GeoIPXML; #endif From 99163c9a68300cb75fef26572f6686f4ff47e8fd Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 15 Jun 2018 04:46:53 -0400 Subject: [PATCH 279/385] Style: stray space --- src/modules/locale/LocalePage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index e4f36daad..d8d3a530d 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -498,7 +498,7 @@ LocalePage::updateGlobalStorage() #ifndef DEBUG_TIMEZONES if ( Calamares::Settings::instance()->doChroot() ) { - QProcess ::execute( "timedatectl", // depends on systemd + QProcess::execute( "timedatectl", // depends on systemd { "set-timezone", location.region + '/' + location.zone } ); } From d2f2aa9a97806824846fe24e67f9f212b3ff999f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 15 Jun 2018 05:29:03 -0400 Subject: [PATCH 280/385] [branding] Link to the examples repository --- src/branding/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/branding/README.md b/src/branding/README.md index 6503bef49..f85ad8f67 100644 --- a/src/branding/README.md +++ b/src/branding/README.md @@ -24,9 +24,11 @@ so that it can be run directly from the build directory for testing purposes: Since the slideshow can be **any** QML, it is limited only by your designers imagination and your QML experience. For straightforward presentations, -see the documentation below. There are more examples in the *calamares-branding* +see the documentation below. There are more examples in the [calamares-branding][1] repository. +[1] https://github.com/calamares/calamares-branding + ## Translations QML files in a branding component can be translated. Translations should From dd8e53dc225512bfb870cb043fd57ddf7520900d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 15 Jun 2018 05:59:11 -0400 Subject: [PATCH 281/385] Copyright: update copyright lines on files touched in 2018 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Contributions from: Adriaan de Groot Gabriel Craciunescu AlmAck Andrius Štikonas Caio Carvalho Raul Rodrigo Segura --- src/branding/default/show.qml | 3 ++- src/calamares/CalamaresApplication.cpp | 1 + src/calamares/CalamaresApplication.h | 1 + src/calamares/main.cpp | 2 +- src/libcalamares/JobQueue.cpp | 1 + src/libcalamares/ProcessJob.cpp | 1 + src/libcalamares/ProcessJob.h | 2 +- src/libcalamares/PythonHelper.cpp | 2 +- src/libcalamares/PythonHelper.h | 1 + src/libcalamares/PythonJob.cpp | 1 + src/libcalamares/PythonJobApi.cpp | 2 +- src/libcalamares/PythonJobApi.h | 2 +- src/libcalamares/Settings.cpp | 2 +- src/libcalamares/Settings.h | 2 +- src/libcalamares/utils/CalamaresUtils.cpp | 1 + src/libcalamares/utils/CalamaresUtils.h | 1 + src/libcalamares/utils/PluginFactory.cpp | 2 +- src/libcalamares/utils/PluginFactory.h | 4 ++-- src/libcalamaresui/Branding.cpp | 2 +- src/libcalamaresui/modulesystem/Module.cpp | 2 +- src/libcalamaresui/modulesystem/ModuleManager.cpp | 1 + src/libcalamaresui/modulesystem/ModuleManager.h | 1 + src/libcalamaresui/modulesystem/PythonQtViewModule.cpp | 2 ++ src/libcalamaresui/modulesystem/ViewModule.cpp | 2 +- src/libcalamaresui/utils/CalamaresUtilsGui.cpp | 2 +- src/libcalamaresui/utils/CalamaresUtilsGui.h | 2 +- src/libcalamaresui/viewpages/PythonQtViewStep.cpp | 1 + src/modules/contextualprocess/Tests.cpp | 2 +- src/modules/dummycpp/DummyCppJob.cpp | 1 + src/modules/finished/FinishedPage.cpp | 2 +- src/modules/grubcfg/main.py | 2 +- src/modules/hwclock/main.py | 2 +- src/modules/keyboard/KeyboardPage.cpp | 2 +- src/modules/keyboard/keyboardwidget/keyboardpreview.cpp | 1 + src/modules/license/LicensePage.cpp | 3 ++- src/modules/license/LicensePage.h | 1 + src/modules/locale/LocaleConfiguration.cpp | 2 +- src/modules/locale/LocaleConfiguration.h | 2 +- src/modules/locale/LocalePage.cpp | 2 +- src/modules/locale/LocaleViewStep.h | 1 + src/modules/locale/timezonewidget/timezonewidget.cpp | 2 +- src/modules/locale/timezonewidget/timezonewidget.h | 1 + src/modules/localecfg/main.py | 1 + src/modules/netinstall/NetInstallPage.cpp | 2 +- src/modules/netinstall/NetInstallPage.h | 2 +- src/modules/netinstall/NetInstallViewStep.cpp | 2 +- src/modules/netinstall/PackageModel.cpp | 2 +- src/modules/partition/core/KPMHelpers.cpp | 1 + src/modules/partition/core/PartUtils.h | 1 + src/modules/partition/core/PartitionActions.cpp | 2 +- src/modules/partition/core/PartitionCoreModule.cpp | 3 ++- src/modules/partition/core/PartitionInfo.cpp | 1 + src/modules/partition/core/PartitionInfo.h | 1 + src/modules/partition/core/PartitionModel.cpp | 1 + src/modules/partition/gui/ChoicePage.cpp | 2 +- src/modules/partition/gui/ChoicePage.h | 1 + src/modules/partition/gui/CreatePartitionDialog.cpp | 3 +++ src/modules/partition/gui/CreatePartitionDialog.h | 1 + src/modules/partition/gui/EditExistingPartitionDialog.cpp | 1 + src/modules/partition/gui/EditExistingPartitionDialog.h | 1 + src/modules/partition/gui/PartitionPage.cpp | 2 ++ src/modules/partition/gui/PartitionPage.h | 1 + src/modules/partition/gui/PartitionViewStep.cpp | 1 + src/modules/partition/gui/ReplaceWidget.h | 1 + src/modules/partition/jobs/ClearMountsJob.cpp | 1 + src/modules/plasmalnf/PlasmaLnfPage.cpp | 2 +- src/modules/plasmalnf/PlasmaLnfPage.h | 2 +- src/modules/plasmalnf/PlasmaLnfViewStep.cpp | 2 +- src/modules/plasmalnf/PlasmaLnfViewStep.h | 2 +- src/modules/plymouthcfg/main.py | 1 + src/modules/shellprocess/Tests.cpp | 2 +- src/modules/test_conf.cpp | 2 +- src/modules/tracking/TrackingJobs.cpp | 2 +- src/modules/tracking/TrackingJobs.h | 2 +- src/modules/tracking/TrackingPage.cpp | 2 +- src/modules/users/SetHostNameJob.cpp | 1 + src/modules/users/UsersPage.cpp | 2 +- src/modules/users/UsersPage.h | 2 +- src/modules/users/UsersViewStep.cpp | 2 +- src/modules/welcome/WelcomeViewStep.cpp | 1 + 80 files changed, 88 insertions(+), 45 deletions(-) diff --git a/src/branding/default/show.qml b/src/branding/default/show.qml index ad7c92783..b724a4832 100644 --- a/src/branding/default/show.qml +++ b/src/branding/default/show.qml @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,7 +31,7 @@ Presentation repeat: true onTriggered: presentation.goToNextSlide() } - + Slide { Image { diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index 1e1d90f42..e41516c60 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/CalamaresApplication.h b/src/calamares/CalamaresApplication.h index a588afcee..f9c919aa6 100644 --- a/src/calamares/CalamaresApplication.h +++ b/src/calamares/CalamaresApplication.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/main.cpp b/src/calamares/main.cpp index 1c1ba2181..d4bd2743d 100644 --- a/src/calamares/main.cpp +++ b/src/calamares/main.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp index 339fd8457..257fb51a7 100644 --- a/src/libcalamares/JobQueue.cpp +++ b/src/libcalamares/JobQueue.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/ProcessJob.cpp b/src/libcalamares/ProcessJob.cpp index 55e25254c..3cf4eec49 100644 --- a/src/libcalamares/ProcessJob.cpp +++ b/src/libcalamares/ProcessJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/ProcessJob.h b/src/libcalamares/ProcessJob.h index 59a532023..d01dbb676 100644 --- a/src/libcalamares/ProcessJob.h +++ b/src/libcalamares/ProcessJob.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/PythonHelper.cpp b/src/libcalamares/PythonHelper.cpp index e5eb85084..d6001055e 100644 --- a/src/libcalamares/PythonHelper.cpp +++ b/src/libcalamares/PythonHelper.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/PythonHelper.h b/src/libcalamares/PythonHelper.h index d48e5eaab..693d80d8b 100644 --- a/src/libcalamares/PythonHelper.h +++ b/src/libcalamares/PythonHelper.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/PythonJob.cpp b/src/libcalamares/PythonJob.cpp index 92dbedef9..65a5c4506 100644 --- a/src/libcalamares/PythonJob.cpp +++ b/src/libcalamares/PythonJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/PythonJobApi.cpp b/src/libcalamares/PythonJobApi.cpp index a5bae6149..f540c2683 100644 --- a/src/libcalamares/PythonJobApi.cpp +++ b/src/libcalamares/PythonJobApi.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/PythonJobApi.h b/src/libcalamares/PythonJobApi.h index 0e68d7936..a19a0581b 100644 --- a/src/libcalamares/PythonJobApi.h +++ b/src/libcalamares/PythonJobApi.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/Settings.cpp b/src/libcalamares/Settings.cpp index bc645ab39..80f6836bb 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/Settings.h b/src/libcalamares/Settings.h index 35527243a..2330f5747 100644 --- a/src/libcalamares/Settings.h +++ b/src/libcalamares/Settings.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/utils/CalamaresUtils.cpp b/src/libcalamares/utils/CalamaresUtils.cpp index dde3f9a13..79f55974d 100644 --- a/src/libcalamares/utils/CalamaresUtils.cpp +++ b/src/libcalamares/utils/CalamaresUtils.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2013-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Originally from Tomahawk, portions: * Copyright 2010-2011, Christian Muehlhaeuser diff --git a/src/libcalamares/utils/CalamaresUtils.h b/src/libcalamares/utils/CalamaresUtils.h index 13caf1cad..e64fe4eec 100644 --- a/src/libcalamares/utils/CalamaresUtils.h +++ b/src/libcalamares/utils/CalamaresUtils.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2013-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Originally from Tomahawk, portions: * Copyright 2010-2011, Christian Muehlhaeuser diff --git a/src/libcalamares/utils/PluginFactory.cpp b/src/libcalamares/utils/PluginFactory.cpp index d53b6474f..124af16f4 100644 --- a/src/libcalamares/utils/PluginFactory.cpp +++ b/src/libcalamares/utils/PluginFactory.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Based on KPluginFactory from KCoreAddons, KDE project * Copyright 2007, Matthias Kretz diff --git a/src/libcalamares/utils/PluginFactory.h b/src/libcalamares/utils/PluginFactory.h index 0ca7917c4..22966b829 100644 --- a/src/libcalamares/utils/PluginFactory.h +++ b/src/libcalamares/utils/PluginFactory.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Based on KPluginFactory from KCoreAddons, KDE project * Copyright 2007, Matthias Kretz @@ -111,7 +111,7 @@ namespace Calamares * T(QObject *parent, const QVariantList &args) * \endcode * - * You should typically use CALAMARES_PLUGIN_FACTORY_DEFINITION() in your plugin code to + * You should typically use CALAMARES_PLUGIN_FACTORY_DEFINITION() in your plugin code to * create the factory. The pattern is * * \code diff --git a/src/libcalamaresui/Branding.cpp b/src/libcalamaresui/Branding.cpp index c71b1daa5..086e20b7d 100644 --- a/src/libcalamaresui/Branding.cpp +++ b/src/libcalamaresui/Branding.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index 05394e69f..758ee5e47 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 6361fa20b..6d13c9564 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index e1763d93c..eff09b321 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp index 88b0c207f..b667b6a81 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp @@ -1,6 +1,8 @@ /* === This file is part of Calamares - === * * Copyright 2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot + * Copyright 2018, Raul Rodrigo Segura * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/ViewModule.cpp b/src/libcalamaresui/modulesystem/ViewModule.cpp index 317d32712..492d58fda 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.cpp +++ b/src/libcalamaresui/modulesystem/ViewModule.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp index e4dc6b555..425ee1811 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.h b/src/libcalamaresui/utils/CalamaresUtilsGui.h index 98a49db61..4b041466d 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.h +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp index 72e434780..4915fe120 100644 --- a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/contextualprocess/Tests.cpp b/src/modules/contextualprocess/Tests.cpp index ed6d4f278..89fb1922c 100644 --- a/src/modules/contextualprocess/Tests.cpp +++ b/src/modules/contextualprocess/Tests.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/dummycpp/DummyCppJob.cpp b/src/modules/dummycpp/DummyCppJob.cpp index fb5a2db3a..b404eaf63 100644 --- a/src/modules/dummycpp/DummyCppJob.cpp +++ b/src/modules/dummycpp/DummyCppJob.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Teo Mrnjavac (original dummypython code) * Copyright 2016, Kevin Kofler + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/finished/FinishedPage.cpp b/src/modules/finished/FinishedPage.cpp index ca03ccb89..ef3b0745e 100644 --- a/src/modules/finished/FinishedPage.cpp +++ b/src/modules/finished/FinishedPage.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py index 419aa67c1..b19ebf588 100644 --- a/src/modules/grubcfg/main.py +++ b/src/modules/grubcfg/main.py @@ -7,7 +7,7 @@ # Copyright 2015-2017, Teo Mrnjavac # Copyright 2017, Alf Gaida # Copyright 2017, Adriaan de Groot -# Copyright 2017, Gabriel Craciunescu +# Copyright 2017-2018, Gabriel Craciunescu # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/hwclock/main.py b/src/modules/hwclock/main.py index e2f70ee61..9cac929ba 100644 --- a/src/modules/hwclock/main.py +++ b/src/modules/hwclock/main.py @@ -6,7 +6,7 @@ # Copyright 2014 - 2015, Philip Müller # Copyright 2014, Teo Mrnjavac # Copyright 2017, Alf Gaida -# Copyright 2017, Gabriel Craciunescu +# Copyright 2017-2018, Gabriel Craciunescu # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/keyboard/KeyboardPage.cpp b/src/modules/keyboard/KeyboardPage.cpp index a9a8c02a7..6f4473014 100644 --- a/src/modules/keyboard/KeyboardPage.cpp +++ b/src/modules/keyboard/KeyboardPage.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Portions from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp b/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp index 9cdf831e6..26aa18d87 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp +++ b/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Portions from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/license/LicensePage.cpp b/src/modules/license/LicensePage.cpp index 12d259e98..351c55d79 100644 --- a/src/modules/license/LicensePage.cpp +++ b/src/modules/license/LicensePage.cpp @@ -3,6 +3,7 @@ * Copyright 2015, Anke Boersma * Copyright 2015, Alexandre Arnt * Copyright 2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -57,7 +58,7 @@ LicensePage::LicensePage(QWidget *parent) CalamaresUtils::defaultFontHeight() * 3, CalamaresUtils::defaultFontHeight(), CalamaresUtils::defaultFontHeight() ); - + ui->acceptFrame->setFrameStyle( QFrame::NoFrame | QFrame::Plain ); ui->acceptFrame->setStyleSheet( "#acceptFrame { border: 1px solid red;" "background-color: #fff6f6;" diff --git a/src/modules/license/LicensePage.h b/src/modules/license/LicensePage.h index 4f84b55be..300e9e309 100644 --- a/src/modules/license/LicensePage.h +++ b/src/modules/license/LicensePage.h @@ -3,6 +3,7 @@ * Copyright 2015, Anke Boersma * Copyright 2015, Alexandre Arnt * Copyright 2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/LocaleConfiguration.cpp b/src/modules/locale/LocaleConfiguration.cpp index f4cbc800d..7c8ad3305 100644 --- a/src/modules/locale/LocaleConfiguration.cpp +++ b/src/modules/locale/LocaleConfiguration.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/LocaleConfiguration.h b/src/modules/locale/LocaleConfiguration.h index 4f6cde556..c077ef6f7 100644 --- a/src/modules/locale/LocaleConfiguration.h +++ b/src/modules/locale/LocaleConfiguration.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index d8d3a530d..9aad283c6 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index b02f6adbd..8006bc616 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index 6609160d5..7b5a2f0d3 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Originally from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/locale/timezonewidget/timezonewidget.h b/src/modules/locale/timezonewidget/timezonewidget.h index 8589dc74d..dd49b3311 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.h +++ b/src/modules/locale/timezonewidget/timezonewidget.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Originally from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/localecfg/main.py b/src/modules/localecfg/main.py index e6c37133b..d44d7da2b 100644 --- a/src/modules/localecfg/main.py +++ b/src/modules/localecfg/main.py @@ -6,6 +6,7 @@ # Copyright 2014, Anke Boersma # Copyright 2015, Philip Müller # Copyright 2016, Teo Mrnjavac +# Copyright 2018, AlmAck # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/NetInstallPage.cpp b/src/modules/netinstall/NetInstallPage.cpp index 5272d83fd..39282ef00 100644 --- a/src/modules/netinstall/NetInstallPage.cpp +++ b/src/modules/netinstall/NetInstallPage.cpp @@ -2,7 +2,7 @@ * Copyright 2016, Luca Giambonini * Copyright 2016, Lisa Vitolo * Copyright 2017, Kyle Robbertze - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * Copyright 2017, Gabriel Craciunescu * * Calamares is free software: you can redistribute it and/or modify diff --git a/src/modules/netinstall/NetInstallPage.h b/src/modules/netinstall/NetInstallPage.h index 3dc8ee46e..7ec37e7ac 100644 --- a/src/modules/netinstall/NetInstallPage.h +++ b/src/modules/netinstall/NetInstallPage.h @@ -2,7 +2,7 @@ * Copyright 2016, Luca Giambonini * Copyright 2016, Lisa Vitolo * Copyright 2017, Kyle Robbertze - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/NetInstallViewStep.cpp b/src/modules/netinstall/NetInstallViewStep.cpp index de4480cbb..6dd824b32 100644 --- a/src/modules/netinstall/NetInstallViewStep.cpp +++ b/src/modules/netinstall/NetInstallViewStep.cpp @@ -2,7 +2,7 @@ * Copyright 2016, Luca Giambonini * Copyright 2016, Lisa Vitolo * Copyright 2017, Kyle Robbertze - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/PackageModel.cpp b/src/modules/netinstall/PackageModel.cpp index 3e721c017..f64bd778f 100644 --- a/src/modules/netinstall/PackageModel.cpp +++ b/src/modules/netinstall/PackageModel.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright (c) 2017, Kyle Robbertze - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/KPMHelpers.cpp b/src/modules/partition/core/KPMHelpers.cpp index 3f3134c5b..f8be44345 100644 --- a/src/modules/partition/core/KPMHelpers.cpp +++ b/src/modules/partition/core/KPMHelpers.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2015-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartUtils.h b/src/modules/partition/core/PartUtils.h index c81258712..b94e20567 100644 --- a/src/modules/partition/core/PartUtils.h +++ b/src/modules/partition/core/PartUtils.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index e1822d434..d654edf12 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index f636d15bb..8c0ed878a 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -2,7 +2,8 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot + * Copyright 2018, Caio Carvalho * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionInfo.cpp b/src/modules/partition/core/PartitionInfo.cpp index dcd49d2e9..9cc03fc9d 100644 --- a/src/modules/partition/core/PartitionInfo.cpp +++ b/src/modules/partition/core/PartitionInfo.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionInfo.h b/src/modules/partition/core/PartitionInfo.h index 9003bf997..a9c391059 100644 --- a/src/modules/partition/core/PartitionInfo.h +++ b/src/modules/partition/core/PartitionInfo.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionModel.cpp b/src/modules/partition/core/PartitionModel.cpp index 0265da29d..8f0ecba81 100644 --- a/src/modules/partition/core/PartitionModel.cpp +++ b/src/modules/partition/core/PartitionModel.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index fdc68ef97..bef6e4966 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/ChoicePage.h b/src/modules/partition/gui/ChoicePage.h index 91274d152..c36747e93 100644 --- a/src/modules/partition/gui/ChoicePage.h +++ b/src/modules/partition/gui/ChoicePage.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index 439583be9..0e7602c08 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -2,6 +2,9 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot + * Copyright 2018, Andrius Štikonas + * Copyright 2018, Caio Carvalho * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/CreatePartitionDialog.h b/src/modules/partition/gui/CreatePartitionDialog.h index 769edb5de..2f3cc14a5 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.h +++ b/src/modules/partition/gui/CreatePartitionDialog.h @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index c0fff50a8..3ad5080b4 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Flags handling originally from KDE Partition Manager, * Copyright 2008-2009, Volker Lanz diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.h b/src/modules/partition/gui/EditExistingPartitionDialog.h index 106ba6639..e98563bc0 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.h +++ b/src/modules/partition/gui/EditExistingPartitionDialog.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/PartitionPage.cpp b/src/modules/partition/gui/PartitionPage.cpp index 426667a08..09badbf94 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -2,6 +2,8 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2015-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot + * Copyright 2018, Andrius Štikonas * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/PartitionPage.h b/src/modules/partition/gui/PartitionPage.h index d7c823a61..2ab7f5839 100644 --- a/src/modules/partition/gui/PartitionPage.h +++ b/src/modules/partition/gui/PartitionPage.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index 45676e440..b49b6c93b 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2014-2017, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/ReplaceWidget.h b/src/modules/partition/gui/ReplaceWidget.h index 15015f120..c09c604b1 100644 --- a/src/modules/partition/gui/ReplaceWidget.h +++ b/src/modules/partition/gui/ReplaceWidget.h @@ -2,6 +2,7 @@ * * Copyright 2014-2015, Teo Mrnjavac * Copyright 2014, Aurélien Gâteau + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/ClearMountsJob.cpp b/src/modules/partition/jobs/ClearMountsJob.cpp index 1a48becad..da6bee325 100644 --- a/src/modules/partition/jobs/ClearMountsJob.cpp +++ b/src/modules/partition/jobs/ClearMountsJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/plasmalnf/PlasmaLnfPage.cpp b/src/modules/plasmalnf/PlasmaLnfPage.cpp index d34042e4f..df55cb3a4 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.cpp +++ b/src/modules/plasmalnf/PlasmaLnfPage.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/plasmalnf/PlasmaLnfPage.h b/src/modules/plasmalnf/PlasmaLnfPage.h index b90e4cfb4..5a4c68b4e 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.h +++ b/src/modules/plasmalnf/PlasmaLnfPage.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp index c5b9d5a83..ef319bde4 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.h b/src/modules/plasmalnf/PlasmaLnfViewStep.h index 192d7085e..3343fb85a 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.h +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/plymouthcfg/main.py b/src/modules/plymouthcfg/main.py index 0bbd80de4..6f1128b7e 100644 --- a/src/modules/plymouthcfg/main.py +++ b/src/modules/plymouthcfg/main.py @@ -5,6 +5,7 @@ # # Copyright 2016, Artoo # Copyright 2017, Alf Gaida +# Copyright 2018, Gabriel Craciunescu # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/shellprocess/Tests.cpp b/src/modules/shellprocess/Tests.cpp index 7ebb8e624..068aefda5 100644 --- a/src/modules/shellprocess/Tests.cpp +++ b/src/modules/shellprocess/Tests.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/test_conf.cpp b/src/modules/test_conf.cpp index 082f626c8..b5362d25a 100644 --- a/src/modules/test_conf.cpp +++ b/src/modules/test_conf.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingJobs.cpp b/src/modules/tracking/TrackingJobs.cpp index 717d636d3..42c2acfab 100644 --- a/src/modules/tracking/TrackingJobs.cpp +++ b/src/modules/tracking/TrackingJobs.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingJobs.h b/src/modules/tracking/TrackingJobs.h index 4ad3652ca..94a0c12bb 100644 --- a/src/modules/tracking/TrackingJobs.h +++ b/src/modules/tracking/TrackingJobs.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingPage.cpp b/src/modules/tracking/TrackingPage.cpp index 26858442f..924ac43d9 100644 --- a/src/modules/tracking/TrackingPage.cpp +++ b/src/modules/tracking/TrackingPage.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/SetHostNameJob.cpp b/src/modules/users/SetHostNameJob.cpp index 87c89c3b8..62b1c61a7 100644 --- a/src/modules/users/SetHostNameJob.cpp +++ b/src/modules/users/SetHostNameJob.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Rohan Garg * Copyright 2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 86e010469..04b851cf9 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Portions from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 817f73d0b..a238461ec 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Portions from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 37d86819e..8ff7b0e7b 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * Copyright 2017, Gabriel Craciunescu * * Calamares is free software: you can redistribute it and/or modify diff --git a/src/modules/welcome/WelcomeViewStep.cpp b/src/modules/welcome/WelcomeViewStep.cpp index 8534b808c..86740fb3d 100644 --- a/src/modules/welcome/WelcomeViewStep.cpp +++ b/src/modules/welcome/WelcomeViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by From fa08e0ad7393b433ee9ed70a9ff736bbed501b29 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 15 Jun 2018 06:15:43 -0400 Subject: [PATCH 282/385] Copyright: fix bad email address --- src/modules/partition/core/PartitionCoreModule.cpp | 2 +- src/modules/plasmalnf/PlasmaLnfViewStep.h | 2 +- src/modules/tracking/TrackingJobs.cpp | 2 +- src/modules/tracking/TrackingJobs.h | 2 +- src/modules/tracking/TrackingViewStep.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index 8c0ed878a..57a02d6e0 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -3,7 +3,7 @@ * Copyright 2014, Aurélien Gâteau * Copyright 2014-2015, Teo Mrnjavac * Copyright 2017-2018, Adriaan de Groot - * Copyright 2018, Caio Carvalho + * Copyright 2018, Caio Carvalho * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.h b/src/modules/plasmalnf/PlasmaLnfViewStep.h index 3343fb85a..b9a6b72e6 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.h +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingJobs.cpp b/src/modules/tracking/TrackingJobs.cpp index 42c2acfab..7875ee6db 100644 --- a/src/modules/tracking/TrackingJobs.cpp +++ b/src/modules/tracking/TrackingJobs.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingJobs.h b/src/modules/tracking/TrackingJobs.h index 94a0c12bb..a379441c9 100644 --- a/src/modules/tracking/TrackingJobs.h +++ b/src/modules/tracking/TrackingJobs.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingViewStep.h b/src/modules/tracking/TrackingViewStep.h index c024f1d3a..dc3ae823e 100644 --- a/src/modules/tracking/TrackingViewStep.h +++ b/src/modules/tracking/TrackingViewStep.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by From b92bef21f888e60764f292be77095c99acc35f18 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 15 Jun 2018 06:21:05 -0400 Subject: [PATCH 283/385] [libcalamares] Avoid using namespace std; --- src/libcalamares/utils/CalamaresUtils.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/libcalamares/utils/CalamaresUtils.cpp b/src/libcalamares/utils/CalamaresUtils.cpp index 79f55974d..6a892511a 100644 --- a/src/libcalamares/utils/CalamaresUtils.cpp +++ b/src/libcalamares/utils/CalamaresUtils.cpp @@ -34,11 +34,9 @@ #include #include - -// stdc++ #include -using namespace std; +using std::cerr; namespace CalamaresUtils { From def459a29d5d447a03ff228e3a4ccfa19725f6db Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 15 Jun 2018 07:11:17 -0400 Subject: [PATCH 284/385] [libcalamaresui] Read emergency setting from module.desc - Read setting from the module descriptor - Document optional settings - Add EMERGENCY keyword to the CMake helper functions --- CMakeModules/CalamaresAddPlugin.cmake | 6 +++++- src/libcalamaresui/modulesystem/Module.cpp | 6 ++++++ src/libcalamaresui/modulesystem/Module.h | 6 +++--- src/modules/README.md | 24 ++++++++++++++++++++-- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/CMakeModules/CalamaresAddPlugin.cmake b/CMakeModules/CalamaresAddPlugin.cmake index e02102829..ade323689 100644 --- a/CMakeModules/CalamaresAddPlugin.cmake +++ b/CMakeModules/CalamaresAddPlugin.cmake @@ -38,6 +38,7 @@ # RESOURCES resource-file # [NO_INSTALL] # [SHARED_LIB] +# [EMERGENCY] # ) include( CMakeParseArguments ) @@ -47,7 +48,7 @@ include( CMakeColors ) function( calamares_add_plugin ) # parse arguments ( name needs to be saved before passing ARGN into the macro ) set( NAME ${ARGV0} ) - set( options NO_INSTALL SHARED_LIB ) + set( options NO_INSTALL SHARED_LIB EMERGENCY ) set( oneValueArgs NAME TYPE EXPORT_MACRO RESOURCES ) set( multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS ) cmake_parse_arguments( PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) @@ -132,6 +133,9 @@ function( calamares_add_plugin ) set( _type ${PLUGIN_TYPE} ) file( WRITE ${_file} "# AUTO-GENERATED metadata file\n# Syntax is YAML 1.2\n---\n" ) file( APPEND ${_file} "type: \"${_type}\"\nname: \"${PLUGIN_NAME}\"\ninterface: \"qtplugin\"\nload: \"lib${target}.so\"\n" ) + if ( PLUGIN_EMERGENCY ) + file( APPEND ${_file} "emergency: true\n" ) + endif() endif() install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE} diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index 2d0de8e55..d334fda17 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -290,6 +290,12 @@ void Module::initFrom( const QVariantMap& moduleDescriptor ) { m_name = moduleDescriptor.value( "name" ).toString(); + + auto em = QStringLiteral( "emergency" ); + if ( moduleDescriptor.contains( em ) ) + { + m_emergency = moduleDescriptor[ em ].toBool(); + } } } //ns diff --git a/src/libcalamaresui/modulesystem/Module.h b/src/libcalamaresui/modulesystem/Module.h index 9b481b157..219902b17 100644 --- a/src/libcalamaresui/modulesystem/Module.h +++ b/src/libcalamaresui/modulesystem/Module.h @@ -182,9 +182,11 @@ public: protected: explicit Module(); virtual void initFrom( const QVariantMap& moduleDescriptor ); - bool m_loaded; QVariantMap m_configurationMap; + bool m_loaded = false; + bool m_emergency = false; + private: void loadConfigurationFile( const QString& configFileName ); //throws YAML::Exception @@ -193,8 +195,6 @@ private: QString m_directory; QString m_instanceId; - bool m_emergency; - friend void ::operator>>( const QVariantMap& moduleDescriptor, Calamares::Module* m ); }; diff --git a/src/modules/README.md b/src/modules/README.md index a2ec06144..4b1d8ef2f 100644 --- a/src/modules/README.md +++ b/src/modules/README.md @@ -43,15 +43,21 @@ module's name, type, interface and possibly other properties. The name of the module as defined in `module.desc` must be the same as the name of the module's directory. -Module descriptors must have the following keys: +Module descriptors **must** have the following keys: - *name* (an identifier; must be the same as the directory name) - *type* ("job" or "view") - *interface* (see below for the different interfaces; generally we refer to the kinds of modules by their interface) +Module descriptors **may** have the following keys: +- *required* **unimplemented** (a list of modules which are required for this module + to operate properly) +- *emergency* (a boolean value, set to true to mark the module + as an emergency module) + ## Module-specific configuration -A Calamares module *may* read a module configuration file, +A Calamares module **may** read a module configuration file, named `.conf`. If such a file is present in the module's directory, it is shipped as a *default* configuration file. The module configuration file, if it exists, is a YAML 1.2 document @@ -125,3 +131,17 @@ while the module type must be "job" or "jobmodule". The key *command* should have a string as value, which is passed to the shell -- remember to quote it properly. +## Emergency Modules + +Only C++ modules and job modules may be emergency modules. If, during an +*exec* step in the sequence, a module fails, installation as a whole fails +and the install is aborted. If there are emergency modules in the **same** +exec block, those will be executed before the installation is aborted. +Non-emergency modules are not executed. + +If an emergency-module fails while processing emergency-modules for +another failed module, that failure is ignored and emergency-module +processing continues. + +Use the EMERGENCY keyword in the CMake description of a C++ module +to generate a suitable `module.desc`. From d325366e92284cae8c5fd9aef5e5bae6b574dac1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 15 Jun 2018 07:19:02 -0400 Subject: [PATCH 285/385] CMake: fix plugin NO_INSTALL keyword Although the NO_INSTALL keyword could be specified for Calamares plugins, it didn't actually do anything. Now it does. A NO_INSTALL module does not install configs or libraries. --- CMakeModules/CalamaresAddPlugin.cmake | 31 ++++++++++++++++----------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/CMakeModules/CalamaresAddPlugin.cmake b/CMakeModules/CalamaresAddPlugin.cmake index ade323689..d2f878381 100644 --- a/CMakeModules/CalamaresAddPlugin.cmake +++ b/CMakeModules/CalamaresAddPlugin.cmake @@ -72,7 +72,7 @@ function( calamares_add_plugin ) # message( " ${Green}NO_INSTALL:${ColorReset} ${PLUGIN_NO_INSTALL}" ) message( " ${Green}PLUGIN_DESTINATION:${ColorReset} ${PLUGIN_DESTINATION}" ) if( PLUGIN_CONFIG_FILES ) - if ( INSTALL_CONFIG ) + if ( INSTALL_CONFIG AND NOT PLUGIN_NO_INSTALL ) message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${PLUGIN_CONFIG_FILES} => ${PLUGIN_DATA_DESTINATION}" ) else() message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${PLUGIN_CONFIG_FILES} => [Skipping installation]" ) @@ -93,7 +93,7 @@ function( calamares_add_plugin ) set( target_type "SHARED" ) endif() - list( APPEND calamares_add_library_args + set( calamares_add_library_args "${target}" "EXPORT_MACRO" "${PLUGIN_EXPORT_MACRO}" "TARGET_TYPE" "${target_type}" @@ -116,9 +116,14 @@ function( calamares_add_plugin ) list( APPEND calamares_add_library_args "COMPILE_DEFINITIONS" ${PLUGIN_COMPILE_DEFINITIONS} ) endif() - list( APPEND calamares_add_library_args "NO_VERSION" ) + if ( PLUGIN_NO_INSTALL ) + list( APPEND calamares_add_library_args "NO_INSTALL" ) + endif() - list( APPEND calamares_add_library_args "INSTALL_BINDIR" "${PLUGIN_DESTINATION}" ) + list( APPEND calamares_add_library_args + "NO_VERSION" + "INSTALL_BINDIR" "${PLUGIN_DESTINATION}" + ) if( PLUGIN_RESOURCES ) list( APPEND calamares_add_library_args "RESOURCES" "${PLUGIN_RESOURCES}" ) @@ -138,14 +143,16 @@ function( calamares_add_plugin ) endif() endif() - install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE} - DESTINATION ${PLUGIN_DESTINATION} ) + if ( NOT PLUGIN_NO_INSTALL ) + install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE} + DESTINATION ${PLUGIN_DESTINATION} ) - if ( INSTALL_CONFIG ) - foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} ) - configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY ) - install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} - DESTINATION ${PLUGIN_DATA_DESTINATION} ) - endforeach() + if ( INSTALL_CONFIG ) + foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} ) + configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY ) + install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} + DESTINATION ${PLUGIN_DATA_DESTINATION} ) + endforeach() + endif() endif() endfunction() From 53161f6e36c46fbef1e8a61e081af157db32c3eb Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 15 Jun 2018 07:22:09 -0400 Subject: [PATCH 286/385] [preservefiles] Mark this as an emergency module - For C++ modules, don't need the module.desc file in the source repo, since the CMake macros can create it. --- src/modules/preservefiles/CMakeLists.txt | 1 + src/modules/preservefiles/module.desc | 5 ----- 2 files changed, 1 insertion(+), 5 deletions(-) delete mode 100644 src/modules/preservefiles/module.desc diff --git a/src/modules/preservefiles/CMakeLists.txt b/src/modules/preservefiles/CMakeLists.txt index 43602024c..1ac979d1b 100644 --- a/src/modules/preservefiles/CMakeLists.txt +++ b/src/modules/preservefiles/CMakeLists.txt @@ -8,4 +8,5 @@ calamares_add_plugin( preservefiles LINK_PRIVATE_LIBRARIES calamares SHARED_LIB + EMERGENCY ) diff --git a/src/modules/preservefiles/module.desc b/src/modules/preservefiles/module.desc deleted file mode 100644 index 953d8c81b..000000000 --- a/src/modules/preservefiles/module.desc +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: "job" -name: "preservefiles" -interface: "qtplugin" -load: "libcalamares_job_preservefiles.so" From 3ed6f13fa8d293201dc616357230e12bcc67ce47 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 15 Jun 2018 09:32:19 -0400 Subject: [PATCH 287/385] [libcalamaresui] Adjust the emergency-ness of modules A potentially emergency module is one that has EMERGENCY (in CMake) or emergency: true (in module.desc) set. Any such module must also set emergency: true in the configuration of the module. This is to allow for instances of a module that **don't** run as emergency modules, alongside actual emergency ones. --- src/libcalamaresui/modulesystem/Module.cpp | 10 +++++++--- src/libcalamaresui/modulesystem/Module.h | 3 ++- src/modules/README.md | 6 ++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index d334fda17..d131c9f13 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -52,6 +52,8 @@ name: "foo" #the module name. must be unique and same as the parent di interface: "qtplugin" #can be: qtplugin, python, process, ... */ +static const char EMERGENCY[] = "emergency"; + namespace Calamares { @@ -198,6 +200,9 @@ Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Ex } m_configurationMap = CalamaresUtils::yamlMapToVariant( doc ).toMap(); + m_emergency = m_maybe_emergency + && m_configurationMap.contains( EMERGENCY ) + && m_configurationMap[ EMERGENCY ].toBool(); return; } else @@ -291,10 +296,9 @@ Module::initFrom( const QVariantMap& moduleDescriptor ) { m_name = moduleDescriptor.value( "name" ).toString(); - auto em = QStringLiteral( "emergency" ); - if ( moduleDescriptor.contains( em ) ) + if ( moduleDescriptor.contains( EMERGENCY ) ) { - m_emergency = moduleDescriptor[ em ].toBool(); + m_maybe_emergency = moduleDescriptor[ EMERGENCY ].toBool(); } } diff --git a/src/libcalamaresui/modulesystem/Module.h b/src/libcalamaresui/modulesystem/Module.h index 219902b17..4fd0020f8 100644 --- a/src/libcalamaresui/modulesystem/Module.h +++ b/src/libcalamaresui/modulesystem/Module.h @@ -185,7 +185,8 @@ protected: QVariantMap m_configurationMap; bool m_loaded = false; - bool m_emergency = false; + bool m_emergency = false; // Based on module and local config + bool m_maybe_emergency = false; // Based on the module.desc private: void loadConfigurationFile( const QString& configFileName ); //throws YAML::Exception diff --git a/src/modules/README.md b/src/modules/README.md index 4b1d8ef2f..bd6cd4e37 100644 --- a/src/modules/README.md +++ b/src/modules/README.md @@ -145,3 +145,9 @@ processing continues. Use the EMERGENCY keyword in the CMake description of a C++ module to generate a suitable `module.desc`. + +A module that is marked as an emergency module in its module.desc +must **also** set the *emergency* key to *true* in its configuration file. +If it does not, the module is not considered to be an emergency module +after all (this is so that you can have modules that have several +instances, only some of which are actually needed for emergencies. From 8387d5d81f38e046bb58a79fadaa138854af3d20 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 15 Jun 2018 10:20:07 -0400 Subject: [PATCH 288/385] [libcalamares] Allow emergency jobs Any job can be an emergency job; emergency modules spawn emergency jobs (but conversely, a non-emergency module can spawn an emergency job explicitly). --- src/libcalamares/Job.h | 7 +++++++ src/libcalamaresui/ExecutionViewStep.cpp | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/libcalamares/Job.h b/src/libcalamares/Job.h index 6063633b8..040ead6ad 100644 --- a/src/libcalamares/Job.h +++ b/src/libcalamares/Job.h @@ -66,8 +66,15 @@ public: virtual QString prettyDescription() const; virtual QString prettyStatusMessage() const; virtual JobResult exec() = 0; + + bool isEmergency() const { return m_emergency; } + void setEmergency( bool e ) { m_emergency = e; } + signals: void progress( qreal percent ); + +private: + bool m_emergency = false; }; } // namespace Calamares diff --git a/src/libcalamaresui/ExecutionViewStep.cpp b/src/libcalamaresui/ExecutionViewStep.cpp index 109bd1384..b505102a4 100644 --- a/src/libcalamaresui/ExecutionViewStep.cpp +++ b/src/libcalamaresui/ExecutionViewStep.cpp @@ -21,6 +21,7 @@ #include #include "Branding.h" +#include "Job.h" #include "JobQueue.h" #include "modulesystem/Module.h" #include "modulesystem/ModuleManager.h" @@ -142,7 +143,15 @@ ExecutionViewStep::onActivate() Calamares::Module* module = Calamares::ModuleManager::instance() ->moduleInstance( instanceKey ); if ( module ) - queue->enqueue( module->jobs() ); + { + auto jl = module->jobs(); + if ( module->isEmergency() ) + { + for( auto& j : jl ) + j->setEmergency( true ); + } + queue->enqueue( jl ); + } } queue->start(); From 264d135776c327de05e74a0b3134c495c82e29e0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 15 Jun 2018 11:45:02 -0400 Subject: [PATCH 289/385] [libcalamares] Run emergency jobs - After a failure, skip non-emergency jobs. - After running all emergency jobs, then emit failure message. - In log, distinguish emergency and non-emergency jobs. --- src/libcalamares/JobQueue.cpp | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp index 339fd8457..b3d42d8f9 100644 --- a/src/libcalamares/JobQueue.cpp +++ b/src/libcalamares/JobQueue.cpp @@ -50,22 +50,36 @@ public: void run() override { + bool anyFailed = false; + QString message; + QString details; + m_jobIndex = 0; for( auto job : m_jobs ) { + if ( anyFailed && !job->isEmergency() ) + { + cDebug() << "Skipping non-emergency job" << job->prettyName(); + continue; + } + emitProgress(); - cDebug() << "Starting job" << job->prettyName(); + cDebug() << "Starting" << ( anyFailed ? "EMERGENCY JOB" : "job" ) << job->prettyName(); connect( job.data(), &Job::progress, this, &JobThread::emitProgress ); JobResult result = job->exec(); - if ( !result ) + if ( !anyFailed && !result ) { - emitFailed( result.message(), result.details() ); - emitFinished(); - return; + anyFailed = true; + message = result.message(); + details = result.details(); } - ++m_jobIndex; + if ( !anyFailed ) + ++m_jobIndex; } - emitProgress(); + if ( anyFailed ) + emitFailed( message, details ); + else + emitProgress(); emitFinished(); } From 6a36e1dc8e7c6766eb3e614e6dd82c7124c732e3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 15 Jun 2018 14:50:35 -0400 Subject: [PATCH 290/385] CMake: make docs and code consistent. - Document the version requirements more accurately --- CMakeLists.txt | 4 ++-- README.md | 13 +++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 60048f44c..32cd8ab3c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,7 +49,7 @@ option( WITH_KF5Crash "Enable crash reporting with KCrash." ON ) set( CALAMARES_ORGANIZATION_NAME "Calamares" ) set( CALAMARES_ORGANIZATION_DOMAIN "github.com/calamares" ) set( CALAMARES_APPLICATION_NAME "Calamares" ) -set( CALAMARES_DESCRIPTION_SUMMARY +set( CALAMARES_DESCRIPTION_SUMMARY "The distribution-independent installer framework" ) set( CALAMARES_VERSION_MAJOR 3 ) @@ -96,7 +96,7 @@ set( QT_VERSION 5.7.0 ) set( YAMLCPP_VERSION 0.5.1 ) set( ECM_VERSION 5.18 ) set( PYTHONLIBS_VERSION 3.3 ) -set( BOOSTPYTHON_VERSION 1.54.0 ) +set( BOOSTPYTHON_VERSION 1.55.0 ) ### CMAKE SETUP diff --git a/README.md b/README.md index a41ae6f7a..f35b012c8 100644 --- a/README.md +++ b/README.md @@ -15,11 +15,12 @@ Main: * Compiler with C++11 support: GCC >= 4.9.0 or Clang >= 3.5.1 * CMake >= 3.2 -* Qt >= 5.6 +* Qt >= 5.7 * yaml-cpp >= 0.5.1 -* Python >= 3.3 -* Boost.Python >= 1.55.0 -* extra-cmake-modules (recommended; required for some modules) +* Python >= 3.3 (required for some modules) +* Boost.Python >= 1.55.0 (recommended, or PythonQt; one is required for some modules) +* PythonQt (recommended, or Boost.Python; one is required for some modules) +* extra-cmake-modules >= 5.18 (recommended; required for some modules) Modules: * welcome: @@ -38,6 +39,6 @@ Modules: ### Building See [wiki](https://github.com/calamares/calamares/wiki) for up to date -[building](https://github.com/calamares/calamares/wiki/Developer's-Guide) -and [deployment](https://github.com/calamares/calamares/wiki/Deployer's-Guide) +[building](https://github.com/calamares/calamares/wiki/Develop-Guide) +and [deployment](https://github.com/calamares/calamares/wiki/Deploy-Guide) instructions. From 8211edc6fd5f72f831e0fc96b321ec3755fe5bd1 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Sat, 16 Jun 2018 19:27:44 -0400 Subject: [PATCH 291/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_ko.ts | 608 ++++++++++++++++++++++--------------------- 1 file changed, 306 insertions(+), 302 deletions(-) diff --git a/lang/calamares_ko.ts b/lang/calamares_ko.ts index 73b81b498..f2f9d6a49 100644 --- a/lang/calamares_ko.ts +++ b/lang/calamares_ko.ts @@ -22,27 +22,27 @@ Master Boot Record of %1 - + %1의 마스터 부트 레코드 Boot Partition - + 부트 파티션 System Partition - + 시스템 파티션 Do not install a boot loader - + 부트로더를 설치하지 않습니다 %1 (%2) - + %1 (%2) @@ -55,22 +55,22 @@ GlobalStorage - + 전역 스토리지 JobQueue - + 작업 대기열 Modules - + 모듈 Type: - + 유형: @@ -81,17 +81,17 @@ Interface: - + 인터페이스: Tools - + 도구 Debug information - + 디버깅 정보 @@ -99,7 +99,7 @@ Install - + 설치 @@ -107,7 +107,7 @@ Done - + 완료 @@ -128,32 +128,32 @@ Running %1 operation. - + %1 명령을 실행 중 Bad working directory path - + 잘못된 작업 디렉터리 경로 Working directory %1 for python job %2 is not readable. - + 파이썬 작업 %2에 대한 작업 디렉터리 %1을 읽을 수 없습니다. Bad main script file - + 잘못된 주 스크립트 파일 Main script file %1 for python job %2 is not readable. - + 파이썬 작업 %2에 대한 주 스크립트 파일 %1을 읽을 수 없습니다. Boost.Python error in job "%1". - + 작업 "%1"에서 Boost.Python 오류 @@ -161,61 +161,62 @@ &Back - + 뒤로(&B) &Next - + 다음(&N) &Cancel - + 취소(&C) Cancel installation without changing the system. - + 시스템 변경 없이 설치를 취소합니다. &Install - + 설치(&I) Cancel installation? - + 설치를 취소하시겠습니까? Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + 정말로 현재 설치 프로세스를 취소하시겠습니까? +설치 관리자가 종료되며 모든 변경은 반영되지 않습니다. &Yes - + 예(&Y) &No - + 아니오(&N) &Close - + 닫기(&C) Continue with setup? - + 설치를 계속하시겠습니까? @@ -225,32 +226,32 @@ The installer will quit and all changes will be lost. &Install now - + 지금 설치(&I) Go &back - + 뒤로 이동(&b) &Done - + 완료(&D) The installation is complete. Close the installer. - + 설치가 완료되었습니다. 설치 관리자를 닫습니다. Error - + 오류 Installation Failed - + 설치 실패 @@ -258,22 +259,22 @@ The installer will quit and all changes will be lost. Unknown exception type - + 알 수 없는 예외 유형 unparseable Python error - + 구문 분석할 수 없는 파이썬 오류 unparseable Python traceback - + 구문 분석할 수 없는 파이썬 역추적 정보 Unfetchable Python error. - + 가져올 수 없는 파이썬 오류 @@ -281,12 +282,12 @@ The installer will quit and all changes will be lost. %1 Installer - + %1 설치 관리자 Show debug information - + 디버깅 정보 보기 @@ -314,7 +315,7 @@ The installer will quit and all changes will be lost. System requirements - + 시스템 요구 사항 @@ -327,7 +328,7 @@ The installer will quit and all changes will be lost. After: - + 이후: @@ -337,7 +338,7 @@ The installer will quit and all changes will be lost. Boot loader location: - + 부트 로더 위치: @@ -347,7 +348,7 @@ The installer will quit and all changes will be lost. Select storage de&vice: - + 스토리지 장치 선택 @@ -355,7 +356,7 @@ The installer will quit and all changes will be lost. Current: - + 현재: @@ -380,12 +381,12 @@ The installer will quit and all changes will be lost. The EFI system partition at %1 will be used for starting %2. - + %1의 EFI 시스템 파티션은 %2의 시작으로 사용될 것입니다. EFI system partition: - + EFI 시스템 파티션: @@ -437,17 +438,17 @@ The installer will quit and all changes will be lost. Clear mounts for partitioning operations on %1 - + 파티셔닝 작업을 위해 %1의 마운트를 모두 해제합니다 Clearing mounts for partitioning operations on %1. - + 파티셔닝 작업을 위해 %1의 마운트를 모두 해제하는 중입니다. Cleared all mounts for %1 - + %1의 모든 마운트가 해제되었습니다. @@ -455,22 +456,22 @@ The installer will quit and all changes will be lost. Clear all temporary mounts. - + 모든 임시 마운트들을 해제합니다 Clearing all temporary mounts. - + 모든 임시 마운트들이 해제하는 중입니다. Cannot get list of temporary mounts. - + 임시 마운트들의 목록을 가져올 수 없습니다. Cleared all temporary mounts. - + 모든 임시 마운트들이 해제되었습니다. @@ -479,17 +480,17 @@ The installer will quit and all changes will be lost. Could not run command. - + 명령을 실행할 수 없습니다. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + 이 명령은 호스트 환경에서 실행되며 루트 경로를 알아야하지만, rootMountPoint가 정의되지 않았습니다. The command needs to know the user's name, but no username is defined. - + 이 명령은 사용자 이름을 알아야 하지만, username이 정의되지 않았습니다. @@ -497,7 +498,7 @@ The installer will quit and all changes will be lost. Contextual Processes Job - + 컨텍스트 프로세스 작업 @@ -505,77 +506,77 @@ The installer will quit and all changes will be lost. Create a Partition - + 파티션 생성 MiB - + MiB Partition &Type: - + 파티션 유형(&T): &Primary - + 주 파티션(&P) E&xtended - + 확장 파티션(&E) Fi&le System: - + 파일 시스템(&l): LVM LV name - + LVM 논리 볼륨 이름 Flags: - + 플래그: &Mount Point: - + 마운트 지점(&M): Si&ze: - + 크기(&z): En&crypt - + 암호화(&c) Logical - + 논리 파티션 Primary - + 주 파티션 GPT - + GPT Mountpoint already in use. Please select another one. - + 마운트 위치가 이미 사용 중입니다. 다른 위치를 선택해주세요. @@ -606,27 +607,27 @@ The installer will quit and all changes will be lost. Create Partition Table - + 파티션 테이블을 만듭니다 Creating a new partition table will delete all existing data on the disk. - + 새로운 파티션 테이블의 생성은 디스크에 있는 모든 데이터를 지울 것입니다. What kind of partition table do you want to create? - + 만들고자 하는 파티션 테이블의 종류는 무엇인가요? Master Boot Record (MBR) - + 마스터 부트 레코드 (MBR) GUID Partition Table (GPT) - + GUID 파티션 테이블 (GPT) @@ -634,22 +635,22 @@ The installer will quit and all changes will be lost. Create new %1 partition table on %2. - + %2에 %1 파티션 테이블을 만듭니다. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - + <strong>%2</strong>에 새로운 <strong>%1</strong> 파티션 테이블을 만듭니다 (%3). Creating new %1 partition table on %2. - + %2에 새로운 %1 파티션 테이블을 만드는 중입니다. The installer failed to create a partition table on %1. - + 설치 관리자가 %1에 파티션 테이블을 만들지 못했습니다. @@ -657,37 +658,37 @@ The installer will quit and all changes will be lost. Create user %1 - + %1 사용자를 만듭니다 Create user <strong>%1</strong>. - + <strong>%1</strong>사용자를 만듭니다 . Creating user %1. - + %1 사용자를 만드는 중입니다. Sudoers dir is not writable. - + Sudoers 디렉터리가 쓰기 금지되어 있습니다. Cannot create sudoers file for writing. - + sudoers 파일을 만들 수가 없습니다. Cannot chmod sudoers file. - + sudoers 파일의 권한을 변경할 수 없습니다. Cannot open groups file for reading. - + groups 파일을 읽을 수가 없습니다. @@ -695,22 +696,22 @@ The installer will quit and all changes will be lost. Delete partition %1. - + %1 파티션을 지웁니다. Delete partition <strong>%1</strong>. - + <strong>%1</strong> 파티션을 지웁니다. Deleting partition %1. - + %1 파티션을 지우는 중입니다. The installer failed to delete partition %1. - + 설치 관리자가 %1 파티션을 지우지 못했습니다. @@ -723,7 +724,7 @@ The installer will quit and all changes will be lost. This device has a <strong>%1</strong> partition table. - + 이 장치는 <strong>%1</strong> 파티션 테이블을 갖고 있습니다. @@ -769,7 +770,7 @@ The installer will quit and all changes will be lost. Failed to open %1 - + %1을 열지 못했습니다 @@ -777,7 +778,7 @@ The installer will quit and all changes will be lost. Dummy C++ Job - + 더미 C++ 작업 @@ -785,57 +786,57 @@ The installer will quit and all changes will be lost. Edit Existing Partition - + 기존 파티션을 수정합니다 Content: - + 내용: &Keep - + 유지(&K) Format - + 포맷 Warning: Formatting the partition will erase all existing data. - + 경고: 파티션을 포맷하는 것은 모든 데이터를 지울 것입니다. &Mount Point: - + 마운트 위치(&M): Si&ze: - + 크기(&z): MiB - + MiB Fi&le System: - + 파일 시스템(&l): Flags: - + 플래그: Mountpoint already in use. Please select another one. - + 마운트 위치가 이미 사용 중입니다. 다른 위치를 선택해주세요. @@ -848,22 +849,22 @@ The installer will quit and all changes will be lost. En&crypt system - + 시스템 암호화(&c) Passphrase - + 암호 Confirm passphrase - + 암호 확인 Please enter the same passphrase in both boxes. - + 암호와 암호 확인 상자에 동일한 값을 입력해주세요. @@ -871,7 +872,7 @@ The installer will quit and all changes will be lost. Set partition information - + 파티션 정보 설정 @@ -901,7 +902,7 @@ The installer will quit and all changes will be lost. Setting up mount points. - + 마운트 위치를 설정 중입니다. @@ -919,7 +920,7 @@ The installer will quit and all changes will be lost. &Restart now - + 지금 재시작(&R) @@ -937,17 +938,17 @@ The installer will quit and all changes will be lost. Finish - + 완료 Installation Complete - + 설치 완료 The installation of %1 is complete. - + %1의 설치가 완료되었습니다. @@ -965,12 +966,12 @@ The installer will quit and all changes will be lost. Formatting partition %1 with file system %2. - + %1 파티션을 %2 파일 시스템으로 포맷하는 중입니다. The installer failed to format partition %1 on disk '%2'. - + 설치 관리자가 '%2' 디스크에 있는 %1 파티션을 포맷하지 못했습니다. @@ -978,17 +979,17 @@ The installer will quit and all changes will be lost. Konsole not installed - + Konsole이 설치되지 않았음 Please install KDE Konsole and try again! - + KDE Konsole을 설치한 후에 다시 시도해주세요! Executing script: &nbsp;<code>%1</code> - + 스크립트 실행: &nbsp;<code>%1</code> @@ -996,7 +997,7 @@ The installer will quit and all changes will be lost. Script - + 스크립트 @@ -1004,12 +1005,12 @@ The installer will quit and all changes will be lost. Set keyboard model to %1.<br/> - + 키보드 모델을 %1로 설정합니다.<br/> Set keyboard layout to %1/%2. - + 키보드 레이아웃을 %1/%2로 설정합니다. @@ -1017,7 +1018,7 @@ The installer will quit and all changes will be lost. Keyboard - + 키보드 @@ -1025,7 +1026,7 @@ The installer will quit and all changes will be lost. System locale setting - + 시스템 로케일 설정 @@ -1035,12 +1036,12 @@ The installer will quit and all changes will be lost. &Cancel - + 취소(&C) &OK - + 확인(&O) @@ -1053,27 +1054,27 @@ The installer will quit and all changes will be lost. I accept the terms and conditions above. - + 상기 계약 조건을 모두 동의합니다. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + <h1>라이센스 동의</h1>이 설치 절차는 라이센스 조항의 적용을 받는 독점 소프트웨어를 설치합니다. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + 상기 최종 사용자 라이센스 동의 (EULAs) 를 검토해주시길 바랍니다.<br/>조건에 동의하지 않는다면, 설치 절차를 계속할 수 없습니다. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + <h1>라이센스 동의</h1>이 설치 절차는 추가적인 기능들을 제공하고 사용자 환경을 개선하기 위한 독점 소프트웨어를 설치할 수 있으며, 이 소프트웨어는 라이센스 조항의 적용을 받습니다. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + 상기 최종 사용자 라이센스 동의 (EULAs) 를 검토해주시길 바랍니다. <br/>조건에 동의하지 않는다면, 독점 소프트웨어는 설치되지 않을 것이며, 대체하여 사용할 수 있는 오픈 소스 소프트웨어가 사용될 것입니다. @@ -1110,7 +1111,7 @@ The installer will quit and all changes will be lost. <a href="%1">view license agreement</a> - + <a href="%1">라이센스 동의 보기</a> @@ -1118,7 +1119,7 @@ The installer will quit and all changes will be lost. License - + 라이센스 @@ -1126,39 +1127,39 @@ The installer will quit and all changes will be lost. The system language will be set to %1. - + 시스템 언어가 %1로 설정될 것입니다. The numbers and dates locale will be set to %1. - + 숫자와 날짜 로케일이 %1로 설정될 것입니다. Region: - + 대륙: Zone: - + 표준시간대: &Change... - + 변경(&C)... Set timezone to %1/%2.<br/> - + 표준시간대를 %1/%2로 설정합니다.<br/> %1 (%2) Language (Country) - + %1 (%2) @@ -1166,12 +1167,12 @@ The installer will quit and all changes will be lost. Loading location data... - + 위치 정보를 불러오는 중입니다... Location - + 위치 @@ -1179,22 +1180,22 @@ The installer will quit and all changes will be lost. Name - + 이름 Description - + 설명 Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + 네트워크 설치. (불가: 패키지 목록을 가져올 수 없습니다. 네트워크 연결을 확인해주세요) Network Installation. (Disabled: Received invalid groups data) - + 네트워크 설치. (불가: 유효하지 않은 그룹 데이터를 수신했습니다) @@ -1202,7 +1203,7 @@ The installer will quit and all changes will be lost. Package selection - + 패키지 선택 @@ -1210,102 +1211,102 @@ The installer will quit and all changes will be lost. Password is too short - + 암호가 너무 짧습니다 Password is too long - + 암호가 너무 깁니다 Password is too weak - + 암호가 너무 취약합니다 Memory allocation error when setting '%1' - + '%1'을 설정하는 중 메모리 할당 오류 Memory allocation error - + 메모리 할당 오류 The password is the same as the old one - + 암호가 이전과 같습니다 The password is a palindrome - + 암호가 회문입니다 The password differs with case changes only - + 암호가 대소문자만 다릅니다 The password is too similar to the old one - + 암호가 이전 암호와 너무 유사합니다 The password contains the user name in some form - + 암호가 사용자 이름의 일부를 포함하고 있습니다. The password contains words from the real name of the user in some form - + 암호가 사용자 실명의 일부를 포함하고 있습니다 The password contains forbidden words in some form - + 암호가 금지된 단어를 포함하고 있습니다 The password contains less than %1 digits - + 암호가 %1개 미만의 숫자를 포함하고 있습니다 The password contains too few digits - + 암호가 너무 적은 개수의 숫자들을 포함하고 있습니다 The password contains less than %1 uppercase letters - + 암호가 %1개 미만의 대문자를 포함하고 있습니다 The password contains too few uppercase letters - + 암호가 너무 적은 개수의 대문자를 포함하고 있습니다 The password contains less than %1 lowercase letters - + 암호가 %1개 미만의 소문자를 포함하고 있습니다 The password contains too few lowercase letters - + 암호가 너무 적은 개수의 소문자를 포함하고 있습니다 The password contains less than %1 non-alphanumeric characters - + 암호가 %1개 미만의 영숫자가 아닌 문자를 포함하고 있습니다 The password contains too few non-alphanumeric characters - + 암호가 너무 적은 개수의 영숫자가 아닌 문자를 포함하고 있습니다 @@ -1440,12 +1441,12 @@ The installer will quit and all changes will be lost. Fatal failure - + 치명적인 실패 Unknown error - + 알 수 없는 오류 @@ -1458,12 +1459,12 @@ The installer will quit and all changes will be lost. Keyboard Model: - + 키보드 모델: Type here to test your keyboard - + 키보드를 테스트하기 위해 여기에 입력하세요 @@ -1476,12 +1477,12 @@ The installer will quit and all changes will be lost. What is your name? - + 이름이 무엇인가요? What name do you want to use to log in? - + 로그인을 위해 어떤 이름을 사용할 것인가요? @@ -1493,12 +1494,12 @@ The installer will quit and all changes will be lost. <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - + <small>한명 이상의 사용자가 이 컴퓨터를 사용할 것이라면, 설치 후에 여러 사용자 계정을 설정할 수 있습니다.</small> Choose a password to keep your account safe. - + 사용자 계정의 보안을 유지하기 위한 암호를 선택하세요. @@ -1508,7 +1509,7 @@ The installer will quit and all changes will be lost. What is the name of this computer? - + 이 컴퓨터의 이름은 무엇인가요? @@ -1518,22 +1519,22 @@ The installer will quit and all changes will be lost. Log in automatically without asking for the password. - + 암호를 묻지 않고 자동으로 로그인합니다. Use the same password for the administrator account. - + 관리자 계정에 대해 같은 암호를 사용합니다. Choose a password for the administrator account. - + 관리자 계정을 위한 암호를 선택하세요. <small>Enter the same password twice, so that it can be checked for typing errors.</small> - + <small>입력 오류를 검사하기 위해 암호를 똑같이 두번 입력하세요.</small> @@ -1541,37 +1542,37 @@ The installer will quit and all changes will be lost. Root - + 루트 Home - + Boot - + 부트 EFI system - + EFI 시스템 Swap - + 스왑 New partition for %1 - + %1에 대한 새로운 파티션 New partition - + 새로운 파티션 @@ -1585,33 +1586,33 @@ The installer will quit and all changes will be lost. Free Space - + 여유 공간 New partition - + 새로운 파티션 Name - + 이름 File System - + 파일 시스템 Mount Point - + 마운트 위치 Size - + 크기 @@ -1624,37 +1625,37 @@ The installer will quit and all changes will be lost. Storage de&vice: - + 스토리지 장치(&v): &Revert All Changes - + 모든 변경 되돌리기(&R) New Partition &Table - + 새로운 파티션 테이블(&T) &Create - + 생성(&C) &Edit - + 수정(&E) &Delete - + 삭제(&D) Install boot &loader on: - + 부트 로더 설치 위치(&l): @@ -1664,7 +1665,7 @@ The installer will quit and all changes will be lost. Can not create new partition - + 새로운 파티션을 만들 수 없습니다 @@ -1677,12 +1678,12 @@ The installer will quit and all changes will be lost. Gathering system information... - + 시스템 정보 수집 중... Partitions - + 파티션 @@ -1732,17 +1733,17 @@ The installer will quit and all changes will be lost. Current: - + 현재: After: - + 이후: No EFI system partition configured - + EFI 시스템 파티션이 설정되지 않았습니다 @@ -1752,7 +1753,7 @@ The installer will quit and all changes will be lost. EFI system partition flag not set - + EFI 시스템 파티션 플래그가 설정되지 않았습니다 @@ -1762,7 +1763,7 @@ The installer will quit and all changes will be lost. Boot partition not encrypted - + 부트 파티션이 암호화되지 않았습니다 @@ -1775,13 +1776,13 @@ The installer will quit and all changes will be lost. Plasma Look-and-Feel Job - + 플라즈마 Look-and-Feel 작업 Could not select KDE Plasma Look-and-Feel package - + KDE 플라즈마 Look-and-Feel 패키지를 선택할 수 없습니다 @@ -1807,7 +1808,7 @@ The installer will quit and all changes will be lost. Look-and-Feel - + Look-and-Feel @@ -1815,17 +1816,17 @@ The installer will quit and all changes will be lost. Saving files for later ... - + 나중을 위해 파일들을 저장하는 중... No files configured to save for later. - + 나중을 위해 저장될 설정된 파일들이 없습니다. Not all of the configured files could be preserved. - + 모든 설정된 파일들이 보존되는 것은 아닙니다. @@ -1834,39 +1835,42 @@ The installer will quit and all changes will be lost. There was no output from the command. - + +명령으로부터 아무런 출력이 없습니다. Output: - + +출력: + External command crashed. - + 외부 명령이 실패했습니다. Command <i>%1</i> crashed. - + <i>%1</i> 명령이 실패했습니다. External command failed to start. - + 외부 명령을 시작하지 못했습니다. Command <i>%1</i> failed to start. - + <i>%1</i> 명령을 시작하지 못했습니다. Internal error when starting command. - + 명령을 시작하는 중에 내부 오류가 발생했습니다. @@ -1876,22 +1880,22 @@ Output: External command failed to finish. - + 외부 명령을 완료하지 못했습니다. Command <i>%1</i> failed to finish in %2 seconds. - + <i>%1</i> 명령을 %2초 안에 완료하지 못했습니다. External command finished with errors. - + 외부 명령이 오류와 함께 완료되었습니다. Command <i>%1</i> finished with exit code %2. - + <i>%1</i> 명령이 종료 코드 %2와 함께 완료되었습니다. @@ -1899,18 +1903,18 @@ Output: Default Keyboard Model - + 기본 키보드 모델 Default - + 기본 unknown - + 알 수 없음 @@ -1948,37 +1952,37 @@ Output: The selected item does not appear to be a valid partition. - + 선택된 항목은 유효한 파티션으로 표시되지 않습니다. %1 cannot be installed on empty space. Please select an existing partition. - + %1은 빈 공간에 설치될 수 없습니다. 존재하는 파티션을 선택해주세요. %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - + %1은 확장 파티션에 설치될 수 없습니다. 주 파티션 혹은 논리 파티션을 선택해주세요. %1 cannot be installed on this partition. - + %1은 이 파티션에 설치될 수 없습니다. Data partition (%1) - + 데이터 파티션 (%1) Unknown system partition (%1) - + 알 수 없는 시스템 파티션 (%1) %1 system partition (%2) - + %1 시스템 파티션 (%2) @@ -2000,12 +2004,12 @@ Output: The EFI system partition at %1 will be used for starting %2. - + %1의 EFI 시스템 파티션은 %2의 시작으로 사용될 것입니다. EFI system partition: - + EFI 시스템 파티션: @@ -2013,57 +2017,57 @@ Output: Gathering system information... - + 시스템 정보 수집 중... has at least %1 GB available drive space - + 최소 %1 GB의 여유 공간이 필요합니다. There is not enough drive space. At least %1 GB is required. - + 저장 공간이 충분하지 않습니다. 최소 %1 GB의 공간이 필요합니다. has at least %1 GB working memory - + 최소 %1 GB의 가용 메모리가 필요합니다 The system does not have enough working memory. At least %1 GB is required. - + 이 시스템은 가용 메모리가 충분하지 않습니다. 최소 %1 GB의 가용 메모리가 필요합니다. is plugged in to a power source - + 전원 공급이 연결되어 있습니다 The system is not plugged in to a power source. - + 이 시스템은 전원 공급이 연결되어 있지 않습니다 is connected to the Internet - + 인터넷에 연결되어 있습니다 The system is not connected to the Internet. - + 이 시스템은 인터넷에 연결되어 있지 않습니다. The installer is not running with administrator rights. - + 설치 관리자가 관리자 권한으로 동작하고 있지 않습니다. The screen is too small to display the installer. - + 설치 관리자를 표시하기에 화면이 너무 작습니다. @@ -2094,12 +2098,12 @@ Output: Scanning storage devices... - + 스토리지 장치 검색 중... Partitioning - + 파티셔닝 @@ -2107,29 +2111,29 @@ Output: Set hostname %1 - + 호스트 이름을 %1로 설정합니다 Set hostname <strong>%1</strong>. - + 호스트 이름을 <strong>%1</strong>로 설정합니다. Setting hostname %1. - + 호스트 이름을 %1로 설정하는 중입니다. Internal Error - + 내부 오류 Cannot write hostname to target system - + 시스템의 호스트 이름을 저장할 수 없습니다 @@ -2137,29 +2141,29 @@ Output: Set keyboard model to %1, layout to %2-%3 - + 키보드 모델을 %1로 설정하고, 레이아웃을 %2-%3으로 설정합니다 Failed to write keyboard configuration for the virtual console. - + 가상 콘솔을 위한 키보드 설정을 저장할 수 없습니다. Failed to write to %1 - + %1에 쓰기를 실패했습니다 Failed to write keyboard configuration for X11. - + X11에 대한 키보드 설정을 저장하지 못했습니다. Failed to write keyboard configuration to existing /etc/default directory. - + /etc/default 디렉터리에 키보드 설정을 저장하지 못했습니다. @@ -2293,37 +2297,37 @@ Output: Set timezone to %1/%2 - + 표준시간대를 %1/%2로 설정합니다 Cannot access selected timezone path. - + 선택된 표준시간대 경로에 접근할 수 없습니다. Bad path: %1 - + 잘못된 경로: %1 Cannot set timezone. - + 표준 시간대를 설정할 수 없습니다. Link creation failed, target: %1; link name: %2 - + 링크 생성 실패, 대상: %1; 링크 이름: %2 Cannot set timezone, - + 표준시간대를 설정할 수 없습니다, Cannot open /etc/timezone for writing - + /etc/timezone을 쓰기를 위해 열 수 없습니다. @@ -2331,7 +2335,7 @@ Output: Shell Processes Job - + 셸 처리 작업 @@ -2356,7 +2360,7 @@ Output: Summary - + 요약 @@ -2364,12 +2368,12 @@ Output: Installation feedback - + 설치 피드백 Sending installation feedback. - + 설치 피드백을 보내는 중입니다. @@ -2379,7 +2383,7 @@ Output: HTTP request timed out. - + HTTP 요청 시간이 만료되었습니다. @@ -2387,28 +2391,28 @@ Output: Machine feedback - + 장치 피드백 Configuring machine feedback. - + 장치 피드백을 설정하는 중입니다. Error in machine feedback configuration. - + 장치 피드백 설정 중에 오류가 발생했습니다. Could not configure machine feedback correctly, script error %1. - + 장치 피드백을 정확하게 설정할 수 없습니다, %1 스크립트 오류. Could not configure machine feedback correctly, Calamares error %1. - + 장치 피드백을 정확하게 설정할 수 없습니다, %1 깔라마레스 오류. @@ -2440,7 +2444,7 @@ Output: ... - + ... @@ -2473,7 +2477,7 @@ Output: Feedback - + 피드백 @@ -2481,33 +2485,33 @@ Output: Your username is too long. - + 사용자 이름이 너무 깁니다. Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + 사용자 이름이 유효하지 않은 문자들을 포함하고 있습니다. 소문자 그리고 숫자만이 허용됩니다. Your hostname is too short. - + 호스트 이름이 너무 짧습니다. Your hostname is too long. - + 호스트 이름이 너무 깁니다. Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - + 호트스 이름이 유효하지 않은 문자들을 포함하고 있습니다. 영문자, 숫자 그리고 붙임표(-)만이 허용됩니다. Your passwords do not match! - + 암호가 일치하지 않습니다! @@ -2515,7 +2519,7 @@ Output: Users - + 사용자 @@ -2528,42 +2532,42 @@ Output: &Language: - + 언어(&L): &Release notes - + 출시 정보(&R) &Known issues - + 알려진 문제(&K) &Support - + 지원(&S) &About - + 정보(&A) <h1>Welcome to the %1 installer.</h1> - + <h1>%1 설치 관리자에 오신 것을 환영합니다.</h1> <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>%1을 위한 깔라마레스 설치 관리자에 오신 것을 환영합니다.</h1> About %1 installer - + %1 설치 관리자에 대하여 @@ -2573,7 +2577,7 @@ Output: %1 support - + %1 지원 @@ -2581,7 +2585,7 @@ Output: Welcome - + 환영합니다 \ No newline at end of file From 5c6d88b1b87f083d361e7353961bcee85976f6b5 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Sat, 16 Jun 2018 19:27:44 -0400 Subject: [PATCH 292/385] i18n: [desktop] Automatic merge of Transifex translations --- calamares.desktop | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/calamares.desktop b/calamares.desktop index c1c8d44e2..42373404d 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -63,6 +63,7 @@ Comment[he]=קלמארס - אשף התקנה Icon[hi]=calamares GenericName[hi]=सिस्टम इंस्टॉलर Comment[hi]=Calamares — सिस्टम इंस्टॉलर +Name[hi]=सिस्टम इंस्टॉल करें Icon[hr]=calamares GenericName[hr]=Instalacija sustava Comment[hr]=Calamares — Instalacija sustava @@ -87,6 +88,10 @@ Icon[ja]=calamares GenericName[ja]=システムインストーラー Comment[ja]=Calamares — システムインストーラー Name[ja]=システムをインストール +Icon[ko]=깔라마레스 +GenericName[ko]=시스템 설치 관리자 +Comment[ko]=깔라마레스 — 시스템 설치 관리자 +Name[ko]=시스템 설치 Icon[lt]=calamares GenericName[lt]=Sistemos diegimas į kompiuterį Comment[lt]=Calamares — Sistemos diegimo programa From 88c168e6d5275bf7eb83bed7011f2ae46b792240 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Sat, 16 Jun 2018 19:27:46 -0400 Subject: [PATCH 293/385] i18n: [dummypythonqt] Automatic merge of Transifex translations --- .../lang/hi/LC_MESSAGES/dummypythonqt.mo | Bin 1009 -> 1262 bytes .../lang/hi/LC_MESSAGES/dummypythonqt.po | 10 +++++----- .../lang/ko/LC_MESSAGES/dummypythonqt.mo | Bin 413 -> 985 bytes .../lang/ko/LC_MESSAGES/dummypythonqt.po | 13 +++++++------ 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo index a294004cbabf226319670a94a72e1765f5428d68..a7249ce6fbc691a8fd00142b4c330ccc27cd304e 100644 GIT binary patch delta 480 zcmey!{*H4(idrcH1A_!J1A`Wj?gP@9Kzb*THU-kkEDQ`&fOI6w#x5;JE>m423k3rc zD^v5$`xv7blO8Nt_+ZJp2TL0i9xPe)V9CA*OWGeSS^8kf3NU|Z?}H^99xR#q0Ls|^ zV99!*BA^^l2&AR;!IG^Hmh1q_19gF9c05?p^kB&vFu5G4YO*J@eLaQN%mO=OG2HZN zU<;v6S@vKl(9J+0Albx#)uwtvJ_2e3nzj>Y0eQi(^TE=N2TPZr>4yiOIY#)QhZ0aH PLikb@p1A_!J1A`Wjjs?=t7*{Oh4|IP, 2018\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 msgid "Dummy PythonQt ViewStep" -msgstr "Dummy PythonQt ViewStep" +msgstr "डमी पाइथन प्रक्रिया की चरण संख्या देखें" #: src/modules/dummypythonqt/main.py:183 msgid "The Dummy PythonQt Job" -msgstr "The Dummy PythonQt Job" +msgstr "डमी पाइथन प्रक्रिया" #: src/modules/dummypythonqt/main.py:186 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 msgid "A status message for Dummy PythonQt Job." -msgstr "Dummy PythonQt Job के लिए एक status संदेश।" +msgstr "डमी पाइथन प्रक्रिया की अवस्था संबंधी संदेश।" diff --git a/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.mo index 9dfa007bded575a5934de04c1ed37c5ebb18a03d..c4dfacd9243d1590fbee2a78166ab309515922d6 100644 GIT binary patch delta 641 zcmZvY-%C_M6vrpml87GC$cP?}PZ{JzeF#wr#h_SvNLtFr?&hdh_ug4{Mr4UtmsOB< zBNkRN*((WI2t`7htl*>I-{6aXz|Ji6+*9AtSn|i=e&&15oOAA+nJ{wDk~wT`US_Zs za2v$H6;J@ys^BWv0i9qUTn4{EJNN@`fYu9)-G|&nKlbj|* ziXP7Tewv=9)szTE6-7ndVIv9e)eNdSn9aKXrJs9z?wR6A7MtSdv|`(ngioEDcF4Ak zADuWY;w0U)?5Ednihb_~r0R;L+(0H=B~twq^|~IXxd`Zy=hI+PU~n<%`9lrQ3AlQ2 zk9xa%`igr88IxPm>t(ZAY1~%7E9oEA6E`#A3YlECo-32yESY@Se4S_J!?#*>OKuiIuRWc@iWzUO0%}8^GiDa*&!2F=wF*n*h#j_`qPF9 Y=LrQSEYyDPQf=#_dHd_Q$G!~v3v1rh`2C0F8$?=T+lXaM`0RRp> B2cZA} diff --git a/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.po index 94b78e28a..aa8ea2265 100644 --- a/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.po @@ -10,6 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Ji-Hyeon Gim , 2018\n" "Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,24 +20,24 @@ msgstr "" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" -msgstr "" +msgstr "여기를 클릭하세요!" #: src/modules/dummypythonqt/main.py:94 msgid "A new QLabel." -msgstr "" +msgstr "새로운 QLabel." #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" -msgstr "" +msgstr "더미 PythonQt ViewStep" #: src/modules/dummypythonqt/main.py:183 msgid "The Dummy PythonQt Job" -msgstr "" +msgstr "더미 PythonQt Job" #: src/modules/dummypythonqt/main.py:186 msgid "This is the Dummy PythonQt Job. The dummy job says: {}" -msgstr "" +msgstr "더미 PythonQt Job입니다. 이 더미 Job의 출력은 다음과 같습니다: {}" #: src/modules/dummypythonqt/main.py:190 msgid "A status message for Dummy PythonQt Job." -msgstr "" +msgstr "더미 PythonQt Job의 상태 메시지" From 93aa0f3c850432c118ca24c20dd3f698ef3c22de Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Sat, 16 Jun 2018 19:27:46 -0400 Subject: [PATCH 294/385] i18n: [python] Automatic merge of Transifex translations --- lang/python/hi/LC_MESSAGES/python.mo | Bin 1363 -> 1637 bytes lang/python/hi/LC_MESSAGES/python.po | 10 +++++----- lang/python/ko/LC_MESSAGES/python.mo | Bin 413 -> 1238 bytes lang/python/ko/LC_MESSAGES/python.po | 17 +++++++++-------- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lang/python/hi/LC_MESSAGES/python.mo b/lang/python/hi/LC_MESSAGES/python.mo index 5504f771576dcfb266632cc13284f05d9b5d25aa..5c85ef863df603616008c0d3498aab92779d28cc 100644 GIT binary patch delta 572 zcmbV{ze)o^5XR@cQ=@2MG>w1Y8bJ_IPzx(dQ7lBTvr!U3FtJE1BuG>w7Yk82lET6u znKMU_C(0Mr7hP)oN%DESMt>wrI@h1^ARkl@E8((u`?hdN_(|9i_JneFzWxin!t2BU delta 251 zcmaFLbD69Do)F7a1|Z-7Vi_Qg0b*_-o&&@nZ~}-0f%qg4ivaO$DE$FQgTz@G85m4} zv^bE~2GTx2+5kvb0O`d*yb_2(>U^0Y`s0DLGLT;aq)izZ+!$s68LNN-=YVtwkgjB5 zU}ypHfizGr13M720x?jUfena(!eGY&DF!AG0Rj{6KG}SoaS7wZhw8$)iOCt6d8xXY gDGKSSd8tK-C8?VoS)>@*3ySiSQ;Uly7qG4d01#p%<^TWy diff --git a/lang/python/hi/LC_MESSAGES/python.po b/lang/python/hi/LC_MESSAGES/python.po index a2a8bb3d4..d9f42caca 100644 --- a/lang/python/hi/LC_MESSAGES/python.po +++ b/lang/python/hi/LC_MESSAGES/python.po @@ -20,24 +20,24 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "फ़ाइल सिस्टम माउंट से हटाएँ।" #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "Dummy python job." +msgstr "डमी पाइथन प्रक्रिया ।" #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "Dummy python step {}" +msgstr "डमी पाइथन प्रक्रिया की चरण संख्या {}" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "machine-id generate करें।" +msgstr "मशीन-आईडी उत्पन्न करें।" #: src/modules/packages/main.py:61 #, python-format 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 msgid "Install packages." diff --git a/lang/python/ko/LC_MESSAGES/python.mo b/lang/python/ko/LC_MESSAGES/python.mo index 9dfa007bded575a5934de04c1ed37c5ebb18a03d..a11c754cfe14e945c70248ffedef5c9019c5d33b 100644 GIT binary patch literal 1238 zcmah{TWb?R6khKd@Ig@!Q8*74Qgn8=rE1t(F}ATrjVUn-`nGPS>DuhfvNN#;5kymv zrh>O(k)$X@t5EUQ2L)gJ3%>X!`r4g5`3F4Pn@SZAe0+1xocqkzt!pPVlud|Thyr3W zVg?b(H^dgicf>Ztk44_NYQer6xeILu@?PWuvWa{Lc{}naEWWv{)kbcaC$0e7enQP5H*h_}TZUS<*<4QPu?j)mF_?OKj{{PK$Q%hr|2&oVE{ z1A}gff~ep;-a^Ss)R81zAm?ZxT+S>QNcNsg_NU-nDt9KGJsrzYp9hj;MA0pfqvfI? zd2T^$Ae$$>0ktItkv?3B1)XL`f|&bBX9CPFYyUxFc9|wRk{rG4M#&fb&Zm+&lF5?3 zBplCLne^TZ+0&`mDO*UA4{Rn%w&Z~YCtPy8Lh(8JT@McVIJ)FT*E_O&(ixS9_sy5Z zXjUxa@=2cBo&_g4w#FbnB&9Db!x$ME(Pfm|9i&%uhkJ%&mu$}ts4yf(2&2<94|EvA z+-Q$w(wWq+eRSw%td}!M8MasPaZX9ENW(ALF6#zo$PNURJ!kXBNaB}YRBDh0B*h$F zz<07BanY5_U0N{AV*{mfV3)`-9(ck6=Fh95r=uGdjy+~~Obc&62w%O2*7&$;%&OZn zpr-Dshokz+i?H^5?p-zdq-yG^`Y;Kq)(GEK)zqEv=|@mE8>;%IHSr>>-3n_>U2Ba$ zZ{29B>FeSBrfO6{Rht;}o5SKCntNSWjY(|a@9vY~*aJ|_yJ~9mpPAoIhRkv-gQjca^WACFKv?gZN`2C0F8$=4YBCog8Y1^^P9 B2#x>% diff --git a/lang/python/ko/LC_MESSAGES/python.po b/lang/python/ko/LC_MESSAGES/python.po index 7ac2b3d4d..a880b2af1 100644 --- a/lang/python/ko/LC_MESSAGES/python.po +++ b/lang/python/ko/LC_MESSAGES/python.po @@ -10,6 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Ji-Hyeon Gim , 2018\n" "Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,37 +20,37 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "파일 시스템 마운트를 해제합니다." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "" +msgstr "더미 파이썬 작업." #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "" +msgstr "더미 파이썬 단계 {}" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "" +msgstr "장치 식별자를 생성합니다." #: src/modules/packages/main.py:61 #, python-format 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 msgid "Install packages." -msgstr "" +msgstr "패키지들을 설치합니다." #: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" +msgstr[0] "%(num)d개의 패키지들을 설치하는 중입니다." #: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" +msgstr[0] "%(num)d개의 패키지들을 제거하는 중입니다." From 25533c4dcea40829d2e2cdd4638bb2e0c00f2bbc Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 16 Jun 2018 19:40:23 -0400 Subject: [PATCH 295/385] i18n: Update language lists with Korean and current stats --- CMakeLists.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 32cd8ab3c..fa6f38c91 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,11 +82,11 @@ set( CALAMARES_VERSION_RC 0 ) # checks for new languages and misspelled ones are done (that is, # copy these four lines to four backup lines, add "p", and then update # 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_good sq es pl ja sk it_IT hu ru he de nl bg uk ) -set( _tx_ok ast is ar sv el es_MX gl en_GB th fi_FI hi eu sr nb - sl sr@latin mr es_PR kk kn et be ) -set( _tx_bad uz lo ur gu fr_CH fa eo ko ) +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 de pt_BR zh_CN ja ro es sk ) +set( _tx_ok hu ru he nl bg uk ast is ko ar sv el gl en_GB + th fi_FI hi eu nb sr sl sr@latin mr es_PR kn kk be ) +set( _tx_bad fr_CH gu lo fa ur uz eo ) ### Required versions From 18bd455ae1c07b0355cde105d58841b6c52f67c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20M=C3=BCller?= Date: Sun, 17 Jun 2018 07:47:58 +0200 Subject: [PATCH 296/385] [bootloader] make paths for executable optional and adjustable --- src/modules/bootloader/bootloader.conf | 6 ++++-- src/modules/bootloader/main.py | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/modules/bootloader/bootloader.conf b/src/modules/bootloader/bootloader.conf index def686262..ee8680f72 100644 --- a/src/modules/bootloader/bootloader.conf +++ b/src/modules/bootloader/bootloader.conf @@ -21,12 +21,14 @@ timeout: "10" # GRUB 2 binary names and boot directory # Some distributions (e.g. Fedora) use grub2-* (resp. /boot/grub2/) names. # 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" grubMkconfig: "grub-mkconfig" 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 # grub-install --bootloader-id. diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index 1abee68f7..dec0bda4b 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -8,7 +8,7 @@ # Copyright 2014, Daniel Hillenbrand # Copyright 2014, Benjamin Vaudour # Copyright 2014, Kevin Kofler -# Copyright 2015-2017, Philip Mueller +# Copyright 2015-2018, Philip Mueller # Copyright 2016-2017, Teo Mrnjavac # Copyright 2017, Alf Gaida # Copyright 2017-2018, Adriaan de Groot @@ -351,7 +351,7 @@ def install_secureboot(efi_directory): raise ValueError("No partition number found for %s" % install_efi_directory) subprocess.call([ - "/usr/sbin/efibootmgr", + libcalamares.job.configuration["efiBootMgr"], "-c", "-w", "-L", efi_bootloader_id, From 1bd149c14e98277ae40f5d41503e5ace9a046274 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20M=C3=BCller?= Date: Sun, 17 Jun 2018 12:53:31 +0200 Subject: [PATCH 297/385] [packages] add initial support for update target system --- src/modules/packages/main.py | 48 ++++++++++++++++++++++++++++-- src/modules/packages/packages.conf | 4 ++- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py index d9741287b..0190d474f 100644 --- a/src/modules/packages/main.py +++ b/src/modules/packages/main.py @@ -8,6 +8,7 @@ # Copyright 2016-2017, Kyle Robbertze # Copyright 2017, Alf Gaida # Copyright 2018, Adriaan de Groot +# Copyright 2018, Philip Müller # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -153,6 +154,9 @@ class PMPackageKit(PackageManager): def update_db(self): check_target_env_call(["pkcon", "refresh"]) + def update_system(self): + # Doesn't need to update the system explicitly + pass class PMZypp(PackageManager): backend = "zypp" @@ -170,6 +174,9 @@ class PMZypp(PackageManager): def update_db(self): check_target_env_call(["zypper", "--non-interactive", "update"]) + def update_system(self): + # Doesn't need to update the system explicitly + pass class PMYum(PackageManager): backend = "yum" @@ -185,6 +192,9 @@ class PMYum(PackageManager): # Doesn't need updates pass + def update_system(self): + # Doesn't need to update the system explicitly + pass class PMDnf(PackageManager): backend = "dnf" @@ -199,7 +209,11 @@ class PMDnf(PackageManager): "remove"] + pkgs) def update_db(self): - # Doesn't need to update explicitly + # Doesn't need updates + pass + + def update_system(self): + # Doesn't need to update the system explicitly pass @@ -218,6 +232,10 @@ class PMUrpmi(PackageManager): def update_db(self): check_target_env_call(["urpmi.update", "-a"]) + def update_system(self): + # Doesn't need to update the system explicitly + pass + class PMApt(PackageManager): backend = "apt" @@ -234,6 +252,10 @@ class PMApt(PackageManager): def update_db(self): check_target_env_call(["apt-get", "update"]) + def update_system(self): + # Doesn't need to update the system explicitly + pass + class PMPacman(PackageManager): backend = "pacman" @@ -242,7 +264,7 @@ class PMPacman(PackageManager): if from_local: pacman_flags = "-U" else: - pacman_flags = "-Sy" + pacman_flags = "-S" check_target_env_call(["pacman", pacman_flags, "--noconfirm"] + pkgs) @@ -253,6 +275,9 @@ class PMPacman(PackageManager): def update_db(self): check_target_env_call(["pacman", "-Sy"]) + def update_system(self): + check_target_env_call(["pacman", "-Su"]) + class PMPortage(PackageManager): backend = "portage" @@ -267,6 +292,10 @@ class PMPortage(PackageManager): def update_db(self): check_target_env_call(["emerge", "--sync"]) + def update_system(self): + # Doesn't need to update the system explicitly + pass + class PMEntropy(PackageManager): backend = "entropy" @@ -280,6 +309,10 @@ class PMEntropy(PackageManager): def update_db(self): check_target_env_call(["equo", "update"]) + def update_system(self): + # Doesn't need to update the system explicitly + pass + class PMDummy(PackageManager): backend = "dummy" @@ -293,6 +326,9 @@ class PMDummy(PackageManager): def update_db(self): libcalamares.utils.debug("Updating DB") + def update_system(self): + libcalamares.utils.debug("Updating System") + def run(self, script): libcalamares.utils.debug("Running script '" + str(script) + "'") @@ -309,6 +345,10 @@ class PMPisi(PackageManager): def update_db(self): 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, # and index them based on the backend property of each class. @@ -452,6 +492,10 @@ def run(): if update_db and libcalamares.globalstorage.value("hasInternet"): 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", []) if libcalamares.globalstorage.contains("packageOperations"): operations += libcalamares.globalstorage.value("packageOperations") diff --git a/src/modules/packages/packages.conf b/src/modules/packages/packages.conf index ae141ee3a..84446257e 100644 --- a/src/modules/packages/packages.conf +++ b/src/modules/packages/packages.conf @@ -26,9 +26,11 @@ backend: dummy # You can run a package-manager specific update procedure # before installing packages (for instance, to update the # 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* and/or *update_system* +# to true to do so. skip_if_no_internet: false update_db: true +update_system: false # # List of maps with package operations such as install or remove. From c600c3eccaa20b56f2f86396ad6c80e18fc8a949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20M=C3=BCller?= Date: Sun, 17 Jun 2018 13:10:59 +0200 Subject: [PATCH 298/385] [packages] update documentation to reflect 'update_db' and 'update_system' differences --- src/modules/packages/packages.conf | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/modules/packages/packages.conf b/src/modules/packages/packages.conf index 84446257e..2b1942ea3 100644 --- a/src/modules/packages/packages.conf +++ b/src/modules/packages/packages.conf @@ -16,18 +16,25 @@ backend: dummy # Often package installation needs an internet 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 # enabled in settings. # # 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 # before installing packages (for instance, to update the # list of packages and dependencies); this is done only if there -# is an internet connection. Set *update_db* and/or *update_system* -# 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 is may be needed, to be able to post-install +# additional packages. Therefore set also "update_system" to 'true'. +# skip_if_no_internet: false update_db: true update_system: false @@ -88,14 +95,14 @@ update_system: false # # - if the system locale is English (any variety), then the package is not # installed at all, -# - otherwise $LOCALE or ${LOCALE} is replaced by the **lower-cased** BCP47 -# name of the **language** part of the selected system locale (not the -# country/region/dialect part), e.g. selecting *nl_BE* will use *nl* +# - otherwise $LOCALE or ${LOCALE} is replaced by the 'lower-cased' BCP47 +# name of the 'language' part of the selected system locale (not the +# country/region/dialect part), e.g. selecting "nl_BE" will use "nl" # here. # # 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 -# **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 # there is no localization, installation continues normally. From 3a3a4ec36387cf5a763f93ccf97f2514544c242e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20M=C3=BCller?= Date: Sun, 17 Jun 2018 13:15:55 +0200 Subject: [PATCH 299/385] [packages] update documentation --- src/modules/packages/packages.conf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/modules/packages/packages.conf b/src/modules/packages/packages.conf index 2b1942ea3..974ba07a7 100644 --- a/src/modules/packages/packages.conf +++ b/src/modules/packages/packages.conf @@ -14,6 +14,7 @@ # backend: dummy +# # Often package installation needs an internet connection. # Since you may allow system installation without a connection # and want to offer OPTIONAL package installation, it's @@ -29,11 +30,10 @@ backend: dummy # 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 is may be needed, to be able to post-install -# additional packages. Therefore set also "update_system" to 'true'. +# 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 update_db: true From 22cdc37caa567323d20e7afbbd03669949624b0d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 18 Jun 2018 07:17:42 -0400 Subject: [PATCH 300/385] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 26 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 17 +++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..9a2204613 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -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. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..066b2d920 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -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. From 391d63936fba6a8699968b6b56358d1c13813ab1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 18 Jun 2018 07:19:30 -0400 Subject: [PATCH 301/385] Drop older issue template now that the new (multi) templates are in use. --- .github/ISSUE_TEMPLATE.md | 29 ----------------------------- 1 file changed, 29 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index a498694d2..000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -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): - -> … From 9d17e7210a3578d3333e182780bfd31a1ef1bc55 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 18 Jun 2018 13:28:35 +0200 Subject: [PATCH 302/385] [partition] Change shortcut for "Create" to 'a' Untangle the shortcuts; Create and Cancel had an overlap. Skip 'r' (Revert all changes) and 'e' (Edit) and settle on 'a' (which might also mean "Add"). FIXES #977 --- src/modules/partition/gui/PartitionPage.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/partition/gui/PartitionPage.ui b/src/modules/partition/gui/PartitionPage.ui index 7d24204c9..67ac4fb2d 100644 --- a/src/modules/partition/gui/PartitionPage.ui +++ b/src/modules/partition/gui/PartitionPage.ui @@ -104,7 +104,7 @@ - &Create + Cre&ate From c822627becd9afb1c839d30373d59840bfc8533d Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 18 Jun 2018 07:43:28 -0400 Subject: [PATCH 303/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_es_MX.ts | 16 ++++++++-------- lang/calamares_ru.ts | 30 ++++++++++++++++-------------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/lang/calamares_es_MX.ts b/lang/calamares_es_MX.ts index 657507b9d..ddb6247d7 100644 --- a/lang/calamares_es_MX.ts +++ b/lang/calamares_es_MX.ts @@ -343,7 +343,7 @@ El instalador terminará y se perderán todos los cambios. %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - %1 será reducido a %2MB y una nueva partición de %3MB será creado para %4. + %1 será reducido a %2MB y una nueva partición %3MB will be created for %4. @@ -439,12 +439,12 @@ El instalador terminará y se perderán todos los cambios. Clear mounts for partitioning operations on %1 - Despejar puntos de montaje para operaciones de particionamiento en %1 + Borrar puntos de montaje para operaciones de particionamiento en %1 Clearing mounts for partitioning operations on %1. - Despejando puntos de montaje para operaciones de particionamiento en %1 + Borrando puntos de montaje para operaciones de particionamiento en %1. @@ -499,7 +499,7 @@ El instalador terminará y se perderán todos los cambios. Contextual Processes Job - Tareas de procesos contextuales. + Tareas de procesos contextuales
@@ -507,7 +507,7 @@ El instalador terminará y se perderán todos los cambios. Create a Partition - Crear una partición + Crear una Partición @@ -636,7 +636,7 @@ El instalador terminará y se perderán todos los cambios. Create new %1 partition table on %2. - Crear nueva tabla de particiones %1 en %2 + Crear nueva tabla de partición %1 en %2. @@ -878,7 +878,7 @@ El instalador terminará y se perderán todos los cambios. Install %1 on <strong>new</strong> %2 system partition. - Instalar %1 en <strong>nueva</strong> partición de sistema %2. + Instalar %1 en <strong>nueva</strong> %2 partición de sistema. @@ -1714,7 +1714,7 @@ El instalador terminará y se perderán todos los cambios. <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - <strong>Borrar</strong> el disco <strong>%2<strong> (%3) e instalar %1. + <strong>Borrar</strong> el disco <strong>%2<strong> (%3) e instalar %1. diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts index 4eb4ec417..ba9f715ff 100644 --- a/lang/calamares_ru.ts +++ b/lang/calamares_ru.ts @@ -1325,12 +1325,12 @@ The installer will quit and all changes will be lost. The password contains less than %1 character classes - + Пароль содержит менее %1 классов символов The password does not contain enough character classes - + Пароль содержит недостаточно классов символов @@ -1345,27 +1345,27 @@ The installer will quit and all changes will be lost. The password contains more than %1 characters of the same class consecutively - + Пароль содержит более %1 символов одного и того же класса последовательно The password contains too many characters of the same class consecutively - + Пароль содержит слишком длинную последовательность символов одного и того же класса The password contains monotonic sequence longer than %1 characters - + Пароль содержит монотонную последовательность длиннее %1 символов The password contains too long of a monotonic character sequence - + Пароль содержит слишком длинную монотонную последовательность символов No password supplied - + Не задан пароль @@ -1841,7 +1841,9 @@ There was no output from the command. Output: - + +Вывод: + @@ -1856,17 +1858,17 @@ Output: External command failed to start. - + Не удалось запустить внешнюю команду. Command <i>%1</i> failed to start. - + Не удалось запустить команду <i>%1</i>. Internal error when starting command. - + Внутренняя ошибка при запуске команды. @@ -1876,7 +1878,7 @@ Output: External command failed to finish. - + Не удалось завершить внешнюю команду. @@ -2364,12 +2366,12 @@ Output: Installation feedback - + Отчёт об установке Sending installation feedback. - + Отправка отчёта об установке. From 15e9edca7019f65c76ad3cddba2a7136e08db930 Mon Sep 17 00:00:00 2001 From: Kevin Kofler Date: Mon, 18 Jun 2018 13:52:07 +0200 Subject: [PATCH 304/385] [packages]: Implement update_system for pkcon, yum, dnf Also make install for yum and dnf follow the documented syntax: options (-y) before the command (install), even though yum and dnf also accept the other order. This also makes it consistent with remove. --- src/modules/packages/main.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py index 0190d474f..bffd6a945 100644 --- a/src/modules/packages/main.py +++ b/src/modules/packages/main.py @@ -155,8 +155,7 @@ class PMPackageKit(PackageManager): check_target_env_call(["pkcon", "refresh"]) def update_system(self): - # Doesn't need to update the system explicitly - pass + check_target_env_call(["pkcon", "-py", "update"]) class PMZypp(PackageManager): backend = "zypp" @@ -182,7 +181,7 @@ class PMYum(PackageManager): backend = "yum" 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): check_target_env_call(["yum", "--disablerepo=*", "-C", "-y", @@ -193,14 +192,13 @@ class PMYum(PackageManager): pass def update_system(self): - # Doesn't need to update the system explicitly - pass + check_target_env_call(["yum", "-y", "upgrade"]) class PMDnf(PackageManager): backend = "dnf" 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): # ignore the error code for now because dnf thinks removing a @@ -213,8 +211,7 @@ class PMDnf(PackageManager): pass def update_system(self): - # Doesn't need to update the system explicitly - pass + check_target_env_call(["dnf", "-y", "upgrade"]) class PMUrpmi(PackageManager): From 60ab5dd3cf9ad3372c2915759d35955a3957d9b2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 18 Jun 2018 08:38:20 -0400 Subject: [PATCH 305/385] Update issue template --- .github/ISSUE_TEMPLATE/bug_report.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 9a2204613..3415b4cd4 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,11 +1,8 @@ --- name: Bug report -about: Create a report to help us improve +about: 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. --- - -> 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. From 398b6be4baef280a58bfd69c29f1572df50ceb07 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 18 Jun 2018 10:24:35 -0400 Subject: [PATCH 306/385] Update issue template --- .github/ISSUE_TEMPLATE/bug_report.md | 5 +- lang/calamares_en.ts | 227 ++++++++++-------- lang/python.pot | 34 +-- .../dummypythonqt/lang/dummypythonqt.pot | 18 +- 4 files changed, 156 insertions(+), 128 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 3415b4cd4..9a2204613 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,8 +1,11 @@ --- name: Bug report -about: 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. +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. diff --git a/lang/calamares_en.ts b/lang/calamares_en.ts index 8bd9c5bda..54a23b4e7 100644 --- a/lang/calamares_en.ts +++ b/lang/calamares_en.ts @@ -1,4 +1,6 @@ - + + + BootInfoWidget @@ -45,6 +47,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +107,7 @@ Calamares::ExecutionViewStep - + Install Install @@ -105,7 +115,7 @@ Calamares::JobThread - + Done Done @@ -113,12 +123,12 @@ Calamares::ProcessJob - + Run command %1 %2 Run command %1 %2 - + Running command %1 %2 Running command %1 %2 @@ -126,32 +136,32 @@ Calamares::PythonJob - + Running %1 operation. Running %1 operation. - + Bad working directory path Bad working directory path - + Working directory %1 for python job %2 is not readable. Working directory %1 for python job %2 is not readable. - + Bad main script file Bad main script file - + Main script file %1 for python job %2 is not readable. Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". Boost.Python error in job "%1". @@ -159,97 +169,112 @@ Calamares::ViewManager - + &Back &Back - - + + &Next &Next - - + + &Cancel &Cancel - - + + Cancel installation without changing the system. Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install &Install - + Cancel installation? Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes &Yes - + &No &No - + &Close &Close - + Continue with setup? Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Install now - + Go &back Go &back - + &Done &Done - + The installation is complete. Close the installer. The installation is complete. Close the installer. - + Error Error - + Installation Failed Installation Failed @@ -436,17 +461,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Cleared all mounts for %1 @@ -554,27 +579,27 @@ The installer will quit and all changes will be lost. Si&ze: - + En&crypt En&crypt - + Logical Logical - + Primary Primary - + GPT GPT - + Mountpoint already in use. Please select another one. Mountpoint already in use. Please select another one. @@ -776,7 +801,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -834,7 +859,7 @@ The installer will quit and all changes will be lost. Flags: - + Mountpoint already in use. Please select another one. Mountpoint already in use. Please select another one. @@ -1003,12 +1028,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. Set keyboard layout to %1/%2. @@ -1052,64 +1077,64 @@ The installer will quit and all changes will be lost. Form - + I accept the terms and conditions above. I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>by %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> <a href="%1">view license agreement</a> @@ -1583,34 +1608,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space Free Space - - + + New partition New partition - + Name Name - + File System File System - + Mount Point Mount Point - + Size Size @@ -1639,8 +1664,8 @@ The installer will quit and all changes will be lost. - &Create - &Create + Cre&ate + @@ -1658,17 +1683,17 @@ The installer will quit and all changes will be lost. Install boot &loader on: - + Are you sure you want to create a new partition table on %1? Are you sure you want to create a new partition table on %1? - + Can not create new partition Can not create new partition - + 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. 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. @@ -1676,97 +1701,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Gathering system information... - + Partitions Partitions - + Install %1 <strong>alongside</strong> another operating system. Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Current: - + After: After: - + No EFI system partition configured No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1912,22 +1937,22 @@ Output: Default - + unknown unknown - + extended extended - + unformatted unformatted - + swap swap @@ -2109,29 +2134,29 @@ Output: SetHostNameJob - + Set hostname %1 Set hostname %1 - + Set hostname <strong>%1</strong>. Set hostname <strong>%1</strong>. - + Setting hostname %1. Setting hostname %1. - - + + Internal Error Internal Error - - + + Cannot write hostname to target system Cannot write hostname to target system @@ -2583,9 +2608,9 @@ Output: WelcomeViewStep - + Welcome Welcome - \ No newline at end of file + diff --git a/lang/python.pot b/lang/python.pot index fab6d56ba..2062b9031 100644 --- a/lang/python.pot +++ b/lang/python.pot @@ -2,57 +2,57 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 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" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: \n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "Unmount file systems." +msgstr "" #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "Dummy python job." +msgstr "" #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "Dummy python step {}" +msgstr "" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "Generate machine-id." +msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format 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." -msgstr "Install packages." +msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "Installing one package." -msgstr[1] "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "Removing one package." -msgstr[1] "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" diff --git a/src/modules/dummypythonqt/lang/dummypythonqt.pot b/src/modules/dummypythonqt/lang/dummypythonqt.pot index 1fc28e16d..2cac1d0c0 100644 --- a/src/modules/dummypythonqt/lang/dummypythonqt.pot +++ b/src/modules/dummypythonqt/lang/dummypythonqt.pot @@ -2,41 +2,41 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 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" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: \n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" -msgstr "Click me!" +msgstr "" #: src/modules/dummypythonqt/main.py:94 msgid "A new QLabel." -msgstr "A new QLabel." +msgstr "" #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" -msgstr "Dummy PythonQt ViewStep" +msgstr "" #: src/modules/dummypythonqt/main.py:183 msgid "The Dummy PythonQt Job" -msgstr "The Dummy PythonQt Job" +msgstr "" #: src/modules/dummypythonqt/main.py:186 msgid "This is the Dummy PythonQt Job. The dummy job says: {}" -msgstr "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "" #: src/modules/dummypythonqt/main.py:190 msgid "A status message for Dummy PythonQt Job." -msgstr "A status message for Dummy PythonQt Job." +msgstr "" From a64de3dbfe74233c66ededaaa501b1e708389cc1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 18 Jun 2018 10:29:30 -0400 Subject: [PATCH 307/385] [libcalamaresui] Assign the index to found - Previous code assigns the result of the comparison to found, instead of the index, resulting in the wrong configuration map sent to each module. --- src/libcalamaresui/modulesystem/ModuleManager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 6d13c9564..9c3345a73 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -218,7 +218,9 @@ ModuleManager::loadModules() 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" ); } From 58121abf0643c95379b3f16c266c4c9ae10a9423 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 18 Jun 2018 10:44:28 -0400 Subject: [PATCH 308/385] [libcalamaresui] Wasted spaces --- src/libcalamaresui/modulesystem/ModuleManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 9c3345a73..375d15158 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -220,7 +220,7 @@ ModuleManager::loadModules() { int found = findCustomInstance( customInstances, moduleName, instanceId ); - if ( found > -1 ) + if ( found > -1 ) { configFileName = customInstances[ found ].value( "config" ); } From 1a097f8c490d5eb42df0df2abfeaa3401433471a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 18 Jun 2018 10:56:10 -0400 Subject: [PATCH 309/385] Style: run modulesystem through the style guide --- .../modulesystem/CppJobModule.cpp | 7 ++-- src/libcalamaresui/modulesystem/Module.cpp | 25 ++++-------- src/libcalamaresui/modulesystem/Module.h | 10 ++++- .../modulesystem/ModuleManager.cpp | 26 +++++------- .../modulesystem/ProcessJobModule.cpp | 13 ++---- .../modulesystem/PythonJobModule.cpp | 9 ++--- .../modulesystem/PythonJobModule.h | 3 +- .../modulesystem/PythonQtViewModule.cpp | 40 +++++++++---------- .../modulesystem/PythonQtViewModule.h | 3 +- .../modulesystem/ViewModule.cpp | 3 +- 10 files changed, 61 insertions(+), 78 deletions(-) diff --git a/src/libcalamaresui/modulesystem/CppJobModule.cpp b/src/libcalamaresui/modulesystem/CppJobModule.cpp index 9799066e7..3a48e29f2 100644 --- a/src/libcalamaresui/modulesystem/CppJobModule.cpp +++ b/src/libcalamaresui/modulesystem/CppJobModule.cpp @@ -26,7 +26,8 @@ #include #include -namespace Calamares { +namespace Calamares +{ Module::Type @@ -55,7 +56,7 @@ CppJobModule::loadSelf() return; } - CppJob *cppJob = pf->create< Calamares::CppJob >(); + CppJob* cppJob = pf->create< Calamares::CppJob >(); if ( !cppJob ) { cDebug() << Q_FUNC_INFO << m_loader->errorString(); @@ -68,7 +69,7 @@ CppJobModule::loadSelf() cppJob->setModuleInstanceKey( instanceKey() ); 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; cDebug() << "CppJobModule" << instanceKey() << "loading complete."; } diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index 9b3be877f..c820b98b3 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -71,8 +71,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, QString typeString = moduleDescriptor.value( "type" ).toString(); QString intfString = moduleDescriptor.value( "interface" ).toString(); - if ( typeString.isEmpty() || - intfString.isEmpty() ) + if ( typeString.isEmpty() || intfString.isEmpty() ) { cError() << "Bad module descriptor format" << instanceId; return nullptr; @@ -80,9 +79,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, if ( ( typeString == "view" ) || ( typeString == "viewmodule" ) ) { if ( intfString == "qtplugin" ) - { m.reset( new ViewModule() ); - } else if ( intfString == "pythonqt" ) { #ifdef WITH_PYTHONQT @@ -97,13 +94,9 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, else if ( typeString == "job" ) { if ( intfString == "qtplugin" ) - { m.reset( new CppJobModule() ); - } else if ( intfString == "process" ) - { m.reset( new ProcessJobModule() ); - } else if ( intfString == "python" ) { #ifdef WITH_PYTHON @@ -121,8 +114,8 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, if ( !m ) { cError() << "Bad module type (" << typeString - << ") or interface string (" << intfString - << ") for module " << instanceId; + << ") or interface string (" << intfString + << ") for module " << instanceId; return nullptr; } @@ -168,8 +161,7 @@ Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Ex { configFilesByPriority.append( QDir( QDir::currentPath() ).absoluteFilePath( - QString( "src/modules/%1/%2" ).arg( m_name ) - .arg( configFileName ) ) ); + QString( "src/modules/%1/%2" ).arg( m_name ).arg( configFileName ) ) ); } configFilesByPriority.append( @@ -201,8 +193,8 @@ Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Ex m_configurationMap = CalamaresUtils::yamlMapToVariant( doc ).toMap(); m_emergency = m_maybe_emergency - && m_configurationMap.contains( EMERGENCY ) - && m_configurationMap[ EMERGENCY ].toBool(); + && m_configurationMap.contains( EMERGENCY ) + && m_configurationMap[ EMERGENCY ].toBool(); return; } else @@ -228,8 +220,7 @@ Module::instanceId() const QString Module::instanceKey() const { - return QString( "%1@%2" ).arg( m_name ) - .arg( m_instanceId ); + return QString( "%1@%2" ).arg( m_name ).arg( m_instanceId ); } @@ -297,9 +288,7 @@ Module::initFrom( const QVariantMap& moduleDescriptor ) m_name = moduleDescriptor.value( "name" ).toString(); if ( moduleDescriptor.contains( EMERGENCY ) ) - { m_maybe_emergency = moduleDescriptor[ EMERGENCY ].toBool(); - } } } //ns diff --git a/src/libcalamaresui/modulesystem/Module.h b/src/libcalamaresui/modulesystem/Module.h index 4fd0020f8..18c2e4cbe 100644 --- a/src/libcalamaresui/modulesystem/Module.h +++ b/src/libcalamaresui/modulesystem/Module.h @@ -147,7 +147,10 @@ public: * @brief isLoaded reports on the loaded status of a module. * @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. @@ -164,7 +167,10 @@ public: * are not run (in the common case where there is only * 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. diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 375d15158..ed1e52f9f 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -60,10 +60,8 @@ ModuleManager::ModuleManager( const QStringList& paths, QObject* parent ) ModuleManager::~ModuleManager() { // The map is populated with Module::fromDescriptor(), which allocates on the heap. - for( auto moduleptr : m_loadedModulesByInstanceKey ) - { + for ( auto moduleptr : m_loadedModulesByInstanceKey ) delete moduleptr; - } } @@ -119,14 +117,12 @@ ModuleManager::doInit() else { cWarning() << "Cannot cd into module directory " - << path << "/" << subdir; + << path << "/" << subdir; } } } else - { cDebug() << "ModuleManager bad search path" << path; - } } // At this point m_availableModules is filled with whatever was found in the // search paths. @@ -182,10 +178,10 @@ ModuleManager::loadModules() { QStringList failedModules; Settings::InstanceDescriptionList customInstances = - Settings::instance()->customModuleInstances(); + Settings::instance()->customModuleInstances(); const auto modulesSequence = Settings::instance()->modulesSequence(); - for ( const auto &modulePhase : modulesSequence ) + for ( const auto& modulePhase : modulesSequence ) { ModuleAction currentAction = modulePhase.first; @@ -197,7 +193,7 @@ ModuleManager::loadModules() QString instanceId; QString configFileName; if ( moduleEntrySplit.length() < 1 || - moduleEntrySplit.length() > 2 ) + moduleEntrySplit.length() > 2 ) { cError() << "Wrong module entry format for module" << moduleEntry; failedModules.append( moduleEntry ); @@ -208,10 +204,10 @@ ModuleManager::loadModules() configFileName = QString( "%1.conf" ).arg( 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." - << Logger::DebugList( m_paths ); + << Logger::DebugList( m_paths ); failedModules.append( moduleName ); continue; } @@ -221,9 +217,7 @@ ModuleManager::loadModules() int found = findCustomInstance( customInstances, moduleName, instanceId ); if ( found > -1 ) - { configFileName = customInstances[ found ].value( "config" ); - } else //ought to be a custom instance, but cannot find instance entry { cError() << "Custom instance" << moduleEntry << "not found in custom instances section."; @@ -254,9 +248,7 @@ ModuleManager::loadModules() } if ( thisModule && thisModule->isLoaded() ) - { cDebug() << "Module" << instanceKey << "already loaded."; - } else { thisModule = @@ -318,10 +310,10 @@ ModuleManager::checkDependencies() forever { for ( auto it = m_availableDescriptorsByModuleName.begin(); - it != m_availableDescriptorsByModuleName.end(); ++it ) + it != m_availableDescriptorsByModuleName.end(); ++it ) { foreach ( const QString& depName, - (*it).value( "requiredModules" ).toStringList() ) + ( *it ).value( "requiredModules" ).toStringList() ) { if ( !m_availableDescriptorsByModuleName.contains( depName ) ) { diff --git a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp index d8e171977..9037d85a6 100644 --- a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp +++ b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp @@ -22,7 +22,8 @@ #include -namespace Calamares { +namespace Calamares +{ Module::Type @@ -68,23 +69,17 @@ ProcessJobModule::initFrom( const QVariantMap& moduleDescriptor ) m_workingPath = directory.absolutePath(); if ( !moduleDescriptor.value( "command" ).toString().isEmpty() ) - { m_command = moduleDescriptor.value( "command" ).toString(); - } m_secondsTimeout = 30; if ( moduleDescriptor.contains( "timeout" ) && - !moduleDescriptor.value( "timeout" ).isNull() ) - { + !moduleDescriptor.value( "timeout" ).isNull() ) m_secondsTimeout = moduleDescriptor.value( "timeout" ).toInt(); - } m_runInChroot = false; if ( moduleDescriptor.contains( "chroot" )&& - !moduleDescriptor.value( "chroot" ).isNull() ) - { + !moduleDescriptor.value( "chroot" ).isNull() ) m_runInChroot = moduleDescriptor.value( "chroot" ).toBool(); - } } diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.cpp b/src/libcalamaresui/modulesystem/PythonJobModule.cpp index 586eb6e27..7099a3f72 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonJobModule.cpp @@ -23,7 +23,8 @@ #include -namespace Calamares { +namespace Calamares +{ Module::Type @@ -46,9 +47,7 @@ PythonJobModule::loadSelf() if ( m_loaded ) return; - m_job = Calamares::job_ptr( new PythonJob( m_scriptFileName, - m_workingPath, - m_configurationMap ) ); + m_job = Calamares::job_ptr( new PythonJob( m_scriptFileName, m_workingPath, m_configurationMap ) ); m_loaded = true; } @@ -68,9 +67,7 @@ PythonJobModule::initFrom( const QVariantMap& moduleDescriptor ) m_workingPath = directory.absolutePath(); if ( !moduleDescriptor.value( "script" ).toString().isEmpty() ) - { m_scriptFileName = moduleDescriptor.value( "script" ).toString(); - } } diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.h b/src/libcalamaresui/modulesystem/PythonJobModule.h index 78678bcf8..38b10be83 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.h +++ b/src/libcalamaresui/modulesystem/PythonJobModule.h @@ -23,7 +23,8 @@ #include "UiDllMacro.h" -namespace Calamares { +namespace Calamares +{ class UIDLLEXPORT PythonJobModule : public Module { diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp index b667b6a81..9d0aa95e2 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp @@ -40,7 +40,8 @@ static QPointer< GlobalStorage > s_gs = nullptr; static QPointer< Utils > s_utils = nullptr; -namespace Calamares { +namespace Calamares +{ Module::Type PythonQtViewModule::type() const @@ -98,20 +99,21 @@ PythonQtViewModule::loadSelf() cala.addObject( "utils", s_utils ); // Append configuration object, in module PythonQt.calamares - cala.addVariable("configuration", m_configurationMap); + cala.addVariable( "configuration", m_configurationMap ); // Basic stdout/stderr handling QObject::connect( PythonQt::self(), &PythonQt::pythonStdOut, - []( const QString& message ) - { - cDebug() << "PythonQt OUT>" << message; - } ); + []( const QString& message ) + { + cDebug() << "PythonQt OUT>" << message; + } + ); QObject::connect( PythonQt::self(), &PythonQt::pythonStdErr, - []( const QString& message ) - { - cDebug() << "PythonQt ERR>" << message; - } ); - + []( const QString& message ) + { + cDebug() << "PythonQt ERR>" << message; + } + ); } QDir workingDir( m_workingPath ); @@ -137,8 +139,8 @@ PythonQtViewModule::loadSelf() // Construct empty Python module with the given name PythonQtObjectPtr cxt = - PythonQt::self()-> - createModuleFromScript( name() ); + PythonQt::self()-> + createModuleFromScript( name() ); if ( cxt.isNull() ) { cDebug() << "Cannot load PythonQt context from file" @@ -149,11 +151,11 @@ PythonQtViewModule::loadSelf() } static const QLatin1Literal calamares_module_annotation( - "_calamares_module_typename = ''\n" - "def calamares_module(viewmodule_type):\n" - " global _calamares_module_typename\n" - " _calamares_module_typename = viewmodule_type.__name__\n" - " return viewmodule_type\n"); + "_calamares_module_typename = ''\n" + "def calamares_module(viewmodule_type):\n" + " global _calamares_module_typename\n" + " _calamares_module_typename = viewmodule_type.__name__\n" + " return viewmodule_type\n" ); // Load in the decorator PythonQt::self()->evalScript( cxt, calamares_module_annotation ); @@ -191,9 +193,7 @@ PythonQtViewModule::initFrom( const QVariantMap& moduleDescriptor ) m_workingPath = directory.absolutePath(); if ( !moduleDescriptor.value( "script" ).toString().isEmpty() ) - { m_scriptFileName = moduleDescriptor.value( "script" ).toString(); - } } PythonQtViewModule::PythonQtViewModule() diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.h b/src/libcalamaresui/modulesystem/PythonQtViewModule.h index 327e24269..cc6899599 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.h +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.h @@ -22,7 +22,8 @@ #include "UiDllMacro.h" #include "Module.h" -namespace Calamares { +namespace Calamares +{ class ViewStep; diff --git a/src/libcalamaresui/modulesystem/ViewModule.cpp b/src/libcalamaresui/modulesystem/ViewModule.cpp index 492d58fda..473ec6457 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.cpp +++ b/src/libcalamaresui/modulesystem/ViewModule.cpp @@ -27,7 +27,8 @@ #include #include -namespace Calamares { +namespace Calamares +{ Module::Type From 863d00f40c00fa0b551fd96f6a5302213c2a76bc Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 19 Jun 2018 08:42:25 -0400 Subject: [PATCH 311/385] [localecfg] Document purpose of this module --- src/modules/localecfg/main.py | 1 + src/modules/localecfg/module.desc | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/modules/localecfg/main.py b/src/modules/localecfg/main.py index d44d7da2b..55c704fae 100644 --- a/src/modules/localecfg/main.py +++ b/src/modules/localecfg/main.py @@ -7,6 +7,7 @@ # Copyright 2015, Philip Müller # Copyright 2016, Teo Mrnjavac # Copyright 2018, AlmAck +# Copyright 2018, Adriaan de Groot # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/localecfg/module.desc b/src/modules/localecfg/module.desc index 89baab7ad..815480562 100644 --- a/src/modules/localecfg/module.desc +++ b/src/modules/localecfg/module.desc @@ -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" name: "localecfg" From 7498629b5f71e189d63468ac6e49ff35080f2ed2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 19 Jun 2018 08:46:50 -0400 Subject: [PATCH 312/385] [localecfg] Move all path-setting to one spot - Make the way the paths are constructed consistent - Name the paths more consistently --- src/modules/localecfg/main.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/modules/localecfg/main.py b/src/modules/localecfg/main.py index 55c704fae..a192fa902 100644 --- a/src/modules/localecfg/main.py +++ b/src/modules/localecfg/main.py @@ -48,23 +48,27 @@ def run(): } 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 if os.path.exists('/etc/locale.gen.bak'): - shutil.copy2("{!s}/etc/locale.gen.bak".format(install_path), - "{!s}/etc/locale.gen".format(install_path)) + shutil.copy2(target_locale_gen_bak, + target_locale_gen) # run locale-gen if detected if os.path.exists('/etc/locale.gen'): text = [] - with open("{!s}/etc/locale.gen".format(install_path), "r") as gen: + with open(target_locale_gen, "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: + with open(target_locale_gen, "w") as gen: for line in text: # always enable en_US if line.startswith("#" + en_us_locale): @@ -82,15 +86,13 @@ def run(): print('locale.gen done') # write /etc/locale.conf - locale_conf_path = os.path.join(install_path, "etc/locale.conf") - with open(locale_conf_path, "w") as lcf: + with open(target_locale_conf_path, "w") as lcf: for k, v in locale_conf.items(): lcf.write("{!s}={!s}\n".format(k, v)) # write /etc/default/locale if /etc/default exists and is a dir - etc_default_path = os.path.join(install_path, "etc/default") - if os.path.isdir(etc_default_path): - with open(os.path.join(etc_default_path, "locale"), "w") as edl: + if os.path.isdir(target_etc_default_path): + with open(os.path.join(target_etc_default_path, "locale"), "w") as edl: for k, v in locale_conf.items(): edl.write("{!s}={!s}\n".format(k, v)) From efc977f7b437d11011de640659b42e4bb78e9708 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 19 Jun 2018 08:56:37 -0400 Subject: [PATCH 313/385] [localecfg] Fix mismatch between filenames Testing for existence of a file in the live system, and then copying it in the target system, is not a recipe for success. - Fix the restore-from-backup part. - Document that your live and target system must both have /etc/locale.gen if you want this to work at all. --- src/modules/localecfg/main.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/modules/localecfg/main.py b/src/modules/localecfg/main.py index a192fa902..4b12b9311 100644 --- a/src/modules/localecfg/main.py +++ b/src/modules/localecfg/main.py @@ -54,11 +54,12 @@ def run(): target_etc_default_path = "{!s}/etc/default".format(install_path) # restore backup if available - if os.path.exists('/etc/locale.gen.bak'): - shutil.copy2(target_locale_gen_bak, - target_locale_gen) + if os.path.exists(target_locale_gen_bak): + shutil.copy2(target_locale_gen_bak, 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'): text = [] From b283ad69d567bad4d112120e6bcb71572d9f7213 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 19 Jun 2018 17:58:26 +0200 Subject: [PATCH 314/385] [libcalamares] Complain if key isn't set - Previous check would also fail when the setting is false, not just when the key is missing. --- src/libcalamares/Settings.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/libcalamares/Settings.cpp b/src/libcalamares/Settings.cpp index 80f6836bb..6450332f0 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -29,13 +29,19 @@ #include +static bool +hasValue( const YAML::Node& v ) +{ + return !( ( v.Type() == YAML::NodeType::Null ) || ( v.Type() == YAML::NodeType::Undefined ) ); +} /** Helper function to grab a QString out of the config, and to warn if not present. */ static QString requireString( const YAML::Node& config, const char* key ) { - if ( config[ key ] ) - return QString::fromStdString( config[ key ].as< std::string >() ); + auto v = config[ key ]; + if ( hasValue(v) ) + return QString::fromStdString( v.as< std::string >() ); else { cWarning() << "Required settings.conf key" << key << "is missing."; @@ -47,8 +53,9 @@ requireString( const YAML::Node& config, const char* key ) static bool requireBool( const YAML::Node& config, const char* key, bool d ) { - if ( config[ key ] ) - return config[ key ].as< bool >(); + auto v = config[ key ]; + if ( hasValue(v) ) + return v.as< bool >(); else { cWarning() << "Required settings.conf key" << key << "is missing."; From ec09272b8199b79d89ad96461bbd4c43ac762f27 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 19 Jun 2018 18:04:38 +0200 Subject: [PATCH 315/385] [libcalamares] Fix inverted logic Reported by bshah. --- src/libcalamares/Settings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcalamares/Settings.cpp b/src/libcalamares/Settings.cpp index 6450332f0..ac4cea896 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -182,7 +182,7 @@ Settings::Settings( const QString& settingsFilePath, m_brandingComponentName = requireString( config, "branding" ); 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 ) { From 413ee81eade994a99ab3894c4bafaa4b146df931 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 20 Jun 2018 07:13:36 -0400 Subject: [PATCH 316/385] [localecfg] Simplify handling of en_US - By adding en_US to the set of locales-to-enable, we can drop the special-case code for it. --- src/modules/localecfg/main.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/modules/localecfg/main.py b/src/modules/localecfg/main.py index 4b12b9311..413026c06 100644 --- a/src/modules/localecfg/main.py +++ b/src/modules/localecfg/main.py @@ -68,14 +68,10 @@ def run(): # 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 with open(target_locale_gen, "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 From 85516535754bbbafb6d53bebf3e73c5e65e4e160 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 20 Jun 2018 08:35:18 -0400 Subject: [PATCH 317/385] [localecfg] Re-write the locale.gen file better - Improved debug-logging - Fix the actual problem of listing locales more than once, by listing them all, uniqified, at the end, with an explanitory comment in the generated file. - Be more accepting of what constitutes a locale-line; this allows spaces before and after the `#` comment sign, but because we're uniquifying, this doesn't cause duplicates. - Because we write the enabled locales at the end, the full file comment-header is retained un-mangled (instead of accidentally enabling a locale mentioned as an example there). --- src/modules/localecfg/main.py | 100 +++++++++++++++++++++++++++------- 1 file changed, 79 insertions(+), 21 deletions(-) diff --git a/src/modules/localecfg/main.py b/src/modules/localecfg/main.py index 413026c06..bf41e6317 100644 --- a/src/modules/localecfg/main.py +++ b/src/modules/localecfg/main.py @@ -23,14 +23,85 @@ # along with Calamares. If not, see . import os +import re 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_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() + # 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(): """ Create locale """ - en_us_locale = 'en_US.UTF-8' + import libcalamares + locale_conf = libcalamares.globalstorage.value("localeConf") if not locale_conf: @@ -56,41 +127,28 @@ def run(): # restore backup if available if os.path.exists(target_locale_gen_bak): shutil.copy2(target_locale_gen_bak, target_locale_gen) + libcalamares.utils.debug("Restored backup {!s} -> {!s}" + .format(target_locale_gen_bak).format(target_locale_gen)) # 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'): - text = [] - - with open(target_locale_gen, "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 - - with open(target_locale_gen, "w") as gen: - for line in text: - for locale_value in locale_values: - if line.startswith("#" + locale_value): - # uncomment line - line = line[1:].lstrip() - - gen.write(line) - + rewrite_locale_gen(target_locale_gen, target_locale_gen, locale_conf) libcalamares.utils.target_env_call(['locale-gen']) - print('locale.gen done') + libcalamares.utils.debug('{!s} done'.format(target_locale_gen)) # write /etc/locale.conf with open(target_locale_conf_path, "w") as lcf: for k, v in locale_conf.items(): 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 if os.path.isdir(target_etc_default_path): with open(os.path.join(target_etc_default_path, "locale"), "w") as edl: for k, v in locale_conf.items(): edl.write("{!s}={!s}\n".format(k, v)) + libcalamares.utils.debug('{!s} done'.format(target_etc_default_path)) return None From 25f249180b40f95958601f5d2431a365bd6ce2a8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 20 Jun 2018 09:11:23 -0400 Subject: [PATCH 318/385] [localecfg] Be slightly more conservative interpreting comments - A valid line (as explained in the comments at the top of the locale.gen file) is (two fields), so lines with more than two fields can't be valid locale- listing lines. For them, pretend they name locale "", which won't be matched. --- src/modules/localecfg/main.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/modules/localecfg/main.py b/src/modules/localecfg/main.py index bf41e6317..62a00b738 100644 --- a/src/modules/localecfg/main.py +++ b/src/modules/localecfg/main.py @@ -34,6 +34,7 @@ def is_comment(line): """ return bool(RE_IS_COMMENT.match(line)) +RE_TRAILING_COMMENT = re.compile("#.*$") RE_REST_OF_LINE = re.compile("\\s.*$") def extract_locale(line): """ @@ -46,9 +47,14 @@ def extract_locale(line): # Remove leading spaces and comment signs line = RE_IS_COMMENT.sub("", line) uncommented = line.strip() - # Drop all but first field - locale = RE_REST_OF_LINE.sub("", uncommented) - return locale, uncommented + 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): From d59a44be44831a799c0fc4ee388c9fd4fee51bac Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 20 Jun 2018 15:59:23 +0200 Subject: [PATCH 319/385] [libcalamares] Asking for type of undefined node throws - Use YAML-CPP API for finding out if a node has a value at all. - Asking for Type() of an undefined or NULL node throws an exception, so the existing code didn't **actually** catch cases where a required setting wasn't set at all. --- src/libcalamares/Settings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcalamares/Settings.cpp b/src/libcalamares/Settings.cpp index ac4cea896..1fdfc6daa 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -32,7 +32,7 @@ static bool hasValue( const YAML::Node& v ) { - return !( ( v.Type() == YAML::NodeType::Null ) || ( v.Type() == YAML::NodeType::Undefined ) ); + return v.IsDefined() && !v.IsNull(); } /** Helper function to grab a QString out of the config, and to warn if not present. */ From f25d6b278d6a91e8a1d588c87e59e620db322e9e Mon Sep 17 00:00:00 2001 From: Raul Rodrigo Segura Date: Thu, 21 Jun 2018 13:21:48 +0200 Subject: [PATCH 320/385] add support onLeave and onActivate to pythonqt plugins --- .../viewpages/PythonQtViewStep.cpp | 18 ++++++++++++++++++ .../viewpages/PythonQtViewStep.h | 2 ++ 2 files changed, 20 insertions(+) diff --git a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp index 4915fe120..2d128d1af 100644 --- a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp @@ -159,6 +159,24 @@ PythonQtViewStep::isAtEnd() const "is_at_end" } ).toBool(); } +void +PythonQtViewStep::onActivate() +{ + CalamaresUtils::lookupAndCall( m_obj, + { "onActivate", + "onactivate", + "on_activate" }); +} + +void +PythonQtViewStep::onLeave() +{ + CalamaresUtils::lookupAndCall( m_obj, + { "onLeave", + "onleave", + "on_leave" }); +} + JobList PythonQtViewStep::jobs() const diff --git a/src/libcalamaresui/viewpages/PythonQtViewStep.h b/src/libcalamaresui/viewpages/PythonQtViewStep.h index 79862204a..b6b7c193b 100644 --- a/src/libcalamaresui/viewpages/PythonQtViewStep.h +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.h @@ -39,6 +39,8 @@ public: void next() override; void back() override; + void onLeave() override; + void onActivate() override; bool isNextEnabled() const override; bool isBackEnabled() const override; From 88e082d53185b1b559feaca2c3062279a27111b3 Mon Sep 17 00:00:00 2001 From: udeved Date: Sun, 3 Jun 2018 22:30:08 +0200 Subject: [PATCH 321/385] openrccfg: add small documentation in conf, make service location configurable --- src/modules/openrccfg/main.py | 15 ++++++----- src/modules/openrccfg/openrccfg.conf | 37 +++++++++++++++++++++++++--- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/src/modules/openrccfg/main.py b/src/modules/openrccfg/main.py index 724b02c3f..9dc6bf1ff 100644 --- a/src/modules/openrccfg/main.py +++ b/src/modules/openrccfg/main.py @@ -27,22 +27,25 @@ from os.path import exists, join class OpenrcController: - """This is the service controller + """This is the openrc service controller """ def __init__(self): self.root = libcalamares.globalstorage.value('rootMountPoint') self.services = libcalamares.job.configuration.get('services', []) + self.initdDir = libcalamares.job.configuration['initdDir'] + self.runlevelsDir = libcalamares.job.configuration['runlevelsDir'] def update(self, state): - """Update init scripts + """call rc-update for each service listed """ for svc in self.services[state]: - if exists(self.root + "/etc/init.d/" + svc["name"]): - target_env_call( - ["rc-update", state, svc["name"], svc["runlevel"]] - ) + if exists(self.root + self.initdDir + "/" + svc["name"]): + if exists(self.root + self.runlevelsDir + "/" + svc["runlevel"]): + target_env_call( + ["rc-update", state, svc["name"], svc["runlevel"]] + ) def run(self): """Run the controller diff --git a/src/modules/openrccfg/openrccfg.conf b/src/modules/openrccfg/openrccfg.conf index e10da15ce..efd56bc14 100644 --- a/src/modules/openrccfg/openrccfg.conf +++ b/src/modules/openrccfg/openrccfg.conf @@ -1,8 +1,39 @@ +# operccfg +# openrc services module to set service runlevels via rc-update in the chroot +# +# format of the conf +### +# services: +# add: +# - name: foo1 +# runlevel: default +# - name: foo2 +# runlevel: nonetwork +# del: +# - name: foo3 +# runlevel: default +# +# initdDir: /etc/init.d +# +# runlevelsDir: /etc/runlevels +#### +# add: list of services and their runlevels to add +# del: list of services and their runlevels to delete +# name: the service name +# runlevel: can hold any runlevel present on the target system +# initdDir: holds the openrc service directory location +# runlevelsDir: holds the runlevels directory location +# +# handle del with care and only use it if absolutely necessary +# if a service is listed in the conf but is not present/detected on the target system, +# or a runlevel does not exist, it will be ignored and skipped +# --- services: add: - name: "NetworkManager" runlevel: "default" -# del: -# - name: "hwclock" -# runlevel: "boot" + +initdDir: /etc/init.d + +runlevelsDir: /etc/runlevels From 92fa63492e596c5a1153df99002dc64fddbf04d5 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 25 Jun 2018 09:55:51 -0400 Subject: [PATCH 322/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_ar.ts | 221 ++++++----- lang/calamares_ast.ts | 221 ++++++----- lang/calamares_be.ts | 219 ++++++----- lang/calamares_bg.ts | 221 ++++++----- lang/calamares_ca.ts | 221 ++++++----- lang/calamares_cs_CZ.ts | 221 ++++++----- lang/calamares_da.ts | 219 ++++++----- lang/calamares_de.ts | 229 ++++++------ lang/calamares_el.ts | 221 ++++++----- lang/calamares_en.ts | 16 +- lang/calamares_en_GB.ts | 740 +++++++++++++++++++------------------ lang/calamares_eo.ts | 219 ++++++----- lang/calamares_es.ts | 221 ++++++----- lang/calamares_es_MX.ts | 221 ++++++----- lang/calamares_es_PR.ts | 219 ++++++----- lang/calamares_et.ts | 221 ++++++----- lang/calamares_eu.ts | 221 ++++++----- lang/calamares_fa.ts | 219 ++++++----- lang/calamares_fi_FI.ts | 221 ++++++----- lang/calamares_fr.ts | 221 ++++++----- lang/calamares_fr_CH.ts | 219 ++++++----- lang/calamares_gl.ts | 219 ++++++----- lang/calamares_gu.ts | 219 ++++++----- lang/calamares_he.ts | 221 ++++++----- lang/calamares_hi.ts | 219 ++++++----- lang/calamares_hr.ts | 221 ++++++----- lang/calamares_hu.ts | 221 ++++++----- lang/calamares_id.ts | 221 ++++++----- lang/calamares_is.ts | 221 ++++++----- lang/calamares_it_IT.ts | 221 ++++++----- lang/calamares_ja.ts | 221 ++++++----- lang/calamares_kk.ts | 219 ++++++----- lang/calamares_kn.ts | 219 ++++++----- lang/calamares_ko.ts | 221 ++++++----- lang/calamares_lo.ts | 219 ++++++----- lang/calamares_lt.ts | 221 ++++++----- lang/calamares_mr.ts | 219 ++++++----- lang/calamares_nb.ts | 219 ++++++----- lang/calamares_nl.ts | 221 ++++++----- lang/calamares_pl.ts | 221 ++++++----- lang/calamares_pt_BR.ts | 221 ++++++----- lang/calamares_pt_PT.ts | 221 ++++++----- lang/calamares_ro.ts | 221 ++++++----- lang/calamares_ru.ts | 221 ++++++----- lang/calamares_sk.ts | 249 +++++++------ lang/calamares_sl.ts | 221 ++++++----- lang/calamares_sq.ts | 219 ++++++----- lang/calamares_sr.ts | 219 ++++++----- lang/calamares_sr@latin.ts | 219 ++++++----- lang/calamares_sv.ts | 221 ++++++----- lang/calamares_th.ts | 221 ++++++----- lang/calamares_tr_TR.ts | 221 ++++++----- lang/calamares_uk.ts | 221 ++++++----- lang/calamares_ur.ts | 219 ++++++----- lang/calamares_uz.ts | 219 ++++++----- lang/calamares_zh_CN.ts | 221 ++++++----- lang/calamares_zh_TW.ts | 221 ++++++----- 57 files changed, 7099 insertions(+), 5810 deletions(-) diff --git a/lang/calamares_ar.ts b/lang/calamares_ar.ts index af11201ae..8fccafc0e 100644 --- a/lang/calamares_ar.ts +++ b/lang/calamares_ar.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install ثبت @@ -105,7 +113,7 @@ Calamares::JobThread - + Done انتهى @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 شغّل الأمر 1% 2% - + Running command %1 %2 يشغّل الأمر 1% 2% @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. يشغّل عمليّة %1. - + Bad working directory path مسار سيء لمجلد العمل - + Working directory %1 for python job %2 is not readable. لا يمكن القراءة من مجلد العمل %1 الخاص بعملية بايثون %2. - + Bad main script file ملفّ السّكربت الرّئيس سيّء. - + Main script file %1 for python job %2 is not readable. ملفّ السّكربت الرّئيس %1 لمهمّة بايثون %2 لا يمكن قراءته. - + Boost.Python error in job "%1". خطأ Boost.Python في العمل "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &رجوع - - + + &Next &التالي - - + + &Cancel &إلغاء - - + + Cancel installation without changing the system. الغاء الـ تثبيت من دون احداث تغيير في النظام - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install &ثبت - + Cancel installation? إلغاء التثبيت؟ - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. أتريد إلغاء عمليّة التّثبيت الحاليّة؟ سيخرج المثبّت وتضيع كلّ التّغييرات. - + &Yes &نعم - + &No &لا - + &Close &اغلاق - + Continue with setup? الإستمرار في التثبيت؟ - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> مثبّت %1 على وشك بإجراء تعديلات على قرصك لتثبيت %2.<br/><strong>لن تستطيع التّراجع عن هذا.</strong> - + &Install now &ثبت الأن - + Go &back &إرجع - + &Done - + The installation is complete. Close the installer. اكتمل التثبيت , اغلق المثبِت - + Error خطأ - + Installation Failed فشل التثبيت @@ -436,17 +459,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -554,27 +577,27 @@ The installer will quit and all changes will be lost. الح&جم: - + En&crypt تشفير - + Logical منطقيّ - + Primary أساسيّ - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -776,7 +799,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -834,7 +857,7 @@ The installer will quit and all changes will be lost. الشّارات: - + Mountpoint already in use. Please select another one. @@ -1003,12 +1026,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> اضبط طراز لوحة المفتاتيح ليكون %1.<br/> - + Set keyboard layout to %1/%2. اضبط تخطيط لوحة المفاتيح إلى %1/%2. @@ -1052,64 +1075,64 @@ The installer will quit and all changes will be lost. نموذج - + I accept the terms and conditions above. أقبل الشّروط والأحكام أعلاه. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>اتّفاقيّة التّرخيص</h1>عمليّة الإعداد هذه ستثبّت برمجيّات مملوكة تخضع لشروط ترخيص. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. فضلًا راجع اتّفاقيّات رخص المستخدم النّهائيّ (EULA) أعلاه.<br/>إن لم تقبل الشّروط، فلن تتابع عمليّة الإعداد. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>اتّفاقيّة التّرخيص</h1>يمكن لعمليّة الإعداد تثبيت برمجيّات مملوكة تخضع لشروط ترخيص وذلك لتوفير مزايا إضافيّة وتحسين تجربة المستخدم. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. فضلًا راجع اتّفاقيّات رخص المستخدم النّهائيّ (EULA) أعلاه.<br/>إن لم تقبل الشّروط، فلن تُثبّت البرمجيّات المملوكة وستُستخدم تلك مفتوحة المصدر بدلها. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>مشغّل %1</strong><br/>من%2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>مشغّل %1 للرّسوميّات</strong><br/><font color="Grey">من %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>ملحقة %1 للمتصّفح</strong><br/><font color="Grey">من %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>مرماز %1</strong><br/><font color="Grey">من %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>حزمة %1</strong><br/><font color="Grey">من %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">من %2</font> - + <a href="%1">view license agreement</a> <a href="%1">اعرض اتّفاقيّة التّرخيص</a> @@ -1583,34 +1606,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space المساحة الحرّة - - + + New partition قسم جديد - + Name الاسم - + File System نظام الملفّات - + Mount Point نقطة الضّمّ - + Size الحجم @@ -1639,8 +1662,8 @@ The installer will quit and all changes will be lost. - &Create - أ&نشئ + Cre&ate + @@ -1658,17 +1681,17 @@ The installer will quit and all changes will be lost. ثبّت م&حمّل الإقلاع على: - + Are you sure you want to create a new partition table on %1? أمتأكّد من إنشاء جدول تقسيم جديد على %1؟ - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... جاري جمع معلومات عن النظام... - + Partitions الأقسام - + Install %1 <strong>alongside</strong> another operating system. ثبّت %1 <strong>جنبًا إلى جنب</strong> مع نظام تشغيل آخر. - + <strong>Erase</strong> disk and install %1. <strong>امسح</strong> القرص وثبّت %1. - + <strong>Replace</strong> a partition with %1. <strong>استبدل</strong> قسمًا ب‍ %1. - + <strong>Manual</strong> partitioning. تقسيم <strong>يدويّ</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>امسح</strong> القرص <strong>%2</strong> (%3) وثبّت %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>استبدل</strong> قسمًا على القرص <strong>%2</strong> (%3) ب‍ %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: الحاليّ: - + After: بعد: - + No EFI system partition configured لم يُضبط أيّ قسم نظام EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set راية قسم نظام EFI غير مضبوطة - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1909,22 +1932,22 @@ Output: الافتراضي - + unknown مجهول - + extended ممتدّ - + unformatted غير مهيّأ - + swap @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 اضبط اسم المضيف %1 - + Set hostname <strong>%1</strong>. اضبط اسم المضيف <strong>%1</strong> . - + Setting hostname %1. يضبط اسم المضيف 1%. - - + + Internal Error خطأ داخلي - - + + Cannot write hostname to target system تعذّرت كتابة اسم المضيف إلى النّظام الهدف @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome مرحبا بك diff --git a/lang/calamares_ast.ts b/lang/calamares_ast.ts index 885bcf6c1..2649671f5 100644 --- a/lang/calamares_ast.ts +++ b/lang/calamares_ast.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Instalación @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Fecho @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Executar comandu %1 %2 - + Running command %1 %2 Executando'l comandu %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Executando operación %1. - + Bad working directory path Camín incorreutu del direutoriu de trabayu - + Working directory %1 for python job %2 is not readable. El direutoriu de trabayu %1 pal trabayu python %2 nun ye lleible. - + Bad main script file Ficheru incorreutu del script principal - + Main script file %1 for python job %2 is not readable. El ficheru de script principal %1 pal trabayu python %2 nun ye lleible. - + Boost.Python error in job "%1". Fallu Boost.Python nel trabayu «%1». @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Atrás - - + + &Next &Siguiente - - + + &Cancel &Encaboxar - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? ¿Encaboxar instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. ¿De xuru que quies encaboxar el procesu actual d'instalación? L'instalador colará y perderánse toles camudancies. - + &Yes &Sí - + &No &Non - + &Close &Zarrar - + Continue with setup? ¿Siguir cola configuración? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> L'instalador %1 ta a piques de facer camudancies al to discu pa instalar %2.<br/><strong>Nun sedrás capaz a desfacer estes camudancies.</strong> - + &Install now &Instalar agora - + Go &back &Dir p'atrás - + &Done &Fecho - + The installation is complete. Close the installer. Completóse la operación. Zarra l'instalador. - + Error Fallu - + Installation Failed Instalación fallida @@ -436,17 +459,17 @@ L'instalador colará y perderánse toles camudancies. ClearMountsJob - + Clear mounts for partitioning operations on %1 Llimpiar montaxes pa les opciones de particionáu en %1 - + Clearing mounts for partitioning operations on %1. Llimpiando los montaxes pa les opciones de particionáu en %1. - + Cleared all mounts for %1 Llimpiáronse tolos montaxes pa %1 @@ -554,27 +577,27 @@ L'instalador colará y perderánse toles camudancies. Tama&ñu: - + En&crypt &Cifrar - + Logical Llóxica - + Primary Primaria - + GPT GPT - + Mountpoint already in use. Please select another one. Puntu de montaxe yá n'usu. Esbilla otru, por favor. @@ -776,7 +799,7 @@ L'instalador colará y perderánse toles camudancies. DummyCppJob - + Dummy C++ Job Trabayu C++ maniquín @@ -834,7 +857,7 @@ L'instalador colará y perderánse toles camudancies. Banderes: - + Mountpoint already in use. Please select another one. Puntu de montaxe yá n'usu. Esbilla otru, por favor. @@ -1003,12 +1026,12 @@ L'instalador colará y perderánse toles camudancies. KeyboardPage - + Set keyboard model to %1.<br/> Afitóse'l modelu de tecláu a %1.<br/> - + Set keyboard layout to %1/%2. Afitóse la distribución de tecláu a %1/%2. @@ -1052,64 +1075,64 @@ L'instalador colará y perderánse toles camudancies. Formulariu - + I accept the terms and conditions above. Aceuto los términos y condiciones d'enriba. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Alcuerdu de llicencia</h1>Esti procedimientu d'instalación instalará software propietariu que ta suxetu a términos de llicenciamientu. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Revisa los Alcuerdos de Llicencia del Usuariu Final (EULAs) d'enriba, por favor.<br/>Si nun tas acordies colos términos, el procedimientu nun pue siguir. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Alcuerdu de llicencia</h1>Esti procedimientu d'instalación pue instalar software propietariu que ta suxetu a términos de llicenciamientu p'apurrir carauterístiques adicionales y ameyorar la esperiencia d'usuariu. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Revisa los Alcuerdos de Llicencia del Usuariu Final (EULAs) d'enriba, por favor.<br/>Si nun tas acordies colos términos, nun s'instalará'l software propietariu y usaránse, nel so llugar, alternatives de códigu abiertu. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>Controlador %1 driver</strong><br/>por %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>Controlador gráficu %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>Complementu %1 del restolador</strong><br/><font color="Grey">por %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>Códec %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>Paquete %1</strong><br/><font color="Grey">per %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">por %2</font> - + <a href="%1">view license agreement</a> <a href="%1">ver alcuerdu de llicencia</a> @@ -1583,34 +1606,34 @@ L'instalador colará y perderánse toles camudancies. PartitionModel - - + + Free Space Espaciu llibre - - + + New partition Partición nueva - + Name Nome - + File System Sistema de ficheros - + Mount Point Puntu montaxe - + Size Tamañu @@ -1639,8 +1662,8 @@ L'instalador colará y perderánse toles camudancies. - &Create - &Crear + Cre&ate + @@ -1658,17 +1681,17 @@ L'instalador colará y perderánse toles camudancies. &Instalar xestor d'arranque en: - + Are you sure you want to create a new partition table on %1? ¿De xuru que quies crear una tabla particiones nueva en %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ L'instalador colará y perderánse toles camudancies. PartitionViewStep - + Gathering system information... Axuntando información del sistema... - + Partitions Particiones - + Install %1 <strong>alongside</strong> another operating system. Instalaráse %1 <strong>cabo</strong> otru sistema operativu. - + <strong>Erase</strong> disk and install %1. <strong>Desaniciaráse</strong>'l discu ya instalaráse %1. - + <strong>Replace</strong> a partition with %1. <strong>Trocaráse</strong> una partición con %1. - + <strong>Manual</strong> partitioning. Particionáu <strong>Manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalaráse %1 <strong>cabo</strong> otru sistema operativu nel discu <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Desaniciaráse</strong>'l discu <strong>%2</strong> (%3) ya instalaráse %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Trocaráse</strong> una partición nel discu <strong>%2</strong> (%3) con %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionáu <strong>manual</strong> nel discu <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Discu <strong>%1</strong> (%2) - + Current: Anguaño: - + After: Dempués: - + No EFI system partition configured Nun hai dengún sistema EFI configuráu - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set Nun s'afitó la bandera del sistema EFI - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Precísase una partición del sistema EFI p'aniciar %1.<br/><br/>Configuróse una partición col puntu montaxe <strong>%2</strong> pero nun s'afitó la so bandera <strong>esp</strong>.<br/>P'afitar la bandera, volvi y edita la partición.<br/><br/>Pues siguir ensin afitar la bandera pero'l to sistema pue fallar al aniciase. - + Boot partition not encrypted /boot non cifráu - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1909,22 +1932,22 @@ Output: Por defeutu - + unknown - + extended - + unformatted ensin formatiar - + swap intercambéu @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 Afitar nome d'agospiu %1 - + Set hostname <strong>%1</strong>. Afitaráse'l nome d'agospiu a <strong>%1</strong>. - + Setting hostname %1. Afitando'l nome d'agospiu %1. - - + + Internal Error Fallu internu - - + + Cannot write hostname to target system Nun pue escribise'l nome d'agospiu al sistema destín @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome Bienllegáu diff --git a/lang/calamares_be.ts b/lang/calamares_be.ts index 7b5bb9a30..3ab271eb6 100644 --- a/lang/calamares_be.ts +++ b/lang/calamares_be.ts @@ -45,6 +45,14 @@ + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install @@ -105,7 +113,7 @@ Calamares::JobThread - + Done @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -159,96 +167,111 @@ Calamares::ViewManager - + &Back - - + + &Next - - + + &Cancel - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No - + &Close - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -435,17 +458,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -553,27 +576,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -775,7 +798,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -833,7 +856,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1002,12 +1025,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1051,64 +1074,64 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1582,34 +1605,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1638,7 +1661,7 @@ The installer will quit and all changes will be lost. - &Create + Cre&ate @@ -1657,17 +1680,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1675,97 +1698,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1908,22 +1931,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2105,29 +2128,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2579,7 +2602,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_bg.ts b/lang/calamares_bg.ts index 6700177fe..f9dc45c36 100644 --- a/lang/calamares_bg.ts +++ b/lang/calamares_bg.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Инсталирай @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Готово @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Изпълни команда %1 %2 - + Running command %1 %2 Изпълняване на команда %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Изпълнение на %1 операция. - + Bad working directory path Невалиден път на работната директория - + Working directory %1 for python job %2 is not readable. Работна директория %1 за python задача %2 не се чете. - + Bad main script file Невалиден файл на главен скрипт - + Main script file %1 for python job %2 is not readable. Файлът на главен скрипт %1 за python задача %2 не се чете. - + Boost.Python error in job "%1". Boost.Python грешка в задача "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Назад - - + + &Next &Напред - - + + &Cancel &Отказ - - + + Cancel installation without changing the system. Отказ от инсталацията без промяна на системата. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Отмяна на инсталацията? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Наистина ли искате да отмените текущият процес на инсталиране? Инсталатора ще прекъсне и всичките промени ще бъдат загубени. - + &Yes &Да - + &No &Не - + &Close &Затвори - + Continue with setup? Продължаване? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Инсталатора на %1 ще направи промени по вашия диск за да инсталира %2. <br><strong>Промените ще бъдат окончателни.</strong> - + &Install now &Инсталирай сега - + Go &back В&ръщане - + &Done &Готово - + The installation is complete. Close the installer. Инсталацията е завършена. Затворете инсталаторa. - + Error Грешка - + Installation Failed Неуспешна инсталация @@ -437,17 +460,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Разчисти монтиранията за операциите на подялбата на %1 - + Clearing mounts for partitioning operations on %1. Разчистване на монтиранията за операциите на подялбата на %1 - + Cleared all mounts for %1 Разчистени всички монтирания за %1 @@ -555,27 +578,27 @@ The installer will quit and all changes will be lost. Раз&мер: - + En&crypt En%crypt - + Logical Логическа - + Primary Главна - + GPT GPT - + Mountpoint already in use. Please select another one. Точката за монтиране вече се използва. Моля изберете друга. @@ -777,7 +800,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job Фиктивна С++ задача @@ -835,7 +858,7 @@ The installer will quit and all changes will be lost. Флагове: - + Mountpoint already in use. Please select another one. Точката за монтиране вече се използва. Моля изберете друга. @@ -1004,12 +1027,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Постави модел на клавиатурата на %1.<br/> - + Set keyboard layout to %1/%2. Постави оформлението на клавиатурата на %1/%2. @@ -1053,64 +1076,64 @@ The installer will quit and all changes will be lost. Форма - + I accept the terms and conditions above. Приемам лицензионните условия. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Лицензионно Споразумение</h1>Тази процедура ще инсталира несвободен софтуер, който е обект на лицензионни условия. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Моля погледнете Лицензионните Условия за Крайния Потребител (ЛУКП).<br/>Ако не сте съгласни с условията, процедурата не може да продължи. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Лицензионно Споразумение</h1>Тази процедура може да инсталира несвободен софтуер, който е обект на лицензионни условия, за да предостави допълнителни функции и да подобри работата на потребителя. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Моля погледнете Лицензионните Условия за Крайния Потребител (ЛУКП).<br/>Ако не сте съгласни с условията, несвободния софтуер няма да бъде инсталиран и ще бъдат използвани безплатни алтернативи. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 драйвър</strong><br/>от %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 графичен драйвър</strong><br/><font color="Grey">от %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 плъгин за браузър</strong><br/><font color="Grey">от %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 кодек</strong><br/><font color="Grey">от %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 пакет</strong><br/><font color="Grey">от %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">от %2</font> - + <a href="%1">view license agreement</a> <a href="%1">виж лицензионното споразумение</a> @@ -1584,34 +1607,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space Свободно пространство - - + + New partition Нов дял - + Name Име - + File System Файлова система - + Mount Point Точка на монтиране - + Size Размер @@ -1640,8 +1663,8 @@ The installer will quit and all changes will be lost. - &Create - &Създай + Cre&ate + @@ -1659,17 +1682,17 @@ The installer will quit and all changes will be lost. Инсталирай &устройството за начално зареждане върху: - + Are you sure you want to create a new partition table on %1? Сигурни ли сте че искате да създадете нова таблица на дяловете върху %1? - + Can not create new partition - + 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. @@ -1677,97 +1700,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Събиране на системна информация... - + Partitions Дялове - + Install %1 <strong>alongside</strong> another operating system. Инсталирай %1 <strong>заедно</strong> с друга операционна система. - + <strong>Erase</strong> disk and install %1. <strong>Изтрий</strong> диска и инсталирай %1. - + <strong>Replace</strong> a partition with %1. <strong>Замени</strong> дял с %1. - + <strong>Manual</strong> partitioning. <strong>Ръчно</strong> поделяне. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Инсталирай %1 <strong>заедно</strong> с друга операционна система на диск <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Изтрий</strong> диск <strong>%2</strong> (%3) и инсталирай %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Замени</strong> дял на диск <strong>%2</strong> (%3) с %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ръчно</strong> поделяне на диск <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Диск <strong>%1</strong> (%2) - + Current: Сегашен: - + After: След: - + No EFI system partition configured Няма конфигуриран EFI системен дял - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. EFI системен дял е нужен за стартиране на %1.<br/><br/>За настройка на EFI системен дял се върнете назад и изберете или създайте FAT32 файлова система с включен <strong>esp</strong> флаг и точка на монтиране <strong>%2</strong>.<br/><br/>Може да продължите без EFI системен дял, но системата може да не успее да стартира. - + EFI system partition flag not set Не е зададен флаг на EFI системен дял - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. EFI системен дял е нужен за стартиране на %1.<br/><br/>Дялът беше конфигуриран с точка на монтиране <strong>%2</strong>, но неговия <strong>esp</strong> флаг не е включен.<br/>За да включите флага се върнете назад и редактирайте дяла.<br/><br/>Може да продължите без флага, но системата може да не успее да стартира. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1910,22 +1933,22 @@ Output: По подразбиране - + unknown неизвестна - + extended разширена - + unformatted неформатирана - + swap swap @@ -2107,29 +2130,29 @@ Output: SetHostNameJob - + Set hostname %1 Поставете име на хоста %1 - + Set hostname <strong>%1</strong>. Поставете име на хост <strong>%1</strong>. - + Setting hostname %1. Задаване името на хоста %1 - - + + Internal Error Вътрешна грешка - - + + Cannot write hostname to target system Не може да се запише името на хоста на целевата система @@ -2581,7 +2604,7 @@ Output: WelcomeViewStep - + Welcome Добре дошли diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index 1153ce587..a43d01432 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + Pàgina en blanc + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Instal·la @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Fet @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Executa l'ordre %1 %2 - + Running command %1 %2 Executant l'ordre %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Executant l'operació %1. - + Bad working directory path Camí incorrecte al directori de treball - + Working directory %1 for python job %2 is not readable. El directori de treball %1 per a la tasca python %2 no és llegible. - + Bad main script file Fitxer erroni d'script principal - + Main script file %1 for python job %2 is not readable. El fitxer de script principal %1 per a la tasca de python %2 no és llegible. - + Boost.Python error in job "%1". Error de Boost.Python a la tasca "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Enrere - - + + &Next &Següent - - + + &Cancel &Cancel·la - - + + Cancel installation without changing the system. Cancel·leu la instal·lació sense canviar el sistema. - + + Calamares Initialization Failed + Ha fallat la inicialització de Calamares + + + + %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. + No es pot instal·lar %1. Calamares no ha pogut carregar tots els mòduls configurats. Aquest és un problema amb la forma com Calamares és utilitzat per la distribució. + + + + <br/>The following modules could not be loaded: + <br/>No s'han pogut carregar els mòduls següents: + + + &Install &Instal·la - + Cancel installation? Cancel·lar la instal·lació? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Voleu cancel·lar el procés d'instal·lació actual? L'instal·lador es tancarà i tots els canvis es perdran. - + &Yes &Sí - + &No &No - + &Close Tan&ca - + Continue with setup? Voleu continuar la configuració? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> L'instal·lador de %1 està a punt de fer canvis al disc per tal d'instal·lar-hi %2.<br/><strong>No podreu desfer aquests canvis.</strong> - + &Install now &Instal·la ara - + Go &back Vés &enrere - + &Done &Fet - + The installation is complete. Close the installer. La instal·lació s'ha acabat. Tanqueu l'instal·lador. - + Error Error - + Installation Failed La instal·lació ha fallat @@ -436,17 +459,17 @@ L'instal·lador es tancarà i tots els canvis es perdran. ClearMountsJob - + Clear mounts for partitioning operations on %1 Neteja els muntatges per les operacions de partició a %1 - + Clearing mounts for partitioning operations on %1. Netejant els muntatges per a les operacions del particionament de %1. - + Cleared all mounts for %1 S'han netejat tots els muntatges de %1 @@ -554,27 +577,27 @@ L'instal·lador es tancarà i tots els canvis es perdran. Mi&da: - + En&crypt &Xifra - + Logical Lògica - + Primary Primària - + GPT GPT - + Mountpoint already in use. Please select another one. El punt de muntatge ja està en ús. Si us plau, seleccioneu-ne un altre. @@ -776,7 +799,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. DummyCppJob - + Dummy C++ Job Tasca C++ fictícia @@ -834,7 +857,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Indicadors: - + Mountpoint already in use. Please select another one. El punt de muntatge ja està en ús. Si us plau, seleccioneu-ne un altre. @@ -1003,12 +1026,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. KeyboardPage - + Set keyboard model to %1.<br/> Assigna el model del teclat a %1.<br/> - + Set keyboard layout to %1/%2. Assigna la distribució del teclat a %1/%2. @@ -1052,64 +1075,64 @@ L'instal·lador es tancarà i tots els canvis es perdran. Formulari - + I accept the terms and conditions above. Accepto els termes i les condicions anteriors. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Acord de llicència</h1> Aquest procediment de configuració instal·larà programari de propietat subjecte a termes de llicència. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Si us plau, reviseu l'acord de llicència End User License Agreements (EULAs) anterior.<br/>Si no esteu d'acord en els termes, el procediment de configuració no pot continuar. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Acord de llicència</h1> Aquest procediment de configuració instal·larà programari de propietat subjecte a termes de llicència per tal de proporcionar característiques addicionals i millorar l'experiència de l'usuari. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Si us plau, reviseu l'acord de llicència End User License Agreements (EULAs) anterior.<br/>Si no esteu d'acord en els termes, no s'instal·larà el programari de propietat i es faran servir les alternatives de codi lliure. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 controlador</strong><br/>de %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 controlador gràfic</strong><br/><font color="Grey">de %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 connector del navegador</strong><br/><font color="Grey">de %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 còdec</strong><br/><font color="Grey">de %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 paquet</strong><br/><font color="Grey">de %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">de %2</font> - + <a href="%1">view license agreement</a> <a href="%1">mostra l'acord de llicència</a> @@ -1583,34 +1606,34 @@ L'instal·lador es tancarà i tots els canvis es perdran. PartitionModel - - + + Free Space Espai lliure - - + + New partition Partició nova - + Name Nom - + File System Sistema de fitxers - + Mount Point Punt de muntatge - + Size Mida @@ -1639,8 +1662,8 @@ L'instal·lador es tancarà i tots els canvis es perdran. - &Create - &Crea + Cre&ate + Cre&a @@ -1658,17 +1681,17 @@ L'instal·lador es tancarà i tots els canvis es perdran. &Instal·la el gestor d'arrencada a: - + Are you sure you want to create a new partition table on %1? Esteu segurs que voleu crear una nova taula de particions a %1? - + Can not create new partition No es pot crear la partició nova - + 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. La taula de particions de %1 ja té %2 particions primàries i no se n'hi poden afegir més. Si us plau, suprimiu una partició primària i afegiu-hi una partició ampliada. @@ -1676,97 +1699,97 @@ L'instal·lador es tancarà i tots els canvis es perdran. PartitionViewStep - + Gathering system information... Recopilant informació del sistema... - + Partitions Particions - + Install %1 <strong>alongside</strong> another operating system. Instal·la %1 <strong>al costat</strong> d'un altre sistema operatiu. - + <strong>Erase</strong> disk and install %1. <strong>Esborra</strong> el disc i instal·la-hi %1. - + <strong>Replace</strong> a partition with %1. <strong>Reemplaça</strong> una partició amb %1. - + <strong>Manual</strong> partitioning. Particions <strong>manuals</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instal·la %1 <strong>al costat</strong> d'un altre sistema operatiu al disc <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Esborra</strong> el disc <strong>%2</strong> (%3) i instal·la-hi %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Reemplaça</strong> una partició del disc <strong>%2</strong> (%3) amb %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particions <strong>manuals</strong> del disc <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disc <strong>%1</strong> (%2) - + Current: Actual: - + After: Després: - + No EFI system partition configured No hi ha cap partició EFI de sistema configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Cal una partició EFI de sistema per iniciar %1. <br/><br/>Per configurar una partició EFI de sistema, torneu enrere i seleccioneu o creeu un sistema de fitxers FAT32 amb la bandera <strong>esp</strong> habilitada i el punt de muntatge <strong>%2</strong>. <br/><br/>Podeu continuar sense la creació d'una partició EFI de sistema, però el sistema podria no iniciar-se. - + EFI system partition flag not set No s'ha establert la bandera de la partició EFI del sistema - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Cal una partició EFI de sistema per iniciar %1. <br/><br/> Ja s'ha configurat una partició amb el punt de muntatge <strong>%2</strong> però no se n'ha establert la bandera <strong>esp</strong>. Per establir-la-hi, torneu enrere i editeu la partició. <br/><br/>Podeu continuar sense establir la bandera, però el sistema podria no iniciar-se. - + Boot partition not encrypted Partició d'arrencada sense xifrar - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. S'ha establert una partició d'arrencada separada conjuntament amb una partició d'arrel encriptada, però la partició d'arrencada no està encriptada.<br/><br/>Hi ha aspectes de seguretat amb aquest tipus de configuració, perquè hi ha fitxers del sistema importants en una partició no encriptada.<br/>Podeu continuar, si així ho desitgeu, però el desbloqueig del sistema de fitxers succeirà després, durant l'inici del sistema.<br/>Per encriptar la partició d'arrencada, torneu enrere i torneu-la a crear seleccionant <strong>Encripta</strong> a la finestra de creació de la partició. @@ -1912,22 +1935,22 @@ Sortida: Per defecte - + unknown desconeguda - + extended ampliada - + unformatted sense format - + swap Intercanvi @@ -2109,29 +2132,29 @@ Sortida: SetHostNameJob - + Set hostname %1 Estableix el nom d'amfitrió %1 - + Set hostname <strong>%1</strong>. Estableix el nom d'amfitrió <strong>%1</strong>. - + Setting hostname %1. Establint el nom d'amfitrió %1. - - + + Internal Error Error intern - - + + Cannot write hostname to target system No es pot escriure el nom d'amfitrió al sistema de destinació @@ -2583,7 +2606,7 @@ Sortida: WelcomeViewStep - + Welcome Benvingut diff --git a/lang/calamares_cs_CZ.ts b/lang/calamares_cs_CZ.ts index d105703c3..5e149cee6 100644 --- a/lang/calamares_cs_CZ.ts +++ b/lang/calamares_cs_CZ.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + Prázdná stránka + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Instalovat @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Hotovo @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Spustit příkaz %1 %2 - + Running command %1 %2 Spouštění příkazu %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Spouštění %1 operace. - + Bad working directory path Chybný popis umístění pracovní složky - + Working directory %1 for python job %2 is not readable. Pracovní složku %1 pro Python skript %2 se nedaří otevřít pro čtení. - + Bad main script file Nesprávný soubor s hlavním skriptem - + Main script file %1 for python job %2 is not readable. Hlavní soubor %1 pro Python úlohu %2 se nedaří otevřít pro čtení.. - + Boost.Python error in job "%1". Boost.Python chyba ve skriptu „%1“. @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Zpět - - + + &Next &Další - - + + &Cancel &Storno - - + + Cancel installation without changing the system. Zrušení instalace bez provedení změn systému. - + + Calamares Initialization Failed + Inicializace Calamares se nezdařila + + + + %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. + %1 nemůže být nainstalováno. Calamares nebylo schopné načíst všechny nastavené moduly. Toto je problém způsobu použití Calamares ve vámi používané distribuci. + + + + <br/>The following modules could not be loaded: + <br/> Následující moduly se nepodařilo načíst: + + + &Install Na&instalovat - + Cancel installation? Přerušit instalaci? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Opravdu chcete přerušit instalaci? Instalační program bude ukončen a všechny změny ztraceny. - + &Yes &Ano - + &No &Ne - + &Close &Zavřít - + Continue with setup? Pokračovat s instalací? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Instalátor %1 provede změny na datovém úložišti, aby bylo nainstalováno %2.<br/><strong>Změny nebude možné vrátit zpět.</strong> - + &Install now &Spustit instalaci - + Go &back Jít &zpět - + &Done &Hotovo - + The installation is complete. Close the installer. Instalace je dokončena. Ukončete instalátor. - + Error Chyba - + Installation Failed Instalace se nezdařila @@ -436,17 +459,17 @@ Instalační program bude ukončen a všechny změny ztraceny. ClearMountsJob - + Clear mounts for partitioning operations on %1 Odpojit souborové systémy před zahájením dělení %1 na oddíly - + Clearing mounts for partitioning operations on %1. Odpojují se souborové systémy před zahájením dělení %1 na oddíly - + Cleared all mounts for %1 Všechny souborové systémy na %1 odpojeny @@ -554,27 +577,27 @@ Instalační program bude ukončen a všechny změny ztraceny. &Velikost: - + En&crypt Š&ifrovat - + Logical Logický - + Primary Primární - + GPT GPT - + Mountpoint already in use. Please select another one. Tento přípojný bod už je používán – vyberte jiný. @@ -776,7 +799,7 @@ Instalační program bude ukončen a všechny změny ztraceny. DummyCppJob - + Dummy C++ Job Slepá úloha C++ @@ -834,7 +857,7 @@ Instalační program bude ukončen a všechny změny ztraceny. Příznaky: - + Mountpoint already in use. Please select another one. Tento přípojný bod je už používán – vyberte jiný. @@ -1003,12 +1026,12 @@ Instalační program bude ukončen a všechny změny ztraceny. KeyboardPage - + Set keyboard model to %1.<br/> Nastavit model klávesnice na %1.<br/> - + Set keyboard layout to %1/%2. Nastavit rozložení klávesnice na %1/%2. @@ -1052,64 +1075,64 @@ Instalační program bude ukončen a všechny změny ztraceny. Formulář - + I accept the terms and conditions above. Souhlasím s výše uvedenými podmínkami. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licenční ujednání</h1>Tato instalace nainstaluje také proprietární software, který podléhá licenčním podmínkám. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Projděte si výše uvedené „licenční smlouvy s koncovým uživatelem“ (EULA).<br/> Pokud s podmínkami v nich nesouhlasíte, ukončete instalační proces. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licenční ujednání</h1>Tato instalace může nainstalovat také proprietární software, který podléhá licenčním podmínkám, ale který poskytuje některé další funkce a zlepšuje uživatelskou přivětivost. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Projděte si výše uvedené „licenční smlouvy s koncovým uživatelem“ (EULA).<br/> Pokud s podmínkami v nich nesouhlasíte, místo proprietárního software budou použity open source alternativy. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 ovladač</strong><br/>od %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 ovladač grafiky</strong><br/><font color="Grey">od %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 doplněk prohlížeče</strong><br/><font color="Grey">od %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 kodek</strong><br/><font color="Grey">od %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 balíček</strong><br/><font color="Grey">od %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">od %2</font> - + <a href="%1">view license agreement</a> <a href="%1">zobrazit licenční ujednání</a> @@ -1583,34 +1606,34 @@ Instalační program bude ukončen a všechny změny ztraceny. PartitionModel - - + + Free Space Volné místo - - + + New partition Nový oddíl - + Name Název - + File System Souborový systém - + Mount Point Přípojný bod - + Size Velikost @@ -1639,8 +1662,8 @@ Instalační program bude ukončen a všechny změny ztraceny. - &Create - &Vytvořit + Cre&ate + Vytv&ořit @@ -1658,17 +1681,17 @@ Instalační program bude ukončen a všechny změny ztraceny. Nainstalovat &zavaděč na: - + Are you sure you want to create a new partition table on %1? Opravdu chcete na %1 vytvořit novou tabulku oddílů? - + Can not create new partition Nevytvářet nový oddíl - + 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. Tabulka oddílů na %1 už obsahuje %2 hlavních oddílů a proto už není možné přidat další. Odeberte jeden z hlavních oddílů a namísto něj vytvořte rozšířený oddíl. @@ -1676,97 +1699,97 @@ Instalační program bude ukončen a všechny změny ztraceny. PartitionViewStep - + Gathering system information... Shromažďování informací o systému… - + Partitions Oddíly - + Install %1 <strong>alongside</strong> another operating system. Nainstalovat %1 <strong>vedle</strong> dalšího operačního systému. - + <strong>Erase</strong> disk and install %1. <strong>Smazat</strong> obsah jednotky a nainstalovat %1. - + <strong>Replace</strong> a partition with %1. <strong>Nahradit</strong> oddíl %1. - + <strong>Manual</strong> partitioning. <strong>Ruční</strong> dělení jednotky. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Nainstalovat %1 <strong>vedle</strong> dalšího operačního systému na disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Vymazat</strong> obsah jednotky <strong>%2</strong> (%3) a nainstalovat %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Nahradit</strong> oddíl na jednotce <strong>%2</strong> (%3) %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ruční</strong> dělení jednotky <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Jednotka <strong>%1</strong> (%2) - + Current: Stávající: - + After: Potom: - + No EFI system partition configured Není nastavený žádný EFI systémový oddíl - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Pro spuštění %1 je potřeba EFI systémový oddíl.<br/><br/>Pro nastavení EFI systémového oddílu se vraťte zpět a vyberte nebo vytvořte oddíl typu FAT32 s příznakem <strong>esp</strong> a přípojným bodem <strong>%2</strong>.<br/><br/>Je možné pokračovat bez nastavení EFI systémového oddílu, ale systém nemusí jít spustit. - + EFI system partition flag not set Příznak EFI systémového oddílu není nastavený - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Pro spuštění %1 je potřeba EFI systémový oddíl.<br/><br/>Byl nastaven oddíl s přípojným bodem <strong>%2</strong> ale nemá nastaven příznak <strong>esp</strong>.<br/>Pro nastavení příznaku se vraťte zpět a upravte oddíl.<br/><br/>Je možné pokračovat bez nastavení příznaku, ale systém nemusí jít spustit. - + Boot partition not encrypted Zaváděcí oddíl není šifrován - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Kromě šifrovaného kořenového oddílu byl vytvořen i nešifrovaný oddíl zavaděče.<br/><br/>To by mohl být bezpečnostní problém, protože na nešifrovaném oddílu jsou důležité soubory systému.<br/>Pokud chcete, můžete pokračovat, ale odemykání souborového systému bude probíhat později při startu systému.<br/>Pro zašifrování oddílu zavaděče se vraťte a vytvořte ho vybráním možnosti <strong>Šifrovat</strong> v okně při vytváření oddílu. @@ -1912,22 +1935,22 @@ Výstup: Výchozí - + unknown neznámý - + extended rozšířený - + unformatted nenaformátovaný - + swap odkládací oddíl @@ -2109,29 +2132,29 @@ Výstup: SetHostNameJob - + Set hostname %1 Nastavit název počítače %1 - + Set hostname <strong>%1</strong>. Nastavit název počítače <strong>%1</strong>. - + Setting hostname %1. Nastavuje se název počítače %1. - - + + Internal Error Vnitřní chyba - - + + Cannot write hostname to target system Název počítače se nedaří zapsat do cílového systému @@ -2583,7 +2606,7 @@ Výstup: WelcomeViewStep - + Welcome Vítejte diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts index edbe2737f..7cfef1875 100644 --- a/lang/calamares_da.ts +++ b/lang/calamares_da.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + Tom side + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Installation @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Færdig @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Kør kommando %1 %2 - + Running command %1 %2 Kører kommando %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Kører %1-handling. - + Bad working directory path Ugyldig arbejdsmappesti - + Working directory %1 for python job %2 is not readable. Arbejdsmappen %1 til python-jobbet %2 er ikke læsbar. - + Bad main script file Ugyldig primær skriptfil - + Main script file %1 for python job %2 is not readable. Primær skriptfil %1 til python-jobbet %2 er ikke læsbar. - + Boost.Python error in job "%1". Boost.Python-fejl i job "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Tilbage - - + + &Next &Næste - - + + &Cancel &Annullér - - + + Cancel installation without changing the system. Annullér installation uden at ændre systemet. - + + Calamares Initialization Failed + Initiering af Calamares mislykkedes + + + + %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. + %1 kan ikke installeres. Calamares kunne ikke indlæse alle de konfigurerede moduler. Det er et problem med den måde Calamares bruges på af distributionen. + + + + <br/>The following modules could not be loaded: + <br/>Følgende moduler kunne ikke indlæses: + + + &Install &Installér - + Cancel installation? Annullér installationen? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Vil du virkelig annullere den igangværende installationsproces? Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. - + &Yes &Ja - + &No &Nej - + &Close &Luk - + Continue with setup? Fortsæt med opsætningen? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1-installationsprogrammet er ved at foretage ændringer til din disk for at installere %2.<br/><strong>Det vil ikke være muligt at fortryde ændringerne.</strong> - + &Install now &Installér nu - + Go &back Gå &tilbage - + &Done &Færdig - + The installation is complete. Close the installer. Installationen er fuldført. Luk installationsprogrammet. - + Error Fejl - + Installation Failed Installation mislykkedes @@ -436,17 +459,17 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. ClearMountsJob - + Clear mounts for partitioning operations on %1 Ryd monteringspunkter for partitioneringshandlinger på %1 - + Clearing mounts for partitioning operations on %1. Rydder monteringspunkter for partitioneringshandlinger på %1. - + Cleared all mounts for %1 Ryddede alle monteringspunkter til %1 @@ -554,27 +577,27 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.&Størrelse: - + En&crypt Kryp&tér - + Logical Logisk - + Primary Primær - + GPT GPT - + Mountpoint already in use. Please select another one. Monteringspunktet er allerede i brug. Vælg venligst et andet. @@ -776,7 +799,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. DummyCppJob - + Dummy C++ Job Dummy C++-job @@ -834,7 +857,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Flag: - + Mountpoint already in use. Please select another one. Monteringspunktet er allerede i brug. Vælg venligst et andet. @@ -1003,12 +1026,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. KeyboardPage - + Set keyboard model to %1.<br/> Sæt tastaturmodel til %1.<br/> - + Set keyboard layout to %1/%2. Sæt tastaturlayout til %1/%2. @@ -1052,64 +1075,64 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Formular - + I accept the terms and conditions above. Jeg accepterer de ovenstående vilkår og betingelser. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licensaftale</h1>Opsætningsproceduren installerer proprietær software der er underlagt licenseringsvilkår. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Gennemgå venligst slutbrugerlicensaftalerne (EULA'er) ovenfor.<br/>Hvis du ikke er enig med disse vilkår, kan opsætningsproceduren ikke fortsætte. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licensaftale</h1>Opsætningsproceduren kan installere proprietær software der er underlagt licenseringsvilkår, for at kunne tilbyde yderligere funktionaliteter og forbedre brugeroplevelsen. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Gennemgå venligst slutbrugerlicensaftalerne (EULA'er) ovenfor.<br/>Hvis du ikke er enig med disse vilkår vil der ikke blive installeret proprietær software, og open source-alternativer vil blive brugt i stedet. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>af %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 grafikdriver</strong><br/><font color="Grey">af %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 browser-plugin</strong><br/><font color="Grey">af %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">af %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 pakke</strong><br/><font color="Grey">af %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">af %2</font> - + <a href="%1">view license agreement</a> <a href="%1">vis licensaftalen</a> @@ -1583,34 +1606,34 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. PartitionModel - - + + Free Space Ledig plads - - + + New partition Ny partition - + Name Navn - + File System Filsystem - + Mount Point Monteringspunkt - + Size Størrelse @@ -1639,7 +1662,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. - &Create + Cre&ate &Opret @@ -1658,17 +1681,17 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Installér boot&loader på: - + Are you sure you want to create a new partition table on %1? Er du sikker på, at du vil oprette en ny partitionstabel på %1? - + Can not create new partition Kan ikke oprette ny partition - + 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. Partitionstabellen på %1 har allerede %2 primære partitioner, og der kan ikke tilføjes flere. Fjern venligst en primær partition og tilføj i stedet en udviddet partition. @@ -1676,97 +1699,97 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. PartitionViewStep - + Gathering system information... Indsamler systeminformation... - + Partitions Partitioner - + Install %1 <strong>alongside</strong> another operating system. Installér %1 <strong>ved siden af</strong> et andet styresystem. - + <strong>Erase</strong> disk and install %1. <strong>Slet</strong> disk og installér %1. - + <strong>Replace</strong> a partition with %1. <strong>Erstat</strong> en partition med %1. - + <strong>Manual</strong> partitioning. <strong>Manuel</strong> partitionering. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installér %1 <strong>ved siden af</strong> et andet styresystem på disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Slet</strong> disk <strong>%2</strong> (%3) og installér %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Erstat</strong> en partition på disk <strong>%2</strong> (%3) med %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manuel</strong> partitionering på disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Nuværende: - + After: Efter: - + No EFI system partition configured Ingen EFI-systempartition konfigureret - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. En EFI-systempartition er nødvendig for at starte %1.<br/><br/>For at konfigurere en EFI-systempartition skal du gå tilbage og vælge eller oprette et FAT32-filsystem med <strong>esp</strong>-flaget aktiveret og monteringspunkt <strong>%2</strong>.<br/><br/>Du kan fortsætte uden at opsætte en EFI-systempartition, men dit system vil muligvis ikke kunne starte. - + EFI system partition flag not set EFI-systempartitionsflag ikke sat - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. En EFI-systempartition er nødvendig for at starte %1.<br/><br/>En partition var konfigureret med monteringspunkt <strong>%2</strong>, men dens <strong>esp</strong>-flag var ikke sat.<br/>For at sætte flaget skal du gå tilbage og redigere partitionen.<br/><br/>Du kan fortsætte uden at konfigurere flaget, men dit system vil muligvis ikke kunne starte. - + Boot partition not encrypted Bootpartition ikke krypteret - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. En separat bootpartition blev opsat sammen med en krypteret rodpartition, men bootpartitionen er ikke krypteret.<br/><br/>Der er sikkerhedsmæssige bekymringer med denne slags opsætning, da vigtige systemfiler er gemt på en ikke-krypteret partition.<br/>Du kan fortsætte hvis du vil, men oplåsning af filsystemet sker senere under systemets opstart.<br/>For at kryptere bootpartitionen skal du gå tilbage og oprette den igen, vælge <strong>Kryptér</strong> i partitionsoprettelsesvinduet. @@ -1912,22 +1935,22 @@ Output: Standard - + unknown ukendt - + extended udvidet - + unformatted uformatteret - + swap swap @@ -2109,29 +2132,29 @@ Output: SetHostNameJob - + Set hostname %1 Sæt værtsnavn %1 - + Set hostname <strong>%1</strong>. Sæt værtsnavn <strong>%1</strong>. - + Setting hostname %1. Sætter værtsnavn %1. - - + + Internal Error Intern fejl - - + + Cannot write hostname to target system Kan ikke skrive værtsnavn til destinationssystem @@ -2583,7 +2606,7 @@ Output: WelcomeViewStep - + Welcome Velkommen diff --git a/lang/calamares_de.ts b/lang/calamares_de.ts index 2022e398b..05681ff69 100644 --- a/lang/calamares_de.ts +++ b/lang/calamares_de.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + Leere Seite + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Installieren @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Fertig @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Führe Befehl %1%2 aus - + Running command %1 %2 Befehl %1 %2 wird ausgeführt @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Operation %1 wird ausgeführt. - + Bad working directory path Fehlerhafter Arbeitsverzeichnis-Pfad - + Working directory %1 for python job %2 is not readable. Arbeitsverzeichnis %1 für Python-Job %2 ist nicht lesbar. - + Bad main script file Fehlerhaftes Hauptskript - + Main script file %1 for python job %2 is not readable. Hauptskript-Datei %1 für Python-Job %2 ist nicht lesbar. - + Boost.Python error in job "%1". Boost.Python-Fehler in Job "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Zurück - - + + &Next &Weiter - - + + &Cancel &Abbrechen - - + + Cancel installation without changing the system. Installation abbrechen, ohne das System zu verändern. - + + Calamares Initialization Failed + Initialisierung von Calamares fehlgeschlagen + + + + %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. + %1 kann nicht installiert werden. Calamares war nicht in der Lage, alle konfigurierten Module zu laden. Dieses Problem hängt mit der Art und Weise zusammen, wie Calamares von der jeweiligen Distribution eingesetzt wird. + + + + <br/>The following modules could not be loaded: + <br/>Die folgenden Module konnten nicht geladen werden: + + + &Install &Installieren - + Cancel installation? Installation abbrechen? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Wollen Sie wirklich die aktuelle Installation abbrechen? Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. - + &Yes &Ja - + &No &Nein - + &Close &Schließen - + Continue with setup? Setup fortsetzen? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Das %1 Installationsprogramm wird Änderungen an Ihrer Festplatte vornehmen, um %2 zu installieren.<br/><strong>Diese Änderungen können nicht rückgängig gemacht werden.</strong> - + &Install now Jetzt &installieren - + Go &back Gehe &zurück - + &Done &Erledigt - + The installation is complete. Close the installer. Die Installation ist abgeschlossen. Schließe das Installationsprogramm. - + Error Fehler - + Installation Failed Installation gescheitert @@ -436,17 +459,17 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. ClearMountsJob - + Clear mounts for partitioning operations on %1 Leere Mount-Points für Partitioning-Operation auf %1 - + Clearing mounts for partitioning operations on %1. Löse eingehängte Laufwerke für die Partitionierung von %1 - + Cleared all mounts for %1 Alle Mount-Points für %1 geleert @@ -490,7 +513,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. The command needs to know the user's name, but no username is defined. - + Dieser Befehl benötigt den Benutzernamen, jedoch ist kein Benutzername definiert. @@ -554,27 +577,27 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Grö&sse: - + En&crypt Verschlüsseln - + Logical Logisch - + Primary Primär - + GPT GPT - + Mountpoint already in use. Please select another one. Dieser Einhängepunkt wird schon benuztzt. Bitte wählen Sie einen anderen. @@ -776,7 +799,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -834,7 +857,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Markierungen: - + Mountpoint already in use. Please select another one. Der Einhängepunkt wird schon benutzt. Bitte wählen Sie einen anderen. @@ -1003,12 +1026,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. KeyboardPage - + Set keyboard model to %1.<br/> Setze Tastaturmodell auf %1.<br/> - + Set keyboard layout to %1/%2. Setze Tastaturbelegung auf %1/%2. @@ -1052,64 +1075,64 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Formular - + I accept the terms and conditions above. Ich akzeptiere die obigen Allgemeinen Geschäftsbedingungen. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Lizenzvereinbarung</h1>Dieses Installationsprogramm wird proprietäre Software installieren, welche Lizenzbedingungen unterliegt. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Bitte überprüfen Sie die obigen Lizenzvereinbarungen für Endbenutzer (EULAs).<br/>Wenn Sie mit diesen Bedingungen nicht einverstanden sind, kann das Installationsprogramm nicht fortgesetzt werden. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1> Lizenzvereinbarung </ h1> Dieses Installationsprogramm kann proprietäre Software installieren, welche Lizenzbedingungen unterliegt, um zusätzliche Funktionen bereitzustellen und die Benutzerfreundlichkeit zu verbessern. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Bitte überprüfen Sie die obigen Lizenzvereinbarungen für Endbenutzer (EULAs).<br/>Wenn Sie mit diesen Bedingungen nicht einverstanden sind, wird keine proprietäre Software installiert werden. Stattdessen werden quelloffene Alternativen verwendet. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 Treiber</strong><br/>by %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 Grafiktreiber</strong><br/><font color="Grey">von %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 Browser-Plugin</strong><br/><font color="Grey">von %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 Codec</strong><br/><font color="Grey">von %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 Paket</strong><br/><font color="Grey">von %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">von %2</font> - + <a href="%1">view license agreement</a> <a href="%1">Lizenzvereinbarung anzeigen</a> @@ -1583,34 +1606,34 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. PartitionModel - - + + Free Space Freier Platz - - + + New partition Neue Partition - + Name Name - + File System Dateisystem - + Mount Point Einhängepunkt - + Size Grösse @@ -1639,8 +1662,8 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. - &Create - &Erstellen + Cre&ate + Erstellen @@ -1658,17 +1681,17 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Installiere Boot&loader auf: - + Are you sure you want to create a new partition table on %1? Sind Sie sicher, dass Sie eine neue Partitionstabelle auf %1 erstellen möchten? - + Can not create new partition Neue Partition kann nicht erstellt werden - + 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. Die Partitionstabelle auf %1 hat bereits %2 primäre Partitionen und weitere können nicht hinzugefügt werden. Bitte entfernen Sie eine primäre Partition und fügen Sie stattdessen eine erweiterte Partition hinzu. @@ -1676,97 +1699,97 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. PartitionViewStep - + Gathering system information... Sammle Systeminformationen... - + Partitions Partitionen - + Install %1 <strong>alongside</strong> another operating system. Installiere %1 <strong>neben</strong> einem anderen Betriebssystem. - + <strong>Erase</strong> disk and install %1. <strong>Lösche</strong> Festplatte und installiere %1. - + <strong>Replace</strong> a partition with %1. <strong>Ersetze</strong> eine Partition durch %1. - + <strong>Manual</strong> partitioning. <strong>Manuelle</strong> Partitionierung. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). %1 <strong>parallel</strong> zu einem anderen Betriebssystem auf der Festplatte <strong>%2</strong> (%3) installieren. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. Festplatte <strong>%2</strong> <strong>löschen</strong> (%3) und %1 installieren. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. Eine Partition auf Festplatte <strong>%2</strong> (%3) durch %1 <strong>ersetzen</strong>. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manuelle</strong> Partitionierung auf Festplatte <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Festplatte <strong>%1</strong> (%2) - + Current: Aktuell: - + After: Nachher: - + No EFI system partition configured Keine EFI-Systempartition konfiguriert - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Eine EFI Systempartition wird benötigt, um %1 zu starten.<br/><br/>Um eine EFI Systempartition einzurichten, gehen Sie zurück und wählen oder erstellen Sie ein FAT32-Dateisystem mit einer aktivierten <strong>esp</strong> Markierung sowie <strong>%2</strong> als Einhängepunkt .<br/><br/>Sie können ohne die Einrichtung einer EFI-Systempartition fortfahren, aber ihr System wird unter Umständen nicht starten können. - + EFI system partition flag not set Die Markierung als EFI-Systempartition wurde nicht gesetzt - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Eine EFI Systempartition wird benötigt, um %1 zu starten.<br/><br/>Eine Partition mit dem Einhängepunkt <strong>%2</strong> wurd eingerichtet, jedoch wurde dort keine <strong>esp</strong> Markierung gesetzt.<br/>Um diese Markierung zu setzen, gehen Sie zurück und bearbeiten Sie die Partition.<br/><br/>Sie können ohne diese Markierung fortfahren, aber ihr System wird unter Umständen nicht starten können. - + Boot partition not encrypted Bootpartition nicht verschlüsselt - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Eine separate Bootpartition wurde zusammen mit einer verschlüsselten Rootpartition erstellt, die Bootpartition ist aber unverschlüsselt.<br/><br/> Dies ist sicherheitstechnisch nicht optimal, da wichtige Systemdateien auf der unverschlüsselten Bootpartition gespeichert werden.<br/>Wenn Sie wollen, können Sie fortfahren, aber das Entschlüsseln des Dateisystems wird erst später während des Systemstarts erfolgen.<br/>Um die Bootpartition zu verschlüsseln, gehen Sie zurück und erstellen Sie diese neu, indem Sie bei der Partitionierung <strong>Verschlüsseln</strong> wählen. @@ -1816,17 +1839,17 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Saving files for later ... - + Speichere Dateien für später ... No files configured to save for later. - + Keine Dateien für das Speichern zur späteren Verwendung konfiguriert. Not all of the configured files could be preserved. - + Nicht alle konfigurierten Dateien konnten erhalten werden. @@ -1912,22 +1935,22 @@ Ausgabe: Standard - + unknown unbekannt - + extended erweitert - + unformatted unformatiert - + swap Swap @@ -2109,29 +2132,29 @@ Ausgabe: SetHostNameJob - + Set hostname %1 Setze Computername auf %1 - + Set hostname <strong>%1</strong>. Setze Computernamen <strong>%1</strong>. - + Setting hostname %1. Setze Computernamen %1. - - + + Internal Error Interner Fehler - - + + Cannot write hostname to target system Kann den Computernamen nicht auf das Zielsystem schreiben @@ -2583,7 +2606,7 @@ Ausgabe: WelcomeViewStep - + Welcome Willkommen diff --git a/lang/calamares_el.ts b/lang/calamares_el.ts index 711c7a9e5..ad2491e1f 100644 --- a/lang/calamares_el.ts +++ b/lang/calamares_el.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Εγκατάσταση @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Ολοκληρώθηκε @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Εκτέλεση εντολής %1 %2 - + Running command %1 %2 Εκτελείται η εντολή %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Εκτελείται η λειτουργία %1. - + Bad working directory path Λανθασμένη διαδρομή καταλόγου εργασίας - + Working directory %1 for python job %2 is not readable. Ο ενεργός κατάλογος %1 για την εργασία python %2 δεν είναι δυνατόν να διαβαστεί. - + Bad main script file Λανθασμένο κύριο αρχείο δέσμης ενεργειών - + Main script file %1 for python job %2 is not readable. Η κύρια δέσμη ενεργειών %1 για την εργασία python %2 δεν είναι δυνατόν να διαβαστεί. - + Boost.Python error in job "%1". Σφάλμα Boost.Python στην εργασία "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Προηγούμενο - - + + &Next &Επόμενο - - + + &Cancel &Ακύρωση - - + + Cancel installation without changing the system. Ακύρωση της εγκατάστασης χωρίς αλλαγές στο σύστημα. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Ακύρωση της εγκατάστασης; - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Θέλετε πραγματικά να ακυρώσετε τη διαδικασία εγκατάστασης; Το πρόγραμμα εγκατάστασης θα τερματιστεί και όλες οι αλλαγές θα χαθούν. - + &Yes &Ναι - + &No &Όχι - + &Close &Κλείσιμο - + Continue with setup? Συνέχεια με την εγκατάσταση; - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Το πρόγραμμα εγκατάστασης %1 θα κάνει αλλαγές στον δίσκο για να εγκαταστήσετε το %2.<br/><strong>Δεν θα είστε σε θέση να αναιρέσετε τις αλλαγές.</strong> - + &Install now Ε&γκατάσταση τώρα - + Go &back Μετάβαση πί&σω - + &Done - + The installation is complete. Close the installer. Η εγκτάσταση ολοκληρώθηκε. Κλείστε το πρόγραμμα εγκατάστασης. - + Error Σφάλμα - + Installation Failed Η εγκατάσταση απέτυχε @@ -436,17 +459,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Καθαρίστηκαν όλες οι προσαρτήσεις για %1 @@ -554,27 +577,27 @@ The installer will quit and all changes will be lost. &Μέγεθος: - + En&crypt - + Logical Λογική - + Primary Πρωτεύουσα - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -776,7 +799,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -834,7 +857,7 @@ The installer will quit and all changes will be lost. Σημαίες: - + Mountpoint already in use. Please select another one. @@ -1003,12 +1026,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Ορισμός του μοντέλου πληκτρολογίου σε %1.<br/> - + Set keyboard layout to %1/%2. Ορισμός της διάταξης πληκτρολογίου σε %1/%2. @@ -1052,64 +1075,64 @@ The installer will quit and all changes will be lost. Τύπος - + I accept the terms and conditions above. Δέχομαι τους παραπάνω όρους και προϋποθέσεις. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Άδεια χρήσης</h1>Η διαδικασία ρύθμισης θα εγκαταστήσει ιδιόκτητο λογισμικό που υπόκειται στους όρους αδειών. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Άδεια χρήσης</h1>Η διαδικασία ρύθμισης θα εγκαταστήσει ιδιόκτητο λογισμικό που υπόκειται στους όρους αδειών προκειμένου να παρέχει πρόσθετες δυνατότητες και να ενισχύσει την εμπειρία του χρήστη. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>οδηγός %1</strong><br/>από %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 οδηγός κάρτας γραφικών</strong><br/><font color="Grey">από %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 πρόσθετο περιηγητή</strong><br/><font color="Grey">από %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>κωδικοποιητής %1</strong><br/><font color="Grey">από %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>πακέτο %1</strong><br/><font color="Grey">από %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">από %2</font> - + <a href="%1">view license agreement</a> <a href="%1">εμφάνιση άδειας χρήσης</a> @@ -1583,34 +1606,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space Ελεύθερος χώρος - - + + New partition Νέα κατάτμηση - + Name Όνομα - + File System Σύστημα αρχείων - + Mount Point Σημείο προσάρτησης - + Size Μέγεθος @@ -1639,8 +1662,8 @@ The installer will quit and all changes will be lost. - &Create - &Δημιουργία + Cre&ate + @@ -1658,17 +1681,17 @@ The installer will quit and all changes will be lost. Εγκατάσταση προγράμματος ε&κκίνησης στο: - + Are you sure you want to create a new partition table on %1? Θέλετε σίγουρα να δημιουργήσετε έναν νέο πίνακα κατατμήσεων στο %1; - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Συλλογή πληροφοριών συστήματος... - + Partitions Κατατμήσεις - + Install %1 <strong>alongside</strong> another operating system. Εγκατάσταση του %1 <strong>παράλληλα με</strong> ένα άλλο λειτουργικό σύστημα στον δίσκο. - + <strong>Erase</strong> disk and install %1. <strong>Διαγραφή</strong> του δίσκου και εγκατάσταση του %1. - + <strong>Replace</strong> a partition with %1. <strong>Αντικατάσταση</strong> μιας κατάτμησης με το %1. - + <strong>Manual</strong> partitioning. <strong>Χειροκίνητη</strong> τμηματοποίηση. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Εγκατάσταση του %1 <strong>παράλληλα με</strong> ένα άλλο λειτουργικό σύστημα στον δίσκο<strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Διαγραφή</strong> του δίσκου <strong>%2</strong> (%3) και εγκατάσταση του %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Αντικατάσταση</strong> μιας κατάτμησης στον δίσκο <strong>%2</strong> (%3) με το %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Χειροκίνητη</strong> τμηματοποίηση του δίσκου <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Δίσκος <strong>%1</strong> (%2) - + Current: Τρέχον: - + After: Μετά: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1909,22 +1932,22 @@ Output: Προκαθορισμένο - + unknown άγνωστη - + extended εκτεταμένη - + unformatted μη μορφοποιημένη - + swap @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 Ορισμός ονόματος υπολογιστή %1 - + Set hostname <strong>%1</strong>. Ορισμός ονόματος υπολογιστή <strong>%1</strong>. - + Setting hostname %1. Ορίζεται το όνομα υπολογιστή %1. - - + + Internal Error Εσωτερικό σφάλμα - - + + Cannot write hostname to target system Δεν είναι δυνατή η εγγραφή του ονόματος υπολογιστή στο σύστημα @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome Καλώς ήλθατε diff --git a/lang/calamares_en.ts b/lang/calamares_en.ts index 54a23b4e7..05f430ea2 100644 --- a/lang/calamares_en.ts +++ b/lang/calamares_en.ts @@ -1,6 +1,4 @@ - - - + BootInfoWidget @@ -52,7 +50,7 @@ Blank Page - + Blank Page @@ -194,17 +192,17 @@ Calamares Initialization Failed - + Calamares Initialization Failed %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. - + %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. <br/>The following modules could not be loaded: - + <br/>The following modules could not be loaded: @@ -1665,7 +1663,7 @@ The installer will quit and all changes will be lost. Cre&ate - + Cre&ate @@ -2613,4 +2611,4 @@ Output: Welcome - + \ No newline at end of file diff --git a/lang/calamares_en_GB.ts b/lang/calamares_en_GB.ts index 025036232..555a46d98 100644 --- a/lang/calamares_en_GB.ts +++ b/lang/calamares_en_GB.ts @@ -4,17 +4,17 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. @@ -37,12 +37,20 @@ Do not install a boot loader - + Do not install a boot loader %1 (%2) - + %1 (%2) + + + + Calamares::BlankViewStep + + + Blank Page + Blank Page @@ -76,17 +84,17 @@ none - + none Interface: - + Interface: Tools - + Tools @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Install @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Done @@ -113,45 +121,45 @@ Calamares::ProcessJob - + Run command %1 %2 Run command %1 %2 - + Running command %1 %2 - + Running command %1 %2 Calamares::PythonJob - + Running %1 operation. - + Running %1 operation. - + Bad working directory path Bad working directory path - + Working directory %1 for python job %2 is not readable. Working directory %1 for python job %2 is not readable. - + Bad main script file Bad main script file - + Main script file %1 for python job %2 is not readable. Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". Boost.Python error in job "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Back - - + + &Next &Next - - + + &Cancel &Cancel - - + + Cancel installation without changing the system. - + Cancel installation without changing the system. - + + Calamares Initialization Failed + Calamares Initialisation Failed + + + + %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. + %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. + + + + <br/>The following modules could not be loaded: + <br/>The following modules could not be loaded: + + + &Install - + &Install - + Cancel installation? Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &Yes - + &No - + &No - + &Close - + &Close - + Continue with setup? Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Install now - + Go &back Go &back - + &Done - + &Done - + The installation is complete. Close the installer. - + The installation is complete. Close the installer. - + Error Error - + Installation Failed Installation Failed @@ -295,17 +318,17 @@ The installer will quit and all changes will be lost. This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. This program will ask you some questions and set up %2 on your computer. - + This program will ask you some questions and set up %2 on your computer. @@ -315,7 +338,7 @@ The installer will quit and all changes will be lost. System requirements - + System requirements @@ -333,22 +356,22 @@ The installer will quit and all changes will be lost. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Boot loader location: - + Boot loader location: %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. Select storage de&vice: - + Select storage de&vice: @@ -356,42 +379,42 @@ The installer will quit and all changes will be lost. Current: - + Current: Reuse %1 as home partition for %2. - + Reuse %1 as home partition for %2. <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Select a partition to install on</strong> - + <strong>Select a partition to install on</strong> An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. The EFI system partition at %1 will be used for starting %2. - + The EFI system partition at %1 will be used for starting %2. EFI system partition: - + EFI system partition: This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -399,12 +422,12 @@ The installer will quit and all changes will be lost. <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -412,7 +435,7 @@ The installer will quit and all changes will be lost. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. @@ -420,33 +443,33 @@ The installer will quit and all changes will be lost. <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + <strong>Replace a partition</strong><br/>Replaces a partition with %1. This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ClearMountsJob - + Clear mounts for partitioning operations on %1 Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Cleared all mounts for %1 @@ -461,7 +484,7 @@ The installer will quit and all changes will be lost. Clearing all temporary mounts. - + Clearing all temporary mounts. @@ -480,17 +503,17 @@ The installer will quit and all changes will be lost. Could not run command. - + Could not run command. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. The command needs to know the user's name, but no username is defined. - + The command needs to know the user's name, but no username is defined. @@ -498,7 +521,7 @@ The installer will quit and all changes will be lost. Contextual Processes Job - + Contextual Processes Job @@ -511,7 +534,7 @@ The installer will quit and all changes will be lost. MiB - + MiB @@ -531,12 +554,12 @@ The installer will quit and all changes will be lost. Fi&le System: - + Fi&le System: LVM LV name - + LVM LV name @@ -554,29 +577,29 @@ The installer will quit and all changes will be lost. Si&ze: - + En&crypt - + En&crypt - + Logical Logical - + Primary Primary - + GPT GPT - + Mountpoint already in use. Please select another one. - + Mountpoint already in use. Please select another one. @@ -594,7 +617,7 @@ The installer will quit and all changes will be lost. Creating new %1 partition on %2. - + Creating new %1 partition on %2. @@ -645,7 +668,7 @@ The installer will quit and all changes will be lost. Creating new %1 partition table on %2. - + Creating new %1 partition table on %2. @@ -663,12 +686,12 @@ The installer will quit and all changes will be lost. Create user <strong>%1</strong>. - + Create user <strong>%1</strong>. Creating user %1. - + Creating user %1. @@ -706,7 +729,7 @@ The installer will quit and all changes will be lost. Deleting partition %1. - + Deleting partition %1. @@ -719,32 +742,32 @@ The installer will quit and all changes will be lost. The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. This device has a <strong>%1</strong> partition table. - + This device has a <strong>%1</strong> partition table. This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - + This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - + This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - + <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. @@ -760,25 +783,25 @@ The installer will quit and all changes will be lost. Write LUKS configuration for Dracut to %1 - + Write LUKS configuration for Dracut to %1 Skip writing LUKS configuration for Dracut: "/" partition is not encrypted - + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted Failed to open %1 - + Failed to open %1 DummyCppJob - + Dummy C++ Job - + Dummy C++ Job @@ -796,7 +819,7 @@ The installer will quit and all changes will be lost. &Keep - + &Keep @@ -821,12 +844,12 @@ The installer will quit and all changes will be lost. MiB - + MiB Fi&le System: - + Fi&le System: @@ -834,9 +857,9 @@ The installer will quit and all changes will be lost. Flags: - + Mountpoint already in use. Please select another one. - + Mountpoint already in use. Please select another one. @@ -849,22 +872,22 @@ The installer will quit and all changes will be lost. En&crypt system - + En&crypt system Passphrase - + Passphrase Confirm passphrase - + Confirm passphrase Please enter the same passphrase in both boxes. - + Please enter the same passphrase in both boxes. @@ -902,7 +925,7 @@ The installer will quit and all changes will be lost. Setting up mount points. - + Setting up mount points. @@ -915,7 +938,7 @@ The installer will quit and all changes will be lost. <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> @@ -930,7 +953,7 @@ The installer will quit and all changes will be lost. <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -943,12 +966,12 @@ The installer will quit and all changes will be lost. Installation Complete - + Installation Complete The installation of %1 is complete. - + The installation of %1 is complete. @@ -966,7 +989,7 @@ The installer will quit and all changes will be lost. Formatting partition %1 with file system %2. - + Formatting partition %1 with file system %2. @@ -979,17 +1002,17 @@ The installer will quit and all changes will be lost. Konsole not installed - + Konsole not installed Please install KDE Konsole and try again! - + Please install KDE Konsole and try again! Executing script: &nbsp;<code>%1</code> - + Executing script: &nbsp;<code>%1</code> @@ -997,18 +1020,18 @@ The installer will quit and all changes will be lost. Script - + Script KeyboardPage - + Set keyboard model to %1.<br/> Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. Set keyboard layout to %1/%2. @@ -1041,7 +1064,7 @@ The installer will quit and all changes will be lost. &OK - + &OK @@ -1052,66 +1075,66 @@ The installer will quit and all changes will be lost. Form - + I accept the terms and conditions above. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 driver</strong><br/>by %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> - + <a href="%1">view license agreement</a> @@ -1119,7 +1142,7 @@ The installer will quit and all changes will be lost. License - + License @@ -1127,12 +1150,12 @@ The installer will quit and all changes will be lost. The system language will be set to %1. - + The system language will be set to %1. The numbers and dates locale will be set to %1. - + The numbers and dates locale will be set to %1. @@ -1159,7 +1182,7 @@ The installer will quit and all changes will be lost. %1 (%2) Language (Country) - + %1 (%2) @@ -1185,17 +1208,17 @@ The installer will quit and all changes will be lost. Description - + Description Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Network Installation. (Disabled: Received invalid groups data) - + Network Installation. (Disabled: Received invalid groups data) @@ -1203,7 +1226,7 @@ The installer will quit and all changes will be lost. Package selection - + Package selection @@ -1211,242 +1234,242 @@ The installer will quit and all changes will be lost. Password is too short - + Password is too short Password is too long - + Password is too long Password is too weak - + Password is too weak Memory allocation error when setting '%1' - + Memory allocation error when setting '%1' Memory allocation error - + Memory allocation error The password is the same as the old one - + The password is the same as the old one The password is a palindrome - + The password is a palindrome The password differs with case changes only - + The password differs with case changes only The password is too similar to the old one - + The password is too similar to the old one The password contains the user name in some form - + The password contains the user name in some form The password contains words from the real name of the user in some form - + The password contains words from the real name of the user in some form The password contains forbidden words in some form - + The password contains forbidden words in some form The password contains less than %1 digits - + The password contains less than %1 digits The password contains too few digits - + The password contains too few digits The password contains less than %1 uppercase letters - + The password contains less than %1 uppercase letters The password contains too few uppercase letters - + The password contains too few uppercase letters The password contains less than %1 lowercase letters - + The password contains less than %1 lowercase letters The password contains too few lowercase letters - + The password contains too few lowercase letters The password contains less than %1 non-alphanumeric characters - + The password contains less than %1 non-alphanumeric characters The password contains too few non-alphanumeric characters - + The password contains too few non-alphanumeric characters The password is shorter than %1 characters - + The password is shorter than %1 characters The password is too short - + The password is too short The password is just rotated old one - + The password is just rotated old one The password contains less than %1 character classes - + The password contains less than %1 character classes The password does not contain enough character classes - + The password does not contain enough character classes The password contains more than %1 same characters consecutively - + The password contains more than %1 same characters consecutively The password contains too many same characters consecutively - + The password contains too many same characters consecutively The password contains more than %1 characters of the same class consecutively - + The password contains more than %1 characters of the same class consecutively The password contains too many characters of the same class consecutively - + The password contains too many characters of the same class consecutively The password contains monotonic sequence longer than %1 characters - + The password contains monotonic sequence longer than %1 characters The password contains too long of a monotonic character sequence - + The password contains too long of a monotonic character sequence No password supplied - + No password supplied Cannot obtain random numbers from the RNG device - + Cannot obtain random numbers from the RNG device Password generation failed - required entropy too low for settings - + Password generation failed - required entropy too low for settings The password fails the dictionary check - %1 - + The password fails the dictionary check - %1 The password fails the dictionary check - + The password fails the dictionary check Unknown setting - %1 - + Unknown setting - %1 Unknown setting - + Unknown setting Bad integer value of setting - %1 - + Bad integer value of setting - %1 Bad integer value - + Bad integer value Setting %1 is not of integer type - + Setting %1 is not of integer type Setting is not of integer type - + Setting is not of integer type Setting %1 is not of string type - + Setting %1 is not of string type Setting is not of string type - + Setting is not of string type Opening the configuration file failed - + Opening the configuration file failed The configuration file is malformed - + The configuration file is malformed Fatal failure - + Fatal failure Unknown error - + Unknown error @@ -1519,12 +1542,12 @@ The installer will quit and all changes will be lost. Log in automatically without asking for the password. - + Log in automatically without asking for the password. Use the same password for the administrator account. - + Use the same password for the administrator account. @@ -1542,32 +1565,32 @@ The installer will quit and all changes will be lost. Root - + Root Home - + Home Boot - + Boot EFI system - + EFI system Swap - + Swap New partition for %1 - + New partition for %1 @@ -1577,40 +1600,40 @@ The installer will quit and all changes will be lost. %1 %2 - + %1 %2 PartitionModel - - + + Free Space Free Space - - + + New partition New partition - + Name Name - + File System File System - + Mount Point Mount Point - + Size Size @@ -1625,7 +1648,7 @@ The installer will quit and all changes will be lost. Storage de&vice: - + Storage de&vice: @@ -1639,8 +1662,8 @@ The installer will quit and all changes will be lost. - &Create - &Create + Cre&ate + Cre&ate @@ -1655,120 +1678,120 @@ The installer will quit and all changes will be lost. Install boot &loader on: - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? Are you sure you want to create a new partition table on %1? - + Can not create new partition - + Can not create new partition - + 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. - + 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. PartitionViewStep - + Gathering system information... Gathering system information... - + Partitions Partitions - + Install %1 <strong>alongside</strong> another operating system. Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: - + Current: - + After: After: - + No EFI system partition configured - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1776,13 +1799,13 @@ The installer will quit and all changes will be lost. Plasma Look-and-Feel Job - + Plasma Look-and-Feel Job Could not select KDE Plasma Look-and-Feel package - + Could not select KDE Plasma Look-and-Feel package @@ -1795,12 +1818,12 @@ The installer will quit and all changes will be lost. Placeholder - + Placeholder Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. @@ -1808,7 +1831,7 @@ The installer will quit and all changes will be lost. Look-and-Feel - + Look-and-Feel @@ -1816,17 +1839,17 @@ The installer will quit and all changes will be lost. Saving files for later ... - + Saving files for later... No files configured to save for later. - + No files configured to save for later. Not all of the configured files could be preserved. - + Not all of the configured files could be preserved. @@ -1835,39 +1858,42 @@ The installer will quit and all changes will be lost. There was no output from the command. - + +There was no output from the command. Output: - + +Output: + External command crashed. - + External command crashed. Command <i>%1</i> crashed. - + Command <i>%1</i> crashed. External command failed to start. - + External command failed to start. Command <i>%1</i> failed to start. - + Command <i>%1</i> failed to start. Internal error when starting command. - + Internal error when starting command. @@ -1877,22 +1903,22 @@ Output: External command failed to finish. - + External command failed to finish. Command <i>%1</i> failed to finish in %2 seconds. - + Command <i>%1</i> failed to finish in %2 seconds. External command finished with errors. - + External command finished with errors. Command <i>%1</i> finished with exit code %2. - + Command <i>%1</i> finished with exit code %2. @@ -1909,29 +1935,29 @@ Output: Default - + unknown - + unknown - + extended - + extended - + unformatted - + unformatted - + swap - + swap Unpartitioned space or unknown partition table - + Unpartitioned space or unknown partition table @@ -1989,24 +2015,24 @@ Output: <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. The EFI system partition at %1 will be used for starting %2. - + The EFI system partition at %1 will be used for starting %2. EFI system partition: - + EFI system partition: @@ -2024,7 +2050,7 @@ Output: There is not enough drive space. At least %1 GB is required. - + There is not enough drive space. At least %1 GB is required. @@ -2034,7 +2060,7 @@ Output: The system does not have enough working memory. At least %1 GB is required. - + The system does not have enough working memory. At least %1 GB is required. @@ -2044,7 +2070,7 @@ Output: The system is not plugged in to a power source. - + The system is not plugged in to a power source. @@ -2054,17 +2080,17 @@ Output: The system is not connected to the Internet. - + The system is not connected to the Internet. The installer is not running with administrator rights. - + The installer is not running with administrator rights. The screen is too small to display the installer. - + The screen is too small to display the installer. @@ -2082,7 +2108,7 @@ Output: Resizing %2MB partition %1 to %3MB. - + Resizing %2MB partition %1 to %3MB. @@ -2095,40 +2121,40 @@ Output: Scanning storage devices... - + Scanning storage devices... Partitioning - + Partitioning SetHostNameJob - + Set hostname %1 Set hostname %1 - + Set hostname <strong>%1</strong>. - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - + Setting hostname %1. - - + + Internal Error Internal Error - - + + Cannot write hostname to target system Cannot write hostname to target system @@ -2160,7 +2186,7 @@ Output: Failed to write keyboard configuration to existing /etc/default directory. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -2168,82 +2194,82 @@ Output: Set flags on partition %1. - + Set flags on partition %1. Set flags on %1MB %2 partition. - + Set flags on %1MB %2 partition. Set flags on new partition. - + Set flags on new partition. Clear flags on partition <strong>%1</strong>. - + Clear flags on partition <strong>%1</strong>. Clear flags on %1MB <strong>%2</strong> partition. - + Clear flags on %1MB <strong>%2</strong> partition. Clear flags on new partition. - + Clear flags on new partition. Flag partition <strong>%1</strong> as <strong>%2</strong>. - + Flag partition <strong>%1</strong> as <strong>%2</strong>. Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. - + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. Flag new partition as <strong>%1</strong>. - + Flag new partition as <strong>%1</strong>. Clearing flags on partition <strong>%1</strong>. - + Clearing flags on partition <strong>%1</strong>. Clearing flags on %1MB <strong>%2</strong> partition. - + Clearing flags on %1MB <strong>%2</strong> partition. Clearing flags on new partition. - + Clearing flags on new partition. Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. - + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. Setting flags <strong>%1</strong> on new partition. - + Setting flags <strong>%1</strong> on new partition. The installer failed to set flags on partition %1. - + The installer failed to set flags on partition %1. @@ -2256,7 +2282,7 @@ Output: Setting password for user %1. - + Setting password for user %1. @@ -2271,12 +2297,12 @@ Output: Cannot disable root account. - + Cannot disable root account. passwd terminated with error code %1. - + passwd terminated with error code %1. @@ -2319,12 +2345,12 @@ Output: Cannot set timezone, - + Cannot set timezone, Cannot open /etc/timezone for writing - + Cannot open /etc/timezone for writing @@ -2332,7 +2358,7 @@ Output: Shell Processes Job - + Shell Processes Job @@ -2341,7 +2367,7 @@ Output: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -2365,22 +2391,22 @@ Output: Installation feedback - + Installation feedback Sending installation feedback. - + Sending installation feedback. Internal error in install-tracking. - + Internal error in install-tracking. HTTP request timed out. - + HTTP request timed out. @@ -2388,28 +2414,28 @@ Output: Machine feedback - + Machine feedback Configuring machine feedback. - + Configuring machine feedback. Error in machine feedback configuration. - + Error in machine feedback configuration. Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, script error %1. Could not configure machine feedback correctly, Calamares error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -2422,51 +2448,51 @@ Output: Placeholder - + Placeholder <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - + <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> TextLabel - + TextLabel ... - + ... <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> - + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. - + Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2474,7 +2500,7 @@ Output: Feedback - + Feedback @@ -2529,7 +2555,7 @@ Output: &Language: - + &Language: @@ -2554,12 +2580,12 @@ Output: <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the %1 installer.</h1> <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> @@ -2569,7 +2595,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. @@ -2580,7 +2606,7 @@ Output: WelcomeViewStep - + Welcome Welcome diff --git a/lang/calamares_eo.ts b/lang/calamares_eo.ts index ff2e18047..bfbd94ab7 100644 --- a/lang/calamares_eo.ts +++ b/lang/calamares_eo.ts @@ -45,6 +45,14 @@ %1(%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Instali @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Finita @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back - - + + &Next - - + + &Cancel &Nuligi - - + + Cancel installation without changing the system. Nuligi instalado sen ŝanĝante la sistemo. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install &Instali - + Cancel installation? Nuligi instalado? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Ĉu vi vere volas nuligi la instalan procedon? La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + &Yes &Jes - + &No &Ne - + &Close &Fermi - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Instali nun - + Go &back - + &Done &Finita - + The installation is complete. Close the installer. - + Error Eraro - + Installation Failed @@ -436,17 +459,17 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -554,27 +577,27 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -776,7 +799,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. DummyCppJob - + Dummy C++ Job @@ -834,7 +857,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + Mountpoint already in use. Please select another one. @@ -1003,12 +1026,12 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1052,64 +1075,64 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1583,34 +1606,34 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1639,7 +1662,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - &Create + Cre&ate @@ -1658,17 +1681,17 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1909,22 +1932,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_es.ts b/lang/calamares_es.ts index 47a1e6b06..88ce4eae7 100644 --- a/lang/calamares_es.ts +++ b/lang/calamares_es.ts @@ -46,6 +46,14 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -98,7 +106,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::ExecutionViewStep - + Install Instalar @@ -106,7 +114,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::JobThread - + Done Hecho @@ -114,12 +122,12 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::ProcessJob - + Run command %1 %2 Ejecutar comando %1 %2 - + Running command %1 %2 Ejecutando comando %1 %2 @@ -127,32 +135,32 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::PythonJob - + Running %1 operation. Ejecutando %1 operación. - + Bad working directory path Error en la ruta del directorio de trabajo - + Working directory %1 for python job %2 is not readable. El directorio de trabajo %1 para el script de python %2 no se puede leer. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. El script principal %1 del proceso python %2 no es accesible. - + Boost.Python error in job "%1". Error Boost.Python en el proceso "%1". @@ -160,97 +168,112 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::ViewManager - + &Back &Atrás - - + + &Next &Siguiente - - + + &Cancel &Cancelar - - + + Cancel installation without changing the system. Cancelar instalación sin cambiar el sistema. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? ¿Cancelar la instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. ¿Realmente quiere cancelar el proceso de instalación? Saldrá del instalador y se perderán todos los cambios. - + &Yes &Sí - + &No &No - + &Close &Cerrar - + Continue with setup? ¿Continuar con la configuración? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> El instalador %1 va a realizar cambios en su disco para instalar %2.<br/><strong>No podrá deshacer estos cambios.</strong> - + &Install now &Instalar ahora - + Go &back Regresar - + &Done &Hecho - + The installation is complete. Close the installer. La instalación se ha completado. Cierre el instalador. - + Error Error - + Installation Failed Error en la Instalación @@ -437,17 +460,17 @@ Saldrá del instalador y se perderán todos los cambios. ClearMountsJob - + Clear mounts for partitioning operations on %1 Limpiar puntos de montaje para operaciones de particionamiento en %1 - + Clearing mounts for partitioning operations on %1. Limpiando puntos de montaje para operaciones de particionamiento en %1. - + Cleared all mounts for %1 Limpiados todos los puntos de montaje para %1 @@ -555,27 +578,27 @@ Saldrá del instalador y se perderán todos los cambios. &Tamaño: - + En&crypt &Cifrar - + Logical Lógica - + Primary Primaria - + GPT GPT - + Mountpoint already in use. Please select another one. Punto de montaje ya en uso. Por favor, seleccione otro. @@ -777,7 +800,7 @@ Saldrá del instalador y se perderán todos los cambios. DummyCppJob - + Dummy C++ Job Tarea C++ ficticia @@ -835,7 +858,7 @@ Saldrá del instalador y se perderán todos los cambios. Banderas: - + Mountpoint already in use. Please select another one. Punto de montaje ya en uso. Por favor, seleccione otro. @@ -1004,12 +1027,12 @@ Saldrá del instalador y se perderán todos los cambios. KeyboardPage - + Set keyboard model to %1.<br/> Establecer el modelo de teclado a %1.<br/> - + Set keyboard layout to %1/%2. Configurar la disposición de teclado a %1/%2. @@ -1053,64 +1076,64 @@ Saldrá del instalador y se perderán todos los cambios. Formulario - + I accept the terms and conditions above. Acepto los términos y condiciones anteriores. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Acuerdo de licencia</ h1> Este procedimiento de instalación instalará el software propietario que está sujeto a los términos de licencia. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Por favor, revise los acuerdos de licencia de usuario final (EULAs) anterior. <br/>Si usted no está de acuerdo con los términos, el procedimiento de instalación no puede continuar. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Acuerdo de licencia</ h1> Este procedimiento de configuración se puede instalar el software propietario que está sujeta a condiciones de licencia con el fin de proporcionar características adicionales y mejorar la experiencia del usuario. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Por favor, revise los acuerdos de licencia de usuario final (EULAs) anterior.<br/>Si usted no está de acuerdo con los términos, el software propietario no se instalará, y las alternativas de código abierto se utilizarán en su lugar. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>por %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 driver gráficos</strong><br/><font color="Grey">por %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 plugin del navegador</strong><br/><font color="Grey">por %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">por %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 paquete</strong><br/><font color="Grey">por %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">por %2</font> - + <a href="%1">view license agreement</a> <a href="%1">vista contrato de licencia</a> @@ -1584,34 +1607,34 @@ Saldrá del instalador y se perderán todos los cambios. PartitionModel - - + + Free Space Espacio libre - - + + New partition Partición nueva - + Name Nombre - + File System Sistema de archivos - + Mount Point Punto de montaje - + Size Tamaño @@ -1640,8 +1663,8 @@ Saldrá del instalador y se perderán todos los cambios. - &Create - &Crear + Cre&ate + @@ -1659,17 +1682,17 @@ Saldrá del instalador y se perderán todos los cambios. Instalar gestor de arranque en: - + Are you sure you want to create a new partition table on %1? ¿Está seguro de querer crear una nueva tabla de particiones en %1? - + Can not create new partition - + 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. @@ -1677,97 +1700,97 @@ Saldrá del instalador y se perderán todos los cambios. PartitionViewStep - + Gathering system information... Obteniendo información del sistema... - + Partitions Particiones - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>junto a</strong> otro sistema operativo. - + <strong>Erase</strong> disk and install %1. <strong>Borrar</strong> disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Reemplazar</strong> una partición con %1. - + <strong>Manual</strong> partitioning. Particionamiento <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>junto a</strong> otro sistema operativo en disco <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Borrar</strong> disco <strong>%2</strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Reemplazar</strong> una partición en disco <strong>%2</strong> (%3) con %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionamiento <strong>manual</strong> en disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1<strong> (%2) - + Current: Corriente - + After: Despúes: - + No EFI system partition configured No hay una partición del sistema EFI configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Una partición EFI del sistema es necesaria para empezar %1.<br/><br/>Para configurar una partición EFI, vuelva atrás y seleccione crear un sistema de archivos FAT32 con el argumento <strong>esp</strong> activado y montada en <strong>%2</strong>.<br/><br/>Puede continuar sin configurar una partición EFI pero su sistema puede fallar al arrancar. - + EFI system partition flag not set Bandera EFI no establecida en la partición del sistema - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Una partición EFI del sistema es necesaria para empezar %1.<br/><br/>Una partición EFI fue configurada para ser montada en <strong>%2</strong> pero su argumento <strong>esp</strong> no fue seleccionado.<br/>Para activar el argumento, vuelva atrás y edite la partición.<br/><br/>Puede continuar sin configurar el argumento pero su sistema puede fallar al arrancar. - + Boot partition not encrypted Partición de arranque no cifrada - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Se estableció una partición de arranque aparte junto con una partición raíz cifrada, pero la partición de arranque no está cifrada.<br/><br/>Hay consideraciones de seguridad con esta clase de instalación, porque los ficheros de sistema importantes se mantienen en una partición no cifrada.<br/>Puede continuar si lo desea, pero el desbloqueo del sistema de ficheros ocurrirá más tarde durante el arranque del sistema.<br/>Para cifrar la partición de arranque, retroceda y vuelva a crearla, seleccionando <strong>Cifrar</strong> en la ventana de creación de la partición. @@ -1913,22 +1936,22 @@ Salida: Por defecto - + unknown desconocido - + extended extendido - + unformatted sin formato - + swap swap @@ -2110,29 +2133,29 @@ Salida: SetHostNameJob - + Set hostname %1 Hostname: %1 - + Set hostname <strong>%1</strong>. Configurar hostname <strong>%1</strong>. - + Setting hostname %1. Configurando hostname %1. - - + + Internal Error Error interno - - + + Cannot write hostname to target system No es posible escribir el hostname en el sistema de destino @@ -2584,7 +2607,7 @@ Salida: WelcomeViewStep - + Welcome Bienvenido diff --git a/lang/calamares_es_MX.ts b/lang/calamares_es_MX.ts index ddb6247d7..2ecc8f5a7 100644 --- a/lang/calamares_es_MX.ts +++ b/lang/calamares_es_MX.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Instalar @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Hecho @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Ejecutar comando %1 %2 - + Running command %1 %2 Ejecutando comando %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Ejecutando operación %1. - + Bad working directory path Ruta a la carpeta de trabajo errónea - + Working directory %1 for python job %2 is not readable. La carpeta de trabajo %1 para la tarea de python %2 no es accesible. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. El script principal %1 del proceso python %2 no es accesible. - + Boost.Python error in job "%1". Error Boost.Python en el proceso "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Atrás - - + + &Next &Siguiente - - + + &Cancel &Cancelar - - + + Cancel installation without changing the system. Cancelar instalación sin cambiar el sistema. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install &Instalar - + Cancel installation? ¿Cancelar la instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. ¿Realmente desea cancelar el proceso de instalación actual? El instalador terminará y se perderán todos los cambios. - + &Yes &Si - + &No &No - + &Close &Cerrar - + Continue with setup? ¿Continuar con la instalación? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> El instalador %1 va a realizar cambios en su disco para instalar %2.<br/><strong>No podrá deshacer estos cambios.</strong> - + &Install now &Instalar ahora - + Go &back &Regresar - + &Done &Hecho - + The installation is complete. Close the installer. Instalación completa. Cierre el instalador. - + Error Error - + Installation Failed Instalación Fallida @@ -437,17 +460,17 @@ El instalador terminará y se perderán todos los cambios. ClearMountsJob - + Clear mounts for partitioning operations on %1 Borrar puntos de montaje para operaciones de particionamiento en %1 - + Clearing mounts for partitioning operations on %1. Borrando puntos de montaje para operaciones de particionamiento en %1. - + Cleared all mounts for %1 Puntos de montaje despejados para %1 @@ -555,27 +578,27 @@ El instalador terminará y se perderán todos los cambios. Ta&maño: - + En&crypt En&criptar - + Logical Lógica - + Primary Primaria - + GPT GPT - + Mountpoint already in use. Please select another one. Punto de montaje ya esta en uso. Por favor seleccione otro. @@ -777,7 +800,7 @@ El instalador terminará y se perderán todos los cambios. DummyCppJob - + Dummy C++ Job Trabajo C++ Simulado @@ -835,7 +858,7 @@ El instalador terminará y se perderán todos los cambios. Indicadores: - + Mountpoint already in use. Please select another one. Punto de montaje ya esta en uso. Por favor seleccione otro. @@ -1004,12 +1027,12 @@ El instalador terminará y se perderán todos los cambios. KeyboardPage - + Set keyboard model to %1.<br/> Ajustar el modelo de teclado a %1.<br/> - + Set keyboard layout to %1/%2. Ajustar teclado a %1/%2. @@ -1053,64 +1076,64 @@ El instalador terminará y se perderán todos los cambios. Formulario - + I accept the terms and conditions above. Acepto los terminos y condiciones anteriores. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Acuerdo de Licencia</h1>Este procediemiento de configuración instalará software que está sujeto a terminos de la licencia. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Por favor, revise el acuerdo de licencia de usuario final (EULAs) anterior. <br/>Si usted no está de acuerdo con los términos, el procedimiento de configuración no podrá continuar. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Acuerdo de licencia</ h1> Este procedimiento de configuración se puede instalar software privativo que está sujeto a condiciones de licencia con el fin de proporcionar características adicionales y mejorar la experiencia del usuario. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Por favor revise los acuerdos de licencia de usuario final (EULAs) anterior.<br/>Si usted no está de acuerdo con los términos, el software privativo no se instalará, y las alternativas de código abierto se utilizarán en su lugar. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>controlador %1</strong><br/>por %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>controladores gráficos de %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>plugin del navegador %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>codec %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>paquete %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">por %2</font> - + <a href="%1">view license agreement</a> <a href="%1">ver acuerdo de licencia</a> @@ -1584,34 +1607,34 @@ El instalador terminará y se perderán todos los cambios. PartitionModel - - + + Free Space Espacio libre - - + + New partition Partición nueva - + Name Nombre - + File System Sistema de archivos - + Mount Point Punto de montaje - + Size Tamaño @@ -1640,8 +1663,8 @@ El instalador terminará y se perderán todos los cambios. - &Create - &Crear + Cre&ate + @@ -1659,17 +1682,17 @@ El instalador terminará y se perderán todos los cambios. Instalar &cargador de arranque en: - + Are you sure you want to create a new partition table on %1? ¿Está seguro de querer crear una nueva tabla de particiones en %1? - + Can not create new partition No se puede crear nueva partición - + 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. La tabla de partición en %1 ya tiene %2 particiones primarias, y no pueden agregarse mas. Favor remover una partición primaria y en cambio, agregue una partición extendida. @@ -1677,97 +1700,97 @@ El instalador terminará y se perderán todos los cambios. PartitionViewStep - + Gathering system information... Obteniendo información del sistema... - + Partitions Particiones - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>junto con</strong> otro sistema operativo. - + <strong>Erase</strong> disk and install %1. <strong>Borrar</strong> el disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Reemplazar</strong> una parición con %1. - + <strong>Manual</strong> partitioning. Particionamiento <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>junto con</strong> otro sistema operativo en el disco <strong>%2</strong>(%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Borrar</strong> el disco <strong>%2<strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Reemplazar</strong> una parición en el disco <strong>%2</strong> (%3) con %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionar <strong>manualmente</strong> el disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: Actual: - + After: Después: - + No EFI system partition configured Sistema de partición EFI no configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Un sistema de partición EFI es necesario para iniciar %1. <br/><br/>Para configurar un sistema de partición EFI, Regrese y seleccione o cree un sistema de archivos FAT32 con la bandera <strong>esp</strong> activada y el punto de montaje <strong>%2</strong>. <br/><br/>Puede continuar sin configurar una partición de sistema EFI, pero su sistema podría fallar al iniciar. - + EFI system partition flag not set Indicador de partición del sistema EFI no configurado - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Una partición del sistema EFI es necesaria para iniciar% 1. <br/><br/>Una partición se configuró con el punto de montaje <strong>% 2</strong>, pero su bandera <strong>esp</strong> no está configurada. <br/>Para establecer el indicador, retroceda y edite la partición.<br/><br/> Puede continuar sin configurar el indicador, pero su sistema puede fallar al iniciar. - + Boot partition not encrypted Partición de arranque no encriptada - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Se creó una partición de arranque separada junto con una partición raíz cifrada, pero la partición de arranque no está encriptada.<br/><br/> Existen problemas de seguridad con este tipo de configuración, ya que los archivos importantes del sistema se guardan en una partición no encriptada. <br/>Puede continuar si lo desea, pero el desbloqueo del sistema de archivos ocurrirá más tarde durante el inicio del sistema. <br/>Para encriptar la partición de arranque, retroceda y vuelva a crearla, seleccionando <strong>Encriptar</strong> en la ventana de creación de la partición. @@ -1913,22 +1936,22 @@ Salida Por defecto - + unknown desconocido - + extended extendido - + unformatted no formateado - + swap swap @@ -2111,29 +2134,29 @@ Salida SetHostNameJob - + Set hostname %1 Hostname: %1 - + Set hostname <strong>%1</strong>. Establecer nombre del equipo <strong>%1</strong>. - + Setting hostname %1. Configurando nombre de host %1. - - + + Internal Error Error interno - - + + Cannot write hostname to target system No es posible escribir el hostname en el sistema de destino @@ -2585,7 +2608,7 @@ Salida WelcomeViewStep - + Welcome Bienvenido diff --git a/lang/calamares_es_PR.ts b/lang/calamares_es_PR.ts index 7abee6088..5b5580924 100644 --- a/lang/calamares_es_PR.ts +++ b/lang/calamares_es_PR.ts @@ -45,6 +45,14 @@ + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Instalar @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Hecho @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Ejecutar comando %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path La ruta del directorio de trabajo es incorrecta - + Working directory %1 for python job %2 is not readable. El directorio de trabajo %1 para el script de python %2 no se puede leer. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. El script principal %1 del proceso python %2 no es accesible. - + Boost.Python error in job "%1". Error Boost.Python en el proceso "%1". @@ -159,96 +167,111 @@ Calamares::ViewManager - + &Back &Atrás - - + + &Next &Próximo - - + + &Cancel - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No - + &Close - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error Error - + Installation Failed Falló la instalación @@ -435,17 +458,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -553,27 +576,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -775,7 +798,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -833,7 +856,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1002,12 +1025,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1051,64 +1074,64 @@ The installer will quit and all changes will be lost. Formulario - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1582,34 +1605,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1638,7 +1661,7 @@ The installer will quit and all changes will be lost. - &Create + Cre&ate @@ -1657,17 +1680,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1675,97 +1698,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1908,22 +1931,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2105,29 +2128,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2579,7 +2602,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_et.ts b/lang/calamares_et.ts index 8fcf5f20e..ebbcbcf02 100644 --- a/lang/calamares_et.ts +++ b/lang/calamares_et.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + Tühi leht + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Paigalda @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Valmis @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Käivita käsklus %1 %2 - + Running command %1 %2 Käivitan käsklust %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Käivitan %1 tegevust. - + Bad working directory path Halb töökausta tee - + Working directory %1 for python job %2 is not readable. Töökaust %1 python tööle %2 pole loetav. - + Bad main script file Halb põhiskripti fail - + Main script file %1 for python job %2 is not readable. Põhiskripti fail %1 python tööle %2 pole loetav. - + Boost.Python error in job "%1". Boost.Python viga töös "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Tagasi - - + + &Next &Edasi - - + + &Cancel &Tühista - - + + Cancel installation without changing the system. Tühista paigaldamine ilma süsteemi muutmata. - + + Calamares Initialization Failed + Calamarese alglaadimine ebaõnnestus + + + + %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. + %1 ei saa paigaldada. Calamares ei saanud laadida kõiki konfigureeritud mooduleid. See on distributsiooni põhjustatud Calamarese kasutamise viga. + + + + <br/>The following modules could not be loaded: + <br/>Järgnevaid mooduleid ei saanud laadida: + + + &Install &Paigalda - + Cancel installation? Tühista paigaldamine? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Kas sa tõesti soovid tühistada praeguse paigaldusprotsessi? Paigaldaja sulgub ning kõik muutused kaovad. - + &Yes &Jah - + &No &Ei - + &Close &Sulge - + Continue with setup? Jätka seadistusega? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 paigaldaja on tegemas muudatusi sinu kettale, et paigaldada %2.<br/><strong>Sa ei saa neid muudatusi tagasi võtta.</strong> - + &Install now &Paigalda kohe - + Go &back Mine &tagasi - + &Done &Valmis - + The installation is complete. Close the installer. Paigaldamine on lõpetatud. Sulge paigaldaja. - + Error Viga - + Installation Failed Paigaldamine ebaõnnestus @@ -436,17 +459,17 @@ Paigaldaja sulgub ning kõik muutused kaovad. ClearMountsJob - + Clear mounts for partitioning operations on %1 Tühjenda monteeringud partitsioneerimistegevustes %1 juures - + Clearing mounts for partitioning operations on %1. Tühjendan monteeringud partitsioneerimistegevustes %1 juures. - + Cleared all mounts for %1 Kõik monteeringud tühjendatud %1 jaoks @@ -554,27 +577,27 @@ Paigaldaja sulgub ning kõik muutused kaovad. Suurus: - + En&crypt &Krüpti - + Logical Loogiline köide - + Primary Peamine - + GPT GPT - + Mountpoint already in use. Please select another one. Monteerimispunkt on juba kasutusel. Palun vali mõni teine. @@ -776,7 +799,7 @@ Paigaldaja sulgub ning kõik muutused kaovad. DummyCppJob - + Dummy C++ Job Testiv C++ töö @@ -834,7 +857,7 @@ Paigaldaja sulgub ning kõik muutused kaovad. Sildid: - + Mountpoint already in use. Please select another one. Monteerimispunkt on juba kasutusel. Palun vali mõni teine. @@ -1003,12 +1026,12 @@ Paigaldaja sulgub ning kõik muutused kaovad. KeyboardPage - + Set keyboard model to %1.<br/> Sea klaviatuurimudeliks %1.<br/> - + Set keyboard layout to %1/%2. Sea klaviatuuripaigutuseks %1/%2. @@ -1052,64 +1075,64 @@ Paigaldaja sulgub ning kõik muutused kaovad. Form - + I accept the terms and conditions above. Ma nõustun alljärgevate tingimustega. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Litsensileping</h1>See seadistusprotseduur paigaldab omandiõigusega tarkvara, mis vastab litsensitingimustele. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Palun loe läbi allolevad lõppkasutaja litsensilepingud (EULAd).<br/>Kui sa tingimustega ei nõustu, ei saa seadistusprotseduur jätkata. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Litsensileping</h1>See seadistusprotseduur võib paigaldada omandiõigusega tarkvara, mis vastab litsensitingimustele, et pakkuda lisafunktsioone ja täiendada kasutajakogemust. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Palun loe läbi allolevad lõppkasutaja litsensilepingud (EULAd).<br/>Kui sa tingimustega ei nõustu, ei paigaldata omandiõigusega tarkvara ning selle asemel kasutatakse avatud lähtekoodiga alternatiive. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 draiver</strong><br/>autorilt %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 graafikadraiver</strong><br/><font color="Grey">autorilt %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 brauseriplugin</strong><br/><font color="Grey">autorilt %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 koodek</strong><br/><font color="Grey">autorilt %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 pakett</strong><br/><font color="Grey">autorilt %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">autorilt %2</font> - + <a href="%1">view license agreement</a> <a href="%1">vaata litsensitingimusi</a> @@ -1583,34 +1606,34 @@ Paigaldaja sulgub ning kõik muutused kaovad. PartitionModel - - + + Free Space Tühi ruum - - + + New partition Uus partitsioon - + Name Nimi - + File System Failisüsteem - + Mount Point Monteerimispunkt - + Size Suurus @@ -1639,8 +1662,8 @@ Paigaldaja sulgub ning kõik muutused kaovad. - &Create - &Loo + Cre&ate + L&oo @@ -1658,17 +1681,17 @@ Paigaldaja sulgub ning kõik muutused kaovad. Paigalda käivituslaadur kohta: - + Are you sure you want to create a new partition table on %1? Kas soovid kindlasti luua uut partitsioonitabelit kettale %1? - + Can not create new partition Uut partitsiooni ei saa luua - + 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. Partitsioonitabel kohas %1 juba omab %2 peamist partitsiooni ning rohkem juurde ei saa lisada. Palun eemalda selle asemel üks peamine partitsioon ja lisa juurde laiendatud partitsioon. @@ -1676,97 +1699,97 @@ Paigaldaja sulgub ning kõik muutused kaovad. PartitionViewStep - + Gathering system information... Hangin süsteemiteavet... - + Partitions Partitsioonid - + Install %1 <strong>alongside</strong> another operating system. Paigalda %1 praeguse operatsioonisüsteemi <strong>kõrvale</strong> - + <strong>Erase</strong> disk and install %1. <strong>Tühjenda</strong> ketas ja paigalda %1. - + <strong>Replace</strong> a partition with %1. <strong>Asenda</strong> partitsioon operatsioonisüsteemiga %1. - + <strong>Manual</strong> partitioning. <strong>Käsitsi</strong> partitsioneerimine. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Paigalda %1 teise operatsioonisüsteemi <strong>kõrvale</strong> kettal <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Tühjenda</strong> ketas <strong>%2</strong> (%3) ja paigalda %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Asenda</strong> partitsioon kettal <strong>%2</strong> (%3) operatsioonisüsteemiga %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Käsitsi</strong> partitsioneerimine kettal <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Ketas <strong>%1</strong> (%2). - + Current: Hetkel: - + After: Pärast: - + No EFI system partition configured EFI süsteemipartitsiooni pole seadistatud - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. %1 käivitamiseks on vajalik EFI süsteemipartitsioon.<br/><br/>Et seadistada EFI süsteemipartitsiooni, mine tagasi ja vali või loo FAT32 failisüsteem sildiga <strong>esp</strong> ja monteerimispunktiga <strong>%2</strong>.<br/><br/>Sa võid jätkata ilma EFI süsteemipartitsiooni seadistamata aga su süsteem ei pruugi käivituda. - + EFI system partition flag not set EFI süsteemipartitsiooni silt pole määratud - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. %1 käivitamiseks on vajalik EFI süsteemipartitsioon.<br/><br/>Partitsioon seadistati monteerimispunktiga <strong>%2</strong> aga sellel ei määratud <strong>esp</strong> silti.<br/>Sildi määramiseks mine tagasi ja muuda partitsiooni.<br/><br/>Sa võid jätkata ilma silti seadistamata aga su süsteem ei pruugi käivituda. - + Boot partition not encrypted Käivituspartitsioon pole krüptitud - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Eraldi käivituspartitsioon seadistati koos krüptitud juurpartitsiooniga, aga käivituspartitsioon ise ei ole krüptitud.<br/><br/>Selle seadistusega kaasnevad turvaprobleemid, sest tähtsad süsteemifailid hoitakse krüptimata partitsioonil.<br/>Sa võid soovi korral jätkata, aga failisüsteemi lukust lahti tegemine toimub hiljem süsteemi käivitusel.<br/>Et krüpteerida käivituspartisiooni, mine tagasi ja taasloo see, valides <strong>Krüpteeri</strong> partitsiooni loomise aknas. @@ -1912,22 +1935,22 @@ Väljund: Vaikimisi - + unknown tundmatu - + extended laiendatud - + unformatted vormindamata - + swap swap @@ -2109,29 +2132,29 @@ Väljund: SetHostNameJob - + Set hostname %1 Määra hostinimi %1 - + Set hostname <strong>%1</strong>. Määra hostinimi <strong>%1</strong>. - + Setting hostname %1. Määran hostinime %1. - - + + Internal Error Sisemine viga - - + + Cannot write hostname to target system Hostinime ei saa sihtsüsteemile kirjutada @@ -2583,7 +2606,7 @@ Väljund: WelcomeViewStep - + Welcome Tervist diff --git a/lang/calamares_eu.ts b/lang/calamares_eu.ts index 7c40917d2..a52f3bb3e 100644 --- a/lang/calamares_eu.ts +++ b/lang/calamares_eu.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Instalatu @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Egina @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 %1 %2 komandoa abiarazi - + Running command %1 %2 %1 %2 komandoa exekutatzen @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. %1 eragiketa burutzen. - + Bad working directory path Direktorio ibilbide ezegokia - + Working directory %1 for python job %2 is not readable. - + Bad main script file Script fitxategi nagusi okerra - + Main script file %1 for python job %2 is not readable. %1 script fitxategi nagusia ezin da irakurri python %2 lanerako - + Boost.Python error in job "%1". @@ -159,96 +167,111 @@ Calamares::ViewManager - + &Back &Atzera - - + + &Next &Hurrengoa - - + + &Cancel &Utzi - - + + Cancel installation without changing the system. Instalazioa bertan behera utsi da sisteman aldaketarik gabe. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Bertan behera utzi instalazioa? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes &Bai - + &No &Ez - + &Close &Itxi - + Continue with setup? Ezarpenarekin jarraitu? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Instalatu orain - + Go &back &Atzera - + &Done E&ginda - + The installation is complete. Close the installer. Instalazioa burutu da. Itxi instalatzailea. - + Error Akatsa - + Installation Failed Instalazioak huts egin du @@ -435,17 +458,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -553,27 +576,27 @@ The installer will quit and all changes will be lost. Ta&maina: - + En&crypt - + Logical Logikoa - + Primary Primarioa - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -775,7 +798,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -833,7 +856,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1002,12 +1025,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1051,64 +1074,64 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. Goiko baldintzak onartzen ditut. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1582,34 +1605,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space Espazio librea - - + + New partition Partizio berria - + Name Izena - + File System Fitxategi Sistema - + Mount Point Muntatze Puntua - + Size Tamaina @@ -1638,8 +1661,8 @@ The installer will quit and all changes will be lost. - &Create - &Sortu + Cre&ate + @@ -1657,17 +1680,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1675,97 +1698,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Sistemaren informazioa eskuratzen... - + Partitions Partizioak - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: Unekoa: - + After: Ondoren: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1908,22 +1931,22 @@ Output: Lehenetsia - + unknown - + extended - + unformatted - + swap @@ -2105,29 +2128,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error Barne errorea - - + + Cannot write hostname to target system @@ -2579,7 +2602,7 @@ Output: WelcomeViewStep - + Welcome Ongi etorri diff --git a/lang/calamares_fa.ts b/lang/calamares_fa.ts index 60e59dbc1..29ac52d3c 100644 --- a/lang/calamares_fa.ts +++ b/lang/calamares_fa.ts @@ -45,6 +45,14 @@ + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install @@ -105,7 +113,7 @@ Calamares::JobThread - + Done @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -159,96 +167,111 @@ Calamares::ViewManager - + &Back - - + + &Next - - + + &Cancel - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No - + &Close - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -435,17 +458,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -553,27 +576,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -775,7 +798,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -833,7 +856,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1002,12 +1025,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1051,64 +1074,64 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1582,34 +1605,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1638,7 +1661,7 @@ The installer will quit and all changes will be lost. - &Create + Cre&ate @@ -1657,17 +1680,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1675,97 +1698,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1908,22 +1931,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2105,29 +2128,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2579,7 +2602,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_fi_FI.ts b/lang/calamares_fi_FI.ts index 5e89d75f9..10e71bf2c 100644 --- a/lang/calamares_fi_FI.ts +++ b/lang/calamares_fi_FI.ts @@ -45,6 +45,14 @@ + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Asenna @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Valmis @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Suorita komento %1 %2 - + Running command %1 %2 Suoritetaan komentoa %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Suoritetaan %1 toimenpidettä. - + Bad working directory path Epäkelpo työskentelyhakemiston polku - + Working directory %1 for python job %2 is not readable. Työkansio %1 pythonin työlle %2 ei ole luettavissa. - + Bad main script file Huono pää-skripti tiedosto - + Main script file %1 for python job %2 is not readable. Pääskriptitiedosto %1 pythonin työlle %2 ei ole luettavissa. - + Boost.Python error in job "%1". Boost.Python virhe työlle "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Takaisin - - + + &Next &Seuraava - - + + &Cancel &Peruuta - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Peruuta asennus? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Oletko varma että haluat peruuttaa käynnissä olevan asennusprosessin? Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - + &Yes &Kyllä - + &No &Ei - + &Close &Sulje - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Asenna nyt - + Go &back - + &Done &Valmis - + The installation is complete. Close the installer. Asennus on valmis. Sulje asennusohjelma. - + Error Virhe - + Installation Failed Asennus Epäonnistui @@ -436,17 +459,17 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. ClearMountsJob - + Clear mounts for partitioning operations on %1 Poista osiointitoimenpiteitä varten tehdyt liitokset kohteesta %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Kaikki liitokset poistettu kohteesta %1 @@ -554,27 +577,27 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. K&oko: - + En&crypt - + Logical Looginen - + Primary Ensisijainen - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -776,7 +799,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. DummyCppJob - + Dummy C++ Job @@ -834,7 +857,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Liput: - + Mountpoint already in use. Please select another one. @@ -1003,12 +1026,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. KeyboardPage - + Set keyboard model to %1.<br/> Aseta näppäimiston malli %1.<br/> - + Set keyboard layout to %1/%2. Aseta näppäimiston asetelmaksi %1/%2. @@ -1052,64 +1075,64 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Lomake - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1583,34 +1606,34 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. PartitionModel - - + + Free Space Vapaa tila - - + + New partition Uusi osiointi - + Name Nimi - + File System Tiedostojärjestelmä - + Mount Point Liitoskohta - + Size Koko @@ -1639,8 +1662,8 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - &Create - &Luo + Cre&ate + @@ -1658,17 +1681,17 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - + Are you sure you want to create a new partition table on %1? Oletko varma, että haluat luoda uuden osion %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. PartitionViewStep - + Gathering system information... Kerätään järjestelmän tietoja... - + Partitions Osiot - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: Jälkeen: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1909,22 +1932,22 @@ Output: Oletus - + unknown - + extended - + unformatted - + swap @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 Aseta isäntänimi %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error Sisäinen Virhe - - + + Cannot write hostname to target system Ei voida kirjoittaa isäntänimeä kohdejärjestelmään. @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome Tervetuloa diff --git a/lang/calamares_fr.ts b/lang/calamares_fr.ts index b2356b5d2..572a4b1df 100644 --- a/lang/calamares_fr.ts +++ b/lang/calamares_fr.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + Page blanche + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Installer @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Fait @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Exécution de la commande %1 %2 - + Running command %1 %2 Exécution de la commande %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Exécution de l'opération %1. - + Bad working directory path Chemin du répertoire de travail invalide - + Working directory %1 for python job %2 is not readable. Le répertoire de travail %1 pour le job python %2 n'est pas accessible en lecture. - + Bad main script file Fichier de script principal invalide - + Main script file %1 for python job %2 is not readable. Le fichier de script principal %1 pour la tâche python %2 n'est pas accessible en lecture. - + Boost.Python error in job "%1". Erreur Boost.Python pour le job "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Précédent - - + + &Next &Suivant - - + + &Cancel &Annuler - - + + Cancel installation without changing the system. Annuler l'installation sans modifier votre système. - + + Calamares Initialization Failed + L'initialisation de Calamares a échoué + + + + %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. + %1 n'a pas pu être installé. Calamares n'a pas pu charger tous les modules configurés. C'est un problème avec la façon dont Calamares est utilisé par la distribution. + + + + <br/>The following modules could not be loaded: + Les modules suivants n'ont pas pu être chargés : + + + &Install &Installer - + Cancel installation? Abandonner l'installation ? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Voulez-vous réellement abandonner le processus d'installation ? L'installateur se fermera et les changements seront perdus. - + &Yes &Oui - + &No &Non - + &Close &Fermer - + Continue with setup? Poursuivre la configuration ? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> L'installateur %1 est sur le point de procéder aux changements sur le disque afin d'installer %2.<br/> <strong>Vous ne pourrez pas annulez ces changements.<strong> - + &Install now &Installer maintenant - + Go &back &Retour - + &Done &Terminé - + The installation is complete. Close the installer. L'installation est terminée. Fermer l'installateur. - + Error Erreur - + Installation Failed L'installation a échoué @@ -436,17 +459,17 @@ L'installateur se fermera et les changements seront perdus. ClearMountsJob - + Clear mounts for partitioning operations on %1 Retirer les montages pour les opérations de partitionnement sur %1 - + Clearing mounts for partitioning operations on %1. Libération des montages pour les opérations de partitionnement sur %1. - + Cleared all mounts for %1 Tous les montages ont été retirés pour %1 @@ -554,27 +577,27 @@ L'installateur se fermera et les changements seront perdus. Ta&ille : - + En&crypt Chi&ffrer - + Logical Logique - + Primary Primaire - + GPT GPT - + Mountpoint already in use. Please select another one. Le point de montage est déjà utilisé. Merci d'en sélectionner un autre. @@ -776,7 +799,7 @@ L'installateur se fermera et les changements seront perdus. DummyCppJob - + Dummy C++ Job Tâche C++ fictive @@ -834,7 +857,7 @@ L'installateur se fermera et les changements seront perdus. Drapeaux: - + Mountpoint already in use. Please select another one. Le point de montage est déjà utilisé. Merci d'en sélectionner un autre. @@ -1003,12 +1026,12 @@ L'installateur se fermera et les changements seront perdus. KeyboardPage - + Set keyboard model to %1.<br/> Configurer le modèle de clavier à %1.<br/> - + Set keyboard layout to %1/%2. Configurer la disposition clavier à %1/%2. @@ -1052,64 +1075,64 @@ L'installateur se fermera et les changements seront perdus. Formulaire - + I accept the terms and conditions above. J'accepte les termes et conditions ci-dessus. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Accord de licence</h1>Cette procédure de configuration va installer des logiciels propriétaire sujet à des termes de licence. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Merci de relire les Contrats de Licence Utilisateur Final (CLUF/EULA) ci-dessus.<br/>Si vous n'acceptez pas les termes, la procédure ne peut pas continuer. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Accord de licence</h1>Cette procédure peut installer des logiciels propriétaires qui sont soumis à des termes de licence afin d'ajouter des fonctionnalités et améliorer l'expérience utilisateur. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Merci de relire les Contrats de Licence Utilisateur Final (CLUF/EULA) ci-dessus.<br/>Si vous n'acceptez pas les termes, les logiciels propriétaires ne seront pas installés, et des alternatives open-source seront utilisées à la place. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>Pilote %1</strong><br/>par %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>Pilote graphique %1</strong><br/><font color="Grey">par %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>Module de navigateur %1</strong><br/><font color="Grey">par %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>Codec %1</strong><br/><font color="Grey">par %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>Paquet %1</strong><br/><font color="Grey">par %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">par %2</font> - + <a href="%1">view license agreement</a> <a href="%1">Consulter l'accord de licence</a> @@ -1583,34 +1606,34 @@ L'installateur se fermera et les changements seront perdus. PartitionModel - - + + Free Space Espace libre - - + + New partition Nouvelle partition - + Name Nom - + File System Système de fichiers - + Mount Point Point de montage - + Size Taille @@ -1639,8 +1662,8 @@ L'installateur se fermera et les changements seront perdus. - &Create - &Créer + Cre&ate + Cré&er @@ -1658,17 +1681,17 @@ L'installateur se fermera et les changements seront perdus. Installer le chargeur de démarrage sur: - + Are you sure you want to create a new partition table on %1? Êtes-vous sûr de vouloir créer une nouvelle table de partitionnement sur %1 ? - + Can not create new partition Impossible de créer une nouvelle partition - + 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. La table de partition sur %1 contient déjà %2 partitions primaires, et aucune supplémentaire ne peut être ajoutée. Veuillez supprimer une partition primaire et créer une partition étendue à la place. @@ -1676,97 +1699,97 @@ L'installateur se fermera et les changements seront perdus. PartitionViewStep - + Gathering system information... Récupération des informations système… - + Partitions Partitions - + Install %1 <strong>alongside</strong> another operating system. Installer %1 <strong>à côté</strong>d'un autre système d'exploitation. - + <strong>Erase</strong> disk and install %1. <strong>Effacer</strong> le disque et installer %1. - + <strong>Replace</strong> a partition with %1. <strong>Remplacer</strong> une partition avec %1. - + <strong>Manual</strong> partitioning. Partitionnement <strong>manuel</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installer %1 <strong>à côté</strong> d'un autre système d'exploitation sur le disque <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Effacer</strong> le disque <strong>%2</strong> (%3) et installer %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Remplacer</strong> une partition sur le disque <strong>%2</strong> (%3) avec %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Partitionnement <strong>manuel</strong> sur le disque <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disque <strong>%1</strong> (%2) - + Current: Actuel : - + After: Après : - + No EFI system partition configured Aucune partition système EFI configurée - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Une partition système EFI est nécessaire pour démarrer %1.<br/><br/>Pour configurer une partition système EFI, revenez en arrière et sélectionnez ou créez une partition FAT32 avec le drapeau <strong>esp</strong> activé et le point de montage <strong>%2</strong>.<br/><br/>Vous pouvez continuer sans configurer de partition système EFI mais votre système pourrait refuser de démarrer. - + EFI system partition flag not set Drapeau de partition système EFI non configuré - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Une partition système EFI est nécessaire pour démarrer %1.<br/><br/>Une partition a été configurée avec le point de montage <strong>%2</strong> mais son drapeau <strong>esp</strong> n'est pas activé.<br/>Pour activer le drapeau, revenez en arrière et éditez la partition.<br/><br/>Vous pouvez continuer sans activer le drapeau mais votre système pourrait refuser de démarrer. - + Boot partition not encrypted Partition d'amorçage non chiffrée. - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Une partition d'amorçage distincte a été configurée avec une partition racine chiffrée, mais la partition d'amorçage n'est pas chiffrée. <br/> <br/> Il y a des problèmes de sécurité avec ce type d'installation, car des fichiers système importants sont conservés sur une partition non chiffrée <br/> Vous pouvez continuer si vous le souhaitez, mais le déverrouillage du système de fichiers se produira plus tard au démarrage du système. <br/> Pour chiffrer la partition d'amorçage, revenez en arrière et recréez-la, en sélectionnant <strong> Chiffrer </ strong> dans la partition Fenêtre de création. @@ -1913,22 +1936,22 @@ Sortie Défaut - + unknown inconnu - + extended étendu - + unformatted non formaté - + swap swap @@ -2110,29 +2133,29 @@ Sortie SetHostNameJob - + Set hostname %1 Définir le nom d'hôte %1 - + Set hostname <strong>%1</strong>. Configurer le nom d'hôte <strong>%1</strong>. - + Setting hostname %1. Configuration du nom d'hôte %1. - - + + Internal Error Erreur interne - - + + Cannot write hostname to target system Impossible d'écrire le nom d'hôte sur le système cible. @@ -2584,7 +2607,7 @@ Sortie WelcomeViewStep - + Welcome Bienvenue diff --git a/lang/calamares_fr_CH.ts b/lang/calamares_fr_CH.ts index 3b220a4e9..23e755b8b 100644 --- a/lang/calamares_fr_CH.ts +++ b/lang/calamares_fr_CH.ts @@ -45,6 +45,14 @@ + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install @@ -105,7 +113,7 @@ Calamares::JobThread - + Done @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -159,96 +167,111 @@ Calamares::ViewManager - + &Back - - + + &Next - - + + &Cancel - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No - + &Close - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -435,17 +458,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -553,27 +576,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -775,7 +798,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -833,7 +856,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1002,12 +1025,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1051,64 +1074,64 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1582,34 +1605,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1638,7 +1661,7 @@ The installer will quit and all changes will be lost. - &Create + Cre&ate @@ -1657,17 +1680,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1675,97 +1698,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1908,22 +1931,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2105,29 +2128,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2579,7 +2602,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_gl.ts b/lang/calamares_gl.ts index 9a2e365c0..2c11acc24 100644 --- a/lang/calamares_gl.ts +++ b/lang/calamares_gl.ts @@ -46,6 +46,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -98,7 +106,7 @@ Calamares::ExecutionViewStep - + Install Instalar @@ -106,7 +114,7 @@ Calamares::JobThread - + Done Feito @@ -114,12 +122,12 @@ Calamares::ProcessJob - + Run command %1 %2 Executar a orde %1 %2 - + Running command %1 %2 Executando a orde %1 %2 @@ -127,32 +135,32 @@ Calamares::PythonJob - + Running %1 operation. Excutando a operación %1. - + Bad working directory path A ruta ó directorio de traballo é errónea - + Working directory %1 for python job %2 is not readable. O directorio de traballo %1 para o traballo de python %2 non é lexible - + Bad main script file Ficheiro de script principal erróneo - + Main script file %1 for python job %2 is not readable. O ficheiro principal de script %1 para a execución de python %2 non é lexible. - + Boost.Python error in job "%1". Boost.Python tivo un erro na tarefa "%1". @@ -160,97 +168,112 @@ Calamares::ViewManager - + &Back &Atrás - - + + &Next &Seguinte - - + + &Cancel &Cancelar - - + + Cancel installation without changing the system. Cancela-la instalación sen cambia-lo sistema - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Cancelar a instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Desexa realmente cancelar o proceso actual de instalación? O instalador pecharase e perderanse todos os cambios. - + &Yes &Si - + &No &Non - + &Close &Pechar - + Continue with setup? Continuar coa posta en marcha? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> O %1 instalador está a piques de realizar cambios no seu disco para instalar %2.<br/><strong>Estes cambios non poderán desfacerse.</strong> - + &Install now &Instalar agora - + Go &back Ir &atrás - + &Done &Feito - + The installation is complete. Close the installer. Completouse a instalacion. Peche o instalador - + Error Erro - + Installation Failed Erro na instalación @@ -437,17 +460,17 @@ O instalador pecharase e perderanse todos os cambios. ClearMountsJob - + Clear mounts for partitioning operations on %1 Desmontar os volumes para levar a cabo as operacións de particionado en %1 - + Clearing mounts for partitioning operations on %1. Desmontando os volumes para levar a cabo as operacións de particionado en %1. - + Cleared all mounts for %1 Os volumes para %1 foron desmontados @@ -555,27 +578,27 @@ O instalador pecharase e perderanse todos os cambios. &Tamaño: - + En&crypt Encriptar - + Logical Lóxica - + Primary Primaria - + GPT GPT - + Mountpoint already in use. Please select another one. Punto de montaxe xa en uso. Faga o favor de escoller outro @@ -777,7 +800,7 @@ O instalador pecharase e perderanse todos os cambios. DummyCppJob - + Dummy C++ Job @@ -835,7 +858,7 @@ O instalador pecharase e perderanse todos os cambios. Bandeiras: - + Mountpoint already in use. Please select another one. Punto de montaxe xa en uso. Faga o favor de escoller outro. @@ -1004,12 +1027,12 @@ O instalador pecharase e perderanse todos os cambios. KeyboardPage - + Set keyboard model to %1.<br/> Seleccionado modelo de teclado a %1.<br/> - + Set keyboard layout to %1/%2. Seleccionada a disposición do teclado a %1/%2. @@ -1053,64 +1076,64 @@ O instalador pecharase e perderanse todos os cambios. Formulario - + I accept the terms and conditions above. Acepto os termos e condicións anteriores. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Acordo de licencia</h1>Este proceso de configuración instalará programas privativos suxeito a termos de licencia. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Faga o favor de revisalos Acordos de Licencia de Usuario Final (ALUF) seguintes. <br/>De non estar dacordo cos termos non se pode seguir co proceso de configuración. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Acordo de licencia</h1>Este proceso de configuración pode instalar programas privativos suxeito a termos de licencia para fornecer características adicionaís e mellorala experiencia do usuario. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Faga o favor de revisalos Acordos de Licencia de Usuario Final (ALUF) seguintes. <br/>De non estar dacordo cos termos non se instalará o programa privativo e no seu lugar usaranse alternativas de código aberto. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>dispositivo %1</strong><br/>por %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1584,34 +1607,34 @@ O instalador pecharase e perderanse todos os cambios. PartitionModel - - + + Free Space - - + + New partition - + Name Nome - + File System - + Mount Point - + Size @@ -1640,7 +1663,7 @@ O instalador pecharase e perderanse todos os cambios. - &Create + Cre&ate @@ -1659,17 +1682,17 @@ O instalador pecharase e perderanse todos os cambios. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1677,97 +1700,97 @@ O instalador pecharase e perderanse todos os cambios. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: Actual: - + After: Despois: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1910,22 +1933,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2107,29 +2130,29 @@ Output: SetHostNameJob - + Set hostname %1 Hostname: %1 - + Set hostname <strong>%1</strong>. Configurar hostname <strong>%1</strong>. - + Setting hostname %1. Configurando hostname %1. - - + + Internal Error Erro interno - - + + Cannot write hostname to target system Non foi posíbel escreber o nome do servidor do sistema obxectivo @@ -2581,7 +2604,7 @@ Output: WelcomeViewStep - + Welcome Benvido diff --git a/lang/calamares_gu.ts b/lang/calamares_gu.ts index f5fe5932d..82cc90e63 100644 --- a/lang/calamares_gu.ts +++ b/lang/calamares_gu.ts @@ -45,6 +45,14 @@ + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install @@ -105,7 +113,7 @@ Calamares::JobThread - + Done @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -159,96 +167,111 @@ Calamares::ViewManager - + &Back - - + + &Next - - + + &Cancel - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No - + &Close - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -435,17 +458,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -553,27 +576,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -775,7 +798,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -833,7 +856,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1002,12 +1025,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1051,64 +1074,64 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1582,34 +1605,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1638,7 +1661,7 @@ The installer will quit and all changes will be lost. - &Create + Cre&ate @@ -1657,17 +1680,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1675,97 +1698,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1908,22 +1931,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2105,29 +2128,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2579,7 +2602,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_he.ts b/lang/calamares_he.ts index da62f86d6..dd9ae1af8 100644 --- a/lang/calamares_he.ts +++ b/lang/calamares_he.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install התקן @@ -105,7 +113,7 @@ Calamares::JobThread - + Done בוצע @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 הרץ פקודה %1 %2 - + Running command %1 %2 מריץ פקודה %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. מריץ פעולה %1. - + Bad working directory path נתיב תיקיית עבודה לא תקין - + Working directory %1 for python job %2 is not readable. תיקיית עבודה %1 עבור משימת python %2 לא קריאה. - + Bad main script file קובץ תסריט הרצה ראשי לא תקין - + Main script file %1 for python job %2 is not readable. קובץ תסריט הרצה ראשי %1 עבור משימת python %2 לא קריא. - + Boost.Python error in job "%1". שגיאת Boost.Python במשימה "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &קודם - - + + &Next &הבא - - + + &Cancel &בטל - - + + Cancel installation without changing the system. בטל התקנה ללא ביצוע שינוי במערכת. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? בטל את ההתקנה? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. האם אתה בטוח שברצונך לבטל את תהליך ההתקנה? אשף ההתקנה ייסגר וכל השינויים יאבדו. - + &Yes &כן - + &No &לא - + &Close &סגור - + Continue with setup? המשך עם הליך ההתקנה? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> אשף ההתקנה של %1 הולך לבצע שינויים בכונן שלך לטובת התקנת %2.<br/><strong>לא תוכל לבטל את השינויים הללו.</strong> - + &Install now &התקן כעת - + Go &back &אחורה - + &Done &בוצע - + The installation is complete. Close the installer. תהליך ההתקנה הושלם. אנא סגור את אשף ההתקנה. - + Error שגיאה - + Installation Failed ההתקנה נכשלה @@ -436,17 +459,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 מחק נקודות עיגון עבור ביצוע פעולות של הגדרות מחיצה על %1. - + Clearing mounts for partitioning operations on %1. מבצע מחיקה של נקודות עיגון עבור ביצוע פעולות של הגדרות מחיצה על %1. - + Cleared all mounts for %1 בוצעה מחיקה עבור כל נקודות העיגון על %1. @@ -554,27 +577,27 @@ The installer will quit and all changes will be lost. גו&דל: - + En&crypt ה&צפן - + Logical לוגי - + Primary ראשי - + GPT GPT - + Mountpoint already in use. Please select another one. נקודת העיגון בשימוש. אנא בחר נקודת עיגון אחרת. @@ -776,7 +799,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job משימת דמה של C++ @@ -834,7 +857,7 @@ The installer will quit and all changes will be lost. סימונים: - + Mountpoint already in use. Please select another one. נקודת העיגון בשימוש. אנא בחר נקודת עיגון אחרת. @@ -1003,12 +1026,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> הגדר את דגם המקלדת ל %1.<br/> - + Set keyboard layout to %1/%2. הגדר את פריסת לוח המקשים ל %1/%2. @@ -1052,64 +1075,64 @@ The installer will quit and all changes will be lost. Form - + I accept the terms and conditions above. אני מאשר את התנאים וההתניות מעלה. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>הסכם רישיון</h1>אשף התקנה זה יבצע התקנה של תוכנות קנייניות אשר כפופות לתנאי רישיון. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. אנא סקור את הסכם משתמש הקצה (EULA) מעלה.<br/> במידה ואינך מסכים עם התנאים, תהליך ההתקנה יופסק. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>הסכם רישיון</h1>אשף התקנה זה יכול לבצע התקנה של תוכנות קנייניות אשר כפופות לתנאי רישיון בכדי לספק תכולות נוספות ולשדרג את חווית המשתמש. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. אנא סקור את הסכם משתמש הקצה (EULA) מעלה.<br/> במידה ואינך מסכים עם התנאים, תוכנות קנייניות לא יותקנו, ותוכנות חליפיות מבוססות קוד פתוח יותקנו במקומן. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>התקן %1</strong><br/> מאת %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>התקן תצוגה %1</strong><br/><font color="Grey"> מאת %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>תוסף לדפדפן %1</strong><br/><font color="Grey"> מאת %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>קידוד %1</strong><br/><font color="Grey"> מאת %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>חבילה %1</strong><br/><font color="Grey"> מאת %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">מאת %2</font> - + <a href="%1">view license agreement</a> <a href="%1">צפה בהסכם הרשיון</a> @@ -1583,34 +1606,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space זכרון פנוי - - + + New partition מחיצה חדשה - + Name שם - + File System מערכת קבצים - + Mount Point נקודת עיגון - + Size גודל @@ -1639,8 +1662,8 @@ The installer will quit and all changes will be lost. - &Create - &צור + Cre&ate + @@ -1658,17 +1681,17 @@ The installer will quit and all changes will be lost. התקן &מנהל אתחול מערכת על: - + Are you sure you want to create a new partition table on %1? האם אתה בטוח שברצונך ליצור טבלת מחיצות חדשה על %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... מלקט מידע אודות המערכת... - + Partitions מחיצות - + Install %1 <strong>alongside</strong> another operating system. התקן את %1 <strong>לצד</strong> מערכת הפעלה אחרת. - + <strong>Erase</strong> disk and install %1. <strong>מחק</strong> את הכונן והתקן את %1. - + <strong>Replace</strong> a partition with %1. <strong>החלף</strong> מחיצה עם %1. - + <strong>Manual</strong> partitioning. מגדיר מחיצות באופן <strong>ידני</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). התקן את %1 <strong>לצד</strong> מערכת הפעלה אחרת על כונן <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>מחק</strong> כונן <strong>%2</strong> (%3) והתקן %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>החלף</strong> מחיצה על כונן <strong>%2</strong> (%3) עם %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). מגדיר מחיצות באופן <strong>ידני</strong> על כונן <strong>%1</strong>(%2). - + Disk <strong>%1</strong> (%2) כונן <strong>%1</strong> (%2) - + Current: נוכחי: - + After: לאחר: - + No EFI system partition configured לא הוגדרה מחיצת מערכת EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. מחיצת מערכת EFI נדרשת בשביל להפעיל את %1.<br/><br/> בכדי להגדיר מחיצת מערכת EFI, חזור ובחר או צור מערכת קבצים מסוג FAT32 עם סימון <strong>esp</strong> מופעל ונקודת עיגון <strong>%2</strong>.<br/><br/> ניתן להמשיך ללא הגדרת מחיצת מערכת EFI אך המערכת יכולה להיכשל בטעינה. - + EFI system partition flag not set סימון מחיצת מערכת EFI לא מוגדר - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. מחיצת מערכת EFI נדרשת להפעלת %1.<br/><br/> מחיצה הוגדרה עם נקודת עיגון <strong>%2</strong> אך סימון <strong>esp</strong> לא הוגדר.<br/> בכדי לסמן את המחיצה, חזור וערוך את המחיצה.<br/><br/> תוכל להמשיך ללא ביצוע הסימון אך המערכת יכולה להיכשל בטעינה. - + Boot partition not encrypted מחיצת טעינת המערכת Boot לא מוצפנת. - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. מחיצת טעינה, boot, נפרדת הוגדרה יחד עם מחיצת מערכת ההפעלה, root, מוצפנת, אך מחיצת הטעינה לא הוצפנה.<br/><br/> ישנן השלכות בטיחותיות עם התצורה שהוגדרה, מכיוון שקבצי מערכת חשובים נשמרים על מחיצה לא מוצפנת.<br/>תוכל להמשיך אם תרצה, אך שחרור מערכת הקבצים יתרחש מאוחר יותר כחלק מטעינת המערכת.<br/>בכדי להצפין את מחיצת הטעינה, חזור וצור אותה מחדש, על ידי בחירה ב <strong>הצפן</strong> בחלונית יצירת המחיצה. @@ -1909,22 +1932,22 @@ Output: ברירת מחדל - + unknown לא מוכר/ת - + extended מורחב/ת - + unformatted לא מאותחל/ת - + swap דפדוף, swap @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 הגדר שם עמדה %1 - + Set hostname <strong>%1</strong>. הגדר שם עמדה <strong>%1</strong>. - + Setting hostname %1. מגדיר את שם העמדה %1. - - + + Internal Error שגיאה פנימית - - + + Cannot write hostname to target system נכשלה כתיבת שם העמדה למערכת המטרה @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome ברוכים הבאים diff --git a/lang/calamares_hi.ts b/lang/calamares_hi.ts index eab89c1f4..c1883707e 100644 --- a/lang/calamares_hi.ts +++ b/lang/calamares_hi.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install इंस्टॉल करें @@ -105,7 +113,7 @@ Calamares::JobThread - + Done हो गया @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 कमांड %1%2 चलाएँ - + Running command %1 %2 कमांड %1%2 चल रही हैं @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. %1 चल रहा है। - + Bad working directory path कार्यरत फोल्डर का पथ गलत है - + Working directory %1 for python job %2 is not readable. Python job %2 के लिए कार्यरत डायरेक्टरी %1 read करने योग्य नहीं है। - + Bad main script file मुख्य script फ़ाइल गलत है - + Main script file %1 for python job %2 is not readable. Python job %2 के लिए मुख्य script फ़ाइल %1 read करने योग्य नहीं है। - + Boost.Python error in job "%1". Job "%1" में Boost.Python error। @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &वापस - - + + &Next &आगे - - + + &Cancel &रद्द करें - - + + Cancel installation without changing the system. सिस्टम में बदलाव किये बिना इंस्टॉल रद्द करें। - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? इंस्टॉल रद्द करें? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. क्या आप वाकई वर्तमान इंस्टॉल प्रक्रिया रद्द करना चाहते हैं? इंस्टॉलर बंद हो जाएगा व सभी बदलाव नष्ट। - + &Yes &हाँ - + &No &नहीं - + &Close &बंद करें - + Continue with setup? सेटअप करना जारी रखें? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %2 इंस्टॉल करने के लिए %1 इंस्टॉलर आपकी डिस्क में बदलाव करने वाला है।<br/><strong>आप इन बदलावों को पूर्ववत नहीं कर पाएंगे।</strong> - + &Install now अभी &इंस्टॉल करें - + Go &back &वापस जाएँ - + &Done हो &गया - + The installation is complete. Close the installer. इंस्टॉल पूर्ण हुआ।अब इंस्टॉलर को बंद करें। - + Error Error - + Installation Failed इंस्टॉल विफल रहा। @@ -436,17 +459,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 %1 पर विभाजन कार्य हेतु mount हटाएँ - + Clearing mounts for partitioning operations on %1. %1 पर विभाजन कार्य हेतु mount हटाएँ जा रहे हैं। - + Cleared all mounts for %1 %1 के लिए सभी mount हटा दिए गए @@ -554,27 +577,27 @@ The installer will quit and all changes will be lost. - + En&crypt En&crypt - + Logical - + Primary मुख्य - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -776,7 +799,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -834,7 +857,7 @@ The installer will quit and all changes will be lost. Flags: - + Mountpoint already in use. Please select another one. @@ -1003,12 +1026,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1052,64 +1075,64 @@ The installer will quit and all changes will be lost. रूप - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1583,34 +1606,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1639,7 +1662,7 @@ The installer will quit and all changes will be lost. - &Create + Cre&ate @@ -1658,17 +1681,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... सिस्टम की जानकारी प्राप्त की जा रही है... - + Partitions विभाजन - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: मौजूदा : - + After: बाद में: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1909,22 +1932,22 @@ Output: - + unknown - + extended विस्तृत - + unformatted फॉर्मेट नहीं हो रखा है - + swap @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome स्वागतं diff --git a/lang/calamares_hr.ts b/lang/calamares_hr.ts index 6fc3c0645..c1312d783 100644 --- a/lang/calamares_hr.ts +++ b/lang/calamares_hr.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + Prazna stranica + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Instaliraj @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Gotovo @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Izvrši naredbu %1 %2 - + Running command %1 %2 Izvršavam naredbu %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Izvodim %1 operaciju. - + Bad working directory path Krivi put do radnog direktorija - + Working directory %1 for python job %2 is not readable. Radni direktorij %1 za python zadatak %2 nije čitljiv. - + Bad main script file Kriva glavna datoteka skripte - + Main script file %1 for python job %2 is not readable. Glavna skriptna datoteka %1 za python zadatak %2 nije čitljiva. - + Boost.Python error in job "%1". Boost.Python greška u zadatku "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Natrag - - + + &Next &Sljedeće - - + + &Cancel &Odustani - - + + Cancel installation without changing the system. Odustanite od instalacije bez promjena na sustavu. - + + Calamares Initialization Failed + Inicijalizacija Calamares-a nije uspjela + + + + %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. + %1 se ne može se instalirati. Calamares nije mogao učitati sve konfigurirane module. Ovo je problem s načinom na koji se Calamares koristi u distribuciji. + + + + <br/>The following modules could not be loaded: + <br/>Sljedeći moduli se nisu mogli učitati: + + + &Install &Instaliraj - + Cancel installation? Prekinuti instalaciju? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Stvarno želite prekinuti instalacijski proces? Instalacijski program će izaći i sve promjene će biti izgubljene. - + &Yes &Da - + &No &Ne - + &Close &Zatvori - + Continue with setup? Nastaviti s postavljanjem? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 instalacijski program će napraviti promjene na disku kako bi instalirao %2.<br/><strong>Nećete moći vratiti te promjene.</strong> - + &Install now &Instaliraj sada - + Go &back Idi &natrag - + &Done &Gotovo - + The installation is complete. Close the installer. Instalacija je završena. Zatvorite instalacijski program. - + Error Greška - + Installation Failed Instalacija nije uspjela @@ -436,17 +459,17 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. ClearMountsJob - + Clear mounts for partitioning operations on %1 Ukloni montiranja za operacije s particijama na %1 - + Clearing mounts for partitioning operations on %1. Uklanjam montiranja za operacija s particijama na %1. - + Cleared all mounts for %1 Uklonjena sva montiranja za %1 @@ -554,27 +577,27 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Ve&ličina: - + En&crypt Ši&friraj - + Logical Logično - + Primary Primarno - + GPT GPT - + Mountpoint already in use. Please select another one. Točka montiranja se već koristi. Odaberite drugu. @@ -776,7 +799,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. DummyCppJob - + Dummy C++ Job Lažni C++ posao @@ -834,7 +857,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Oznake: - + Mountpoint already in use. Please select another one. Točka montiranja se već koristi. Odaberite drugu. @@ -1003,12 +1026,12 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. KeyboardPage - + Set keyboard model to %1.<br/> Postavi model tipkovnice na %1.<br/> - + Set keyboard layout to %1/%2. Postavi raspored tipkovnice na %1%2. @@ -1052,64 +1075,64 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Oblik - + I accept the terms and conditions above. Prihvaćam gore navedene uvjete i odredbe. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licencni ugovor</h1>Instalacijska procedura će instalirati vlasnički program koji podliježe uvjetima licenciranja. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Molimo vas da pogledate gore navedene End User License Agreements (EULAs).<br/>Ako se ne slažete s navedenim uvjetima, instalacijska procedura se ne može nastaviti. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licencni ugovor</h1>Instalacijska procedura može instalirati vlasnički program, koji podliježe uvjetima licenciranja, kako bi pružio dodatne mogućnosti i poboljšao korisničko iskustvo. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Molimo vas da pogledate gore navedene End User License Agreements (EULAs).<br/>Ako se ne slažete s navedenim uvjetima, vlasnički program se ne će instalirati te će se umjesto toga koristiti program otvorenog koda. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 upravljački program</strong><br/>by %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 grafički upravljački program</strong><br/><font color="Grey">od %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 dodatak preglednika</strong><br/><font color="Grey">od %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 kodek</strong><br/><font color="Grey">od %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 paket</strong><br/><font color="Grey">od %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">od %2</font> - + <a href="%1">view license agreement</a> <a href="%1">pogledaj licencni ugovor</a> @@ -1583,34 +1606,34 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. PartitionModel - - + + Free Space Slobodni prostor - - + + New partition Nova particija - + Name Ime - + File System Datotečni sustav - + Mount Point Točka montiranja - + Size Veličina @@ -1639,8 +1662,8 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. - &Create - &Stvori + Cre&ate + Kre&iraj @@ -1658,17 +1681,17 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Instaliraj boot &učitavač na: - + Are you sure you want to create a new partition table on %1? Jeste li sigurni da želite stvoriti novu particijsku tablicu na %1? - + Can not create new partition Ne mogu stvoriti novu particiju - + 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. Particijska tablica %1 već ima %2 primarne particije i nove se više ne mogu dodati. Molimo vas da uklonite jednu primarnu particiju i umjesto nje dodate proširenu particiju. @@ -1676,97 +1699,97 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. PartitionViewStep - + Gathering system information... Skupljanje informacija o sustavu... - + Partitions Particije - + Install %1 <strong>alongside</strong> another operating system. Instaliraj %1 <strong>uz postojeći</strong> operacijski sustav. - + <strong>Erase</strong> disk and install %1. <strong>Obriši</strong> disk i instaliraj %1. - + <strong>Replace</strong> a partition with %1. <strong>Zamijeni</strong> particiju s %1. - + <strong>Manual</strong> partitioning. <strong>Ručno</strong> particioniranje. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instaliraj %1 <strong>uz postojeći</strong> operacijski sustav na disku <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Obriši</strong> disk <strong>%2</strong> (%3) i instaliraj %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Zamijeni</strong> particiju na disku <strong>%2</strong> (%3) s %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ručno</strong> particioniram disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Trenutni: - + After: Poslije: - + No EFI system partition configured EFI particija nije konfigurirana - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. EFI particija je potrebna za pokretanje %1.<br/><br/>Da bi ste konfigurirali EFI particiju, idite natrag i odaberite ili stvorite FAT32 datotečni sustav s omogućenom <strong>esp</strong> oznakom i točkom montiranja <strong>%2</strong>.<br/><br/>Možete nastaviti bez postavljanja EFI particije, ali vaš sustav se možda neće moći pokrenuti. - + EFI system partition flag not set Oznaka EFI particije nije postavljena - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. EFI particija je potrebna za pokretanje %1.<br><br/>Particija je konfigurirana s točkom montiranja <strong>%2</strong> ali njezina <strong>esp</strong> oznaka nije postavljena.<br/>Za postavljanje oznake, vratite se i uredite postavke particije.<br/><br/>Možete nastaviti bez postavljanja oznake, ali vaš sustav se možda neće moći pokrenuti. - + Boot partition not encrypted Boot particija nije kriptirana - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Odvojena boot particija je postavljena zajedno s kriptiranom root particijom, ali boot particija nije kriptirana.<br/><br/>Zabrinuti smo za vašu sigurnost jer su važne datoteke sustava na nekriptiranoj particiji.<br/>Možete nastaviti ako želite, ali datotečni sustav će se otključati kasnije tijekom pokretanja sustava.<br/>Da bi ste kriptirali boot particiju, vratite se natrag i napravite ju, odabirom opcije <strong>Kriptiraj</strong> u prozoru za stvaranje prarticije. @@ -1912,22 +1935,22 @@ Izlaz: Zadano - + unknown nepoznato - + extended prošireno - + unformatted nije formatirano - + swap swap @@ -2109,29 +2132,29 @@ Izlaz: SetHostNameJob - + Set hostname %1 Postavi ime računala %1 - + Set hostname <strong>%1</strong>. Postavi ime računala <strong>%1</strong>. - + Setting hostname %1. Postavljam ime računala %1. - - + + Internal Error Unutarnja pogreška - - + + Cannot write hostname to target system Ne mogu zapisati ime računala na traženi sustav. @@ -2583,7 +2606,7 @@ Izlaz: WelcomeViewStep - + Welcome Dobrodošli diff --git a/lang/calamares_hu.ts b/lang/calamares_hu.ts index 6def290b1..20ffbb815 100644 --- a/lang/calamares_hu.ts +++ b/lang/calamares_hu.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Telepít @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Kész @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Parancs futtatása %1 %2 - + Running command %1 %2 Parancs futtatása %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Futó %1 műveletek. - + Bad working directory path Rossz munkakönyvtár útvonal - + Working directory %1 for python job %2 is not readable. Munkakönyvtár %1 a python folyamathoz %2 nem olvasható. - + Bad main script file Rossz alap script fájl - + Main script file %1 for python job %2 is not readable. Alap script fájl %1 a python folyamathoz %2 nem olvasható. - + Boost.Python error in job "%1". Boost. Python hiba ebben a folyamatban "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Vissza - - + + &Next &Következő - - + + &Cancel &Mégse - - + + Cancel installation without changing the system. Kilépés a telepítőből a rendszer megváltoztatása nélkül. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Abbahagyod a telepítést? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Biztos abba szeretnéd hagyni a telepítést? Minden változtatás elveszik, ha kilépsz a telepítőből. - + &Yes &Igen - + &No @Nem - + &Close &Bezár - + Continue with setup? Folytatod a telepítéssel? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> A %1 telepítő változtatásokat fog elvégezni, hogy telepítse a következőt: %2.<br/><strong>A változtatások visszavonhatatlanok lesznek.</strong> - + &Install now &Telepítés most - + Go &back Menj &vissza - + &Done &Befejez - + The installation is complete. Close the installer. A telepítés befejeződött, Bezárhatod a telepítőt. - + Error Hiba - + Installation Failed Telepítés nem sikerült @@ -437,17 +460,17 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l ClearMountsJob - + Clear mounts for partitioning operations on %1 %1 csatolás törlése partícionáláshoz - + Clearing mounts for partitioning operations on %1. %1 csatolás törlése partícionáláshoz - + Cleared all mounts for %1 %1 minden csatolása törölve @@ -555,27 +578,27 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Mé&ret: - + En&crypt Titkosítás - + Logical Logikai - + Primary Elsődleges - + GPT GPT - + Mountpoint already in use. Please select another one. A csatolási pont már használatban van. Kérlek, válassz másikat. @@ -777,7 +800,7 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l DummyCppJob - + Dummy C++ Job Teszt C++ job @@ -835,7 +858,7 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Zászlók: - + Mountpoint already in use. Please select another one. A csatolási pont már használatban van. Kérlek, válassz másikat. @@ -1004,12 +1027,12 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l KeyboardPage - + Set keyboard model to %1.<br/> Billentyűzet típus beállítása %1.<br/> - + Set keyboard layout to %1/%2. Billentyűzet kiosztás beállítása %1/%2. @@ -1053,64 +1076,64 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Adatlap - + I accept the terms and conditions above. Elfogadom a fentebbi felhasználási feltételeket. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licensz</h1>A telepítő szabadalmaztatott szoftvert fog telepíteni. Információ a licenszben. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Kérlek, olvasd el a fenti végfelhasználói licenszfeltételeket (EULAs)<br/>Ha nem értesz egyet a feltételekkel, akkor a telepítés nem folytatódik. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licensz</h1>A telepítő szabadalmaztatott szoftvert fog telepíteni. Információ a licenszben. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Kérlek, olvasd el a fenti végfelhasználói licenszfeltételeket (EULAs)<br/>Ha nem értesz egyet a feltételekkel, akkor a szabadalmaztatott program telepítése nem folytatódik és nyílt forrású program lesz telepítve helyette. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/> %2 -ból/ -ből - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 grafikus driver</strong><br/><font color="Grey">%2 -ból/ -ből</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 böngésző plugin</strong><br/><font color="Grey">%2 -ból/ -ből</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 kodek</strong><br/><font color="Grey">%2 -ból/ -ből</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 csomag</strong><br/><font color="Grey" >%2 -ból/ -ből</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">%2 -ból/ -ből</font> - + <a href="%1">view license agreement</a> <a href="%1">a licensz elolvasása</a> @@ -1584,34 +1607,34 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l PartitionModel - - + + Free Space Szabad terület - - + + New partition Új partíció - + Name Név - + File System Fájlrendszer - + Mount Point Csatolási pont - + Size Méret @@ -1640,8 +1663,8 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l - &Create - &Létrehoz + Cre&ate + @@ -1659,17 +1682,17 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l &Rendszerbetöltő telepítése ide: - + Are you sure you want to create a new partition table on %1? Biztos vagy benne, hogy létrehozol egy új partíciós táblát itt %1 ? - + Can not create new partition - + 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. @@ -1677,97 +1700,97 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l PartitionViewStep - + Gathering system information... Rendszerinformációk gyűjtése... - + Partitions Partíciók - + Install %1 <strong>alongside</strong> another operating system. %1 telepítése más operációs rendszer <strong>mellé</strong> . - + <strong>Erase</strong> disk and install %1. <strong>Lemez törlés</strong>és %1 telepítés. - + <strong>Replace</strong> a partition with %1. <strong>A partíció lecserélése</strong> a következővel: %1. - + <strong>Manual</strong> partitioning. <strong>Kézi</strong> partícionálás. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). %1 telepítése más operációs rendszer <strong>mellé</strong> a <strong>%2</strong> (%3) lemezen. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>%2 lemez törlése</strong> (%3) és %1 telepítés. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>A partíció lecserélése</strong> a <strong>%2</strong> lemezen(%3) a következővel: %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Kézi</strong> telepítés a <strong>%1</strong> (%2) lemezen. - + Disk <strong>%1</strong> (%2) Lemez <strong>%1</strong> (%2) - + Current: Aktuális: - + After: Utána: - + No EFI system partition configured Nincs EFI rendszer partíció beállítva - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. EFI rendszerpartíciónak léteznie kell %1 indításához.<br/><br/> Az EFI rendszer beállításához lépj vissza és hozz létre FAT32 fájlrendszert <strong>esp</strong> zászlóval és <strong>%2</strong> csatolási ponttal beállítva.<br/><br/> Folytathatod a telepítést EFI rendszerpartíció létrehozása nélkül is, de lehet, hogy a rendszer nem indul majd. - + EFI system partition flag not set EFI partíciós zászló nincs beállítva - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. EFI rendszerpartíciónak léteznie kell %1 indításához.<br/><br/> A csatolási pont <strong>%2</strong> beállítása sikerült a partíción de a zászló nincs beállítva. A beálíltásához lépj vissza szerkeszteni a partíciót..<br/><br/> Folytathatod a telepítést zászló beállítása nélkül is, de lehet, hogy a rendszer nem indul el majd. - + Boot partition not encrypted Indító partíció nincs titkosítva - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Egy külön indító partíció lett beállítva egy titkosított root partícióval, de az indító partíció nincs titkosítva.br/><br/>Biztonsági aggályok merülnek fel ilyen beállítás mellet, mert fontos fájlok nem titkosított partíción vannak tárolva. <br/>Ha szeretnéd, folytathatod így, de a fájlrendszer zárolása meg fog történni az indítás után. <br/> Az indító partíció titkosításához lépj vissza és az újra létrehozáskor válaszd a <strong>Titkosít</strong> opciót. @@ -1910,22 +1933,22 @@ Output: Alapértelmezett - + unknown ismeretlen - + extended kiterjesztett - + unformatted formázatlan - + swap Swap @@ -2107,29 +2130,29 @@ Output: SetHostNameJob - + Set hostname %1 Hálózati név beállítása a %1 -en - + Set hostname <strong>%1</strong>. Hálózati név beállítása a következőhöz: <strong>%1</strong>. - + Setting hostname %1. Hálózati név beállítása a %1 -hez - - + + Internal Error Belső hiba - - + + Cannot write hostname to target system Nem lehet a hálózati nevet írni a célrendszeren @@ -2582,7 +2605,7 @@ Calamares hiba %1. WelcomeViewStep - + Welcome Üdvözlet diff --git a/lang/calamares_id.ts b/lang/calamares_id.ts index 3e6e991bd..194f9f004 100644 --- a/lang/calamares_id.ts +++ b/lang/calamares_id.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Pasang @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Selesai @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Jalankan perintah %1 %2 - + Running command %1 %2 Menjalankan perintah %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Menjalankan %1 operasi. - + Bad working directory path Jalur lokasi direktori tidak berjalan baik - + Working directory %1 for python job %2 is not readable. Direktori kerja %1 untuk penugasan python %2 tidak dapat dibaca. - + Bad main script file Berkas skrip utama buruk - + Main script file %1 for python job %2 is not readable. Berkas skrip utama %1 untuk penugasan python %2 tidak dapat dibaca. - + Boost.Python error in job "%1". Boost.Python mogok dalam penugasan "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Kembali - - + + &Next &Berikutnya - - + + &Cancel &Batal - - + + Cancel installation without changing the system. Batal pemasangan tanpa mengubah sistem yang ada. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install &Pasang - + Cancel installation? Batalkan pemasangan? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Apakah Anda benar-benar ingin membatalkan proses pemasangan ini? Pemasangan akan ditutup dan semua perubahan akan hilang. - + &Yes &Ya - + &No &Tidak - + &Close &Tutup - + Continue with setup? Lanjutkan dengan setelan ini? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Pemasang %1 akan membuat perubahan ke disk Anda untuk memasang %2.<br/><strong>Anda tidak dapat membatalkan perubahan tersebut.</strong> - + &Install now &Pasang sekarang - + Go &back &Kembali - + &Done &Kelar - + The installation is complete. Close the installer. Pemasangan sudah lengkap. Tutup pemasang. - + Error Kesalahan - + Installation Failed Pemasangan Gagal @@ -438,17 +461,17 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. ClearMountsJob - + Clear mounts for partitioning operations on %1 Lepaskan semua kaitan untuk operasi pemartisian pada %1 - + Clearing mounts for partitioning operations on %1. Melepas semua kaitan untuk operasi pemartisian pada %1 - + Cleared all mounts for %1 Semua kaitan dilepas untuk %1 @@ -556,27 +579,27 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Uku&ran: - + En&crypt Enkripsi - + Logical Logikal - + Primary Utama - + GPT GPT - + Mountpoint already in use. Please select another one. Titik-kait sudah digunakan. Silakan pilih yang lainnya. @@ -778,7 +801,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. DummyCppJob - + Dummy C++ Job Tugas C++ Kosong @@ -836,7 +859,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Bendera: - + Mountpoint already in use. Please select another one. Titik-kait sudah digunakan. Silakan pilih yang lainnya. @@ -1005,12 +1028,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. KeyboardPage - + Set keyboard model to %1.<br/> Setel model papan ketik ke %1.<br/> - + Set keyboard layout to %1/%2. Setel tata letak papan ketik ke %1/%2. @@ -1054,64 +1077,64 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Isian - + I accept the terms and conditions above. Saya menyetujui segala persyaratan di atas. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Persetujuan Lisensi</h1>Prosedur ini akan memasang perangkat lunak berpemilik yang terkait dengan lisensi. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Mohon periksa End User License Agreements (EULA) di atas.<br/>Bila Anda tidak setuju, maka prosedur tidak bisa dilanjutkan. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Persetujuan Lisensi</h1>Prosedur ini dapat memasang perangkat lunak yang terkait dengan lisensi agar bisa menyediakan fitur tambahan dan meningkatkan pengalaman pengguna. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Mohon periksa End User License Agreements(EULA) di atas.<br/>Bila Anda tidak setuju, perangkat lunak proprietary tidak akan dipasang, dan alternatif open source akan dipasang sebagai gantinya - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>by %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 driver grafis</strong><br/><font color="Grey">by %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 plugin peramban</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 paket</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> <a href="%1">baca Persetujuan Lisensi</a> @@ -1585,34 +1608,34 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. PartitionModel - - + + Free Space Ruang Kosong - - + + New partition Partisi baru - + Name Nama - + File System Berkas Sistem - + Mount Point Lokasi Mount - + Size Ukuran @@ -1641,8 +1664,8 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. - &Create - &Buat + Cre&ate + @@ -1660,17 +1683,17 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Pasang boot %loader pada: - + Are you sure you want to create a new partition table on %1? Apakah Anda yakin ingin membuat tabel partisi baru pada %1? - + Can not create new partition Tidak bisa menciptakan partisi baru. - + 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. Partisi tabel pada %1 sudah memiliki %2 partisi primer, dan tidak ada lagi yang bisa ditambahkan. Silakan hapus salah satu partisi primer dan tambahkan sebuah partisi extended, sebagai gantinya. @@ -1678,97 +1701,97 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. PartitionViewStep - + Gathering system information... Mengumpulkan informasi sistem... - + Partitions Paritsi - + Install %1 <strong>alongside</strong> another operating system. Pasang %1 <strong>berdampingan</strong> dengan sistem operasi lain. - + <strong>Erase</strong> disk and install %1. <strong>Hapus</strong> diska dan pasang %1. - + <strong>Replace</strong> a partition with %1. <strong>Ganti</strong> partisi dengan %1. - + <strong>Manual</strong> partitioning. Partisi <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Pasang %1 <strong>berdampingan</strong> dengan sistem operasi lain di disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Hapus</strong> diska <strong>%2</strong> (%3) dan pasang %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Ganti</strong> partisi pada diska <strong>%2</strong> (%3) dengan %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Partisi Manual</strong> pada diska <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Saat ini: - + After: Sesudah: - + No EFI system partition configured Tiada partisi sistem EFI terkonfigurasi - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Sebuah partisi sistem EFI perlu memulai %1.<br/><br/>Untuk mengkonfigurasi sebuah partisi sistem EFI, pergi mundur dan pilih atau ciptakan sebuah filesystem FAT32 dengan bendera <strong>esp</strong> yang difungsikan dan titik kait <strong>%2</strong>.<br/><br/>Kamu bisa melanjutkan tanpa menyetel sebuah partisi sistem EFI tapi sistemmu mungkin gagal memulai. - + EFI system partition flag not set Bendera partisi sistem EFI tidak disetel - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Sebuah partisi sistem EFI perlu memulai %1.<br/><br/>Sebuah partisi telah dikonfigurasi dengan titik kait <strong>%2</strong> tapi bendera <strong>esp</strong> tersebut tidak disetel.<br/>Untuk mengeset bendera, pergi mundur dan editlah partisi.<br/><br/>Kamu bisa melanjutkan tanpa menyetel bendera tapi sistemmu mungkin gagal memulai. - + Boot partition not encrypted Partisi boot tidak dienkripsi - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Sebuah partisi tersendiri telah terset bersama dengan sebuah partisi root terenkripsi, tapi partisi boot tidak terenkripsi.<br/><br/>Ada kekhawatiran keamanan dengan jenis setup ini, karena file sistem penting tetap pada partisi tak terenkripsi.<br/>Kamu bisa melanjutkan jika kamu menghendaki, tapi filesystem unlocking akan terjadi nanti selama memulai sistem.<br/>Untuk mengenkripsi partisi boot, pergi mundur dan menciptakannya ulang, memilih <strong>Encrypt</strong> di jendela penciptaan partisi. @@ -1914,22 +1937,22 @@ Keluaran: Standar - + unknown tidak diketahui: - + extended extended - + unformatted tidak terformat: - + swap swap @@ -2111,29 +2134,29 @@ Keluaran: SetHostNameJob - + Set hostname %1 Pengaturan hostname %1 - + Set hostname <strong>%1</strong>. Atur hostname <strong>%1</strong>. - + Setting hostname %1. Mengatur hostname %1. - - + + Internal Error Kesalahan Internal - - + + Cannot write hostname to target system Tidak dapat menulis nama host untuk sistem target @@ -2585,7 +2608,7 @@ Keluaran: WelcomeViewStep - + Welcome Selamat Datang diff --git a/lang/calamares_is.ts b/lang/calamares_is.ts index 5a377c5f1..e4ae4228e 100644 --- a/lang/calamares_is.ts +++ b/lang/calamares_is.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Setja upp @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Búið @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Keyra skipun %1 %2 - + Running command %1 %2 Keyri skipun %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Keyri %1 aðgerð. - + Bad working directory path Röng slóð á vinnumöppu - + Working directory %1 for python job %2 is not readable. Vinnslumappa %1 fyrir python-verkið %2 er ekki lesanleg. - + Bad main script file Röng aðal-skriftuskrá - + Main script file %1 for python job %2 is not readable. Aðal-skriftuskrá %1 fyrir python-verkið %2 er ekki lesanleg. - + Boost.Python error in job "%1". Boost.Python villa í verkinu "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Til baka - - + + &Next &Næst - - + + &Cancel &Hætta við - - + + Cancel installation without changing the system. Hætta við uppsetningu ánþess að breyta kerfinu. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Hætta við uppsetningu? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Viltu virkilega að hætta við núverandi uppsetningarferli? Uppsetningarforritið mun hætta og allar breytingar tapast. - + &Yes &Já - + &No &Nei - + &Close &Loka - + Continue with setup? Halda áfram með uppsetningu? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 uppsetningarforritið er um það bil að gera breytingar á diskinum til að setja upp %2.<br/><strong>Þú munt ekki geta afturkallað þessar breytingar.</strong> - + &Install now Setja &inn núna - + Go &back Fara til &baka - + &Done &Búið - + The installation is complete. Close the installer. Uppsetning er lokið. Lokaðu uppsetningarforritinu. - + Error Villa - + Installation Failed Uppsetning mistókst @@ -436,17 +459,17 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Hreinsaði alla tengipunkta fyrir %1 @@ -554,27 +577,27 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. St&ærð: - + En&crypt &Dulrita - + Logical Rökleg - + Primary Aðal - + GPT GPT - + Mountpoint already in use. Please select another one. Tengipunktur er þegar í notkun. Veldu einhvern annan. @@ -776,7 +799,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -834,7 +857,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Flögg: - + Mountpoint already in use. Please select another one. Tengipunktur er þegar í notkun. Veldu einhvern annan. @@ -1003,12 +1026,12 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1052,64 +1075,64 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Eyðublað - + I accept the terms and conditions above. Ég samþykki skilyrði leyfissamningsins hér að ofan. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 rekill</strong><br/>hjá %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 pakki</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">frá %2</font> - + <a href="%1">view license agreement</a> <a href="%1">skoða leyfissamning</a> @@ -1583,34 +1606,34 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. PartitionModel - - + + Free Space Laust pláss - - + + New partition Ný disksneið - + Name Heiti - + File System Skráakerfi - + Mount Point Tengipunktur - + Size Stærð @@ -1639,8 +1662,8 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. - &Create - &Búa til + Cre&ate + @@ -1658,17 +1681,17 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Setja upp ræsistjóran á: - + Are you sure you want to create a new partition table on %1? Ertu viss um að þú viljir búa til nýja disksneið á %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. PartitionViewStep - + Gathering system information... Söfnun kerfis upplýsingar... - + Partitions Disksneiðar - + Install %1 <strong>alongside</strong> another operating system. Setja upp %1 <strong>ásamt</strong> ásamt öðru stýrikerfi. - + <strong>Erase</strong> disk and install %1. <strong>Eyða</strong> disk og setja upp %1. - + <strong>Replace</strong> a partition with %1. <strong>Skipta út</strong> disksneið með %1. - + <strong>Manual</strong> partitioning. <strong>Handvirk</strong> disksneiðaskipting. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Uppsetning %1 <strong>með</strong> öðru stýrikerfi á disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Eyða</strong> disk <strong>%2</strong> (%3) og setja upp %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Skipta út</strong> disksneið á diski <strong>%2</strong> (%3) með %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Handvirk</strong> disksneiðaskipting á diski <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Diskur <strong>%1</strong> (%2) - + Current: Núverandi: - + After: Eftir: - + No EFI system partition configured Ekkert EFI kerfisdisksneið stillt - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1909,22 +1932,22 @@ Output: Sjálfgefið - + unknown óþekkt - + extended útvíkkuð - + unformatted ekki forsniðin - + swap swap diskminni @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 Setja vélarheiti %1 - + Set hostname <strong>%1</strong>. Setja vélarheiti <strong>%1</strong>. - + Setting hostname %1. Stilla vélarheiti %1. - - + + Internal Error Innri Villa - - + + Cannot write hostname to target system @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome Velkomin(n) diff --git a/lang/calamares_it_IT.ts b/lang/calamares_it_IT.ts index 453321e44..107597116 100644 --- a/lang/calamares_it_IT.ts +++ b/lang/calamares_it_IT.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Installa @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Fatto @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Esegui il comando %1 %2 - + Running command %1 %2 Comando in esecuzione %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Operazione %1 in esecuzione. - + Bad working directory path Il percorso della cartella corrente non è corretto - + Working directory %1 for python job %2 is not readable. La cartella corrente %1 per l'attività di Python %2 non è accessibile. - + Bad main script file File dello script principale non valido - + Main script file %1 for python job %2 is not readable. Il file principale dello script %1 per l'attività di python %2 non è accessibile. - + Boost.Python error in job "%1". Errore da Boost.Python nell'operazione "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Indietro - - + + &Next &Avanti - - + + &Cancel &Annulla - - + + Cancel installation without changing the system. Annullare l'installazione senza modificare il sistema. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install &Installa - + Cancel installation? Annullare l'installazione? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Si vuole davvero annullare l'installazione in corso? Il programma d'installazione sarà terminato e tutte le modifiche andranno perse. - + &Yes &Si - + &No &No - + &Close &Chiudi - + Continue with setup? Procedere con la configurazione? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Il programma d'nstallazione %1 sta per eseguire delle modifiche al tuo disco per poter installare %2.<br/><strong> Non sarà possibile annullare tali modifiche.</strong> - + &Install now &Installa adesso - + Go &back &Indietro - + &Done &Fatto - + The installation is complete. Close the installer. L'installazione è terminata. Chiudere il programma d'installazione. - + Error Errore - + Installation Failed Installazione non riuscita @@ -436,17 +459,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno ClearMountsJob - + Clear mounts for partitioning operations on %1 Rimuovere i punti di mount per operazioni di partizionamento su %1 - + Clearing mounts for partitioning operations on %1. Rimozione dei punti di mount per le operazioni di partizionamento su %1. - + Cleared all mounts for %1 Rimossi tutti i punti di mount per %1 @@ -554,27 +577,27 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno &Dimensione: - + En&crypt Cr&iptare - + Logical Logica - + Primary Primaria - + GPT GPT - + Mountpoint already in use. Please select another one. Il punto di mount è già in uso. Sceglierne un altro. @@ -776,7 +799,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno DummyCppJob - + Dummy C++ Job Processo Dummy C++ @@ -834,7 +857,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Flag: - + Mountpoint already in use. Please select another one. Il punto di mount è già in uso. Sceglierne un altro. @@ -1003,12 +1026,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno KeyboardPage - + Set keyboard model to %1.<br/> Impostare il modello di tastiera a %1.<br/> - + Set keyboard layout to %1/%2. Impostare il layout della tastiera a %1%2. @@ -1052,64 +1075,64 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Modulo - + I accept the terms and conditions above. Accetto i termini e le condizioni sopra indicati. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Accordo di licenza</h1>Questa procedura di configurazione installerà software proprietario sottoposto a termini di licenza. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Leggere attentamente le licenze d'uso (EULA) riportate sopra.<br/>Se non ne accetti i termini, la procedura di configurazione non può proseguire. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Accordo di licenza</h1>Questa procedura di configurazione installerà software proprietario sottoposto a termini di licenza, per fornire caratteristiche aggiuntive e migliorare l'esperienza utente. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Si prega di leggere attentamente gli accordi di licenza dell'utente finale (EULA) riportati sopra.</br>Se non se ne accettano i termini, il software proprietario non verrà installato e al suo posto saranno utilizzate alternative open source. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>da %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 driver video</strong><br/><font color="Grey">da %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 plugin del browser</strong><br/><font color="Grey">da %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">da %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 pacchetto</strong><br/><font color="Grey">da %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">da %2</font> - + <a href="%1">view license agreement</a> <a href="%1">vedi l'accordo di licenza</a> @@ -1583,34 +1606,34 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno PartitionModel - - + + Free Space Spazio disponibile - - + + New partition Nuova partizione - + Name Nome - + File System File System - + Mount Point Punto di mount - + Size Dimensione @@ -1639,8 +1662,8 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno - &Create - &Creare + Cre&ate + @@ -1658,17 +1681,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Installare il boot &loader su: - + Are you sure you want to create a new partition table on %1? Si è sicuri di voler creare una nuova tabella delle partizioni su %1? - + Can not create new partition Impossibile creare nuova partizione - + 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. La tabella delle partizioni su %1 contiene già %2 partizioni primarie, non se ne possono aggiungere altre. Rimuovere una partizione primaria e aggiungere una partizione estesa invece. @@ -1676,97 +1699,97 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno PartitionViewStep - + Gathering system information... Raccolta delle informazioni di sistema... - + Partitions Partizioni - + Install %1 <strong>alongside</strong> another operating system. Installare %1 <strong>a fianco</strong> di un altro sistema operativo. - + <strong>Erase</strong> disk and install %1. <strong>Cancellare</strong> il disco e installare %1. - + <strong>Replace</strong> a partition with %1. <strong>Sostituire</strong> una partizione con %1. - + <strong>Manual</strong> partitioning. Partizionamento <strong>manuale</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installare %1 <strong>a fianco</strong> di un altro sistema operativo sul disco<strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Cancellare</strong> il disco <strong>%2</strong> (%3) e installa %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Sostituire</strong> una partizione sul disco <strong>%2</strong> (%3) con %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Partizionamento <strong>manuale</strong> sul disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: Corrente: - + After: Dopo: - + No EFI system partition configured Nessuna partizione EFI di sistema è configurata - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Una partizione EFI di sistema è necessaria per avviare %1.<br/><br/>Per configurare una partizione EFI di sistema, tornare indietro e selezionare o creare un filesystem FAT32 con il flag <strong>esp</strong> abilitato e un punto di mount <strong>%2</strong>.<br/><br/>Si può continuare senza configurare una partizione EFI ma il sistema rischia di non avviarsi. - + EFI system partition flag not set Il flag della partizione EFI di sistema non è impostato. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Una partizione EFI di sistema è necessaria per avviare %1.<br/><br/>Una partizione è stata configurata con punto di mount <strong>%2</strong> ma il relativo flag <strong>esp</strong> non è impostato.<br/>Per impostare il flag, tornare indietro e modificare la partizione.<br/><br/>Si può continuare senza impostare il flag ma il sistema rischia di non avviarsi. - + Boot partition not encrypted Partizione di avvio non criptata - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. E' stata configurata una partizione di avvio non criptata assieme ad una partizione root criptata. <br/><br/>Ci sono problemi di sicurezza con questo tipo di configurazione perchè dei file di sistema importanti sono tenuti su una partizione non criptata.<br/>Si può continuare se lo si desidera ma dopo ci sarà lo sblocco del file system, durante l'avvio del sistema.<br/>Per criptare la partizione di avvio, tornare indietro e ricrearla, selezionando <strong>Criptare</strong> nella finestra di creazione della partizione. @@ -1912,22 +1935,22 @@ Output: Default - + unknown sconosciuto - + extended estesa - + unformatted non formattata - + swap swap @@ -2109,29 +2132,29 @@ Output: SetHostNameJob - + Set hostname %1 Impostare hostname %1 - + Set hostname <strong>%1</strong>. Impostare hostname <strong>%1</strong>. - + Setting hostname %1. Impostare hostname %1. - - + + Internal Error Errore interno - - + + Cannot write hostname to target system Impossibile scrivere l'hostname nel sistema di destinazione @@ -2583,7 +2606,7 @@ Output: WelcomeViewStep - + Welcome Benvenuti diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index e28b72dc9..4e14afbfd 100644 --- a/lang/calamares_ja.ts +++ b/lang/calamares_ja.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install インストール @@ -105,7 +113,7 @@ Calamares::JobThread - + Done 完了 @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 コマンド %1 %2 を実行 - + Running command %1 %2 コマンド %1 %2 を実行中 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. %1 操作を実行中。 - + Bad working directory path 不正なワーキングディレクトリパス - + Working directory %1 for python job %2 is not readable. python ジョブ %2 において作業ディレクトリ %1 が読み込めません。 - + Bad main script file 不正なメインスクリプトファイル - + Main script file %1 for python job %2 is not readable. python ジョブ %2 におけるメインスクリプトファイル %1 が読み込めません。 - + Boost.Python error in job "%1". ジョブ "%1" での Boost.Python エラー。 @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back 戻る(&B) - - + + &Next 次へ(&N) - - + + &Cancel 中止(&C) - - + + Cancel installation without changing the system. システムを変更しないでインストールを中止します。 - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install インストール(&I) - + Cancel installation? インストールを中止しますか? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 本当に現在の作業を中止しますか? すべての変更が取り消されます。 - + &Yes はい(&Y) - + &No いいえ(&N) - + &Close 閉じる(&C) - + Continue with setup? セットアップを続行しますか? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 インストーラーは %2 をインストールするためにディスクの内容を変更しようとします。<br/><strong>これらの変更は取り消しできなくなります。</strong> - + &Install now 今すぐインストール(&I) - + Go &back 戻る(&B) - + &Done 実行(&D) - + The installation is complete. Close the installer. インストールが完了しました。インストーラーを閉じます。 - + Error エラー - + Installation Failed インストールに失敗 @@ -436,17 +459,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 %1 のパーティション操作のため、マウントを解除 - + Clearing mounts for partitioning operations on %1. %1 のパーティション操作のため、マウントを解除中 - + Cleared all mounts for %1 %1 のすべてのマウントを解除 @@ -554,27 +577,27 @@ The installer will quit and all changes will be lost. サイズ(&Z) - + En&crypt 暗号化(&C) - + Logical 論理 - + Primary プライマリ - + GPT GPT - + Mountpoint already in use. Please select another one. マウントポイントは既に使用されています。他を選択してください。 @@ -776,7 +799,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -834,7 +857,7 @@ The installer will quit and all changes will be lost. フラグ: - + Mountpoint already in use. Please select another one. マウントポイントは既に使用されています。他を選択してください。 @@ -1004,12 +1027,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> キーボードのモデルを %1 に設定。<br/> - + Set keyboard layout to %1/%2. キーボードのレイアウトを %1/%2 に設定。 @@ -1053,64 +1076,64 @@ The installer will quit and all changes will be lost. フォーム - + I accept the terms and conditions above. 上記の項目及び条件に同意します。 - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>ライセンス契約条項</h1> このセットアップはライセンス条項に従うことが必要なプロプライエタリなソフトウェアをインストールします。 - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. 上記のエンドユーザーライセンス条項 (EULAs) を確認してください。<br/>もしライセンス条項に同意できない場合、セットアップを続行することはできません。 - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>ライセンス契約条項</h1> このセットアップは、機能を追加し、ユーザーの使いやすさを向上させるために、ライセンス条項に従うことが必要なプロプライエタリなソフトウェアをインストールします。 - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. 上記のエンドユーザーライセンス条項 (EULAs) を確認してください。<br/>もしライセンス条項に同意できない場合、プロプライエタリなソフトウェアはインストールされず、代わりにオープンソースのソフトウェアが使用されます。 - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 ドライバー</strong><br/>by %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 グラフィックドライバー</strong><br/><font color="Grey">by %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 ブラウザプラグイン</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 パッケージ</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> <a href="%1">ライセンスへの同意</a> @@ -1584,34 +1607,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space 空き領域 - - + + New partition 新しいパーティション - + Name 名前 - + File System ファイルシステム - + Mount Point マウントポイント - + Size サイズ @@ -1640,8 +1663,8 @@ The installer will quit and all changes will be lost. - &Create - 作成(&C) + Cre&ate + @@ -1659,17 +1682,17 @@ The installer will quit and all changes will be lost. ブートローダーインストール先 (&L): - + Are you sure you want to create a new partition table on %1? %1 上で新しいパーティションテーブルを作成します。よろしいですか? - + Can not create new partition - + 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. @@ -1677,97 +1700,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... システム情報を取得中... - + Partitions パーティション - + Install %1 <strong>alongside</strong> another operating system. 他のオペレーティングシステムに<strong>共存して</strong> %1 をインストール。 - + <strong>Erase</strong> disk and install %1. ディスクを<strong>消去</strong>し %1 をインストール。 - + <strong>Replace</strong> a partition with %1. パーティションを %1 に<strong>置き換える。</strong> - + <strong>Manual</strong> partitioning. <strong>手動</strong>でパーティションを設定する。 - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). ディスク <strong>%2</strong> (%3) 上ののオペレーティングシステムと<strong>共存</strong>して %1 をインストール。 - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. ディスク <strong>%2</strong> (%3) を<strong>消去して</strong> %1 をインストール。 - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. ディスク <strong>%2</strong> (%3) 上のパーティションを %1 に<strong>置き換える。</strong> - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). ディスク <strong>%1</strong> (%2) 上で <strong>手動で</strong>パーティショニングする。 - + Disk <strong>%1</strong> (%2) ディスク <strong>%1</strong> (%2) - + Current: 現在: - + After: 変更後: - + No EFI system partition configured EFI システムパーティションが設定されていません - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. %1 を起動するためにはEFI システムパ ーティションが必要です。<br/><br/> EFI システムパーティションを設定するためには、元に戻って、マウントポイント<strong>%2</strong>で<strong>esp</strong>フラグを設定したFAT32ファイルシステムを選択するか作成します。<br/><br/>EFI システムパ ーティションの設定をせずに続行することはできますが、その場合はシステムの起動に失敗することになるかもしれません。 - + EFI system partition flag not set EFI システムパーティションのフラグが設定されていません - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. %1 を起動するためにはEFI システムパ ーティションが必要です。<br/><br/>パーティションはマウントポイント<strong>%2</strong>に設定されていますが、<strong>esp</strong> フラグが設定されていません。<br/>フラグを設定するには、元に戻ってパーティションを編集してください。<br/><br/>フラグの設定をせずに続けることはできますが、その場合、システムの起動に失敗することになるかもしれません。 - + Boot partition not encrypted ブートパーティションが暗号化されていません - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. ブートパーティションは暗号化されたルートパーティションとともにセットアップされましたが、ブートパーティションは暗号化されていません。<br/><br/>重要なシステムファイルが暗号化されていないパーティションに残されているため、このようなセットアップは安全上の懸念があります。<br/>セットアップを続行することはできますが、後でシステムの起動中にファイルシステムが解除されるおそれがあります。<br/>ブートパーティションを暗号化させるには、前の画面に戻って、再度パーティションを作成し、パーティション作成ウィンドウ内で<strong>Encrypt</strong>(暗号化)を選択してください。 @@ -1913,22 +1936,22 @@ Output: デフォルト - + unknown 不明 - + extended 拡張 - + unformatted 未フォーマット - + swap スワップ @@ -2110,29 +2133,29 @@ Output: SetHostNameJob - + Set hostname %1 ホスト名 %1 の設定 - + Set hostname <strong>%1</strong>. ホスト名 <strong>%1</strong> の設定。 - + Setting hostname %1. ホスト名 %1 の設定中。 - - + + Internal Error 内部エラー - - + + Cannot write hostname to target system ターゲットとするシステムにホスト名を書き込めません @@ -2584,7 +2607,7 @@ Output: WelcomeViewStep - + Welcome ようこそ diff --git a/lang/calamares_kk.ts b/lang/calamares_kk.ts index 730129017..fb390eca1 100644 --- a/lang/calamares_kk.ts +++ b/lang/calamares_kk.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Орнату @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Дайын @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -159,96 +167,111 @@ Calamares::ViewManager - + &Back А&ртқа - - + + &Next &Алға - - + + &Cancel Ба&с тарту - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Орнатудан бас тарту керек пе? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No - + &Close - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -435,17 +458,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -553,27 +576,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -775,7 +798,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -833,7 +856,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1002,12 +1025,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1051,64 +1074,64 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1582,34 +1605,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1638,7 +1661,7 @@ The installer will quit and all changes will be lost. - &Create + Cre&ate @@ -1657,17 +1680,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1675,97 +1698,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1908,22 +1931,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2105,29 +2128,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2579,7 +2602,7 @@ Output: WelcomeViewStep - + Welcome Қош келдіңіз diff --git a/lang/calamares_kn.ts b/lang/calamares_kn.ts index 5c8be86ba..a5dfc0d59 100644 --- a/lang/calamares_kn.ts +++ b/lang/calamares_kn.ts @@ -45,6 +45,14 @@ + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install ಸ್ಥಾಪಿಸು @@ -105,7 +113,7 @@ Calamares::JobThread - + Done @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -159,96 +167,111 @@ Calamares::ViewManager - + &Back ಹಿಂದಿನ - - + + &Next ಮುಂದಿನ - - + + &Cancel ರದ್ದುಗೊಳಿಸು - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? ಅನುಸ್ಥಾಪನೆಯನ್ನು ರದ್ದುಮಾಡುವುದೇ? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes ಹೌದು - + &No ಇಲ್ಲ - + &Close ಮುಚ್ಚಿರಿ - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error ದೋಷ - + Installation Failed ಅನುಸ್ಥಾಪನೆ ವಿಫಲವಾಗಿದೆ @@ -435,17 +458,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -553,27 +576,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -775,7 +798,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -833,7 +856,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1002,12 +1025,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1051,64 +1074,64 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1582,34 +1605,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1638,7 +1661,7 @@ The installer will quit and all changes will be lost. - &Create + Cre&ate @@ -1657,17 +1680,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1675,97 +1698,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: ಪ್ರಸಕ್ತ: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1908,22 +1931,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2105,29 +2128,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2579,7 +2602,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_ko.ts b/lang/calamares_ko.ts index f2f9d6a49..00bc40c82 100644 --- a/lang/calamares_ko.ts +++ b/lang/calamares_ko.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install 설치 @@ -105,7 +113,7 @@ Calamares::JobThread - + Done 완료 @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. %1 명령을 실행 중 - + Bad working directory path 잘못된 작업 디렉터리 경로 - + Working directory %1 for python job %2 is not readable. 파이썬 작업 %2에 대한 작업 디렉터리 %1을 읽을 수 없습니다. - + Bad main script file 잘못된 주 스크립트 파일 - + Main script file %1 for python job %2 is not readable. 파이썬 작업 %2에 대한 주 스크립트 파일 %1을 읽을 수 없습니다. - + Boost.Python error in job "%1". 작업 "%1"에서 Boost.Python 오류 @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back 뒤로(&B) - - + + &Next 다음(&N) - - + + &Cancel 취소(&C) - - + + Cancel installation without changing the system. 시스템 변경 없이 설치를 취소합니다. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install 설치(&I) - + Cancel installation? 설치를 취소하시겠습니까? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 정말로 현재 설치 프로세스를 취소하시겠습니까? 설치 관리자가 종료되며 모든 변경은 반영되지 않습니다. - + &Yes 예(&Y) - + &No 아니오(&N) - + &Close 닫기(&C) - + Continue with setup? 설치를 계속하시겠습니까? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now 지금 설치(&I) - + Go &back 뒤로 이동(&b) - + &Done 완료(&D) - + The installation is complete. Close the installer. 설치가 완료되었습니다. 설치 관리자를 닫습니다. - + Error 오류 - + Installation Failed 설치 실패 @@ -436,17 +459,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 파티셔닝 작업을 위해 %1의 마운트를 모두 해제합니다 - + Clearing mounts for partitioning operations on %1. 파티셔닝 작업을 위해 %1의 마운트를 모두 해제하는 중입니다. - + Cleared all mounts for %1 %1의 모든 마운트가 해제되었습니다. @@ -554,27 +577,27 @@ The installer will quit and all changes will be lost. 크기(&z): - + En&crypt 암호화(&c) - + Logical 논리 파티션 - + Primary 주 파티션 - + GPT GPT - + Mountpoint already in use. Please select another one. 마운트 위치가 이미 사용 중입니다. 다른 위치를 선택해주세요. @@ -776,7 +799,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job 더미 C++ 작업 @@ -834,7 +857,7 @@ The installer will quit and all changes will be lost. 플래그: - + Mountpoint already in use. Please select another one. 마운트 위치가 이미 사용 중입니다. 다른 위치를 선택해주세요. @@ -1003,12 +1026,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> 키보드 모델을 %1로 설정합니다.<br/> - + Set keyboard layout to %1/%2. 키보드 레이아웃을 %1/%2로 설정합니다. @@ -1052,64 +1075,64 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. 상기 계약 조건을 모두 동의합니다. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>라이센스 동의</h1>이 설치 절차는 라이센스 조항의 적용을 받는 독점 소프트웨어를 설치합니다. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. 상기 최종 사용자 라이센스 동의 (EULAs) 를 검토해주시길 바랍니다.<br/>조건에 동의하지 않는다면, 설치 절차를 계속할 수 없습니다. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>라이센스 동의</h1>이 설치 절차는 추가적인 기능들을 제공하고 사용자 환경을 개선하기 위한 독점 소프트웨어를 설치할 수 있으며, 이 소프트웨어는 라이센스 조항의 적용을 받습니다. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. 상기 최종 사용자 라이센스 동의 (EULAs) 를 검토해주시길 바랍니다. <br/>조건에 동의하지 않는다면, 독점 소프트웨어는 설치되지 않을 것이며, 대체하여 사용할 수 있는 오픈 소스 소프트웨어가 사용될 것입니다. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> <a href="%1">라이센스 동의 보기</a> @@ -1583,34 +1606,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space 여유 공간 - - + + New partition 새로운 파티션 - + Name 이름 - + File System 파일 시스템 - + Mount Point 마운트 위치 - + Size 크기 @@ -1639,8 +1662,8 @@ The installer will quit and all changes will be lost. - &Create - 생성(&C) + Cre&ate + @@ -1658,17 +1681,17 @@ The installer will quit and all changes will be lost. 부트 로더 설치 위치(&l): - + Are you sure you want to create a new partition table on %1? - + Can not create new partition 새로운 파티션을 만들 수 없습니다 - + 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. @@ -1676,97 +1699,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... 시스템 정보 수집 중... - + Partitions 파티션 - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: 현재: - + After: 이후: - + No EFI system partition configured EFI 시스템 파티션이 설정되지 않았습니다 - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set EFI 시스템 파티션 플래그가 설정되지 않았습니다 - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted 부트 파티션이 암호화되지 않았습니다 - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1912,22 +1935,22 @@ Output: 기본 - + unknown 알 수 없음 - + extended - + unformatted - + swap @@ -2109,29 +2132,29 @@ Output: SetHostNameJob - + Set hostname %1 호스트 이름을 %1로 설정합니다 - + Set hostname <strong>%1</strong>. 호스트 이름을 <strong>%1</strong>로 설정합니다. - + Setting hostname %1. 호스트 이름을 %1로 설정하는 중입니다. - - + + Internal Error 내부 오류 - - + + Cannot write hostname to target system 시스템의 호스트 이름을 저장할 수 없습니다 @@ -2583,7 +2606,7 @@ Output: WelcomeViewStep - + Welcome 환영합니다 diff --git a/lang/calamares_lo.ts b/lang/calamares_lo.ts index 13eddda4b..4b3752aad 100644 --- a/lang/calamares_lo.ts +++ b/lang/calamares_lo.ts @@ -45,6 +45,14 @@ + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install @@ -105,7 +113,7 @@ Calamares::JobThread - + Done @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -159,96 +167,111 @@ Calamares::ViewManager - + &Back - - + + &Next - - + + &Cancel - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No - + &Close - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -435,17 +458,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -553,27 +576,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -775,7 +798,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -833,7 +856,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1002,12 +1025,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1051,64 +1074,64 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1582,34 +1605,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1638,7 +1661,7 @@ The installer will quit and all changes will be lost. - &Create + Cre&ate @@ -1657,17 +1680,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1675,97 +1698,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1908,22 +1931,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2105,29 +2128,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2579,7 +2602,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_lt.ts b/lang/calamares_lt.ts index 24daa7a86..12d53ba11 100644 --- a/lang/calamares_lt.ts +++ b/lang/calamares_lt.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + Tuščias puslapis + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Diegimas @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Atlikta @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Vykdyti komandą %1 %2 - + Running command %1 %2 Vykdoma komanda %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Vykdoma %1 operacija. - + Bad working directory path Netinkama darbinio katalogo vieta - + Working directory %1 for python job %2 is not readable. Darbinis %1 python katalogas dėl %2 užduoties yra neskaitomas - + Bad main script file Prastas pagrindinio skripto failas - + Main script file %1 for python job %2 is not readable. Pagrindinis scenarijus %1 dėl python %2 užduoties yra neskaitomas - + Boost.Python error in job "%1". Boost.Python klaida užduotyje "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Atgal - - + + &Next &Toliau - - + + &Cancel A&tsisakyti - - + + Cancel installation without changing the system. Atsisakyti diegimo, nieko sistemoje nekeičiant. - + + Calamares Initialization Failed + Calamares inicijavimas nepavyko + + + + %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. + Nepavyksta įdiegti %1. Calamares nepavyko įkelti visų sukonfigūruotų modulių. Tai yra problema, susijusi su tuo, kaip distribucija naudoja diegimo programą Calamares. + + + + <br/>The following modules could not be loaded: + <br/>Nepavyko įkelti šių modulių: + + + &Install Į&diegti - + Cancel installation? Atsisakyti diegimo? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Ar tikrai norite atsisakyti dabartinio diegimo proceso? Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. - + &Yes &Taip - + &No &Ne - + &Close &Užverti - + Continue with setup? Tęsti sąranką? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 diegimo programa, siekdama įdiegti %2, ketina atlikti pakeitimus diske.<br/><strong>Šių pakeitimų atšaukti nebegalėsite.</strong> - + &Install now Į&diegti dabar - + Go &back &Grįžti - + &Done A&tlikta - + The installation is complete. Close the installer. Diegimas užbaigtas. Užverkite diegimo programą. - + Error Klaida - + Installation Failed Diegimas nepavyko @@ -436,17 +459,17 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. ClearMountsJob - + Clear mounts for partitioning operations on %1 Išvalyti prijungimus, siekiant atlikti skaidymo operacijas skaidiniuose %1 - + Clearing mounts for partitioning operations on %1. Išvalomi prijungimai, siekiant atlikti skaidymo operacijas skaidiniuose %1. - + Cleared all mounts for %1 Visi %1 prijungimai išvalyti @@ -554,27 +577,27 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. D&ydis: - + En&crypt Užši&fruoti - + Logical Loginė - + Primary Pagrindinė - + GPT GPT - + Mountpoint already in use. Please select another one. Prijungimo taškas jau yra naudojamas. Prašome pasirinkti kitą. @@ -776,7 +799,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. DummyCppJob - + Dummy C++ Job Fiktyvi C++ užduotis @@ -834,7 +857,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Vėliavėlės: - + Mountpoint already in use. Please select another one. Prijungimo taškas jau yra naudojamas. Prašome pasirinkti kitą. @@ -1003,12 +1026,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. KeyboardPage - + Set keyboard model to %1.<br/> Nustatyti klaviatūros modelį kaip %1.<br/> - + Set keyboard layout to %1/%2. Nustatyti klaviatūros išdėstymą kaip %1/%2. @@ -1052,64 +1075,64 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Forma - + I accept the terms and conditions above. Sutinku su aukščiau išdėstytomis nuostatomis ir sąlygomis. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licencijos Sutartis</h1>Ši sąrankos procedūra įdiegs nuosavybinę programinę įrangą, kuriai yra taikomos licencijavimo nuostatos. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Prašome aukščiau peržiūrėti Galutinio Vartotojo Licencijos Sutartis (angl. EULA).<br/>Jeigu nesutiksite su nuostatomis, sąrankos procedūra negalės būti tęsiama. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licencijos Sutartis</h1>Tam, kad pateiktų papildomas ypatybes ir pagerintų naudotojo patirtį, ši sąrankos procedūra gali įdiegti nuosavybinę programinę įrangą, kuriai yra taikomos licencijavimo nuostatos. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Prašome aukščiau peržiūrėti Galutinio Vartotojo Licencijos Sutartis (angl. EULA).<br/>Jeigu nesutiksite su nuostatomis, tuomet nuosavybinė programinė įranga nebus įdiegta, o vietoj jos, bus naudojamos atviro kodo alternatyvos. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 tvarkyklė</strong><br/>iš %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 grafikos tvarkyklė</strong><br/><font color="Grey">iš %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 naršyklės papildinys</strong><br/><font color="Grey">iš %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 kodekas</strong><br/><font color="Grey">iš %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 paketas</strong><br/><font color="Grey">iš %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">iš %2</font> - + <a href="%1">view license agreement</a> <a href="%1">žiūrėti licencijos sutartį</a> @@ -1583,34 +1606,34 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. PartitionModel - - + + Free Space Laisva vieta - - + + New partition Naujas skaidinys - + Name Pavadinimas - + File System Failų sistema - + Mount Point Prijungimo vieta - + Size Dydis @@ -1639,8 +1662,8 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. - &Create - &Sukurti + Cre&ate + Su&kurti @@ -1658,17 +1681,17 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Įdiegti pa&leidyklę skaidinyje: - + Are you sure you want to create a new partition table on %1? Ar tikrai %1 norite sukurti naują skaidinių lentelę? - + Can not create new partition Nepavyksta sukurti naują skaidinį - + 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. Skaidinių lentelėje ties %1 jau yra %2 pirminiai skaidiniai ir daugiau nebegali būti pridėta. Pašalinkite vieną pirminį skaidinį ir vietoj jo, pridėkite išplėstą skaidinį. @@ -1676,97 +1699,97 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. PartitionViewStep - + Gathering system information... Renkama sistemos informacija... - + Partitions Skaidiniai - + Install %1 <strong>alongside</strong> another operating system. Diegti %1 <strong>šalia</strong> kitos operacinės sistemos. - + <strong>Erase</strong> disk and install %1. <strong>Ištrinti</strong> diską ir diegti %1. - + <strong>Replace</strong> a partition with %1. <strong>Pakeisti</strong> skaidinį, įrašant %1. - + <strong>Manual</strong> partitioning. <strong>Rankinis</strong> skaidymas. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Įdiegti %1 <strong>šalia</strong> kitos operacinės sistemos diske <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Ištrinti</strong> diską <strong>%2</strong> (%3) ir diegti %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Pakeisti</strong> skaidinį diske <strong>%2</strong> (%3), įrašant %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Rankinis</strong> skaidymas diske <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Diskas <strong>%1</strong> (%2) - + Current: Dabartinis: - + After: Po: - + No EFI system partition configured Nėra sukonfigūruoto EFI sistemos skaidinio - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. EFI sistemos skaidinys yra būtinas, norint paleisti %1.<br/><br/>Tam, kad sukonfigūruotumėte EFI sistemos skaidinį, grįžkite atgal ir pasirinkite arba sukurkite FAT32 failų sistemą su įjungta <strong>esp</strong> vėliavėle ir <strong>%2</strong> prijungimo tašku.<br/><br/>Jūs galite tęsti ir nenustatę EFI sistemos skaidinio, tačiau tokiu atveju, gali nepavykti paleisti jūsų sistemos. - + EFI system partition flag not set Nenustatyta EFI sistemos skaidinio vėliavėlė - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. EFI sistemos skaidinys yra būtinas, norint paleisti %1.<br/><br/>Skaidinys buvo sukonfigūruotas su prijungimo tašku <strong>%2</strong>, tačiau jo <strong>esp</strong> vėliavėlė yra nenustatyta.<br/>Tam, kad nustatytumėte vėliavėlę, grįžkite atgal ir redaguokite skaidinį.<br/><br/>Jūs galite tęsti ir nenustatę vėliavėlės, tačiau tokiu atveju, gali nepavykti paleisti jūsų sistemos. - + Boot partition not encrypted Paleidimo skaidinys nėra užšifruotas - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Kartu su užšifruotu šaknies skaidiniu, buvo nustatytas atskiras paleidimo skaidinys, tačiau paleidimo skaidinys nėra užšifruotas.<br/><br/>Dėl tokios sąrankos iškyla tam tikrų saugumo klausimų, kadangi svarbūs sisteminiai failai yra laikomi neužšifruotame skaidinyje.<br/>Jeigu norite, galite tęsti, tačiau failų sistemos atrakinimas įvyks vėliau, sistemos paleidimo metu.<br/>Norėdami užšifruoti paleidimo skaidinį, grįžkite atgal ir sukurkite jį iš naujo bei skaidinių kūrimo lange pažymėkite parinktį <strong>Užšifruoti</strong>. @@ -1912,22 +1935,22 @@ Išvestis: Numatytasis - + unknown nežinoma - + extended išplėsta - + unformatted nesutvarkyta - + swap sukeitimų (swap) @@ -2109,29 +2132,29 @@ Išvestis: SetHostNameJob - + Set hostname %1 Nustatyti kompiuterio vardą %1 - + Set hostname <strong>%1</strong>. Nustatyti kompiuterio vardą <strong>%1</strong>. - + Setting hostname %1. Nustatomas kompiuterio vardas %1. - - + + Internal Error Vidinė klaida - - + + Cannot write hostname to target system Nepavyko įrašyti kompiuterio vardo į paskirties sistemą @@ -2583,7 +2606,7 @@ Išvestis: WelcomeViewStep - + Welcome Pasisveikinimas diff --git a/lang/calamares_mr.ts b/lang/calamares_mr.ts index 46700c6fd..922b6e704 100644 --- a/lang/calamares_mr.ts +++ b/lang/calamares_mr.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install अधिष्ठापना @@ -105,7 +113,7 @@ Calamares::JobThread - + Done पूर्ण झाली @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 %1 %2 आज्ञा चालवा - + Running command %1 %2 %1 %2 आज्ञा चालवला जातोय @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. %1 क्रिया चालवला जातोय - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -159,96 +167,111 @@ Calamares::ViewManager - + &Back &मागे - - + + &Next &पुढे - - + + &Cancel &रद्द करा - - + + Cancel installation without changing the system. प्रणालीत बदल न करता अधिष्टापना रद्द करा. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? अधिष्ठापना रद्द करायचे? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes &होय - + &No &नाही - + &Close &बंद करा - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &आता अधिष्ठापित करा - + Go &back &मागे जा - + &Done &पूर्ण झाली - + The installation is complete. Close the installer. अधिष्ठापना संपूर्ण झाली. अधिष्ठापक बंद करा. - + Error त्रुटी - + Installation Failed अधिष्ठापना अयशस्वी झाली @@ -435,17 +458,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -553,27 +576,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical तार्किक - + Primary प्राथमिक - + GPT - + Mountpoint already in use. Please select another one. @@ -775,7 +798,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -833,7 +856,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1002,12 +1025,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1051,64 +1074,64 @@ The installer will quit and all changes will be lost. स्वरुप - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1582,34 +1605,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1638,7 +1661,7 @@ The installer will quit and all changes will be lost. - &Create + Cre&ate @@ -1657,17 +1680,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1675,97 +1698,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: सद्या : - + After: नंतर : - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1908,22 +1931,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2105,29 +2128,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error अंतर्गत त्रूटी  - - + + Cannot write hostname to target system @@ -2579,7 +2602,7 @@ Output: WelcomeViewStep - + Welcome स्वागत diff --git a/lang/calamares_nb.ts b/lang/calamares_nb.ts index e2279ec0d..083d28460 100644 --- a/lang/calamares_nb.ts +++ b/lang/calamares_nb.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Installer @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Ferdig @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Kjør kommando %1 %2 - + Running command %1 %2 Kjører kommando %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Feil filsti til arbeidsmappe - + Working directory %1 for python job %2 is not readable. Arbeidsmappe %1 for python oppgave %2 er ikke lesbar. - + Bad main script file Ugyldig hovedskriptfil - + Main script file %1 for python job %2 is not readable. Hovedskriptfil %1 for python oppgave %2 er ikke lesbar. - + Boost.Python error in job "%1". Boost.Python feil i oppgave "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Tilbake - - + + &Next &Neste - - + + &Cancel &Avbryt - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Avbryte installasjon? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Vil du virkelig avbryte installasjonen? Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + &Yes &Ja - + &No &Nei - + &Close &Lukk - + Continue with setup? Fortsette å sette opp? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 vil nå gjøre endringer på harddisken, for å installere %2. <br/><strong>Du vil ikke kunne omgjøre disse endringene.</strong> - + &Install now &Installer nå - + Go &back Gå &tilbake - + &Done &Ferdig - + The installation is complete. Close the installer. Installasjonen er fullført. Lukk installeringsprogrammet. - + Error Feil - + Installation Failed Installasjon feilet @@ -436,17 +459,17 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -554,27 +577,27 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt.St&ørrelse: - + En&crypt - + Logical Logisk - + Primary Primær - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -776,7 +799,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. DummyCppJob - + Dummy C++ Job @@ -834,7 +857,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + Mountpoint already in use. Please select another one. @@ -1003,12 +1026,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. KeyboardPage - + Set keyboard model to %1.<br/> Sett tastaturmodell til %1.<br/> - + Set keyboard layout to %1/%2. Sett tastaturoppsett til %1/%2. @@ -1052,64 +1075,64 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt.Form - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>fra %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 grafikkdriver</strong><br/><font color="Grey">fra %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 nettlesertillegg</strong><br/><font color="Grey">fra %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">fra %2</font> - + <a href="%1">view license agreement</a> @@ -1583,34 +1606,34 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1639,7 +1662,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - &Create + Cre&ate @@ -1658,17 +1681,17 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1909,22 +1932,22 @@ Output: Standard - + unknown - + extended - + unformatted - + swap @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error Intern feil - - + + Cannot write hostname to target system @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome Velkommen diff --git a/lang/calamares_nl.ts b/lang/calamares_nl.ts index eadf349a9..d20d75630 100644 --- a/lang/calamares_nl.ts +++ b/lang/calamares_nl.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Installeer @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Gereed @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Voer opdracht %1 %2 uit - + Running command %1 %2 Uitvoeren van opdracht %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Bewerking %1 uitvoeren. - + Bad working directory path Ongeldig pad voor huidige map - + Working directory %1 for python job %2 is not readable. Werkmap %1 voor python taak %2 onleesbaar. - + Bad main script file Onjuist hoofdscriptbestand - + Main script file %1 for python job %2 is not readable. Hoofdscriptbestand %1 voor python taak %2 onleesbaar. - + Boost.Python error in job "%1". Boost.Python fout in taak "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Terug - - + + &Next &Volgende - - + + &Cancel &Afbreken - - + + Cancel installation without changing the system. Installatie afbreken zonder aanpassingen aan het systeem. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Installatie afbreken? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Wil je het huidige installatieproces echt afbreken? Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. - + &Yes &ja - + &No &Nee - + &Close &Sluiten - + Continue with setup? Doorgaan met installatie? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Het %1 installatieprogramma zal nu aanpassingen maken aan je schijf om %2 te installeren.<br/><strong>Deze veranderingen kunnen niet ongedaan gemaakt worden.</strong> - + &Install now Nu &installeren - + Go &back Ga &terug - + &Done Voltooi&d - + The installation is complete. Close the installer. De installatie is voltooid. Sluit het installatie-programma. - + Error Fout - + Installation Failed Installatie Mislukt @@ -436,17 +459,17 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. ClearMountsJob - + Clear mounts for partitioning operations on %1 Geef aankoppelpunten vrij voor partitiebewerkingen op %1 - + Clearing mounts for partitioning operations on %1. Aankoppelpunten vrijgeven voor partitiebewerkingen op %1. - + Cleared all mounts for %1 Alle aankoppelpunten voor %1 zijn vrijgegeven @@ -554,27 +577,27 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. &Grootte: - + En&crypt &Versleutelen - + Logical Logisch - + Primary Primair - + GPT GPT - + Mountpoint already in use. Please select another one. Aankoppelpunt reeds in gebruik. Gelieve een andere te kiezen. @@ -776,7 +799,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. DummyCppJob - + Dummy C++ Job C++ schijnopdracht @@ -834,7 +857,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Vlaggen: - + Mountpoint already in use. Please select another one. Aankoppelpunt reeds in gebruik. Gelieve een andere te kiezen. @@ -1003,12 +1026,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. KeyboardPage - + Set keyboard model to %1.<br/> Instellen toetsenbord model naar %1.<br/> - + Set keyboard layout to %1/%2. Instellen toetsenbord lay-out naar %1/%2. @@ -1052,64 +1075,64 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Formulier - + I accept the terms and conditions above. Ik aanvaard de bovenstaande algemene voorwaarden. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licentieovereenkomst</h1>Deze installatieprocedure zal propriëtaire software installeren die onderworpen is aan licentievoorwaarden. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Gelieve bovenstaande licentieovereenkomsten voor eindgebruikers (EULA's) na te kijken.<br/>Indien je de voorwaarden niet aanvaardt, kan de installatie niet doorgaan. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licentieovereenkomst</h1>Deze installatieprocedure kan mogelijk propriëtaire software, onderworpen aan licentievoorwaarden, installeren om bijkomende functies aan te bieden of de gebruikservaring te verbeteren. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Gelieve bovenstaande licentieovereenkomsten voor eindgebruikers (EULA's) na te kijken.<br/>Indien je de voorwaarden niet aanvaardt zal de propriëtaire software vervangen worden door openbron alternatieven. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 stuurprogramma</strong><br/>door %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 grafisch stuurprogramma</strong><br/><font color="Grey">door %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 browser plugin</strong><br/><font color="Grey">door %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">door %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 pakket</strong><br/><font color="Grey">door %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">door %2</font> - + <a href="%1">view license agreement</a> <a href="%1">toon de licentieovereenkomst</a> @@ -1583,34 +1606,34 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. PartitionModel - - + + Free Space Vrije ruimte - - + + New partition Nieuwe partitie - + Name Naam - + File System Bestandssysteem - + Mount Point Aankoppelpunt - + Size Grootte @@ -1639,8 +1662,8 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. - &Create - &Maak + Cre&ate + @@ -1658,17 +1681,17 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Installeer boot&loader op: - + Are you sure you want to create a new partition table on %1? Weet u zeker dat u een nieuwe partitie tabel wil maken op %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. PartitionViewStep - + Gathering system information... Systeeminformatie verzamelen... - + Partitions Partities - + Install %1 <strong>alongside</strong> another operating system. Installeer %1 <strong>naast</strong> een ander besturingssysteem. - + <strong>Erase</strong> disk and install %1. <strong>Wis</strong> schijf en installeer %1. - + <strong>Replace</strong> a partition with %1. <strong>Vervang</strong> een partitie met %1. - + <strong>Manual</strong> partitioning. <strong>Handmatig</strong> partitioneren. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installeer %1 <strong>naast</strong> een ander besturingssysteem op schijf <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Wis</strong> schijf <strong>%2</strong> (%3) en installeer %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Vervang</strong> een partitie op schijf <strong>%2</strong> (%3) met %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Handmatig</strong> partitioneren van schijf <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Schijf <strong>%1</strong> (%2) - + Current: Huidig: - + After: Na: - + No EFI system partition configured Geen EFI systeempartitie geconfigureerd - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Een EFI systeempartitie is vereist om %1 te starten.<br/><br/>Om een EFI systeempartitie in te stellen, ga terug en selecteer of maak een FAT32 bestandssysteem met de <strong>esp</strong>-vlag aangevinkt en aankoppelpunt <strong>%2</strong>.<br/><br/>Je kan verdergaan zonder een EFI systeempartitie, maar mogelijk start je systeem dan niet op. - + EFI system partition flag not set EFI-systeem partitievlag niet ingesteld. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Een EFI systeempartitie is vereist om %1 op te starten.<br/><br/>Een partitie is ingesteld met aankoppelpunt <strong>%2</strong>, maar de de <strong>esp</strong>-vlag is niet aangevinkt.<br/>Om deze vlag aan te vinken, ga terug en pas de partitie aan.<br/><br/>Je kan verdergaan zonder deze vlag, maar mogelijk start je systeem dan niet op. - + Boot partition not encrypted Bootpartitie niet versleuteld - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Een aparte bootpartitie was ingesteld samen met een versleutelde rootpartitie, maar de bootpartitie zelf is niet versleuteld.<br/><br/>Dit is niet volledig veilig, aangezien belangrijke systeembestanden bewaard worden op een niet-versleutelde partitie.<br/>Je kan doorgaan als je wil, maar het ontgrendelen van bestandssystemen zal tijdens het opstarten later plaatsvinden.<br/>Om de bootpartitie toch te versleutelen: keer terug en maak de bootpartitie opnieuw, waarbij je <strong>Versleutelen</strong> aanvinkt in het venster partitie aanmaken. @@ -1909,22 +1932,22 @@ Output: Standaard - + unknown onbekend - + extended uitgebreid - + unformatted niet-geformateerd - + swap wisselgeheugen @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 Instellen hostnaam %1 - + Set hostname <strong>%1</strong>. Instellen hostnaam <strong>%1</strong> - + Setting hostname %1. Hostnaam %1 instellen. - - + + Internal Error Interne Fout - - + + Cannot write hostname to target system Kan de hostnaam niet naar doelsysteem schrijven @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome Welkom diff --git a/lang/calamares_pl.ts b/lang/calamares_pl.ts index 65c0343f0..48edd7065 100644 --- a/lang/calamares_pl.ts +++ b/lang/calamares_pl.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Zainstaluj @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Ukończono @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Uruchom polecenie %1 %2 - + Running command %1 %2 Wykonywanie polecenia %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Wykonuję operację %1. - + Bad working directory path Niepoprawna ścieżka katalogu roboczego - + Working directory %1 for python job %2 is not readable. Katalog roboczy %1 dla zadań pythona %2 jest nieosiągalny. - + Bad main script file Niepoprawny główny plik skryptu - + Main script file %1 for python job %2 is not readable. Główny plik skryptu %1 dla zadań pythona %2 jest nieczytelny. - + Boost.Python error in job "%1". Wystąpił błąd Boost.Python w zadaniu "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Wstecz - - + + &Next &Dalej - - + + &Cancel &Anuluj - - + + Cancel installation without changing the system. Anuluj instalację bez dokonywania zmian w systemie. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install Za&instaluj - + Cancel installation? Anulować instalację? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Czy na pewno chcesz anulować obecny proces instalacji? Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. - + &Yes &Tak - + &No &Nie - + &Close Zam&knij - + Continue with setup? Kontynuować z programem instalacyjnym? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Instalator %1 zamierza przeprowadzić zmiany na Twoim dysku, aby zainstalować %2.<br/><strong>Nie będziesz mógł cofnąć tych zmian.</strong> - + &Install now &Zainstaluj teraz - + Go &back &Cofnij się - + &Done &Ukończono - + The installation is complete. Close the installer. Instalacja ukończona pomyślnie. Możesz zamknąć instalator. - + Error Błąd - + Installation Failed Wystąpił błąd instalacji @@ -436,17 +459,17 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. ClearMountsJob - + Clear mounts for partitioning operations on %1 Wyczyść zamontowania dla operacji partycjonowania na %1 - + Clearing mounts for partitioning operations on %1. Czyszczenie montowań dla operacji partycjonowania na %1. - + Cleared all mounts for %1 Wyczyszczono wszystkie zamontowania dla %1 @@ -554,27 +577,27 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Ro&zmiar: - + En&crypt Zaszy%fruj - + Logical Logiczna - + Primary Podstawowa - + GPT GPT - + Mountpoint already in use. Please select another one. Punkt montowania jest już używany. Proszę wybrać inny. @@ -776,7 +799,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. DummyCppJob - + Dummy C++ Job Działanie obiektu Dummy C++ @@ -834,7 +857,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Flagi: - + Mountpoint already in use. Please select another one. Punkt montowania jest już używany. Proszę wybrać inny. @@ -1003,12 +1026,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. KeyboardPage - + Set keyboard model to %1.<br/> Ustaw model klawiatury na %1.<br/> - + Set keyboard layout to %1/%2. Ustaw model klawiatury na %1/%2. @@ -1052,64 +1075,64 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Formularz - + I accept the terms and conditions above. Akceptuję powyższe warunki korzystania. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Umowy licencyjne</h1>Ten etap instalacji zainstaluje własnościowe oprogramowanie, którego dotyczą zasady licencji. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Przeczytaj znajdujące się poniżej Umowy Licencyjne Końcowego Użytkownika (EULA).<br/>Jeżeli nie zgadzasz się z tymi warunkami, nie możesz kontynuować. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Umowy licencyjne</h1>Ten etap instalacji pozwoli zainstalować własnościowe oprogramowanie, którego dotyczą zasady licencji w celu poprawienia doświadczenia i zapewnienia dodatkowych funkcji. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Przeczytaj znajdujące się poniżej Umowy Licencyjne Końcowego Użytkownika (EULA).<br/>Jeżeli nie zaakceptujesz tych warunków, własnościowe oprogramowanie nie zostanie zainstalowane, zamiast tego zostaną użyte otwartoźródłowe odpowiedniki. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>sterownik %1</strong><br/>autorstwa %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>sterownik graficzny %1</strong><br/><font color="Grey">autorstwa %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>wtyczka do przeglądarki %1</strong><br/><font color="Grey">autorstwa %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>kodek %1</strong><br/><font color="Grey">autorstwa %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>pakiet %1</strong><br/><font color="Grey">autorstwa %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">autorstwa %2</font> - + <a href="%1">view license agreement</a> <a href="%1">zobacz porozumienie licencyjne</a> @@ -1583,34 +1606,34 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. PartitionModel - - + + Free Space Wolna powierzchnia - - + + New partition Nowa partycja - + Name Nazwa - + File System System plików - + Mount Point Punkt montowania - + Size Rozmiar @@ -1639,8 +1662,8 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. - &Create - &Utwórz + Cre&ate + @@ -1658,17 +1681,17 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Zainsta&luj program rozruchowy na: - + Are you sure you want to create a new partition table on %1? Czy na pewno chcesz utworzyć nową tablicę partycji na %1? - + Can not create new partition Nie można utworzyć nowej partycji - + 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. Tablica partycji na %1 ma już %2 podstawowych partycji i więcej nie może już być dodanych. Prosimy o usunięcie jednej partycji systemowej i dodanie zamiast niej partycji rozszerzonej. @@ -1676,97 +1699,97 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. PartitionViewStep - + Gathering system information... Zbieranie informacji o systemie... - + Partitions Partycje - + Install %1 <strong>alongside</strong> another operating system. Zainstaluj %1 <strong>obok</strong> innego systemu operacyjnego. - + <strong>Erase</strong> disk and install %1. <strong>Wyczyść</strong> dysk i zainstaluj %1. - + <strong>Replace</strong> a partition with %1. <strong>Zastąp</strong> partycję poprzez %1. - + <strong>Manual</strong> partitioning. <strong>Ręczne</strong> partycjonowanie. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Zainstaluj %1 <strong>obok</strong> innego systemu operacyjnego na dysku <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Wyczyść</strong> dysk <strong>%2</strong> (%3) i zainstaluj %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Zastąp</strong> partycję na dysku <strong>%2</strong> (%3) poprzez %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ręczne</strong> partycjonowanie na dysku <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Dysk <strong>%1</strong> (%2) - + Current: Bieżący: - + After: Po: - + No EFI system partition configured Nie skonfigurowano partycji systemowej EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Partycja systemu EFI jest zalecana aby rozpocząć %1.<br/><br/>Aby ją skonfigurować, wróć i wybierz lub utwórz partycję z systemem plików FAT32 i flagą <strong>esp</strong> o punkcie montowania <strong>%2</strong>.<br/><br/>Możesz kontynuować bez ustawiania partycji systemu EFI, ale twój system może nie uruchomić się. - + EFI system partition flag not set Flaga partycji systemowej EFI nie została ustawiona - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Partycja systemu EFI jest konieczna, aby rozpocząć %1.<br/><br/>Partycja została skonfigurowana w punkcie montowania <strong>%2</strong>, ale nie została ustawiona flaga <strong>esp</strong>. Aby ustawić tę flagę, wróć i zmodyfikuj tę partycję.<br/><br/>Możesz kontynuować bez ustawienia tej flagi, ale Twój system może się nie uruchomić. - + Boot partition not encrypted Niezaszyfrowana partycja rozruchowa - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Oddzielna partycja rozruchowa została skonfigurowana razem z zaszyfrowaną partycją roota, ale partycja rozruchowa nie jest szyfrowana.<br/><br/>Nie jest to najbezpieczniejsze rozwiązanie, ponieważ ważne pliki systemowe znajdują się na niezaszyfrowanej partycji.<br/>Możesz kontynuować, ale odblokowywanie systemu nastąpi później, w trakcie uruchamiania.<br/>Aby zaszyfrować partycję rozruchową, wróć i utwórz ją ponownie zaznaczając opcję <strong>Szyfruj</strong> w oknie tworzenia partycji. @@ -1912,22 +1935,22 @@ Wyjście: Domyślnie - + unknown nieznany - + extended rozszerzona - + unformatted niesformatowany - + swap przestrzeń wymiany @@ -2109,29 +2132,29 @@ Wyjście: SetHostNameJob - + Set hostname %1 Ustaw nazwę komputera %1 - + Set hostname <strong>%1</strong>. Ustaw nazwę komputera <strong>%1</strong>. - + Setting hostname %1. Ustawianie nazwy komputera %1. - - + + Internal Error Błąd wewnętrzny - - + + Cannot write hostname to target system Nie można zapisać nazwy komputera w docelowym systemie @@ -2583,7 +2606,7 @@ Wyjście: WelcomeViewStep - + Welcome Witamy diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index f307c2e80..c83013ce3 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Instalar @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Concluído @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Executar comando %1 %2 - + Running command %1 %2 Executando comando %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Executando operação %1. - + Bad working directory path Caminho de diretório de trabalho ruim - + Working directory %1 for python job %2 is not readable. Diretório de trabalho %1 para a tarefa do python %2 não é legível. - + Bad main script file Arquivo de script principal ruim - + Main script file %1 for python job %2 is not readable. Arquivo de script principal %1 para a tarefa do python %2 não é legível. - + Boost.Python error in job "%1". Boost.Python erro na tarefa "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Voltar - - + + &Next &Próximo - - + + &Cancel &Cancelar - - + + Cancel installation without changing the system. Cancelar instalação sem modificar o sistema. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install &Instalar - + Cancel installation? Cancelar a instalação? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Você deseja realmente cancelar a instalação atual? O instalador será fechado e todas as alterações serão perdidas. - + &Yes &Sim - + &No &Não - + &Close Fe&char - + Continue with setup? Continuar com configuração? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> O instalador %1 está prestes a fazer alterações no disco a fim de instalar %2.<br/><strong>Você não será capaz de desfazer estas mudanças.</strong> - + &Install now &Instalar agora - + Go &back &Voltar - + &Done Completa&do - + The installation is complete. Close the installer. A instalação está completa. Feche o instalador. - + Error Erro - + Installation Failed Falha na Instalação @@ -438,17 +461,17 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. ClearMountsJob - + Clear mounts for partitioning operations on %1 Limpar as montagens para as operações nas partições em %1 - + Clearing mounts for partitioning operations on %1. Limpando montagens para operações de particionamento em %1. - + Cleared all mounts for %1 Todos os pontos de montagem para %1 foram limpos @@ -556,27 +579,27 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.&Tamanho: - + En&crypt &Criptografar - + Logical Lógica - + Primary Primária - + GPT GPT - + Mountpoint already in use. Please select another one. Ponto de montagem já em uso. Por favor, selecione outro. @@ -778,7 +801,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -836,7 +859,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Marcadores: - + Mountpoint already in use. Please select another one. Ponto de montagem já em uso. Por favor, selecione outro. @@ -1005,12 +1028,12 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. KeyboardPage - + Set keyboard model to %1.<br/> Definir o modelo de teclado para %1.<br/> - + Set keyboard layout to %1/%2. Definir o layout do teclado para %1/%2. @@ -1054,64 +1077,64 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Formulário - + I accept the terms and conditions above. Aceito os termos e condições acima. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Termos de licença</h1>Este procedimento de configuração irá instalar software proprietário, que está sujeito aos termos de licenciamento. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Por favor, revise os acordos de licença de usuário final (EULAs) acima.<br/>Se você não concordar com os termos, o procedimento de configuração não pode continuar. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Termos de licença</h1>Este procedimento de instalação pode instalar o software proprietário, que está sujeito a termos de licenciamento, a fim de fornecer recursos adicionais e melhorar a experiência do usuário. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Por favor, revise os acordos de licença de usuário final (EULAs) acima.<br/>Se você não concordar com os termos, o software proprietário não será instalado e as alternativas de código aberto serão utilizadas em seu lugar. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>driver %1</strong><br/>por %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>driver gráfico %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>plugin do navegador %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>codec %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>pacote %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">por %2</font> - + <a href="%1">view license agreement</a> <a href="%1">mostrar termos de licença</a> @@ -1585,34 +1608,34 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. PartitionModel - - + + Free Space Espaço livre - - + + New partition Nova partição - + Name Nome - + File System Sistema de arquivos - + Mount Point Ponto de montagem - + Size Tamanho @@ -1641,8 +1664,8 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. - &Create - &Criar + Cre&ate + @@ -1660,17 +1683,17 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Insta&lar o gerenciador de inicialização em: - + Are you sure you want to create a new partition table on %1? Você tem certeza de que deseja criar uma nova tabela de partições em %1? - + Can not create new partition Não foi possível criar uma nova partição - + 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. A tabela de partições %1 já tem %2 partições primárias, e nenhuma a mais pode ser adicionada. Por favor, remova uma partição primária e adicione uma partição estendida no lugar. @@ -1678,97 +1701,97 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. PartitionViewStep - + Gathering system information... Coletando informações do sistema... - + Partitions Partições - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>ao lado de</strong> outro sistema operacional. - + <strong>Erase</strong> disk and install %1. <strong>Apagar</strong> disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Substituir</strong> uma partição com %1. - + <strong>Manual</strong> partitioning. Particionamento <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>ao lado de</strong> outro sistema operacional no disco <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Apagar</strong> disco <strong>%2</strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Substituir</strong> uma partição no disco <strong>%2</strong> (%3) com %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionamento <strong>manual</strong> no disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: Atualmente: - + After: Depois: - + No EFI system partition configured Nenhuma partição de sistema EFI configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Uma partição de sistema EFI é necessária para iniciar %1.<br/><br/>Para configurar uma partição de sistema EFI, volte, selecione ou crie um sistema de arquivos FAT32 com o marcador <strong>esp</strong> ativado e ponto de montagem <strong>%2</strong>.<br/><br/>Você pode continuar sem definir uma partição de sistema EFI, mas seu sistema pode não iniciar. - + EFI system partition flag not set Marcador da partição do sistema EFI não definida - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Uma partição de sistema EFI é necessária para iniciar %1.<br/><br/>Uma partição foi configurada com o ponto de montagem <strong>%2</strong>, mas seu marcador <strong>esp</strong> não foi definido.<br/>Para definir o marcador, volte e edite a partição.<br/><br/>Você pode continuar sem definir um marcador, mas seu sistema pode não iniciar. - + Boot partition not encrypted Partição de boot não criptografada - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Uma partição de inicialização separada foi configurada juntamente com uma partição raiz criptografada, mas a partição de inicialização não é criptografada.<br/><br/>Há preocupações de segurança quanto a esse tipo de configuração, porque arquivos de sistema importantes são mantidos em uma partição não criptografada.<br/>Você pode continuar se quiser, mas o desbloqueio do sistema de arquivos acontecerá mais tarde durante a inicialização do sistema.<br/>Para criptografar a partição de inicialização, volte e recrie-a, selecionando <strong>Criptografar</strong> na janela de criação da partição. @@ -1914,22 +1937,22 @@ Saída: Padrão - + unknown desconhecido - + extended estendida - + unformatted não formatado - + swap swap @@ -2111,29 +2134,29 @@ Saída: SetHostNameJob - + Set hostname %1 Definir nome da máquina %1 - + Set hostname <strong>%1</strong>. Definir nome da máquina <strong>%1</strong>. - + Setting hostname %1. Definindo nome da máquina %1. - - + + Internal Error Erro interno - - + + Cannot write hostname to target system Não é possível gravar o nome da máquina para o sistema alvo @@ -2585,7 +2608,7 @@ Saída: WelcomeViewStep - + Welcome Bem-vindo diff --git a/lang/calamares_pt_PT.ts b/lang/calamares_pt_PT.ts index d08fc8a87..0afd8cc7a 100644 --- a/lang/calamares_pt_PT.ts +++ b/lang/calamares_pt_PT.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + Página em Branco + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Instalar @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Concluído @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Correr comando %1 %2 - + Running command %1 %2 A executar comando %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Operação %1 em execução. - + Bad working directory path Caminho do directório de trabalho errado - + Working directory %1 for python job %2 is not readable. Directório de trabalho %1 para a tarefa python %2 não é legível. - + Bad main script file Ficheiro de script principal errado - + Main script file %1 for python job %2 is not readable. Ficheiro de script principal %1 para a tarefa python %2 não é legível. - + Boost.Python error in job "%1". Erro Boost.Python na tarefa "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Voltar - - + + &Next &Próximo - - + + &Cancel &Cancelar - - + + Cancel installation without changing the system. Cancelar instalar instalação sem modificar o sistema. - + + Calamares Initialization Failed + Falha na Inicialização do Calamares + + + + %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. + %1 não pode ser instalado. O Calamares não foi capaz de carregar todos os módulos configurados. Isto é um problema da maneira como o Calamares é usado pela distribuição. + + + + <br/>The following modules could not be loaded: + <br/>Os módulos seguintes não puderam ser carregados: + + + &Install &Instalar - + Cancel installation? Cancelar a instalação? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Tem a certeza que pretende cancelar o atual processo de instalação? O instalador será encerrado e todas as alterações serão perdidas. - + &Yes &Sim - + &No &Não - + &Close &Fechar - + Continue with setup? Continuar com a configuração? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> O %1 instalador está prestes a fazer alterações ao seu disco em ordem para instalar %2.<br/><strong>Não será capaz de desfazer estas alterações.</strong> - + &Install now &Instalar agora - + Go &back Voltar &atrás - + &Done &Feito - + The installation is complete. Close the installer. A instalação está completa. Feche o instalador. - + Error Erro - + Installation Failed Falha na Instalação @@ -436,17 +459,17 @@ O instalador será encerrado e todas as alterações serão perdidas. ClearMountsJob - + Clear mounts for partitioning operations on %1 Limpar montagens para operações de particionamento em %1 - + Clearing mounts for partitioning operations on %1. A limpar montagens para operações de particionamento em %1. - + Cleared all mounts for %1 Limpar todas as montagens para %1 @@ -554,27 +577,27 @@ O instalador será encerrado e todas as alterações serão perdidas.Ta&manho: - + En&crypt En&criptar - + Logical Lógica - + Primary Primária - + GPT GPT - + Mountpoint already in use. Please select another one. Ponto de montagem já em uso. Por favor selecione outro. @@ -776,7 +799,7 @@ O instalador será encerrado e todas as alterações serão perdidas. DummyCppJob - + Dummy C++ Job Tarefa Dummy C++ @@ -834,7 +857,7 @@ O instalador será encerrado e todas as alterações serão perdidas.Flags: - + Mountpoint already in use. Please select another one. Ponto de montagem já em uso. Por favor selecione outro. @@ -1003,12 +1026,12 @@ O instalador será encerrado e todas as alterações serão perdidas. KeyboardPage - + Set keyboard model to %1.<br/> Definir o modelo do teclado para %1.<br/> - + Set keyboard layout to %1/%2. Definir esquema do teclado para %1/%2. @@ -1052,64 +1075,64 @@ O instalador será encerrado e todas as alterações serão perdidas.Formulário - + I accept the terms and conditions above. Aceito os termos e condições acima descritos. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Acordo de Licença</h1>Este procedimento instalará programas proprietários que estão sujeitos a termos de licenciamento. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Por favor reveja o Acordo de Utilização do Utilizador Final (EULA) acima.<br/>Se não concordar com os termos, o procedimento de instalação não pode continuar. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Acordo de Licença</h1>Este procedimento pode instalar programas proprietários que estão sujeitos a termos de licenciamento com vista a proporcionar funcionalidades adicionais e melhorar a experiência do utilizador. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Por favor reveja o Acordo de Utilização do Utilizador Final (EULA) acima.<br/>Se não concordar com os termos, programas proprietários não serão instalados, e em vez disso serão usadas soluções alternativas de código aberto. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 controlador</strong><br/>por %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 controlador gráfico</strong><br/><font color="Grey">por %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 extra para navegador</strong><br/><font color="Grey">por %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">por %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 pacote</strong><br/><font color="Grey">por %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">por %2</font> - + <a href="%1">view license agreement</a> <a href="%1">visualizar acordo de licença</a> @@ -1583,34 +1606,34 @@ O instalador será encerrado e todas as alterações serão perdidas. PartitionModel - - + + Free Space Espaço Livre - - + + New partition Nova partição - + Name Nome - + File System Sistema de Ficheiros - + Mount Point Ponto de Montagem - + Size Tamanho @@ -1639,8 +1662,8 @@ O instalador será encerrado e todas as alterações serão perdidas. - &Create - &Criar + Cre&ate + Cri&ar @@ -1658,17 +1681,17 @@ O instalador será encerrado e todas as alterações serão perdidas.Instalar &carregador de arranque em: - + Are you sure you want to create a new partition table on %1? Tem certeza de que deseja criar uma nova tabela de partições em %1? - + Can not create new partition Não é possível criar nova partição - + 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. A tabela de partições em %1 já tem %2 partições primárias, e não podem ser adicionadas mais. Em vez disso, por favor remova uma partição primária e adicione uma partição estendida. @@ -1676,97 +1699,97 @@ O instalador será encerrado e todas as alterações serão perdidas. PartitionViewStep - + Gathering system information... A recolher informações do sistema... - + Partitions Partições - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>paralelamente</strong> a outro sistema operativo. - + <strong>Erase</strong> disk and install %1. <strong>Apagar</strong> disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Substituir</strong> a partição com %1. - + <strong>Manual</strong> partitioning. Particionamento <strong>Manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>paralelamente</strong> a outro sistema operativo no disco <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Apagar</strong> disco <strong>%2</strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Substituir</strong> a partição no disco <strong>%2</strong> (%3) com %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionamento <strong>Manual</strong> no disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: Atual: - + After: Depois: - + No EFI system partition configured Nenhuma partição de sistema EFI configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. É necessária uma partição de sistema EFI para iniciar %1.<br/><br/>Para configurar uma partição de sistema EFI, volte atrás e selecione ou crie um sistema de ficheiros FAT32 com a flag <strong>esp</strong> ativada e ponto de montagem <strong>%2</strong>.<br/><br/>Pode continuar sem configurar uma partição de sistema EFI mas o seu sistema pode falhar o arranque. - + EFI system partition flag not set flag não definida da partição de sistema EFI - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. É necessária uma partição de sistema EFI para iniciar %1.<br/><br/>A partitição foi configurada com o ponto de montagem <strong>%2</strong> mas a sua flag <strong>esp</strong> não está definida.<br/>Para definir a flag, volte atrás e edite a partição.<br/><br/>Pode continuar sem definir a flag mas o seu sistema pode falhar o arranque. - + Boot partition not encrypted Partição de arranque não encriptada - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Foi preparada uma partição de arranque separada juntamente com uma partição root encriptada, mas a partição de arranque não está encriptada.<br/><br/>Existem preocupações de segurança com este tipo de configuração, por causa de importantes ficheiros de sistema serem guardados numa partição não encriptada.<br/>Se desejar pode continuar, mas o destrancar do sistema de ficheiros irá ocorrer mais tarde durante o arranque do sistema.<br/>Para encriptar a partição de arranque, volte atrás e recrie-a, e selecione <strong>Encriptar</strong> na janela de criação de partições. @@ -1912,22 +1935,22 @@ Saída de Dados: Padrão - + unknown desconhecido - + extended estendido - + unformatted não formatado - + swap swap @@ -2109,29 +2132,29 @@ Saída de Dados: SetHostNameJob - + Set hostname %1 Configurar nome da máquina %1 - + Set hostname <strong>%1</strong>. Definir nome da máquina <strong>%1</strong>. - + Setting hostname %1. A definir nome da máquina %1. - - + + Internal Error Erro interno - - + + Cannot write hostname to target system Não é possível escrever o nome da máquina para o sistema selecionado @@ -2583,7 +2606,7 @@ Saída de Dados: WelcomeViewStep - + Welcome Bem-vindo diff --git a/lang/calamares_ro.ts b/lang/calamares_ro.ts index 8364bf400..7cd83d32a 100644 --- a/lang/calamares_ro.ts +++ b/lang/calamares_ro.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Instalează @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Gata @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Rulează comanda %1 %2 - + Running command %1 %2 Se rulează comanda %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Se rulează operațiunea %1. - + Bad working directory path Calea dosarului de lucru este proastă - + Working directory %1 for python job %2 is not readable. Dosarul de lucru %1 pentru sarcina python %2 nu este citibil. - + Bad main script file Fișierul script principal este prost - + Main script file %1 for python job %2 is not readable. Fișierul script peincipal %1 pentru sarcina Python %2 nu este citibil. - + Boost.Python error in job "%1". Eroare Boost.Python în sarcina „%1”. @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Înapoi - - + + &Next &Următorul - - + + &Cancel &Anulează - - + + Cancel installation without changing the system. Anulează instalarea fără schimbarea sistemului. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install Instalează - + Cancel installation? Anulez instalarea? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Doriți să anulați procesul curent de instalare? Programul de instalare va ieși, iar toate modificările vor fi pierdute. - + &Yes &Da - + &No &Nu - + &Close În&chide - + Continue with setup? Continuați configurarea? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Programul de instalare %1 este pregătit să facă schimbări pe discul dumneavoastră pentru a instala %2.<br/><strong>Nu veți putea anula aceste schimbări.</strong> - + &Install now &Instalează acum - + Go &back Î&napoi - + &Done &Gata - + The installation is complete. Close the installer. Instalarea este completă. Închide instalatorul. - + Error Eroare - + Installation Failed Instalare eșuată @@ -436,17 +459,17 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. ClearMountsJob - + Clear mounts for partitioning operations on %1 Eliminați montările pentru operațiunea de partiționare pe %1 - + Clearing mounts for partitioning operations on %1. Se elimină montările pentru operațiunile de partiționare pe %1. - + Cleared all mounts for %1 S-au eliminat toate punctele de montare pentru %1 @@ -554,27 +577,27 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Mă&rime: - + En&crypt &Criptează - + Logical Logică - + Primary Primară - + GPT GPT - + Mountpoint already in use. Please select another one. Punct de montare existent. Vă rugăm alegeţi altul. @@ -776,7 +799,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -834,7 +857,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Flags: - + Mountpoint already in use. Please select another one. Punct de montare existent. Vă rugăm alegeţi altul. @@ -1003,12 +1026,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. KeyboardPage - + Set keyboard model to %1.<br/> Setează modelul tastaturii la %1.<br/> - + Set keyboard layout to %1/%2. Setează aranjamentul de tastatură la %1/%2. @@ -1052,64 +1075,64 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Formular - + I accept the terms and conditions above. Sunt de acord cu termenii și condițiile de mai sus. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Acord de licențiere</h1>Această procedură va instala software proprietar supus unor termeni de licențiere. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Vă rugăm să citiți Licența de utilizare (EULA) de mai sus.<br>Dacă nu sunteți de acord cu termenii, procedura de instalare nu poate continua. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Acord de licențiere</h1>Această procedură de instalare poate instala software proprietar supus unor termeni de licențiere, pentru a putea oferi funcții suplimentare și pentru a îmbunătăți experiența utilizatorilor. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Vă rugăm să citiți Licența de utilizare (EULA) de mai sus.<br/>Dacă nu sunteți de acord cu termenii, softwareul proprietar nu va fi instalat și se vor folosi alternative open-source în loc. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>de %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 driver grafic</strong><br/><font color="Grey">de %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 plugin de browser</strong><br/><font color="Grey">de %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">de %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 pachet</strong><br/><font color="Grey">de %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">de %2</font> - + <a href="%1">view license agreement</a> <a href="%1">vezi acordul de licențiere</a> @@ -1586,34 +1609,34 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. PartitionModel - - + + Free Space Spațiu liber - - + + New partition Partiție nouă - + Name Nume - + File System Sistem de fișiere - + Mount Point Punct de montare - + Size Mărime @@ -1642,8 +1665,8 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. - &Create - &Crează + Cre&ate + @@ -1661,17 +1684,17 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Instalează boot&loaderul pe: - + Are you sure you want to create a new partition table on %1? Sigur doriți să creați o nouă tabelă de partiție pe %1? - + Can not create new partition - + 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. @@ -1679,97 +1702,97 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. PartitionViewStep - + Gathering system information... Se adună informații despre sistem... - + Partitions Partiții - + Install %1 <strong>alongside</strong> another operating system. Instalează %1 <strong>laolaltă</strong> cu un alt sistem de operare. - + <strong>Erase</strong> disk and install %1. <strong>Șterge</strong> discul și instalează %1. - + <strong>Replace</strong> a partition with %1. <strong>Înlocuiește</strong> o partiție cu %1. - + <strong>Manual</strong> partitioning. Partiționare <strong>manuală</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalează %1 <strong>laolaltă</strong> cu un alt sistem de operare pe discul <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Șterge</strong> discul <strong>%2</strong> (%3) și instalează %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Înlocuiește</strong> o partiție pe discul <strong>%2</strong> (%3) cu %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Partiționare <strong>manuală</strong> a discului <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Discul <strong>%1</strong> (%2) - + Current: Actual: - + After: După: - + No EFI system partition configured Nicio partiție de sistem EFI nu a fost configurată - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Este necesară o partiție de sistem EFI pentru a porni %1.<br/><br/>Pentru a configura o partiție de sistem EFI, reveniți și selectați sau creați o partiție FAT32 cu flag-ul <strong>esp</strong> activat și montată la <strong>%2</strong>.<br/><br/>Puteți continua și fără configurarea unei partiții de sistem EFI, dar este posibil ca sistemul să nu pornească. - + EFI system partition flag not set Flag-ul de partiție de sistem pentru EFI nu a fost setat - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. O partiție de sistem EFI este necesară pentru a porni %1.<br/><br/>A fost configurată o partiție cu punct de montare la <strong>%2</strong> dar flag-ul <strong>esp</strong> al acesteia nu a fost setat.<br/>Pentru a seta flag-ul, reveniți și editați partiția.<br/><br/>Puteți continua și fără setarea flag-ului, dar este posibil ca sistemul să nu pornească. - + Boot partition not encrypted Partiția de boot nu este criptată - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. A fost creată o partiție de boot împreună cu o partiție root criptată, dar partiția de boot nu este criptată.<br/><br/>Sunt potențiale probleme de securitate cu un astfel de aranjament deoarece importante fișiere de sistem sunt păstrate pe o partiție necriptată.<br/>Puteți continua dacă doriți, dar descuierea sistemului se va petrece mai târziu în timpul pornirii.<br/>Pentru a cripta partiția de boot, reveniți și recreați-o, alegând opțiunea <strong>Criptează</strong> din fereastra de creare de partiții. @@ -1915,22 +1938,22 @@ Output Implicit - + unknown necunoscut - + extended extins - + unformatted neformatat - + swap swap @@ -2112,29 +2135,29 @@ Output SetHostNameJob - + Set hostname %1 Setează hostname %1 - + Set hostname <strong>%1</strong>. Setați un hostname <strong>%1</strong>. - + Setting hostname %1. Se setează hostname %1. - - + + Internal Error Eroare internă - - + + Cannot write hostname to target system Nu se poate scrie hostname pe sistemul țintă @@ -2586,7 +2609,7 @@ Output WelcomeViewStep - + Welcome Bine ați venit diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts index ba9f715ff..626b4cc44 100644 --- a/lang/calamares_ru.ts +++ b/lang/calamares_ru.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Установить @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Готово @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Выполнить команду %1 %2 - + Running command %1 %2 Выполняется команда %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Выполняется действие %1. - + Bad working directory path Неверный путь к рабочему каталогу - + Working directory %1 for python job %2 is not readable. Рабочий каталог %1 для задачи python %2 недоступен для чтения. - + Bad main script file Ошибочный главный файл сценария - + Main script file %1 for python job %2 is not readable. Главный файл сценария %1 для задачи python %2 недоступен для чтения. - + Boost.Python error in job "%1". Boost.Python ошибка в задаче "%1". @@ -159,96 +167,111 @@ Calamares::ViewManager - + &Back &Назад - - + + &Next &Далее - - + + &Cancel О&тмена - - + + Cancel installation without changing the system. Отменить установку без изменения системы. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install &Установить - + Cancel installation? Отменить установку? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Действительно прервать процесс установки? Программа установки сразу прекратит работу, все изменения будут потеряны. - + &Yes &Да - + &No &Нет - + &Close &Закрыть - + Continue with setup? Продолжить установку? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Программа установки %1 готова внести изменения на Ваш диск, чтобы установить %2.<br/><strong>Отменить эти изменения будет невозможно.</strong> - + &Install now Приступить к &установке - + Go &back &Назад - + &Done &Готово - + The installation is complete. Close the installer. Установка завершена. Закройте установщик. - + Error Ошибка - + Installation Failed Установка завершилась неудачей @@ -435,17 +458,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Освободить точки монтирования для выполнения разметки на %1 - + Clearing mounts for partitioning operations on %1. Освобождаются точки монтирования для выполнения разметки на %1. - + Cleared all mounts for %1 Освобождены все точки монтирования для %1 @@ -553,27 +576,27 @@ The installer will quit and all changes will be lost. Ра&змер: - + En&crypt Ши&фровать - + Logical Логический - + Primary Основной - + GPT GPT - + Mountpoint already in use. Please select another one. Точка монтирования уже занята. Пожалуйста, выберете другую. @@ -775,7 +798,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -833,7 +856,7 @@ The installer will quit and all changes will be lost. Флаги: - + Mountpoint already in use. Please select another one. Точка монтирования уже занята. Пожалуйста, выберете другую. @@ -1002,12 +1025,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Установить модель клавиатуры на %1.<br/> - + Set keyboard layout to %1/%2. Установить раскладку клавиатуры на %1/%2. @@ -1051,64 +1074,64 @@ The installer will quit and all changes will be lost. Форма - + I accept the terms and conditions above. Я принимаю приведенные выше условия. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Лицензионное соглашение</h1>На этом этапе будет установлено программное обеспечение с проприетарной лицензией. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Ознакомьтесь с приведенными выше Лицензионными соглашениями пользователя (EULA).<br/>Если не согласны с условиями, продолжение установки невозможно. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Лицензионное соглашение</h1>На этом этапе можно установить программное обеспечение с проприетарной лицензией, дающее дополнительные возможности и повышающее удобство работы. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Ознакомьтесь выше, с Лицензионными соглашениями конечного пользователя (EULA).<br/>Если вы не согласны с условиями, проприетарное программное обеспечение будет заменено на альтернативное открытое программное обеспечение. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>драйвер %1</strong><br/>от %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>видео драйвер %1</strong><br/><font color="Grey">от %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>плагин браузера %1</strong><br/><font color="Grey">от %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>кодек %1</strong><br/><font color="Grey">от %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>пакет %1</strong><br/><font color="Grey">от %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">от %2</font> - + <a href="%1">view license agreement</a> <a href="%1">посмотреть лицензионное соглашение</a> @@ -1582,34 +1605,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space Доступное место - - + + New partition Новый раздел - + Name Имя - + File System Файловая система - + Mount Point Точка монтирования - + Size Размер @@ -1638,8 +1661,8 @@ The installer will quit and all changes will be lost. - &Create - &Создать + Cre&ate + @@ -1657,17 +1680,17 @@ The installer will quit and all changes will be lost. Установить &загрузчик в: - + Are you sure you want to create a new partition table on %1? Вы уверены, что хотите создать новую таблицу разделов на %1? - + Can not create new partition Не удалось создать новый раздел - + 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. В таблице разделов на %1 уже %2 первичных разделов, больше добавить нельзя. Удалите один из первичных разделов и добавьте расширенный раздел. @@ -1675,97 +1698,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Сбор информации о системе... - + Partitions Разделы - + Install %1 <strong>alongside</strong> another operating system. Установить %1 <strong>параллельно</strong> к другой операционной системе. - + <strong>Erase</strong> disk and install %1. <strong>Очистить</strong> диск и установить %1. - + <strong>Replace</strong> a partition with %1. <strong>Заменить</strong> раздел на %1. - + <strong>Manual</strong> partitioning. <strong>Ручная</strong> разметка. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Установить %1 <strong>параллельно</strong> к другой операционной системе на диске <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Очистить</strong> диск <strong>%2</strong> (%3) и установить %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Заменить</strong> раздел на диске <strong>%2</strong> (%3) на %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ручная</strong> разметка диска <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Диск <strong>%1</strong> (%2) - + Current: Текущий: - + After: После: - + No EFI system partition configured Нет настроенного системного раздела EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Чтобы начать, необходим системный раздел EFI %1.<br/><br/>Для настройки системного раздела EFI, вернитесь, выберите или создайте файловую систему FAT32 с установленным флагом <strong>esp</strong> и точкой монтирования <strong>%2</strong>.<br/><br/>Вы можете продолжить и без настройки системного раздела EFI, но Ваша система может не загрузиться. - + EFI system partition flag not set Не установлен флаг системного раздела EFI - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Чтобы начать, необходим системный раздел EFI %1.<br/><br/>Был настроен раздел с точкой монтирования <strong>%2</strong>, но его флаг <strong>esp</strong> не установлен.<br/>Для установки флага вернитесь и отредактируйте раздел.<br/><br/>Вы можете продолжить и без установки флага, но Ваша система может не загрузиться. - + Boot partition not encrypted Загрузочный раздел не зашифрован - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Включено шифрование корневого раздела, но использован отдельный загрузочный раздел без шифрования.<br/><br/>При такой конфигурации возникают проблемы с безопасностью, потому что важные системные файлы хранятся на разделе без шифрования.<br/>Если хотите, можете продолжить, но файловая система будет разблокирована позднее во время загрузки системы.<br/>Чтобы включить шифрование загрузочного раздела, вернитесь назад и снова создайте его, отметив <strong>Шифровать</strong> в окне создания раздела. @@ -1910,22 +1933,22 @@ Output: По умолчанию - + unknown неизвестный - + extended расширенный - + unformatted неформатированный - + swap swap @@ -2107,29 +2130,29 @@ Output: SetHostNameJob - + Set hostname %1 Задать имя компьютера в сети %1 - + Set hostname <strong>%1</strong>. Задать имя компьютера в сети <strong>%1</strong>. - + Setting hostname %1. Задаю имя компьютера в сети для %1. - - + + Internal Error Внутренняя ошибка - - + + Cannot write hostname to target system Не возможно записать имя компьютера в целевую систему @@ -2581,7 +2604,7 @@ Output: WelcomeViewStep - + Welcome Добро пожаловать diff --git a/lang/calamares_sk.ts b/lang/calamares_sk.ts index 13a4d1d7b..a0f4c1c84 100644 --- a/lang/calamares_sk.ts +++ b/lang/calamares_sk.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + Prázdna stránka + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Inštalácia @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Hotovo @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Spustenie príkazu %1 %2 - + Running command %1 %2 Spúšťa sa príkaz %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Spúšťa sa operácia %1. - + Bad working directory path Nesprávna cesta k pracovnému adresáru - + Working directory %1 for python job %2 is not readable. Pracovný adresár %1 pre úlohu jazyka python %2 nie je možné čítať. - + Bad main script file Nesprávny súbor hlavného skriptu - + Main script file %1 for python job %2 is not readable. Súbor hlavného skriptu %1 pre úlohu jazyka python %2 nie je možné čítať. - + Boost.Python error in job "%1". Chyba knižnice Boost.Python v úlohe „%1“. @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Späť - - + + &Next Ď&alej - - + + &Cancel &Zrušiť - - + + Cancel installation without changing the system. Zruší inštaláciu bez zmeny systému. - + + Calamares Initialization Failed + Zlyhala inicializácia inštalátora Calamares + + + + %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. + Nie je možné nainštalovať %1. Calamares nemohol načítať všetky konfigurované moduly. Je problém s tým, ako sa Calamares používa pri distribúcii. + + + + <br/>The following modules could not be loaded: + <br/>Nebolo možné načítať nasledujúce moduly + + + &Install _Inštalovať - + Cancel installation? Zrušiť inštaláciu? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Skutočne chcete zrušiť aktuálny priebeh inštalácie? Inštalátor sa ukončí a všetky zmeny budú stratené. - + &Yes _Áno - + &No _Nie - + &Close _Zavrieť - + Continue with setup? Pokračovať v inštalácii? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Inštalátor distribúcie %1 sa chystá vykonať zmeny na vašom disku, aby nainštaloval distribúciu %2. <br/><strong>Tieto zmeny nebudete môcť vrátiť späť.</strong> - + &Install now &Inštalovať teraz - + Go &back Prejsť s&päť - + &Done _Dokončiť - + The installation is complete. Close the installer. Inštalácia je dokončená. Zatvorí inštalátor. - + Error Chyba - + Installation Failed Inštalácia zlyhala @@ -436,17 +459,17 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. ClearMountsJob - + Clear mounts for partitioning operations on %1 Vymazať pripojenia pre operácie rozdelenia oddielov na zariadení %1 - + Clearing mounts for partitioning operations on %1. Vymazávajú sa pripojenia pre operácie rozdelenia oddielov na zariadení %1. - + Cleared all mounts for %1 Vymazané všetky pripojenia pre zariadenie %1 @@ -485,12 +508,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + Príkaz beží v hostiteľskom prostredí a potrebuje poznať koreňovú cestu, ale nie je definovaný žiadny koreňový prípojný bod. The command needs to know the user's name, but no username is defined. - + Príkaz musí poznať meno používateľa, ale žiadne nie je definované. @@ -554,27 +577,27 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Veľ&kosť: - + En&crypt Zaši&frovať - + Logical Logický - + Primary Primárny - + GPT GPT - + Mountpoint already in use. Please select another one. Bod pripojenia sa už používa. Prosím, vyberte iný. @@ -776,7 +799,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. DummyCppJob - + Dummy C++ Job Fiktívna úloha jazyka C++ @@ -834,7 +857,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Značky: - + Mountpoint already in use. Please select another one. Bod pripojenia sa už používa. Prosím, vyberte iný. @@ -1003,12 +1026,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. KeyboardPage - + Set keyboard model to %1.<br/> Nastavenie modelu klávesnice na %1.<br/> - + Set keyboard layout to %1/%2. Nastavenie rozloženia klávesnice na %1/%2. @@ -1052,64 +1075,64 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Forma - + I accept the terms and conditions above. Prijímam podmienky vyššie. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licenčné podmienky</h1>Tento proces inštalácie môže nainštalovať uzavretý softvér, ktorý je predmetom licenčných podmienok. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Prosím, prečítajte si licenčnú zmluvu koncového používateľa (EULAs) vyššie.<br/>Ak nesúhlasíte s podmienkami, proces inštalácie nemôže pokračovať. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licenčné podmienky</h1>Tento proces inštalácie môže nainštalovať uzavretý softvér, ktorý je predmetom licenčných podmienok v rámci poskytovania dodatočných funkcií a vylepšenia používateľských skúseností. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Prosím, prečítajte si licenčnú zmluvu koncového používateľa (EULAs) vyššie.<br/>Ak nesúhlasíte s podmienkami, uzavretý softvér nebude nainštalovaný a namiesto neho budú použité alternatívy s otvoreným zdrojom. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>Ovládač %1</strong><br/>vytvoril %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>Ovládač grafickej karty %1</strong><br/><font color="Grey">vytvoril %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>Zásuvný modul prehliadača %1</strong><br/><font color="Grey">vytvoril %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>Kodek %1</strong><br/><font color="Grey">vytvoril %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>Balík %1</strong><br/><font color="Grey">vytvoril %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">vytvoril %2</font> - + <a href="%1">view license agreement</a> <a href="%1">Zobraziť licenčné podmienky</a> @@ -1286,7 +1309,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. The password contains too few uppercase letters - + Heslo obsahuje príliš málo veľkých písmen @@ -1296,17 +1319,17 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. The password contains too few lowercase letters - + Heslo obsahuje príliš málo malých písmen The password contains less than %1 non-alphanumeric characters - + Heslo obsahuje menej ako% 1 nealfanumerických znakov The password contains too few non-alphanumeric characters - + Heslo obsahuje príliš málo nealfanumerických znakov @@ -1336,32 +1359,32 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. The password contains more than %1 same characters consecutively - + Heslo obsahuje viac ako% 1 rovnakých znakov za sebou The password contains too many same characters consecutively - + Heslo obsahuje príliš veľa rovnakých znakov The password contains more than %1 characters of the same class consecutively - + Heslo obsahuje postupne viac ako% 1 znakov toho istého typu The password contains too many characters of the same class consecutively - + Heslo obsahuje postupne príliš veľa znakov toho istého typu The password contains monotonic sequence longer than %1 characters - + Heslo obsahuje monotónnu sekvenciu dlhšiu ako %1 znakov The password contains too long of a monotonic character sequence - + Heslo obsahuje príliš dlhú sekvenciu monotónnych znakov @@ -1376,7 +1399,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Password generation failed - required entropy too low for settings - + Generovanie hesla zlyhalo - potrebná entropia je príliš nízka na nastavenie @@ -1583,34 +1606,34 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. PartitionModel - - + + Free Space Voľné miesto - - + + New partition Nový oddiel - + Name Názov - + File System Systém súborov - + Mount Point Bod pripojenia - + Size Veľkosť @@ -1639,8 +1662,8 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. - &Create - &Vytvoriť + Cre&ate + Vytvoriť @@ -1658,115 +1681,115 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Nainštalovať &zavádzač na: - + Are you sure you want to create a new partition table on %1? Naozaj chcete vytvoriť novú tabuľku oddielov na zariadení %1? - + Can not create new partition Nedá sa vytvoriť nový oddiel - + 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. - + Tabuľka oddielov na %1 už obsahuje primárne oddiely %2 a nie je možné pridávať žiadne ďalšie. Odstráňte jeden primárny oddiel a namiesto toho pridajte rozšírenú oblasť. PartitionViewStep - + Gathering system information... Zbierajú sa informácie o počítači... - + Partitions Oddiely - + Install %1 <strong>alongside</strong> another operating system. Inštalácia distribúcie %1 <strong>popri</strong> inom operačnom systéme. - + <strong>Erase</strong> disk and install %1. <strong>Vymazanie</strong> disku a inštalácia distribúcie %1. - + <strong>Replace</strong> a partition with %1. <strong>Nahradenie</strong> oddielu distribúciou %1. - + <strong>Manual</strong> partitioning. <strong>Ručné</strong> rozdelenie oddielov. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Inštalácia distribúcie %1 <strong>popri</strong> inom operačnom systéme na disku <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Vymazanie</strong> disku <strong>%2</strong> (%3) a inštalácia distribúcie %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Nahradenie</strong> oddielu na disku <strong>%2</strong> (%3) distribúciou %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ručné</strong> rozdelenie oddielov na disku <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Teraz: - + After: Potom: - + No EFI system partition configured Nie je nastavený žiadny oddiel systému EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Oddiel systému EFI je potrebný pre spustenie distribúcie %1.<br/><br/>Na nastavenie oddielu systému EFI prejdite späť a vyberte alebo vytvorte systém súborov FAT32 s povolenou značkou <strong>esp</strong> a bod pripojenia <strong>%2</strong>.<br/><br/>Môžete pokračovať bez nastavenia oddielu systému EFI, ale váš systém môže pri spustení zlyhať. - + EFI system partition flag not set Značka oddielu systému EFI nie je nastavená - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Oddiel systému EFI je potrebný pre spustenie distribúcie %1.<br/><br/>Oddiel bol nastavený s bodom pripojenia <strong>%2</strong>, ale nemá nastavenú značku <strong>esp</strong>.<br/>Na nastavenie značky prejdite späť a upravte oddiel.<br/><br/>Môžete pokračovať bez nastavenia značky, ale váš systém môže pri spustení zlyhať. - + Boot partition not encrypted Zavádzací oddiel nie je zašifrovaný - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Spolu so zašifrovaným koreňovým oddielom bol nainštalovaný oddelený zavádzací oddiel, ktorý ale nie je zašifrovaný.<br/><br/>S týmto typom inštalácie je ohrozená bezpečnosť, pretože dôležité systémové súbory sú uchovávané na nezašifrovanom oddieli.<br/>Ak si to želáte, môžete pokračovať, ale neskôr, počas spúšťania systému sa vykoná odomknutie systému súborov.<br/>Na zašifrovanie zavádzacieho oddielu prejdite späť a vytvorte ju znovu vybraním voľby <strong>Zašifrovať</strong> v okne vytvárania oddielu. @@ -1912,22 +1935,22 @@ Výstup: Predvolený - + unknown neznámy - + extended rozšírený - + unformatted nenaformátovaný - + swap odkladací @@ -2109,29 +2132,29 @@ Výstup: SetHostNameJob - + Set hostname %1 Nastavenie názvu hostiteľa %1 - + Set hostname <strong>%1</strong>. Nastavenie názvu hostiteľa <strong>%1</strong>. - + Setting hostname %1. Nastavuje sa názov hostiteľa %1. - - + + Internal Error Vnútorná chyba - - + + Cannot write hostname to target system Nedá sa zapísať názov hostiteľa do cieľového systému @@ -2583,7 +2606,7 @@ Výstup: WelcomeViewStep - + Welcome Uvítanie diff --git a/lang/calamares_sl.ts b/lang/calamares_sl.ts index 1da5bd297..73a05cfe1 100644 --- a/lang/calamares_sl.ts +++ b/lang/calamares_sl.ts @@ -45,6 +45,14 @@ + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Namesti @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Končano @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Nepravilna pot delovne mape - + Working directory %1 for python job %2 is not readable. Ni mogoče brati delovne mape %1 za pythonovo opravilo %2. - + Bad main script file Nepravilna datoteka glavnega skripta - + Main script file %1 for python job %2 is not readable. Ni mogoče brati datoteke %1 glavnega skripta za pythonovo opravilo %2. - + Boost.Python error in job "%1". Napaka Boost.Python v opravilu "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Nazaj - - + + &Next &Naprej - - + + &Cancel - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Preklic namestitve? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Ali res želite preklicati trenutni namestitveni proces? Namestilni program se bo končal in vse spremembe bodo izgubljene. - + &Yes - + &No - + &Close - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error Napaka - + Installation Failed Namestitev je spodletela @@ -436,17 +459,17 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -554,27 +577,27 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Ve&likost - + En&crypt - + Logical Logičen - + Primary Primaren - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -776,7 +799,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. DummyCppJob - + Dummy C++ Job @@ -834,7 +857,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Zastavice: - + Mountpoint already in use. Please select another one. @@ -1003,12 +1026,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. KeyboardPage - + Set keyboard model to %1.<br/> Nastavi model tipkovnice na %1.<br/> - + Set keyboard layout to %1/%2. Nastavi razporeditev tipkovnice na %1/%2. @@ -1052,64 +1075,64 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Oblika - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1583,34 +1606,34 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. PartitionModel - - + + Free Space Razpoložljiv prostor - - + + New partition Nov razdelek - + Name Ime - + File System Datotečni sistem - + Mount Point Priklopna točka - + Size Velikost @@ -1639,8 +1662,8 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - &Create - &Ustvari + Cre&ate + @@ -1658,17 +1681,17 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + Are you sure you want to create a new partition table on %1? Ali ste prepričani, da želite ustvariti novo razpredelnico razdelkov na %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. PartitionViewStep - + Gathering system information... Zbiranje informacij o sistemu ... - + Partitions Razdelki - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: Potem: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1909,22 +1932,22 @@ Output: Privzeto - + unknown - + extended - + unformatted - + swap @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome Dobrodošli diff --git a/lang/calamares_sq.ts b/lang/calamares_sq.ts index e1696323a..c62e9d461 100644 --- a/lang/calamares_sq.ts +++ b/lang/calamares_sq.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + Faqe e Zbrazët + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Instaloje @@ -105,7 +113,7 @@ Calamares::JobThread - + Done U bë @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Xhiro urdhrin %1 %2 - + Running command %1 %2 Po xhirohet urdhri %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Po xhirohet %1 veprim. - + Bad working directory path Shteg i gabuar drejtorie pune - + Working directory %1 for python job %2 is not readable. Drejtoria e punës %1 për aktin python %2 s’është e lexueshme. - + Bad main script file Kartelë kryesore programthi e dëmtuar - + Main script file %1 for python job %2 is not readable. Kartela kryesore e programthit file %1 për aktin python %2 s’është e lexueshme. - + Boost.Python error in job "%1". Gabim Boost.Python tek akti \"%1\". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Mbrapsht - - + + &Next &Pasuesi - - + + &Cancel &Anuloje - - + + Cancel installation without changing the system. Anuloje instalimin pa ndryshuar sistemin. - + + Calamares Initialization Failed + Gatitja e Calamares-it Dështoi + + + + %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. + %1 s’mund të instalohet. Calamares s’qe në gjendje të ngarkonte krejt modulet e konfiguruar. Ky është një problem që lidhet me mënyrën se si përdoret Calamares nga shpërndarja. + + + + <br/>The following modules could not be loaded: + <br/>S’u ngarkuan dot modulet vijues: + + + &Install &Instaloje - + Cancel installation? Të anulohet instalimi? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Doni vërtet të anulohet procesi i tanishëm i instalimit? Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. - + &Yes &Po - + &No &Jo - + &Close &Mbylle - + Continue with setup? Të vazhdohet me rregullimin? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Instaluesi %1 është një hap larg nga bërja e ndryshimeve në diskun tuaj, që të mund të instalojë %2.<br/><strong>S’do të jeni në gjendje t’i zhbëni këto ndryshime.</strong> - + &Install now &Instaloje tani - + Go &back Kthehu &mbrapsht - + &Done &U bë - + The installation is complete. Close the installer. Instalimi u plotësua. Mbylle instaluesin. - + Error Gabim - + Installation Failed Instalimi Dështoi @@ -436,17 +459,17 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. ClearMountsJob - + Clear mounts for partitioning operations on %1 Hiqi montimet për veprime pjesëzimi te %1 - + Clearing mounts for partitioning operations on %1. Po hiqen montimet për veprime pjesëzimi te %1. - + Cleared all mounts for %1 U hoqën krejt montimet për %1 @@ -554,27 +577,27 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. &Madhësi: - + En&crypt &Fshehtëzoje - + Logical Logjike - + Primary Parësore - + GPT GPT - + Mountpoint already in use. Please select another one. Pikë montimi tashmë e përdorur. Ju lutemi, përzgjidhni një tjetër. @@ -776,7 +799,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. DummyCppJob - + Dummy C++ Job Akt C++ Dummy @@ -834,7 +857,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Flamurka: - + Mountpoint already in use. Please select another one. Pikë montimi tashmë e përdorur. Ju lutemi, përzgjidhni një tjetër. @@ -1003,12 +1026,12 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. KeyboardPage - + Set keyboard model to %1.<br/> Si model tastiere do të caktohet %1.<br/> - + Set keyboard layout to %1/%2. Si model tastiere do të caktohet %1%2. @@ -1052,64 +1075,64 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Formular - + I accept the terms and conditions above. I pranoj termat dhe kushtet më sipër. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Marrëveshje Licence</h1>Kjo procedurë rregullimi do të instalojë software pronësor që është subjekt kushtesh licencimi. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Ju lutemi, shqyrtoni Marrëveshje Licencimi Për Përdorues të Thjeshtë (EULAs) më sipër.<br/>Nëse nuk pajtoheni me kushtet, procedura e rregullimit s’mund të shkojë më tej. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Marrëveshje Licence</h1>Që të furnizojë veçori shtesë dhe të përmirësojë punën e përdoruesit, kjo procedurë rregullimi mundet të instalojë software pronësor që është subjekt kushtesh licencimi. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Ju lutemi, shqyrtoni Marrëveshje Licencimi Për Përdorues të Thjeshtë (EULAs) më sipër.<br/>Nëse nuk pajtoheni me kushtet, nuk do të instalohet software pronësor, dhe në vend të tij do të përdoren alternativa nga burimi i hapët. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>përudhës %1</strong><br/>nga %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>Përudhës grafik %1</strong><br/><font color=\"Grey\">nga %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>Shtojcë shfletuesi %1</strong><br/><font color=\"Grey\">nga %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>Kodek %1</strong><br/><font color=\"Grey\">nga %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>Paketë %1</strong><br/><font color=\"Grey\">nga %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color=\"Grey\">nga %2</font> - + <a href="%1">view license agreement</a> <a href="%1">shihni marrëveshje licence</a> @@ -1583,34 +1606,34 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. PartitionModel - - + + Free Space Hapësirë e Lirë - - + + New partition Pjesë e re - + Name Emër - + File System Sistem Kartelash - + Mount Point Pikë Montimi - + Size Madhësi @@ -1639,7 +1662,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. - &Create + Cre&ate &Krijoje @@ -1658,17 +1681,17 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Instalo &ngarkues nisjesh në: - + Are you sure you want to create a new partition table on %1? Jeni i sigurt se doni të krijoni një tabelë të re pjesësh në %1? - + Can not create new partition S’krijohet dot pjesë e re - + 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. Tabela e pjesëzimit te %1 ka tashmë %2 pjesë parësore, dhe s’mund të shtohen të tjera. Ju lutemi, në vend të kësaj, hiqni një pjesë parësore dhe shtoni një pjesë të zgjeruar. @@ -1676,97 +1699,97 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. PartitionViewStep - + Gathering system information... Po grumbullohen të dhëna mbi sistemin… - + Partitions Pjesë - + Install %1 <strong>alongside</strong> another operating system. Instalojeni %1 <strong>në krah</strong> të një tjetër sistemi operativ. - + <strong>Erase</strong> disk and install %1. <strong>Fshije</strong> diskun dhe instalo %1. - + <strong>Replace</strong> a partition with %1. <strong>Zëvendësojeni</strong> një pjesë me %1. - + <strong>Manual</strong> partitioning. Pjesëzim <strong>dorazi</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instaloje %1 <strong>në krah</strong> të një tjetri sistemi operativ në diskun <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Fshije</strong> diskun <strong>%2</strong> (%3) dhe instalo %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Zëvendëso</strong> një pjesë te disku <strong>%2</strong> (%3) me %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Pjesëzim <strong>dorazi</strong> në diskun <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disku <strong>%1</strong> (%2) - + Current: E tanishmja: - + After: Më Pas: - + No EFI system partition configured S’ka të formësuar pjesë sistemi EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Që të niset %1, është e domosdoshme një pjesë sistemi EFI.<br/><br/>Që të formësoni një pjesë sistemi EFI, kthehuni mbrapsht dhe përzgjidhni ose krijoni një sistem kartelash FAT32 me flamurkën <strong>esp</strong> të aktivizuar dhe me pikë montimi <strong>%2</strong>.<br/><br/>Mund të vazhdoni pa rregulluar një pjesë sistemi EFI, por mundet që sistemi të mos arrijë dot të niset. - + EFI system partition flag not set S’është vënë flamurkë EFI pjese sistemi - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Që të niset %1, është e domosdoshme një pjesë sistemi EFI.<br/><br/>Është formësuar një pjesë me pikë montimi <strong>%2</strong>, por pa i vënë flamurkën <strong>esp</strong>.<br/>Që t’ia vini, kthehuni mbrapsht dhe përpunoni pjesë.<br/><br/>Mund të vazhdoni pa i vënë flamurkën, por mundet që sistemi të mos arrijë dot të niset. - + Boot partition not encrypted Pjesë nisjesh e pafshehtëzuar - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Tok me pjesën e fshehtëzuar <em>root</em> qe rregulluar edhe një pjesë <em>boot</em> veçmas, por pjesa <em>boot</em> s’është e fshehtëzuar.<br/><br/>Ka preokupime mbi sigurinë e këtij lloj rregullimi, ngaqë kartela të rëndësishme sistemi mbahen në një pjesë të pafshehtëzuar.<br/>Mund të vazhdoni nëse doni, por shkyçja e sistemit të kartelave do të ndodhë më vonë, gjatë nisjes së sistemit.<br/>Që të fshehtëzoni pjesën <em>boot</em>, kthehuni mbrapsht dhe rikrijojeni, duke përzgjedhur te skena e krijimit të pjesës <strong>Fshehtëzoje</strong>. @@ -1912,22 +1935,22 @@ Përfundim: Parazgjedhje - + unknown e panjohur - + extended extended - + unformatted e paformatuar - + swap swap @@ -2109,29 +2132,29 @@ Përfundim: SetHostNameJob - + Set hostname %1 Cakto strehëemër %1 - + Set hostname <strong>%1</strong>. Cakto strehëemër <strong>%1</strong>. - + Setting hostname %1. Po caktohet strehëemri %1. - - + + Internal Error Gabim i Brendshëm - - + + Cannot write hostname to target system S’shkruhet dot strehëemër te sistemi i synuar @@ -2583,7 +2606,7 @@ Përfundim: WelcomeViewStep - + Welcome Mirë se vini diff --git a/lang/calamares_sr.ts b/lang/calamares_sr.ts index 669ed0ec3..311181629 100644 --- a/lang/calamares_sr.ts +++ b/lang/calamares_sr.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Инсталирај @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Завршено @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Покрени команду %1 %2 - + Running command %1 %2 Извршавам команду %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Извршавам %1 операцију. - + Bad working directory path Лоша путања радног директоријума - + Working directory %1 for python job %2 is not readable. Радни директоријум %1 за питонов посао %2 није читљив. - + Bad main script file Лош фајл главне скрипте - + Main script file %1 for python job %2 is not readable. Фајл главне скрипте %1 за питонов посао %2 није читљив. - + Boost.Python error in job "%1". Boost.Python грешка у послу „%1“. @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Назад - - + + &Next &Следеће - - + + &Cancel &Откажи - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Отказати инсталацију? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Да ли стварно желите да прекинете текући процес инсталације? Инсталер ће бити затворен и све промене ће бити изгубљене. - + &Yes - + &No - + &Close - + Continue with setup? Наставити са подешавањем? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Инсталирај сада - + Go &back Иди &назад - + &Done - + The installation is complete. Close the installer. - + Error Грешка - + Installation Failed Инсталација није успела @@ -436,17 +459,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Уклони тачке припајања за операције партиције на %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Уклоњене све тачке припајања за %1 @@ -554,27 +577,27 @@ The installer will quit and all changes will be lost. Вели&чина - + En&crypt - + Logical Логичка - + Primary Примарна - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -776,7 +799,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -834,7 +857,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1003,12 +1026,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1052,64 +1075,64 @@ The installer will quit and all changes will be lost. Форма - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1583,34 +1606,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space - - + + New partition - + Name Назив - + File System Фајл систем - + Mount Point - + Size @@ -1639,7 +1662,7 @@ The installer will quit and all changes will be lost. - &Create + Cre&ate @@ -1658,17 +1681,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: Тренутно: - + After: После: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1909,22 +1932,22 @@ Output: подразумевано - + unknown непознато - + extended проширена - + unformatted неформатирана - + swap @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error Интерна грешка - - + + Cannot write hostname to target system @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome Добродошли diff --git a/lang/calamares_sr@latin.ts b/lang/calamares_sr@latin.ts index 96c30bf86..646eba512 100644 --- a/lang/calamares_sr@latin.ts +++ b/lang/calamares_sr@latin.ts @@ -45,6 +45,14 @@ + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Instaliraj @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Gotovo @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Neispravna putanja do radne datoteke - + Working directory %1 for python job %2 is not readable. Nemoguće pročitati radnu datoteku %1 za funkciju %2 u Python-u. - + Bad main script file Neispravan glavna datoteka za skriptu - + Main script file %1 for python job %2 is not readable. Glavna datoteka za skriptu %1 za Python funkciju %2 se ne može pročitati. - + Boost.Python error in job "%1". Boost.Python greška u funkciji %1 @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Nazad - - + + &Next &Dalje - - + + &Cancel &Prekini - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Prekini instalaciju? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Da li stvarno želite prekinuti trenutni proces instalacije? Instaler će se zatvoriti i sve promjene će biti izgubljene. - + &Yes - + &No - + &Close - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error Greška - + Installation Failed Neuspješna instalacija @@ -436,17 +459,17 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. ClearMountsJob - + Clear mounts for partitioning operations on %1 Skini tačke montiranja za operacije nad particijama na %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Sve tačke montiranja na %1 skinute @@ -554,27 +577,27 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. Veli&čina - + En&crypt - + Logical Logička - + Primary Primarna - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -776,7 +799,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. DummyCppJob - + Dummy C++ Job @@ -834,7 +857,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + Mountpoint already in use. Please select another one. @@ -1003,12 +1026,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1052,64 +1075,64 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1583,34 +1606,34 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. PartitionModel - - + + Free Space Slobodan prostor - - + + New partition Nova particija - + Name Naziv - + File System Fajl sistem - + Mount Point - + Size Veličina @@ -1639,7 +1662,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - &Create + Cre&ate @@ -1658,17 +1681,17 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. PartitionViewStep - + Gathering system information... - + Partitions Particije - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: Poslije: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1909,22 +1932,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 Postavi ime računara %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome Dobrodošli diff --git a/lang/calamares_sv.ts b/lang/calamares_sv.ts index e60aa4e03..ecdea6978 100644 --- a/lang/calamares_sv.ts +++ b/lang/calamares_sv.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Installera @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Klar @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Kör kommando %1 %2 - + Running command %1 %2 Kör kommando %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Kör %1-operation - + Bad working directory path Arbetskatalogens sökväg är ogiltig - + Working directory %1 for python job %2 is not readable. Arbetskatalog %1 för pythonuppgift %2 är inte läsbar. - + Bad main script file Ogiltig huvudskriptfil - + Main script file %1 for python job %2 is not readable. Huvudskriptfil %1 för pythonuppgift %2 är inte läsbar. - + Boost.Python error in job "%1". Boost.Python-fel i uppgift "%'1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Bakåt - - + + &Next &Nästa - - + + &Cancel Avbryt - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Avbryt installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Är du säker på att du vill avsluta installationen i förtid? Alla ändringar kommer att gå förlorade. - + &Yes - + &No - + &Close - + Continue with setup? Fortsätt med installation? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1-installeraren är på väg att göra ändringar för att installera %2.<br/><strong>Du kommer inte att kunna ångra dessa ändringar!strong> - + &Install now &Installera nu - + Go &back Gå &bakåt - + &Done - + The installation is complete. Close the installer. - + Error Fel - + Installation Failed Installationen misslyckades @@ -436,17 +459,17 @@ Alla ändringar kommer att gå förlorade. ClearMountsJob - + Clear mounts for partitioning operations on %1 Rensa monteringspunkter för partitionering på %1 - + Clearing mounts for partitioning operations on %1. Rensar monteringspunkter för partitionering på %1. - + Cleared all mounts for %1 Rensade alla monteringspunkter för %1 @@ -554,27 +577,27 @@ Alla ändringar kommer att gå förlorade. Storlek: - + En&crypt Kr%yptera - + Logical Logisk - + Primary Primär - + GPT GPT - + Mountpoint already in use. Please select another one. Monteringspunkt används redan. Välj en annan. @@ -776,7 +799,7 @@ Alla ändringar kommer att gå förlorade. DummyCppJob - + Dummy C++ Job @@ -834,7 +857,7 @@ Alla ändringar kommer att gå förlorade. Flaggor: - + Mountpoint already in use. Please select another one. Monteringspunkt används redan. Välj en annan. @@ -1003,12 +1026,12 @@ Alla ändringar kommer att gå förlorade. KeyboardPage - + Set keyboard model to %1.<br/> Sätt tangenbordsmodell till %1.<br/> - + Set keyboard layout to %1/%2. Sätt tangentbordslayout till %1/%2. @@ -1052,64 +1075,64 @@ Alla ändringar kommer att gå förlorade. Formulär - + I accept the terms and conditions above. Jag accepterar villkoren och avtalet ovan. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licensavtal</h1>Denna installationsprocedur kommer att installera proprietär mjukvara som omfattas av licensvillkor. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Läs igenom End User Agreements (EULA:s) ovan.<br/>Om du inte accepterar villkoren kan inte installationsproceduren fortsätta. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licensavtal</h1>Denna installationsprocedur kan installera proprietär mjukvara som omfattas av licensvillkor för att tillhandahålla ytterligare funktioner och förbättra användarupplevelsen. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1-drivrutin</strong><br/>från %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 grafikdrivrutin</strong><br/><font color="Grey">från %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 insticksprogram</strong><br/><font color="Grey">från %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">från %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1-paket</strong><br/><font color="Grey">från %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">från %2</font> - + <a href="%1">view license agreement</a> <a href="%1">visa licensavtal</a> @@ -1583,34 +1606,34 @@ Alla ändringar kommer att gå förlorade. PartitionModel - - + + Free Space Ledigt utrymme - - + + New partition Ny partition - + Name Namn - + File System Filsystem - + Mount Point Monteringspunkt - + Size Storlek @@ -1639,8 +1662,8 @@ Alla ändringar kommer att gå förlorade. - &Create - Skapa + Cre&ate + @@ -1658,17 +1681,17 @@ Alla ändringar kommer att gå förlorade. Installera uppstartshanterare på: - + Are you sure you want to create a new partition table on %1? Är du säker på att du vill skapa en ny partitionstabell på %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ Alla ändringar kommer att gå förlorade. PartitionViewStep - + Gathering system information... Samlar systeminformation... - + Partitions Partitioner - + Install %1 <strong>alongside</strong> another operating system. Installera %1 <strong>bredvid</strong> ett annat operativsystem. - + <strong>Erase</strong> disk and install %1. <strong>Rensa</strong> disken och installera %1. - + <strong>Replace</strong> a partition with %1. <strong>Ersätt</strong> en partition med %1. - + <strong>Manual</strong> partitioning. <strong>Manuell</strong> partitionering. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installera %1 <strong>bredvid</strong> ett annat operativsystem på disken <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Rensa</strong> disken <strong>%2</strong> (%3) och installera %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Ersätt</strong> en partition på disken <strong>%2</strong> (%3) med %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manuell</strong> partitionering på disken <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Nuvarande: - + After: Efter: - + No EFI system partition configured Ingen EFI system partition konfigurerad - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1909,22 +1932,22 @@ Output: Standard - + unknown okänd - + extended utökad - + unformatted oformaterad - + swap @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 Ange värdnamn %1 - + Set hostname <strong>%1</strong>. Ange värdnamn <strong>%1</strong>. - + Setting hostname %1. Anger värdnamn %1. - - + + Internal Error Internt fel - - + + Cannot write hostname to target system Kan inte skriva värdnamn till målsystem @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome Välkommen diff --git a/lang/calamares_th.ts b/lang/calamares_th.ts index cee8c5501..848722d41 100644 --- a/lang/calamares_th.ts +++ b/lang/calamares_th.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install ติดตั้ง @@ -105,7 +113,7 @@ Calamares::JobThread - + Done เสร็จสิ้น @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 ทำคำสั่ง %1 %2 - + Running command %1 %2 กำลังเรียกใช้คำสั่ง %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. การปฏิบัติการ %1 กำลังทำงาน - + Bad working directory path เส้นทางไดเรคทอรีที่ใช้ทำงานไม่ถูกต้อง - + Working directory %1 for python job %2 is not readable. ไม่สามารถอ่านไดเรคทอรีที่ใช้ทำงาน %1 สำหรับ python %2 ได้ - + Bad main script file ไฟล์สคริปต์หลักไม่ถูกต้อง - + Main script file %1 for python job %2 is not readable. ไม่สามารถอ่านไฟล์สคริปต์หลัก %1 สำหรับ python %2 ได้ - + Boost.Python error in job "%1". Boost.Python ผิดพลาดที่งาน "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &B ย้อนกลับ - - + + &Next &N ถัดไป - - + + &Cancel &C ยกเลิก - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? ยกเลิกการติดตั้ง? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. คุณต้องการยกเลิกกระบวนการติดตั้งที่กำลังดำเนินการอยู่หรือไม่? ตัวติดตั้งจะสิ้นสุดการทำงานและไม่บันทึกการเปลี่ยนแปลงที่ได้ดำเนินการก่อนหน้านี้ - + &Yes - + &No - + &Close - + Continue with setup? ดำเนินการติดตั้งต่อหรือไม่? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> ตัวติดตั้ง %1 กำลังพยายามที่จะทำการเปลี่ยนแปลงในดิสก์ของคุณเพื่อติดตั้ง %2<br/><strong>คุณจะไม่สามารถยกเลิกการเปลี่ยนแปลงเหล่านี้ได้</strong> - + &Install now &ติดตั้งตอนนี้ - + Go &back กลั&บไป - + &Done - + The installation is complete. Close the installer. - + Error ข้อผิดพลาด - + Installation Failed การติดตั้งล้มเหลว @@ -436,17 +459,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 ล้างจุดเชื่อมต่อสำหรับการแบ่งพาร์ทิชันบน %1 - + Clearing mounts for partitioning operations on %1. กำลังล้างจุดเชื่อมต่อสำหรับการดำเนินงานเกี่ยวกับพาร์ทิชันบน %1 - + Cleared all mounts for %1 ล้างจุดเชื่อมต่อทั้งหมดแล้วสำหรับ %1 @@ -554,27 +577,27 @@ The installer will quit and all changes will be lost. &Z ขนาด: - + En&crypt - + Logical โลจิคอล - + Primary หลัก - + GPT GPT - + Mountpoint already in use. Please select another one. @@ -776,7 +799,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -834,7 +857,7 @@ The installer will quit and all changes will be lost. Flags: - + Mountpoint already in use. Please select another one. @@ -1003,12 +1026,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> ตั้งค่าโมเดลแป้นพิมพ์เป็น %1<br/> - + Set keyboard layout to %1/%2. ตั้งค่าแบบแป้นพิมพ์เป็น %1/%2 @@ -1052,64 +1075,64 @@ The installer will quit and all changes will be lost. แบบฟอร์ม - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1583,34 +1606,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space พื้นที่ว่าง - - + + New partition พาร์ทิชันใหม่ - + Name ชื่อ - + File System ระบบไฟล์ - + Mount Point จุดเชื่อมต่อ - + Size ขนาด @@ -1639,8 +1662,8 @@ The installer will quit and all changes will be lost. - &Create - &C สร้าง + Cre&ate + @@ -1658,17 +1681,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? คุณแน่ใจว่าจะสร้างตารางพาร์ทิชันใหม่บน %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... กำลังรวบรวมข้อมูลของระบบ... - + Partitions พาร์ทิชัน - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: หลัง: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1909,22 +1932,22 @@ Output: ค่าเริ่มต้น - + unknown - + extended - + unformatted - + swap @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 ตั้งค่าชื่อโฮสต์ %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error ข้อผิดพลาดภายใน - - + + Cannot write hostname to target system ไม่สามารถเขียนชื่อโฮสต์ไปที่ระบบเป้าหมาย @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome ยินดีต้อนรับ diff --git a/lang/calamares_tr_TR.ts b/lang/calamares_tr_TR.ts index d95659742..11476558b 100644 --- a/lang/calamares_tr_TR.ts +++ b/lang/calamares_tr_TR.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + Boş Sayfa + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Sistem Kuruluyor @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Sistem kurulumu tamamlandı, kurulum aracından çıkabilirsiniz. @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 %1 Komutu çalışıyor %2 - + Running command %1 %2 %1 Komutu çalışıyor %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. %1 işlemleri yapılıyor. - + Bad working directory path Dizin yolu kötü çalışıyor - + Working directory %1 for python job %2 is not readable. %2 python işleri için %1 dizinleme çalışırken okunamadı. - + Bad main script file Sorunlu betik dosyası - + Main script file %1 for python job %2 is not readable. %2 python işleri için %1 sorunlu betik okunamadı. - + Boost.Python error in job "%1". Boost.Python iş hatası "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Geri - - + + &Next &Sonraki - - + + &Cancel &Vazgeç - - + + Cancel installation without changing the system. Sistemi değiştirmeden kurulumu iptal edin. - + + Calamares Initialization Failed + Calamares Başlatılamadı + + + + %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. + %1 yüklenemedi. Calamares yapılandırılmış modüllerin bazılarını yükleyemedi. Bu, Calamares'in kullandığınız dağıtıma uyarlamasından kaynaklanan bir sorundur. + + + + <br/>The following modules could not be loaded: + <br/>Aşağıdaki modüller yüklenemedi: + + + &Install &Yükle - + Cancel installation? Yüklemeyi iptal et? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Yükleme işlemini gerçekten iptal etmek istiyor musunuz? Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. - + &Yes &Evet - + &No &Hayır - + &Close &Kapat - + Continue with setup? Kuruluma devam et? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 sistem yükleyici %2 yüklemek için diskinizde değişiklik yapacak.<br/><strong>Bu değişiklikleri geri almak mümkün olmayacak.</strong> - + &Install now &Şimdi yükle - + Go &back Geri &git - + &Done &Tamam - + The installation is complete. Close the installer. Yükleme işi tamamlandı. Sistem yükleyiciyi kapatın. - + Error Hata - + Installation Failed Kurulum Başarısız @@ -439,17 +462,17 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. ClearMountsJob - + Clear mounts for partitioning operations on %1 %1 bölümleme işlemleri için sorunsuz bağla - + Clearing mounts for partitioning operations on %1. %1 bölümleme işlemleri için bağlama noktaları temizleniyor. - + Cleared all mounts for %1 %1 için tüm bağlı bölümler ayrıldı @@ -557,27 +580,27 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Bo&yut: - + En&crypt Şif&rele - + Logical Mantıksal - + Primary Birincil - + GPT GPT - + Mountpoint already in use. Please select another one. Bağlama noktası zaten kullanımda. Lütfen diğerini seçiniz. @@ -779,7 +802,7 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -837,7 +860,7 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Bayraklar: - + Mountpoint already in use. Please select another one. Bağlama noktası zaten kullanımda. Lütfen diğerini seçiniz. @@ -1006,12 +1029,12 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. KeyboardPage - + Set keyboard model to %1.<br/> %1 Klavye düzeni olarak seçildi.<br/> - + Set keyboard layout to %1/%2. Alt klavye türevi olarak %1/%2 seçildi. @@ -1055,64 +1078,64 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Form - + I accept the terms and conditions above. Yukarıdaki şartları ve koşulları kabul ediyorum. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Lisans Anlaşması</h1> Sistem yükleyici uygulaması belli lisans şartlarına bağlıdır ve şimdi sisteminizi kuracaktır. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Yukarıdaki son kullanıcı lisans sözleşmesini (EULA) gözden geçiriniz.<br/>Şartları kabul etmiyorsanız kurulum devam etmeyecektir. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Lisans Sözleşmesi</h1>Bu kurulum işlemi kullanıcı deneyimini ölçümlemek, ek özellikler sağlamak ve geliştirmek amacıyla lisansa tabi özel yazılım yükleyebilir. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Yukarıdaki Son Kullanıcı Lisans Sözleşmelerini (EULA) gözden geçirin.<br/>Eğer şartları kabul etmiyorsanız kapalı kaynak yazılımların yerine açık kaynak alternatifleri yüklenecektir. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 sürücü</strong><br/>by %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 grafik sürücü</strong><br/><font color="Grey">by %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 tarayıcı eklentisi</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 kodek</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 paketi</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> <a href="%1">lisans şartlarını incele</a> @@ -1586,34 +1609,34 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. PartitionModel - - + + Free Space Boş Alan - - + + New partition Yeni bölüm - + Name İsim - + File System Dosya Sistemi - + Mount Point Bağlama Noktası - + Size Boyut @@ -1642,8 +1665,8 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. - &Create - &Oluştur + Cre&ate + Oluş&tur @@ -1661,17 +1684,17 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Şuraya ön &yükleyici kur: - + Are you sure you want to create a new partition table on %1? %1 tablosunda yeni bölüm oluşturmaya devam etmek istiyor musunuz? - + Can not create new partition Yeni disk bölümü oluşturulamıyor - + 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. % 1 üzerindeki bölüm tablosu zaten% 2 birincil bölüme sahip ve artık eklenemiyor. Lütfen bir birincil bölümü kaldırın ve bunun yerine genişletilmiş bir bölüm ekleyin. @@ -1679,97 +1702,97 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. PartitionViewStep - + Gathering system information... Sistem bilgileri toplanıyor... - + Partitions Disk Bölümleme - + Install %1 <strong>alongside</strong> another operating system. Diğer işletim sisteminin <strong>yanına</strong> %1 yükle. - + <strong>Erase</strong> disk and install %1. Diski <strong>sil</strong> ve %1 yükle. - + <strong>Replace</strong> a partition with %1. %1 ile disk bölümünün üzerine <strong>yaz</strong>. - + <strong>Manual</strong> partitioning. <strong>Manuel</strong> bölümleme. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). <strong>%2</strong> (%3) diskindeki diğer işletim sisteminin <strong>yanına</strong> %1 yükle. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>%2</strong> (%3) diski <strong>sil</strong> ve %1 yükle. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>%2</strong> (%3) disk bölümünün %1 ile <strong>üzerine yaz</strong>. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>%1</strong> (%2) disk bölümünü <strong>manuel</strong> bölümle. - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Geçerli: - + After: Sonra: - + No EFI system partition configured EFI sistem bölümü yapılandırılmamış - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. %1 başlatmak için bir EFI sistem bölümü gereklidir.<br/><br/>EFI sistem bölümünü yapılandırmak için geri dönün ve seçim yapın veya FAT32 dosya sistemi ile <strong>esp</strong> etiketiyle <strong>%2</strong> noktasına bağlayın.<br/><br/>Bir EFI sistem bölümü kurmadan devam edebilirsiniz fakat işletim sistemi başlatılamayabilir. - + EFI system partition flag not set EFI sistem bölümü bayrağı ayarlanmadı - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. %1 başlatmak için bir EFI sistem bölümü gereklidir.<br/><br/>Bir bağlama noktası <strong>%2</strong> olarak yapılandırıldı fakat <strong>esp</strong>bayrağı ayarlanmadı.<br/>Bayrağı ayarlamak için, geri dönün ve bölümü düzenleyin.<br/><br/>Sen bayrağı ayarlamadan devam edebilirsin fakat işletim sistemi başlatılamayabilir. - + Boot partition not encrypted Önyükleme yani boot diski şifrelenmedi - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Ayrı bir önyükleme yani boot disk bölümü, şifrenmiş bir kök bölüm ile birlikte ayarlandı, fakat önyükleme bölümü şifrelenmedi.<br/><br/>Bu tip kurulumun güvenlik endişeleri vardır, çünkü önemli sistem dosyaları şifrelenmemiş bir bölümde saklanır.<br/>İsterseniz kuruluma devam edebilirsiniz, fakat dosya sistemi kilidi daha sonra sistem başlatılırken açılacak.<br/> Önyükleme bölümünü şifrelemek için geri dönün ve bölüm oluşturma penceresinde <strong>Şifreleme</strong>seçeneği ile yeniden oluşturun. @@ -1916,22 +1939,22 @@ Output: Varsayılan - + unknown bilinmeyen - + extended uzatılmış - + unformatted biçimlenmemiş - + swap Swap-Takas @@ -2114,29 +2137,29 @@ Sistem güç kaynağına bağlı değil. SetHostNameJob - + Set hostname %1 %1 sunucu-adı ayarla - + Set hostname <strong>%1</strong>. <strong>%1</strong> sunucu-adı ayarla. - + Setting hostname %1. %1 sunucu-adı ayarlanıyor. - - + + Internal Error Dahili Hata - - + + Cannot write hostname to target system Hedef sisteme sunucu-adı yazılamadı @@ -2588,7 +2611,7 @@ Sistem güç kaynağına bağlı değil. WelcomeViewStep - + Welcome Hoşgeldiniz diff --git a/lang/calamares_uk.ts b/lang/calamares_uk.ts index 065ba5c95..22a486857 100644 --- a/lang/calamares_uk.ts +++ b/lang/calamares_uk.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install Встановити @@ -105,7 +113,7 @@ Calamares::JobThread - + Done Зроблено @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 Запустити команду %1 %2 - + Running command %1 %2 Запуск команди %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. Запуск операції %1. - + Bad working directory path Неправильний шлях робочого каталогу - + Working directory %1 for python job %2 is not readable. Неможливо прочитати робочу директорію %1 для завдання python %2. - + Bad main script file Неправильний файл головного сценарію - + Main script file %1 for python job %2 is not readable. Неможливо прочитати файл головного сценарію %1 для завдання python %2. - + Boost.Python error in job "%1". Помилка Boost.Python у завданні "%1". @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back &Назад - - + + &Next &Вперед - - + + &Cancel &Скасувати - - + + Cancel installation without changing the system. Скасувати встановлення без змінення системи. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? Скасувати встановлення? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Чи ви насправді бажаєте скасувати процес встановлення? Установник закриється і всі зміни буде втрачено. - + &Yes &Так - + &No &Ні - + &Close &Закрити - + Continue with setup? Продовжити встановлення? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Установник %1 збирається зробити зміни на вашому диску, щоб встановити %2.<br/><strong>Ці зміни неможливо буде повернути.</strong> - + &Install now &Встановити зараз - + Go &back Перейти &назад - + &Done &Закінчити - + The installation is complete. Close the installer. Встановлення виконано. Закрити установник. - + Error Помилка - + Installation Failed Втановлення завершилося невдачею @@ -436,17 +459,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Очистити точки підключення для операцій над розділами на %1 - + Clearing mounts for partitioning operations on %1. Очищення точок підключення для операцій над розділами на %1. - + Cleared all mounts for %1 Очищено всі точки підключення для %1 @@ -554,27 +577,27 @@ The installer will quit and all changes will be lost. Ро&змір: - + En&crypt За&шифрувати - + Logical Логічний - + Primary Основний - + GPT GPT - + Mountpoint already in use. Please select another one. Точка підключення наразі використовується. Оберіть, будь ласка, іншу. @@ -776,7 +799,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job Завдання-макет C++ @@ -834,7 +857,7 @@ The installer will quit and all changes will be lost. Прапорці: - + Mountpoint already in use. Please select another one. Точка підключення наразі використовується. Оберіть, будь ласка, іншу. @@ -1003,12 +1026,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Встановити модель клавіатури як %1.<br/> - + Set keyboard layout to %1/%2. Встановити розкладку клавіатури як %1/%2. @@ -1052,64 +1075,64 @@ The installer will quit and all changes will be lost. Форма - + I accept the terms and conditions above. Я приймаю положення та умови, що наведені вище. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Ліцензійна угода</h1>Процедура встановить пропрієтарне програмне забезпечення, яке підлягає умовам ліцензування. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Будь-ласка, перегляньте Ліцензійні Угоди Кінцевого Користувача (EULAs), що наведені вище.<br/>Якщо ви не згодні з умовами, процедуру встановлення не можна продовжити. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Ліцензійна угода</h1>Для надання додаткових можливостей та з метою покращення користувацького досвіду, процедура може встановити пропрієтарне програмне забезпечення, яке підлягає умовам ліцензування. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Будь-ласка, перегляньте Ліцензійні Угоди Кінцевого Користувача (EULAs), що наведені вище.<br/>Якщо ви не згодні з умовами, пропрієтарне програмне забезпечення не буде встановлено, та замість нього буде використано альтернативи з відкритим сирцевим кодом. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>Драйвер %1</strong><br/>від %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>Графічний драйвер %1</strong><br/><font color="Grey">від %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>Плагін для переглядача тенет %1</strong><br/><font color="Grey">від %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>Кодек %1</strong><br/><font color="Grey">від %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>Пакет %1</strong><br/><font color="Grey">від %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">від %2</font> - + <a href="%1">view license agreement</a> <a href="%1">переглянути ліцензійну угоду</a> @@ -1583,34 +1606,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space Вільний простір - - + + New partition Новий розділ - + Name Ім'я - + File System Файлова система - + Mount Point Точка підключення - + Size Розмір @@ -1639,8 +1662,8 @@ The installer will quit and all changes will be lost. - &Create - &Створити + Cre&ate + @@ -1658,17 +1681,17 @@ The installer will quit and all changes will be lost. Встановити за&вантажувач на: - + Are you sure you want to create a new partition table on %1? Ви впевнені, що бажаєте створити нову таблицю розділів на %1? - + Can not create new partition - + 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. @@ -1676,97 +1699,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Збір інформації про систему... - + Partitions Розділи - + Install %1 <strong>alongside</strong> another operating system. Встановити %1 <strong>поруч</strong> з іншою операційною системою. - + <strong>Erase</strong> disk and install %1. <strong>Очистити</strong> диск та встановити %1. - + <strong>Replace</strong> a partition with %1. <strong>Замінити</strong> розділ на %1. - + <strong>Manual</strong> partitioning. Розподілення диску <strong>власноруч</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Встановити %1 <strong>поруч</strong> з іншою операційною системою на диск <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Очистити</strong> диск <strong>%2</strong> (%3) та встановити %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Замінити</strong> розділ на диску <strong>%2</strong> (%3) на %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Розподілення диску <strong>%1</strong> (%2) <strong>власноруч</strong>. - + Disk <strong>%1</strong> (%2) Диск <strong>%1</strong> (%2) - + Current: Зараз: - + After: Після: - + No EFI system partition configured Не налаштовано жодного системного розділу EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Щоб запустити %1, потрібен системний розділ EFI.<br/><br/>Щоб налаштувати системний розділ EFI, поверніться та оберіть або створіть файлову систему FAT32 з увімкненною опцією <strong>esp</strong> та точкою підключення <strong>%2</strong>.<br/><br/>Ви можете продовжити не налаштовуючи системний розділ EFI, але ваша система може не запускатись. - + EFI system partition flag not set Опцію системного розділу EFI не встановлено - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Для запуску %1 потрібен системний розділ EFI.<br/><br/>Розділ налаштовано з точкою підключення <strong>%2</strong>, але опція <strong>esp</strong> не встановлено.<br/>Щоб встановити опцію, поверніться та відредагуйте розділ.<br/><br/>Ви можете продовжити не налаштовуючи цю опцію, але ваша система може не запускатись. - + Boot partition not encrypted Завантажувальний розділ незашифрований - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Було налаштовано окремий завантажувальний розділ поряд із зашифрованим кореневим розділом, але завантажувальний розділ незашифрований.<br/><br/>Існують проблеми з безпекою такого типу, оскільки важливі системні файли зберігаються на незашифрованому розділі.<br/>Ви можете продовжувати, якщо бажаєте, але розблокування файлової системи відбудеться пізніше під час запуску системи.<br/>Щоб зашифрувати завантажувальний розділ, поверніться і створіть його знов, обравши <strong>Зашифрувати</strong> у вікні створення розділів. @@ -1909,22 +1932,22 @@ Output: За замовченням - + unknown невідома - + extended розширена - + unformatted неформатовано - + swap область підкачки @@ -2106,29 +2129,29 @@ Output: SetHostNameJob - + Set hostname %1 Встановити ім'я машини %1 - + Set hostname <strong>%1</strong>. Встановити ім'я машини <strong>%1</strong>. - + Setting hostname %1. Встановлення імені машини %1. - - + + Internal Error Внутрішня помилка - - + + Cannot write hostname to target system Не можу записати ім'я машини до системи @@ -2580,7 +2603,7 @@ Output: WelcomeViewStep - + Welcome Вітаємо diff --git a/lang/calamares_ur.ts b/lang/calamares_ur.ts index 75c265cda..23a49d79d 100644 --- a/lang/calamares_ur.ts +++ b/lang/calamares_ur.ts @@ -45,6 +45,14 @@ + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install @@ -105,7 +113,7 @@ Calamares::JobThread - + Done @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -159,96 +167,111 @@ Calamares::ViewManager - + &Back - - + + &Next - - + + &Cancel - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No - + &Close - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -435,17 +458,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -553,27 +576,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -775,7 +798,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -833,7 +856,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1002,12 +1025,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1051,64 +1074,64 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1582,34 +1605,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1638,7 +1661,7 @@ The installer will quit and all changes will be lost. - &Create + Cre&ate @@ -1657,17 +1680,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1675,97 +1698,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1908,22 +1931,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2105,29 +2128,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2579,7 +2602,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_uz.ts b/lang/calamares_uz.ts index da044a690..12b4fb627 100644 --- a/lang/calamares_uz.ts +++ b/lang/calamares_uz.ts @@ -45,6 +45,14 @@ + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install @@ -105,7 +113,7 @@ Calamares::JobThread - + Done @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 - + Running command %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". @@ -159,96 +167,111 @@ Calamares::ViewManager - + &Back - - + + &Next - - + + &Cancel - - + + Cancel installation without changing the system. - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install - + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + &Yes - + &No - + &Close - + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -435,17 +458,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -553,27 +576,27 @@ The installer will quit and all changes will be lost. - + En&crypt - + Logical - + Primary - + GPT - + Mountpoint already in use. Please select another one. @@ -775,7 +798,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -833,7 +856,7 @@ The installer will quit and all changes will be lost. - + Mountpoint already in use. Please select another one. @@ -1002,12 +1025,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1051,64 +1074,64 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> - + <a href="%1">view license agreement</a> @@ -1582,34 +1605,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space - - + + New partition - + Name - + File System - + Mount Point - + Size @@ -1638,7 +1661,7 @@ The installer will quit and all changes will be lost. - &Create + Cre&ate @@ -1657,17 +1680,17 @@ The installer will quit and all changes will be lost. - + Are you sure you want to create a new partition table on %1? - + Can not create new partition - + 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. @@ -1675,97 +1698,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1908,22 +1931,22 @@ Output: - + unknown - + extended - + unformatted - + swap @@ -2105,29 +2128,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2579,7 +2602,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_zh_CN.ts b/lang/calamares_zh_CN.ts index ea18e8767..4889eabf1 100644 --- a/lang/calamares_zh_CN.ts +++ b/lang/calamares_zh_CN.ts @@ -46,6 +46,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + + + Calamares::DebugWindow @@ -98,7 +106,7 @@ Calamares::ExecutionViewStep - + Install 安装 @@ -106,7 +114,7 @@ Calamares::JobThread - + Done 完成 @@ -114,12 +122,12 @@ Calamares::ProcessJob - + Run command %1 %2 运行命令 %1 %2 - + Running command %1 %2 正在运行命令 %1 %2 @@ -127,32 +135,32 @@ Calamares::PythonJob - + Running %1 operation. 正在运行 %1 个操作。 - + Bad working directory path 错误的工作目录路径 - + Working directory %1 for python job %2 is not readable. 用于 python 任务 %2 的工作目录 %1 不可读。 - + Bad main script file 错误的主脚本文件 - + Main script file %1 for python job %2 is not readable. 用于 python 任务 %2 的主脚本文件 %1 不可读。 - + Boost.Python error in job "%1". 任务“%1”出现 Boost.Python 错误。 @@ -160,97 +168,112 @@ Calamares::ViewManager - + &Back 后退(&B) - - + + &Next 下一步(&N) - - + + &Cancel 取消(&C) - - + + Cancel installation without changing the system. 取消安装,并不做任何更改。 - + + Calamares Initialization Failed + + + + + %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. + + + + + <br/>The following modules could not be loaded: + + + + &Install 安装(&I) - + Cancel installation? 取消安装? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 确定要取消当前的安装吗? 安装程序将退出,所有修改都会丢失。 - + &Yes &是 - + &No &否 - + &Close &关闭 - + Continue with setup? 要继续安装吗? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 安装程序将在您的磁盘上做出变更以安装 %2。<br/><strong>您将无法复原这些变更。</strong> - + &Install now 现在安装 (&I) - + Go &back 返回 (&B) - + &Done &完成 - + The installation is complete. Close the installer. 安装过程已完毕。请关闭安装器。 - + Error 错误 - + Installation Failed 安装失败 @@ -437,17 +460,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 清理挂载了的分区以在 %1 进行分区操作 - + Clearing mounts for partitioning operations on %1. 正在清理挂载了的分区以在 %1 进行分区操作。 - + Cleared all mounts for %1 已清除 %1 的所有挂载点 @@ -555,27 +578,27 @@ The installer will quit and all changes will be lost. 大小(&Z): - + En&crypt 加密(&C) - + Logical 逻辑分区 - + Primary 主分区 - + GPT GPT - + Mountpoint already in use. Please select another one. 挂载点已被占用。请选择另一个。 @@ -778,7 +801,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job 虚设 C++ 任务 @@ -836,7 +859,7 @@ The installer will quit and all changes will be lost. 标记: - + Mountpoint already in use. Please select another one. 挂载点已被占用。请选择另一个。 @@ -1005,12 +1028,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> 设置键盘型号为 %1。<br/> - + Set keyboard layout to %1/%2. 设置键盘布局为 %1/%2。 @@ -1054,64 +1077,64 @@ The installer will quit and all changes will be lost. 表单 - + I accept the terms and conditions above. 我同意如上条款。 - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>许可协定</h1>此安装程序将会安装受授权条款所限制的专有软件。 - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. 请仔细上方的最终用户许可协定 (EULA)。<br/>若您不同意上述条款,安装程序将不会继续。 - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>许可协定</h1>此安装程序可以安装受授权条款限制的专有软件,以提供额外的功能并增强用户体验。 - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. 请仔细上方的最终用户许可协定 (EULA)。<br/>若您不同意上述条款,将不会安装专有软件,而会使用其开源替代品。 - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 驱动程序</strong><br/>由 %2 提供 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 显卡驱动程序</strong><br/><font color="Grey">由 %2 提供</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 浏览器插件</strong><br/><font color="Grey">由 %2 提供</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 编解码器</strong><br/><font color="Grey">由 %2 提供</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 软件包</strong><br/><font color="Grey">由 %2 提供</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">由 %2 提供</font> - + <a href="%1">view license agreement</a> <a href="%1">查看许可协定</a> @@ -1585,34 +1608,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space 空闲空间 - - + + New partition 新建分区 - + Name 名称 - + File System 文件系统 - + Mount Point 挂载点 - + Size 大小 @@ -1641,8 +1664,8 @@ The installer will quit and all changes will be lost. - &Create - 创建(&C) + Cre&ate + @@ -1660,17 +1683,17 @@ The installer will quit and all changes will be lost. 安装引导程序于(&L): - + Are you sure you want to create a new partition table on %1? 您是否确定要在 %1 上创建新分区表? - + Can not create new partition - + 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. @@ -1678,97 +1701,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... 正在收集系统信息... - + Partitions 分区 - + Install %1 <strong>alongside</strong> another operating system. 将 %1 安装在其他操作系统<strong>旁边</strong>。 - + <strong>Erase</strong> disk and install %1. <strong>抹除</strong>磁盘并安装 %1。 - + <strong>Replace</strong> a partition with %1. 以 %1 <strong>替代</strong>一个分区。 - + <strong>Manual</strong> partitioning. <strong>手动</strong>分区 - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). 将 %1 安装在磁盘 <strong>%2</strong> (%3) 上的另一个操作系统<strong>旁边</strong>。 - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>抹除</strong> 磁盘 <strong>%2</strong> (%3) 并且安装 %1。 - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. 以 %1 <strong>替代</strong> 一个在磁盘 <strong>%2</strong> (%3) 上的分区。 - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). 在磁盘 <strong>%1</strong> (%2) 上<strong>手动</strong>分区。 - + Disk <strong>%1</strong> (%2) 磁盘 <strong>%1</strong> (%2) - + Current: 当前: - + After: 之后: - + No EFI system partition configured 未配置 EFI 系统分区 - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. 必须有 EFI 系统分区才能启动 %1 。<br/><br/>要配置 EFI 系统分区,后退一步,然后创建或选中一个 FAT32 分区并为之设置 <strong>esp</strong> 标记及挂载点 <strong>%2</strong>。<br/><br/>你可以不创建 EFI 系统分区并继续安装,但是你的系统可能无法启动。 - + EFI system partition flag not set 未设置 EFI 系统分区标记 - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. 必须有 EFI 系统分区才能启动 %1 。<br/><br/>已有挂载点为 <strong>%2</strong> 的分区,但是未设置 <strong>esp</strong> 标记。<br/>要设置此标记,后退并编辑分区。<br/><br/>你可以不创建 EFI 系统分区并继续安装,但是你的系统可能无法启动。 - + Boot partition not encrypted 引导分区未加密 - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. 您尝试用单独的引导分区配合已加密的根分区使用,但引导分区未加密。<br/><br/>这种配置方式可能存在安全隐患,因为重要的系统文件存储在了未加密的分区上。<br/>您可以继续保持此配置,但是系统解密将在系统启动时而不是引导时进行。<br/>要加密引导分区,请返回上一步并重新创建此分区,并在分区创建窗口选中 <strong>加密</strong> 选项。 @@ -1914,22 +1937,22 @@ Output: 默认 - + unknown 未知 - + extended 扩展分区 - + unformatted 未格式化 - + swap 临时存储空间 @@ -2111,29 +2134,29 @@ Output: SetHostNameJob - + Set hostname %1 设置主机名 %1 - + Set hostname <strong>%1</strong>. 设置主机名 <strong>%1</strong>。 - + Setting hostname %1. 正在设置主机名 %1。 - - + + Internal Error 内部错误 - - + + Cannot write hostname to target system 无法向目标系统写入主机名 @@ -2585,7 +2608,7 @@ Output: WelcomeViewStep - + Welcome 欢迎 diff --git a/lang/calamares_zh_TW.ts b/lang/calamares_zh_TW.ts index 407a72e04..9cba0e33b 100644 --- a/lang/calamares_zh_TW.ts +++ b/lang/calamares_zh_TW.ts @@ -45,6 +45,14 @@ %1 (%2) + + Calamares::BlankViewStep + + + Blank Page + 空白頁 + + Calamares::DebugWindow @@ -97,7 +105,7 @@ Calamares::ExecutionViewStep - + Install 安裝 @@ -105,7 +113,7 @@ Calamares::JobThread - + Done 完成 @@ -113,12 +121,12 @@ Calamares::ProcessJob - + Run command %1 %2 執行命令 %1 %2 - + Running command %1 %2 正在執行命令 %1 %2 @@ -126,32 +134,32 @@ Calamares::PythonJob - + Running %1 operation. 正在執行 %1 操作。 - + Bad working directory path 不良的工作目錄路徑 - + Working directory %1 for python job %2 is not readable. Python 行程 %2 作用中的目錄 %1 不具讀取權限。 - + Bad main script file 錯誤的主要腳本檔 - + Main script file %1 for python job %2 is not readable. Python 行程 %2 的主要腳本檔 %1 無法讀取。 - + Boost.Python error in job "%1". 行程 %1 中 Boost.Python 錯誤。 @@ -159,97 +167,112 @@ Calamares::ViewManager - + &Back 返回 (&B) - - + + &Next 下一步 (&N) - - + + &Cancel 取消(&C) - - + + Cancel installation without changing the system. 不變更系統並取消安裝。 - + + Calamares Initialization Failed + Calamares 初始化失敗 + + + + %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. + %1 無法安裝。Calamares 無法載入所有已設定的模組。散佈版使用 Calamares 的方式有問題。 + + + + <br/>The following modules could not be loaded: + <br/>以下的模組無法載入: + + + &Install 安裝(&I) - + Cancel installation? 取消安裝? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 您真的想要取消目前的安裝程序嗎? 安裝程式將會退出且所有變動將會遺失。 - + &Yes 是(&Y) - + &No 否(&N) - + &Close 關閉(&C) - + Continue with setup? 繼續安裝? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 安裝程式將在您的磁碟上做出變更以安裝 %2。<br/><strong>您將無法復原這些變更。</strong> - + &Install now 現在安裝 (&I) - + Go &back 上一步 (&B) - + &Done 完成(&D) - + The installation is complete. Close the installer. 安裝完成。關閉安裝程式。 - + Error 錯誤 - + Installation Failed 安裝失敗 @@ -436,17 +459,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 為了準備分割區操作而完全卸載 %1 - + Clearing mounts for partitioning operations on %1. 正在為了準備分割區操作而完全卸載 %1 - + Cleared all mounts for %1 已清除所有與 %1 相關的掛載 @@ -554,27 +577,27 @@ The installer will quit and all changes will be lost. 容量大小 (&z) : - + En&crypt 加密(&C) - + Logical 邏輯磁區 - + Primary 主要磁區 - + GPT GPT - + Mountpoint already in use. Please select another one. 掛載點使用中。請選擇其他的。 @@ -776,7 +799,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job 虛設 C++ 排程 @@ -834,7 +857,7 @@ The installer will quit and all changes will be lost. 旗標: - + Mountpoint already in use. Please select another one. 掛載點使用中。請選擇其他的。 @@ -1003,12 +1026,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> 設定鍵盤型號為 %1 。<br/> - + Set keyboard layout to %1/%2. 設定鍵盤佈局為 %1/%2 。 @@ -1052,64 +1075,64 @@ The installer will quit and all changes will be lost. 表單 - + I accept the terms and conditions above. 我接受上述的條款與條件。 - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>授權協定</h1>此安裝程式將會安裝受授權條款所限制的專有軟體。 - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. 請仔細上方的最終用戶授權協定 (EULA)。<br/>若您不同意上述條款,安裝程式將不會繼續。 - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>授權協定</h1>此安裝程式可以安裝受授權條款限制的專有軟體,以提供額外的功農與增強使用者體驗。 - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. 請仔細上方的最終用戶授權協定 (EULA)。<br/>若您不同意上述條款,將不會安裝專有軟體,而會使用其開放原始螞碼版本作為替代。 - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 驅動程式</strong><br/>由 %2 所提供 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 顯示卡驅動程式</strong><br/><font color="Grey">由 %2 所提供</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 瀏覽器外掛程式</strong><br/><font color="Grey">由 %2 所提供</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 編解碼器</strong><br/><font color="Grey">由 %2 所提供</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 軟體包</strong><br/><font color="Grey">由 %2 所提供</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">由 %2 所提供</font> - + <a href="%1">view license agreement</a> <a href="%1">檢視授權協定</a> @@ -1583,34 +1606,34 @@ The installer will quit and all changes will be lost. PartitionModel - - + + Free Space 剩餘空間 - - + + New partition 新分割區 - + Name 名稱 - + File System 檔案系統 - + Mount Point 掛載點 - + Size 大小 @@ -1639,8 +1662,8 @@ The installer will quit and all changes will be lost. - &Create - 新增 (&C) + Cre&ate + 建立(&A) @@ -1658,17 +1681,17 @@ The installer will quit and all changes will be lost. 安裝開機載入器在(&L): - + Are you sure you want to create a new partition table on %1? 您是否確定要在 %1 上建立一個新的分割區表格? - + Can not create new partition 無法建立新分割區 - + 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. 在 %1 上的分割表已有 %2 個主要分割區,無法再新增。請移除一個主要分割區並新增一個延伸分割區。 @@ -1676,97 +1699,97 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... 蒐集系統資訊中... - + Partitions 分割區 - + Install %1 <strong>alongside</strong> another operating system. 將 %1 安裝在其他作業系統<strong>旁邊</strong>。 - + <strong>Erase</strong> disk and install %1. <strong>抹除</strong>磁碟並安裝 %1。 - + <strong>Replace</strong> a partition with %1. 以 %1 <strong>取代</strong>一個分割區。 - + <strong>Manual</strong> partitioning. <strong>手動</strong>分割 - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). 將 %1 安裝在磁碟 <strong>%2</strong> (%3) 上的另一個作業系統<strong>旁邊</strong>。 - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>抹除</strong> 磁碟 <strong>%2</strong> (%3) 並且安裝 %1。 - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. 以 %1 <strong>取代</strong> 一個在磁碟 <strong>%2</strong> (%3) 上的分割區。 - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). 在磁碟 <strong>%1</strong> (%2) 上<strong>手動</strong>分割。 - + Disk <strong>%1</strong> (%2) 磁碟 <strong>%1</strong> (%2) - + Current: 目前: - + After: 之後: - + No EFI system partition configured 未設定 EFI 系統分割區 - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. 需要一個 EFI 系統分割區以啟動 %1。<br/><br/>要設定 EFI 系統分割區,回到上一步並選取或建立一個包含啟用的 <strong>esp</strong> 旗標以及掛載點 <strong>%2</strong> 的 FAT32 檔案系統。<br/><br/>您也可以不設定 EFI 系統分割區並繼續,但是您的系統可能會啟動失敗。 - + EFI system partition flag not set EFI 系統分割區旗標未設定 - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. 需要一個 EFI 系統分割區以啟動 %1。<br/><br/>有一個掛載點設定為 <strong>%2</strong> 但未設定 <strong>esp</strong> 旗標的分割區。<br/>要設定此旗標,回到上一步並編輯分割區。<br/><br/>您也可以不設定旗標而繼續,但您的系統可能會啟動失敗。 - + Boot partition not encrypted 開機分割區未加密 - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. 單獨的開機分割區會與加密的根分割區一起設定,但是開機分割區並不會被加密。<br/><br/>這種設定可能會造成安全性問題,因為系統檔案放在未加密的分割區中。<br/>若您想要,您可以繼續,但是檔案系統的解鎖會在系統啟動後才發生。<br/>要加密開機分割區,回到上一頁並重新建立它,在分割區建立視窗中選取<strong>加密</strong>。 @@ -1912,22 +1935,22 @@ Output: 預設值 - + unknown 未知 - + extended 延伸分割區 - + unformatted 未格式化 - + swap swap @@ -2109,29 +2132,29 @@ Output: SetHostNameJob - + Set hostname %1 設定主機名 %1 - + Set hostname <strong>%1</strong>. 設定主機名稱 <strong>%1</strong>。 - + Setting hostname %1. 正在設定主機名稱 %1。 - - + + Internal Error 內部錯誤 - - + + Cannot write hostname to target system 無法寫入主機名稱到目標系統 @@ -2583,7 +2606,7 @@ Output: WelcomeViewStep - + Welcome 歡迎 From c8de7e4d9288c2a1449395024c550a3da137d543 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 25 Jun 2018 09:55:52 -0400 Subject: [PATCH 323/385] i18n: [dummypythonqt] Automatic merge of Transifex translations --- .../lang/be/LC_MESSAGES/dummypythonqt.mo | Bin 562 -> 1159 bytes .../lang/be/LC_MESSAGES/dummypythonqt.po | 15 ++++++++------- .../dummypythonqt/lang/dummypythonqt.pot | 16 ++++++++-------- .../lang/en_GB/LC_MESSAGES/dummypythonqt.mo | Bin 444 -> 974 bytes .../lang/en_GB/LC_MESSAGES/dummypythonqt.po | 15 ++++++++------- 5 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.mo index 4454d0f300ea558ca047a2b4836933e54b1e3dbf..15186b9888cea611b14ff0fda823fe775499f1ca 100644 GIT binary patch delta 681 zcmaKo&r2IY6vs!KDz&I}<`$N>D)$ zsSTm1C-owDjlrO;zb*x@Z~g&K{sEpn`JF9-f#6F%`vg@rC-^S^xBcRMUGArFM9mYD_l}5v>s51S%e#0-uk&BDQ`TGP Zucj-+2WS~>>lJwTtoa?f!VNP)aRZka<&*#b delta 85 zcmZqY+{9vWPl#nI0}wC*u?!Ha05LNV>i{tbSOD=4prj>`2C0F8$?=S#T&B8)W(tOe RRwf3M_c0o5)?&(L1OS>s3hMv> diff --git a/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.po index 3556e37d2..c46feaee0 100644 --- a/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.po @@ -8,8 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-06-18 07:46-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Zmicer Turok , 2018\n" "Language-Team: Belarusian (https://www.transifex.com/calamares/teams/20061/be/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,24 +20,24 @@ msgstr "" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" -msgstr "" +msgstr "Націсніце сюды! " #: src/modules/dummypythonqt/main.py:94 msgid "A new QLabel." -msgstr "" +msgstr "Новы QLabel. " #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" -msgstr "" +msgstr "Dummy PythonQt ViewStep" #: src/modules/dummypythonqt/main.py:183 msgid "The Dummy PythonQt Job" -msgstr "" +msgstr "The Dummy PythonQt Job" #: src/modules/dummypythonqt/main.py:186 msgid "This is the Dummy PythonQt Job. The dummy job says: {}" -msgstr "" +msgstr "Гэта Dummy PythonQt Job. Фіктыўная задача паведамляе: {}" #: src/modules/dummypythonqt/main.py:190 msgid "A status message for Dummy PythonQt Job." -msgstr "" +msgstr "Паведамленне статусу Dummy PythonQt Job. " diff --git a/src/modules/dummypythonqt/lang/dummypythonqt.pot b/src/modules/dummypythonqt/lang/dummypythonqt.pot index 2cac1d0c0..bb87a856f 100644 --- a/src/modules/dummypythonqt/lang/dummypythonqt.pot +++ b/src/modules/dummypythonqt/lang/dummypythonqt.pot @@ -2,7 +2,7 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# #, fuzzy msgid "" msgstr "" @@ -12,31 +12,31 @@ msgstr "" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: \n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" -msgstr "" +msgstr "Click me!" #: src/modules/dummypythonqt/main.py:94 msgid "A new QLabel." -msgstr "" +msgstr "A new QLabel." #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" -msgstr "" +msgstr "Dummy PythonQt ViewStep" #: src/modules/dummypythonqt/main.py:183 msgid "The Dummy PythonQt Job" -msgstr "" +msgstr "The Dummy PythonQt Job" #: src/modules/dummypythonqt/main.py:186 msgid "This is the Dummy PythonQt Job. The dummy job says: {}" -msgstr "" +msgstr "This is the Dummy PythonQt Job. The dummy job says: {}" #: src/modules/dummypythonqt/main.py:190 msgid "A status message for Dummy PythonQt Job." -msgstr "" +msgstr "A status message for Dummy PythonQt Job." diff --git a/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.mo index b88e6d8f9b3fc0fde21938f3751b9755fecc1d9b..1e4bbb0f81b7730949e91b2e14d80232d2bd207d 100644 GIT binary patch literal 974 zcmdUt!EO^V5QY~hAQo}y0WKV-ClY~oH&F@Eh9J^pThca7nr;<9V6Y=<;L zNIU>n#H+vyz+3PPoH;R0s#ZdM0j&Kz9((?ok-fjx*S`4k3;B)QL;fIlk@YK%Q$brq`vZB4SlxqbE8SzXR`(jM)lJb_-6ynG_Z2Nlmg6eU z=sIgF_k6yAE8FLFyVC%{=5V-Ahb;Bb(}tRvhKy-VCk)0?L2H&}3+OG(REk3byK?9` z&6FqaFlxj3=XAi?{K&A}iKpxmC2n&K_?b(OJ+QLTvfzmvf~E@{!iSGePstOO7}6e* z0aKbw5kjxg+-vMaFo^m`?e2lwXSq~{bo7Le$kuG4Ni0Kfd)=5c6{7}4q(u!2p&XQ| zB&d*56@n+>W`zWsL4bjz&)##J{4DNe)aa8=m$Vx2q8oPF4_|c;B6pu^Lt;gRPN|V9 zgk7qofTm1SE;Kw{y1g^^d9I|9BBMO@5}7@Fv@DJ}#AJpSOkzf}5F#;2xt>DdSa8Ee zu*bz@B(owErpDwt^!@pK?ipK?kJ+is(x8C6XC26Je?90Zk;&%~RZEx+h?+MVd) zs!CqqHl;93VCRb*ufVWVmq6W#7D$Pv&INm1Ji#S_t%oK@4B1hOz2-P7s=dFjZ mtmXF7nW8D#mMX)y68X~A^>PhX%X&e;MjcAUn)|=}ZGQo|iW02= delta 86 zcmX@dzK7Z3o)F7a1|VPrVi_P-0b*t#)&XJ=umIvFprj>`2C0F8$?=RqJm$IvmbwNe S3I-NdhLiU)8csH1`U(K42@9J5 diff --git a/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.po index 241b0063b..56323f9ef 100644 --- a/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.po @@ -8,8 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-04 08:16-0400\n" +"POT-Creation-Date: 2018-06-18 07:46-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Jason Collins , 2018\n" "Language-Team: English (United Kingdom) (https://www.transifex.com/calamares/teams/20061/en_GB/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,24 +20,24 @@ msgstr "" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" -msgstr "" +msgstr "Click me!" #: src/modules/dummypythonqt/main.py:94 msgid "A new QLabel." -msgstr "" +msgstr "A new QLabel." #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" -msgstr "" +msgstr "Dummy PythonQt ViewStep" #: src/modules/dummypythonqt/main.py:183 msgid "The Dummy PythonQt Job" -msgstr "" +msgstr "The Dummy PythonQt Job" #: src/modules/dummypythonqt/main.py:186 msgid "This is the Dummy PythonQt Job. The dummy job says: {}" -msgstr "" +msgstr "This is the Dummy PythonQt Job. The dummy job says: {}" #: src/modules/dummypythonqt/main.py:190 msgid "A status message for Dummy PythonQt Job." -msgstr "" +msgstr "A status message for Dummy PythonQt Job." From cd07a8bad9914fa5a1e1c5790c662fad254119a7 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 25 Jun 2018 09:55:54 -0400 Subject: [PATCH 324/385] i18n: [python] Automatic merge of Transifex translations --- lang/python.pot | 24 ++++++++-------- lang/python/ar/LC_MESSAGES/python.mo | Bin 503 -> 503 bytes lang/python/ar/LC_MESSAGES/python.po | 10 +++---- lang/python/ast/LC_MESSAGES/python.mo | Bin 668 -> 668 bytes lang/python/ast/LC_MESSAGES/python.po | 10 +++---- lang/python/be/LC_MESSAGES/python.mo | Bin 562 -> 562 bytes lang/python/be/LC_MESSAGES/python.po | 10 +++---- lang/python/bg/LC_MESSAGES/python.mo | Bin 894 -> 894 bytes lang/python/bg/LC_MESSAGES/python.po | 10 +++---- lang/python/ca/LC_MESSAGES/python.mo | Bin 1178 -> 1178 bytes lang/python/ca/LC_MESSAGES/python.po | 10 +++---- lang/python/cs_CZ/LC_MESSAGES/python.mo | Bin 1458 -> 1458 bytes lang/python/cs_CZ/LC_MESSAGES/python.po | 10 +++---- lang/python/da/LC_MESSAGES/python.mo | Bin 1115 -> 1115 bytes lang/python/da/LC_MESSAGES/python.po | 10 +++---- lang/python/de/LC_MESSAGES/python.mo | Bin 1130 -> 1132 bytes lang/python/de/LC_MESSAGES/python.po | 12 ++++---- lang/python/el/LC_MESSAGES/python.mo | Bin 568 -> 568 bytes lang/python/el/LC_MESSAGES/python.po | 10 +++---- lang/python/en_GB/LC_MESSAGES/python.mo | Bin 444 -> 1172 bytes lang/python/en_GB/LC_MESSAGES/python.po | 31 +++++++++++---------- lang/python/eo/LC_MESSAGES/python.mo | Bin 1168 -> 1168 bytes lang/python/eo/LC_MESSAGES/python.po | 10 +++---- lang/python/es/LC_MESSAGES/python.mo | Bin 1075 -> 1075 bytes lang/python/es/LC_MESSAGES/python.po | 10 +++---- lang/python/es_MX/LC_MESSAGES/python.mo | Bin 1199 -> 1199 bytes lang/python/es_MX/LC_MESSAGES/python.po | 10 +++---- lang/python/es_PR/LC_MESSAGES/python.mo | Bin 441 -> 441 bytes lang/python/es_PR/LC_MESSAGES/python.po | 10 +++---- lang/python/et/LC_MESSAGES/python.mo | Bin 1123 -> 1123 bytes lang/python/et/LC_MESSAGES/python.po | 10 +++---- lang/python/eu/LC_MESSAGES/python.mo | Bin 420 -> 420 bytes lang/python/eu/LC_MESSAGES/python.po | 10 +++---- lang/python/fa/LC_MESSAGES/python.mo | Bin 420 -> 420 bytes lang/python/fa/LC_MESSAGES/python.po | 10 +++---- lang/python/fi_FI/LC_MESSAGES/python.mo | Bin 437 -> 437 bytes lang/python/fi_FI/LC_MESSAGES/python.po | 10 +++---- lang/python/fr/LC_MESSAGES/python.mo | Bin 1193 -> 1193 bytes lang/python/fr/LC_MESSAGES/python.po | 10 +++---- lang/python/fr_CH/LC_MESSAGES/python.mo | Bin 439 -> 439 bytes lang/python/fr_CH/LC_MESSAGES/python.po | 10 +++---- lang/python/gl/LC_MESSAGES/python.mo | Bin 422 -> 422 bytes lang/python/gl/LC_MESSAGES/python.po | 10 +++---- lang/python/gu/LC_MESSAGES/python.mo | Bin 422 -> 422 bytes lang/python/gu/LC_MESSAGES/python.po | 10 +++---- lang/python/he/LC_MESSAGES/python.mo | Bin 1366 -> 1366 bytes lang/python/he/LC_MESSAGES/python.po | 10 +++---- lang/python/hi/LC_MESSAGES/python.mo | Bin 1637 -> 1637 bytes lang/python/hi/LC_MESSAGES/python.po | 10 +++---- lang/python/hr/LC_MESSAGES/python.mo | Bin 1272 -> 1272 bytes lang/python/hr/LC_MESSAGES/python.po | 10 +++---- lang/python/hu/LC_MESSAGES/python.mo | Bin 844 -> 844 bytes lang/python/hu/LC_MESSAGES/python.po | 10 +++---- lang/python/id/LC_MESSAGES/python.mo | Bin 1082 -> 1082 bytes lang/python/id/LC_MESSAGES/python.po | 10 +++---- lang/python/is/LC_MESSAGES/python.mo | Bin 1066 -> 1066 bytes lang/python/is/LC_MESSAGES/python.po | 10 +++---- lang/python/it_IT/LC_MESSAGES/python.mo | Bin 1173 -> 1173 bytes lang/python/it_IT/LC_MESSAGES/python.po | 10 +++---- lang/python/ja/LC_MESSAGES/python.mo | Bin 1164 -> 1164 bytes lang/python/ja/LC_MESSAGES/python.po | 10 +++---- lang/python/kk/LC_MESSAGES/python.mo | Bin 418 -> 418 bytes lang/python/kk/LC_MESSAGES/python.po | 10 +++---- lang/python/kn/LC_MESSAGES/python.mo | Bin 420 -> 420 bytes lang/python/kn/LC_MESSAGES/python.po | 10 +++---- lang/python/ko/LC_MESSAGES/python.mo | Bin 1238 -> 1238 bytes lang/python/ko/LC_MESSAGES/python.po | 10 +++---- lang/python/lo/LC_MESSAGES/python.mo | Bin 410 -> 410 bytes lang/python/lo/LC_MESSAGES/python.po | 10 +++---- lang/python/lt/LC_MESSAGES/python.mo | Bin 1382 -> 1382 bytes lang/python/lt/LC_MESSAGES/python.po | 10 +++---- lang/python/mr/LC_MESSAGES/python.mo | Bin 421 -> 421 bytes lang/python/mr/LC_MESSAGES/python.po | 10 +++---- lang/python/nb/LC_MESSAGES/python.mo | Bin 616 -> 616 bytes lang/python/nb/LC_MESSAGES/python.po | 10 +++---- lang/python/nl/LC_MESSAGES/python.mo | Bin 658 -> 658 bytes lang/python/nl/LC_MESSAGES/python.po | 10 +++---- lang/python/pl/LC_MESSAGES/python.mo | Bin 1434 -> 1434 bytes lang/python/pl/LC_MESSAGES/python.po | 10 +++---- lang/python/pt_BR/LC_MESSAGES/python.mo | Bin 1177 -> 1177 bytes lang/python/pt_BR/LC_MESSAGES/python.po | 10 +++---- lang/python/pt_PT/LC_MESSAGES/python.mo | Bin 1173 -> 1173 bytes lang/python/pt_PT/LC_MESSAGES/python.po | 10 +++---- lang/python/ro/LC_MESSAGES/python.mo | Bin 1277 -> 1277 bytes lang/python/ro/LC_MESSAGES/python.po | 10 +++---- lang/python/ru/LC_MESSAGES/python.mo | Bin 740 -> 740 bytes lang/python/ru/LC_MESSAGES/python.po | 10 +++---- lang/python/sk/LC_MESSAGES/python.mo | Bin 1432 -> 1432 bytes lang/python/sk/LC_MESSAGES/python.po | 10 +++---- lang/python/sl/LC_MESSAGES/python.mo | Bin 475 -> 475 bytes lang/python/sl/LC_MESSAGES/python.po | 10 +++---- lang/python/sq/LC_MESSAGES/python.mo | Bin 1148 -> 1148 bytes lang/python/sq/LC_MESSAGES/python.po | 10 +++---- lang/python/sr/LC_MESSAGES/python.mo | Bin 495 -> 495 bytes lang/python/sr/LC_MESSAGES/python.po | 10 +++---- lang/python/sr@latin/LC_MESSAGES/python.mo | Bin 517 -> 517 bytes lang/python/sr@latin/LC_MESSAGES/python.po | 10 +++---- lang/python/sv/LC_MESSAGES/python.mo | Bin 421 -> 421 bytes lang/python/sv/LC_MESSAGES/python.po | 10 +++---- lang/python/th/LC_MESSAGES/python.mo | Bin 411 -> 411 bytes lang/python/th/LC_MESSAGES/python.po | 10 +++---- lang/python/tr_TR/LC_MESSAGES/python.mo | Bin 1192 -> 1192 bytes lang/python/tr_TR/LC_MESSAGES/python.po | 10 +++---- lang/python/uk/LC_MESSAGES/python.mo | Bin 645 -> 645 bytes lang/python/uk/LC_MESSAGES/python.po | 10 +++---- lang/python/ur/LC_MESSAGES/python.mo | Bin 418 -> 418 bytes lang/python/ur/LC_MESSAGES/python.po | 10 +++---- lang/python/uz/LC_MESSAGES/python.mo | Bin 412 -> 412 bytes lang/python/uz/LC_MESSAGES/python.po | 10 +++---- lang/python/zh_CN/LC_MESSAGES/python.mo | Bin 1101 -> 1101 bytes lang/python/zh_CN/LC_MESSAGES/python.po | 10 +++---- lang/python/zh_TW/LC_MESSAGES/python.mo | Bin 1126 -> 1126 bytes lang/python/zh_TW/LC_MESSAGES/python.po | 10 +++---- 113 files changed, 304 insertions(+), 303 deletions(-) diff --git a/lang/python.pot b/lang/python.pot index 2062b9031..3d17cba70 100644 --- a/lang/python.pot +++ b/lang/python.pot @@ -2,7 +2,7 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# #, fuzzy msgid "" msgstr "" @@ -12,47 +12,47 @@ msgstr "" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: \n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Unmount file systems." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "" +msgstr "Dummy python job." #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "" +msgstr "Dummy python step {}" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "" +msgstr "Generate machine-id." #: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" +msgstr "Processing packages (%(count)d / %(total)d)" #: src/modules/packages/main.py:64 src/modules/packages/main.py:74 msgid "Install packages." -msgstr "" +msgstr "Install packages." #: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Installing one package." +msgstr[1] "Installing %(num)d packages." #: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Removing one package." +msgstr[1] "Removing %(num)d packages." diff --git a/lang/python/ar/LC_MESSAGES/python.mo b/lang/python/ar/LC_MESSAGES/python.mo index ed23b6f29e9760ebcdf682fd4350a6964de06278..ba5822bef2750532b9eefc903a7b7815cc68af0c 100644 GIT binary patch delta 21 ccmey){GEA1FPE9Fp@o8hxs{38#_0)+08!KiyZ`_I delta 21 ccmey){GEA1FPEvVk%fYRiIu7O#_0)+08zyTy8r+H diff --git a/lang/python/ar/LC_MESSAGES/python.po b/lang/python/ar/LC_MESSAGES/python.po index ff45f59b3..7c95b55e9 100644 --- a/lang/python/ar/LC_MESSAGES/python.po +++ b/lang/python/ar/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Arabic (https://www.transifex.com/calamares/teams/20061/ar/)\n" "MIME-Version: 1.0\n" @@ -33,16 +33,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -53,7 +53,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/ast/LC_MESSAGES/python.mo b/lang/python/ast/LC_MESSAGES/python.mo index 30d17b2437e0338f0b72650bdc791a9f20264aa8..7f783adc01c93430b101845c975ae00456acb4db 100644 GIT binary patch delta 23 ecmbQkI)`-wBO{lYuAzm3fw`55*=BCWiHrb3$puFM delta 23 ecmbQkI)`-wBO{lou91a;fr*u=`DSj$iHrb3xdlc5 diff --git a/lang/python/ast/LC_MESSAGES/python.po b/lang/python/ast/LC_MESSAGES/python.po index ea5d77ca1..857bc5e79 100644 --- a/lang/python/ast/LC_MESSAGES/python.po +++ b/lang/python/ast/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: enolp , 2017\n" "Language-Team: Asturian (https://www.transifex.com/calamares/teams/20061/ast/)\n" @@ -34,23 +34,23 @@ msgstr "Pasu maniquín de python {}" msgid "Generate machine-id." msgstr "Xenerar machine-id." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/be/LC_MESSAGES/python.mo b/lang/python/be/LC_MESSAGES/python.mo index d553eb62fdf54bcf74cdc6ace069f24ac170996b..83ad333bede65b994ba640db55008983c3a5e043 100644 GIT binary patch delta 21 ccmdnQvWaCvFPE9Fp@o8hxs{38#_6*e0Y|6?ZvX%Q delta 21 ccmdnQvWaCvFPEvVk%fYRiIu7O#_6*e0Y{kzZU6uP diff --git a/lang/python/be/LC_MESSAGES/python.po b/lang/python/be/LC_MESSAGES/python.po index 249c65dc1..ef993836b 100644 --- a/lang/python/be/LC_MESSAGES/python.po +++ b/lang/python/be/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Belarusian (https://www.transifex.com/calamares/teams/20061/be/)\n" "MIME-Version: 1.0\n" @@ -33,16 +33,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -51,7 +51,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/bg/LC_MESSAGES/python.mo b/lang/python/bg/LC_MESSAGES/python.mo index 15606e67b21508211d5223b05ee2be7a7bd150a9..f646fe6c351cae23c71cd30292ad61e924fd4c07 100644 GIT binary patch delta 23 ecmeyz_K$6YEhCqiuAzm3fw`55*=Bb}b0z>-Kn5%T delta 23 ecmeyz_K$6YEhCqyu91a;fr*u=`DS-Ub0z>-Fa|3C diff --git a/lang/python/bg/LC_MESSAGES/python.po b/lang/python/bg/LC_MESSAGES/python.po index 9b7153326..310613b29 100644 --- a/lang/python/bg/LC_MESSAGES/python.po +++ b/lang/python/bg/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Georgi Georgiev , 2018\n" "Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n" @@ -34,23 +34,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "Инсталирай пакетите." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Инсталиране на един пакет." msgstr[1] "Инсталиране на %(num)d пакети." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/ca/LC_MESSAGES/python.mo b/lang/python/ca/LC_MESSAGES/python.mo index 4c682cf45ba3f5ec47a70ffef6da0b34f631b6d8..1225154b6abdbd1952454419b7033c66e93fa001 100644 GIT binary patch delta 23 ecmbQmIg4|HHWQbbuAzm3fw`55*=AFwR3-pMas_q( delta 23 ecmbQmIg4|HHWQbru91a;fr*u=`DRn5R3-pMVg+>o diff --git a/lang/python/ca/LC_MESSAGES/python.po b/lang/python/ca/LC_MESSAGES/python.po index a6aa48f8f..71b452349 100644 --- a/lang/python/ca/LC_MESSAGES/python.po +++ b/lang/python/ca/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Davidmp , 2017\n" "Language-Team: Catalan (https://www.transifex.com/calamares/teams/20061/ca/)\n" @@ -34,23 +34,23 @@ msgstr "Pas de python fitctici {}" msgid "Generate machine-id." msgstr "Generació de l'id. de la màquina." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Processant paquets (%(count)d / %(total)d)" -#: 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." msgstr "Instal·la els paquets." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Instal·lant un paquet." msgstr[1] "Instal·lant %(num)d paquets." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.mo b/lang/python/cs_CZ/LC_MESSAGES/python.mo index 3099769f1db82525b1fb781b69d740206f4f1afc..a5b37d3e41665938a4c03eb94bd25be8b8126837 100644 GIT binary patch delta 23 ecmdnQy@`8+HWQbbuAzm3fw`55*=AFwT4n%C7X`xr delta 23 ecmdnQy@`8+HWQbru91a;fr*u=`DRn5T4n%C2L-|a diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.po b/lang/python/cs_CZ/LC_MESSAGES/python.po index a68890bf4..0a63977f3 100644 --- a/lang/python/cs_CZ/LC_MESSAGES/python.po +++ b/lang/python/cs_CZ/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Pavel Borecki , 2017\n" "Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n" @@ -34,16 +34,16 @@ msgstr "Testovací krok {} python." msgid "Generate machine-id." msgstr "Vytvořit identifikátor stroje." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Zpracovávání balíčků (%(count)d / %(total)d)" -#: 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." msgstr "Instalovat balíčky." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -52,7 +52,7 @@ msgstr[1] "Jsou instalovány %(num)d balíčky." msgstr[2] "Je instalováno %(num)d balíčků." msgstr[3] "Je instalováno %(num)d balíčků." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/da/LC_MESSAGES/python.mo b/lang/python/da/LC_MESSAGES/python.mo index 74ff6ea90e1b892aea1736a4eadade9a3197a65d..1fb0f29836a0cceb40cd361ff2606dc1f5aa5020 100644 GIT binary patch delta 23 ecmcc3ahqdE x0ckZB1_lWr9k_926C; diff --git a/lang/python/de/LC_MESSAGES/python.po b/lang/python/de/LC_MESSAGES/python.po index 66bcb4663..5d1e4b83a 100644 --- a/lang/python/de/LC_MESSAGES/python.po +++ b/lang/python/de/LC_MESSAGES/python.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" -"Last-Translator: Dirk Hein , 2017\n" +"Last-Translator: Dirk Hein , 2017\n" "Language-Team: German (https://www.transifex.com/calamares/teams/20061/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -34,23 +34,23 @@ msgstr "Dummy Python-Schritt {}" msgid "Generate machine-id." msgstr "Generiere Computer-ID" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Verarbeite Pakete (%(count)d / %(total)d)" -#: 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." msgstr "Pakete installieren " -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Installiere ein Paket" msgstr[1] "Installiere %(num)dPakete." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/el/LC_MESSAGES/python.mo b/lang/python/el/LC_MESSAGES/python.mo index 0e75c505149d2829e39d59c01ddc33efa9f71dfe..f7eac754315ee596d989e765869096fc13bd4ef2 100644 GIT binary patch delta 21 ccmdnNvV b}lnrLkk51b1M_GjR(sa0ZVQMs{jB1 delta 21 ccmdnNvV b}mz0BMSus6Dw2mjR(sa0ZU&7ssI20 diff --git a/lang/python/el/LC_MESSAGES/python.po b/lang/python/el/LC_MESSAGES/python.po index 427aaa8df..2be51c37a 100644 --- a/lang/python/el/LC_MESSAGES/python.po +++ b/lang/python/el/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Efstathios Iosifidis , 2017\n" "Language-Team: Greek (https://www.transifex.com/calamares/teams/20061/el/)\n" @@ -34,23 +34,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "εγκατάσταση πακέτων." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/en_GB/LC_MESSAGES/python.mo b/lang/python/en_GB/LC_MESSAGES/python.mo index b32de75241a90adfbcff42b825f9a9b3cf5247c8..a76cbaca7ca3c241b55de60d02bb099b31285f2d 100644 GIT binary patch literal 1172 zcmd^-!EO^V5QYO3C@XOQ!40J8A<{<0*-cfIXiE@jx(%VEi9%Y5UXZ)%CN67xWjk#n z1kb>QD^I|ISKt7zfW!g8of|K}I7wSoeFR4O_1m-KZ@jjD-k$qVz_@|Bhe}a5QJ+vQ zexYumexvT7{?2^<(lmb`eHn8B`XYLY9-_ZTzl;6_{Tu2#%5gqknQ}hQ{42W4|3G(~ zKj@CLFgNA2(H-X!ndVx9N6a>12e||5!03jEU~1O zk{zZES2BWby|Gzu#;_CjUbH$}UXSHUThcZIo|3iEz>vO*!0UGUq@fwLxQMLdkwmZ* zR;naiA(bkG52NK35-x`!7Lp!2iqkOkj~=f~7EAsRT^EYOVz(uia|L zXGc{jhh9TT%Ovi6oZ}H#c5H(@qg<{+GNjrtTifn$km^~T>$cA{iDjZv+)xD7J#J68 r9>JuS*Ud(nW@JNYVIq+EWNK`2C0F8$=4V|xlDD9EEEh( QtW3=(n=%, 2018\n" "Language-Team: English (United Kingdom) (https://www.transifex.com/calamares/teams/20061/en_GB/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,39 +20,39 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Unmount file systems." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "" +msgstr "Dummy python job." #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "" +msgstr "Dummy python step {}" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "" +msgstr "Generate machine-id." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" +msgstr "Processing packages (%(count)d / %(total)d)" -#: 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." -msgstr "" +msgstr "Install packages." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Installing one package." +msgstr[1] "Installing %(num)d packages." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Removing one package." +msgstr[1] "Removing %(num)d packages." diff --git a/lang/python/eo/LC_MESSAGES/python.mo b/lang/python/eo/LC_MESSAGES/python.mo index b0182055011fdb603ff8b6b3b3025bde0057a623..6341c29b5177ccd6b62c7b6ffb8821a03d8cfb4b 100644 GIT binary patch delta 23 ecmbQhIe~M7HWQbbuAzm3fw`55*=AFwXeIzerUh64 delta 23 ecmbQhIe~M7HWQbru91a;fr*u=`DRn5XeIzemIYS; diff --git a/lang/python/eo/LC_MESSAGES/python.po b/lang/python/eo/LC_MESSAGES/python.po index bffb7bf5d..58827fadd 100644 --- a/lang/python/eo/LC_MESSAGES/python.po +++ b/lang/python/eo/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Kurt Ankh Phoenix , 2018\n" "Language-Team: Esperanto (https://www.transifex.com/calamares/teams/20061/eo/)\n" @@ -34,23 +34,23 @@ msgstr "Formala python paŝo {}" msgid "Generate machine-id." msgstr "Generi maŝino-legitimilo." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Prilaborante pakaĵoj (%(count)d / %(total)d)" -#: 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." msgstr "Instali pakaĵoj." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Instalante unu pakaĵo." msgstr[1] "Instalante %(num)d pakaĵoj." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/es/LC_MESSAGES/python.mo b/lang/python/es/LC_MESSAGES/python.mo index 0487a6d7e9f1c65fb586ca012de283631433c4d4..c41fdc83592f0859bddf6fe892e81ed57f639adf 100644 GIT binary patch delta 23 ecmdnYv6*ATUq&u7T|)~619K}Av(4;GI!pjq9R?5p delta 23 ecmdnYv6*ATUq&udT_Xzx0~0G#^Udr`I!pjq4F(SY diff --git a/lang/python/es/LC_MESSAGES/python.po b/lang/python/es/LC_MESSAGES/python.po index c88771e11..39b5e54cc 100644 --- a/lang/python/es/LC_MESSAGES/python.po +++ b/lang/python/es/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: strel, 2017\n" "Language-Team: Spanish (https://www.transifex.com/calamares/teams/20061/es/)\n" @@ -34,23 +34,23 @@ msgstr "Paso {} de python ficticio" msgid "Generate machine-id." msgstr "Generar identificación-de-máquina." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Procesando paquetes (%(count)d / %(total)d)" -#: 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." msgstr "Instalar paquetes." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Instalando un paquete." msgstr[1] "Instalando %(num)d paquetes." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/es_MX/LC_MESSAGES/python.mo b/lang/python/es_MX/LC_MESSAGES/python.mo index b8b639ba04f8d2b6e209d6dde77e4c334b54a960..7e4a725017badf67e032689b595797a76944670e 100644 GIT binary patch delta 23 ecmZ3_xt?=_HWQbbuAzm3fw`55*=AFwDkcC*I0dx; delta 23 ecmZ3_xt?=_HWQbru91a;fr*u=`DRn5DkcC*C, 2018\n" "Language-Team: Spanish (Mexico) (https://www.transifex.com/calamares/teams/20061/es_MX/)\n" @@ -34,23 +34,23 @@ msgstr "Paso python ficticio {}" msgid "Generate machine-id." msgstr "Generar identificación de la maquina." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Procesando paquetes (%(count)d/%(total)d)" -#: 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." msgstr "Instalar paquetes." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Instalando un paquete." msgstr[1] "Instalando%(num)d paquetes." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/es_PR/LC_MESSAGES/python.mo b/lang/python/es_PR/LC_MESSAGES/python.mo index c5fb7e34afc88165b20b491e26a096dc929053d7..cb792fa25da9353841871b83734456db787e077b 100644 GIT binary patch delta 21 ccmdnVypwrCFPE9Fp@o8hxs{38#_39o07s|>0ssI2 delta 21 ccmdnVypwrCFPEvVk%fYRiIu7O#_39o07sby0RR91 diff --git a/lang/python/es_PR/LC_MESSAGES/python.po b/lang/python/es_PR/LC_MESSAGES/python.po index 8deeae26d..da60c777c 100644 --- a/lang/python/es_PR/LC_MESSAGES/python.po +++ b/lang/python/es_PR/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Spanish (Puerto Rico) (https://www.transifex.com/calamares/teams/20061/es_PR/)\n" "MIME-Version: 1.0\n" @@ -33,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/et/LC_MESSAGES/python.mo b/lang/python/et/LC_MESSAGES/python.mo index 2fea8bab0fa4fa571dd762e4ebb2a478a6bbccfc..5b329444e435d8ed5f306c4eae2d54671b35bc51 100644 GIT binary patch delta 23 ecmaFN@t9+SHWQbbuAzm3fw`55*=AEFJthEBW(Cgx delta 23 ecmaFN@t9+SHWQbru91a;fr*u=`DRllJthEBRt3%g diff --git a/lang/python/et/LC_MESSAGES/python.po b/lang/python/et/LC_MESSAGES/python.po index ccd9b1b7d..fa3b724d2 100644 --- a/lang/python/et/LC_MESSAGES/python.po +++ b/lang/python/et/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Madis, 2018\n" "Language-Team: Estonian (https://www.transifex.com/calamares/teams/20061/et/)\n" @@ -34,23 +34,23 @@ msgstr "Testiv python'i aste {}" msgid "Generate machine-id." msgstr "Genereeri masina-id." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Pakkide töötlemine (%(count)d / %(total)d)" -#: 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." msgstr "Paigalda paketid." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Paigaldan ühe paketi." msgstr[1] "Paigaldan %(num)d paketti." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/eu/LC_MESSAGES/python.mo b/lang/python/eu/LC_MESSAGES/python.mo index 2cac09113490e6a47a5ca67a4c0801caf75284f7..48ebe84448449d8cc66cc1f193f3c34cc45891a8 100644 GIT binary patch delta 21 ccmZ3&yo7l|FPE9Fp@o8hxs{38#_7C_07Nzg!vFvP delta 21 ccmZ3&yo7l|FPEvVk%fYRiIu7O#_7C_07NGR!T diff --git a/lang/python/fi_FI/LC_MESSAGES/python.po b/lang/python/fi_FI/LC_MESSAGES/python.po index 623176d9b..d918e8fc9 100644 --- a/lang/python/fi_FI/LC_MESSAGES/python.po +++ b/lang/python/fi_FI/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Finnish (Finland) (https://www.transifex.com/calamares/teams/20061/fi_FI/)\n" "MIME-Version: 1.0\n" @@ -33,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/fr/LC_MESSAGES/python.mo b/lang/python/fr/LC_MESSAGES/python.mo index 416fa75c9881d4e397f5b5b83c345a873907d797..4f6de64a59bb8731c5658da8a7a3bcf3de3acc59 100644 GIT binary patch delta 23 ecmZ3, 2018\n" "Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n" @@ -34,23 +34,23 @@ msgstr "Étape factice python {}" msgid "Generate machine-id." msgstr "Générer un identifiant machine." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Traitement des paquets (%(count)d / %(total)d)" -#: 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." msgstr "Installer les paquets." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Installation d'un paquet." msgstr[1] "Installation de %(num)d paquets." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/fr_CH/LC_MESSAGES/python.mo b/lang/python/fr_CH/LC_MESSAGES/python.mo index 8bea975fdbd3fc3fa839c3550390bf586e8d40f6..257f03e88a8ef759ec91306d93fa8b639c5e6492 100644 GIT binary patch delta 21 ccmdnayq$SMFPE9Fp@o8hxs{38#_0--07p~>`~Uy| delta 21 ccmdnayq$SMFPEvVk%fYRiIu7O#_0--07pdy`v3p{ diff --git a/lang/python/fr_CH/LC_MESSAGES/python.po b/lang/python/fr_CH/LC_MESSAGES/python.po index e0a7526fe..35be0615f 100644 --- a/lang/python/fr_CH/LC_MESSAGES/python.po +++ b/lang/python/fr_CH/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: French (Switzerland) (https://www.transifex.com/calamares/teams/20061/fr_CH/)\n" "MIME-Version: 1.0\n" @@ -33,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/gl/LC_MESSAGES/python.mo b/lang/python/gl/LC_MESSAGES/python.mo index 5c0b1ef3386133a18fc13b15f66b5c3ee204418b..eb645abc7a956e05e69170a20d8f0fe0af62566f 100644 GIT binary patch delta 21 ccmZ3+yo`B5FPE9Fp@o8hxs{38#_9Zw07Qxf$p8QV delta 21 ccmZ3+yo`B5FPEvVk%fYRiIu7O#_9Zw07QEQ$N&HU diff --git a/lang/python/gl/LC_MESSAGES/python.po b/lang/python/gl/LC_MESSAGES/python.po index cc8c6401e..17c4c2ca6 100644 --- a/lang/python/gl/LC_MESSAGES/python.po +++ b/lang/python/gl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Galician (https://www.transifex.com/calamares/teams/20061/gl/)\n" "MIME-Version: 1.0\n" @@ -33,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/gu/LC_MESSAGES/python.mo b/lang/python/gu/LC_MESSAGES/python.mo index 9c4847bcd77b26ec77b6d4217837c0e1ae923491..04154366e0e942f9c43f65704598dc3b24d52951 100644 GIT binary patch delta 21 ccmZ3+yo`B5FPE9Fp@o8hxs{38#_9Zw07Qxf$p8QV delta 21 ccmZ3+yo`B5FPEvVk%fYRiIu7O#_9Zw07QEQ$N&HU diff --git a/lang/python/gu/LC_MESSAGES/python.po b/lang/python/gu/LC_MESSAGES/python.po index 9e31e587c..b91aca087 100644 --- a/lang/python/gu/LC_MESSAGES/python.po +++ b/lang/python/gu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Gujarati (https://www.transifex.com/calamares/teams/20061/gu/)\n" "MIME-Version: 1.0\n" @@ -33,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/he/LC_MESSAGES/python.mo b/lang/python/he/LC_MESSAGES/python.mo index 5231dab2887f389115c0805e4dfcb942b4405155..c374160129dd364fc87203d66d9cc3beeb22ebbc 100644 GIT binary patch delta 23 ecmcb{b&YGoUq&u7T|)~619K}Av(4;G{>%Vgyas*% delta 23 ecmcb{b&YGoUq&udT_Xzx0~0G#^Udr`{>%VgtOk7m diff --git a/lang/python/he/LC_MESSAGES/python.po b/lang/python/he/LC_MESSAGES/python.po index 36f95015d..8760490ad 100644 --- a/lang/python/he/LC_MESSAGES/python.po +++ b/lang/python/he/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Eli Shleifer , 2017\n" "Language-Team: Hebrew (https://www.transifex.com/calamares/teams/20061/he/)\n" @@ -34,16 +34,16 @@ msgstr "צעד דמה של Python {}" msgid "Generate machine-id." msgstr "חולל מספר סידורי של המכונה." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "מעבד חבילות (%(count)d/%(total)d)" -#: 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." msgstr "התקן חבילות." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -52,7 +52,7 @@ msgstr[1] "מתקין %(num)d חבילות." msgstr[2] "מתקין %(num)d חבילות." msgstr[3] "מתקין %(num)d חבילות." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/hi/LC_MESSAGES/python.mo b/lang/python/hi/LC_MESSAGES/python.mo index 5c85ef863df603616008c0d3498aab92779d28cc..7c6a3417772aa62d08bd9815b9b77103697fff96 100644 GIT binary patch delta 23 ecmaFL^OR?UHWQbbuAzm3fw`55*=AEF0~P>NYz5x{ delta 23 ecmaFL^OR?UHWQbru91a;fr*u=`DRll0~P>NTm{|$ diff --git a/lang/python/hi/LC_MESSAGES/python.po b/lang/python/hi/LC_MESSAGES/python.po index d9f42caca..ab977ea55 100644 --- a/lang/python/hi/LC_MESSAGES/python.po +++ b/lang/python/hi/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Panwar108 , 2018\n" "Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n" @@ -34,23 +34,23 @@ msgstr "डमी पाइथन प्रक्रिया की चरण msgid "Generate machine-id." msgstr "मशीन-आईडी उत्पन्न करें।" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "पैकेज (%(count)d / %(total)d) संसाधित किए जा रहे हैं" -#: 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." msgstr "पैकेज इंस्टॉल करें।" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "एक पैकेज इंस्टॉल किया जा रहा है।" msgstr[1] "%(num)d पैकेज इंस्टॉल किए जा रहे हैं।" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/hr/LC_MESSAGES/python.mo b/lang/python/hr/LC_MESSAGES/python.mo index dd66059bbda62a95bdc6549e74a02a8d5656f659..d639f67f1af6419231045c396e40910990acb9e4 100644 GIT binary patch delta 23 ecmeyt`Ga$VHWQbbuAzm3fw`55*=AFw!%P5IRtAs& delta 23 ecmeyt`Ga$VHWQbru91a;fr*u=`DRn5!%P5IMh1@n diff --git a/lang/python/hr/LC_MESSAGES/python.po b/lang/python/hr/LC_MESSAGES/python.po index 24b5462a3..922f88cd0 100644 --- a/lang/python/hr/LC_MESSAGES/python.po +++ b/lang/python/hr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Lovro Kudelić , 2017\n" "Language-Team: Croatian (https://www.transifex.com/calamares/teams/20061/hr/)\n" @@ -34,16 +34,16 @@ msgstr "Testni python korak {}" msgid "Generate machine-id." msgstr "Generiraj ID računala." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Obrađujem pakete (%(count)d / %(total)d)" -#: 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." msgstr "Instaliraj pakete." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -51,7 +51,7 @@ msgstr[0] "Instaliram paket." msgstr[1] "Instaliram %(num)d pakete." msgstr[2] "Instaliram %(num)d pakete." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/hu/LC_MESSAGES/python.mo b/lang/python/hu/LC_MESSAGES/python.mo index 4f62c3a16232a9590cbb139f3b21df05296ea00e..94e29ac49162babdd3eaa340eac2199459720694 100644 GIT binary patch delta 23 ecmX@Zc7|<3IU|>uuAzm3fw`55+2%&Z(~JOB%LdN? delta 23 ecmX@Zc7|<3IU|>;u91a;fr*u=`Q}E((~JOBy9Ukx diff --git a/lang/python/hu/LC_MESSAGES/python.po b/lang/python/hu/LC_MESSAGES/python.po index 90b3b9704..286e27b3b 100644 --- a/lang/python/hu/LC_MESSAGES/python.po +++ b/lang/python/hu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: miku84, 2017\n" "Language-Team: Hungarian (https://www.transifex.com/calamares/teams/20061/hu/)\n" @@ -34,23 +34,23 @@ msgstr "Hamis PythonQt {} lépés" msgid "Generate machine-id." msgstr "Számítógép azonosító generálása." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Csomagok feldolgozása (%(count)d / %(total)d)" -#: 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." msgstr "Csomagok telepítése." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/id/LC_MESSAGES/python.mo b/lang/python/id/LC_MESSAGES/python.mo index 2cb9642e685c3f3e340371fe6865fe6515abb5ca..c81f1472a3e0d8fffbc70fce4fb29898e672e1f9 100644 GIT binary patch delta 23 ecmdnRv5RAaHWQbbuAzm3fw`55*=AEFRwe*T2nAFC delta 23 ecmdnRv5RAaHWQbru91a;fr*u=`DRllRwe*S_ytn{ diff --git a/lang/python/id/LC_MESSAGES/python.po b/lang/python/id/LC_MESSAGES/python.po index bb61fbbcd..020f75344 100644 --- a/lang/python/id/LC_MESSAGES/python.po +++ b/lang/python/id/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Harry Suryapambagya , 2018\n" "Language-Team: Indonesian (https://www.transifex.com/calamares/teams/20061/id/)\n" @@ -34,22 +34,22 @@ msgstr "Langkah {} dumi python" msgid "Generate machine-id." msgstr "Menghasilkan machine-id." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Paket pemrosesan (%(count)d/%(total)d)" -#: 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." msgstr "pasang paket" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "memasang paket %(num)d" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/is/LC_MESSAGES/python.mo b/lang/python/is/LC_MESSAGES/python.mo index ceede96f685a268f316fd41ca04ee42147f9b516..12b4043e36654c46edaa7cee8c4a61c7b09f9428 100644 GIT binary patch delta 23 ecmZ3*v5I5EUq&u7T|)~619K}Av(4;G%1i)Oe+Bgb delta 23 ecmZ3*v5I5EUq&udT_Xzx0~0G#^Udr`%1i)OZw2%K diff --git a/lang/python/is/LC_MESSAGES/python.po b/lang/python/is/LC_MESSAGES/python.po index aeb38611d..eeb2989b9 100644 --- a/lang/python/is/LC_MESSAGES/python.po +++ b/lang/python/is/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Kristján Magnússon, 2017\n" "Language-Team: Icelandic (https://www.transifex.com/calamares/teams/20061/is/)\n" @@ -34,23 +34,23 @@ msgstr "Dummy python step {}" msgid "Generate machine-id." msgstr "Generate machine-id." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Vinnslupakkar (%(count)d / %(total)d)" -#: 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." msgstr "Setja upp pakka." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Setja upp einn pakka." msgstr[1] "Setur upp %(num)d pakka." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/it_IT/LC_MESSAGES/python.mo b/lang/python/it_IT/LC_MESSAGES/python.mo index 9aee6696ec0bbaacade9577ec1c0e5ad4d389a30..8e875d10fbdc310b1753f8e9a1c1d7b6ccf86d0a 100644 GIT binary patch delta 23 ecmbQrIhAvRHWQbbuAzm3fw`55*=AFw1SSAQj0I-^ delta 23 ecmbQrIhAvRHWQbru91a;fr*u=`DRn51SSAQd^oCyF!?gdN$ delta 23 ecmeC-?BU#?&BSG@Yh}HWQbbuAzm3fw`55*=AFwg-ifZItD5L delta 23 ecmcb{d5v>}HWQbru91a;fr*u=`DRn5g-ifZDh4S4 diff --git a/lang/python/ko/LC_MESSAGES/python.po b/lang/python/ko/LC_MESSAGES/python.po index a880b2af1..2a3870f43 100644 --- a/lang/python/ko/LC_MESSAGES/python.po +++ b/lang/python/ko/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Ji-Hyeon Gim , 2018\n" "Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n" @@ -34,22 +34,22 @@ msgstr "더미 파이썬 단계 {}" msgid "Generate machine-id." msgstr "장치 식별자를 생성합니다." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "패키지들을 처리하는 중입니다 (%(count)d / %(total)d)" -#: 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." msgstr "패키지들을 설치합니다." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "%(num)d개의 패키지들을 설치하는 중입니다." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/lo/LC_MESSAGES/python.mo b/lang/python/lo/LC_MESSAGES/python.mo index 878622b20159e8f9efcaed54fd3541b01f936d44..e75506de40094ba7b8b02e54667ee34e4194ab33 100644 GIT binary patch delta 21 ccmbQmJd1fkFPE9Fp@o8hxs{38#_7zA078-lr2qf` delta 21 ccmbQmJd1fkFPEvVk%fYRiIu7O#_7zA078QWqyPW_ diff --git a/lang/python/lo/LC_MESSAGES/python.po b/lang/python/lo/LC_MESSAGES/python.po index 18f49126d..776a0ff5a 100644 --- a/lang/python/lo/LC_MESSAGES/python.po +++ b/lang/python/lo/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Lao (https://www.transifex.com/calamares/teams/20061/lo/)\n" "MIME-Version: 1.0\n" @@ -33,22 +33,22 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/lt/LC_MESSAGES/python.mo b/lang/python/lt/LC_MESSAGES/python.mo index e5a4083ba80ab9969390f5702d6fe2858fb45c96..b7bbd92af571fff2af8e0153e7b2ec5996094a30 100644 GIT binary patch delta 23 ecmaFH^^9wSHWQbbuAzm3fw`55*=AEFLuLR|MFrge delta 23 ecmaFH^^9wSHWQbru91a;fr*u=`DRllLuLR|H3i%N diff --git a/lang/python/lt/LC_MESSAGES/python.po b/lang/python/lt/LC_MESSAGES/python.po index d2221eeb9..d96c5cd1d 100644 --- a/lang/python/lt/LC_MESSAGES/python.po +++ b/lang/python/lt/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Moo, 2017\n" "Language-Team: Lithuanian (https://www.transifex.com/calamares/teams/20061/lt/)\n" @@ -34,16 +34,16 @@ msgstr "Fiktyvus python žingsnis {}" msgid "Generate machine-id." msgstr "Generuoti machine-id." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Apdorojami paketai (%(count)d / %(total)d)" -#: 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." msgstr "Įdiegti paketus." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -52,7 +52,7 @@ msgstr[1] "Įdiegiami %(num)d paketai." msgstr[2] "Įdiegiama %(num)d paketų." msgstr[3] "Įdiegiama %(num)d paketų." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/mr/LC_MESSAGES/python.mo b/lang/python/mr/LC_MESSAGES/python.mo index 5ecb5178cf6fbe491d19c275519215f07c54f390..5bd87d4b5a00a6a412a54350cbb99d98216ac2e2 100644 GIT binary patch delta 21 ccmZ3=yp(xDFPE9Fp@o8hxs{38#_4>F07PH~#sB~S delta 21 ccmZ3=yp(xDFPEvVk%fYRiIu7O#_4>F07Ov*#Q*>R diff --git a/lang/python/mr/LC_MESSAGES/python.po b/lang/python/mr/LC_MESSAGES/python.po index 8f61a6bb1..f40b36060 100644 --- a/lang/python/mr/LC_MESSAGES/python.po +++ b/lang/python/mr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Marathi (https://www.transifex.com/calamares/teams/20061/mr/)\n" "MIME-Version: 1.0\n" @@ -33,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/nb/LC_MESSAGES/python.mo b/lang/python/nb/LC_MESSAGES/python.mo index 86155114f1d6248b2f371b50a056f7df91f7e483..2fbbd931afecafad3c14fa324bb56ebd07992b2a 100644 GIT binary patch delta 21 ccmaFC@`7c;9WFCnLkk51b1M_GjnA4G0ae2XU;qFB delta 21 ccmaFC@`7c;9WGN{BMSus6Dw2mjnA4G0adgIUjP6A diff --git a/lang/python/nb/LC_MESSAGES/python.po b/lang/python/nb/LC_MESSAGES/python.po index ca2d2d95d..16ab104dd 100644 --- a/lang/python/nb/LC_MESSAGES/python.po +++ b/lang/python/nb/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Tyler Moss , 2017\n" "Language-Team: Norwegian Bokmål (https://www.transifex.com/calamares/teams/20061/nb/)\n" @@ -34,23 +34,23 @@ msgstr "" msgid "Generate machine-id." msgstr "Generer maskin-ID." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "Installer pakker." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/nl/LC_MESSAGES/python.mo b/lang/python/nl/LC_MESSAGES/python.mo index 8f6558834f4411c97ff6a35345a11ceab3f7cd0a..29b290dcb580700fa89bec49a826e0af99519af1 100644 GIT binary patch delta 23 ecmbQlI*D}yBO{lYuAzm3fw`55*=BCWc18d|{RJri delta 23 ecmbQlI*D}yBO{lou91a;fr*u=`DSj$c18d|?FA?R diff --git a/lang/python/nl/LC_MESSAGES/python.po b/lang/python/nl/LC_MESSAGES/python.po index 721f9d667..e06a0c8b2 100644 --- a/lang/python/nl/LC_MESSAGES/python.po +++ b/lang/python/nl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Adriaan de Groot , 2017\n" "Language-Team: Dutch (https://www.transifex.com/calamares/teams/20061/nl/)\n" @@ -34,23 +34,23 @@ msgstr "Voorbeeld Python-stap {}" msgid "Generate machine-id." msgstr "Genereer machine-id" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/pl/LC_MESSAGES/python.mo b/lang/python/pl/LC_MESSAGES/python.mo index 9be7aab577b382cfa5e023484fd190b7852dfabc..2c68e6ff9303165e182e6794f8a16551da42e69d 100644 GIT binary patch delta 23 ecmbQmJ&SvTHWQbbuAzm3fw`55*=AFwRAvB1#|3); delta 23 ecmbQmJ&SvTHWQbru91a;fr*u=`DRn5RAvB1w*`6t diff --git a/lang/python/pl/LC_MESSAGES/python.po b/lang/python/pl/LC_MESSAGES/python.po index 09b27b53f..be0346a43 100644 --- a/lang/python/pl/LC_MESSAGES/python.po +++ b/lang/python/pl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Marcin Mikołajczak , 2017\n" "Language-Team: Polish (https://www.transifex.com/calamares/teams/20061/pl/)\n" @@ -34,16 +34,16 @@ msgstr "Krok fikcyjny Python {}" msgid "Generate machine-id." msgstr "Generuj machine-id." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Przetwarzanie pakietów (%(count)d / %(total)d)" -#: 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." msgstr "Zainstaluj pakiety." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -52,7 +52,7 @@ msgstr[1] "Instalowanie %(num)d pakietów." msgstr[2] "Instalowanie %(num)d pakietów." msgstr[3] "Instalowanie%(num)d pakietów." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/pt_BR/LC_MESSAGES/python.mo b/lang/python/pt_BR/LC_MESSAGES/python.mo index eac961ff71aa33ee5ec2d8eb093bf0d3c57f5d33..d21cae28fc67c29aa757c01202271b715441cc4c 100644 GIT binary patch delta 23 ecmbQqIg@jPHWQbbuAzm3fw`55*=AFw6ea*hL, 2018\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n" @@ -34,23 +34,23 @@ msgstr "Etapa modelo python {}" msgid "Generate machine-id." msgstr "Gerar machine-id." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Processando pacotes (%(count)d / %(total)d)" -#: 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." msgstr "Instalar pacotes." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Instalando um pacote." msgstr[1] "Instalando %(num)d pacotes." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/pt_PT/LC_MESSAGES/python.mo b/lang/python/pt_PT/LC_MESSAGES/python.mo index a89214d0142291899ab96985ec493538cde51c3d..f4b0545d919e81bf2f7be97ec6790b8201dc69cc 100644 GIT binary patch delta 23 ecmbQrIhAvRHWQbbuAzm3fw`55*=AFw1SSAQj0I-^ delta 23 ecmbQrIhAvRHWQbru91a;fr*u=`DRn51SSAQd, 2017\n" "Language-Team: Portuguese (Portugal) (https://www.transifex.com/calamares/teams/20061/pt_PT/)\n" @@ -34,23 +34,23 @@ msgstr "Passo Dummy python {}" msgid "Generate machine-id." msgstr "Gerar id-máquina" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "A processar pacotes (%(count)d / %(total)d)" -#: 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." msgstr "Instalar pacotes." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "A instalar um pacote." msgstr[1] "A instalar %(num)d pacotes." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/ro/LC_MESSAGES/python.mo b/lang/python/ro/LC_MESSAGES/python.mo index 1bd4758e88117cae8c737baba2145a24d3c67180..8e906b6d0a512940afd871f5e8e4b660d13e66ea 100644 GIT binary patch delta 23 ecmey%`ImEpHWQbbuAzm3fw`55*=AFw6HEYDJO-Zt delta 23 ecmey%`ImEpHWQbru91a;fr*u=`DRn56HEYDEC!wc diff --git a/lang/python/ro/LC_MESSAGES/python.po b/lang/python/ro/LC_MESSAGES/python.po index fd16c3533..e7ac9b50f 100644 --- a/lang/python/ro/LC_MESSAGES/python.po +++ b/lang/python/ro/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Baadur Jobava , 2018\n" "Language-Team: Romanian (https://www.transifex.com/calamares/teams/20061/ro/)\n" @@ -34,16 +34,16 @@ msgstr "Dummy python step {}" msgid "Generate machine-id." msgstr "Generează machine-id." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Se procesează pachetele (%(count)d / %(total)d)" -#: 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." msgstr "Instalează pachetele." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -51,7 +51,7 @@ msgstr[0] "Instalează un pachet." msgstr[1] "Se instalează %(num)d pachete." msgstr[2] "Se instalează %(num)d din pachete." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/ru/LC_MESSAGES/python.mo b/lang/python/ru/LC_MESSAGES/python.mo index e3e2b032d90cf0760a89b15a300c4efebb298b4a..ada5179c95dd19bd65bfd13b9931d61cf8106b57 100644 GIT binary patch delta 21 ccmaFD`h<1DMJ_X4Lkk51b1M_Gjkh_O08@ts%m4rY delta 21 ccmaFD`h<1DMJ`iaBMSus6Dw2mjkh_O08@Ad%K!iX diff --git a/lang/python/ru/LC_MESSAGES/python.po b/lang/python/ru/LC_MESSAGES/python.po index 3e4fc4e8f..27f0a7c1b 100644 --- a/lang/python/ru/LC_MESSAGES/python.po +++ b/lang/python/ru/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Aleksey Kabanov , 2018\n" "Language-Team: Russian (https://www.transifex.com/calamares/teams/20061/ru/)\n" @@ -34,16 +34,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Обработка пакетов (%(count)d / %(total)d)" -#: 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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -52,7 +52,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/sk/LC_MESSAGES/python.mo b/lang/python/sk/LC_MESSAGES/python.mo index 0dd441495e1a3b5d0f613d78ccda91bb593c92c1..364833aaf20ab395ebba50b5c8f1e0c9f4633355 100644 GIT binary patch delta 23 ecmbQiJ%f9LHWQbbuAzm3fw`55*=AFwWM%+HYXx-x delta 23 ecmbQiJ%f9LHWQbru91a;fr*u=`DRn5WM%+HTLp9g diff --git a/lang/python/sk/LC_MESSAGES/python.po b/lang/python/sk/LC_MESSAGES/python.po index 2f3b0ba8a..bd347d05e 100644 --- a/lang/python/sk/LC_MESSAGES/python.po +++ b/lang/python/sk/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Dušan Kazik , 2017\n" "Language-Team: Slovak (https://www.transifex.com/calamares/teams/20061/sk/)\n" @@ -34,16 +34,16 @@ msgstr "Fiktívny krok {} jazyka python" msgid "Generate machine-id." msgstr "Generovanie identifikátora počítača." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Spracovávajú sa balíky (%(count)d / %(total)d)" -#: 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." msgstr "Inštalácia balíkov." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -52,7 +52,7 @@ msgstr[1] "Inštalujú sa %(num)d balíky." msgstr[2] "Inštaluje sa %(num)d balíkov." msgstr[3] "Inštaluje sa %(num)d balíkov." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/sl/LC_MESSAGES/python.mo b/lang/python/sl/LC_MESSAGES/python.mo index e800ecf1cae40b9bb1c6eb152a11d317983a65a0..40257353ebe57aa65220b4f01a3aed92b7ba1204 100644 GIT binary patch delta 21 ccmcc3e4BYfFPE9Fp@o8hxs{38#_2AM08KmwXaE2J delta 21 ccmcc3e4BYfFPEvVk%fYRiIu7O#_2AM08K3hX8-^I diff --git a/lang/python/sl/LC_MESSAGES/python.po b/lang/python/sl/LC_MESSAGES/python.po index 8e811c48f..5cd1e4eb5 100644 --- a/lang/python/sl/LC_MESSAGES/python.po +++ b/lang/python/sl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Slovenian (https://www.transifex.com/calamares/teams/20061/sl/)\n" "MIME-Version: 1.0\n" @@ -33,16 +33,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -51,7 +51,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/sq/LC_MESSAGES/python.mo b/lang/python/sq/LC_MESSAGES/python.mo index b411951a24f2757c772bd609923e52189d7ae2a3..67fb7b6e6df78cb858c112318accfabd0bef61c7 100644 GIT binary patch delta 23 ecmeyv@rPrBHWQbbuAzm3fw`55*=AEFcP0Q<, 2017\n" "Language-Team: Albanian (https://www.transifex.com/calamares/teams/20061/sq/)\n" @@ -34,23 +34,23 @@ msgstr "Hap python {} dummy" msgid "Generate machine-id." msgstr "Prodho machine-id." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Po përpunohen paketat (%(count)d / %(total)d)" -#: 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." msgstr "Instalo paketa." -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "Po instalohet një paketë." msgstr[1] "Po instalohen %(num)d paketa." -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/sr/LC_MESSAGES/python.mo b/lang/python/sr/LC_MESSAGES/python.mo index 24eecc19b1864f89a8a2d9b235ee9ece293adca4..09ca36cb9234dbb52f91587e0acf5d7abafbaa2c 100644 GIT binary patch delta 21 ccmaFQ{GNG2FPE9Fp@o8hxs{38#_17^08oSmqyPW_ delta 21 ccmaFQ{GNG2FPEvVk%fYRiIu7O#_17^08n)XqW}N^ diff --git a/lang/python/sr/LC_MESSAGES/python.po b/lang/python/sr/LC_MESSAGES/python.po index d883887db..880461841 100644 --- a/lang/python/sr/LC_MESSAGES/python.po +++ b/lang/python/sr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Serbian (https://www.transifex.com/calamares/teams/20061/sr/)\n" "MIME-Version: 1.0\n" @@ -33,16 +33,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -50,7 +50,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/sr@latin/LC_MESSAGES/python.mo b/lang/python/sr@latin/LC_MESSAGES/python.mo index 27d72a95b7be2a361e0f38e6477b21f4054a2f21..7ea3455ca6aac48afb9ccbd3a603cd26b0e153ae 100644 GIT binary patch delta 21 ccmZo=X=Rzv%Vnl(XrW+WZe?P&ae5vj06<0s=l}o! delta 21 ccmZo=X=Rzv%Vnx-WT9YSVr6Q+ae5vj06;ed=Kufz diff --git a/lang/python/sr@latin/LC_MESSAGES/python.po b/lang/python/sr@latin/LC_MESSAGES/python.po index bf6a1a557..53bc1bcef 100644 --- a/lang/python/sr@latin/LC_MESSAGES/python.po +++ b/lang/python/sr@latin/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Serbian (Latin) (https://www.transifex.com/calamares/teams/20061/sr%40latin/)\n" "MIME-Version: 1.0\n" @@ -33,16 +33,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -50,7 +50,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/sv/LC_MESSAGES/python.mo b/lang/python/sv/LC_MESSAGES/python.mo index c3236012c7ff174c3f669bdd76d6eda325773820..e7642b13729e7b13a4967b326a0aa19fa166c5ed 100644 GIT binary patch delta 21 ccmZ3=yp(xDFPE9Fp@o8hxs{38#_4>F07PH~#sB~S delta 21 ccmZ3=yp(xDFPEvVk%fYRiIu7O#_4>F07Ov*#Q*>R diff --git a/lang/python/sv/LC_MESSAGES/python.po b/lang/python/sv/LC_MESSAGES/python.po index b9cb74c5c..36c1603f1 100644 --- a/lang/python/sv/LC_MESSAGES/python.po +++ b/lang/python/sv/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Swedish (https://www.transifex.com/calamares/teams/20061/sv/)\n" "MIME-Version: 1.0\n" @@ -33,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/th/LC_MESSAGES/python.mo b/lang/python/th/LC_MESSAGES/python.mo index 8dfdbaca7337d582f247bc457ef4065e5f8493c7..16bd3788a5725b8a1e0057556d76fa432c6ed2a1 100644 GIT binary patch delta 21 ccmbQuJezq!FPE9Fp@o8hxs{38#_24K07AS4r~m)} delta 21 ccmbQuJezq!FPEvVk%fYRiIu7O#_24K079(=rvLx| diff --git a/lang/python/th/LC_MESSAGES/python.po b/lang/python/th/LC_MESSAGES/python.po index 4d83497f2..465581bea 100644 --- a/lang/python/th/LC_MESSAGES/python.po +++ b/lang/python/th/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Thai (https://www.transifex.com/calamares/teams/20061/th/)\n" "MIME-Version: 1.0\n" @@ -33,22 +33,22 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/tr_TR/LC_MESSAGES/python.mo b/lang/python/tr_TR/LC_MESSAGES/python.mo index 6976a94d235d93280c427bd5ce897514d664acb8..76f5d0bc779fad1b797a2b71dbdb88048a69fcad 100644 GIT binary patch delta 23 ecmZ3%xq@?pHWQbbuAzm3fw`55*=AFwVkQ7c_648- delta 23 ecmZ3%xq@?pHWQbru91a;fr*u=`DRn5VkQ7c<^`Vs diff --git a/lang/python/tr_TR/LC_MESSAGES/python.po b/lang/python/tr_TR/LC_MESSAGES/python.po index 59ea61cb8..cfcb8b328 100644 --- a/lang/python/tr_TR/LC_MESSAGES/python.po +++ b/lang/python/tr_TR/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Demiray “tulliana” Muhterem , 2017\n" "Language-Team: Turkish (Turkey) (https://www.transifex.com/calamares/teams/20061/tr_TR/)\n" @@ -34,23 +34,23 @@ msgstr "Dummy python step {}" msgid "Generate machine-id." msgstr "Makine kimliği oluştur." -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "Paketler işleniyor (%(count)d / %(total)d)" -#: 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." msgstr "Paketleri yükle" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "%(num)d paket yükleniyor" msgstr[1] "%(num)d paket yükleniyor" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/uk/LC_MESSAGES/python.mo b/lang/python/uk/LC_MESSAGES/python.mo index 64f638da4f7c1af08fc375806d0b454efa1699f7..46f027dacc5ea91d47a53d71aecd6f8a82576756 100644 GIT binary patch delta 21 ccmZo=ZDpO%%Vnl(XrW+WZe?P&ar!$(06}a9Y5)KL delta 21 ccmZo=ZDpO%%Vnx-WT9YSVr6Q+ar!$(06|>_X#fBK diff --git a/lang/python/uk/LC_MESSAGES/python.po b/lang/python/uk/LC_MESSAGES/python.po index 9aca36a28..9de9a1166 100644 --- a/lang/python/uk/LC_MESSAGES/python.po +++ b/lang/python/uk/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Ukrainian (https://www.transifex.com/calamares/teams/20061/uk/)\n" "MIME-Version: 1.0\n" @@ -33,16 +33,16 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." @@ -51,7 +51,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/ur/LC_MESSAGES/python.mo b/lang/python/ur/LC_MESSAGES/python.mo index ae1248fd1d2ead9cf98552204ef47ff4d2f17906..aa49d1dbcc105e78aadbdfe88e9007d64671e454 100644 GIT binary patch delta 21 ccmZ3)yoh;1FPE9Fp@o8hxs{38#_8OQ07K#hy#N3J delta 21 ccmZ3)yoh;1FPEvVk%fYRiIu7O#_8OQ07KISyZ`_I diff --git a/lang/python/ur/LC_MESSAGES/python.po b/lang/python/ur/LC_MESSAGES/python.po index f10805858..995b75a78 100644 --- a/lang/python/ur/LC_MESSAGES/python.po +++ b/lang/python/ur/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Urdu (https://www.transifex.com/calamares/teams/20061/ur/)\n" "MIME-Version: 1.0\n" @@ -33,23 +33,23 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/uz/LC_MESSAGES/python.mo b/lang/python/uz/LC_MESSAGES/python.mo index 0978980d556f2a9a84fc1ecdfedfe5f68583e736..ed271c471b3d5e9d0cae4885567013cc48651ce5 100644 GIT binary patch delta 21 ccmbQkJcoHgFPE9Fp@o8hxs{38#_6n#07B*ks{jB1 delta 21 ccmbQkJcoHgFPEvVk%fYRiIu7O#_6n#07BOVssI20 diff --git a/lang/python/uz/LC_MESSAGES/python.po b/lang/python/uz/LC_MESSAGES/python.po index 1e02a193a..df3a0dd75 100644 --- a/lang/python/uz/LC_MESSAGES/python.po +++ b/lang/python/uz/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Language-Team: Uzbek (https://www.transifex.com/calamares/teams/20061/uz/)\n" "MIME-Version: 1.0\n" @@ -33,22 +33,22 @@ msgstr "" msgid "Generate machine-id." msgstr "" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "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." msgstr "" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/zh_CN/LC_MESSAGES/python.mo b/lang/python/zh_CN/LC_MESSAGES/python.mo index 22a166e353f807ef52fc67df09699accc5816ff4..f5d6781a0547fd4c0366521c071d356b0c8a1f5a 100644 GIT binary patch delta 23 ecmX@hah79)HWQbbuAzm3fw`55*=AEF2_^teas`b5 delta 23 ecmX@hah79)HWQbru91a;fr*u=`DRll2_^teVg-x< diff --git a/lang/python/zh_CN/LC_MESSAGES/python.po b/lang/python/zh_CN/LC_MESSAGES/python.po index f20d60e7a..80d0e4dd9 100644 --- a/lang/python/zh_CN/LC_MESSAGES/python.po +++ b/lang/python/zh_CN/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: leonfeng , 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/calamares/teams/20061/zh_CN/)\n" @@ -34,22 +34,22 @@ msgstr "占位 Python 步骤 {}" msgid "Generate machine-id." msgstr "生成 machine-id。" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "软件包处理中(%(count)d/%(total)d)" -#: 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." msgstr "安装软件包。" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "安装%(num)d软件包。" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." diff --git a/lang/python/zh_TW/LC_MESSAGES/python.mo b/lang/python/zh_TW/LC_MESSAGES/python.mo index bc07e495fffb574012b1e55b45f106345b882b87..668463d886280a9b7e39c9e35d2eb5e226fbc2f0 100644 GIT binary patch delta 23 ecmaFH@r+}GHWQbbuAzm3fw`55*=AEFLnZ)H@CDca delta 23 ecmaFH@r+}GHWQbru91a;fr*u=`DRllLnZ)H;04zJ diff --git a/lang/python/zh_TW/LC_MESSAGES/python.po b/lang/python/zh_TW/LC_MESSAGES/python.po index 829788303..457ea5dfe 100644 --- a/lang/python/zh_TW/LC_MESSAGES/python.po +++ b/lang/python/zh_TW/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: Jeff Huang , 2017\n" "Language-Team: Chinese (Taiwan) (https://www.transifex.com/calamares/teams/20061/zh_TW/)\n" @@ -34,22 +34,22 @@ msgstr "假的 python step {}" msgid "Generate machine-id." msgstr "生成 machine-id。" -#: src/modules/packages/main.py:61 +#: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" msgstr "正在處理軟體包 (%(count)d / %(total)d)" -#: 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." msgstr "安裝軟體包。" -#: src/modules/packages/main.py:66 +#: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "正在安裝 %(num)d 軟體包。" -#: src/modules/packages/main.py:69 +#: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." From 018ee1cc067ba2ce434be290c19bcc241cd519cb Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 25 Jun 2018 10:04:26 -0400 Subject: [PATCH 325/385] CMake: bump version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa6f38c91..5eed360f8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,7 +54,7 @@ set( CALAMARES_DESCRIPTION_SUMMARY set( CALAMARES_VERSION_MAJOR 3 ) set( CALAMARES_VERSION_MINOR 2 ) -set( CALAMARES_VERSION_PATCH 0 ) +set( CALAMARES_VERSION_PATCH 1 ) set( CALAMARES_VERSION_RC 0 ) From 295e14530e4e1f3c1ae86032962d048ff3259597 Mon Sep 17 00:00:00 2001 From: Caio Carvalho Date: Tue, 26 Jun 2018 00:38:52 -0300 Subject: [PATCH 328/385] [partition] Adding resizing, deactivating and removing procedures for LVM VGs. --- src/modules/partition/CMakeLists.txt | 4 + .../partition/core/PartitionCoreModule.cpp | 116 ++++++++++++++++-- .../partition/core/PartitionCoreModule.h | 11 ++ .../partition/gui/CreateVolumeGroupDialog.cpp | 9 +- .../partition/gui/CreateVolumeGroupDialog.h | 4 +- src/modules/partition/gui/PartitionPage.cpp | 80 +++++++++++- src/modules/partition/gui/PartitionPage.h | 3 + src/modules/partition/gui/PartitionPage.ui | 54 ++++++-- .../partition/gui/ResizeVolumeGroupDialog.cpp | 62 ++++++++++ .../partition/gui/ResizeVolumeGroupDialog.h | 40 ++++++ .../partition/gui/VolumeGroupBaseDialog.cpp | 24 ++-- .../partition/gui/VolumeGroupBaseDialog.h | 8 +- .../jobs/DeactivateVolumeGroupJob.cpp | 69 +++++++++++ .../partition/jobs/DeactivateVolumeGroupJob.h | 40 ++++++ .../partition/jobs/RemoveVolumeGroupJob.cpp | 66 ++++++++++ .../partition/jobs/RemoveVolumeGroupJob.h | 40 ++++++ .../partition/jobs/ResizeVolumeGroupJob.cpp | 101 +++++++++++++++ .../partition/jobs/ResizeVolumeGroupJob.h | 48 ++++++++ 18 files changed, 738 insertions(+), 41 deletions(-) create mode 100644 src/modules/partition/gui/ResizeVolumeGroupDialog.cpp create mode 100644 src/modules/partition/gui/ResizeVolumeGroupDialog.h create mode 100644 src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp create mode 100644 src/modules/partition/jobs/DeactivateVolumeGroupJob.h create mode 100644 src/modules/partition/jobs/RemoveVolumeGroupJob.cpp create mode 100644 src/modules/partition/jobs/RemoveVolumeGroupJob.h create mode 100644 src/modules/partition/jobs/ResizeVolumeGroupJob.cpp create mode 100644 src/modules/partition/jobs/ResizeVolumeGroupJob.h diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index 874440177..bfc967f3d 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -51,6 +51,7 @@ if ( KPMcore_FOUND ) gui/PartitionSplitterWidget.cpp gui/PartitionViewStep.cpp gui/PrettyRadioButton.cpp + gui/ResizeVolumeGroupDialog.cpp gui/ScanningDialog.cpp gui/ReplaceWidget.cpp gui/VolumeGroupBaseDialog.cpp @@ -59,11 +60,14 @@ if ( KPMcore_FOUND ) jobs/CreatePartitionJob.cpp jobs/CreatePartitionTableJob.cpp jobs/CreateVolumeGroupJob.cpp + jobs/DeactivateVolumeGroupJob.cpp jobs/DeletePartitionJob.cpp jobs/FillGlobalStorageJob.cpp jobs/FormatPartitionJob.cpp jobs/PartitionJob.cpp + jobs/RemoveVolumeGroupJob.cpp jobs/ResizePartitionJob.cpp + jobs/ResizeVolumeGroupJob.cpp jobs/SetPartitionFlagsJob.cpp UI gui/ChoicePage.ui diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index 9646d31cd..e82c7c64d 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -34,10 +34,13 @@ #include "jobs/CreatePartitionJob.h" #include "jobs/CreatePartitionTableJob.h" #include "jobs/CreateVolumeGroupJob.h" +#include "jobs/DeactivateVolumeGroupJob.h" #include "jobs/DeletePartitionJob.h" #include "jobs/FillGlobalStorageJob.h" #include "jobs/FormatPartitionJob.h" +#include "jobs/RemoveVolumeGroupJob.h" #include "jobs/ResizePartitionJob.h" +#include "jobs/ResizeVolumeGroupJob.h" #include "jobs/SetPartitionFlagsJob.h" #include "Typedefs.h" @@ -65,6 +68,7 @@ PartitionCoreModule::DeviceInfo::DeviceInfo( Device* _device ) : device( _device ) , partitionModel( new PartitionModel ) , immutableDevice( new Device( *_device ) ) + , isAvailable( true ) {} PartitionCoreModule::DeviceInfo::~DeviceInfo() @@ -298,6 +302,48 @@ PartitionCoreModule::createVolumeGroup( QString &vgName, refresh(); } +void +PartitionCoreModule::resizeVolumeGroup( LvmDevice *device, QVector< const Partition* >& pvList ) +{ + DeviceInfo* deviceInfo = infoForDevice( device ); + Q_ASSERT( deviceInfo ); + + ResizeVolumeGroupJob* job = new ResizeVolumeGroupJob( device, pvList ); + + deviceInfo->jobs << Calamares::job_ptr( job ); + + refresh(); +} + +void +PartitionCoreModule::deactivateVolumeGroup( LvmDevice *device ) +{ + DeviceInfo* deviceInfo = infoForDevice( device ); + Q_ASSERT( deviceInfo ); + + deviceInfo->isAvailable = false; + + DeactivateVolumeGroupJob* job = new DeactivateVolumeGroupJob( device ); + + // DeactivateVolumeGroupJob needs to be immediately called + job->exec(); + + refresh(); +} + +void +PartitionCoreModule::removeVolumeGroup( LvmDevice *device ) +{ + DeviceInfo* deviceInfo = infoForDevice( device ); + Q_ASSERT( deviceInfo ); + + RemoveVolumeGroupJob* job = new RemoveVolumeGroupJob( device ); + + deviceInfo->jobs << Calamares::job_ptr( job ); + + refresh(); +} + void PartitionCoreModule::deletePartition( Device* device, Partition* partition ) { @@ -596,16 +642,40 @@ PartitionCoreModule::scanForLVMPVs() { m_lvmPVs.clear(); - QList< Device* > devices; + QList< Device* > physicalDevices; + QList< LvmDevice* > vgDevices; for ( DeviceInfo* deviceInfo : m_deviceInfos ) - devices << deviceInfo->device.data(); + { + if ( deviceInfo->device.data()->type() == Device::Type::Disk_Device) + physicalDevices << deviceInfo->device.data(); + else if ( deviceInfo->device.data()->type() == Device::Type::LVM_Device ) + { + LvmDevice* device = dynamic_cast(deviceInfo->device.data()); + + // Restoring physical volume list + device->physicalVolumes().clear(); + + vgDevices << device; + } + } - LvmDevice::scanSystemLVM( devices ); + // Update LVM::pvList + LvmDevice::scanSystemLVM( physicalDevices ); for ( auto p : LVM::pvList ) + { m_lvmPVs << p.partition().data(); + for ( LvmDevice* device : vgDevices ) + if ( p.vgName() == device->name() ) + { + // Adding scanned VG to PV list + device->physicalVolumes() << p.partition(); + break; + } + } + for ( DeviceInfo* d : m_deviceInfos ) { for ( auto job : d->jobs ) @@ -693,21 +763,26 @@ PartitionCoreModule::revertAllDevices() for ( auto it = m_deviceInfos.begin(); it != m_deviceInfos.end(); ) { // In new VGs device info, there will be always a CreateVolumeGroupJob as the first job in jobs list - if ( dynamic_cast( ( *it )->device.data() ) && !( *it )->jobs.empty() ) + if ( dynamic_cast( ( *it )->device.data() ) ) { - CreateVolumeGroupJob* vgJob = dynamic_cast( ( *it )->jobs[0].data() ); + ( *it )->isAvailable = true; - if ( vgJob ) + if ( !( *it )->jobs.empty() ) { - vgJob->undoPreview(); + CreateVolumeGroupJob* vgJob = dynamic_cast( ( *it )->jobs[0].data() ); + + if ( vgJob ) + { + vgJob->undoPreview(); - ( *it )->forgetChanges(); + ( *it )->forgetChanges(); - m_deviceModel->removeDevice( ( *it )->device.data() ); + m_deviceModel->removeDevice( ( *it )->device.data() ); - it = m_deviceInfos.erase( it ); + it = m_deviceInfos.erase( it ); - continue; + continue; + } } } @@ -736,8 +811,13 @@ PartitionCoreModule::revertDevice( Device* dev ) m_deviceModel->swapDevice( dev, newDev ); QList< Device* > devices; - foreach ( auto info, m_deviceInfos ) - devices.append( info->device.data() ); + for ( auto info : m_deviceInfos ) + { + if ( info->device.data()->type() != Device::Type::Disk_Device ) + continue; + else + devices.append( info->device.data() ); + } m_bootLoaderModel->init( devices ); @@ -777,6 +857,16 @@ PartitionCoreModule::isDirty() return m_isDirty; } +bool +PartitionCoreModule::isVGdeactivated( LvmDevice *device ) +{ + for ( DeviceInfo* deviceInfo : m_deviceInfos ) + if ( device == deviceInfo->device.data() && !deviceInfo->isAvailable ) + return true; + + return false; +} + QList< PartitionCoreModule::SummaryInfo > PartitionCoreModule::createSummaryInfo() const { diff --git a/src/modules/partition/core/PartitionCoreModule.h b/src/modules/partition/core/PartitionCoreModule.h index cedda391d..d61311c8a 100644 --- a/src/modules/partition/core/PartitionCoreModule.h +++ b/src/modules/partition/core/PartitionCoreModule.h @@ -114,6 +114,12 @@ public: void createVolumeGroup( QString &vgName, QVector< const Partition* > pvList, qint32 peSize ); + void resizeVolumeGroup( LvmDevice* device, QVector< const Partition* >& pvList ); + + void deactivateVolumeGroup( LvmDevice* device ); + + void removeVolumeGroup( LvmDevice* device ); + void deletePartition( Device* device, Partition* partition ); void formatPartition( Device* device, Partition* partition ); @@ -160,6 +166,8 @@ public: bool isDirty(); // true if there are pending changes, otherwise false + bool isVGdeactivated( LvmDevice* device ); + /** * To be called when a partition has been altered, but only for changes * which do not affect its size, because changes which affect the partition size @@ -198,6 +206,9 @@ private: const QScopedPointer< Device > immutableDevice; QList< Calamares::job_ptr > jobs; + // To check if LVM VGs are deactivated + bool isAvailable; + void forgetChanges(); bool isDirty() const; }; diff --git a/src/modules/partition/gui/CreateVolumeGroupDialog.cpp b/src/modules/partition/gui/CreateVolumeGroupDialog.cpp index f1ed32551..fe5c40be8 100644 --- a/src/modules/partition/gui/CreateVolumeGroupDialog.cpp +++ b/src/modules/partition/gui/CreateVolumeGroupDialog.cpp @@ -28,13 +28,16 @@ CreateVolumeGroupDialog::CreateVolumeGroupDialog( QString& vgName, QVector< const Partition* >& selectedPVs, QVector< const Partition* > pvList, - qint32& peSize, + qint64& pSize, QWidget* parent ) - : VolumeGroupBaseDialog( vgName, pvList, peSize, parent ) + : VolumeGroupBaseDialog( vgName, pvList, parent ) , m_selectedPVs( selectedPVs ) + , m_peSize( pSize ) { setWindowTitle( "Create Volume Group" ); + peSize()->setValue( pSize ); + vgType()->setEnabled( false ); } @@ -46,7 +49,7 @@ CreateVolumeGroupDialog::accept() m_selectedPVs << checkedItems(); - qint32& pe = peSizeValue(); + qint64& pe = m_peSize; pe = peSize()->value(); QDialog::accept(); diff --git a/src/modules/partition/gui/CreateVolumeGroupDialog.h b/src/modules/partition/gui/CreateVolumeGroupDialog.h index eb2ced137..b0d5b874c 100644 --- a/src/modules/partition/gui/CreateVolumeGroupDialog.h +++ b/src/modules/partition/gui/CreateVolumeGroupDialog.h @@ -27,13 +27,15 @@ public: CreateVolumeGroupDialog( QString& vgName, QVector< const Partition* >& selectedPVs, QVector< const Partition* > pvList, - qint32& peSize, + qint64& pSize, QWidget* parent ); void accept() override; private: QVector< const Partition* >& m_selectedPVs; + + qint64& m_peSize; }; #endif // CREATEVOLUMEGROUPDIALOG_H diff --git a/src/modules/partition/gui/PartitionPage.cpp b/src/modules/partition/gui/PartitionPage.cpp index 550e356c0..ada6cc15b 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -30,6 +30,7 @@ #include "gui/CreatePartitionDialog.h" #include "gui/CreateVolumeGroupDialog.h" #include "gui/EditExistingPartitionDialog.h" +#include "gui/ResizeVolumeGroupDialog.h" #include "gui/ScanningDialog.h" #include "ui_PartitionPage.h" @@ -43,6 +44,8 @@ // KPMcore #include #include +#include +#include // Qt #include @@ -101,6 +104,9 @@ PartitionPage::PartitionPage( PartitionCoreModule* core, QWidget* parent ) connect( m_ui->partitionTreeView, &QAbstractItemView::doubleClicked, this, &PartitionPage::onPartitionViewActivated ); connect( m_ui->revertButton, &QAbstractButton::clicked, this, &PartitionPage::onRevertClicked ); connect( m_ui->newVolumeGroupButton, &QAbstractButton::clicked, this, &PartitionPage::onNewVolumeGroupClicked ); + connect( m_ui->resizeVolumeGroupButton, &QAbstractButton::clicked, this, &PartitionPage::onResizeVolumeGroupClicked ); + connect( m_ui->deactivateVolumeGroupButton, &QAbstractButton::clicked, this, &PartitionPage::onDeactivateVolumeGroupClicked ); + connect( m_ui->removeVolumeGroupButton, &QAbstractButton::clicked, this, &PartitionPage::onRemoveVolumeGroupClicked ); connect( m_ui->newPartitionTableButton, &QAbstractButton::clicked, this, &PartitionPage::onNewPartitionTableClicked ); connect( m_ui->createButton, &QAbstractButton::clicked, this, &PartitionPage::onCreateClicked ); connect( m_ui->editButton, &QAbstractButton::clicked, this, &PartitionPage::onEditClicked ); @@ -121,7 +127,8 @@ PartitionPage::~PartitionPage() void PartitionPage::updateButtons() { - bool create = false, createTable = false, edit = false, del = false; + bool create = false, createTable = false, edit = false, del = false, currentDeviceIsVG = false, isDeactivable = false; + bool isRemovable = false, isVGdeactivated = false; QModelIndex index = m_ui->partitionTreeView->currentIndex(); if ( index.isValid() ) @@ -152,12 +159,28 @@ PartitionPage::updateButtons() QModelIndex deviceIndex = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 ); if ( m_core->deviceModel()->deviceForIndex( deviceIndex )->type() != Device::Type::LVM_Device ) createTable = true; + else + { + currentDeviceIsVG = true; + + LvmDevice* lvmDevice = dynamic_cast(m_core->deviceModel()->deviceForIndex( deviceIndex )); + + isDeactivable = DeactivateVolumeGroupOperation::isDeactivatable( lvmDevice ); + isRemovable = RemoveVolumeGroupOperation::isRemovable( lvmDevice ); + + isVGdeactivated = m_core->isVGdeactivated( lvmDevice ); + + m_ui->revertButton->setEnabled( isVGdeactivated ); + } } m_ui->createButton->setEnabled( create ); m_ui->editButton->setEnabled( edit ); m_ui->deleteButton->setEnabled( del ); m_ui->newPartitionTableButton->setEnabled( createTable ); + m_ui->resizeVolumeGroupButton->setEnabled( currentDeviceIsVG && !isVGdeactivated ); + m_ui->deactivateVolumeGroupButton->setEnabled( currentDeviceIsVG && isDeactivable && !isVGdeactivated ); + m_ui->removeVolumeGroupButton->setEnabled( currentDeviceIsVG && isRemovable ); } void @@ -188,7 +211,7 @@ PartitionPage::onNewVolumeGroupClicked() { QString vgName; QVector< const Partition* > selectedPVs; - qint32 peSize = 4; + qint64 peSize = 4; QVector< const Partition* > availablePVs; @@ -238,6 +261,59 @@ PartitionPage::onNewVolumeGroupClicked() delete dlg; } +void +PartitionPage::onResizeVolumeGroupClicked() +{ + QModelIndex deviceIndex = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 ); + LvmDevice* device = dynamic_cast< LvmDevice* >( m_core->deviceModel()->deviceForIndex( deviceIndex ) ); + + Q_ASSERT( device && device->type() == Device::Type::LVM_Device ); + + QVector< const Partition* > availablePVs; + QVector< const Partition* > selectedPVs; + + for ( const Partition* p : m_core->lvmPVs() ) + if ( !m_core->isInVG( p ) ) + availablePVs << p; + + QPointer< ResizeVolumeGroupDialog > dlg = new ResizeVolumeGroupDialog( device, + availablePVs, + selectedPVs, + this ); + + if ( dlg->exec() == QDialog::Accepted ) + m_core->resizeVolumeGroup( device, selectedPVs ); + + delete dlg; +} + +void +PartitionPage::onDeactivateVolumeGroupClicked() +{ + QModelIndex deviceIndex = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 ); + LvmDevice* device = dynamic_cast< LvmDevice* >( m_core->deviceModel()->deviceForIndex( deviceIndex ) ); + + Q_ASSERT( device && device->type() == Device::Type::LVM_Device ); + + m_core->deactivateVolumeGroup( device ); + + updateFromCurrentDevice(); + + PartitionModel* model = m_core->partitionModelForDevice( device ); + model->update(); +} + +void +PartitionPage::onRemoveVolumeGroupClicked() +{ + QModelIndex deviceIndex = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 ); + LvmDevice* device = dynamic_cast< LvmDevice* >( m_core->deviceModel()->deviceForIndex( deviceIndex ) ); + + Q_ASSERT( device && device->type() == Device::Type::LVM_Device ); + + m_core->removeVolumeGroup( device ); +} + void PartitionPage::onCreateClicked() { diff --git a/src/modules/partition/gui/PartitionPage.h b/src/modules/partition/gui/PartitionPage.h index ef6eeea15..f4ce330dd 100644 --- a/src/modules/partition/gui/PartitionPage.h +++ b/src/modules/partition/gui/PartitionPage.h @@ -51,6 +51,9 @@ private: void updateButtons(); void onNewPartitionTableClicked(); void onNewVolumeGroupClicked(); + void onResizeVolumeGroupClicked(); + void onDeactivateVolumeGroupClicked(); + void onRemoveVolumeGroupClicked(); void onCreateClicked(); void onEditClicked(); void onDeleteClicked(); diff --git a/src/modules/partition/gui/PartitionPage.ui b/src/modules/partition/gui/PartitionPage.ui index 2b3d568cf..612bff7ba 100644 --- a/src/modules/partition/gui/PartitionPage.ui +++ b/src/modules/partition/gui/PartitionPage.ui @@ -6,7 +6,7 @@ 0 0 - 655 + 684 304 @@ -88,13 +88,6 @@ - - - - New Volume Group - - - @@ -131,6 +124,51 @@ + + + + + + New Volume Group + + + + + + + Resize Volume Group + + + + + + + Deactivate Volume Group + + + + + + + Remove Volume Group + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + diff --git a/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp b/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp new file mode 100644 index 000000000..b3173096d --- /dev/null +++ b/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp @@ -0,0 +1,62 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "ResizeVolumeGroupDialog.h" + +#include "gui/ListPhysicalVolumeWidgetItem.h" + +#include +#include + +#include +#include +#include +#include + +ResizeVolumeGroupDialog::ResizeVolumeGroupDialog( LvmDevice *device, + QVector< const Partition* > availablePVs, + QVector< const Partition* >& selectedPVs, + QWidget* parent ) + : VolumeGroupBaseDialog( device->name(), device->physicalVolumes(), parent ) + , m_selectedPVs( selectedPVs ) +{ + setWindowTitle( "Resize Volume Group" ); + + for ( int i = 0; i < pvList()->count(); i++ ) + pvList()->item(i)->setCheckState( Qt::Checked ); + + for ( const Partition* p : availablePVs ) + pvList()->addItem( new ListPhysicalVolumeWidgetItem( p, false ) ); + + peSize()->setValue( device->peSize() / Capacity::unitFactor(Capacity::Unit::Byte, Capacity::Unit::MiB) ); + + vgName()->setEnabled( false ); + peSize()->setEnabled( false ); + vgType()->setEnabled( false ); + + setUsedSizeValue( device->allocatedPE() * device->peSize() ); + setLVQuantity( device->partitionTable()->children().count() ); +} + +void +ResizeVolumeGroupDialog::accept() +{ + m_selectedPVs << checkedItems(); + + QDialog::accept(); +} diff --git a/src/modules/partition/gui/ResizeVolumeGroupDialog.h b/src/modules/partition/gui/ResizeVolumeGroupDialog.h new file mode 100644 index 000000000..1d6015329 --- /dev/null +++ b/src/modules/partition/gui/ResizeVolumeGroupDialog.h @@ -0,0 +1,40 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef RESIZEVOLUMEGROUPDIALOG_H +#define RESIZEVOLUMEGROUPDIALOG_H + +#include "gui/VolumeGroupBaseDialog.h" + +class LvmDevice; + +class ResizeVolumeGroupDialog : public VolumeGroupBaseDialog +{ +public: + ResizeVolumeGroupDialog( LvmDevice *device, + QVector< const Partition* > availablePVs, + QVector< const Partition* >& selectedPVs, + QWidget* parent ); + + void accept() override; + +private: + QVector< const Partition* >& m_selectedPVs; +}; + +#endif // RESIZEVOLUMEGROUPDIALOG_H diff --git a/src/modules/partition/gui/VolumeGroupBaseDialog.cpp b/src/modules/partition/gui/VolumeGroupBaseDialog.cpp index e5da2c0ad..a727fe42a 100644 --- a/src/modules/partition/gui/VolumeGroupBaseDialog.cpp +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.cpp @@ -32,12 +32,10 @@ VolumeGroupBaseDialog::VolumeGroupBaseDialog( QString& vgName, QVector< const Partition* > pvList, - qint32& peSize, QWidget *parent ) : QDialog(parent) , ui(new Ui::VolumeGroupBaseDialog) , m_vgNameValue(vgName) - , m_peSizeValue(peSize) , m_totalSizeValue(0) , m_usedSizeValue(0) { @@ -53,8 +51,6 @@ VolumeGroupBaseDialog::VolumeGroupBaseDialog( QString& vgName, ui->vgName->setValidator( new QRegularExpressionValidator( re, this ) ); ui->vgName->setText( m_vgNameValue ); - ui->peSize->setValue( m_peSizeValue ); - updateOkButton(); updateTotalSize(); @@ -111,6 +107,20 @@ VolumeGroupBaseDialog::updateOkButton() ui->peSize->value() > 0); } +void +VolumeGroupBaseDialog::setUsedSizeValue( qint64 usedSize ) +{ + m_usedSizeValue = usedSize; + + ui->usedSize->setText( Capacity::formatByteSize(m_usedSizeValue) ); +} + +void +VolumeGroupBaseDialog::setLVQuantity( qint32 lvQuantity ) +{ + ui->lvQuantity->setText( QString::number( lvQuantity ) ); +} + void VolumeGroupBaseDialog::updateTotalSize() { @@ -143,12 +153,6 @@ VolumeGroupBaseDialog::vgNameValue() const return m_vgNameValue; } -qint32& -VolumeGroupBaseDialog::peSizeValue() const -{ - return m_peSizeValue; -} - QLineEdit* VolumeGroupBaseDialog::vgName() const { diff --git a/src/modules/partition/gui/VolumeGroupBaseDialog.h b/src/modules/partition/gui/VolumeGroupBaseDialog.h index 0b4a48372..e6011ce62 100644 --- a/src/modules/partition/gui/VolumeGroupBaseDialog.h +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.h @@ -39,13 +39,16 @@ class VolumeGroupBaseDialog : public QDialog public: explicit VolumeGroupBaseDialog( QString& vgName, QVector< const Partition* > pvList, - qint32& peSize, QWidget* parent = nullptr ); ~VolumeGroupBaseDialog(); protected: virtual void updateOkButton(); + void setUsedSizeValue( qint64 usedSize ); + + void setLVQuantity( qint32 lvQuantity ); + void updateTotalSize(); void updateTotalSectors(); @@ -56,8 +59,6 @@ protected: QString& vgNameValue() const; - qint32& peSizeValue() const; - QLineEdit* vgName() const; QComboBox* vgType() const; @@ -72,7 +73,6 @@ private: Ui::VolumeGroupBaseDialog* ui; QString& m_vgNameValue; - qint32& m_peSizeValue; qint64 m_totalSizeValue; qint64 m_usedSizeValue; diff --git a/src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp b/src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp new file mode 100644 index 000000000..f772b3e5a --- /dev/null +++ b/src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp @@ -0,0 +1,69 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "DeactivateVolumeGroupJob.h" + +#include +#include +#include + +DeactivateVolumeGroupJob::DeactivateVolumeGroupJob( LvmDevice* device ) + : m_device( device ) +{ + +} + +QString +DeactivateVolumeGroupJob::prettyName() const +{ + return tr( "Deactivate volume group named %1." ) + .arg( m_device->name() ); +} + +QString +DeactivateVolumeGroupJob::prettyDescription() const +{ + return tr( "Deactivate volume group named %1." ) + .arg( m_device->name() ); +} + +QString +DeactivateVolumeGroupJob::prettyStatusMessage() const +{ + return tr( "Deactivate volume group named %1." ) + .arg( m_device->name() ); +} + +Calamares::JobResult +DeactivateVolumeGroupJob::exec() +{ + Report report( nullptr ); + + DeactivateVolumeGroupOperation op( *m_device ); + + op.setStatus( Operation::OperationStatus::StatusRunning ); + + QString message = tr( "The installer failed to deactivate a volume group named %1." ).arg( m_device->name() ); + if ( op.execute( report ) ) + { + op.preview(); + return Calamares::JobResult::ok(); + } + + return Calamares::JobResult::error(message, report.toText()); +} diff --git a/src/modules/partition/jobs/DeactivateVolumeGroupJob.h b/src/modules/partition/jobs/DeactivateVolumeGroupJob.h new file mode 100644 index 000000000..5b59c2c4f --- /dev/null +++ b/src/modules/partition/jobs/DeactivateVolumeGroupJob.h @@ -0,0 +1,40 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef DEACTIVATEVOLUMEGROUPJOB_H +#define DEACTIVATEVOLUMEGROUPJOB_H + +#include "Job.h" + +class LvmDevice; + +class DeactivateVolumeGroupJob : public Calamares::Job +{ +public: + DeactivateVolumeGroupJob( LvmDevice* device ); + + QString prettyName() const override; + QString prettyDescription() const override; + QString prettyStatusMessage() const override; + Calamares::JobResult exec() override; + +private: + LvmDevice* m_device; +}; + +#endif // DEACTIVATEVOLUMEGROUPJOB_H diff --git a/src/modules/partition/jobs/RemoveVolumeGroupJob.cpp b/src/modules/partition/jobs/RemoveVolumeGroupJob.cpp new file mode 100644 index 000000000..69b510754 --- /dev/null +++ b/src/modules/partition/jobs/RemoveVolumeGroupJob.cpp @@ -0,0 +1,66 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "RemoveVolumeGroupJob.h" + +#include +#include +#include + +RemoveVolumeGroupJob::RemoveVolumeGroupJob( LvmDevice* device ) + : m_device( device ) +{ + +} + +QString +RemoveVolumeGroupJob::prettyName() const +{ + return tr( "Remove Volume Group named %1." ) + .arg( m_device->name() ); +} + +QString +RemoveVolumeGroupJob::prettyDescription() const +{ + return tr( "Remove Volume Group named %1.") + .arg( m_device->name() ); +} + +QString +RemoveVolumeGroupJob::prettyStatusMessage() const +{ + return tr( "Remove Volume Group named %1." ) + .arg( m_device->name() ); +} + +Calamares::JobResult +RemoveVolumeGroupJob::exec() +{ + Report report( nullptr ); + + RemoveVolumeGroupOperation op( *m_device ); + + op.setStatus( Operation::OperationStatus::StatusRunning ); + + QString message = tr( "The installer failed to remove a volume group named '%1'." ).arg( m_device->name() ); + if ( op.execute( report ) ) + return Calamares::JobResult::ok(); + + return Calamares::JobResult::error(message, report.toText()); +} diff --git a/src/modules/partition/jobs/RemoveVolumeGroupJob.h b/src/modules/partition/jobs/RemoveVolumeGroupJob.h new file mode 100644 index 000000000..426dde7fb --- /dev/null +++ b/src/modules/partition/jobs/RemoveVolumeGroupJob.h @@ -0,0 +1,40 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef REMOVEVOLUMEGROUPJOB_H +#define REMOVEVOLUMEGROUPJOB_H + +#include + +class LvmDevice; + +class RemoveVolumeGroupJob : public Calamares::Job +{ +public: + RemoveVolumeGroupJob( LvmDevice* device ); + + QString prettyName() const override; + QString prettyDescription() const override; + QString prettyStatusMessage() const override; + Calamares::JobResult exec() override; + +private: + LvmDevice* m_device; +}; + +#endif // REMOVEVOLUMEGROUPJOB_H diff --git a/src/modules/partition/jobs/ResizeVolumeGroupJob.cpp b/src/modules/partition/jobs/ResizeVolumeGroupJob.cpp new file mode 100644 index 000000000..bc7ef264d --- /dev/null +++ b/src/modules/partition/jobs/ResizeVolumeGroupJob.cpp @@ -0,0 +1,101 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "ResizeVolumeGroupJob.h" + +// KPMcore +#include +#include +#include +#include + +ResizeVolumeGroupJob::ResizeVolumeGroupJob( LvmDevice* device, QVector< const Partition* >& partitionList ) + : m_device( device ) + , m_partitionList( partitionList ) +{ + +} + +QString +ResizeVolumeGroupJob::prettyName() const +{ + return tr( "Resize volume group named %1 from %2 to %3." ) + .arg( m_device->name() ) + .arg( currentPartitions() ) + .arg( targetPartitions() ); +} + +QString +ResizeVolumeGroupJob::prettyDescription() const +{ + return tr( "Resize volume group named %1 from %2 to %3." ) + .arg( m_device->name() ) + .arg( currentPartitions() ) + .arg( targetPartitions() ); +} + +QString +ResizeVolumeGroupJob::prettyStatusMessage() const +{ + return tr( "Resize volume group named %1 from %2 to %3." ) + .arg( m_device->name() ) + .arg( currentPartitions() ) + .arg( targetPartitions() ); +} + +Calamares::JobResult +ResizeVolumeGroupJob::exec() +{ + Report report( nullptr ); + + ResizeVolumeGroupOperation op( *m_device, m_partitionList ); + + op.setStatus( Operation::OperationStatus::StatusRunning ); + + QString message = tr( "The installer failed to resize a volume group named '%1'." ).arg( m_device->name() ); + if ( op.execute( report ) ) + return Calamares::JobResult::ok(); + + return Calamares::JobResult::error( message, report.toText() ); +} + +QString +ResizeVolumeGroupJob::currentPartitions() const +{ + QString result; + + for ( const Partition *p : m_device->physicalVolumes() ) + result += p->deviceNode() + ", "; + + result.chop(2); + + return result; +} + +QString +ResizeVolumeGroupJob::targetPartitions() const +{ + QString result; + + for ( const Partition *p : m_partitionList ) + result += p->deviceNode() + ", "; + + result.chop(2); + + return result; +} diff --git a/src/modules/partition/jobs/ResizeVolumeGroupJob.h b/src/modules/partition/jobs/ResizeVolumeGroupJob.h new file mode 100644 index 000000000..380bee416 --- /dev/null +++ b/src/modules/partition/jobs/ResizeVolumeGroupJob.h @@ -0,0 +1,48 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Caio Jordão Carvalho + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef RESIZEVOLUMEGROUPJOB_H +#define RESIZEVOLUMEGROUPJOB_H + +#include + +#include + +class LvmDevice; +class Partition; + +class ResizeVolumeGroupJob : public Calamares::Job +{ +public: + ResizeVolumeGroupJob( LvmDevice* device, QVector< const Partition* >& partitionList ); + + QString prettyName() const override; + QString prettyDescription() const override; + QString prettyStatusMessage() const override; + Calamares::JobResult exec() override; + +private: + QString currentPartitions() const; + QString targetPartitions() const; + +private: + LvmDevice* m_device; + QVector< const Partition* > m_partitionList; +}; + +#endif // RESIZEVOLUMEGROUPJOB_H From 67d9ebbfc0b4195b0576f04f285a7d2585d6700f Mon Sep 17 00:00:00 2001 From: Caio Carvalho Date: Tue, 26 Jun 2018 01:29:57 -0300 Subject: [PATCH 329/385] [partition] Setting revertButton enabled after deactivating VG. --- src/modules/partition/gui/PartitionPage.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/partition/gui/PartitionPage.cpp b/src/modules/partition/gui/PartitionPage.cpp index ada6cc15b..37d90f65d 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -170,7 +170,8 @@ PartitionPage::updateButtons() isVGdeactivated = m_core->isVGdeactivated( lvmDevice ); - m_ui->revertButton->setEnabled( isVGdeactivated ); + if ( isVGdeactivated ) + m_ui->revertButton->setEnabled( true ); } } From 589628bb9af32fcd5315fa91d544cef812e9e0f0 Mon Sep 17 00:00:00 2001 From: Caio Carvalho Date: Tue, 26 Jun 2018 01:44:35 -0300 Subject: [PATCH 330/385] [partition] Removing unnecessary horizontal spacer on Partition Page. --- src/modules/partition/gui/PartitionPage.ui | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/modules/partition/gui/PartitionPage.ui b/src/modules/partition/gui/PartitionPage.ui index 612bff7ba..e72f08518 100644 --- a/src/modules/partition/gui/PartitionPage.ui +++ b/src/modules/partition/gui/PartitionPage.ui @@ -154,19 +154,6 @@ - - - - Qt::Horizontal - - - - 40 - 20 - - - - From a6688504e801e1eecc2a3e68bcb51e3f8ff7ad1e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 04:17:03 -0400 Subject: [PATCH 331/385] CMake: switch INSTALL_CONFIG to OFF by default - The examples files are not harmless, so distro's should take a explicit decision to install the config examples (instead of putting files in /etc/calamares). --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5eed360f8..d72463bbd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,7 +36,7 @@ cmake_minimum_required( VERSION 3.2 ) ### OPTIONS # -option( INSTALL_CONFIG "Install configuration files" ON ) +option( INSTALL_CONFIG "Install configuration files" OFF ) option( INSTALL_POLKIT "Install Polkit configuration" ON ) option( BUILD_TESTING "Build the testing tree." ON ) option( WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON ) From 29830bc1e12c0a4481fd7b7e58701a73d03768ec Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 04:35:00 -0400 Subject: [PATCH 332/385] [services] Document the configuration file. - Change the example to be harmless (empty) - Document the structure of the entries --- src/modules/services/services.conf | 57 +++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/src/modules/services/services.conf b/src/modules/services/services.conf index d9c8895ea..eb971b222 100644 --- a/src/modules/services/services.conf +++ b/src/modules/services/services.conf @@ -1,20 +1,45 @@ +# Systemd services manipulation. +# +# This module can enable services and targets for systemd +# (if packaging doesn't already do that). It can calso +# disable services (but not targets). +# +# First, services are enabled; then targets; then services +# are disabled -- this order of operations is fixed. --- -#systemd services and targets are enabled in this precise order -services: - - name: "NetworkManager" #name of the service file - mandatory: false #true=> if enabling fails the installer errors out and quits - #false=>if enabling fails print warning to console and continue - - name: "cups" - mandatory: false +# There are three configuration keys for this module: +# *services*, *targets* and *disable*. The value of each +# key is a list of entries. Each entry has two keys: +# - *name* is the (string) name of the service or target that is being +# changed. Use quotes. +# - *mandatory* is a boolean option, which states whether the change +# must be done successfully. If systemd reports an error while changing +# a mandatory entry, the installation will fail. When mandatory is false, +# errors for that entry (service or target) are ignored. +# +# Use [] to express an empty list. -targets: - - name: "graphical" - mandatory: true +# # This example enables NetworkManager (and fails if it can't), +# # disables cups (and ignores failure). Then it enables the +# # graphical target (e.g. so that SDDM runs for login), and +# # finally disables pacman-init (an ArchLinux-only service). +# # +# services: +# - name: "NetworkManager" +# mandatory: true +# - name: "cups" +# mandatory: false +# +# targets: +# - name: "graphical" +# mandatory: true +# +# disable: +# - name: "pacman-init" +# mandatory: false -disable: - - name: "pacman-init" - mandatory: false - -# Example to express an empty list: -# disable: [] +# By default, no changes are made. +services: [] +targets: [] +disable: [] From b2c2b916456972b5ce5e0ac140c3a568b7c48a8a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 05:18:10 -0400 Subject: [PATCH 333/385] CMake: introduce USE_ When there are multiple modules doing a thing and it really only makes sense to have one of them in a given Calamares compilation, the USE_ variables allow you to select one, while ignoring all the other implementations. If USE_ is not set, all implementations are included (as usual). --- CMakeLists.txt | 16 ++++++++++++++++ src/modules/CMakeLists.txt | 20 +++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d72463bbd..1fa59421c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,22 @@ option( WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON ) option( WITH_PYTHONQT "Enable next generation Python modules API (experimental, requires PythonQt)." ON ) option( WITH_KF5Crash "Enable crash reporting with KCrash." ON ) +### USE_* +# +# By convention, when there are multiple modules that implement similar +# functionality, and it only makes sense to have **at most one** of them +# enabled at any time, those modules are named -. +# For example, services-systemd and services-openrc. +# +# Setting up SKIP_MODULES to ignore "the ones you don't want" can be +# annoying and error-prone (e.g. if a new module shows up). The USE_* +# modules provide a way to do automatic selection. To pick exactly +# one of the implementations from group , set USE_ to the +# name of the implementation. If USE_ is unset, or empty, then +# all the implementations are enabled (this just means they are +# **available** to `settings.conf`, not that they are used). +# +# Currently, no USE_ variables exist. ### Calamares application info # diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt index 514d6b4f6..bf1817b52 100644 --- a/src/modules/CMakeLists.txt +++ b/src/modules/CMakeLists.txt @@ -15,13 +15,31 @@ string( REPLACE " " ";" SKIP_LIST "${SKIP_MODULES}" ) file( GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*" ) list( SORT SUBDIRECTORIES ) +# Handle the USE_ variables by looking for subdirectories +# with a - kind of name. +foreach( SUBDIRECTORY ${SUBDIRECTORIES} ) +endforeach() + foreach( SUBDIRECTORY ${SUBDIRECTORIES} ) list( FIND SKIP_LIST ${SUBDIRECTORY} DO_SKIP ) + set( _skip_reason "user request" ) + if( SUBDIRECTORY MATCHES "^[a-zA-Z0-9_]+-" ) + string( REGEX REPLACE "^[^-]+-" "" _implementation ${SUBDIRECTORY} ) + string( REGEX REPLACE "-.*" "" _category ${SUBDIRECTORY} ) + if( USE_${_category} ) + if( NOT "${_implementation}" STREQUAL "${USE_${_category}}" ) + list( APPEND SKIP_LIST ${SUBDIRECTORY} ) + set( _skip_reason "USE_${_category}=${USE_${_category}}" ) + set( DO_SKIP 1 ) + endif() + endif() + endif() + if( NOT DO_SKIP EQUAL -1 ) message( "${ColorReset}-- Skipping module ${BoldRed}${SUBDIRECTORY}${ColorReset}." ) message( "" ) - list( APPEND LIST_SKIPPED_MODULES "${SUBDIRECTORY} (user request)" ) + list( APPEND LIST_SKIPPED_MODULES "${SUBDIRECTORY} (${_skip_reason})" ) elseif( ( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" ) AND ( DO_SKIP EQUAL -1 ) ) set( SKIPPED_MODULES ) From c086d18a26a5f2d62f9dc1fb2ef646b47585b622 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 05:33:01 -0400 Subject: [PATCH 334/385] CMake: improve error-handling for USE_* If USE_ is given a value that doesn't match **anything**, then bail out. Since USE_* is an explicit distro choice for a specific implementation, it's an error if that implementation is not there. --- src/modules/CMakeLists.txt | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt index bf1817b52..0a8d1db70 100644 --- a/src/modules/CMakeLists.txt +++ b/src/modules/CMakeLists.txt @@ -15,20 +15,23 @@ string( REPLACE " " ";" SKIP_LIST "${SKIP_MODULES}" ) file( GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*" ) list( SORT SUBDIRECTORIES ) -# Handle the USE_ variables by looking for subdirectories -# with a - kind of name. -foreach( SUBDIRECTORY ${SUBDIRECTORIES} ) -endforeach() +set( _use_categories "" ) +set( _found_categories "" ) foreach( SUBDIRECTORY ${SUBDIRECTORIES} ) list( FIND SKIP_LIST ${SUBDIRECTORY} DO_SKIP ) set( _skip_reason "user request" ) + # Handle the USE_ variables by looking for subdirectories + # with a - kind of name. if( SUBDIRECTORY MATCHES "^[a-zA-Z0-9_]+-" ) string( REGEX REPLACE "^[^-]+-" "" _implementation ${SUBDIRECTORY} ) string( REGEX REPLACE "-.*" "" _category ${SUBDIRECTORY} ) if( USE_${_category} ) - if( NOT "${_implementation}" STREQUAL "${USE_${_category}}" ) + list( APPEND _use_categories ${_category} ) + if( "${_implementation}" STREQUAL "${USE_${_category}}" ) + list( APPEND _found_categories ${_category} ) + else() list( APPEND SKIP_LIST ${SUBDIRECTORY} ) set( _skip_reason "USE_${_category}=${USE_${_category}}" ) set( DO_SKIP 1 ) @@ -54,5 +57,12 @@ endforeach() # both before and after the feature summary. calamares_explain_skipped_modules( ${LIST_SKIPPED_MODULES} ) +foreach( _category ${_use_categories} ) + list( FIND _found_categories ${_category} _found ) + if ( _found EQUAL -1 ) + message( FATAL_ERROR "USE_${_category} is set to ${USE_${_category}} and no module matches." ) + endif() +endforeach() + include( CalamaresAddTranslations ) add_calamares_python_translations( ${CALAMARES_TRANSLATION_LANGUAGES} ) From 52f09f7f462c36d559b1bd536bc1f140f0620365 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 05:47:23 -0400 Subject: [PATCH 335/385] [modules] Minor documentation work on modules a-g --- src/modules/bootloader/bootloader.conf | 2 ++ src/modules/displaymanager/displaymanager.conf | 2 ++ src/modules/dummycpp/dummycpp.conf | 5 ++++- src/modules/dummypython/dummypython.conf | 5 ++++- src/modules/dummypythonqt/dummypythonqt.conf | 3 +++ src/modules/grubcfg/grubcfg.conf | 1 + 6 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/modules/bootloader/bootloader.conf b/src/modules/bootloader/bootloader.conf index ee8680f72..808a5e6d0 100644 --- a/src/modules/bootloader/bootloader.conf +++ b/src/modules/bootloader/bootloader.conf @@ -12,8 +12,10 @@ kernel: "/vmlinuz-linux" img: "/initramfs-linux.img" fallback: "/initramfs-linux-fallback.img" timeout: "10" + # Optionally set the menu entry name and kernel name to use in systemd-boot. # If not specified here, these settings will be taken from branding.desc. +# # bootloaderEntryName: "Generic GNU/Linux" # kernelLine: ", with Stable-Kernel" # fallbackKernelLine: ", with Stable-Kernel (fallback initramfs)" diff --git a/src/modules/displaymanager/displaymanager.conf b/src/modules/displaymanager/displaymanager.conf index 1c30ed637..8f8e9c704 100644 --- a/src/modules/displaymanager/displaymanager.conf +++ b/src/modules/displaymanager/displaymanager.conf @@ -1,3 +1,5 @@ +# Configure one or more display managers (e.g. SDDM) +# with a "best effort" approach. --- #The DM module attempts to set up all the DMs found in this list, in that precise order. #It also sets up autologin, if the feature is enabled in globalstorage. diff --git a/src/modules/dummycpp/dummycpp.conf b/src/modules/dummycpp/dummycpp.conf index c90b6f3b9..1f2e1daee 100644 --- a/src/modules/dummycpp/dummycpp.conf +++ b/src/modules/dummycpp/dummycpp.conf @@ -1,3 +1,6 @@ +# This is a dummy (example) module for C++ Jobs. +# +# The code is the documentation for the configuration file. --- syntax: "YAML map of anything" example: @@ -15,4 +18,4 @@ a_list_of_maps: - "another element" - name: "another item" contents: - - "not much" \ No newline at end of file + - "not much" diff --git a/src/modules/dummypython/dummypython.conf b/src/modules/dummypython/dummypython.conf index fc985089a..c700120e7 100644 --- a/src/modules/dummypython/dummypython.conf +++ b/src/modules/dummypython/dummypython.conf @@ -1,3 +1,6 @@ +# This is a dummy (example) module for a Python Job Module. +# +# The code is the documentation for the configuration file. --- syntax: "YAML map of anything" example: @@ -15,4 +18,4 @@ a_list_of_maps: - "another element" - name: "another item" contents: - - "not much" \ No newline at end of file + - "not much" diff --git a/src/modules/dummypythonqt/dummypythonqt.conf b/src/modules/dummypythonqt/dummypythonqt.conf index f60e778e1..5bc64abfa 100644 --- a/src/modules/dummypythonqt/dummypythonqt.conf +++ b/src/modules/dummypythonqt/dummypythonqt.conf @@ -1,3 +1,6 @@ +# This is a dummy (example) module for PythonQt. +# +# The code is the documentation for the configuration file. --- syntax: "YAML map of anything" example: diff --git a/src/modules/grubcfg/grubcfg.conf b/src/modules/grubcfg/grubcfg.conf index 608c9b2b4..18951a8a6 100644 --- a/src/modules/grubcfg/grubcfg.conf +++ b/src/modules/grubcfg/grubcfg.conf @@ -2,6 +2,7 @@ # If set to true, always creates /etc/default/grub from scratch even if the file # already existed. If set to false, edits the existing file instead. overwrite: false + # Default entries to write to /etc/default/grub if it does not exist yet or if # we are overwriting it. Note that in addition, GRUB_CMDLINE_LINUX_DEFAULT and # GRUB_DISTRIBUTOR will always be written, with automatically detected values. From 63c03068c0cda4f71b8bd0bf2a8c1b870eaa3008 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 06:39:30 -0400 Subject: [PATCH 336/385] [modules] Documentation for fstab, grubcfg, mkinitcpio - These modules were entirely documented as "use the source", - The sources aren't terribly clear either. --- src/modules/fstab/fstab.conf | 15 +++++++++++++++ src/modules/grubcfg/grubcfg.conf | 15 +++++++++++++-- src/modules/initcpio/initcpio.conf | 1 + 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/modules/fstab/fstab.conf b/src/modules/fstab/fstab.conf index c3dbfc309..11adff2ed 100644 --- a/src/modules/fstab/fstab.conf +++ b/src/modules/fstab/fstab.conf @@ -1,13 +1,28 @@ +# Creates /etc/fstab and /etc/crypttab in the target system. +# Also creates mount points for all the filesystems. +# +# When creating fstab entries for a filesystem, this module +# uses the options for the filesystem type to write to the +# options field of the file. --- +# Mount options to use for all filesystems. If a specific filesystem +# is listed here, use those options, otherwise use the *default* +# options from this mapping. mountOptions: default: defaults,noatime btrfs: defaults,noatime,space_cache,autodefrag + +# If a filesystem is on an SSD, add the following options. If a specific +# filesystem is listed here, use those options, otherwise no additional +# options are set (i.e. there is no *default* like in *mountOptions*). ssdExtraMountOptions: ext4: discard jfs: discard xfs: discard swap: discard btrfs: discard,compress=lzo + +# Additional options added to each line in /etc/crypttab crypttabOptions: luks # For Debian and Debian-based distributions, change the above line to: # crypttabOptions: luks,keyscript=/bin/cat diff --git a/src/modules/grubcfg/grubcfg.conf b/src/modules/grubcfg/grubcfg.conf index 18951a8a6..b354ec35a 100644 --- a/src/modules/grubcfg/grubcfg.conf +++ b/src/modules/grubcfg/grubcfg.conf @@ -1,11 +1,22 @@ +# Write lines to /etc/default/grub (in the target system) based +# on calculated values and the values set in the *defaults* key +# in this configuration file. +# +# Calculated values are: +# - GRUB_DISTRIBUTOR, branding module, *bootloaderEntryName* +# - GRUB_ENABLE_CRYPTODISK, based on the presence of filesystems +# that use LUKS +# - GRUB_CMDLINE_LINUX_DEFAULT, adding LUKS setup and plymouth +# support to the kernel. + --- # If set to true, always creates /etc/default/grub from scratch even if the file # already existed. If set to false, edits the existing file instead. overwrite: false # Default entries to write to /etc/default/grub if it does not exist yet or if -# we are overwriting it. Note that in addition, GRUB_CMDLINE_LINUX_DEFAULT and -# GRUB_DISTRIBUTOR will always be written, with automatically detected values. +# we are overwriting it. +# defaults: GRUB_TIMEOUT: 5 GRUB_DEFAULT: "saved" diff --git a/src/modules/initcpio/initcpio.conf b/src/modules/initcpio/initcpio.conf index 21f5704cc..466a8785d 100644 --- a/src/modules/initcpio/initcpio.conf +++ b/src/modules/initcpio/initcpio.conf @@ -1,2 +1,3 @@ +# Run mkinitcpio(8) with the given preset value --- kernel: linux312 From 1eede6f79719377bac7004bdebed5ef54abc5232 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 06:50:16 -0400 Subject: [PATCH 337/385] [modules] Configuration documentation for mount and luksopenswaphookcfg --- .../luksopenswaphookcfg/luksopenswaphookcfg.conf | 2 ++ src/modules/mount/mount.conf | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.conf b/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.conf index 886867f8d..f5610cd7c 100644 --- a/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.conf +++ b/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.conf @@ -1,2 +1,4 @@ +# Writes an openswap configuration with LUKS settings to the given path --- +# Path of the configuration file to write (in the target system) configFilePath: /etc/openswap.conf diff --git a/src/modules/mount/mount.conf b/src/modules/mount/mount.conf index d8f8fb8cc..bb28eed66 100644 --- a/src/modules/mount/mount.conf +++ b/src/modules/mount/mount.conf @@ -1,4 +1,18 @@ +# Mount filesystems in the target (generally, before treating the +# target as a usable chroot / "live" system). Filesystems are +# automatically mounted from the partitioning module. Filesystems +# listed here are **extra**. The filesystems listed in *extraMounts* +# are mounted in all target systems. The filesystems listed in +# *extraMountsEfi* are mounted in the target system **only** if +# the host machine uses UEFI. --- +# Extra filesystems to mount. The key's value is a list of entries; each +# entry has four keys: +# - device The device node to mount +# - fs The filesystem type to use +# - mountPoint Where to mount the filesystem +# - options (optional) Extra options to pass to mount(8) +# extraMounts: - device: proc fs: proc From 40252f1000eb2453dc6661e4bc300bf0e462170f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 06:52:37 -0400 Subject: [PATCH 338/385] [removeuser] Minor documentation --- src/modules/removeuser/removeuser.conf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/removeuser/removeuser.conf b/src/modules/removeuser/removeuser.conf index a59961ec5..dab4b2526 100644 --- a/src/modules/removeuser/removeuser.conf +++ b/src/modules/removeuser/removeuser.conf @@ -1,2 +1,6 @@ +# Removes a single user (with userdel) from the system. +# This is typically used in OEM setups or if the live user +# spills into the target system. --- +# Username in the target system to be removed. username: live From 731594fb40456b1676725659e13213760bc180a2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 08:07:36 -0400 Subject: [PATCH 339/385] [libcalamaresui] Remove the requiredModules setting - The value set in module.desc was never stored for use, but isn't an attribute of the instance, either. It belongs with the descriptor, in ModuleManager. --- src/libcalamaresui/modulesystem/Module.cpp | 8 -------- src/libcalamaresui/modulesystem/Module.h | 8 -------- 2 files changed, 16 deletions(-) diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index c820b98b3..ed1cb33ea 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -224,13 +224,6 @@ Module::instanceKey() const } -QStringList -Module::requiredModules() const -{ - return m_requiredModules; -} - - QString Module::location() const { @@ -286,7 +279,6 @@ void Module::initFrom( const QVariantMap& moduleDescriptor ) { m_name = moduleDescriptor.value( "name" ).toString(); - if ( moduleDescriptor.contains( EMERGENCY ) ) m_maybe_emergency = moduleDescriptor[ EMERGENCY ].toBool(); } diff --git a/src/libcalamaresui/modulesystem/Module.h b/src/libcalamaresui/modulesystem/Module.h index 18c2e4cbe..f89c9eedb 100644 --- a/src/libcalamaresui/modulesystem/Module.h +++ b/src/libcalamaresui/modulesystem/Module.h @@ -106,13 +106,6 @@ public: */ virtual QString instanceKey() const final; - /** - * @brief requiredModules a list of names of modules required by this one. - * @return the list of names. - * The module dependencies system is currently incomplete and unused. - */ - virtual QStringList requiredModules() const; - /** * @brief location returns the full path of this module's directory. * @return the path. @@ -198,7 +191,6 @@ private: void loadConfigurationFile( const QString& configFileName ); //throws YAML::Exception QString m_name; - QStringList m_requiredModules; QString m_directory; QString m_instanceId; From 08966ff9334cc28ee01524bce5a113aff5466cf2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 08:29:33 -0400 Subject: [PATCH 340/385] [libcalamaresui] Check module dependencies - Module dependency-checking is done in two phases: first, catch any unknown modules that are listed in *requiredModules* and bail out before loading anything. Second, check that the modules required by X occur before X in the sequence. --- .../modulesystem/ModuleManager.cpp | 54 +++++++++++++++++-- .../modulesystem/ModuleManager.h | 20 ++++++- 2 files changed, 68 insertions(+), 6 deletions(-) diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index ed1e52f9f..24bc6bc53 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -126,7 +126,6 @@ ModuleManager::doInit() } // At this point m_availableModules is filled with whatever was found in the // search paths. - checkDependencies(); emit initDone(); } @@ -176,7 +175,13 @@ ModuleManager::loadModules() { QTimer::singleShot( 0, this, [ this ]() { - QStringList failedModules; + QStringList failedModules = checkDependencies(); + if ( !failedModules.isEmpty() ) + { + emit modulesFailed( failedModules ); + return; + } + Settings::InstanceDescriptionList customInstances = Settings::instance()->customModuleInstances(); @@ -262,6 +267,14 @@ ModuleManager::loadModules() failedModules.append( instanceKey ); continue; } + + if ( !checkDependencies( *thisModule ) ) + { + // Error message is already printed + failedModules.append( instanceKey ); + continue; + } + // If it's a ViewModule, it also appends the ViewStep to the ViewManager. thisModule->loadSelf(); m_loadedModulesByInstanceKey.insert( instanceKey, thisModule ); @@ -301,24 +314,29 @@ ModuleManager::loadModules() } -void +QStringList ModuleManager::checkDependencies() { + QStringList failed; + // This goes through the map of available modules, and deletes those whose // dependencies are not met, if any. - bool somethingWasRemovedBecauseOfUnmetDependencies = false; forever { + bool somethingWasRemovedBecauseOfUnmetDependencies = false; for ( auto it = m_availableDescriptorsByModuleName.begin(); it != m_availableDescriptorsByModuleName.end(); ++it ) { foreach ( const QString& depName, - ( *it ).value( "requiredModules" ).toStringList() ) + it->value( "requiredModules" ).toStringList() ) { if ( !m_availableDescriptorsByModuleName.contains( depName ) ) { + QString moduleName = it->value( "name" ).toString(); somethingWasRemovedBecauseOfUnmetDependencies = true; m_availableDescriptorsByModuleName.erase( it ); + failed << moduleName; + cWarning() << "Module" << moduleName << "has unmet requirement" << depName; break; } } @@ -328,7 +346,33 @@ ModuleManager::checkDependencies() if ( !somethingWasRemovedBecauseOfUnmetDependencies ) break; } + + return failed; } +bool +ModuleManager::checkDependencies( const Module& m ) +{ + bool allRequirementsFound = true; + QStringList requiredModules = m_availableDescriptorsByModuleName[ m.name() ].value( "requiredModules" ).toStringList(); + + for ( const QString& required : requiredModules ) + { + bool requirementFound = false; + for( const Module* v : m_loadedModulesByInstanceKey ) + if ( required == v->name() ) + { + requirementFound = true; + break; + } + if ( !requirementFound ) + { + cError() << "Module" << m.name() << "requires" << required << "before it in sequence."; + allRequirementsFound = false; + } + } + + return allRequirementsFound; +} } diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index eff09b321..a0edc2528 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -90,7 +90,25 @@ private slots: void doInit(); private: - void checkDependencies(); + /** + * Check in a general sense whether the dependencies between + * modules are valid. Returns a list of module names that + * do **not** have their requirements met. + * + * Returns an empty list on success. + * + * Also modifies m_availableDescriptorsByModuleName to remove + * all the entries that fail. + */ + QStringList checkDependencies(); + + /** + * Check for this specific module if its required modules have + * already been loaded (i.e. are in sequence before it). + * + * Returns true if the requirements are met. + */ + bool checkDependencies( const Module& ); QMap< QString, QVariantMap > m_availableDescriptorsByModuleName; QMap< QString, QString > m_moduleDirectoriesByModuleName; From 0db8082ae1972f0d882c071427a3bc7ab8d5600a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 08:41:16 -0400 Subject: [PATCH 341/385] [libcalamares] Convenience type --- src/libcalamares/Settings.cpp | 2 +- src/libcalamares/Settings.h | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/libcalamares/Settings.cpp b/src/libcalamares/Settings.cpp index 1fdfc6daa..8fd4eeac3 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -212,7 +212,7 @@ Settings::customModuleInstances() const } -QList< QPair< ModuleAction, QStringList > > +Settings::ModuleSequence Settings::modulesSequence() const { return m_modulesSequence; diff --git a/src/libcalamares/Settings.h b/src/libcalamares/Settings.h index 2330f5747..4da65f710 100644 --- a/src/libcalamares/Settings.h +++ b/src/libcalamares/Settings.h @@ -47,7 +47,8 @@ public: using InstanceDescriptionList = QList< InstanceDescription >; InstanceDescriptionList customModuleInstances() const; - QList< QPair< ModuleAction, QStringList > > modulesSequence() const; + using ModuleSequence = QList< QPair< ModuleAction, QStringList > >; + ModuleSequence modulesSequence() const; QString brandingComponentName() const; @@ -63,7 +64,7 @@ private: QStringList m_modulesSearchPaths; InstanceDescriptionList m_customModuleInstances; - QList< QPair< ModuleAction, QStringList > > m_modulesSequence; + ModuleSequence m_modulesSequence; QString m_brandingComponentName; From d66393f1aeac1efbfa8b990bca6ff8f69df48429 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 08:43:23 -0400 Subject: [PATCH 342/385] [libcalamares] Fix early failure mode - There is more to failing out of loadModules() than just emitting modulesFailed, so instead share the failure code with the code after loading modules -- but don't load any. --- src/libcalamaresui/modulesystem/ModuleManager.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 24bc6bc53..86d97d2db 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -176,16 +176,10 @@ ModuleManager::loadModules() QTimer::singleShot( 0, this, [ this ]() { QStringList failedModules = checkDependencies(); - if ( !failedModules.isEmpty() ) - { - emit modulesFailed( failedModules ); - return; - } - Settings::InstanceDescriptionList customInstances = Settings::instance()->customModuleInstances(); - const auto modulesSequence = Settings::instance()->modulesSequence(); + const auto modulesSequence = failedModules.isEmpty() ? Settings::instance()->modulesSequence() : Settings::ModuleSequence(); for ( const auto& modulePhase : modulesSequence ) { ModuleAction currentAction = modulePhase.first; @@ -336,7 +330,7 @@ ModuleManager::checkDependencies() somethingWasRemovedBecauseOfUnmetDependencies = true; m_availableDescriptorsByModuleName.erase( it ); failed << moduleName; - cWarning() << "Module" << moduleName << "has unmet requirement" << depName; + cWarning() << "Module" << moduleName << "has unknown requirement" << depName; break; } } From 08fc93f13775735968534ce2a2a25fa2aba554e3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 10:46:55 -0400 Subject: [PATCH 343/385] [services] Rename to services-systemd --- settings.conf | 2 +- src/modules/{services => services-systemd}/main.py | 0 src/modules/{services => services-systemd}/module.desc | 2 +- .../services.conf => services-systemd/services-systemd.conf} | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename src/modules/{services => services-systemd}/main.py (100%) rename src/modules/{services => services-systemd}/module.desc (72%) rename src/modules/{services/services.conf => services-systemd/services-systemd.conf} (100%) diff --git a/settings.conf b/settings.conf index 546b08d39..1c95721b7 100644 --- a/settings.conf +++ b/settings.conf @@ -102,7 +102,7 @@ sequence: - displaymanager - networkcfg - hwclock - - services + - services-systemd # - dracut - initramfs # - grubcfg diff --git a/src/modules/services/main.py b/src/modules/services-systemd/main.py similarity index 100% rename from src/modules/services/main.py rename to src/modules/services-systemd/main.py diff --git a/src/modules/services/module.desc b/src/modules/services-systemd/module.desc similarity index 72% rename from src/modules/services/module.desc rename to src/modules/services-systemd/module.desc index eff1dcc63..4a72b658b 100644 --- a/src/modules/services/module.desc +++ b/src/modules/services-systemd/module.desc @@ -1,6 +1,6 @@ --- type: "job" -name: "services" +name: "services-systemd" interface: "python" requires: [] script: "main.py" diff --git a/src/modules/services/services.conf b/src/modules/services-systemd/services-systemd.conf similarity index 100% rename from src/modules/services/services.conf rename to src/modules/services-systemd/services-systemd.conf From 0e314447eca6f5503cb9db7042bb108c7af04ba9 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 26 Jun 2018 10:55:27 -0400 Subject: [PATCH 344/385] CMake: show the USE variable for services --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1fa59421c..c06beba29 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,6 +59,7 @@ option( WITH_KF5Crash "Enable crash reporting with KCrash." ON ) # **available** to `settings.conf`, not that they are used). # # Currently, no USE_ variables exist. +set( USE_services "" CACHE STRING "Select the services module to use" ) ### Calamares application info # From 0520fc3b7e73754a330e8c3ced0227cc2a93fd51 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 05:07:18 -0400 Subject: [PATCH 345/385] [services-systemd] Refactor to repeat less code - The three steps of modifying services in the target system do basically the same thing, so factor out the loops and logging into a systemctl() function. - Log to warning() instead of just debugging, on failure. --- src/modules/services-systemd/main.py | 99 +++++++++++----------------- 1 file changed, 40 insertions(+), 59 deletions(-) diff --git a/src/modules/services-systemd/main.py b/src/modules/services-systemd/main.py index 48e61d882..a2b2dd4f4 100644 --- a/src/modules/services-systemd/main.py +++ b/src/modules/services-systemd/main.py @@ -23,79 +23,60 @@ import libcalamares -def run(): - """ - Setup systemd services +def systemctl(targets, command, suffix): """ - services = libcalamares.job.configuration['services'] - targets = libcalamares.job.configuration['targets'] - disable = libcalamares.job.configuration['disable'] - - # note that the "systemctl enable" and "systemctl disable" commands used - # here will work in a chroot; in fact, they are the only systemctl commands - # that support that, see: - # http://0pointer.de/blog/projects/changing-roots.html + For each entry in @p targets, run "systemctl ", + where is the entry's name plus the given @p suffix. + A dot is added between name and suffix. - # enable services - for svc in services: + Returns a failure message, or None if this was successful. + Services that are not mandatory have their failures suppressed + silently. + """ + for svc in targets: ec = libcalamares.utils.target_env_call( - ['systemctl', 'enable', '{}.service'.format(svc['name'])] + ['systemctl', command, "{}.{}".format(svc['name'], suffix)] ) if ec != 0: if svc['mandatory']: - return ("Cannot enable systemd service {}".format(svc['name']), - "systemctl enable call in chroot returned error code " - "{}".format(ec) + return ("Cannot {} systemd {} {}".format(command, suffix, svc['name']), + "systemctl {} call in chroot returned error code {}".format(command, ec) ) else: - libcalamares.utils.debug( - "Cannot enable systemd service {}".format(svc['name']) + libcalamares.utils.warning( + "Cannot {} systemd {} {}".format(command, suffix, svc['name']) ) - libcalamares.utils.debug( - "systemctl enable call in chroot returned error code " - "{}".format(ec) + libcalamares.utils.warning( + "systemctl {} call in chroot returned error code {}".format(command, ec) ) + return None - # enable targets - for tgt in targets: - ec = libcalamares.utils.target_env_call( - ['systemctl', 'enable', '{}.target'.format(tgt['name'])] - ) - if ec != 0: - if tgt['mandatory']: - return ("Cannot enable systemd target {}".format(tgt['name']), - "systemctl enable call in chroot returned error code" - "{}".format(ec) - ) - else: - libcalamares.utils.debug( - "Cannot enable systemd target {}".format(tgt['name']) - ) - libcalamares.utils.debug( - "systemctl enable call in chroot returned error code " - "{}".format(ec) - ) +def run(): + """ + Setup systemd services + """ + services = libcalamares.job.configuration['services'] + targets = libcalamares.job.configuration['targets'] + disable = libcalamares.job.configuration['disable'] - for dbl in disable: - ec = libcalamares.utils.target_env_call( - ['systemctl', 'disable', '{}.service'.format(dbl['name'])] - ) + # note that the "systemctl enable" and "systemctl disable" commands used + # here will work in a chroot; in fact, they are the only systemctl commands + # that support that, see: + # http://0pointer.de/blog/projects/changing-roots.html - if ec != 0: - if dbl['mandatory']: - return ("Cannot disable systemd service" - "{}".format(dbl['name']), - "systemctl disable call in chroot returned error code" - "{}".format(ec)) - else: - libcalamares.utils.debug( - "Cannot disable systemd service {}".format(dbl['name']) - ) - libcalamares.utils.debug( - "systemctl disable call in chroot returned error code " - "{}".format(ec) - ) + r = systemctl(services, "enable", "service") + if r is not None: + return r + + r = systemctl(targets, "enable", "target") + if r is not None: + return r + + r = systemctl(disable, "disable", "service") + if r is not None: + return r + # This could have just been return r return None From 5d6e07712b6831b2e759c06e3eeefdae2b2bc1bd Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 05:14:18 -0400 Subject: [PATCH 346/385] [services-systemd] Refactor getting config - Don't create temporary variables - Change API slightly to accomodate more (kinds of) suffixes --- src/modules/services-systemd/main.py | 14 ++++++-------- src/modules/services-systemd/services-systemd.conf | 6 +++++- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/modules/services-systemd/main.py b/src/modules/services-systemd/main.py index a2b2dd4f4..31d205318 100644 --- a/src/modules/services-systemd/main.py +++ b/src/modules/services-systemd/main.py @@ -27,7 +27,7 @@ def systemctl(targets, command, suffix): """ For each entry in @p targets, run "systemctl ", where is the entry's name plus the given @p suffix. - A dot is added between name and suffix. + (No dot is added between name and suffix; suffix may be empty) Returns a failure message, or None if this was successful. Services that are not mandatory have their failures suppressed @@ -35,7 +35,7 @@ def systemctl(targets, command, suffix): """ for svc in targets: ec = libcalamares.utils.target_env_call( - ['systemctl', command, "{}.{}".format(svc['name'], suffix)] + ['systemctl', command, "{}{}".format(svc['name'], suffix)] ) if ec != 0: @@ -57,24 +57,22 @@ def run(): """ Setup systemd services """ - services = libcalamares.job.configuration['services'] - targets = libcalamares.job.configuration['targets'] - disable = libcalamares.job.configuration['disable'] + cfg = libcalamares.job.configuration # note that the "systemctl enable" and "systemctl disable" commands used # here will work in a chroot; in fact, they are the only systemctl commands # that support that, see: # http://0pointer.de/blog/projects/changing-roots.html - r = systemctl(services, "enable", "service") + r = systemctl(cfg["services"], "enable", ".service") if r is not None: return r - r = systemctl(targets, "enable", "target") + r = systemctl(cfg["targets"], "enable", ".target") if r is not None: return r - r = systemctl(disable, "disable", "service") + r = systemctl(cfg["disable"], "disable", ".service") if r is not None: return r diff --git a/src/modules/services-systemd/services-systemd.conf b/src/modules/services-systemd/services-systemd.conf index eb971b222..64b95e125 100644 --- a/src/modules/services-systemd/services-systemd.conf +++ b/src/modules/services-systemd/services-systemd.conf @@ -12,7 +12,8 @@ # *services*, *targets* and *disable*. The value of each # key is a list of entries. Each entry has two keys: # - *name* is the (string) name of the service or target that is being -# changed. Use quotes. +# changed. Use quotes. Don't include ".target" or ".service" +# in the name. # - *mandatory* is a boolean option, which states whether the change # must be done successfully. If systemd reports an error while changing # a mandatory entry, the installation will fail. When mandatory is false, @@ -25,16 +26,19 @@ # # graphical target (e.g. so that SDDM runs for login), and # # finally disables pacman-init (an ArchLinux-only service). # # +# # Enables .service # services: # - name: "NetworkManager" # mandatory: true # - name: "cups" # mandatory: false # +# # Enables .target # targets: # - name: "graphical" # mandatory: true # +# # Disables .service # disable: # - name: "pacman-init" # mandatory: false From c9c777b055f6a95871d17a1d3773a0aa39281ad4 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 07:09:03 -0400 Subject: [PATCH 347/385] [services-systemd] Introduce disable-targets and mask - With refactored code, introducing new kinds of actions is very few lines of code. Allow disabling targets (services was already possible). Allow masking units, but as a special case require the complete name. FIXES #975 --- src/modules/services-systemd/main.py | 9 +++++++++ src/modules/services-systemd/services-systemd.conf | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/modules/services-systemd/main.py b/src/modules/services-systemd/main.py index 31d205318..dce571384 100644 --- a/src/modules/services-systemd/main.py +++ b/src/modules/services-systemd/main.py @@ -76,5 +76,14 @@ def run(): if r is not None: return r + r = systemctl(cfg["disable-targets"], "disable", ".target") + if r is not None: + return r + + r = systemctl(cfg["mask"], "mask", "") + if r is not None: + return r + + # This could have just been return r return None diff --git a/src/modules/services-systemd/services-systemd.conf b/src/modules/services-systemd/services-systemd.conf index 64b95e125..082d63657 100644 --- a/src/modules/services-systemd/services-systemd.conf +++ b/src/modules/services-systemd/services-systemd.conf @@ -42,8 +42,22 @@ # disable: # - name: "pacman-init" # mandatory: false +# +# # Disables .target +# disable-targets: [] +# +# # Masks (stronger version of disable). This section +# # is unusual because you **must** include the suffix +# # (e.g. ".service") as part of the name, so, e.g. to mask +# # NetworkManager (rather than just disable it) you must +# # specify "NetworkManager.service" as name. +# mask: +# - name: "NetworkManager.service" +# - mandatory: true # By default, no changes are made. services: [] targets: [] disable: [] +disable-targets: [] +mask: [] From 59b07cc720dd3cb077e69e591b1a467abb01c057 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 07:14:18 -0400 Subject: [PATCH 348/385] [services-systemd] Be more resilient in the config - If a key is not given, use [] instead of crashing. --- src/modules/services-systemd/main.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/modules/services-systemd/main.py b/src/modules/services-systemd/main.py index dce571384..5ebe9066b 100644 --- a/src/modules/services-systemd/main.py +++ b/src/modules/services-systemd/main.py @@ -64,23 +64,23 @@ def run(): # that support that, see: # http://0pointer.de/blog/projects/changing-roots.html - r = systemctl(cfg["services"], "enable", ".service") + r = systemctl(cfg.get("services", []), "enable", ".service") if r is not None: return r - r = systemctl(cfg["targets"], "enable", ".target") + r = systemctl(cfg.get("targets", []), "enable", ".target") if r is not None: return r - r = systemctl(cfg["disable"], "disable", ".service") + r = systemctl(cfg.get("disable", []), "disable", ".service") if r is not None: return r - r = systemctl(cfg["disable-targets"], "disable", ".target") + r = systemctl(cfg.get("disable-targets", []), "disable", ".target") if r is not None: return r - r = systemctl(cfg["mask"], "mask", "") + r = systemctl(cfg.get("mask", []), "mask", "") if r is not None: return r From e1d306dc2fae9c5a41262c4d465f33864f57bc65 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 09:11:51 -0400 Subject: [PATCH 349/385] [services-openrc] Adjust documentation and follow renaming --- src/modules/openrccfg/openrccfg.conf | 39 ------------------- .../{openrccfg => services-openrc}/main.py | 0 .../module.desc | 2 +- .../services-openrc/services-openrc.conf | 34 ++++++++++++++++ 4 files changed, 35 insertions(+), 40 deletions(-) delete mode 100644 src/modules/openrccfg/openrccfg.conf rename src/modules/{openrccfg => services-openrc}/main.py (100%) rename src/modules/{openrccfg => services-openrc}/module.desc (68%) create mode 100644 src/modules/services-openrc/services-openrc.conf diff --git a/src/modules/openrccfg/openrccfg.conf b/src/modules/openrccfg/openrccfg.conf deleted file mode 100644 index efd56bc14..000000000 --- a/src/modules/openrccfg/openrccfg.conf +++ /dev/null @@ -1,39 +0,0 @@ -# operccfg -# openrc services module to set service runlevels via rc-update in the chroot -# -# format of the conf -### -# services: -# add: -# - name: foo1 -# runlevel: default -# - name: foo2 -# runlevel: nonetwork -# del: -# - name: foo3 -# runlevel: default -# -# initdDir: /etc/init.d -# -# runlevelsDir: /etc/runlevels -#### -# add: list of services and their runlevels to add -# del: list of services and their runlevels to delete -# name: the service name -# runlevel: can hold any runlevel present on the target system -# initdDir: holds the openrc service directory location -# runlevelsDir: holds the runlevels directory location -# -# handle del with care and only use it if absolutely necessary -# if a service is listed in the conf but is not present/detected on the target system, -# or a runlevel does not exist, it will be ignored and skipped -# ---- -services: - add: - - name: "NetworkManager" - runlevel: "default" - -initdDir: /etc/init.d - -runlevelsDir: /etc/runlevels diff --git a/src/modules/openrccfg/main.py b/src/modules/services-openrc/main.py similarity index 100% rename from src/modules/openrccfg/main.py rename to src/modules/services-openrc/main.py diff --git a/src/modules/openrccfg/module.desc b/src/modules/services-openrc/module.desc similarity index 68% rename from src/modules/openrccfg/module.desc rename to src/modules/services-openrc/module.desc index 1be7af923..4b0b51614 100644 --- a/src/modules/openrccfg/module.desc +++ b/src/modules/services-openrc/module.desc @@ -1,5 +1,5 @@ --- type: "job" -name: "openrccfg" +name: "services-openrc" interface: "python" script: "main.py" diff --git a/src/modules/services-openrc/services-openrc.conf b/src/modules/services-openrc/services-openrc.conf new file mode 100644 index 000000000..1d507e578 --- /dev/null +++ b/src/modules/services-openrc/services-openrc.conf @@ -0,0 +1,34 @@ +# openrc services module to modify service runlevels via rc-update in the chroot +# +# Services can be added (to any runlevel, or multiple runlevels) or deleted. +# Handle del with care and only use it if absolutely necessary. +# +# if a service is listed in the conf but is not present/detected on the target system, +# or a runlevel does not exist, it will be ignored and skipped; a warning is logged. +# +--- +# initdDir: holds the openrc service directory location +initdDir: /etc/init.d + +# runlevelsDir: holds the runlevels directory location +runlevelsDir: /etc/runlevels + +# services: each subkey of *services* is an action to take; +# supported actions are "add" and "del". The each subkey +# has a list of entries as value, and each entry has two +# fields: +# - name: the service name +# - runlevel: can hold any runlevel present on the target system +# +# # Example services: +# services: +# add: +# - name: foo1 +# runlevel: default +# - name: foo2 +# runlevel: nonetwork +# del: +# - name: foo3 +# runlevel: default +services: [] + From b1881d1cd2c1421ef125b755eff31e263a69cb2f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 09:19:05 -0400 Subject: [PATCH 350/385] [services-*] Adjust Copyright notices --- src/modules/services-openrc/main.py | 3 ++- src/modules/services-systemd/main.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/services-openrc/main.py b/src/modules/services-openrc/main.py index 9dc6bf1ff..a3b273141 100644 --- a/src/modules/services-openrc/main.py +++ b/src/modules/services-openrc/main.py @@ -1,11 +1,12 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # Copyright 2016, Artoo # Copyright 2017, Philip Müller # Copyright 2018, Artoo +# Copyright 2018, Adriaan de Groot # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/services-systemd/main.py b/src/modules/services-systemd/main.py index 5ebe9066b..54a731cf8 100644 --- a/src/modules/services-systemd/main.py +++ b/src/modules/services-systemd/main.py @@ -6,6 +6,7 @@ # Copyright 2014, Philip Müller # Copyright 2014, Teo Mrnjavac # Copyright 2017, Alf Gaida +# Copyright 2018, Adriaan de Groot # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by From cd640bda9fb682c63bebc46363e0dce90e23b2f9 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 09:21:31 -0400 Subject: [PATCH 351/385] [services-openrc] Restrict actions - Document the functions some more - Only "state" (i.e. action) "add" and "del" make sense, avoid calling rc-update for other keys (e.g. typo's). This matches the documentation, although there might be other actions that make sense (see also services-systemd, with its enable, disable and mask actions). --- src/modules/services-openrc/main.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/modules/services-openrc/main.py b/src/modules/services-openrc/main.py index a3b273141..eb0da046e 100644 --- a/src/modules/services-openrc/main.py +++ b/src/modules/services-openrc/main.py @@ -28,7 +28,10 @@ from os.path import exists, join class OpenrcController: - """This is the openrc service controller + """ + This is the openrc service controller. + All of its state comes from global storage and the job + configuration at initialization time. """ def __init__(self): @@ -38,7 +41,10 @@ class OpenrcController: self.runlevelsDir = libcalamares.job.configuration['runlevelsDir'] def update(self, state): - """call rc-update for each service listed + """ + Call rc-update for each service listed + in services for the given @p state. rc-update + is called with @p state as the command as well. """ for svc in self.services[state]: @@ -52,11 +58,12 @@ class OpenrcController: """Run the controller """ - for state in self.services.keys(): + for state in ("add", "del"): self.update(state) def run(): - """Setup services + """ + Setup services """ return OpenrcController().run() From 8f0db9dc743c854af96fd2cf19802483ce514de5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 09:31:02 -0400 Subject: [PATCH 352/385] [services-openrc] Log configuration failures - If services don't exist, or runlevels don't exist, log them instead of failing completely silently. --- src/modules/services-openrc/main.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/modules/services-openrc/main.py b/src/modules/services-openrc/main.py index eb0da046e..52e4838b3 100644 --- a/src/modules/services-openrc/main.py +++ b/src/modules/services-openrc/main.py @@ -23,7 +23,7 @@ import libcalamares -from libcalamares.utils import target_env_call +from libcalamares.utils import target_env_call, warning from os.path import exists, join @@ -47,12 +47,17 @@ class OpenrcController: is called with @p state as the command as well. """ - for svc in self.services[state]: - if exists(self.root + self.initdDir + "/" + svc["name"]): - if exists(self.root + self.runlevelsDir + "/" + svc["runlevel"]): - target_env_call( - ["rc-update", state, svc["name"], svc["runlevel"]] - ) + for svc in self.services.get(state, []): + service_path = self.root + self.initdDir + "/" + svc["name"] + runlevel_path = self.root + self.runlevelsDir + "/" + svc["runlevel"] + if exists(service_path): + if exists(runlevel_path): + target_env_call(["rc-update", state, svc["name"], svc["runlevel"]]) + else: + warning("Target runlevel {} does not exist for {}.".format(svc["runlevel"], svc["name"])) + else: + warning("Target service {} does not exist int {}.".format(svc["name"], self.initDir)) + def run(self): """Run the controller From 5a2ae7a250b77391fcc6b656fb91b00720abe5d3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 09:33:02 -0400 Subject: [PATCH 353/385] [services-openrc] Simplify name extraction, default runlevel - If runlevel isn't set (at all) then use "default". For most systems that do not use multiple runlevels, this simplifies the configuration to just a list of service names to add or delete. --- src/modules/services-openrc/main.py | 13 ++++++++----- src/modules/services-openrc/services-openrc.conf | 7 +++++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/modules/services-openrc/main.py b/src/modules/services-openrc/main.py index 52e4838b3..27ea6ebb6 100644 --- a/src/modules/services-openrc/main.py +++ b/src/modules/services-openrc/main.py @@ -48,15 +48,18 @@ class OpenrcController: """ for svc in self.services.get(state, []): - service_path = self.root + self.initdDir + "/" + svc["name"] - runlevel_path = self.root + self.runlevelsDir + "/" + svc["runlevel"] + name = svc["name"] + runlevel = svc.get("runlevel", "default") + + service_path = self.root + self.initdDir + "/" + name + runlevel_path = self.root + self.runlevelsDir + "/" + runlevel if exists(service_path): if exists(runlevel_path): - target_env_call(["rc-update", state, svc["name"], svc["runlevel"]]) + target_env_call(["rc-update", state, name, runlevel]) else: - warning("Target runlevel {} does not exist for {}.".format(svc["runlevel"], svc["name"])) + warning("Target runlevel {} does not exist for {}.".format(runlevel, name)) else: - warning("Target service {} does not exist int {}.".format(svc["name"], self.initDir)) + warning("Target service {} does not exist int {}.".format(name, self.initDir)) def run(self): diff --git a/src/modules/services-openrc/services-openrc.conf b/src/modules/services-openrc/services-openrc.conf index 1d507e578..61440f692 100644 --- a/src/modules/services-openrc/services-openrc.conf +++ b/src/modules/services-openrc/services-openrc.conf @@ -18,13 +18,16 @@ runlevelsDir: /etc/runlevels # has a list of entries as value, and each entry has two # fields: # - name: the service name -# - runlevel: can hold any runlevel present on the target system +# - runlevel: can hold any runlevel present on the target system; +# if no runlevel is provided, "default" is assumed. # # # Example services: +# # - add foo1 to default +# # - add foo2 to nonetwork +# # - remove foo3 from default # services: # add: # - name: foo1 -# runlevel: default # - name: foo2 # runlevel: nonetwork # del: From dbcc419218b2409f925d059b030d79d4eca1bea3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 09:39:30 -0400 Subject: [PATCH 354/385] [services-openrc] Log failures - If the rc-update command fails for some reason, log that failure instead of skipping it completely silently. - Fix syntax error as well --- src/modules/services-openrc/main.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/modules/services-openrc/main.py b/src/modules/services-openrc/main.py index 27ea6ebb6..cfa7fd457 100644 --- a/src/modules/services-openrc/main.py +++ b/src/modules/services-openrc/main.py @@ -53,13 +53,16 @@ class OpenrcController: service_path = self.root + self.initdDir + "/" + name runlevel_path = self.root + self.runlevelsDir + "/" + runlevel + if exists(service_path): if exists(runlevel_path): - target_env_call(["rc-update", state, name, runlevel]) + ec = target_env_call(["rc-update", state, name, runlevel]) + if ec != 0: + warning("Could not {} service {} in {}, error {!s}".format(state, name, runlevel, ec)) else: warning("Target runlevel {} does not exist for {}.".format(runlevel, name)) else: - warning("Target service {} does not exist int {}.".format(name, self.initDir)) + warning("Target service {} does not exist in {}.".format(name, self.initdDir)) def run(self): From b02ee3cd8d033660bfdbaf1d21ad407115e67be3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 09:46:43 -0400 Subject: [PATCH 355/385] [services-openrc] Follow services-systemd configuration example - Based on comments from #974, follow the configuration scheme from services-systemd, so with separate lists "services" and "disable". This ties it **slightly** less closely to the commands passed to rc-config. --- src/modules/services-openrc/main.py | 7 +++++- .../services-openrc/services-openrc.conf | 24 +++++++++---------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/modules/services-openrc/main.py b/src/modules/services-openrc/main.py index cfa7fd457..63d17bcc0 100644 --- a/src/modules/services-openrc/main.py +++ b/src/modules/services-openrc/main.py @@ -36,7 +36,12 @@ class OpenrcController: def __init__(self): self.root = libcalamares.globalstorage.value('rootMountPoint') - self.services = libcalamares.job.configuration.get('services', []) + + # Translate the entries in the config to the actions passed to rc-config + self.services = dict() + self.services["add"] = libcalamares.job.configuration.get('services', []) + self.services["del"] = libcalamares.job.configuration.get('disable', []) + self.initdDir = libcalamares.job.configuration['initdDir'] self.runlevelsDir = libcalamares.job.configuration['runlevelsDir'] diff --git a/src/modules/services-openrc/services-openrc.conf b/src/modules/services-openrc/services-openrc.conf index 61440f692..c89c82a32 100644 --- a/src/modules/services-openrc/services-openrc.conf +++ b/src/modules/services-openrc/services-openrc.conf @@ -13,25 +13,25 @@ initdDir: /etc/init.d # runlevelsDir: holds the runlevels directory location runlevelsDir: /etc/runlevels -# services: each subkey of *services* is an action to take; -# supported actions are "add" and "del". The each subkey -# has a list of entries as value, and each entry has two -# fields: +# services: a list of entries to **enable** +# disable: a list of entries to **disable** +# +# Each entry has two fields: # - name: the service name # - runlevel: can hold any runlevel present on the target system; # if no runlevel is provided, "default" is assumed. # -# # Example services: +# # Example services and disable settings: # # - add foo1 to default # # - add foo2 to nonetwork # # - remove foo3 from default # services: -# add: -# - name: foo1 -# - name: foo2 -# runlevel: nonetwork -# del: -# - name: foo3 -# runlevel: default +# - name: foo1 +# - name: foo2 +# runlevel: nonetwork +# disable: +# - name: foo3 +# runlevel: default services: [] +disable: [] From 72c0d1a1012266168cd85923f426f02678d0ccc0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 10:28:32 -0400 Subject: [PATCH 356/385] [services-openrc] Make list of services more flexible - Allow just a name entry, instead of requiring an object entry; this makes "foo" equal to { name: "foo", runlevel: "default" } and simplifies more for the straightfoward case of #974. --- src/modules/services-openrc/main.py | 8 ++++++-- src/modules/services-openrc/services-openrc.conf | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/modules/services-openrc/main.py b/src/modules/services-openrc/main.py index 63d17bcc0..6f1d7352b 100644 --- a/src/modules/services-openrc/main.py +++ b/src/modules/services-openrc/main.py @@ -53,8 +53,12 @@ class OpenrcController: """ for svc in self.services.get(state, []): - name = svc["name"] - runlevel = svc.get("runlevel", "default") + if isinstance(svc, str): + name = svc + runlevel = "default" + else: + name = svc["name"] + runlevel = svc.get("runlevel", "default") service_path = self.root + self.initdDir + "/" + name runlevel_path = self.root + self.runlevelsDir + "/" + runlevel diff --git a/src/modules/services-openrc/services-openrc.conf b/src/modules/services-openrc/services-openrc.conf index c89c82a32..168fa190a 100644 --- a/src/modules/services-openrc/services-openrc.conf +++ b/src/modules/services-openrc/services-openrc.conf @@ -20,11 +20,14 @@ runlevelsDir: /etc/runlevels # - name: the service name # - runlevel: can hold any runlevel present on the target system; # if no runlevel is provided, "default" is assumed. +# an entry may also be a single string, which is interpreted +# as the name field (runlevel "default" is assumed then). # # # Example services and disable settings: # # - add foo1 to default # # - add foo2 to nonetwork # # - remove foo3 from default +# # - remove foo4 from default # services: # - name: foo1 # - name: foo2 @@ -32,6 +35,7 @@ runlevelsDir: /etc/runlevels # disable: # - name: foo3 # runlevel: default +# - foo4 services: [] disable: [] From 73ecd7320c1b44c4406268e2d2a7866c2e69379b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 11:11:21 -0400 Subject: [PATCH 357/385] [services-openrc] Introduce *mandatory* subkey - Follow services-systemd and have a *mandatory* subkey that selects for install-failure instead of just a warning. FIXES #992 --- src/modules/services-openrc/main.py | 25 ++++++++++++++++--- .../services-openrc/services-openrc.conf | 15 +++++++---- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/modules/services-openrc/main.py b/src/modules/services-openrc/main.py index 6f1d7352b..c3e14b481 100644 --- a/src/modules/services-openrc/main.py +++ b/src/modules/services-openrc/main.py @@ -56,9 +56,11 @@ class OpenrcController: if isinstance(svc, str): name = svc runlevel = "default" + mandatory = False else: name = svc["name"] runlevel = svc.get("runlevel", "default") + mandatory = svc.get("mandatory", False) service_path = self.root + self.initdDir + "/" + name runlevel_path = self.root + self.runlevelsDir + "/" + runlevel @@ -67,11 +69,24 @@ class OpenrcController: if exists(runlevel_path): ec = target_env_call(["rc-update", state, name, runlevel]) if ec != 0: - warning("Could not {} service {} in {}, error {!s}".format(state, name, runlevel, ec)) + if mandatory: + return ("Cannot {} service {} to {}".format(state, name, runlevel), + "rc-update {} call in chroot returned error code {}".format(state, ec) + ) + else: + warning("Could not {} service {} in {}, error {!s}".format(state, name, runlevel, ec)) else: - warning("Target runlevel {} does not exist for {}.".format(runlevel, name)) + if mandatory: + return ("Target runlevel {} does not exist for {}.".format(runlevel, name), + "No {} found.".format(runlevel_path)) + else: + warning("Target runlevel {} does not exist for {}.".format(runlevel, name)) else: - warning("Target service {} does not exist in {}.".format(name, self.initdDir)) + if mandatory: + return ("Target service {} does not exist.".format(name), + "No {} found.".format(service_path)) + else: + warning("Target service {} does not exist in {}.".format(name, self.initdDir)) def run(self): @@ -79,7 +94,9 @@ class OpenrcController: """ for state in ("add", "del"): - self.update(state) + r = self.update(state) + if r is not None: + return r def run(): """ diff --git a/src/modules/services-openrc/services-openrc.conf b/src/modules/services-openrc/services-openrc.conf index 168fa190a..b8255b21a 100644 --- a/src/modules/services-openrc/services-openrc.conf +++ b/src/modules/services-openrc/services-openrc.conf @@ -16,20 +16,25 @@ runlevelsDir: /etc/runlevels # services: a list of entries to **enable** # disable: a list of entries to **disable** # -# Each entry has two fields: +# Each entry has three fields: # - name: the service name -# - runlevel: can hold any runlevel present on the target system; -# if no runlevel is provided, "default" is assumed. +# - (optional) runlevel: can hold any runlevel present on the target +# system; if no runlevel is provided, "default" is assumed. +# - (optional) mandatory: if set to true, a failure to modify +# the service will result in installation failure, rather than just +# a warning. The default is false. +# # an entry may also be a single string, which is interpreted -# as the name field (runlevel "default" is assumed then). +# as the name field (runlevel "default" is assumed then, and not-mandatory). # # # Example services and disable settings: -# # - add foo1 to default +# # - add foo1 to default, but it must succeed # # - add foo2 to nonetwork # # - remove foo3 from default # # - remove foo4 from default # services: # - name: foo1 +# mandatory: true # - name: foo2 # runlevel: nonetwork # disable: From 1957478618257944e1a67244b1448c562c3127ed Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 11:25:11 -0400 Subject: [PATCH 358/385] [services-systemd] Follow the flexible example of openrc - Make *mandatory* optional (and default to false); this allows shorter lists of entries - Allow degenerate entries which are just a name (which have *mandatory* set to false as well). SEE #992 --- src/modules/services-systemd/main.py | 15 +++++++++++---- .../services-systemd/services-systemd.conf | 11 +++++++++-- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/modules/services-systemd/main.py b/src/modules/services-systemd/main.py index 54a731cf8..09263b9f0 100644 --- a/src/modules/services-systemd/main.py +++ b/src/modules/services-systemd/main.py @@ -35,18 +35,25 @@ def systemctl(targets, command, suffix): silently. """ for svc in targets: + if isinstance(svc, str): + name = svc + mandatory = False + else: + name = svc["name"] + mandatory = svc.get("mandatory", False) + ec = libcalamares.utils.target_env_call( - ['systemctl', command, "{}{}".format(svc['name'], suffix)] + ['systemctl', command, "{}{}".format(name, suffix)] ) if ec != 0: - if svc['mandatory']: - return ("Cannot {} systemd {} {}".format(command, suffix, svc['name']), + if mandatory: + return ("Cannot {} systemd {} {}".format(command, suffix, name), "systemctl {} call in chroot returned error code {}".format(command, ec) ) else: libcalamares.utils.warning( - "Cannot {} systemd {} {}".format(command, suffix, svc['name']) + "Cannot {} systemd {} {}".format(command, suffix, name) ) libcalamares.utils.warning( "systemctl {} call in chroot returned error code {}".format(command, ec) diff --git a/src/modules/services-systemd/services-systemd.conf b/src/modules/services-systemd/services-systemd.conf index 082d63657..6ff1409bf 100644 --- a/src/modules/services-systemd/services-systemd.conf +++ b/src/modules/services-systemd/services-systemd.conf @@ -17,7 +17,12 @@ # - *mandatory* is a boolean option, which states whether the change # must be done successfully. If systemd reports an error while changing # a mandatory entry, the installation will fail. When mandatory is false, -# errors for that entry (service or target) are ignored. +# errors for that entry (service or target) are ignored. If mandatory +# is not specified, the default is false. +# +# An entry may also be given as a single string, which is then +# interpreted as the name of the service. In this case, mandatory +# is also set to the default of false. # # Use [] to express an empty list. @@ -44,7 +49,9 @@ # mandatory: false # # # Disables .target -# disable-targets: [] +# # .. this shows how to use just the name +# disable-targets: +# - graphical # # # Masks (stronger version of disable). This section # # is unusual because you **must** include the suffix From 37552c184b9509e12393532ad6cc1c7823c32255 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 12:50:20 -0400 Subject: [PATCH 359/385] ci: add a release script This is the start of a release script. The idea is to automate a whole bunch of the steps documented in ci/RELEASE.md, so that a release becomes more straightforward. Assumptions abound: basically this is going to work on my workstation, and not on any other. --- ci/RELEASE.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 ci/RELEASE.sh diff --git a/ci/RELEASE.sh b/ci/RELEASE.sh new file mode 100644 index 000000000..51ca42d4f --- /dev/null +++ b/ci/RELEASE.sh @@ -0,0 +1,23 @@ +#! /bin/sh +# +# Release script for Calamares +# +# This attempts to perform the different steps of the RELEASE.md +# document automatically. It's not tested on other machines or +# setups other than [ade]'s development VM. +# +# Assumes that the version in CMakeLists.txt has been bumped, +# and that a release of that version is desired. + +test -d .git || { echo "Not at top-level." ; exit 1 ; } +test -d src/modules || { echo "No src/modules." ; exit 1 ; } + +which cmake > /dev/null 2>&1 || { echo "No cmake(1) available." ; exit 1 ; } + +rm -rf build +mkdir build || { echo "Could not create build directory." ; exit 1 ; } +( cd build && cmake .. && make -j4 ) || { echo "Could not perform test-build." ; exit 1 ; } +( cd build && make test ) || { echo "Tests failed." ; exit 1 ; } + + + From cfe92252d289e13eb18b30c83fdb24f337d04f3a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 12:53:45 -0400 Subject: [PATCH 360/385] ci: if clang is available, do that build too --- ci/RELEASE.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ci/RELEASE.sh b/ci/RELEASE.sh index 51ca42d4f..528735ed9 100644 --- a/ci/RELEASE.sh +++ b/ci/RELEASE.sh @@ -19,5 +19,11 @@ mkdir build || { echo "Could not create build directory." ; exit 1 ; } ( cd build && cmake .. && make -j4 ) || { echo "Could not perform test-build." ; exit 1 ; } ( cd build && make test ) || { echo "Tests failed." ; exit 1 ; } - +if which clang++ > /dev/null 2>&1 ; then + # Do build again with clang + rm -rf build + mkdir build || { echo "Could not create build directory." ; exit 1 ; } + ( cd build && CC=clang CXX=clang++ cmake .. && make -j4 ) || { echo "Could not perform test-build." ; exit 1 ; } + ( cd build && make test ) || { echo "Tests failed." ; exit 1 ; } +fi From 9f1cfba4efbb91ddd52f3246b5614fb318a80495 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Wed, 27 Jun 2018 12:55:48 -0400 Subject: [PATCH 361/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_pl.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lang/calamares_pl.ts b/lang/calamares_pl.ts index 48edd7065..706a44cf5 100644 --- a/lang/calamares_pl.ts +++ b/lang/calamares_pl.ts @@ -50,7 +50,7 @@ Blank Page - + Pusta strona @@ -192,17 +192,17 @@ Calamares Initialization Failed - + Błąd inicjacji programu Calamares %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. - + %1 nie może zostać zainstalowany. Calamares nie mógł wczytać wszystkich skonfigurowanych modułów. Jest to problem ze sposobem, w jaki Calamares jest używany przez dystrybucję. <br/>The following modules could not be loaded: - + <br/>Następujące moduły nie mogły zostać wczytane: @@ -1663,7 +1663,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. Cre&ate - + Ut_wórz From 2f6e80dc428431247a19c16ae0f219044c10b0e2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 27 Jun 2018 13:20:52 -0400 Subject: [PATCH 362/385] CMake: always copy the config files to the build directory. Switching to INSTALL_CONFIG=OFF breaks tests by not having them in the build directory. Some logic was coupling not-installing to not-using-in-build-dir too closely. --- .../CalamaresAddModuleSubdirectory.cmake | 13 +++++---- CMakeModules/CalamaresAddPlugin.cmake | 28 ++++++++++--------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/CMakeModules/CalamaresAddModuleSubdirectory.cmake b/CMakeModules/CalamaresAddModuleSubdirectory.cmake index af26f5a74..0b417bdf3 100644 --- a/CMakeModules/CalamaresAddModuleSubdirectory.cmake +++ b/CMakeModules/CalamaresAddModuleSubdirectory.cmake @@ -85,9 +85,11 @@ function( calamares_add_module_subdirectory ) configure_file( ${SUBDIRECTORY}/${MODULE_FILE} ${SUBDIRECTORY}/${MODULE_FILE} COPYONLY ) get_filename_component( FLEXT ${MODULE_FILE} EXT ) - if( "${FLEXT}" STREQUAL ".conf" AND INSTALL_CONFIG) - install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${MODULE_FILE} - DESTINATION ${MODULE_DATA_DESTINATION} ) + if( "${FLEXT}" STREQUAL ".conf" ) + if( INSTALL_CONFIG ) + install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${MODULE_FILE} + DESTINATION ${MODULE_DATA_DESTINATION} ) + endif() list( APPEND MODULE_CONFIG_FILES ${MODULE_FILE} ) else() install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${MODULE_FILE} @@ -102,10 +104,11 @@ function( calamares_add_module_subdirectory ) message( " ${Green}MODULE_DESTINATION:${ColorReset} ${MODULE_DESTINATION}" ) if( MODULE_CONFIG_FILES ) if ( INSTALL_CONFIG ) - message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${MODULE_CONFIG_FILES} => ${MODULE_DATA_DESTINATION}" ) + set( _destination "${MODULE_DATA_DESTINATION}" ) else() - message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${MODULE_CONFIG_FILES} => [Skipping installation]" ) + set( _destination "[Build directory only]" ) endif() + message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${MODULE_CONFIG_FILES} => ${_destination}" ) endif() message( "" ) endif() diff --git a/CMakeModules/CalamaresAddPlugin.cmake b/CMakeModules/CalamaresAddPlugin.cmake index d2f878381..1bf20e4ca 100644 --- a/CMakeModules/CalamaresAddPlugin.cmake +++ b/CMakeModules/CalamaresAddPlugin.cmake @@ -66,17 +66,18 @@ function( calamares_add_plugin ) message( " ${Green}TYPE:${ColorReset} ${PLUGIN_TYPE}" ) message( " ${Green}LINK_LIBRARIES:${ColorReset} ${PLUGIN_LINK_LIBRARIES}" ) message( " ${Green}LINK_PRIVATE_LIBRARIES:${ColorReset} ${PLUGIN_LINK_PRIVATE_LIBRARIES}" ) -# message( " ${Green}SOURCES:${ColorReset} ${PLUGIN_SOURCES}" ) -# message( " ${Green}UI:${ColorReset} ${PLUGIN_UI}" ) -# message( " ${Green}EXPORT_MACRO:${ColorReset} ${PLUGIN_EXPORT_MACRO}" ) -# message( " ${Green}NO_INSTALL:${ColorReset} ${PLUGIN_NO_INSTALL}" ) message( " ${Green}PLUGIN_DESTINATION:${ColorReset} ${PLUGIN_DESTINATION}" ) if( PLUGIN_CONFIG_FILES ) + set( _destination "(unknown)" ) if ( INSTALL_CONFIG AND NOT PLUGIN_NO_INSTALL ) - message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${PLUGIN_CONFIG_FILES} => ${PLUGIN_DATA_DESTINATION}" ) + set( _destination "${PLUGIN_DATA_DESTINATION}" ) + elseif( NOT PLUGIN_NO_INSTALL ) + # Not INSTALL_CONFIG + set( _destination "[Build directory only]" ) else() - message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${PLUGIN_CONFIG_FILES} => [Skipping installation]" ) + set( _destination "[Skipping installation]" ) endif() + message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${PLUGIN_CONFIG_FILES} => ${_destination}" ) endif() if( PLUGIN_RESOURCES ) message( " ${Green}RESOURCES:${ColorReset} ${PLUGIN_RESOURCES}" ) @@ -147,12 +148,13 @@ function( calamares_add_plugin ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE} DESTINATION ${PLUGIN_DESTINATION} ) - if ( INSTALL_CONFIG ) - foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} ) - configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY ) - install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} - DESTINATION ${PLUGIN_DATA_DESTINATION} ) - endforeach() - endif() + foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} ) + configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY ) + if ( INSTALL_CONFIG ) + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} + DESTINATION ${PLUGIN_DATA_DESTINATION} ) + endif() + endforeach() endif() endfunction() From dfb42f2b49a347c4c6020a299f5b3cab96628914 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 28 Jun 2018 05:19:32 -0400 Subject: [PATCH 363/385] CMake: add target show-version to get version information --- CMakeLists.txt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c06beba29..a46b0d37d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,9 @@ # Example usage: # # cmake . -DSKIP_MODULES="partition luksbootkeycfg" +# +# One special target is "show-version", which can be built +# to obtain the version number from here. project( calamares C CXX ) @@ -74,7 +77,6 @@ set( CALAMARES_VERSION_MINOR 2 ) set( CALAMARES_VERSION_PATCH 1 ) set( CALAMARES_VERSION_RC 0 ) - ### Transifex (languages) info # # complete = 100% translated, @@ -394,6 +396,15 @@ if( NOT BUILD_RELEASE AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git/" ) endif() endif() +# Special target for not-RC (e.g. might-be-release) builds. +# This is used by the release script to get the version. +if ( CALAMARES_VERSION_RC EQUAL 0 ) + add_custom_target(show-version + ${CMAKE_COMMAND} -E echo CALAMARES_VERSION=${CALAMARES_VERSION_SHORT} + USES_TERMINAL + ) +endif() + # enforce using constBegin, constEnd for const-iterators add_definitions( "-DQT_STRICT_ITERATORS" ) From 59dd181cfcf248b513e8ecaa01d9b863ab527b53 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 28 Jun 2018 05:48:04 -0400 Subject: [PATCH 364/385] ci: complete release script - Create tag, tarball, and test tarball - Print instructions for completing the release --- ci/RELEASE.sh | 84 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 74 insertions(+), 10 deletions(-) diff --git a/ci/RELEASE.sh b/ci/RELEASE.sh index 528735ed9..d3c960fd9 100644 --- a/ci/RELEASE.sh +++ b/ci/RELEASE.sh @@ -5,25 +5,89 @@ # This attempts to perform the different steps of the RELEASE.md # document automatically. It's not tested on other machines or # setups other than [ade]'s development VM. -# +# # Assumes that the version in CMakeLists.txt has been bumped, # and that a release of that version is desired. +# +# None of the "update stuff" is done by this script; in preparation +# for the release, you should have already done: +# - updating the version +# - pulling translations +# - updating the language list +# - switching to the right branch test -d .git || { echo "Not at top-level." ; exit 1 ; } test -d src/modules || { echo "No src/modules." ; exit 1 ; } which cmake > /dev/null 2>&1 || { echo "No cmake(1) available." ; exit 1 ; } -rm -rf build -mkdir build || { echo "Could not create build directory." ; exit 1 ; } -( cd build && cmake .. && make -j4 ) || { echo "Could not perform test-build." ; exit 1 ; } -( cd build && make test ) || { echo "Tests failed." ; exit 1 ; } +### Build with default compiler +# +# +BUILDDIR=$(mktemp -d --suffix=-build --tmpdir=.) +rm -rf "$BUILDDIR" +mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; } +( cd "$BUILDDIR" && cmake .. && make -j4 ) || { echo "Could not perform test-build." ; exit 1 ; } +( cd "$BUILDDIR" && make test ) || { echo "Tests failed." ; exit 1 ; } +### Build with clang +# +# if which clang++ > /dev/null 2>&1 ; then - # Do build again with clang - rm -rf build - mkdir build || { echo "Could not create build directory." ; exit 1 ; } - ( cd build && CC=clang CXX=clang++ cmake .. && make -j4 ) || { echo "Could not perform test-build." ; exit 1 ; } - ( cd build && make test ) || { echo "Tests failed." ; exit 1 ; } + # Do build again with clang + rm -rf "$BUILDDIR" + mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; } + ( cd "$BUILDDIR" && CC=clang CXX=clang++ cmake .. && make -j4 ) || { echo "Could not perform test-build." ; exit 1 ; } + ( cd "$BUILDDIR" && make test ) || { echo "Tests failed." ; exit 1 ; } fi +### Get version number for this release +# +# +V=$( cd "$BUILDDIR" && make show-version | grep ^CALAMARES_VERSION | sed s/^[A-Z_]*=// ) +test -n "$V" || { echo "Could not obtain version." ; exit 1 ; } + +### Create signed tag +# +# This is the signing key ID associated with the GitHub account adriaandegroot, +# which is used to create all "verified" tags in the Calamares repo. +KEY_ID="128F00873E05AF1D" +git tag -u "$KEY_ID" "v$V" || { echo "Could not sign tag v$V." ; exit 1 ; } + +### Create the tarball +# +# +TAR_V="calamares-$V" +TAR_FILE="$TAR_V.tar.gz" +git archive -o "$TAR_FILE" --prefix "$TAR_V/" "v$V" || { echo "Could not create tarball." ; exit 1 ; } +test -f "$TAR_FILE" || { echo "Tarball was not created." ; exit 1 ; } +SHA256=$(sha256sum "$TAR_FILE" | cut -d" " -f1) + +### Build the tarball +# +# +D=$(date +%Y%m%d-%H%M%S) +TMPDIR=$(mktemp -d --suffix="-calamares-$D") +test -d "$TMPDIR" || { echo "Could not create tarball-build directory." ; exit 1 ; } +tar xzf "$TAR_FILE" -C "$TMPDIR" || { echo "Could not unpack tarball." ; exit 1 ; } +test -d "$TMPDIR/$TAR_V" || { echo "Tarball did not contain source directory." ; exit 1 ; } +( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed." ; exit 1 ; } + +### Cleanup +# +rm -rf "$BUILDDIR" # From test-builds +rm -rf "$TMPDIR" # From tarball + +### Print subsequent instructions +# +# +cat < Date: Thu, 28 Jun 2018 05:51:12 -0400 Subject: [PATCH 365/385] CMake: bump version - Set RC because this isn't near to a release yet --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a46b0d37d..183bc93f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,8 +74,8 @@ set( CALAMARES_DESCRIPTION_SUMMARY set( CALAMARES_VERSION_MAJOR 3 ) set( CALAMARES_VERSION_MINOR 2 ) -set( CALAMARES_VERSION_PATCH 1 ) -set( CALAMARES_VERSION_RC 0 ) +set( CALAMARES_VERSION_PATCH 2 ) +set( CALAMARES_VERSION_RC 1 ) ### Transifex (languages) info # From 6f39db4752c045bb9c929cbad738bde7209a22ab Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 28 Jun 2018 06:02:18 -0400 Subject: [PATCH 366/385] ci: name tags consistently --- ci/RELEASE.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/RELEASE.sh b/ci/RELEASE.sh index d3c960fd9..142d6b0c0 100644 --- a/ci/RELEASE.sh +++ b/ci/RELEASE.sh @@ -52,7 +52,7 @@ test -n "$V" || { echo "Could not obtain version." ; exit 1 ; } # This is the signing key ID associated with the GitHub account adriaandegroot, # which is used to create all "verified" tags in the Calamares repo. KEY_ID="128F00873E05AF1D" -git tag -u "$KEY_ID" "v$V" || { echo "Could not sign tag v$V." ; exit 1 ; } +git tag -u "$KEY_ID" -m "Release v$V" "v$V" || { echo "Could not sign tag v$V." ; exit 1 ; } ### Create the tarball # From f118fd73bce05f6ca38c1185b18b23f4a19458ce Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 28 Jun 2018 06:29:55 -0400 Subject: [PATCH 367/385] [calamares] More info when Cala is already running - If Calamares is already running, print some information about which instances there are so that it is possible to unstick them. --- src/calamares/main.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/calamares/main.cpp b/src/calamares/main.cpp index d4bd2743d..9893e6792 100644 --- a/src/calamares/main.cpp +++ b/src/calamares/main.cpp @@ -108,7 +108,14 @@ main( int argc, char* argv[] ) returnCode = a.exec(); } else + { + auto instancelist = guard.instances(); qDebug() << "Calamares is already running, shutting down."; + if ( instancelist.count() > 0 ) + qDebug() << "Other running Calamares instances:"; + for ( const auto& i : instancelist ) + qDebug() << " " << i.isValid() << i.pid() << i.arguments(); + } return returnCode; } From 3329f2ea5574a08241106eb40e9bc4fbcf933b82 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 29 Jun 2018 09:33:56 -0400 Subject: [PATCH 368/385] [calamares] Refactor searching for QML dir - Split collecting the search paths into separate function - Don't fall back on the current directory --- src/calamares/CalamaresApplication.cpp | 81 ++++++++++++-------------- 1 file changed, 38 insertions(+), 43 deletions(-) diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index e41516c60..893e76c9b 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -133,60 +133,55 @@ CalamaresApplication::mainWindow() } -void -CalamaresApplication::initQmlPath() +static QStringList +qmlDirCandidates( bool assumeBuilddir ) { - QDir importPath; - - QString subpath( "qml" ); + static const char QML[] = "qml"; + QStringList qmlDirs; if ( CalamaresUtils::isAppDataDirOverridden() ) - { - importPath = QDir( CalamaresUtils::appDataDir() - .absoluteFilePath( subpath ) ); - if ( !importPath.exists() || !importPath.isReadable() ) - { - cError() << "FATAL: explicitly configured application data directory" - << CalamaresUtils::appDataDir().absolutePath() - << "does not contain a valid QML modules directory at" - << importPath.absolutePath() - << "\nCowardly refusing to continue startup without the QML directory."; - ::exit( EXIT_FAILURE ); - } - } + qmlDirs << CalamaresUtils::appDataDir().absoluteFilePath( QML ); else { - QStringList qmlDirCandidatesByPriority; - if ( isDebug() ) - { - qmlDirCandidatesByPriority.append( - QDir::current().absoluteFilePath( - QString( "src/%1" ) - .arg( subpath ) ) ); - } - qmlDirCandidatesByPriority.append( CalamaresUtils::appDataDir() - .absoluteFilePath( subpath ) ); + if ( assumeBuilddir ) + qmlDirs << QDir::current().absoluteFilePath( "src/qml" ); // In build-dir + qmlDirs << CalamaresUtils::appDataDir().absoluteFilePath( QML ); + } - foreach ( const QString& path, qmlDirCandidatesByPriority ) - { - QDir dir( path ); - if ( dir.exists() && dir.isReadable() ) - { - importPath = dir; - break; - } - } + return qmlDirs; +} - if ( !importPath.exists() || !importPath.isReadable() ) + +void +CalamaresApplication::initQmlPath() +{ + QDir importPath; // Right now, current-dir + QStringList qmlDirCandidatesByPriority = qmlDirCandidates( isDebug() ); + bool found = false; + + foreach ( const QString& path, qmlDirCandidatesByPriority ) + { + QDir dir( path ); + if ( dir.exists() && dir.isReadable() ) { - cError() << "FATAL: none of the expected QML paths (" - << qmlDirCandidatesByPriority.join( ", " ) - << ") exist." - << "\nCowardly refusing to continue startup without the QML directory."; - ::exit( EXIT_FAILURE ); + importPath = dir; + found = true; + break; } } + if ( !found || !importPath.exists() || !importPath.isReadable() ) + { + cError() << "Cowardly refusing to continue startup without a QML directory." + << Logger::DebugList( qmlDirCandidatesByPriority ); + if ( CalamaresUtils::isAppDataDirOverridden() ) + cError() << "FATAL: explicitly configured application data directory is missing qml/"; + else + cError() << "FATAL: none of the expected QML paths exist."; + ::exit( EXIT_FAILURE ); + } + + cDebug() << "Using Calamares QML directory" << importPath.absolutePath(); CalamaresUtils::setQmlModulesDir( importPath ); } From 22ee24a5ad8a39cdefab205ec3053eb42e147cb7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 29 Jun 2018 10:15:43 -0400 Subject: [PATCH 369/385] [calamares] Refactor searching for settings.conf - Split the collection of paths off from the search itself. --- src/calamares/CalamaresApplication.cpp | 78 +++++++++++++------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index 893e76c9b..29e04cb67 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -152,6 +152,26 @@ qmlDirCandidates( bool assumeBuilddir ) } +static QStringList +settingsFileCandidates( bool assumeBuilddir ) +{ + static const char settings[] = "settings.conf"; + + QStringList settingsPaths; + if ( CalamaresUtils::isAppDataDirOverridden() ) + settingsPaths << CalamaresUtils::appDataDir().absoluteFilePath( settings ); + else + { + if ( assumeBuilddir ) + settingsPaths << QDir::current().absoluteFilePath( settings ); + settingsPaths << CMAKE_INSTALL_FULL_SYSCONFDIR "/calamares/settings.conf"; // String concat + settingsPaths << CalamaresUtils::appDataDir().absoluteFilePath( settings ); + } + + return settingsPaths; +} + + void CalamaresApplication::initQmlPath() { @@ -189,51 +209,31 @@ CalamaresApplication::initQmlPath() void CalamaresApplication::initSettings() { + QStringList settingsFileCandidatesByPriority = settingsFileCandidates( isDebug() ); + QFileInfo settingsFile; - if ( CalamaresUtils::isAppDataDirOverridden() ) + bool found = false; + + foreach ( const QString& path, settingsFileCandidatesByPriority ) { - settingsFile = QFileInfo( CalamaresUtils::appDataDir().absoluteFilePath( "settings.conf" ) ); - if ( !settingsFile.exists() || !settingsFile.isReadable() ) + QFileInfo pathFi( path ); + if ( pathFi.exists() && pathFi.isReadable() ) { - cError() << "FATAL: explicitly configured application data directory" - << CalamaresUtils::appDataDir().absolutePath() - << "does not contain a valid settings.conf file." - << "\nCowardly refusing to continue startup without settings."; - ::exit( EXIT_FAILURE ); + settingsFile = pathFi; + found = true; + break; } } - else - { - QStringList settingsFileCandidatesByPriority; - if ( isDebug() ) - { - settingsFileCandidatesByPriority.append( - QDir::currentPath() + - QDir::separator() + - "settings.conf" ); - } - settingsFileCandidatesByPriority.append( CMAKE_INSTALL_FULL_SYSCONFDIR "/calamares/settings.conf" ); - settingsFileCandidatesByPriority.append( CalamaresUtils::appDataDir() - .absoluteFilePath( "settings.conf" ) ); - foreach ( const QString& path, settingsFileCandidatesByPriority ) - { - QFileInfo pathFi( path ); - if ( pathFi.exists() && pathFi.isReadable() ) - { - settingsFile = pathFi; - break; - } - } - - if ( !settingsFile.exists() || !settingsFile.isReadable() ) - { - cError() << "FATAL: none of the expected configuration file paths (" - << settingsFileCandidatesByPriority.join( ", " ) - << ") contain a valid settings.conf file." - << "\nCowardly refusing to continue startup without settings."; - ::exit( EXIT_FAILURE ); - } + if ( !found || !settingsFile.exists() || !settingsFile.isReadable() ) + { + cError() << "Cowardly refusing to continue startup without settings." + << Logger::DebugList( settingsFileCandidatesByPriority ); + if ( CalamaresUtils::isAppDataDirOverridden() ) + cError() << "FATAL: explicitly configured application data directory is missing settings.conf"; + else + cError() << "FATAL: none of the expected configuration file paths exist."; + ::exit( EXIT_FAILURE ); } new Calamares::Settings( settingsFile.absoluteFilePath(), isDebug(), this ); From b0e55c059a3bd1de32dfc83821b2cb9bb0dab820 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 29 Jun 2018 10:52:12 -0400 Subject: [PATCH 370/385] [calamares] Refactor searching for branding descriptor --- src/calamares/CalamaresApplication.cpp | 86 ++++++++++++-------------- 1 file changed, 40 insertions(+), 46 deletions(-) diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index 29e04cb67..ef6c37912 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -172,6 +172,27 @@ settingsFileCandidates( bool assumeBuilddir ) } +static QStringList +brandingFileCandidates( bool assumeBuilddir, const QString& brandingFilename ) +{ + QStringList brandingPaths; + if ( CalamaresUtils::isAppDataDirOverridden() ) + brandingPaths << CalamaresUtils::appDataDir().absoluteFilePath( brandingFilename ); + else + { + if ( assumeBuilddir ) + { + brandingPaths << ( QDir::currentPath() + QStringLiteral( "/src/" ) + brandingFilename ); + brandingPaths << QDir( CMAKE_INSTALL_FULL_SYSCONFDIR "/calamares/" ) + .absoluteFilePath( brandingFilename ); + brandingPaths << CalamaresUtils::appDataDir().absoluteFilePath( brandingFilename); + } + } + + return brandingPaths; +} + + void CalamaresApplication::initQmlPath() { @@ -250,59 +271,32 @@ CalamaresApplication::initBranding() ::exit( EXIT_FAILURE ); } - QString brandingDescriptorSubpath = QString( "branding/%1/branding.desc" ) - .arg( brandingComponentName ); + QString brandingDescriptorSubpath = QString( "branding/%1/branding.desc" ).arg( brandingComponentName ); + QStringList brandingFileCandidatesByPriority = brandingFileCandidates( isDebug(), brandingDescriptorSubpath); QFileInfo brandingFile; - if ( CalamaresUtils::isAppDataDirOverridden() ) + bool found = false; + + foreach ( const QString& path, brandingFileCandidatesByPriority ) { - brandingFile = QFileInfo( CalamaresUtils::appDataDir() - .absoluteFilePath( brandingDescriptorSubpath ) ); - if ( !brandingFile.exists() || !brandingFile.isReadable() ) + QFileInfo pathFi( path ); + if ( pathFi.exists() && pathFi.isReadable() ) { - cError() << "FATAL: explicitly configured application data directory" - << CalamaresUtils::appDataDir().absolutePath() - << "does not contain a valid branding component descriptor at" - << brandingFile.absoluteFilePath() - << "\nCowardly refusing to continue startup without branding."; - ::exit( EXIT_FAILURE ); + brandingFile = pathFi; + found = true; + break; } } - else - { - QStringList brandingFileCandidatesByPriority; - if ( isDebug() ) - { - brandingFileCandidatesByPriority.append( - QDir::currentPath() + - QDir::separator() + - "src" + - QDir::separator() + - brandingDescriptorSubpath ); - } - brandingFileCandidatesByPriority.append( QDir( CMAKE_INSTALL_FULL_SYSCONFDIR "/calamares/" ) - .absoluteFilePath( brandingDescriptorSubpath ) ); - brandingFileCandidatesByPriority.append( CalamaresUtils::appDataDir() - .absoluteFilePath( brandingDescriptorSubpath ) ); - - foreach ( const QString& path, brandingFileCandidatesByPriority ) - { - QFileInfo pathFi( path ); - if ( pathFi.exists() && pathFi.isReadable() ) - { - brandingFile = pathFi; - break; - } - } - if ( !brandingFile.exists() || !brandingFile.isReadable() ) - { - cError() << "FATAL: none of the expected branding descriptor file paths (" - << brandingFileCandidatesByPriority.join( ", " ) - << ") contain a valid branding.desc file." - << "\nCowardly refusing to continue startup without branding."; - ::exit( EXIT_FAILURE ); - } + if ( !found || !brandingFile.exists() || !brandingFile.isReadable() ) + { + cError() << "Cowardly refusing to continue startup without branding." + << Logger::DebugList( brandingFileCandidatesByPriority ); + if ( CalamaresUtils::isAppDataDirOverridden() ) + cError() << "FATAL: explicitly configured application data directory is missing" << brandingComponentName; + else + cError() << "FATAL: none of the expected branding descriptor file paths exist."; + ::exit( EXIT_FAILURE ); } new Calamares::Branding( brandingFile.absoluteFilePath(), this ); From f899bda81d151155376ed3b4b257d85500957aff Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 5 Jul 2018 12:01:44 +0200 Subject: [PATCH 371/385] [calamares] Restore missing search paths - Misplaced {} makes the branding search path empty - Reported by @apachelogger --- src/calamares/CalamaresApplication.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index ef6c37912..018e2b677 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -181,12 +181,9 @@ brandingFileCandidates( bool assumeBuilddir, const QString& brandingFilename ) else { if ( assumeBuilddir ) - { brandingPaths << ( QDir::currentPath() + QStringLiteral( "/src/" ) + brandingFilename ); - brandingPaths << QDir( CMAKE_INSTALL_FULL_SYSCONFDIR "/calamares/" ) - .absoluteFilePath( brandingFilename ); - brandingPaths << CalamaresUtils::appDataDir().absoluteFilePath( brandingFilename); - } + brandingPaths << QDir( CMAKE_INSTALL_FULL_SYSCONFDIR "/calamares/" ).absoluteFilePath( brandingFilename ); + brandingPaths << CalamaresUtils::appDataDir().absoluteFilePath( brandingFilename); } return brandingPaths; From ae7700f2d735c99200bbbb5402e306576f02896c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 10 Jul 2018 04:12:24 -0400 Subject: [PATCH 372/385] [libcalamares] Refactor searching for module configurations - Similar to the refactorings in Calamares proper, just split out collecting the search paths into a static function. This makes it a little easier to find places that will need expansion for more-than-one-config-directory. --- src/libcalamaresui/modulesystem/Module.cpp | 43 ++++++++-------------- 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index ed1cb33ea..8d92c37ad 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -44,14 +44,6 @@ #include -// Example module.desc -/* ---- -type: "view" #job or view -name: "foo" #the module name. must be unique and same as the parent directory -interface: "qtplugin" #can be: qtplugin, python, process, ... -*/ - static const char EMERGENCY[] = "emergency"; namespace Calamares @@ -144,34 +136,29 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, } -void -Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Exception +static QStringList +moduleConfigurationCandidates( bool assumeBuildDir, const QString& moduleName, const QString& configFileName ) { - QStringList configFilesByPriority; + QStringList paths; if ( CalamaresUtils::isAppDataDirOverridden() ) - { - configFilesByPriority.append( - CalamaresUtils::appDataDir().absoluteFilePath( - QString( "modules/%1" ).arg( configFileName ) ) ); - } + paths << CalamaresUtils::appDataDir().absoluteFilePath( QString( "modules/%1" ).arg( configFileName ) ); else { - if ( Settings::instance()->debugMode() ) - { - configFilesByPriority.append( - QDir( QDir::currentPath() ).absoluteFilePath( - QString( "src/modules/%1/%2" ).arg( m_name ).arg( configFileName ) ) ); - } + if ( assumeBuildDir ) + paths << QDir().absoluteFilePath(QString( "src/modules/%1/%2" ).arg( moduleName ).arg( configFileName ) ); - configFilesByPriority.append( - QString( "/etc/calamares/modules/%1" ).arg( configFileName ) ); - configFilesByPriority.append( - CalamaresUtils::appDataDir().absoluteFilePath( - QString( "modules/%2" ).arg( configFileName ) ) ); + paths << QString( "/etc/calamares/modules/%1" ).arg( configFileName ); + paths << CalamaresUtils::appDataDir().absoluteFilePath( QString( "modules/%1" ).arg( configFileName ) ); } - foreach ( const QString& path, configFilesByPriority ) + return paths; +} + +void +Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Exception +{ + foreach ( const QString& path, moduleConfigurationCandidates( Settings::instance()->debugMode(), m_name, configFileName ) ) { QFile configFile( path ); if ( configFile.exists() && configFile.open( QFile::ReadOnly | QFile::Text ) ) From b6f1960fc58352a4f60603b74314e69ea8815b75 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 6 Aug 2018 05:15:48 -0400 Subject: [PATCH 373/385] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_ca.ts | 16 +- lang/calamares_es.ts | 2 +- lang/calamares_es_MX.ts | 10 +- lang/calamares_he.ts | 445 ++++++++++++------------- lang/calamares_hi.ts | 707 ++++++++++++++++++++-------------------- lang/calamares_is.ts | 8 +- lang/calamares_it_IT.ts | 10 +- lang/calamares_ja.ts | 16 +- lang/calamares_ko.ts | 46 +-- lang/calamares_pt_BR.ts | 20 +- lang/calamares_ru.ts | 14 +- lang/calamares_uk.ts | 11 +- 12 files changed, 656 insertions(+), 649 deletions(-) diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index a43d01432..1a6f2b11c 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -579,7 +579,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. En&crypt - &Xifra + En&cripta @@ -788,7 +788,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Skip writing LUKS configuration for Dracut: "/" partition is not encrypted - Omet l'escriptura de la configuració de LUKS per a Dracut: la partició "/" no està xifrada + Omet l'escriptura de la configuració de LUKS per a Dracut: la partició "/" no està encriptada @@ -872,7 +872,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. En&crypt system - &Xifra el sistema + En&cripta el sistema @@ -948,7 +948,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - <h1>Tot fet.</h1><br/>%1 s'ha instal·lat al vostre ordinador.<br/>Ara podeu reiniciar-lo per tal d'accedir al sistema operatiu nou o bé continuar utilitzant l'entorn autònom de %2. + <h1>Tot fet.</h1><br/>%1 s'ha instal·lat a l'ordinador.<br/>Ara podeu reiniciar-lo per tal d'accedir al sistema operatiu nou o bé continuar utilitzant l'entorn autònom de %2. @@ -1786,7 +1786,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Boot partition not encrypted - Partició d'arrencada sense xifrar + Partició d'arrencada sense encriptar @@ -1839,7 +1839,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Saving files for later ... - Desament dels fitxers per a més tard... + Desament de fitxers per a més tard... @@ -2528,7 +2528,7 @@ Sortida: Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - El nom d'amfitrió conté caràcters no vàlids. Només s'admeten lletres, números i guions. + El nom d'amfitrió conté caràcters no vàlids. Només s'hi admeten lletres, números i guions. @@ -2585,7 +2585,7 @@ Sortida: <h1>Welcome to the Calamares installer for %1.</h1> - <h1>Benvingut a l'instal·lador Calamares per a %1.</h1> + <h1>Us donem la benvinguda a l'instal·lador Calamares per a %1.</h1> diff --git a/lang/calamares_es.ts b/lang/calamares_es.ts index 88ce4eae7..c07481a92 100644 --- a/lang/calamares_es.ts +++ b/lang/calamares_es.ts @@ -51,7 +51,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Blank Page - + Página Blanca diff --git a/lang/calamares_es_MX.ts b/lang/calamares_es_MX.ts index 2ecc8f5a7..ca8bd81f6 100644 --- a/lang/calamares_es_MX.ts +++ b/lang/calamares_es_MX.ts @@ -50,7 +50,7 @@ Blank Page - + Página en blanco @@ -192,17 +192,17 @@ Calamares Initialization Failed - + La inicialización de Calamares ha fallado %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. - + %1 no pudo ser instalado. Calamares no pudo cargar todos los módulos configurados. Este es un problema con la forma en que Calamares esta siendo usada por la distribución. <br/>The following modules could not be loaded: - + <br/>Los siguientes módulos no pudieron ser cargados: @@ -1664,7 +1664,7 @@ El instalador terminará y se perderán todos los cambios. Cre&ate - + Cre&ar diff --git a/lang/calamares_he.ts b/lang/calamares_he.ts index dd9ae1af8..13edcfac2 100644 --- a/lang/calamares_he.ts +++ b/lang/calamares_he.ts @@ -4,17 +4,17 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - <strong>תצורת האתחול</strong> של מערכת זו. <br><br> מערכות x86 ישנות יותר תומכות אך ורק ב <strong>BIOS</strong>.<br> מערכות חדשות משתמשות בדרך כלל ב <strong>EFI</strong>, אך יכולות להיות מוצגות כ BIOS במידה והן מופעלות במצב תאימות לאחור. + <strong>תצורת האתחול</strong> של מערכת זו. <br><br> מערכות x86 ישנות יותר תומכות אך ורק ב <strong>BIOS</strong>.<br> מערכות חדשות משתמשות בדרך כלל ב־<strong>EFI</strong>, אך עשוית להופיע כ־BIOS אם הן מופעלות במצב תאימות לאחור. This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - מערכת זו הופעלה בתצורת אתחול <strong>EFI</strong>.<br><br> בכדי להגדיר הפעלה מתצורת אתחול EFI, על אשף ההתקנה להתקין מנהל אתחול מערכת, לדוגמה <strong>GRUB</strong> או <strong>systemd-boot</strong> על <strong>מחיצת מערכת EFI</strong>. פעולה זו היא אוטומטית, אלא אם כן תבחר להגדיר מחיצות באופן ידני, במקרה זה עליך לבחור זאת או להגדיר בעצמך. + מערכת זו הופעלה בתצורת אתחול <strong>EFI</strong>.<br><br> כדי להגדיר הפעלה מתצורת אתחול EFI, על אשף ההתקנה להתקין מנהל אתחול מערכת, לדוגמה <strong>GRUB</strong> או <strong>systemd-boot</strong> על <strong>מחיצת מערכת EFI</strong>. פעולה זו היא אוטומטית, אלא אם כן העדפתך היא להגדיר מחיצות באופן ידני, במקרה זה עליך לבחור זאת או להגדיר בעצמך. This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - מערכת זו הופעלה בתצורת אתחול <strong>BIOS</strong>.<br><br> בכדי להגדיר הפעלה מתצורת אתחול BIOS, על אשף ההתקנה להתקין מנהל אתחול מערכת, לדוגמה <strong>GRUB</strong>, בתחלית מחיצה או על ה <strong>Master Boot Record</strong> בצמוד להתחלה של טבלת המחיצות (מועדף). פעולה זו היא אוטומטית, אלא אם כן תבחר להגדיר מחיצות באופן ידני, במקרה זה עליך להגדיר זאת בעצמך. + מערכת זו הופעלה בתצורת אתחול <strong>BIOS</strong>.<br><br> כדי להגדיר הפעלה מתצורת אתחול BIOS, על אשף ההתקנה להתקין מנהל אתחול מערכת, לדוגמה <strong>GRUB</strong>, בתחילת המחיצה או על ה־<strong>Master Boot Record</strong> בצמוד להתחלה של טבלת המחיצות (מועדף). פעולה זו היא אוטומטית, אלא אם כן תבחר להגדיר מחיצות באופן ידני, במקרה זה עליך להגדיר זאת בעצמך. @@ -37,7 +37,7 @@ Do not install a boot loader - אל תתקין מנהל אתחול מערכת, boot loader + לא להתקין מנהל אתחול מערכת @@ -50,7 +50,7 @@ Blank Page - + עמוד ריק @@ -107,7 +107,7 @@ Install - התקן + התקנה @@ -115,7 +115,7 @@ Done - בוצע + הסתיים @@ -123,12 +123,12 @@ Run command %1 %2 - הרץ פקודה %1 %2 + הרצת הפקודה %1 %2 Running command %1 %2 - מריץ פקודה %1 %2 + הפקודה %1 %2 רצה @@ -136,17 +136,17 @@ Running %1 operation. - מריץ פעולה %1. + הפעולה %1 רצה. Bad working directory path - נתיב תיקיית עבודה לא תקין + נתיב תיקיית עבודה שגוי Working directory %1 for python job %2 is not readable. - תיקיית עבודה %1 עבור משימת python %2 לא קריאה. + תיקיית העבודה %1 עבור משימת python‏ %2 אינה קריאה. @@ -161,7 +161,7 @@ Boost.Python error in job "%1". - שגיאת Boost.Python במשימה "%1". + שגיאת Boost.Python במשימה „%1”. @@ -169,56 +169,56 @@ &Back - &קודם + ה&קודם &Next - &הבא + הב&א &Cancel - &בטל + &ביטול Cancel installation without changing the system. - בטל התקנה ללא ביצוע שינוי במערכת. + ביטול התקנה ללא ביצוע שינוי במערכת. Calamares Initialization Failed - + הפעלת Calamares נכשלה %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. - + אין אפשרות להתקין את %1. ל־Calamares אין אפשרות לטעון את המודולים המוגדרים. מדובר בתקלה באופן בו ההפצה משתמשת ב־Calamares. <br/>The following modules could not be loaded: - + <br/>לא ניתן לטעון את המודולים הבאים: &Install - + הת&קנה Cancel installation? - בטל את ההתקנה? + לבטל את ההתקנה? Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - האם אתה בטוח שברצונך לבטל את תהליך ההתקנה? + לבטל את תהליך ההתקנה? אשף ההתקנה ייסגר וכל השינויים יאבדו. @@ -234,12 +234,12 @@ The installer will quit and all changes will be lost. &Close - &סגור + &סגירה Continue with setup? - המשך עם הליך ההתקנה? + להמשיך בהתקנה? @@ -249,22 +249,22 @@ The installer will quit and all changes will be lost. &Install now - &התקן כעת + להת&קין כעת Go &back - &אחורה + ח&זרה &Done - &בוצע + &סיום The installation is complete. Close the installer. - תהליך ההתקנה הושלם. אנא סגור את אשף ההתקנה. + תהליך ההתקנה הושלם. נא לסגור את אשף ההתקנה. @@ -310,7 +310,7 @@ The installer will quit and all changes will be lost. Show debug information - הצג מידע על ניפוי שגיאות + הצגת מידע ניפוי שגיאות @@ -323,17 +323,17 @@ The installer will quit and all changes will be lost. This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - המחשב לא עומד בחלק מרף דרישות המינימום להתקנת %1.<br/> ההתקנה יכולה להמשיך, אך חלק מהתכונות יכולות להיות מבוטלות. + המחשב לא עומד בחלק מרף דרישות המינימום להתקנת %1.<br/> ההתקנה יכולה להמשיך, אך יתכן כי חלק מהתכונות יושבתו. This program will ask you some questions and set up %2 on your computer. - אשף התקנה זה נכתב בלשון זכר אך מיועד לשני המינים. תוכנה זו תשאל אותך מספר שאלות ותגדיר את %2 על המחשב שלך. + תכנית זו תשאל אותך מספר שאלות ותתקין את %2 על המחשב שלך. For best results, please ensure that this computer: - לקבלת התוצאות הטובות ביותר, אנא וודא כי מחשב זה: + לקבלת התוצאות הטובות ביותר, נא לוודא כי מחשב זה: @@ -356,7 +356,7 @@ The installer will quit and all changes will be lost. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - <strong>הגדרת מחיצות באופן ידני</strong><br/>תוכל ליצור או לשנות את גודל המחיצות בעצמך. + <strong>הגדרת מחיצות באופן ידני</strong><br/>ניתן ליצור או לשנות את גודל המחיצות בעצמך. @@ -366,12 +366,12 @@ The installer will quit and all changes will be lost. %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - %1 תוקטן ל %2 MB ומחיצה חדשה בגודל %3 MB תיווצר עבור %4. + %1 תוקטן לכדי %2 מ״ב ותיווצר מחיצה חדשה בגודל %3 מ״ב עבור %4. Select storage de&vice: - בחר ה&תקן אחסון: + בחירת התקן א&חסון: @@ -384,27 +384,27 @@ The installer will quit and all changes will be lost. Reuse %1 as home partition for %2. - השתמש ב %1 כמחיצת הבית, home, עבור %2. + להשתמש ב־%1 כמחיצת הבית (home) עבור %2. <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - <strong>בחר מחיצה לכיווץ, לאחר מכן גרור את הסרגל התחתון בכדי לשנות את גודלה</strong> + <strong>ראשית יש לבחור מחיצה לכיווץ, לאחר מכן לגרור את הסרגל התחתון כדי לשנות את גודלה</strong> <strong>Select a partition to install on</strong> - <strong>בחר מחיצה בכדי לבצע את ההתקנה עליה</strong> + <strong>נא לבחור מחיצה כדי להתקין עליה</strong> An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - מחיצת מערכת EFI לא נמצאה במערכת. אנא חזור והשתמש ביצירת מחיצות באופן ידני בכדי להגדיר את %1. + במערכת זו לא נמצאה מחיצת מערכת EFI. נא לחזור ולהשתמש ביצירת מחיצות באופן ידני כדי להגדיר את %1. The EFI system partition at %1 will be used for starting %2. - מחיצת מערכת EFI ב %1 תשמש עבור טעינת %2. + מחיצת מערכת ה־EFI שב־%1 תשמש עבור טעינת %2. @@ -414,7 +414,7 @@ The installer will quit and all changes will be lost. This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - לא נמצאה מערכת הפעלה על התקן אחסון זה. מה ברצונך לעשות?<br/> תוכל לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. + לא נמצאה מערכת הפעלה על התקן אחסון זה. מה ברצונך לעשות?<br/> ניתן לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. @@ -422,12 +422,12 @@ The installer will quit and all changes will be lost. <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - <strong>מחק כונן</strong><br/> פעולה זו <font color="red">תמחק</font> את כל המידע השמור על התקן האחסון הנבחר. + <strong>מחיקת כונן</strong><br/> פעולה זו <font color="red">תמחק</font> את כל המידע השמור על התקן האחסון הנבחר. This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - נמצא %1 על התקן אחסון זה. מה ברצונך לעשות?<br/> תוכל לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. + בהתקן אחסון זה נמצאה %1. מה ברצונך לעשות?<br/> ניתן לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. @@ -435,7 +435,7 @@ The installer will quit and all changes will be lost. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - <strong>התקן לצד</strong><br/> אשף ההתקנה יכווץ מחיצה בכדי לפנות מקום עבור %1. + <strong>התקנה לצד</strong><br/> אשף ההתקנה יכווץ מחיצה כדי לפנות מקום לטובת %1. @@ -443,17 +443,17 @@ The installer will quit and all changes will be lost. <strong>Replace a partition</strong><br/>Replaces a partition with %1. - <strong>החלף מחיצה</strong><br/> מבצע החלפה של המחיצה עם %1. + <strong>החלפת מחיצה</strong><br/> ביצוע החלפה של המחיצה ב־%1. This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - מערכת הפעלה קיימת על התקן האחסון הזה. מה ברצונך לעשות?<br/> תוכל לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. + כבר קיימת מערכת הפעלה על התקן האחסון הזה. כיצד להמשיך?<br/> ניתן לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - מערכות הפעלה מרובות קיימות על התקן אחסון זה. מה ברצונך לעשות? <br/>תוכל לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. + ישנן מגוון מערכות הפעלה על התקן אחסון זה. איך להמשיך? <br/>ניתן לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. @@ -461,17 +461,17 @@ The installer will quit and all changes will be lost. Clear mounts for partitioning operations on %1 - מחק נקודות עיגון עבור ביצוע פעולות של הגדרות מחיצה על %1. + מחיקת נקודות עיגון עבור פעולות חלוקה למחיצות על %1. Clearing mounts for partitioning operations on %1. - מבצע מחיקה של נקודות עיגון עבור ביצוע פעולות של הגדרות מחיצה על %1. + מתבצעת מחיקה של נקודות עיגון לטובת פעולות חלוקה למחיצות על %1. Cleared all mounts for %1 - בוצעה מחיקה עבור כל נקודות העיגון על %1. + כל נקודות העיגון על %1 נמחקו. @@ -479,7 +479,7 @@ The installer will quit and all changes will be lost. Clear all temporary mounts. - מחק את כל נקודות העיגון הזמניות. + מחיקת כל נקודות העיגון הזמניות. @@ -503,17 +503,17 @@ The installer will quit and all changes will be lost. Could not run command. - + לא ניתן להריץ את הפקודה. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + הפקודה פועלת בסביבת המארח ועליה לדעת מה נתיב השורש, אך לא צוין rootMountPoint. The command needs to know the user's name, but no username is defined. - + הפקודה צריכה לדעת מה שם המשתמש, אך לא הוגדר שם משתמש. @@ -529,7 +529,7 @@ The installer will quit and all changes will be lost. Create a Partition - צור מחיצה + יצירת מחיצה @@ -559,7 +559,7 @@ The installer will quit and all changes will be lost. LVM LV name - + שם כרך לוגי במנהל הכרכים הלוגיים @@ -579,7 +579,7 @@ The installer will quit and all changes will be lost. En&crypt - ה&צפן + ה&צפנה @@ -599,7 +599,7 @@ The installer will quit and all changes will be lost. Mountpoint already in use. Please select another one. - נקודת העיגון בשימוש. אנא בחר נקודת עיגון אחרת. + נקודת העיגון בשימוש. נא לבחור בנקודת עיגון אחרת. @@ -607,7 +607,7 @@ The installer will quit and all changes will be lost. Create new %2MB partition on %4 (%3) with file system %1. - צור מחיצה חדשה בגודל %2 MB על %4 (%3) עם מערכת קבצים %1. + יצירת מחיצה חדשה בגודל של %2 מ״ב על גבי %4 (%3) עם מערכת הקבצים %1. @@ -617,12 +617,12 @@ The installer will quit and all changes will be lost. Creating new %1 partition on %2. - מגדיר מחיצה %1 חדשה על %2. + מוגדרת מחיצת %1 חדשה על %2. The installer failed to create partition on disk '%1'. - אשף ההתקנה נכשל ביצירת מחיצה על כונן '%1'. + אשף ההתקנה נכשל ביצירת מחיצה על הכונן ‚%1’. @@ -630,7 +630,7 @@ The installer will quit and all changes will be lost. Create Partition Table - צור טבלת מחיצות + יצירת טבלת מחיצות @@ -658,17 +658,17 @@ The installer will quit and all changes will be lost. Create new %1 partition table on %2. - צור טבלת מחיצות %1 חדשה על %2. + יצירת טבלת מחיצות חדשה מסוג %1 על %2. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - צור טבלת מחיצות <strong>%1</strong> חדשה על <strong>%2</strong> (%3). + יצירת טבלת מחיצות חדשה מסוג <strong>%1</strong> על <strong>%2</strong> (%3). Creating new %1 partition table on %2. - יוצר טבלת מחיצות %1 חדשה על %2. + נוצרת טבלת מחיצות חדשה מסוג %1 על %2. @@ -681,17 +681,17 @@ The installer will quit and all changes will be lost. Create user %1 - צור משתמש %1 + יצירת משתמש %1 Create user <strong>%1</strong>. - צור משתמש <strong>%1</strong>. + יצירת משתמש <strong>%1</strong>. Creating user %1. - יוצר משתמש %1. + נוצר משתמש %1. @@ -719,7 +719,7 @@ The installer will quit and all changes will be lost. Delete partition %1. - מחק את מחיצה %1. + מחיקת המחיצה %1. @@ -793,7 +793,7 @@ The installer will quit and all changes will be lost. Failed to open %1 - נכשלה פתיחת %1. + הפתיחה של %1 נכשלה. @@ -801,7 +801,7 @@ The installer will quit and all changes will be lost. Dummy C++ Job - משימת דמה של C++ + משימת דמה של C++‎ @@ -809,17 +809,17 @@ The installer will quit and all changes will be lost. Edit Existing Partition - ערוך מחיצה קיימת + עריכת מחיצה קיימת Content: - תכולה: + תוכן: &Keep - &השאר + לה&שאיר @@ -859,7 +859,7 @@ The installer will quit and all changes will be lost. Mountpoint already in use. Please select another one. - נקודת העיגון בשימוש. אנא בחר נקודת עיגון אחרת. + נקודת העיגון בשימוש. נא לבחור בנקודת עיגון אחרת. @@ -872,22 +872,22 @@ The installer will quit and all changes will be lost. En&crypt system - ה&צפן את המערכת + ה&צפנת המערכת Passphrase - ביטוי אבטחה + מילת צופן Confirm passphrase - אשר ביטוי אבטחה + אישור מילת צופן Please enter the same passphrase in both boxes. - אנא הכנס ביטוי אבטחה זהה בשני התאים. + נא להקליד את אותה מילת הצופן בשתי התיבות. @@ -895,37 +895,37 @@ The installer will quit and all changes will be lost. Set partition information - הגדר מידע עבור המחיצה + הגדרת מידע עבור המחיצה Install %1 on <strong>new</strong> %2 system partition. - התקן %1 על מחיצת מערכת %2 <strong>חדשה</strong>. + התקנת %1 על מחיצת מערכת <strong>חדשה</strong> מסוג %2. Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - הגדר מחיצת מערכת %2 <strong>חדשה</strong>בעלת נקודת עיגון <strong>%1</strong>. + הגדרת מחיצת מערכת <strong>חדשה</strong> מסוג %2 עם נקודת העיגון <strong>%1</strong>. Install %2 on %3 system partition <strong>%1</strong>. - התקן %2 על מחיצת מערכת %3 <strong>%1</strong>. + התקנת %2 על מחיצת מערכת <strong>%1</strong> מסוג %3. Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - התקן מחיצה %3 <strong>%1</strong> עם נקודת עיגון <strong>%2</strong>. + התקן מחיצה מסוג %3 <strong>%1</strong> עם נקודת העיגון <strong>%2</strong>. Install boot loader on <strong>%1</strong>. - התקן מנהל אתחול מערכת על <strong>%1</strong>. + התקנת מנהל אתחול מערכת על <strong>%1</strong>. Setting up mount points. - מגדיר נקודות עיגון. + נקודות עיגון מוגדרות. @@ -938,12 +938,12 @@ The installer will quit and all changes will be lost. <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - + <html><head/><body><p>כאשר תיבה זו מסומנת, המערכת שלך תופעל מחדש מיידית עם הלחיצה על <span style=" font-style:italic;">סיום</span> או עם סגירת תכנית ההתקנה.</p></body></html> &Restart now - &אתחל כעת + ה&פעלה מחדש כעת @@ -979,7 +979,7 @@ The installer will quit and all changes will be lost. Format partition %1 (file system: %2, size: %3 MB) on %4. - אתחל מחיצה %1 (מערכת קבצים: %2, גודל: %3 MB) על %4. + אתחל מחיצה %1 (מערכת קבצים: %2, גודל: %3 מ״ב) על %4. @@ -1077,17 +1077,17 @@ The installer will quit and all changes will be lost. I accept the terms and conditions above. - אני מאשר את התנאים וההתניות מעלה. + התנאים וההגבלות שלמעלה מקובלים עלי. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - <h1>הסכם רישיון</h1>אשף התקנה זה יבצע התקנה של תוכנות קנייניות אשר כפופות לתנאי רישיון. + <h1>הסכם רישיון</h1>אשף התקנה זה יבצע התקנה של תכניות קנייניות אשר כפופות לתנאי רישיון. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - אנא סקור את הסכם משתמש הקצה (EULA) מעלה.<br/> במידה ואינך מסכים עם התנאים, תהליך ההתקנה יופסק. + נא לעיין בהסכם משתמש הקצה (EULA) מעלה.<br/> אם התנאים אינם מקובלים עליך, תהליך ההתקנה יופסק. @@ -1134,7 +1134,7 @@ The installer will quit and all changes will be lost. <a href="%1">view license agreement</a> - <a href="%1">צפה בהסכם הרשיון</a> + <a href="%1">הצגת הסכם הרישיון</a> @@ -1142,7 +1142,7 @@ The installer will quit and all changes will be lost. License - רשיון + רישיון @@ -1171,7 +1171,7 @@ The installer will quit and all changes will be lost. &Change... - &החלף... + ה&חלפה… @@ -1190,7 +1190,7 @@ The installer will quit and all changes will be lost. Loading location data... - טוען נתונים על המיקום... + הנתונים על המיקום נטענים… @@ -1213,12 +1213,12 @@ The installer will quit and all changes will be lost. Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - התקנת רשת. (מנוטרלת: לא ניתן לאחזר רשימות של חבילות תוכנה, אנא בדוק את חיבורי הרשת) + התקנה מהרשת. (מושבתת: לא ניתן לקבל רשימות של חבילות תכנה, נא לבדוק את החיבור לרשת) Network Installation. (Disabled: Received invalid groups data) - התקנה מהרשת. (מנוטרל: התקבל מידע שגוי בנושא הקבוצות) + התקנה מהרשת. (מושבתת: המידע שהתקבל על קבוצות שגוי) @@ -1234,242 +1234,242 @@ The installer will quit and all changes will be lost. Password is too short - הסיסמה קצרה מדי + הססמה קצרה מדי Password is too long - הסיסמה ארוכה מדי + הססמה ארוכה מדי Password is too weak - + הססמה חלשה מדי Memory allocation error when setting '%1' - + שגיאת הקצאת זיכרון בעת הגדרת ‚%1’ Memory allocation error - + שגיאת הקצאת זיכרון The password is the same as the old one - + הססמה זהה לישנה The password is a palindrome - + הססמה היא פלינדרום The password differs with case changes only - + מורכבות הססמה טמונה בשינויי סוגי אותיות בלבד The password is too similar to the old one - + הססמה דומה מדי לישנה The password contains the user name in some form - + הססמה מכילה את שם המשתמש בצורה כלשהי The password contains words from the real name of the user in some form - + הססמה מכילה מילים מהשם האמתי של המשתמש בצורה זו או אחרת The password contains forbidden words in some form - + הססמה מכילה מילים אסורות בצורה כלשהי The password contains less than %1 digits - + הססמה מכילה פחות מ־%1 ספרות The password contains too few digits - + הססמה לא מכילה מספיק ספרות The password contains less than %1 uppercase letters - + הססמה מכילה פחות מ־%1 אותיות גדולות The password contains too few uppercase letters - + הססמה מכילה מעט מדי אותיות גדולות The password contains less than %1 lowercase letters - + הססמה מכילה פחות מ־%1 אותיות קטנות The password contains too few lowercase letters - + הססמה אינה מכילה מספיק אותיות קטנות The password contains less than %1 non-alphanumeric characters - + הססמה מכילה פחות מ־%1 תווים שאינם אלפאנומריים The password contains too few non-alphanumeric characters - + הססמה מכילה מעט מדי תווים שאינם אלפאנומריים The password is shorter than %1 characters - + אורך הססמה קצר מ־%1 תווים The password is too short - + הססמה קצרה מדי The password is just rotated old one - + הססמה היא פשוט סיכול של ססמה קודמת The password contains less than %1 character classes - + הססמה מכילה פחות מ־%1 סוגי תווים The password does not contain enough character classes - + הססמה לא מכילה מספיק סוגי תווים The password contains more than %1 same characters consecutively - + הססמה מכילה יותר מ־%1 תווים זהים ברצף The password contains too many same characters consecutively - + הססמה מכילה יותר מדי תווים זהים ברצף The password contains more than %1 characters of the same class consecutively - + הססמה מעילה יותר מ־%1 תווים מאותו הסוג ברצף The password contains too many characters of the same class consecutively - + הססמה מכילה יותר מדי תווים מאותו הסוג ברצף The password contains monotonic sequence longer than %1 characters - + הססמה מכילה רצף תווים מונוטוני של יותר מ־%1 תווים The password contains too long of a monotonic character sequence - + הססמה מכילה רצף תווים מונוטוני ארוך מדי No password supplied - + לא צוינה ססמה Cannot obtain random numbers from the RNG device - + לא ניתן לקבל מספרים אקראיים מהתקן ה־RNG Password generation failed - required entropy too low for settings - + יצירת הססמה נכשלה - רמת האקראיות הנדרשת נמוכה ביחס להגדרות The password fails the dictionary check - %1 - + הססמה נכשלה במבחן המילון - %1 The password fails the dictionary check - + הססמה נכשלה במבחן המילון Unknown setting - %1 - + הגדרה לא מוכרת - %1 Unknown setting - + הגדרה לא מוכרת Bad integer value of setting - %1 - + ערך מספרי שגוי להגדרה - %1 Bad integer value - + ערך מספרי שגוי Setting %1 is not of integer type - + ההגדרה %1 אינה מסוג מספר שלם Setting is not of integer type - + ההגדרה אינה מסוג מספר שלם Setting %1 is not of string type - + ההגדרה %1 אינה מסוג מחרוזת Setting is not of string type - + ההגדרה אינה מסוג מחרוזת Opening the configuration file failed - + פתיחת קובץ התצורה נכשלה The configuration file is malformed - + קובץ התצורה פגום Fatal failure - + כשל מכריע Unknown error - + שגיאה לא ידועה @@ -1487,7 +1487,7 @@ The installer will quit and all changes will be lost. Type here to test your keyboard - הקלד כאן בכדי לבדוק את המקלדת שלך + ניתן להקליד כאן כדי לבדוק את המקלדת שלך @@ -1500,19 +1500,19 @@ The installer will quit and all changes will be lost. What is your name? - מהו שמך? + מה שמך? What name do you want to use to log in? - באיזה שם ברצונך להשתמש בעת כניסה למחשב? + איזה שם ברצונך שישמש אותך לכניסה? font-weight: normal - משקל-גופן: נורמלי + font-weight: normal @@ -1522,42 +1522,42 @@ The installer will quit and all changes will be lost. Choose a password to keep your account safe. - בחר סיסמה בכדי להגן על חשבונך. + נא לבחור ססמה להגנה על חשבונך. <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> - <small>הכנס את אותה הסיסמה פעמיים, בכדי שניתן יהיה לבדוק שגיאות הקלדה. סיסמה טובה אמורה להכיל שילוב של אותיות, מספרים וסימני פיסוק, להיות באורך שמונה תווים לפחות, ועליה להשתנות במרווחי זמן קבועים.</small> + <small>יש להקליד את אותה הססמה פעמיים כדי שניתן יהיה לבדוק שגיאות הקלדה. ססמה טובה אמורה להכיל שילוב של אותיות, מספרים וסימני פיסוק, להיות באורך של שמונה תווים לפחות ויש להחליף אותה במרווחי זמן קבועים.</small> What is the name of this computer? - מהו שם מחשב זה? + מהו השם של המחשב הזה? <small>This name will be used if you make the computer visible to others on a network.</small> - <small>שם זה יהיה בשימוש במידה ומחשב זה יוגדר להיות נראה על ידי עמדות אחרות ברשת.</small> + <small>בשם זה ייעשה שימוש לטובת זיהוי מול מחשבים אחרים ברשת במידת הצורך.</small> Log in automatically without asking for the password. - התחבר באופן אוטומטי מבלי לבקש סיסמה. + כניסה אוטומטית מבלי לבקש ססמה. Use the same password for the administrator account. - השתמש באותה הסיסמה עבור חשבון המנהל. + להשתמש באותה הססמה עבור חשבון המנהל. Choose a password for the administrator account. - בחר סיסמה עבור חשבון המנהל. + בחירת ססמה עבור חשבון המנהל. <small>Enter the same password twice, so that it can be checked for typing errors.</small> - <small>הכנס את אותה הסיסמה פעמיים, בכדי שניתן יהיה לבדוק שגיאות הקלדה.</small> + <small>עליך להקליד את אותה הססמה פעמיים כדי לאפשר זיהוי של שגיאות הקלדה.</small> @@ -1648,12 +1648,12 @@ The installer will quit and all changes will be lost. Storage de&vice: - &התקן זכרון: + ה&תקן זיכרון: &Revert All Changes - &בטל את כל השינויים + &ביטול כל השינויים @@ -1663,37 +1663,37 @@ The installer will quit and all changes will be lost. Cre&ate - + י&צירה &Edit - &ערוך + &עריכה &Delete - &מחק + מ&חיקה Install boot &loader on: - התקן &מנהל אתחול מערכת על: + התקנת מ&נהל אתחול מערכת על: Are you sure you want to create a new partition table on %1? - האם אתה בטוח שברצונך ליצור טבלת מחיצות חדשה על %1? + ליצור טבלת מחיצות חדשה על %1? Can not create new partition - + לא ניתן ליצור מחיצה חדשה 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. - + לטבלת המחיצות על %1 כבר יש %2 מחיצות עיקריות ואי אפשר להוסיף עוד כאלה. נא להסיר מחיצה עיקרית אחת ולהוסיף מחיצה מורחבת במקום. @@ -1701,7 +1701,7 @@ The installer will quit and all changes will be lost. Gathering system information... - מלקט מידע אודות המערכת... + נאסף מידע על המערכת… @@ -1711,32 +1711,32 @@ The installer will quit and all changes will be lost. Install %1 <strong>alongside</strong> another operating system. - התקן את %1 <strong>לצד</strong> מערכת הפעלה אחרת. + להתקין את %1 <strong>לצד</strong> מערכת הפעלה אחרת. <strong>Erase</strong> disk and install %1. - <strong>מחק</strong> את הכונן והתקן את %1. + <strong>למחוק</strong> את הכונן ולהתקין את %1. <strong>Replace</strong> a partition with %1. - <strong>החלף</strong> מחיצה עם %1. + <strong>החלפת</strong> מחיצה עם %1. <strong>Manual</strong> partitioning. - מגדיר מחיצות באופן <strong>ידני</strong>. + להגדיר מחיצות באופן <strong>ידני</strong>. Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - התקן את %1 <strong>לצד</strong> מערכת הפעלה אחרת על כונן <strong>%2</strong> (%3). + להתקין את %1 <strong>לצד</strong> מערכת הפעלה אחרת על כונן <strong>%2</strong> (%3). <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - <strong>מחק</strong> כונן <strong>%2</strong> (%3) והתקן %1. + <strong>למחוק</strong> את הכונן <strong>%2</strong> (%3) ולהתקין את %1. @@ -1799,13 +1799,13 @@ The installer will quit and all changes will be lost. Plasma Look-and-Feel Job - + משימת מראה ותחושה של Plasma Could not select KDE Plasma Look-and-Feel package - + לא ניתן לבחור את חבילת המראה והתחושה של KDE Plasma. @@ -1818,7 +1818,7 @@ The installer will quit and all changes will be lost. Placeholder - שומר מקום + ממלא מקום @@ -1831,7 +1831,7 @@ The installer will quit and all changes will be lost. Look-and-Feel - + מראה ותחושה @@ -1839,17 +1839,17 @@ The installer will quit and all changes will be lost. Saving files for later ... - + הקבצים נשמרים להמשך… No files configured to save for later. - + לא הוגדרו קבצים לשמירה בהמשך. Not all of the configured files could be preserved. - + לא ניתן לשמר את כל הקבצים שהוגדרו. @@ -1858,39 +1858,42 @@ The installer will quit and all changes will be lost. There was no output from the command. - + +לא היה פלט מהפקודה. Output: - + +פלט: + External command crashed. - + הפקודה החיצונית נכשלה. Command <i>%1</i> crashed. - + הפקודה <i>%1</i> קרסה. External command failed to start. - + הפעלת הפעולה החיצונית נכשלה. Command <i>%1</i> failed to start. - + הפעלת הפקודה <i>%1</i> נכשלה. Internal error when starting command. - + שגיאה פנימית בעת הפעלת פקודה. @@ -1900,22 +1903,22 @@ Output: External command failed to finish. - + סיום הפקודה החיצונית נכשל. Command <i>%1</i> failed to finish in %2 seconds. - + הפקודה <i>%1</i> לא הסתיימה תוך %2 שניות. External command finished with errors. - + הפקודה החיצונית הסתיימה עם שגיאות. Command <i>%1</i> finished with exit code %2. - + הפקודה <i>%1</i> הסתיימה עם קוד היציאה %2. @@ -1923,28 +1926,28 @@ Output: Default Keyboard Model - ברירת מחדל של דגם המקלדת + דגם מקלדת כבררת מחדל Default - ברירת מחדל + בררת מחדל unknown - לא מוכר/ת + לא ידוע extended - מורחב/ת + מורחבת unformatted - לא מאותחל/ת + לא מאותחלת @@ -1954,7 +1957,7 @@ Output: Unpartitioned space or unknown partition table - הזכרון לא מחולק למחיצות או טבלת מחיצות לא מוכרת + הזכרון לא מחולק למחיצות או שטבלת המחיצות אינה מוכרת @@ -2037,27 +2040,27 @@ Output: Gathering system information... - מלקט מידע אודות המערכת... + נאסף מידע על המערכת… has at least %1 GB available drive space - קיים לפחות %1 GB של נפח אחסון + עם %1 ג״ב של נפח אחסון לפחות There is not enough drive space. At least %1 GB is required. - נפח האחסון לא מספק. נדרש לפחות %1 GB. + נפח האחסון לא מספיק. נדרשים %1 ג״ב לפחות. has at least %1 GB working memory - קיים לפחות %1 GB של זכרון פעולה + עם %1 ג״ב של זכרון פעולה לפחות The system does not have enough working memory. At least %1 GB is required. - כמות הזכרון הנדרשת לפעולה, לא מספיקה. נדרש לפחות %1 GB. + כמות הזיכרון הנדרשת לפעולה אינה מספיקה. נדרשים %1 ג״ב לפחות. @@ -2087,7 +2090,7 @@ Output: The screen is too small to display the installer. - גודל המסך קטן מדי בכדי להציג את מנהל ההתקנה. + גודל המסך קטן מכדי להציג את תכנית ההתקנה. @@ -2095,7 +2098,7 @@ Output: Resize partition %1. - שנה גודל מחיצה %1. + שינוי גודל המחיצה %1. @@ -2118,12 +2121,12 @@ Output: Scanning storage devices... - סורק התקני זכרון... + התקני אחסון נסרקים… Partitioning - מגדיר מחיצות + חלוקה למחיצות @@ -2131,17 +2134,17 @@ Output: Set hostname %1 - הגדר שם עמדה %1 + הגדרת שם מארח %1 Set hostname <strong>%1</strong>. - הגדר שם עמדה <strong>%1</strong>. + הגדרת שם מארח <strong>%1</strong>. Setting hostname %1. - מגדיר את שם העמדה %1. + שם העמדה %1 מוגדר. @@ -2153,7 +2156,7 @@ Output: Cannot write hostname to target system - נכשלה כתיבת שם העמדה למערכת המטרה + כתיבת שם העמדה למערכת היעד נכשלה @@ -2201,12 +2204,12 @@ Output: Set flags on new partition. - הגדר סימונים על מחיצה חדשה. + הגדרת סימונים על מחיצה חדשה. Clear flags on partition <strong>%1</strong>. - מחק סימונים על מחיצה <strong>%1</strong>. + מחיקת סימונים מהמחיצה <strong>%1</strong>. @@ -2364,7 +2367,7 @@ Output: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -2445,7 +2448,7 @@ Output: Placeholder - שומר מקום + ממלא מקום @@ -2577,17 +2580,17 @@ Output: <h1>Welcome to the %1 installer.</h1> - <h1>ברוכים הבאים להתקנת %1.</h1> + <h1>ברוך בואך להתקנת %1.</h1> <h1>Welcome to the Calamares installer for %1.</h1> - <h1>ברוכים הבאים להתקנת Calamares עבור %1.</h1> + <h1>ברוך בואך להתקנת %1 עם Calamares.</h1> About %1 installer - אודות התקנת %1 + על אודות התקנת %1 @@ -2597,7 +2600,7 @@ Output: %1 support - תמיכה ב - %1 + תמיכה ב־%1 @@ -2605,7 +2608,7 @@ Output: Welcome - ברוכים הבאים + ברוך בואך \ No newline at end of file diff --git a/lang/calamares_hi.ts b/lang/calamares_hi.ts index c1883707e..42750f9a0 100644 --- a/lang/calamares_hi.ts +++ b/lang/calamares_hi.ts @@ -4,17 +4,17 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - इस सिस्टम का <strong>boot वातावरण</strong>।<br><br>पुराने x86 सिस्टम केवल <strong>BIOS</strong> का समर्थन करते हैं।<br>आधुनिक सिस्टम आमतौर पर <strong>EFI</strong> का उपयोग करते हैं, लेकिन compatibilty मोड में शुरू होने पर BIOS के रूप में दिखाई दे सकते हैं। + इस सिस्टम का <strong>बूट वातावरण</strong>।<br><br>पुराने x86 सिस्टम केवल <strong>BIOS</strong> का समर्थन करते हैं। आधुनिक सिस्टम आमतौर पर <strong>EFI</strong> का उपयोग करते हैं, लेकिन संगतता मोड में शुरू होने पर BIOS के रूप में दिखाई दे सकते हैं । This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - यह सिस्टम <strong>EFI</strong> boot वातावरण के साथ शुरू किया गया।<br><br>EFI वातावरण से स्टार्टअप विन्यस्त करने के लिए इंस्टॉलर को <strong>GRUB</strong> या <strong>systemd-boot</strong> जैसे boot loader अनुप्रयोग <strong>EFI सिस्टम विभाजन</strong> पर स्थापित करने जरूरी हैं। यह स्वत: होता है, परंतु अगर आप मैनुअल विभाजन करना चुनते है; तो आपको या तो इसे चुनना होगा या फिर खुद ही बनाना होगा। + यह सिस्टम <strong>EFI</strong>बूट वातावरण के साथ शुरू किया गया।<br><br>EFI वातावरण से स्टार्टअप विन्यस्त करने के लिए इंस्टॉलर को <strong>GRUB</strong> या <strong>systemd-boot</strong> जैसे बूट लोडर अनुप्रयोग <strong>EFI सिस्टम विभाजन</strong>पर स्थापित करने जरूरी हैं। यह स्वत: होता है, परंतु अगर आप मैनुअल विभाजन करना चुनते है; तो आपको या तो इसे चुनना होगा या फिर खुद ही बनाना होगा। This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - यह सिस्टम <strong>BIOS</strong> boot वातावरण के साथ शुरू किया गया।<br><br>BIOS वातावरण से स्टार्टअप विन्यस्त करने के लिए इंस्टॉलर को <strong>GRUB</strong> जैसे boot loader को, या तो विभाजन की शुरुआत में या फिर <strong>Master Boot Record</strong> पर विभाजन तालिका की शुरुआत में इंस्टॉल (preferred) करना होगा। यह स्वत: होता है, परंतु अगर आप मैनुअल विभाजन करना चुनते है; तो आपको इसे खुद ही बनाना होगा। + यह सिस्टम <strong>BIOS</strong>बूट वातावरण के साथ शुरू किया गया।<br><br>BIOS वातावरण से स्टार्टअप विन्यस्त करने के लिए इंस्टॉलर को <strong>GRUB</strong> जैसे बूट लोडर को, या तो विभाजन की शुरुआत में या फिर <strong>Master Boot Record</strong> पर विभाजन तालिका की शुरुआत में इंस्टॉल (सुझाया जाता है) करना होगा। यह स्वत: होता है, परंतु अगर आप मैनुअल विभाजन करना चुनते है; तो आपको इसे खुद ही बनाना होगा। @@ -27,7 +27,7 @@ Boot Partition - Boot विभाजन + बूट विभाजन @@ -37,7 +37,7 @@ Do not install a boot loader - Boot loader इंस्टॉल न करें + बूट लोडर इंस्टॉल न करें @@ -50,7 +50,7 @@ Blank Page - + खाली पृष्ठ @@ -73,7 +73,7 @@ Modules - Modules + मापांक @@ -115,7 +115,7 @@ Done - हो गया + पूर्ण @@ -146,22 +146,22 @@ Working directory %1 for python job %2 is not readable. - Python job %2 के लिए कार्यरत डायरेक्टरी %1 read करने योग्य नहीं है। + Python job %2 के लिए कार्यरत डायरेक्टरी %1 रीड करने योग्य नहीं है। Bad main script file - मुख्य script फ़ाइल गलत है + मुख्य स्क्रिप्ट फ़ाइल गलत है Main script file %1 for python job %2 is not readable. - Python job %2 के लिए मुख्य script फ़ाइल %1 read करने योग्य नहीं है। + Python job %2 के लिए मुख्य स्क्रिप्ट फ़ाइल %1 रीड करने योग्य नहीं है। Boost.Python error in job "%1". - Job "%1" में Boost.Python error। + Job "%1" में Boost.Python त्रुटि। @@ -169,19 +169,19 @@ &Back - &वापस + वापस (&B) &Next - &आगे + आगे (&N) &Cancel - &रद्द करें + रद्द करें (&C) @@ -192,22 +192,22 @@ Calamares Initialization Failed - + Calamares का आरंभीकरण विफल रहा %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. - + %1 को इंस्टॉल नहीं किया जा सका। Calamares सारे विन्यस्त मापांकों को लोड करने में विफल रहा। इस समस्या का कारण लिनक्स-वितरण द्वारा Calamares के उपयोग-संबंधी कोई त्रुटि है। <br/>The following modules could not be loaded: - + <br/>निम्नलिखित मापांक लोड नहीं हो सकें : &Install - + इंस्टॉल करें (&I) @@ -224,17 +224,17 @@ The installer will quit and all changes will be lost. &Yes - &हाँ + हाँ (&Y) &No - &नहीं + नहीं (&N) &Close - &बंद करें + बंद करें (&C) @@ -249,27 +249,27 @@ The installer will quit and all changes will be lost. &Install now - अभी &इंस्टॉल करें + अभी इंस्टॉल करें (&I) Go &back - &वापस जाएँ + वापस जाएँ (&b) &Done - हो &गया + पूर्ण हुआ (&D) The installation is complete. Close the installer. - इंस्टॉल पूर्ण हुआ।अब इंस्टॉलर को बंद करें। + इंस्टॉल पूर्ण हुआ। अब इंस्टॉलर को बंद करें। Error - Error + त्रुटि @@ -287,7 +287,7 @@ The installer will quit and all changes will be lost. unparseable Python error - unparseable Python error + unparseable Python त्रुटि @@ -297,7 +297,7 @@ The installer will quit and all changes will be lost. Unfetchable Python error. - Unfetchable Python error. + Unfetchable Python त्रुटि। @@ -328,7 +328,7 @@ The installer will quit and all changes will be lost. This program will ask you some questions and set up %2 on your computer. - यह program आपसे कुछ सवाल पूछेगा व आपके कंप्यूटर पर %2 को सेट करेगा। + यह प्रोग्राम आपसे कुछ सवाल पूछ आपके कंप्यूटर पर %2 को सेट करेगा। @@ -338,7 +338,7 @@ The installer will quit and all changes will be lost. System requirements - सिस्टम की आवश्यकताएँ + सिस्टम इंस्टॉल हेतु आवश्यकताएँ @@ -361,7 +361,7 @@ The installer will quit and all changes will be lost. Boot loader location: - Boot loader की location: + बूट लोडर का स्थान: @@ -371,7 +371,7 @@ The installer will quit and all changes will be lost. Select storage de&vice: - Storage डि&वाइस चुनें : + डिवाइस चुनें (&v): @@ -414,7 +414,7 @@ The installer will quit and all changes will be lost. This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - इस storage डिवाइस पर लगता है कि कोई ऑपरेटिंग सिस्टम नहीं है। आप क्या करना चाहेंगे?<br/>आप storage डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। + इस डिवाइस पर लगता है कि कोई ऑपरेटिंग सिस्टम नहीं है। आप क्या करना चाहेंगे?<br/>आप डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। @@ -422,12 +422,12 @@ The installer will quit and all changes will be lost. <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - <strong>डिस्क erase करें</strong><br/>इससे चयनित storage डिवाइस पर मौजूद सारा डाटा <font color="red">delete</font> हो जाएगा। + <strong>डिस्क का सारा डाटा हटाएँ</strong><br/>इससे चयनित डिवाइस पर मौजूद सारा डाटा <font color="red">हटा</font>हो जाएगा। This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - इस storage डिवाइस पर %1 है। आप क्या करना चाहेंगे?<br/>आप storage डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। + इस डिवाइस पर %1 है। आप क्या करना चाहेंगे?<br/>आप डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। @@ -443,17 +443,17 @@ The installer will quit and all changes will be lost. <strong>Replace a partition</strong><br/>Replaces a partition with %1. - <strong>विभाजन को बदलें</strong>एक विभाजन को %1 से बदलें। + <strong>विभाजन को बदलें</strong><br/>एक विभाजन को %1 से बदलें। This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - इस storage डिवाइस पर पहले से एक ऑपरेटिंग सिस्टम है। आप क्या करना चाहेंगे?<br/>आप storage डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। + इस डिवाइस पर पहले से एक ऑपरेटिंग सिस्टम है। आप क्या करना चाहेंगे?<br/>आप डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - इस storage डिवाइस पर एक से अधिक ऑपरेटिंग सिस्टम है। आप क्या करना चाहेंगे?<br/>आप storage डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। + इस डिवाइस पर एक से अधिक ऑपरेटिंग सिस्टम है। आप क्या करना चाहेंगे?<br/>आप डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। @@ -461,17 +461,17 @@ The installer will quit and all changes will be lost. Clear mounts for partitioning operations on %1 - %1 पर विभाजन कार्य हेतु mount हटाएँ + %1 पर विभाजन कार्य हेतु माउंट हटाएँ Clearing mounts for partitioning operations on %1. - %1 पर विभाजन कार्य हेतु mount हटाएँ जा रहे हैं। + %1 पर विभाजन कार्य हेतु माउंट हटाएँ जा रहे हैं। Cleared all mounts for %1 - %1 के लिए सभी mount हटा दिए गए + %1 के लिए सभी माउंट हटा दिए गए @@ -479,22 +479,22 @@ The installer will quit and all changes will be lost. Clear all temporary mounts. - सभी अस्थायी mount हटाएँ। + सभी अस्थायी माउंट हटाएँ। Clearing all temporary mounts. - सभी अस्थायी mount हटाएँ जा रहे हैं। + सभी अस्थायी माउंट हटाएँ जा रहे हैं। Cannot get list of temporary mounts. - अस्थाई mount की सूची नहीं मिली। + अस्थाई माउंट की सूची नहीं मिली। Cleared all temporary mounts. - सभी अस्थायी mount हटा दिए गए। + सभी अस्थायी माउंट हटा दिए गए। @@ -503,7 +503,7 @@ The installer will quit and all changes will be lost. Could not run command. - कमांड run नहीं की जा सकी। + कमांड चलाई नहीं जा सकी। @@ -534,32 +534,32 @@ The installer will quit and all changes will be lost. MiB - MiB + MiB Partition &Type: - विभाजन का प्र&कार : + विभाजन का प्रकार (&T): &Primary - &मुख्य + मुख्य (&P) E&xtended - + विस्तृत (&x) Fi&le System: - + फ़ाइल सिस्टम (&l): LVM LV name - + LVM LV का नाम @@ -569,22 +569,22 @@ The installer will quit and all changes will be lost. &Mount Point: - + माउंट पॉइंट (&M): Si&ze: - + आकार (&z): En&crypt - En&crypt + एन्क्रिप्ट (&c) Logical - + तार्किक @@ -599,7 +599,7 @@ The installer will quit and all changes will be lost. Mountpoint already in use. Please select another one. - + माउंट पॉइंट पहले से उपयोग में है । कृपया दूसरा चुनें। @@ -607,22 +607,22 @@ The installer will quit and all changes will be lost. Create new %2MB partition on %4 (%3) with file system %1. - + फ़ाइल सिस्टम %1 के साथ %4 (%3) पर नया %2MB का विभाजन बनाएँ। Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - + फ़ाइल सिस्टम <strong>%1</strong> के साथ <strong>%4</strong> (%3) पर नया <strong>%2MB</strong> का विभाजन बनाएँ। Creating new %1 partition on %2. - + %2 पर नया %1 विभाजन बनाया जा रहा है। The installer failed to create partition on disk '%1'. - + इंस्टॉलर डिस्क '%1' पर विभाजन बनाने में विफल रहा। @@ -630,17 +630,17 @@ The installer will quit and all changes will be lost. Create Partition Table - + विभाजन तालिका बनाएँ Creating a new partition table will delete all existing data on the disk. - + नई विभाजन तालिका बनाने से डिस्क पर मौजूद सारा डाटा हट जाएगा। What kind of partition table do you want to create? - + आप किस तरह की विभाजन तालिका बनाना चाहते हैं? @@ -650,7 +650,7 @@ The installer will quit and all changes will be lost. GUID Partition Table (GPT) - GUID Partition Table (GPT) + GUID विभाजन तालिका (GPT) @@ -658,22 +658,22 @@ The installer will quit and all changes will be lost. Create new %1 partition table on %2. - + %2 पर नई %1 विभाजन तालिका बनाएँ। Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - + <strong>%2</strong> (%3) पर नई <strong>%1</strong> विभाजन तालिका बनाएँ। Creating new %1 partition table on %2. - + %2 पर नई %1 विभाजन तालिका बनाई जा रही है। The installer failed to create a partition table on %1. - + इंस्टॉलर डिस्क '%1' पर विभाजन तालिका बनाने में विफल रहा। @@ -681,37 +681,37 @@ The installer will quit and all changes will be lost. Create user %1 - + %1 उपयोक्ता बनाएँ Create user <strong>%1</strong>. - + <strong>%1</strong> उपयोक्ता बनाएँ। Creating user %1. - + %1 उपयोक्ता बनाया जा रहा है। Sudoers dir is not writable. - + Sudoers डायरेक्टरी राइट करने योग्य नहीं है। Cannot create sudoers file for writing. - + राइट हेतु sudoers फ़ाइल नहीं बन सकती। Cannot chmod sudoers file. - + sudoers फ़ाइल chmod नहीं की जा सकती। Cannot open groups file for reading. - + रीड हेतु groups फ़ाइल खोली नहीं जा सकती। @@ -719,22 +719,22 @@ The installer will quit and all changes will be lost. Delete partition %1. - + विभाजन %1 हटाएँ। Delete partition <strong>%1</strong>. - + विभाजन <strong>%1</strong> हटाएँ। Deleting partition %1. - + %1 विभाजन हटाया जा रहा है। The installer failed to delete partition %1. - + इंस्टॉलर विभाजन %1 को हटाने में विफल रहा । @@ -742,32 +742,32 @@ The installer will quit and all changes will be lost. The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + चयनित डिवाइस पर <strong>विभाजन तालिका</strong> का प्रकार।<br><br>विभाजन तालिका का प्रकार केवल विभाजन तालिका को हटा दुबारा बनाकर ही किया जा सकता है, इससे डिस्क पर मौजूद सभी डाटा नहीं नष्ट हो जाएगा।<br>अगर आप कुछ अलग नहीं चुनते तो यह इंस्टॉलर वर्तमान विभाजन तालिका उपयोग करेगा।<br>अगर सुनिश्चित नहीं है तो नए व आधुनिक सिस्टम के लिए GPT चुनें। This device has a <strong>%1</strong> partition table. - + इस डिवाइस में <strong>%1</strong> विभाजन तालिका है। This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - + यह एक <strong>लूप</strong> डिवाइस है।<br><br>इस छद्म-डिवाइस में कोई विभाजन तालिका नहीं है जो फ़ाइल को ब्लॉक डिवाइस के रूप में उपयोग कर सकें। इस तरह के सेटअप में केवल एक फ़ाइल सिस्टम होता है। This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - + इंस्टॉलर को चयनित डिवाइस पर <strong>कोई विभाजन तालिका नहीं मिली</strong>।<br><br> डिवाइस पर विभाजन तालिका नहीं है या फिर जो है वो ख़राब है या उसका प्रकार अज्ञात है। <br>इंस्टॉलर एक नई विभाजन तालिका, स्वतः व मैनुअल दोनों तरह से बना सकता है। <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br><strong>EFI</strong>वातावरण से शुरू होने वाले आधुनिक सिस्टम के लिए यही विभाजन तालिका सुझाई जाती है। <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - + <br><br>यह विभाजन तालिका केवल <strong>BIOS</strong>वातावरण से शुरू होने वाले पुराने सिस्टम के लिए ही सुझाई जाती है। बाकी सब के लिए GPT ही सबसे उपयुक्त है।<br><br><strong>चेतावनी:</strong> MBR विभाजन तालिका MS-DOS के समय की एक पुरानी तकनीक है।<br> इसमें केवल 4 <em>मुख्य</em> विभाजन बनाये जा सकते हैं, इनमें से एक <em>विस्तृत</em> हो सकता है व इसके अंदर भी कई <em>तार्किक</em> विभाजन हो सकते हैं। @@ -793,7 +793,7 @@ The installer will quit and all changes will be lost. Failed to open %1 - + %1 खोलने में विफल @@ -809,17 +809,17 @@ The installer will quit and all changes will be lost. Edit Existing Partition - + मौजूदा विभाजन को संपादित करें Content: - + सामग्री : &Keep - + रखें (&K) @@ -834,22 +834,22 @@ The installer will quit and all changes will be lost. &Mount Point: - + माउंट पॉइंट (&M): Si&ze: - + आकार (&z): MiB - MiB + MiB Fi&le System: - + फ़ाइल सिस्टम (&l): @@ -859,7 +859,7 @@ The installer will quit and all changes will be lost. Mountpoint already in use. Please select another one. - + माउंट पॉइंट पहले से उपयोग में है । कृपया दूसरा चुनें। @@ -872,22 +872,22 @@ The installer will quit and all changes will be lost. En&crypt system - + सिस्टम एन्क्रिप्ट करें (&E) Passphrase - + कूटशब्द Confirm passphrase - + कूटशब्द की पुष्टि करें Please enter the same passphrase in both boxes. - + कृपया दोनों स्थानों में समान कूटशब्द दर्ज करें। @@ -900,32 +900,32 @@ The installer will quit and all changes will be lost. Install %1 on <strong>new</strong> %2 system partition. - + <strong>नए</strong> %2 सिस्टम विभाजन पर %1 इंस्टॉल करें। Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + <strong>नया</strong> %2 विभाजन माउंट पॉइंट <strong>%1</strong> के साथ सेट करें। Install %2 on %3 system partition <strong>%1</strong>. - + %3 सिस्टम विभाजन <strong>%1</strong> पर %2 इंस्टॉल करें। Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + %3 विभाजन <strong>%1</strong> माउंट पॉइंट <strong>%2</strong> के साथ सेट करें। Install boot loader on <strong>%1</strong>. - + बूट लोडर <strong>%1</strong> पर इंस्टॉल करें। Setting up mount points. - + माउंट पॉइंट सेट किए जा रहे हैं। @@ -938,22 +938,22 @@ The installer will quit and all changes will be lost. <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - + <html><head/><body><p>इस विकल्प के चेक होने पर आपका सिस्टम तुरंत पुनः आरंभ हो जाएगा जब आप <span style=" font-style:italic;">हो गया</span>पर क्लिक करेंगे या इंस्टॉलर बंद करें ।</p></body></html> &Restart now - + अभी पुनः आरंभ करें (&R) <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>सब हो गया।</h1><br/>आपके कंप्यूटर पर %1 इंस्टॉल हो चुका है।<br/>अब आप आपने नए सिस्टम को पुनः आरंभ कर सकते है, या फिर %2 लाइव वातावरण उपयोग करना जारी रखें। <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. - + <h1>इंस्टॉल विफल रहा</h1><br/>%1 आपके कंप्यूटर पर इंस्टॉल नहीं हुआ।<br/>त्रुटि संदेश : %2। @@ -961,17 +961,17 @@ The installer will quit and all changes will be lost. Finish - + समाप्त करें Installation Complete - + इंस्टॉल पूर्ण हुआ The installation of %1 is complete. - + %1 का इंस्टॉल पूर्ण हुआ। @@ -979,22 +979,22 @@ The installer will quit and all changes will be lost. Format partition %1 (file system: %2, size: %3 MB) on %4. - + विभाजन %1 (फ़ाइल सिस्टम: %2, आकार: %3MB) को %4 पर फॉर्मेट करें। Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + फ़ाइल सिस्टम <strong>%2</strong> के साथ <strong>%3MB</strong> के विभाजन <strong>%1</strong> को फॉर्मेट करें। Formatting partition %1 with file system %2. - + फ़ाइल सिस्टम %2 के साथ विभाजन %1 को फॉर्मेट किया जा रहा है। The installer failed to format partition %1 on disk '%2'. - + इंस्टॉलर डिस्क '%2' पर विभाजन %1 को फॉर्मेट करने में विफल रहा। @@ -1002,12 +1002,12 @@ The installer will quit and all changes will be lost. Konsole not installed - + Konsole इंस्टॉल नहीं है Please install KDE Konsole and try again! - + कृपया केडीई Konsole इंस्टॉल कर, पुनः प्रयास करें। @@ -1028,12 +1028,12 @@ The installer will quit and all changes will be lost. Set keyboard model to %1.<br/> - + कुंजीपटल का मॉडल %1 सेट करें।<br/> Set keyboard layout to %1/%2. - + कुंजीपटल का अभिन्यास %1/%2 सेट करें। @@ -1041,7 +1041,7 @@ The installer will quit and all changes will be lost. Keyboard - कुंजीपटल + कुंजीपटल @@ -1049,22 +1049,22 @@ The installer will quit and all changes will be lost. System locale setting - + सिस्टम स्थानिकी सेटिंग्स The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. - + सिस्टम स्थानिकी सेटिंग कमांड लाइन के कुछ उपयोक्ता अंतरफलक तत्वों की भाषा व अक्षर सेट पर असर डालती है।<br/>मौजूदा सेटिंग है <strong>%1</strong>। &Cancel - &रद्द करें + रद्द करें (&C) &OK - + ठीक है (&O) @@ -1077,17 +1077,17 @@ The installer will quit and all changes will be lost. I accept the terms and conditions above. - + मैं उपर्युक्त नियम व शर्तें स्वीकार करता हूँ। <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + <h1>लाइसेंस अनुबंध</h1>यह लाइसेंस शर्तों के अधीन अमुक्त सॉफ्टवेयर को इंस्टॉल करेगा। Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + कृपया ऊपर दिए गए लक्षित उपयोक्ता लाइसेंस अनुबंध (EULAs) ध्यानपूर्वक पढ़ें।<br/> यदि आप शर्तों से असहमत है, तो सेटअप को ज़ारी नहीं रखा जा सकता। @@ -1097,44 +1097,44 @@ The installer will quit and all changes will be lost. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + कृपया ऊपर दिए गए लक्षित उपयोक्ता लाइसेंस अनुबंध (EULAs) ध्यानपूर्वक पढ़ें।<br/> यदि आप शर्तों से असहमत है, तो अमुक्त सॉफ्टवेयर इंस्टाल नहीं किया जाएगा व उनके मुक्त विकल्प उपयोग किए जाएँगे। <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 ड्राइवर</strong><br/>%2 द्वारा <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 ग्राफ़िक्स ड्राइवर</strong><br/><font color="Grey">%2 द्वारा</font> <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 ब्राउज़र प्लगिन</strong><br/><font color="Grey">%2 द्वारा</font> <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 कोडेक</strong><br/><font color="Grey">%2 द्वारा</font> <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1 पैकेज</strong><br/><font color="Grey">%2 द्वारा</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">%2 द्वारा</font> <a href="%1">view license agreement</a> - + <a href="%1">लाइसेंस अनुबंध देखें</a> @@ -1142,7 +1142,7 @@ The installer will quit and all changes will be lost. License - + लाइसेंस @@ -1150,33 +1150,33 @@ The installer will quit and all changes will be lost. The system language will be set to %1. - + सिस्टम भाषा %1 सेट की जाएगी। The numbers and dates locale will be set to %1. - + संख्या व दिनांक स्थानिकी %1 सेट की जाएगी। Region: - + क्षेत्र : Zone: - + क्षेत्र : &Change... - + बदलें (&C)... Set timezone to %1/%2.<br/> - + समय क्षेत्र %1%2 पर सेट करें।<br/> @@ -1190,12 +1190,12 @@ The installer will quit and all changes will be lost. Loading location data... - + स्थान संबंधी डाटा लोड किया जा रहा है... Location - + स्थान @@ -1203,12 +1203,12 @@ The installer will quit and all changes will be lost. Name - + नाम Description - + विवरण @@ -1226,7 +1226,7 @@ The installer will quit and all changes will be lost. Package selection - + पैकेज चयन @@ -1234,227 +1234,227 @@ The installer will quit and all changes will be lost. Password is too short - + कूटशब्द बहुत छोटा है Password is too long - + कूटशब्द बहुत लंबा है Password is too weak - + कूटशब्द बहुत कमज़ोर है Memory allocation error when setting '%1' - + '%1' सेट करते समय मेमोरी आवंटन त्रुटि Memory allocation error - + मेमोरी आवंटन त्रुटि The password is the same as the old one - + यह कूटशब्द पुराने वाला ही है The password is a palindrome - + कूटशब्द एक विलोमपद है The password differs with case changes only - + इसमें और पिछले कूटशब्द में केवल lower/upper case का फर्क है The password is too similar to the old one - + यह कूटशब्द पुराने वाले जैसा ही है The password contains the user name in some form - + इस कूटशब्द में किसी रूप में उपयोक्ता नाम है The password contains words from the real name of the user in some form - + इस कूटशब्द में किसी रूप में उपयोक्ता के असली नाम के शब्द शामिल है The password contains forbidden words in some form - + इस कूटशब्द में किसी रूप में वर्जित शब्द है The password contains less than %1 digits - + इस कूटशब्द में %1 से कम अंक हैं The password contains too few digits - + इस कूटशब्द में काफ़ी कम अंक हैं The password contains less than %1 uppercase letters - + इस कूटशब्द में %1 से कम uppercase अक्षर हैं The password contains too few uppercase letters - + इस कूटशब्द में काफ़ी कम uppercase अक्षर हैं The password contains less than %1 lowercase letters - + इस कूटशब्द में %1 से कम lowercase अक्षर हैं The password contains too few lowercase letters - + इस कूटशब्द में काफ़ी कम lowercase अक्षर हैं The password contains less than %1 non-alphanumeric characters - + इस कूटशब्द में %1 से कम ऐसे अक्षर हैं जो अक्षरांक नहीं हैं The password contains too few non-alphanumeric characters - + इस कूटशब्द में काफ़ी कम अक्षरांक हैं The password is shorter than %1 characters - + कूटशब्द %1 अक्षरों से छोटा है The password is too short - + कूटशब्द बहुत छोटा है The password is just rotated old one - + यह कूटशब्द पुराने वाला ही है, बस घुमा रखा है The password contains less than %1 character classes - + इस कूटशब्द में %1 से कम अक्षर classes हैं The password does not contain enough character classes - + इस कूटशब्द में नाकाफ़ी अक्षर classes हैं The password contains more than %1 same characters consecutively - + कूटशब्द में %1 से अधिक समान अक्षर लगातार हैं The password contains too many same characters consecutively - + कूटशब्द में काफ़ी ज्यादा समान अक्षर लगातार हैं The password contains more than %1 characters of the same class consecutively - + कूटशब्द में %1 से अधिक समान अक्षर classes लगातार हैं The password contains too many characters of the same class consecutively - + कूटशब्द में काफ़ी ज्यादा एक ही class के अक्षर लगातार हैं The password contains monotonic sequence longer than %1 characters - + कूटशब्द में %1 अक्षरों से लंबा monotonic अनुक्रम है The password contains too long of a monotonic character sequence - + कूटशब्द में काफ़ी बड़ा monotonic अनुक्रम है No password supplied - + कोई कूटशब्द नहीं दिया गया Cannot obtain random numbers from the RNG device - + RNG डिवाइस से यादृच्छिक अंक नहीं मिल सके Password generation failed - required entropy too low for settings - + कूटशब्द बनाना विफल रहा - सेटिंग्स के लिए आवश्यक entropy बहुत कम है The password fails the dictionary check - %1 - + कूटशब्द शब्दकोश की जाँच में विफल रहा - %1 The password fails the dictionary check - + कूटशब्द शब्दकोश की जाँच में विफल रहा Unknown setting - %1 - + अज्ञात सेटिंग- %1 Unknown setting - + अज्ञात सेटिंग Bad integer value of setting - %1 - + सेटिंग का गलत integer मान - %1 Bad integer value - + गलत integer मान Setting %1 is not of integer type - + सेटिंग %1 integer नहीं है Setting is not of integer type - + सेटिंग integer नहीं है Setting %1 is not of string type - + सेटिंग %1 string नहीं है Setting is not of string type - + सेटिंग string नहीं है Opening the configuration file failed - + विन्यास फ़ाइल खोलने में विफल @@ -1464,12 +1464,12 @@ The installer will quit and all changes will be lost. Fatal failure - + गंभीर विफलता Unknown error - + अज्ञात त्रुटि @@ -1482,12 +1482,12 @@ The installer will quit and all changes will be lost. Keyboard Model: - + कुंजीपटल का मॉडल Type here to test your keyboard - + अपना कुंजीपटल जाँचने के लिए यहां टाइप करें @@ -1500,64 +1500,64 @@ The installer will quit and all changes will be lost. What is your name? - + आपका नाम क्या है? What name do you want to use to log in? - + लॉग इन के लिए आप किस नाम का उपयोग करना चाहते हैं? font-weight: normal - font-weight: normal + मुद्रलिपि-weight: सामान्य <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - + <small>अगर इस कंप्यूटर को एक से अधिक व्यक्ति उपयोग करते हैं, तो आप इंस्टॉल के उपरांत एकाधिक अकाउंट सेट कर सकते हैं।</small> Choose a password to keep your account safe. - + अपना अकाउंट सुरक्षित रखने के लिए पासवर्ड चुनें । <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> - + <small>एक ही कूटशब्द दो बार दर्ज़ करें, ताकि उसे टाइप त्रुटि के लिए जांचा जा सके । एक अच्छे कूटशब्द में अक्षर, अंक व विराम चिन्हों का मेल होता है, उसमें कम-से-कम आठ अक्षर होने चाहिए, और उसे नियमित अंतराल पर बदलते रहना चाहिए।</small> What is the name of this computer? - + इस कंप्यूटर का नाम ? <small>This name will be used if you make the computer visible to others on a network.</small> - + <small>यदि आपका कंप्यूटर किसी नेटवर्क पर दृश्यमान होता है, तो यह नाम उपयोग किया जाएगा।</small> Log in automatically without asking for the password. - + कूटशब्द बिना पूछे ही स्वतः लॉग इन करें। Use the same password for the administrator account. - + प्रबंधक अकाउंट के लिए भी यही कूटशब्द उपयोग करें। Choose a password for the administrator account. - + प्रबंधक अकाउंट के लिए कूटशब्द चुनें। <small>Enter the same password twice, so that it can be checked for typing errors.</small> - + <small>समान कूटशब्द दो बार दर्ज करें, ताकि जाँच की जा सके कि कहीं टाइपिंग त्रुटि तो नहीं है।</small> @@ -1565,37 +1565,37 @@ The installer will quit and all changes will be lost. Root - Root + रुट Home - + होम Boot - Boot + बूट EFI system - + EFI सिस्टम Swap - + स्वैप New partition for %1 - + %1 के लिए नया विभाजन New partition - + नया विभाजन @@ -1609,33 +1609,33 @@ The installer will quit and all changes will be lost. Free Space - + खाली स्पेस New partition - + नया विभाजन Name - + नाम File System - + फ़ाइल सिस्टम Mount Point - + माउंट पॉइंट Size - + आकार @@ -1648,47 +1648,47 @@ The installer will quit and all changes will be lost. Storage de&vice: - + डिवाइस (&v): &Revert All Changes - + सभी बदलाव उलट दें (&R) New Partition &Table - + नई विभाजन तालिका (&T) Cre&ate - + बनाएँ (&a) &Edit - + संपादित करें (&E) &Delete - + हटाएँ (D) Install boot &loader on: - + बूट लोडर इंस्टॉल करें (&l) : Are you sure you want to create a new partition table on %1? - + क्या आप वाकई %1 पर एक नई विभाजन तालिका बनाना चाहते हैं? Can not create new partition - + नया विभाजन नहीं बनाया जा सकता @@ -1711,47 +1711,47 @@ The installer will quit and all changes will be lost. Install %1 <strong>alongside</strong> another operating system. - + %1 को दूसरे ऑपरेटिंग सिस्टम <strong>के साथ</strong> इंस्टॉल करें। <strong>Erase</strong> disk and install %1. - + डिस्क का सारा डाटा<strong>हटाकर</strong> कर %1 इंस्टॉल करें। <strong>Replace</strong> a partition with %1. - + विभाजन को %1 से <strong>बदलें</strong>। <strong>Manual</strong> partitioning. - + <strong>मैनुअल</strong> विभाजन। Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + डिस्क <strong>%2</strong> (%3) पर %1 को दूसरे ऑपरेटिंग सिस्टम <strong>के साथ</strong> इंस्टॉल करें। <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + डिस्क <strong>%2</strong> (%3) <strong>erase</strong> कर %1 इंस्टॉल करें। <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + डिस्क <strong>%2</strong> (%3) के विभाजन को %1 से <strong>बदलें</strong>। <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + डिस्क <strong>%1</strong> (%2) पर <strong>मैनुअल</strong> विभाजन। Disk <strong>%1</strong> (%2) - + डिस्क <strong>%1</strong> (%2) @@ -1766,32 +1766,32 @@ The installer will quit and all changes will be lost. No EFI system partition configured - + कोई EFI सिस्टम विभाजन विन्यस्त नहीं है An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + %1 को शुरू करने हेतु EFI सिस्टम विभाजन ज़रूरी है।<br/><br/>EFI सिस्टम विभाजन को विन्यस्त करने के लिए, वापस जाएँ और चुनें या बनाएँ एक FAT32 फ़ाइल सिस्टम जिस पर <strong>esp</strong> flag चालू हो व माउंट पॉइंट <strong>%2</strong>हो।<br/><br/>आप बिना सेट भी आगे बढ़ सकते है पर सिस्टम चालू नहीं होगा। EFI system partition flag not set - + EFI सिस्टम विभाजन flag सेट नहीं है An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + %1 को शुरू करने हेतु EFI सिस्टम विभाजन ज़रूरी है।<br/><br/>विभाजन को माउंट पॉइंट <strong>%2</strong> के साथ विन्यस्त किया गया परंतु उसका <strong>esp</strong> flag सेट नहीं था।<br/> Flag सेट करने के लिए, वापस जाएँ और विभाजन को edit करें।<br/><br/>आप बिना सेट भी आगे बढ़ सकते है पर सिस्टम चालू नहीं होगा। Boot partition not encrypted - + बूट विभाजन एन्क्रिप्टेड नहीं है A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + एन्क्रिप्टेड रुट विभाजन के साथ एक अलग बूट विभाजन भी सेट किया गया था, पर बूट विभाजन एन्क्रिप्टेड नहीं था।<br/><br/> इस तरह का सेटअप सुरक्षित नहीं होता क्योंकि सिस्टम फ़ाइल एन्क्रिप्टेड विभाजन पर होती हैं।<br/>आप चाहे तो जारी रख सकते है, पर फिर फ़ाइल सिस्टम बाद में सिस्टम स्टार्टअप के दौरान अनलॉक होगा।<br/> विभाजन को एन्क्रिप्ट करने के लिए वापस जाकर उसे दोबारा बनाएँ व विभाजन निर्माण विंडो में<strong>एन्क्रिप्ट</strong> चुनें। @@ -1799,13 +1799,13 @@ The installer will quit and all changes will be lost. Plasma Look-and-Feel Job - Plasma Look-and-Feel Job + प्लाज़्मा Look-and-Feel Job Could not select KDE Plasma Look-and-Feel package - + KDE प्लाज़्मा का Look-and-Feel पैकेज चुना नहीं जा सका @@ -1823,7 +1823,7 @@ The installer will quit and all changes will be lost. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + कृपया KDE प्लाज़्मा डेस्कटॉप के लिए एक look-and-feel चुनें। आप अभी इस चरण को छोड़ सकते हैं व सिस्टम इंस्टॉल हो जाने के बाद इसे सेट कर सकते हैं। look-and-feel विकल्पों पर क्लिक कर आप चयनित look-and-feel का तुरंत ही पूर्वावलोकन कर सकते हैं। @@ -1831,7 +1831,7 @@ The installer will quit and all changes will be lost. Look-and-Feel - + Look-and-Feel @@ -1858,64 +1858,67 @@ The installer will quit and all changes will be lost. There was no output from the command. - + +कमांड से कोई आउटपुट नहीं मिला। Output: - + +आउटपुट: + External command crashed. - + बाह्य कमांड क्रैश हो गई। Command <i>%1</i> crashed. - + कमांड <i>%1</i> क्रैश हो गई। External command failed to start. - + बाह्य​ कमांड शुरू होने में विफल। Command <i>%1</i> failed to start. - + कमांड <i>%1</i> शुरू होने में विफल। Internal error when starting command. - + कमांड शुरू करते समय आंतरिक त्रुटि। Bad parameters for process job call. - + प्रक्रिया कार्य कॉल के लिए गलत मापदंड। External command failed to finish. - + बाहरी कमांड समाप्त करने में विफल। Command <i>%1</i> failed to finish in %2 seconds. - + कमांड <i>%1</i> %2 सेकंड में समाप्त होने में विफल। External command finished with errors. - + बाहरी कमांड त्रुटि के साथ समाप्त। Command <i>%1</i> finished with exit code %2. - + कमांड <i>%1</i> exit कोड %2 के साथ समाप्त। @@ -1923,18 +1926,18 @@ Output: Default Keyboard Model - + डिफ़ॉल्ट कुंजीपटल मॉडल Default - + डिफ़ॉल्ट unknown - + अज्ञात @@ -1949,12 +1952,12 @@ Output: swap - + स्वैप Unpartitioned space or unknown partition table - + अविभाजित स्पेस या अज्ञात विभाजन तालिका @@ -1967,59 +1970,59 @@ Output: Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - + चुनें कि %1 को कहाँ इंस्टॉल करना है।<br/><font color="red">चेतावनी: </font> यह चयनित विभाजन पर मौजूद सभी फ़ाइलों को हटा देगा। The selected item does not appear to be a valid partition. - + चयनित आइटम एक मान्य विभाजन नहीं है। %1 cannot be installed on empty space. Please select an existing partition. - + %1 को खाली स्पेस पर इंस्टॉल नहीं किया जा सकता।कृपया कोई मौजूदा विभाजन चुनें। %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - + %1 को विस्तृत विभाजन पर इंस्टॉल नहीं किया जा सकता।कृपया कोई मौजूदा मुख्य या तार्किक विभाजन चुनें। %1 cannot be installed on this partition. - + इस विभाजन पर %1 इंस्टॉल नहीं किया जा सकता। Data partition (%1) - + डाटा विभाजन (%1) Unknown system partition (%1) - + अज्ञात सिस्टम विभाजन (%1) %1 system partition (%2) - + %1 सिस्टम विभाजन (%2) <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - + <strong>%4</strong><br/><br/>%2 के लिए विभाजन %1 बहुत छोटा है।कृपया कम-से-कम %3 GiB की क्षमता वाला कोई विभाजन चुनें । <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + <strong>%2</strong><br/><br/>इस सिस्टम पर कहीं भी कोई EFI सिस्टम विभाजन नहीं मिला। कृपया वापस जाएँ व %1 को सेट करने के लिए मैनुअल रूप से विभाजन करें। <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - + <strong>%3</strong><br/><br/>%2 पर %1 इंस्टॉल किया जाएगा।<br/><font color="red">चेतावनी : </font>विभाजन %2 पर मौजूद सारा डाटा हटा दिया जाएगा। @@ -2042,52 +2045,52 @@ Output: has at least %1 GB available drive space - + %1GB स्पेस ड्राइव पर उपलब्ध है There is not enough drive space. At least %1 GB is required. - + ड्राइव में पर्याप्त स्पेस नहीं है। कम-से-कम %1GB होना ज़रूरी है। has at least %1 GB working memory - + %1GB मेमोरी है The system does not have enough working memory. At least %1 GB is required. - + सिस्टम में पर्याप्त मेमोरी नहीं है। कम-से-कम %1GB होनी ज़रूरी है। is plugged in to a power source - + बिजली से कनेक्ट है। The system is not plugged in to a power source. - + सिस्टम बिजली से कनेक्ट नहीं है। is connected to the Internet - + इंटरनेट से कनेक्ट है। The system is not connected to the Internet. - + सिस्टम इंटरनेट से कनेक्ट नहीं है। The installer is not running with administrator rights. - + इंस्टॉलर के पास प्रबंधक अधिकार नहीं है। The screen is too small to display the installer. - + इंस्टॉलर दिखाने के लिए स्क्रीन बहुत छोटी है। @@ -2095,22 +2098,22 @@ Output: Resize partition %1. - + विभाजन %1 का आकार बदलें। Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. - + <strong>%2MB</strong> के <strong>%1</strong> विभाजन का आकार बदलकर <strong>%3MB</strong> किया जा रहा है। Resizing %2MB partition %1 to %3MB. - + %2MB के %1 विभाजन का आकार बदलकर %3MB किया जा रहा है। The installer failed to resize partition %1 on disk '%2'. - + इंस्टॉलर डिस्क '%2' पर विभाजन %1 का आकर बदलने में विफल रहा। @@ -2118,12 +2121,12 @@ Output: Scanning storage devices... - + डिवाइस स्कैन किए जा रहे हैं... Partitioning - + विभाजन @@ -2131,29 +2134,29 @@ Output: Set hostname %1 - + होस्ट नाम %1 सेट करें। Set hostname <strong>%1</strong>. - + होस्ट नाम <strong>%1</strong> सेट करें। Setting hostname %1. - + होस्ट नाम %1 सेट हो रहा है। Internal Error - + आंतरिक त्रुटि Cannot write hostname to target system - + लक्षित सिस्टम पर होस्ट नाम लिखा नहीं जा सकता। @@ -2161,29 +2164,29 @@ Output: Set keyboard model to %1, layout to %2-%3 - + कुंजीपटल का मॉडल %1, अभिन्यास %2-%3 सेट करें। Failed to write keyboard configuration for the virtual console. - + Virtual console हेतु कुंजीपटल की सेटिंग्स राइट करने में विफल रहा। Failed to write to %1 - + %1 पर राइट करने में विफल Failed to write keyboard configuration for X11. - + X11 हेतु कुंजीपटल की सेटिंग्स राइट करने में विफल रहा। Failed to write keyboard configuration to existing /etc/default directory. - + मौजूदा /etc /default डायरेक्टरी में कुंजीपटल की सेटिंग्स write करने में विफल रहा। @@ -2191,82 +2194,82 @@ Output: Set flags on partition %1. - + %1 विभाजन पर flag सेट करें। Set flags on %1MB %2 partition. - + %1MB के %2 विभाजन पर flag सेट करें। Set flags on new partition. - + नए विभाजन पर flag सेट करें। Clear flags on partition <strong>%1</strong>. - + <strong>%1</strong> विभाजन पर से flag हटाएँ। Clear flags on %1MB <strong>%2</strong> partition. - + %1MB के <strong>%2</strong> विभाजन पर से flag हटाएँ। Clear flags on new partition. - + नए विभाजन पर से flag हटाएँ। Flag partition <strong>%1</strong> as <strong>%2</strong>. - + <strong>%1</strong> विभाजन पर <strong>%2</strong> का flag लगाएँ। Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. - + %1MB के <strong>%2</strong> विभाजन पर <strong>%3</strong> का flag लगाएँ। Flag new partition as <strong>%1</strong>. - + नए विभाजन पर<strong>%1</strong>का flag लगाएँ। Clearing flags on partition <strong>%1</strong>. - + <strong>%1</strong> विभाजन पर से flag हटाएँ जा रहे हैं। Clearing flags on %1MB <strong>%2</strong> partition. - + %1MB के <strong>%2</strong> विभाजन पर से flag हटाएँ जा रहे हैं। Clearing flags on new partition. - + नए विभाजन पर से flag हटाएँ जा रहे हैं। Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + <strong>%1</strong> विभाजन पर flag <strong>%2</strong> सेट किए जा रहे हैं। Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. - + %1MB के <strong>%2</strong> विभाजन पर flag <strong>%3</strong> सेट किए जा रहे हैं। Setting flags <strong>%1</strong> on new partition. - + नए विभाजन पर flag <strong>%1</strong> सेट किए जा रहे हैं। The installer failed to set flags on partition %1. - + इंस्टॉलर विभाजन %1 पर flag सेट करने में विफल रहा। @@ -2274,42 +2277,42 @@ Output: Set password for user %1 - + उपयोक्ता %1 के लिए पासवर्ड सेट करें। Setting password for user %1. - + उपयोक्ता %1 के लिए पासवर्ड सेट किया जा रहा है। Bad destination system path. - + लक्ष्य का सिस्टम पथ गलत है। rootMountPoint is %1 - + rootMountPoint %1 है Cannot disable root account. - + रुट अकाउंट निष्क्रिय नहीं किया जा सकता । passwd terminated with error code %1. - + passwd त्रुटि कोड %1 के साथ समाप्त। Cannot set password for user %1. - + उपयोक्ता %1 के लिए पासवर्ड सेट नहीं किया जा सकता। usermod terminated with error code %1. - + usermod त्रुटि कोड %1 के साथ समाप्त। @@ -2317,37 +2320,37 @@ Output: Set timezone to %1/%2 - + समय क्षेत्र %1%2 पर सेट करें Cannot access selected timezone path. - + चयनित समय क्षेत्र पथ तक पहुँचा नहीं जा सका। Bad path: %1 - + गलत पथ: %1 Cannot set timezone. - + समय क्षेत्र सेट नहीं हो सका। Link creation failed, target: %1; link name: %2 - + लिंक बनाना विफल, लक्ष्य: %1; लिंक का नाम: %2 Cannot set timezone, - + समय क्षेत्र सेट नहीं हो सका। Cannot open /etc/timezone for writing - + राइट करने हेतु /etc /timezone खोला नहीं जा सका। @@ -2364,7 +2367,7 @@ Output: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -2372,7 +2375,7 @@ Output: This is an overview of what will happen once you start the install procedure. - + यह अवलोकन है कि इंस्टॉल शुरू होने के बाद क्या होगा। @@ -2380,7 +2383,7 @@ Output: Summary - सारांश + सार @@ -2505,33 +2508,33 @@ Output: Your username is too long. - + आपका उपयोक्ता नाम बहुत लंबा है। Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + आपके होस्ट नाम में अमान्य अक्षर हैं । केवल lowercase अक्षरों व संख्याओं की ही अनुमति है । Your hostname is too short. - + आपका होस्ट नाम बहुत छोटा है। Your hostname is too long. - + आपका होस्ट नाम बहुत लंबा है। Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - + आपके होस्ट नाम में अमान्य अक्षर हैं । केवल अक्षरों, संख्याओं व dash की ही अनुमति है । Your passwords do not match! - + आपके कूटशब्द मेल नहीं खाते! @@ -2539,7 +2542,7 @@ Output: Users - + उपयोक्ता @@ -2552,27 +2555,27 @@ Output: &Language: - + भाषा (&L): &Release notes - + रिलीज़ नोट्स (&R) &Known issues - + ज्ञात समस्याएँ (&K) &Support - + सहायता (&S) &About - + बारे में (&A) @@ -2605,7 +2608,7 @@ Output: Welcome - स्वागतं + स्वागतं \ No newline at end of file diff --git a/lang/calamares_is.ts b/lang/calamares_is.ts index e4ae4228e..bda81784f 100644 --- a/lang/calamares_is.ts +++ b/lang/calamares_is.ts @@ -50,7 +50,7 @@ Blank Page - + Auð síða @@ -356,7 +356,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - <strong>Handvirk disksneiðing</strong><br/>Þú getur búið til eða breytt stærð disksneiða sjálf(ur). + <strong>Handvirk disksneiðing</strong><br/>Þú getur búið til eða breytt stærð disksneiða sjálft. @@ -1469,7 +1469,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Unknown error - + Óþekkt villa @@ -2582,7 +2582,7 @@ Output: <h1>Welcome to the Calamares installer for %1.</h1> - <h1>Velkomin(n) til Calamares uppsetningar fyrir %1</h1> + <h1>Velkomin til Calamares uppsetningar fyrir %1</h1> diff --git a/lang/calamares_it_IT.ts b/lang/calamares_it_IT.ts index 107597116..2d60d6920 100644 --- a/lang/calamares_it_IT.ts +++ b/lang/calamares_it_IT.ts @@ -50,7 +50,7 @@ Blank Page - + Pagina Vuota @@ -192,17 +192,17 @@ Calamares Initialization Failed - + Inizializzazione di Calamares Fallita %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. - + %1 non può essere installato. Calamares non è stato in grado di caricare tutti i moduli configurati. Questo è un problema del modo in cui Calamares viene utilizzato dalla distribuzione. <br/>The following modules could not be loaded: - + <br/>Non è stato possibile caricare il seguente modulo: @@ -1663,7 +1663,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Cre&ate - + Crea diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index 4e14afbfd..bafc53eee 100644 --- a/lang/calamares_ja.ts +++ b/lang/calamares_ja.ts @@ -50,7 +50,7 @@ Blank Page - + 空白のページ @@ -192,7 +192,7 @@ Calamares Initialization Failed - + Calamares によるインストールに失敗しました。 @@ -202,7 +202,7 @@ <br/>The following modules could not be loaded: - + <br/>以下のモジュールがロードできませんでした。: @@ -508,12 +508,12 @@ The installer will quit and all changes will be lost. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + コマンドがホスト環境で実行される際、rootのパスの情報が必要になりますが、root のマウントポイントが定義されていません。 The command needs to know the user's name, but no username is defined. - + ユーザー名が必要ですが、定義されていません。 @@ -1664,7 +1664,7 @@ The installer will quit and all changes will be lost. Cre&ate - + 作成(&a) @@ -1689,7 +1689,7 @@ The installer will quit and all changes will be lost. Can not create new partition - + 新しいパーティションを作成できません @@ -1840,7 +1840,7 @@ The installer will quit and all changes will be lost. Saving files for later ... - + 後でファイルを保存する... diff --git a/lang/calamares_ko.ts b/lang/calamares_ko.ts index 00bc40c82..1b0d2707d 100644 --- a/lang/calamares_ko.ts +++ b/lang/calamares_ko.ts @@ -4,17 +4,17 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + 이 시스템의 <strong>부트 환경</strong>입니다. <br> <br> 오래된 x86 시스템은 <strong>BIOS</strong>만을 지원합니다. <br> 최근 시스템은 주로 <strong>EFI</strong>을(를) 사용하지만, 호환 모드로 시작한 경우 BIOS로 나타날 수도 있습니다. This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - + 이 시스템은 <strong>EFI</strong> 부트 환경에서 시동되었습니다. <br> <br> EFI 환경에서의 시동에 대해 설정하려면, <strong>EFI 시스템 파티션</strong>에 <strong>GRUB</strong>나 <strong>systemd-boot</strong>와 같은 부트 로더 애플리케이션을 배치해야 합니다. 이 과정은 자동으로 진행됩니다. 단, 수동 파티셔닝을 선택할 경우, EFI 시스템 파티션을 직접 선택 또는 작성해야 합니다. This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - + 이 시스템은 <strong>BIOS 부트 환경</strong>에서 시동되었습니다. <br> <br> BIOS 환경에서의 시동에 대해 설정하려면, 파티션의 시작 위치 또는 파티션 테이블의 시작 위치 근처(권장)에 있는 <strong>마스터 부트 레코드</strong>에 <strong>GRUB</strong>과 같은 부트 로더를 설치해야 합니다. 이 과정은 자동으로 진행됩니다. 단, 수동 파티셔닝을 선택할 경우, 사용자가 직접 설정을 해야 합니다. @@ -50,7 +50,7 @@ Blank Page - + 빈 페이지 @@ -58,7 +58,7 @@ Form - + 형식 @@ -84,7 +84,7 @@ none - + 없음 @@ -123,12 +123,12 @@ Run command %1 %2 - + 커맨드 %1 %2 실행 Running command %1 %2 - + 커맨드 %1 %2 실행 중 @@ -192,17 +192,17 @@ Calamares Initialization Failed - + Calamares 초기화 실패 %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. - + %1 이(가) 설치될 수 없습니다. Calamares가 모든 구성된 모듈을 불러올 수 없었습니다. 이것은 Calamares가 분포에 의해 사용되는 방식에서 비롯된 문제입니다. <br/>The following modules could not be loaded: - + 다음 모듈 불러오기 실패: @@ -244,7 +244,7 @@ The installer will quit and all changes will be lost. The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + %1 인스톨러가 %2를 설치하기 위해 사용자의 디스크의 내용을 변경하려고 합니다. <br/> <strong>이 변경 작업은 되돌릴 수 없습니다.</strong> @@ -346,7 +346,7 @@ The installer will quit and all changes will be lost. Form - + 형식 @@ -867,7 +867,7 @@ The installer will quit and all changes will be lost. Form - + 형식 @@ -933,7 +933,7 @@ The installer will quit and all changes will be lost. Form - + 형식 @@ -1072,7 +1072,7 @@ The installer will quit and all changes will be lost. Form - + 형식 @@ -1477,7 +1477,7 @@ The installer will quit and all changes will be lost. Form - + 형식 @@ -1495,7 +1495,7 @@ The installer will quit and all changes will be lost. Form - + 형식 @@ -1643,7 +1643,7 @@ The installer will quit and all changes will be lost. Form - + 형식 @@ -1813,7 +1813,7 @@ The installer will quit and all changes will be lost. Form - + 형식 @@ -1965,7 +1965,7 @@ Output: Form - + 형식 @@ -2443,7 +2443,7 @@ Output: Form - + 형식 @@ -2550,7 +2550,7 @@ Output: Form - + 형식 diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index c83013ce3..84302178a 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -50,7 +50,7 @@ Blank Page - + Página em Branco @@ -192,17 +192,17 @@ Calamares Initialization Failed - + Falha na inicialização do Calamares %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. - + %1 não pôde ser instalado. O Calamares não conseguiu carregar todos os módulos configurados. Este é um problema com o modo em que o Calamares está sendo utilizado pela distribuição. <br/>The following modules could not be loaded: - + <br/>Os seguintes módulos não puderam ser carregados: @@ -319,7 +319,7 @@ O instalador será fechado e todas as alterações serão perdidas. This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Este computador não satisfaz os requisitos mínimos para instalar %1. -A instalação não pode continuar.<a href="#details">Detalhes...</a> +A instalação não pode continuar. Detalhes: @@ -515,7 +515,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. The command needs to know the user's name, but no username is defined. - + O comando precisa saber do nome do usuário, mas nenhum nome de usuário foi definido. @@ -1665,7 +1665,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Cre&ate - + Cri&ar @@ -1841,17 +1841,17 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Saving files for later ... - + Salvando arquivos para mais tarde... No files configured to save for later. - + Nenhum arquivo configurado para ser salvo mais tarde. Not all of the configured files could be preserved. - + Nem todos os arquivos configurados puderam ser preservados. diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts index 626b4cc44..2c05acdc9 100644 --- a/lang/calamares_ru.ts +++ b/lang/calamares_ru.ts @@ -50,7 +50,7 @@ Blank Page - + Пустая страница @@ -192,7 +192,7 @@ Calamares Initialization Failed - + Ошибка инициализации Calamares @@ -202,7 +202,7 @@ <br/>The following modules could not be loaded: - + <br/>Не удалось загрузить следующие модули: @@ -512,7 +512,7 @@ The installer will quit and all changes will be lost. The command needs to know the user's name, but no username is defined. - + Команде необходимо знать имя пользователя, но оно не задано. @@ -937,7 +937,7 @@ The installer will quit and all changes will be lost. <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - + <html><head/><body><p>Если этот флажок установлен, ваша система будет перезагружена сразу после нажатия кнопки <span style=" font-style:italic;">Готово</span> или закрытия инсталлятора.</p></body></html> @@ -952,7 +952,7 @@ The installer will quit and all changes will be lost. <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. - + <h1>Сбой установки</h1><br/>Не удалось установить %1 на ваш компьютер.<br/>Сообщение об ошибке: %2. @@ -1343,7 +1343,7 @@ The installer will quit and all changes will be lost. The password is just rotated old one - + Новый пароль — это просто перевёрнутый старый diff --git a/lang/calamares_uk.ts b/lang/calamares_uk.ts index 22a486857..2c4225f56 100644 --- a/lang/calamares_uk.ts +++ b/lang/calamares_uk.ts @@ -1244,7 +1244,7 @@ The installer will quit and all changes will be lost. Password is too weak - + Пароль надто ненадійний @@ -1274,12 +1274,13 @@ The installer will quit and all changes will be lost. The password is too similar to the old one - + Цей пароль надто схожий на попередній The password contains the user name in some form - + Цей пароль якимось чином містить ім'я користувача + @@ -1339,7 +1340,7 @@ The installer will quit and all changes will be lost. The password is too short - + Цей пароль занадто короткий @@ -1469,7 +1470,7 @@ The installer will quit and all changes will be lost. Unknown error - + Невідома помилка From 28f0ba4eeac2763031abe5e7b350bc1f9a11d8a9 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 6 Aug 2018 05:15:48 -0400 Subject: [PATCH 374/385] i18n: [desktop] Automatic merge of Transifex translations --- calamares.desktop | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/calamares.desktop b/calamares.desktop index 42373404d..9c865b60b 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -57,9 +57,10 @@ GenericName[fr]=Installateur système Comment[fr]=Calamares - Installateur système Name[fr]=Installer le système Name[gl]=Instalación do Sistema -Icon[he]=קלמארס +Icon[he]=calamares GenericName[he]=אשף התקנה -Comment[he]=קלמארס - אשף התקנה +Comment[he]=Calamares - אשף התקנה +Name[he]=התקנת מערכת Icon[hi]=calamares GenericName[hi]=सिस्टम इंस्टॉलर Comment[hi]=Calamares — सिस्टम इंस्टॉलर From 8c32fc75a1fdf71422fd1a594b07ae27746342f9 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 6 Aug 2018 05:15:49 -0400 Subject: [PATCH 375/385] i18n: [dummypythonqt] Automatic merge of Transifex translations --- .../lang/pt_BR/LC_MESSAGES/dummypythonqt.mo | Bin 993 -> 1007 bytes .../lang/pt_BR/LC_MESSAGES/dummypythonqt.po | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo index e0ede8c3629bb0469631ab500bac106fba377f53..96931f5ac7940f97334c3071edcafadb3943f177 100644 GIT binary patch delta 98 zcmaFJ{+@k8i0Ls#28IM67GPjtP-kXfFa^>UK$;Io=K*PHAYBWkX98(UAb;z|PHjdm mGhIUq1p{*{6SK+t7(ID?6N?TnPs~vW&de!G+|0&wn-KsPz7wSY delta 84 zcmaFQ{*Zk_i0KYS28IM67GPjtkYr|HFa^?DK$;IoCje<_Ae|4TyMeSNkiUFmr#2&( Ysji`!f}x?6iNWN3jGmiCnQk!x01*`pzyJUM diff --git a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po index 4ed4e7c28..211949087 100644 --- a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-16 11:40-0400\n" +"POT-Creation-Date: 2018-06-18 07:46-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Guilherme , 2017\n" +"Last-Translator: Guilherme Marçal Silva , 2017\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" From 12b668f4ee02c2cae67fbbd4abacb98558b76c88 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 6 Aug 2018 05:15:49 -0400 Subject: [PATCH 376/385] i18n: [python] Automatic merge of Transifex translations --- lang/python/he/LC_MESSAGES/python.mo | Bin 1366 -> 1561 bytes lang/python/he/LC_MESSAGES/python.po | 26 +++++++++++++------------- lang/python/is/LC_MESSAGES/python.mo | Bin 1066 -> 959 bytes lang/python/is/LC_MESSAGES/python.po | 8 ++++---- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/lang/python/he/LC_MESSAGES/python.mo b/lang/python/he/LC_MESSAGES/python.mo index c374160129dd364fc87203d66d9cc3beeb22ebbc..17ce90b750edae9a7c269d111a59dfce2a7729fd 100644 GIT binary patch delta 636 zcmaKoyGjE=6ozM$tR`Lx?=h%M6WB%AC|X+h0#;%nh_Jc|2_zdx)*@A2KqPTD$YRuJ zk;KK$7tq32@KlO|m5qhiS@=)lEnqy$&$n~VnK}Q=ZJ#?(ydMr!7$O8sK?XDkT|gop zpdsiH8iigz8I;=jX>bv_7&r?W;2c;2$G~e)_Ay4_4Ayu4_MCTcfw4_C8DK1o!V0(t zCO{O}8+Zk(GGiL}4B`wHgm7Lfgy~)grSHJDR^WWrQ@(i`Su-=)9n<28R65S{g}fEd z*mbEES=Vz}ldmTAWKQ4G%@kkCC$)k|UT*kyrBIbze06HtFaG)E8hM-!sEkyVD&%R5 zjs>Yf9VLfT34NV)^x2Xe>Hq5gdmS!1zb9}EIKzlC*5ij}qWv}&lr zg@=|pT4B(kQ)&`CoKyA3ZilCC-BHD~WqEv}OI`T?rxw;~co`2y8yr?#+Q;un`wC4u OY+V3PC5*asq_Gb>p!skB delta 408 zcmZXOze>Yk6i07rJ}W8(rLI7N zI3laKjF<5yuH!a#aw7M*M*lD|%74WT`Y&7(*^mWSHjP)JU!, 2017\n" +"Last-Translator: Yaron Shahrabani , 2017\n" "Language-Team: Hebrew (https://www.transifex.com/calamares/teams/20061/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,7 +20,7 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "ניתוק עיגון מערכות קבצים." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." @@ -32,31 +32,31 @@ msgstr "צעד דמה של Python {}" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "חולל מספר סידורי של המכונה." +msgstr "לייצר מספר סידורי של המכונה." #: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "מעבד חבילות (%(count)d/%(total)d)" +msgstr "החבילות מעובדות (%(count)d/%(total)d)" #: src/modules/packages/main.py:64 src/modules/packages/main.py:74 msgid "Install packages." -msgstr "התקן חבילות." +msgstr "התקנת חבילות." #: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "מתקין חבילה אחת." -msgstr[1] "מתקין %(num)d חבילות." -msgstr[2] "מתקין %(num)d חבילות." -msgstr[3] "מתקין %(num)d חבילות." +msgstr[0] "מותקנת חבילה אחת." +msgstr[1] "מותקנות %(num)d חבילות." +msgstr[2] "מותקנות %(num)d חבילות." +msgstr[3] "מותקנות %(num)d חבילות." #: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "מסיר חבילה אחת." -msgstr[1] "מסיר %(num)d חבילות." -msgstr[2] "מסיר %(num)d חבילות." -msgstr[3] "מסיר %(num)d חבילות." +msgstr[0] "מתבצעת הסרה של חבילה אחת." +msgstr[1] "מתבצעת הסרה של %(num)d חבילות." +msgstr[2] "מתבצעת הסרה של %(num)d חבילות." +msgstr[3] "מתבצעת הסרה של %(num)d חבילות." diff --git a/lang/python/is/LC_MESSAGES/python.mo b/lang/python/is/LC_MESSAGES/python.mo index 12b4043e36654c46edaa7cee8c4a61c7b09f9428..ae0776f9481aef5044b245f9bd4fd5adf2db2fb3 100644 GIT binary patch delta 231 zcmZ3*v7f#Eo)F7a1|VPqVi_Rz0b*_-t^r~YSOLU>K)e!&O@Mee5NiYR2Ou^8Vi`sT z22mjG3#8WraWW7K0Qthq3=DceS_Md}0_k8VzY<7`0r@L{G*GD~0}GJD1jHZ!6k}io zvk(NxVIVM>g>k8HXkKo9XLQsT`m>>Q1CSPAV5n!93S{U36)XeNszCZGl>Zw@ z1NAbn12HQQ1Gx-rK+FQfAjg6L6NG}0E~UA-l?nxwB^mj73R(F{dJHHc#U-f)3e~j? u?x}gHMTsS;3b~2N8JTQ(sk)gddJ|VH-JHz0fzcX83$cbk%$O|1JPiQutU%KM diff --git a/lang/python/is/LC_MESSAGES/python.po b/lang/python/is/LC_MESSAGES/python.po index eeb2989b9..bf607b024 100644 --- a/lang/python/is/LC_MESSAGES/python.po +++ b/lang/python/is/LC_MESSAGES/python.po @@ -20,19 +20,19 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Aftengja skráarkerfi." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "Dummy python job." +msgstr "" #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "Dummy python step {}" +msgstr "" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "Generate machine-id." +msgstr "" #: src/modules/packages/main.py:62 #, python-format From 1cbfa9d693a0f00fd3e007604cc65e9ad69abe54 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 8 Aug 2018 04:49:13 -0400 Subject: [PATCH 377/385] [partition] Simplify code for sizing --- .../partition/core/PartitionActions.cpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index d654edf12..999847e37 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -114,19 +114,11 @@ doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPass defaultFsType = "ext4"; // Partition sizes are expressed in MiB, should be multiples of - // the logical sector size (usually 512B). - int uefisys_part_size = 0; - int empty_space_size = 0; - if ( isEfi ) - { - uefisys_part_size = 300; - empty_space_size = 2; - } - else - { - // we start with a 1MiB offset before the first partition - empty_space_size = 1; - } + // the logical sector size (usually 512B). EFI starts with 2MiB + // empty and a 300MiB EFI boot partition, while BIOS starts at + // the 1MiB boundary (usually sector 2048). + int uefisys_part_size = isEfi ? 300 : 0; + int empty_space_size = isEfi ? 2 : 1; qint64 firstFreeSector = MiBtoBytes(empty_space_size) / dev->logicalSize() + 1; From 59fea041b601af942833880506822a50ec755407 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 8 Aug 2018 05:16:46 -0400 Subject: [PATCH 378/385] [partition] Fix up calculations of sectors in auto-partition - Calculating first free sector had an off-by-one so that partitioning would start at 2049. - EFI boot partition grew 1 sector larger than desired. - While here, align everything to 1MiB boundaries as well. FIXES #1008 --- .../partition/core/PartitionActions.cpp | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index 999847e37..87c9d6e72 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -101,6 +101,24 @@ swapSuggestion( const qint64 availableSpaceB ) return suggestedSwapSizeB; } +constexpr qint64 +alignBytesToBlockSize( qint64 bytes, qint64 blocksize ) +{ + Q_ASSERT( bytes >= 0 ); + Q_ASSERT( blocksize > 0 ); + qint64 blocks = bytes / blocksize; + Q_ASSERT( blocks >= 0 ); + + if ( blocks * blocksize != bytes ) + ++blocks; + return blocks * blocksize; +} + +constexpr qint64 +bytesToSectors( qint64 bytes, qint64 blocksize ) +{ + return alignBytesToBlockSize( alignBytesToBlockSize( bytes, blocksize), MiBtoBytes(1) ) / blocksize; +} void doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPassphrase ) @@ -120,11 +138,20 @@ doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPass int uefisys_part_size = isEfi ? 300 : 0; int empty_space_size = isEfi ? 2 : 1; - qint64 firstFreeSector = MiBtoBytes(empty_space_size) / dev->logicalSize() + 1; + // Since sectors count from 0, if the space is 2048 sectors in size, + // the first free sector has number 2048 (and there are 2048 sectors + // before that one, numbered 0..2047). + qint64 firstFreeSector = bytesToSectors( MiBtoBytes(empty_space_size), dev->logicalSize() ); if ( isEfi ) { - qint64 lastSector = firstFreeSector + ( MiBtoBytes(uefisys_part_size) / dev->logicalSize() ); + qint64 efiSectorCount = bytesToSectors( MiBtoBytes(uefisys_part_size), dev->logicalSize() ); + Q_ASSERT( efiSectorCount > 0 ); + + // Since sectors count from 0, and this partition is created starting + // at firstFreeSector, we need efiSectorCount sectors, numbered + // firstFreeSector..firstFreeSector+efiSectorCount-1. + qint64 lastSector = firstFreeSector + efiSectorCount - 1; core->createPartitionTable( dev, PartitionTable::gpt ); Partition* efiPartition = KPMHelpers::createNewPartition( dev->partitionTable(), From 8ed26e537f73959e295e82b4cc51540478393204 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 8 Aug 2018 05:26:55 -0400 Subject: [PATCH 379/385] [partition] Fix swap maximum size - The existing calculation comment says "maximum 10% of disk" but the calculation itself uses 110%. --- src/modules/partition/core/PartitionActions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index 87c9d6e72..130f5ab01 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -90,7 +90,7 @@ swapSuggestion( const qint64 availableSpaceB ) suggestedSwapSizeB *= overestimationFactor; // don't use more than 10% of available space - qreal maxSwapDiskRatio = 1.10; + qreal maxSwapDiskRatio = 0.10; qint64 maxSwapSizeB = availableSpaceB * maxSwapDiskRatio; if ( suggestedSwapSizeB > maxSwapSizeB ) suggestedSwapSizeB = maxSwapSizeB; From f10bab8a3af9c3504cf566468e5e4f9ec219a0fe Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 8 Aug 2018 05:29:19 -0400 Subject: [PATCH 380/385] [partition] Minor code-styling --- src/modules/partition/core/PartitionActions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index 130f5ab01..6db23c00a 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -96,7 +96,7 @@ swapSuggestion( const qint64 availableSpaceB ) suggestedSwapSizeB = maxSwapSizeB; } - cDebug() << "Suggested swap size:" << suggestedSwapSizeB / 1024. / 1024. /1024. << "GiB"; + cDebug() << "Suggested swap size:" << suggestedSwapSizeB / 1024. / 1024. / 1024. << "GiB"; return suggestedSwapSizeB; } From 238a1e812f999fad6f98fff750cf4a086cec8495 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 8 Aug 2018 05:58:41 -0400 Subject: [PATCH 381/385] [partition] Reduce the fudge-factor for swap size - Reported by Bill Auger (I think), a 15GiB disk wouldn't hold a 8.9GiB root plus 4GiB swap -- due to 10% overprovisioning of swap, plus the 2.1GiB fudge factor. --- src/modules/partition/core/PartitionActions.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index 6db23c00a..68ad85cf2 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -181,8 +181,11 @@ doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPass { qint64 availableSpaceB = ( dev->totalLogical() - firstFreeSector ) * dev->logicalSize(); suggestedSwapSizeB = swapSuggestion( availableSpaceB ); + // Space required by this installation is what the distro claims is needed + // (via global configuration) plus the swap size plus a fudge factor of + // 0.6GiB (this was 2.1GiB up to Calamares 3.2.2). qint64 requiredSpaceB = - GiBtoBytes( gs->value( "requiredStorageGB" ).toDouble() + 0.1 + 2.0 ) + + GiBtoBytes( gs->value( "requiredStorageGB" ).toDouble() + 0.6 ) + suggestedSwapSizeB; // If there is enough room for ESP + root + swap, create swap, otherwise don't. From bc4407360d8be0fe6460093fdc5666be17ba9002 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 6 Aug 2018 11:06:28 -0400 Subject: [PATCH 382/385] Add a changelog --- CHANGES | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 CHANGES diff --git a/CHANGES b/CHANGES new file mode 100644 index 000000000..7fd9a3cff --- /dev/null +++ b/CHANGES @@ -0,0 +1,49 @@ +This is the changelog for Calamares. For each release, the major changes and +contributors are listed. Note that Calamares does not have a historical +changelog -- this log starts with version 3.2.0. The release notes on the +website will have to do for older versions. + += 3.2.2 (unreleased) = + +== Core == + + * Contributions from the following people (alphabetically by first name): + - artoo@cromnix.org + - Caio Carvalho + * Example configurations are **no longer installed** by default. + The default setting for *INSTALL_CONFIG* has changed. Distributions + are strongly encouraged to write their own configuration files and + not rely on the example configuration files. Example configurations + may change unpredictably. + * It is now possible to express module dependencies through the + *requiredModules* key in `module.desc`. All of the required modules + for a given module must occur in the sequence **before** the module + requiring them. None of the core modules use this facility. + * The search paths for QML files, branding descriptors and module + descriptors have been revamped and now self-document in the log. + * A new `ci/RELEASE.sh` script has been added to streamline releases; + it is not guaranteed to work anywhere in particular though. + +== Modules == + + * When multiple modules are mutually exclusive, or don't make sense + to enable concurrectly, a new `USE_` framework has been added + to CMake to simplify the selection of modules. This is in addition + to the existing `SKIP_MODULES` mechanism. + * A new module has been added to the core which can configure openrc + services. To make services configuration consistent: + - The *services* module has been **renamed** *services-systemd*, + - The openrc module is named *services-openrc*, + - At CMake time, it is possible to select all of the services modules, + or one specific one, by setting the *USE_services* CMake variable. + By default, all of the modules are built and installed. + * The systemd-services module can now disable targets and mask both + targets and services (which will allow you to break the system with + a bad configuration). The configuration is a little more flexible + because a service (or target) name can be used on its own with + sensible defaults. + +**3.2.1** (2018-06-25) + + +**3.2.0** (2018-05-17) From b6077ce9bcd425cfc2f58268833abf9aeb68703d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 8 Aug 2018 06:01:51 -0400 Subject: [PATCH 383/385] Changelog: document partitioning fixes --- CHANGES | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES b/CHANGES index 7fd9a3cff..6bcb46e72 100644 --- a/CHANGES +++ b/CHANGES @@ -30,6 +30,9 @@ website will have to do for older versions. to enable concurrectly, a new `USE_` framework has been added to CMake to simplify the selection of modules. This is in addition to the existing `SKIP_MODULES` mechanism. + * Various off-by-one-sector errors in the automatic partitioning + mode have been corrected. In addition, swap space is calculated + a little more conservatively. * A new module has been added to the core which can configure openrc services. To make services configuration consistent: - The *services* module has been **renamed** *services-systemd*, From f73f4bdea23c5a31a5ad5a77f1a559fa293f49ca Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 10 Aug 2018 07:09:28 -0400 Subject: [PATCH 384/385] CI: for now, switch off PythonQt --- ci/travis-config.sh | 12 ++++++++++++ ci/travis-continuous.sh | 2 +- ci/travis-coverity.sh | 2 +- ci/travis.sh | 2 ++ 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 ci/travis-config.sh diff --git a/ci/travis-config.sh b/ci/travis-config.sh new file mode 100644 index 000000000..85e6a9790 --- /dev/null +++ b/ci/travis-config.sh @@ -0,0 +1,12 @@ +# Build configuration on Travis. +# +# Defines a CMAKE_ARGS variable for use with cmake +# +# This file is sourced by travis.sh, and exports the variables +# to the environment. +CMAKE_ARGS="\ + -DWEBVIEW_FORCE_WEBKIT=1 \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ + -DWITH_PYTHONQT=OFF" + +export CMAKE_ARGS diff --git a/ci/travis-continuous.sh b/ci/travis-continuous.sh index 02994be74..42cfb4bd3 100755 --- a/ci/travis-continuous.sh +++ b/ci/travis-continuous.sh @@ -12,4 +12,4 @@ test -f $SRCDIR/CMakeLists.txt || exit 1 cd $BUILDDIR || exit 1 -cmake -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON $SRCDIR && make -j2 && make install DESTDIR=/build/INSTALL_ROOT +cmake $CMAKE_ARGS $SRCDIR && make -j2 && make install DESTDIR=/build/INSTALL_ROOT diff --git a/ci/travis-coverity.sh b/ci/travis-coverity.sh index 07da4ce1a..c9495cf56 100755 --- a/ci/travis-coverity.sh +++ b/ci/travis-coverity.sh @@ -21,7 +21,7 @@ tar xvf coverity_tool.tar.gz -C "$BUILDDIR/coveritytool" --strip-components 2 export PATH="$BUILDDIR/coveritytool/bin:$PATH" -cmake -DCMAKE_BUILD_TYPE=Debug -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON $SRCDIR || exit 1 +cmake -DCMAKE_BUILD_TYPE=Debug $CMAKE_ARGS $SRCDIR || exit 1 cov-build --dir cov-int make -j2 tar caf calamares-ci.tar.xz cov-int diff --git a/ci/travis.sh b/ci/travis.sh index c8ac49f5d..364923b9e 100755 --- a/ci/travis.sh +++ b/ci/travis.sh @@ -12,6 +12,8 @@ test -d "$D" || exit 1 test -x "$D/travis-continuous.sh" || exit 1 test -x "$D/travis-coverity.sh" || exit 1 +test -f "$D/travis-common.sh" && . "$D/travis-config.sh" + if test "$TRAVIS_EVENT_TYPE" = "cron" ; then exec "$D/travis-coverity.sh" else From f94625443396b4cbadb2170ae572951dd61d18b9 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 10 Aug 2018 07:47:09 -0400 Subject: [PATCH 385/385] [branding] Document compiling .ts files FIXES #1003 --- src/branding/README.md | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/branding/README.md b/src/branding/README.md index f85ad8f67..1d816911e 100644 --- a/src/branding/README.md +++ b/src/branding/README.md @@ -44,6 +44,15 @@ file) should be enclosed in this form for translations text: qsTr("This is an example text.") ``` +If you use CMake for preparing branding for packaging, the macro +`calamares_add_branding_subdirectory()`` (see also *Project Layout*, +below) will convert the source `.ts` files to their compiled form). +If you are packaging the branding by hand, use +``` + lrelease file_en.ts [file_en_GB.ts ..] +``` +with all the language suffixes to *file*. + ## Presentation The default QML classes provided by Calamares can be used for a simple @@ -105,13 +114,6 @@ will have a top-level `CMakeLists.txt` that includes some boilerplate to find Calamares, and then adds a subdirectory which contains the actual branding component. -Adding the subdirectory can be done as follows: - - - If the directory contains files only, and optionally has a single - subdirectory lang/ which contains the translation files for the - component, then `calamares_add_branding_subdirectory()` can be - used, which takes only the name of the subdirectory. - The file layout in a typical branding component repository is: ``` @@ -127,9 +129,19 @@ The file layout in a typical branding component repository is: ... ``` +Adding the subdirectory can be done as follows: + + - If the directory contains files only, and optionally has a single + subdirectory lang/ which contains the translation files for the + component, then `calamares_add_branding_subdirectory()` can be + used, which takes only the name of the subdirectory. - If the branding component has many files which are organized into subdirectories, use the SUBDIRECTORIES argument to the CMake function to additionally install files from those subdirectories. For example, if the component places all of its images in an `img/` subdirectory, then call `calamares_add_branding_subdirectory( ... SUBDIRECTORIES img)`. It is a bad idea to include `lang/` in the SUBDIRECTORIES list. + - The `.ts` files from the `lang/` subdirectory need be be compiled + to `.qm` files before being installed. The CMake macro's do this + automatically. For manual packaging, use `lrelease` to compile + the files.