From 604851fc9c42b44b667597fc883c326530caa4a8 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 20 Dec 2023 15:13:29 +0800 Subject: [PATCH 01/66] Fix custom filament tab missing bug Fixed #3135 --- resources/web/guide/22/22.css | 5 +- resources/web/guide/22/index.html | 27 ++++- resources/web/guide/23/23.css | 99 ++++++++++++++++++- resources/web/guide/23/index.html | 159 ++++++++++++++++++++++++++++-- 4 files changed, 274 insertions(+), 16 deletions(-) diff --git a/resources/web/guide/22/22.css b/resources/web/guide/22/22.css index 51b3ec6e52..0a542a4645 100644 --- a/resources/web/guide/22/22.css +++ b/resources/web/guide/22/22.css @@ -32,6 +32,7 @@ input #ItemSelectArea { + flex: 0 0 40px; height:40px; border-top: 1px solid #009688; display: flex; @@ -46,7 +47,7 @@ input #ItemBlockArea { - flex: 1; + flex: 1 0 236px; display:flex; overflow-x:auto; flex-wrap:wrap; @@ -59,7 +60,7 @@ input .MItem { - width: 220px; + min-width: 220px; height: 32px; } diff --git a/resources/web/guide/22/index.html b/resources/web/guide/22/index.html index 0b0bd54739..6e379d2a0b 100644 --- a/resources/web/guide/22/index.html +++ b/resources/web/guide/22/index.html @@ -19,7 +19,7 @@
Filament Selection
-
+
printer
@@ -33,7 +33,15 @@
Bambulab BBL-3DP-001-V4-normal
Bambulab BBL-3DP-001-V4-normal
Bambulab BBL-3DP-001-V5-normal
-
Bambulab BBL-3DP-001-V4-normal
--> +
Bambulab BBL-3DP-001-V4-normal
+
Bambulab BBL-3DP-001-V5-normal
+
Bambulab BBL-3DP-001-V4-normal
+
Bambulab BBL-3DP-001-V4-normal
+
Bambulab BBL-3DP-001-V5-normal
+
Bambulab BBL-3DP-001-V4-normal
+
Bambulab BBL-3DP-001-V4-normal
+
Bambulab BBL-3DP-001-V5-normal
+
Bambulab BBL-3DP-001-V4-normal
-->
@@ -46,7 +54,13 @@
ABS
TPU
PA6+CF
-
N/A
--> +
N/A
+
PLA
+
PET
+
ABS
+
TPU
+
PA6+CF
+
N/A
-->
@@ -58,7 +72,12 @@
BBL
eSUN
Kexcelled
-
Polymaker
--> +
Polymaker
+
Unknown
+
BBL
+
eSUN
+
Kexcelled
+
Polymaker
--> diff --git a/resources/web/guide/23/23.css b/resources/web/guide/23/23.css index 368b61e55e..de2ca9f3e8 100644 --- a/resources/web/guide/23/23.css +++ b/resources/web/guide/23/23.css @@ -32,6 +32,7 @@ input #ItemSelectArea { + flex: 0 0 40px; height:40px; border-top: 1px solid #009688; display: flex; @@ -46,7 +47,6 @@ input #ItemBlockArea { - flex: 1; display:flex; overflow-x:auto; flex-wrap:wrap; @@ -55,11 +55,13 @@ input align-items: flex-start; align-content:flex-start; line-height: 32px; + height: 100%; + flex:1 0 236px; } .MItem { - width: 220px; + min-width: 220px; height: 32px; } @@ -111,3 +113,96 @@ input display: flex; justify-content:space-around; } + +#SystemFilamentsArea +{ + display: none; + flex-direction: column; +} + +#CFilament_Btn_Area +{ + display: flex; + align-items: center; + height: 30px; +} + +#Title +{ + margin: 0px 40px; + border-bottom: 1px solid #000; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; +} + +#Title div +{ + cursor: pointer; + font-size: 24px; +} + +#Title div.TitleSelected +{ + height: calc(100% - 6px); + display: flex; + align-items: center; + border-bottom: 6px solid #00AE42; +} + +#Title div.TitleUnselected +{ + height: 100%; + display: flex; + align-items: center; + color: #000; +} + +#CustomFilamentsArea +{ + display: flex; + flex-direction: column; + height: 100%; +} + +#CFilament_List +{ + display:flex; + overflow-x:auto; + flex-wrap:wrap; + flex-direction: column; + justify-content:flex-start; + align-items: flex-start; + align-content:flex-start; + line-height: 32px; + + height: 100%; +} + +.CFilament_Item +{ + display: flex; + align-items: center; + margin-right: 30px; +} + +.CFilament_Name +{ + width: 220px; + overflow: hidden; + white-space: nowrap; /* ?????? */ + text-overflow: ellipsis; /* ????????? */ +} + +.CFilament_EditBtn +{ + cursor: pointer; + width: 20px; + height: 20px; +} + +.CFilament_EditBtn:hover +{ + +} \ No newline at end of file diff --git a/resources/web/guide/23/index.html b/resources/web/guide/23/index.html index 84d6206481..30a6ef989d 100644 --- a/resources/web/guide/23/index.html +++ b/resources/web/guide/23/index.html @@ -7,7 +7,6 @@ - @@ -17,10 +16,12 @@
-
Filament Selection
+
System Filaments
+
Custom Filaments
-
- +
+ +
printer
@@ -32,8 +33,7 @@
Bambulab BBL-3DP-001-V5-normal
Bambulab BBL-3DP-001-V4-normal
Bambulab BBL-3DP-001-V4-normal
-
Bambulab BBL-3DP-001-V5-normal
-
Bambulab BBL-3DP-001-V4-normal
--> +
Bambulab BBL-3DP-001-V5-normal
-->
@@ -46,7 +46,7 @@
ABS
TPU
PA6+CF
-
N/A
--> +
N/A
-->
@@ -58,7 +58,8 @@
BBL
eSUN
Kexcelled
-
Polymaker
--> +
Polymaker
+
Unknown
-->
@@ -126,6 +127,148 @@
Geneic TPU83
Geneic TPU87
--> + + + +
+
+
Create New
+
+
+ +
+
From 69602d24fc37c19527d36bd8fbedcb0ffe830390 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 20 Dec 2023 17:53:12 +0800 Subject: [PATCH 02/66] Add more built-in models: Disc/Torus/Bunny --- resources/handy_models/Disc.stl | Bin 72084 -> 0 bytes resources/handy_models/bunny.stl | Bin 0 -> 2635884 bytes resources/handy_models/helper_disk.stl | Bin 0 -> 37284 bytes resources/handy_models/torus.stl | Bin 0 -> 153684 bytes src/slic3r/GUI/GUI_Factories.cpp | 60 ++++++++++++++++--------- src/slic3r/GUI/GUI_Factories.hpp | 2 + src/slic3r/GUI/GUI_ObjectList.cpp | 16 ++++--- 7 files changed, 51 insertions(+), 27 deletions(-) delete mode 100644 resources/handy_models/Disc.stl create mode 100644 resources/handy_models/bunny.stl create mode 100644 resources/handy_models/helper_disk.stl create mode 100644 resources/handy_models/torus.stl diff --git a/resources/handy_models/Disc.stl b/resources/handy_models/Disc.stl deleted file mode 100644 index f19bf81fff5a7924a7a9f129cc568673aa13dd47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72084 zcmb`Qef(}!S?1Tl&W{|m7+(TkCPaf70+Vn=vBTNm5uXU~K+4ov|bJjnzKcBsR z_qq4=z4yA#^Lu%o{c`V={{Jp--x}-LDy99FTvK|_x3(;=zjMR?jRpDrOYHwNg8ii?;pn)fe1;!2o7TNEP?dBVr}QajAVg{V%pGA6Ink1yM@y#0IhF(J$;Uu}@8^&x`!tv~hAT`&9JugE{=k%%hAoKKH{N|i{A zW9?(V=Wbb^`!Dn{AOZk1flWf0I5YggND_zaB-^`VhhVb-(qP z&6}_K)$Ah@QKgvk=@C$=5{YrFeSGz{wA}ye<@E@jvfh03)ds0rAKC}=A6}lg`Srhg zS@sc$s8XEkryc>7Dv=n++Q$KZo0dm^l|CkfIpwPjQnfxrF#neqowj+xE$3$+k%%hA zoKKH{N|i{AW9{SQPp9RcFVn|_FsFRAL8{h=2WK&46~ z#y)U@7(Mo5>cg?^XU;#sS=5CtbKg+)oFR}PtwPP zFsFR=-&aM|`VhhVrO$i)=I`y;k$prWsuXiRJpw9KA~BA&j~y>b%TuqRj|pK;`D%ky ztq&2*-}C>yY4i6Edr9^YiKtS{`Sb{=REfkm);=EhoV5IzkI=`2FsFRAL8{h=2WK&46~#a zBN9=inDg1MLqMfUB*wA!@x(`_<=!jlV?vlyzSq7+dkKgve%|kwWPWBOrs8Y=N z^a!X_iNrY8J}!K4T3&ZKeM|^*%2yktYJG@c{sC9~$>tXy{-3jtNJN!luk1^Yfabz5 zL;PDy?c*!=NXy~P^l@QJm@~fGAXV!_1oJoEdhO7O5UCQ0ajbn@ z^N)8fPJTUoObBzzR~w{ieTZQG9fw@E`2!z6JNt-4R4L|sdIVIeL}DCkANT+Gos0Wi zLLU>tobuHMsahW*n19@DJ|h+zKc=ij)w^ML1NACZVE#hg!%fJ&7}jAQNNQ#gm7z?Chf^;{QUN)!RA*W}-@n z<5K%L>w|YJ>^SPs8or>IMzPSJL`_c5r@*pgfORk zwLz-ZhY03h`m^_1-RHb#WFL`;D#e^nkAO;*NQ`6ccg?^XU;#sS=5CtbIId&+UuH-mx{G6Pys{l&>~O)%p;@{PGD0t$zL!CuJXz zh$_XLPmh2~l}LP zs8or>IMzPC^P$@ptFO_=gfORkwLz-ZhY04MeA>aQ8&5eQ`-ntTDdv271XQX-VjOE9 z=e^k2-FF8K@h(uH==6retRH{T`9BUstf93YY z{vW5031Lq8YJ*g*4-w42X*g_k%pWYWk4Qw7V$P>WK&46~#NU)`tk@-*?&Jt3!7U*+(RzN-^itBcM_x6609=_>rHueesZY)5nA`r+l?Rs@8`H z=AUrek*n8Ty)FBQL{ur}e0l^_szhQOYaj2u*X@gIeuq9LggND_4N|o}L@@u%V~<*W z_5H_YACZVE#hg!%fJ&7}jAQNN`kVJI?*D4~m=NZauQo{4`VhhVdCz~u>ho_oCi{p) zR4L|sdIVIeL}DCkA3Lw#yZG_*>0?5eQ@;Aoc~P}KL@@u*Hy*Rve$FGZk4Qw7V$P>W zK&46~#+VO~^vX4kam154PM?j@YB*wA! z@!Hq#UF4t}7ACZVE#hg!%fJ&7}jAQNNfBxv+#Xav!9}~iy^3?{ZS|1{qf8r@8tTs+R zIQxi1R4L|sdIVIeL}DCkAFsIE-o?}QqmKz;PWftsRILvY%)jWMC#^p5r3Ypok%%hA zoKKH{N|i{AW9{SH-`uk}?UoU#NW`zgfORkwLz-ZhY03h`Abh({r-FJn|(wgsuXiRJpw9KA~BA& zk1IdCXYtX`(8q)@r+l?Rs@8`H=0CdUsjFw)en9pSiKtS{`Sb{=REfkm);_kpbT|zw_v|AQQKgvk=@C$=5{YrFeZ1?1dloPs8or>IMzOPKXcC_8GTF$bIMm6q-uSLVE)Aa{_NFh z-`s~+~6T+PG)qh_VRqI0p^T&Sf^wlpsc&}dp z@4saN5mkzzNvTIbqe_V5Qu}z<5qlOlokAZI!kqKfzpsj_^&x_JKZmpOGc(yoB%(?& zXVfF0QY8}OSo_#GaL?jF$CvM`;3@0PM_+A_s`a6LF#q^_pSk)UFT5%Hh(uH=&h=A| zfJ&7}jAQNNNA9*~@$Y_;J|=`Y<*OfOD5}WK&46~ z#q7+dr~T0LRu6dbjoC*eqDnF6(<7i#B@*LU`*_+{ zb}ugbLHd{w=9I5CNY(lf!Te>nowa(%2{&XPk%%hAoKKH{N|i{AW9{Rj&+J}2^wzuO z_lXn2obuH_e-u^gLqy46d-m$QhhLX{L?Wsbb3XfZ2&hzv#5mSIp8t{EiwnL=9}~iy z^3?{ZS|1{qKl)WKSl#d2*JdA)h$_XLPmh2~l}L~O)%p;@{Bu5a&g#sk zd@%cnL{ur}e0l^_szhQOYai!dx_j}Fx6{XjFsFRAL8{h=2<8v{xfiXj_{NplMGRap&&ErI*sjgfORkwLz-ZhY04+_}GhAm+rVc`-ntTDdv271XQX- zVjOE9H=eV5vF%*?m=NZauYMm(QMEoqFz?sAuKY^Y>?0CUrI_>S5m2cTiE*rb9C_yM z#plnUj|pK;`D%kytq&2!$BrEDJ|h+saw|J>F0zHmwQ5s9c$T;|gupi-qmtiRMg?s4Mo#d{t}9}~hH^3?{Z zS|1{q_iOZ5e&v1k5s9c$%<1$9s8or>IMzPi`qC?$HfQx>+wnYm=NZauQo{4`VhhVgI@9S)nDKAAF_`~M3rLBr$<1gN+iay_VIrY z+P(O(575ViFsFRAL8{h=2@U1cl<7W zObBzzR~w{ieTZQG37^}!+PHFS_7RDwQq1}E2&hzv#5mSIHhyUL;<}6JV?vlyzWQ;7 zqH2AJVEzrKzG8LF-+kja>?;ycr5Ku&dIU78gg7p>kIlR9Ui`*6^f4jKIbUs%s`Vj) zdB10S<#%FdACZVE#hg)(fJ&7}jAQL%+lId{`A_sQAbIMm6q-uSLVE&EQT(COqs-v@yNJN!l&ZkE}rAj2mvG(!Y zw0m*#kI=`2FsFRAL8{h=2$&n-dQF4h(uH==8Sp-RpSivzkNnnY9FYJ-YDGG5LvF*1FF_XoNY>F zR##&us!M`(W6b>pBLBaS`xs}UN+eL5QSAe-GkT+7+k`;U;6tj`hY04&cS-gUiKtSH z((CUl5c%f-GeNDWQYC2eV&%(99eVI@{M?~83gQWYq``+&tq&2*m!H~Qpdt}ficvbH zK&)qiT2ZA+Bz!bR_3MG(gXoQdZ4&}XgAb`%A0n79zeTf;NJN!ll=gd6_?sF;{yTx0 zpjK3=5;S?S@}+t`@OKHlQLt@7AZhR+RqI0p^X0Ev_7RDwQjF3m1tS05#!OHvs#J-D zkH)BeJ@7sOy-~1jLLh1IAyw-`1oP!xM)nbjs8Wp5DFq_GkHSn)E2>n9gpbCk_JQ|p z=#7GH69P$t52;!oBA74l`m&EmM3rKcUcXPw-&b=4G|D5+iq7+d z2 zFcZ{@DpexkqcN&|;5ZC=qhQ;FK+@nts@8`H<`4PG%T^ya@WkvR5>cfXrBez-K2C+1 zpjK3=5(yuTQSAfA#n2lC+a?5(1|L$jK148o(^PNJN!ll=hx!Jdz3`AIHT^P%Elb z37WiE`BMGf#c^ZwM!~iTfuzBQRILvY%$K9i*+(RzN-;{O6o`CW9Wz0#s8S^oJ{qI? z^}um_^hUw934x@+hg7W(5zLqK2H8g>qDnDJ`@-`E`SqA1AWol+q3btD)1Oi(MTR4D@( zj8W|a*R7y83bsuMBn>{KYJG@czFhT^eMBOv6r*%XfymeOU?!*)RjNe7M`Kj`z;#6E zje>0x0!f1psahW*nE$q4h4i>1uFF0m5mky&+OJ(7iF} zM!~iTfuzBQRILvY%zH1H6*|O#ibPZ?MrpqnZ6xw_h?og#MU^U%@X;96K5*S5dZS?5 zgh0~ZL#oz?2|6r;4i6B>zpT_|RPT2ZA+Bz!bRwGUi}iry&LHX)ES z_>ijgA%gk;b>A~r+n;+=_7RDwQjF3m1tMRkicoP9(hsuZJiN`c7NO=Bjg6;-N4!bf9N`^eX6d$$;Dn-EAEd`Q*$5W)Ok ze)ja$iHGjZJ|YoSicvbHK=3+tp9yM3l`4_&(HPY}aNRt5qhQ;FK+@nts@8`H=Ktb1 zpS}9(&0GBaLb6Cim12}mDG>R-0?Y)pqDqxW_-Kr3AGnVJy-~1jLLh1IAyw-`1oMwO z;ndZ~S6j1>NJN!ll=hy2Ba!d(z)Vmps#J-DkH)C>f%{6(8wJ}Y1d;|HQnfxrFu(sd zPhLIhwRg`xA`w-JQQGg3ABlY54Q7H`QKd>Gd^AS258UU2-YD2MA&@lqkgD||g86cn zQ1%gts8Wp5-UF3)B7w;FL18AS6;-MPOcfXrBez-zHbvVL9M7#B@#XwquK}V6Gd+nY?}~B8hl9A`Vhf4-w4Y`Gd^AS&>w){I(HjNZCIpfOA5yhGL@;0O!p=S- z5mky&I;BA5`^+&D)QT!qBH^Pks(s+TcJxNUwh4ix!G~0>4-w4&!h060Z!HeXJ|YoS zicvbHK;--WF%#5^DpexkqcN&|pw9q$qhQ;FK+@nts@8`H=1=^{u=+ojAD(?gBB~Ul zv>$02iQI<)GeNDWQY8{T8l&0=`aYmH3bsuMBn>{KYJG@c{`sqIt0VsT$m}B$QKcBA z{fNLwq7+dSAX!>)l-i-D*K2;R4GPj z-{VN+J|&n5YDJYQk?_$N)jrS{1uM2q2qXn9 zgpbCk_JQw6yo%U1A&@lqkgD||f_Z#T;X4IXB%(?&N~aWv+*b)RL9M7#B@#XwquK|4 zL*St0 zn-EAEd`Q*$5W)NduQ+^l?jH@=M{KYJG@czH~{;J|YoSicvbHK;%Afmk%%hAD4kLua$j)F1ht|{l}Pw#jA|d~T+XAy>@Y4*kz)UL zs9GP|2lF^ajU&(87wck6R4HctKzL$GP&Ljl|J#_Yec+4(j?&K(NE%)bsahX#-~K7p z&l%uM0H~T6XD9-tDoHfC=34x@+hg7W(5zLn^|Jg?* zqDnDJ`w?Y6NdQECjsa$ZT2ZA+(B#F+7pKO*gE%9Hvslh-`GYn4-w3lr;=nJk%%hADDBrX@X06H z#~cBT@`&?d{KYJG@c9@hZi%s!|{M3rKcPAL%iIXIXJYDJYQ zk?_$N)!$dRq61e!VB3U1(%?g?)`tk@aZLuUv;Y-}s8Wp5eqL=P@^gtW6V!?-RU+Y| zF{*uB=vUa_suXOS5J(z)Tv$}C4-w3JFPTkT`2s2uQKi^5z62s&81@lW%0r(QD_^Sb zD_rq}tAw!a!r+No9}PaFYJG@czC6_``-ntTDNcC_M1F1;W`bH#rAj1xG)DF7fotJ# z)fTo*2qXYz zZ9*Vv@F7*}Lj?2QOJ);S>Vb+xR4GR3lmd~TYloSjR#d4H2_KD7?E_b6;;Ke$n-EAE zd`Q*$5W&3nlG((Slb|9IRfDHqDnDJrxb|%TvW^iwW3OuNcd=s>emBT_~WX0Y?}~B8hl9A`Vhfq7+d-b-c^9b!O5BB~Ul zbV`9pa|ATXBhHJJFO?76k%YT=ux&yhY49Oc>q7+d-b-c^9b!O5BB~UlwEz7WiTqq` z%mlTfN|i|XXpHLbE8HQ5yQ;8lLLh1IAyw-`1oPfYW)pXAfr>;_DMo2OuQn3-Ip>%O zYDJYQk?_$N)jn{?9`16(wh4ix!G~0>4-w3JFPTl;Ne3ztQKcBA{W^e=$j_a}Oi(MT zREdO-#;EpzJ1BA2A+}8jBn>{KYJG@c-h0Vx;?71;k%%hADDA(mMk37-&?t{MFIK+z ze#W13+*^ygK(TE?AZhR+RqI0p^WIBl6L*?|ibPZ?Mrps&b|lgq0gdvA^J3*oR|34x@+hg7W(5zKopnO*2q z04fqur5L4C3PhSCpiv%iUaWkne4s-Gx;kLngh0~ZL#oz?2*w_Z!fCWhlsV0ZN*2L67(d3`#=|+eGyQp5{WWe>jS-(^z$)GIB0`Z ztq&2*qeoHszDkjZD#e^nkAO;*NR-i9ALxCh-&eDQgEmOj`Vhf9dPbF>^Aw4wQq1}E z2&hzvL>aC1fnH?#`!P#6=*QuTs`Vj)dGzoqzjsq4qDnF6(<7i#B@$({)(3jS>F@b0 z;h^^^Dyr6p2nn z5>cg?^XU;#sS=4YTI&P76ZL*~mT=GpsahW*m`BgS@;)&|BB~T~K0N{|RU%PFYki=X zr9OYm5)RrRRqI0p^XLIt-nXYnM3rLBr$<1gN+il?tq=4T)#t%k!a?sFRaC7H5zM0} zXZakJA`w-JIiDT@l`4@aqqRQJ>s6o6X9)-WdY__deTZNlJyOf(+7yYXQq1}E2&hzv zL>aC1f!@11UNTEK=&wgnwLU~JkDj&VI75m=R4L|sdIVIeM52t=`Z&aUA?x_nEa9LH zQnfxrFz>x&wxdG~_7#b!QVdN>Jpvk4LcCtA^?}~hI-WR7IBJ7btq&2*doP*o=n#Xw zMIx#cLz7aEfJT)NuNP~5pjWt#@6HmA`up~xYJG@c9zC|vAqIPkL{uq;CLb5wCjpHr zAzm-m`ath?9dDl{9QF4lMb-Kc!904NqeBe#7Kx}*3{5^xy-xxfRYJU8to4Cj`a1tH zOE_wSRILvY%;z5TJa6Dvg0e2QM3rLBs7FAhN+il?tq(lgKnQa7ESn z5Wzg2DO0WkNRfyt#hg!%fJ&7}l+jurcvg|FFPSAAv_Y!YhY05Jj30D}!M-99Rf?fW zsYgJgN{H8swLb9dC|&O}OE_wSRILvY%;T9$?uF!jrAAuSi6dVrcyMZij$Il@PBNYklC^YPue7mT=StsahW*n8!28 z@T4*9EfP_s7@CxN1T?CIc)eKb1JAnC^@+2Dqc%v@`Vhf9o)L#9zhQ5Yh$_X<_|Hd& zfJT)NuNP~5;Ms$^UUZgl)CQ?qA0n8?GyCu)KI|&03hcow9t z-<>5KwLz-ZhY05J3`IN{5qpb7R4Ilgr5*u|Dj{Ak*80G+IdwhtEa9jPQnfxrFppL z72*Hz{)t7^`Vhf9p23SJ>w=F&R4L{@dPJ;5qKwx1z_XooKaTcY5&jSVdtOwn4-w4c znaFt3G5APCm16FrN5o1b%4n?*JZoF`M`_;`;s5aKGK#A8A%b~4qq^Kzlp+yTin)&- z0hKC|D5JGL@a%KluQp3KXoFO(4-w4cnc;X6IQA8Zs8S3~N<9J^RYJU8to3oaKZ{=X z56%*f+8|ZyLj?1F7u|pkG1yxqqDnC|`M$e-640m;;`L&!kEiXob*cL~X9-8W?_g22 zK14A8y5kQTe)QA%KFAb_s8Y-s^$4g`i9{K#^>NSpZe8mB+F8Ou8>DJ|h+y9DG9Ai& zsVNdsrI_>S5m2cTi85O2gqH2AJVE*%OIc7NT`MEDnibPZ?#{T?R zdWV2Ul@PBNYkfTA-CLLFdIH5P;dvXRYJG@c{;Tglc6jEoxld7wL{urp{!;1@(5MpP z^O)!T+A+?M-BrAS1TV(ia9vvvq*R0;8VvDU}_ zANQa0(vNJGaMb(a6jkd(1oMaP8iw~>miu_6NJN!l&ZtK~rAj2qXswS|->`Lwt|!<& zOL*P}sahW*m_OzZ76UrOpjITJN-;Dk^$2KG3GsTd*2n5=TbJm10>v!hc^jl^eTZQG zo|hayoc+azWFL`;D#h5JzX$9P(5MpP^Op%Bx z#n@j;Jpvk4LcCtA_3^5MHkRmm0>v!hc^jl^eTZP*KhqASPil%pR4K;(68fa>lYmB* z5U&?&eH?M<#u8mmpqM2*Z-Z2=4-w2?yZfobr|&o*e_ur+suW{?DfI|wR0;8VvDSzE z)v z-x14GhX;Hz_t{R7P+ic9u|NL~=n&AT65{n@t&dkeeZ#LqXaDwD!ciNfYJG@c{^`H{ z?BQ+S+LFJoA`w-JIinr{l`4@aqfLA~XJd)3C)hqqc;0;!RqI0p^H2Qq(}%Y`DEFaH zk%%hA*q>j^(;=WyCB*B+S|3NAy|F~s6DVd0&-?SEifZDc^5^Gp26Tu)tw^XYXvNUv z=K}1LfJT)NuNP~5?0m__61`ENm?b>##~F&M^&x`!GwyxnuzX>DPD6@BR4K;({O?DH zfJT)NuNP~5?0Ch-61`ENm?b>#{Q!!p^&x_Je+tG>o|};(5mkz@zx>>ceG<^965{n@ zt&jU$vav+h6DVd0&)XnX>q7+d{#25oJjWzOBB~T)fBrw$A)rwu#OuXcA1A+lV~MUO zP|OmZ_xo6is`VkF`1sCQ!{biP&y`7$h$_X{pZn+#(5MpP^s(tdIH5P;dvXRYJG@c-mh62 z&>;r3A`w-Jp~=s|+9v^xDj{Ak*82F|2R4@IdIH5P;dvXRYJG@c-mf7W&>;r3A`w-J zp~=rB+b02yDj{Ak*82FFk8CW_^#qDp!t*vr)%p;@ykFBdphFC5MIx#cLzABqw@(5Z zRYJU8to3o~H5*HGJ%M7D@Vxg)EvnXs2mKdRYJU8 zto3p4Pi`#H^#qDp!t*vr)%p;@ykGM=phFC5MIx#cLzADQxK9EaRYJU8to3pB^&3lc zJ%M7D@VpIDwLU}?A3Jso=n#Wik%%hA(B$V@?vsEN-;Dk^$2KG3GsTd*2kVNZ!FRE1d3V0^EOD;`Vhgq zU!y;uLkwy~BB~Talb`##PXZcMLcCtA^>Or9Hv!hc^jl^eTZP*@0l3TAqKS~ z5mkzz$q7+dC){%W@Rt|m=OU*_M3rLB zs7FAhN+il?t&f*~(|=!;=WWjt4%#49>q7+dU;nF@4If^fm|u@bM3rLBr$<1gN+il? zt&i8;w6R3j6KtO)Jnz@_6;q7+d58L_j;jp_Mo_$0jsuXiZJpw9KB2h+beO&t8jU{@cVEZiL zc|X2eRILvY%)jHPox>qdJ}~=;L{urp{!;1@(5MpP^cfX8h`wG zhk!yvxJf2=Rv4iA91$pPes{>>Vk+W#jIRD zN8Kd>l`4@K$Jz%zXQDUCEMcVh`5da&hxWmI`IMSxrMlP>Rf<`;M?j@YB*wA!fzSQu zjWSCZDIPC@s`a6LFkg-uWFM-FEm5VIm3stKszhQOYacic^I-2OGfNmL9>0RB^`U(* z|0{mn=l4%MG5b(mY>6txtlT4@QY8}OSo^?nG4w{6C5#l0CqmWw&_0;|ydQ@6txtlT4@QY8}O zSo^?nWAsLuC5#l0w?ozX&_0+i$EmXq)y0;mQq0Od0xDG^F^;tl9LGm*lv%<^@%#r= ztq<*k`EnK@`%qnMi7Lgc+#{e;B@*LU`@ne>^hTK_j1H^d3p3knI()AuV;X&^`U(*f5>Og z86LmwgV~4bVoOvhX5}6Ml`4@K$Jz(3lR$5jS;9#1`Vy#GAKC}=<+_aQLv^twsuZ(w zkAO;*NQ`6c1J|vfH_9wwq!btJ@M5tOH+6VLAOJ+ca z7*MKQKvJce-5mky=xko^yN+iay_JQky z(Hmu!FjBmp8miWZ_Q8C)4mtZ!U2KUe#jM;Tpi(6gm0w4X&*S_|j_c;p8)cTTLgf1mpqlsy zv-NinZ+!Ofpl@vPvkbgTKt#T#z5FjIX5}6cE0Gw-`t`tl4CswAOBgBM{{dC&L;nlR z|L$W?9p3%vt=Wg_VoOvhX5}6Ml`4@K$Hs@>kAvPQvxJf2{WwsyKC}LlzutMbfqoA7j2(w+^C6s-rZuSvWxF1LV zZ+!y$S0&D69P8Hu_gy{Ad&D zp?xra&Sy>9S#g?d2%*s6i zDpevejC?2kvV}Z<*> zxko^yN+iay_JO`ASZ4_%#eOnSwLY{D=F^*x8J_lnM`RzWi!D*5xXhJoZ>&@_{jyOx*(!T zF)R0oSc$|q);{o80ly1p2_waRWKgv};%xm%HvT&ozez!K&dW>s8YMJpIN=}fdk%&gHl}(QKgubdqk{6VjOE9 z_>_mwHnW70vO%iWN1UxciNHTY;gb=lNJN!lR_+n85{YrFeV}hCK5NbrMvDDjp=y1^ z*{1aS@4fHv%3pd)_My5UqDnC<_Xwy|iNrY8K5!HSpZ#YEBgOu^P_;g^59VL={R4(y zx#OwXhw5TWR4HcV9s!jqkr>C?2adtuSj;S8q}UG`s@8}0!Myj98PFjHlMJKUv6+!QsdnDAffKRf<`;N5o1b# zS-Ct1>n;hXREfkm);@489Iow}C5#lGuLf1?L;GMJ*O1}LFi@(CEm5VIm3u_2L}DCk zAGqoe*V@ezMvBk7gR1orXX|I={hB^psRv4RK}3~eR_+n85{YrFec&okT>Cgn7%4wL zSX8Z#I9q?>;V)ml9am0*ibPZ?X5}6cE0Gw-+6S)6#kHujgpuO&Afak~#M!Q&ikN+< zE{Ld7%*y4-i+4#trAj2mvG#$hq;YNVEMcVhd`_rZAKC}=<++x5R;r6FQKgubdjwRf zL}DCkAGm5A*J{raMvBi%g{t+TeK7C6WVYiEm5VIm3u_2L}DCkAGnJE*Urxp zMvBj`g{t)tXS;riYxbeKAfie!E0-t5-X#H*Dv=n++6V6Hz`YE!gpuO&grRDEXdld% z=kVrPsV=rem10)z5m2cTiE*rb;5o&(w`7(uQhdHMRILx~gL&^IvmG5`K&dXaM3rJz z?h&yPiE*rb;I1d!>oZFjDL!u-s@6xGZA#utW;;5>fKpu$QKgubdqk{6VjOE9xC;&U zUd<9liqAiXs`U|P>sLPi)?>Eg&Mi=?3nHo%vvQA!l}LDb5pdt}fidnfw#7ZQ_vG#$x%5g9CEMcT|6ti-Vh?Pi;W9~sqvqJ~PG_H~h!sSwHJf`(=Y_-~t zT$-E$G0R(_aQQL$@`@Cgv0NMFjyNno_a+_QpJ;{BM;@k#k&D}s%0nmdz|})ZQ)w1> zj%tU-9uAQAYRHE5Ms3lJzT4#?e=?x_ep|FsV;@BX-mJu{JUil6MYG6|@^o0zNedkx zb4)HjnE?wbv`|@Ki2Ph#CdAomp^}h;6tS;e2ja731$NpxoaE?d!vNhj=pxx8XZv(f z^A#AC>!3M#J1L@bmrO-^`@@RvjT=ecfft}VsSS!=86>}PEfp+&wLyVH56IQtr$hdP zwkWAz5Jg;Y_rl+;RB^_lH5{UA=S;$oZv8>4m5lZzqpBi~bCNPcTnHsCMfHF<(BPBy`DhZk}E*ioAWaR+r!zFwf5 z8gb6=M>Xavbba;KyUjT1}!i*G3UOb}G5omNyS=1Iw`nHUNtH-Sp)Q&P`k7zR&j zfT~+vWb1ZdxOK7#Y|rV+1YxP}CUR|dy<%QN*O<6V7>?>RfY;2^9D;305O%fQOnQF1 zp@{xHFNSTGMc+uqaDP-igpIi)6@+t|bIFGr#R|W%AMxc14AT=EA>p~bltu6yC%s(> zsDw&J)M^uX&Lwca*BU*2rVKqsUjgAkYc%CbgFO1yCAeFrgA!7eK@i*$_DX^_FT)-d zYsrD+cOZwp1E@D8_7~J>G8V+IH_APW+ zQ~|be$0RJ8&Jv0UqKG~e!CGl7d<#S7wQ%r=BhT_;yeoq7gb}OAOuJ&ZvY-m|E#`|; zPke#Xx9IPviK6S?uTarY{U5LPCgjCwf7U>LZT_2K%#`tB&&pw4~Uqllf_bhbCViV+QWAHfk{ zW|M$R_Na?$D|C0p3E71a_UOcCO{DJ~DtjJkhhF%!Li#IqQH05qaB<}nJ25k4F{z9( zK;4G-L;4{yadm(J%8uy!ueUz^4AA@O{r=PQm7||K?+af`s?C?frI-O=>K{%-1ofzrf0vx zpOg)7Dmx5r`+f!cRqN?&UvM%XFMaE$DAb-$Bvxr4KiM8FZ$2Q8ppny<_V!v>h&((z z71m7bfOen%8`Yjzs6DQZ?21pd-N?<|Axqvs=)#t{%g$p#*tY7nWckEr3f1>K;?kBp za6MA-Zwy$pAmk5HNT%HELB#e$N%CuDbYgfR==9w$8b+z0{?_z&kJsYio62Z(><3U+ zpF`(W+`4v(vBfv=@?<{_v3|8O8d6;JkHbz^1yv=s{1$|hKC2`alH+)P6v0~QJ1V1HFIw8=5kG>@i+1Nl^6{Xa^k?@T=yOpSobsFi zhiCOfX+yt5s_jJBY1jij+w>heuXLs3fjVV4>8>^+YtV4cE4H^Rw;;5xXc9ZWzZhds zJ(HvibU*_e+9Dgtec6)DgV4JUy67qjmo@HiKwIL)S0Mi5HHkbP*?={( z<6v!aC4~5CLCx$~DERUNf+lLfL${~k68Z!5YgDOMDN1id!%mMCBUj8P0oDW2tr#6N z;l~-7W;=TnHdqH0mTZzKSr0(9DXq~**L{>@=?;H!cBvD&Hl(NYvwaU#*RL7Y{R)8J zjYcTXrwL|gZ-;y}V^k_MLZjz4%3%^#DCzWW0MVzdymY0=+dWRWO7Ja+>YZ!339P~$Z z5Cy@za;&Ifu0n=fcO~o-txHluuO8F6G|fWFKi%K$>Lh8E9;AL~C1$Nybm(Ix^enLe zRBRKdSGNXtATKn{$h#dixPE>OJdgSWVcjlDUz%3KAivKLe?4BR-lrP8PJRKG!a)?V zcZWL3ujxk|25Azhe+^8m{0xCVeu^xbM;v@zjul^&ao!|PGNAN6#BJ+~uJnn>^ z`&7u4La)K*&7IKTsuKF1t0p8$>U&Cw-s-;OV68QZxTS(dM8wOU=JZGR!&Q*(y(F1& zzBMXtR7Uy}-qA7dIpV7r-|hpxt3HhA9kfF=kJVAX(g;~(oGmgxuZC>CJdoYpZi`NC zRY(3O!ziMebT}bLXDlx{}J|QQRzHXGTE%OIR(IfyTno*CE|0$dQy;YDHOy>i z`7H<|-e$x+D%gwLPgu<%*mha8AUuDa5u^QKFV>(4*6Q)ySFk^$rClCT5cNvDl)gyf zZn2Q;YZ`#owP}xZJr2t1X4<23r*%<#wWYGGq5(+nYzH*0KA4V&L)0U@X4fZdZ#RLA z3#^86X))+uaS+)k%FjftVZ%tZ_I(_@RF!noIRRNFs;KwRE#Nu(I81F&MbFc=00}w) z-hryfZOCT&o;z$#5tVCh#+c@L6L%Up(+b<5xU#jfEgkI8qTOv!`?4{z%BS`yeoQ-5 zD6adfC9Q7Y<6EYY1I8KH^Ko3JySo%y4Ru7F!aN3?QU4V_o|=d7fiXT8J7tut}$*$16Z6wva>HL`aV zeNewbCDcB6vn+gYUxd0Vq1p3KQ?D}ARw&vGsl>+nXLIAh&XUxuY$%a^2iuYqIV(!F5N9u9G|)l7oFnA-09CtucgolH&4NqqbiYR`nN`uAo zV)Bv#NFnBEXDe6fmzDY8_}dJ*Oq(sWG%tWIFU(MTD;0_ue0!#|gN7a{oIj2%KAZ{j zcF}RR$09rCQ&A=ql$1b1=nAS=^BW>1>(7~z9~yGPTCrIlkLa5{T5`Sc0p4?H2{(c) z`c$7R80q&Nl9Eo-Xwdro7>RcF0~~&23CF>D$RqBbo)Gi-ohu&c%FmL_71_|u@jo+> znK6R!HtmGujGaAp9=e|MifxxgQ?H(%klePm$EzrUwdyF#f~2Sxh2s&?gKNdeoDSq= zVPA51cR$ohMHSgb&y%e@4Rz(w9Z|6o+5HzmnNbT}XN#`sz!deNzX2|%g3hHtE z%>N)ZKS~pmGdhztp|&LDr5P&gsfOlko5OJwX7xkS)v73D;V?Spdr$rruXk1^UU36B z4%R~+G40SmNv~rsB#pkCh?hf8lu}`U4)!o}F0<^3{BsQceGdd@_CR{gEx!dJ=um)o z(xWX2IX8l+>@r8YTdAXM1;b>lhnISoA*~uUv@P0-dNt(cOR@Y*K0dZ)G}jN-6CUAV zX-6v83?!=zofHw`Q!toT3CJ)-y3Qyb&Mf}{VYX?~Slg$Nx}p+##U7+{H{;Pzd|S(1 zYU}-540~vY9<4A$pA<*r<4)P53l)aQ_i3-npuScG4ORUFTXYHs)77XgJH*a|HAva}vD~v_dpk4347K~Hj^=dKqtEK; zNoTR@LJ?M8=t-*gnj?~{fwuVzGS;fgIWyEJM+5bGSxmk9vEN(Fu{(z+_wpt30&^5z zs)^z|zL&D-rk`fWgMJ%^S;kVteAp_wk~QH zeL&v3cRCPdT@)SpcdhU4`SXg7TiTP2wc|N0Vb#FB{snY@Q3ip*_h`Ob8kFgr+g6?Y zY@9||tH7f#;6c|?NbsK}+&Y}h3m47$U4|?Oz7yP-X7Uoq1 zVolY*tZ&NJPoSyv-#D1xZ>V@X=PLf}-*1 z0bPGkIeDATtL9}##YawoxVN7-d3f0Zq5j&am-A&QYvmhhjz$@3qaxdF6!Ag-sA#;# z3U7bq$01m&rVAFx{H_iPOZ|%|ES@2e4ZeXd-1Z~yb5zlkf+EnLD2VCTRZ-hr^u42N zWXe@k56`sxrcsS9wegytX7ef!>I9@IJ)f{#gVPvgk2X~7|Q0FnvPl`^zR&Z-eV`%JHeY0h4iCt$BgmG3I@PO5`$Zz}>r+0n^!(FPt zbe90j%%6fpuNsaVZ;-nvp26iM)!<@VOUGl%!KlYm6I6+LfjjpOvRZOuTN)hdRStoR zw^Q}$XM94Dx8OrJnlD@}_um=-|Q$Jb5DBi?z*6?$*eFz&>^=SSA2!||gnZ!P=I z(-q-ukDVds9{zP^Dd!d2E{hg~rY(=1Z7JdpMX*-M6=`s5e+vhX(0Pv~Dt^xR@74?i^`Qh$U)Q)CTPgTP*#u)e?PEZimzh zyV5atSsE+`eS7KDdIeprWe}{@&`>L68KjHU7c8fUUrVqUarLR>^>knI<%>1iJ*xvM z>Xj{Jt-iWjA&0gdkjvIh6w$iSkGM|UCT=`5R}8iL0L_~$koxqA(zOO3A)&t|QnC9j zjePh4y!|cF&iUj1BFf)MT)&*f`<^f3-g7p-vhO_o^1A;{q7!=-FUwd)SgTKUDyT`T zMGbhwC%>0?ZrNmV{%s7W46GXX$=*R=XbtR9dP8U8i_lE(1yDM@pGe;pOTFZpIu1FeajshCbN*54)q#R|AR9yDa zo)0rp;A0*WNbIMNxKCO>{QbIAF{CN^tS(Agal=30*S1rsbBXagh^H2Bs`>sTPyfdET>O#iroQBBp z+Njf`WiWL9IT&fJjcU*M!k8Xs;6Rxcx;}jw)!oly`jb;04y1nRbw!u>yU_E^Z#esN zCOBNa10PcBp+k)a+_`-RZtMMl!E@XxLYSB+N!#i|^rMZ)jDwcw>R>gb8@f}ra2uAJ4O33c$d2PCnpvM?eivV{>iRc`#Pu~v!eg5I$sJ<7bj3e z7DcdD?AkPsa93=VIC$%mq*0@}caY6}**8rPKE7}lbIaVwDn&C68QBg+jV%HF1)idh zvo1*jNj>_R0UF3>~!c@$bu{$jlqL9D;3^MgQH+Fq4EN4kmHfiae{xgF?+JI1~I` zuI-oydplKwckws*sf};JuWJ0}>7}+LYlKgsUgo*=={%OhA3r1+T z-1tB0^Tw$+)~;Vnu3Wo{^W&1?b5$w03?46KGl0bEWcc%UO@GFBIulpUY(*}8T!$T6 zk0m!;&%%zQny7x}GPphaG?abRL|4zR_@DRu(wG z56w%);t0j`} zwU4Y0B|`_lQdq8ICgY!O?}kS>bfJ%Uw_-l|usjwb9Mw=@{vR<;IUa(JsiK1)y`4Yb zdjemssUZC~>*=$~J^WQ1rrU-DKDH(7N<8W`5b61-q0C9YWt9~JQC%lBWJ0v)Ogwk7 zNYZz^jnkz?o5P0CGFC{HwCg~5W)bW>GL+7eBWqXSzB{^-)J!0=Hs^snyaozG zKFL{SVBZz`t#+y&_ZwnKlH+s;KAs0%OMgO{az3XYY)dr1iadlT{%|AH!b&l#1}q1U z7&}~xgW=>3X5s~-bu@VxgEiKTFc<6u4H5yw_k%4{7 zpkL7cZLFN->+YTh*HwOl_wi?xqyM>|IRBRuu`K_|dBwKNBb4JhI$4bJB3Z$uc(T_6 z@UQ;}SL)Wl=jjjNL+%G~aoqqD?nlAS(hp#wwSmSDwT>3zy4G`?qg*!-cK)#QDu}Ak z$_YLGqdu!C!b^9K^KFV?tyqoX5q`gmBuiF2atd3(&s~-;bdfO{V%`hsHwpCp7{OJI&W2^f8w&N_gE_wx>6No>RgZ!e=9^JYG}fc{ZvKgM0O&ckJZUk z_3mVEkOE}pZBVbK?Na;gG2n^YAQkr=(wT=9P)7Gf0_CqLM-Q9#xM;4sD4py{N`~Br zpF3?)=;8=S*dGl8o$QdtrMu8P`vKfeu|cIf?$T$KT^ESU>8@f2y|J8@unKo5^f|;T ze}_QJ>y+b`={@Y1rcIpR0AZ~h+@3?tHoBKK(@)AH9%U6NI+gn4@Uy&LZD0BvzIUkv zW3S^*tab@PMQ)M8rOF>0Q3PxCEBrY~wOc9&c*N`J3vfyCIczz|m+J@X3EL7~XOJCK ze7nCxp_93Z;~22vIqY$2;b8d$VY)_?BJ;N?x$;m(?9>|J^oft4)BBTn*Z2>N_4@!` zS9VEPE%*b``Skzi<4cPJ&UDPvbOw@5`)O2r+?O=#q(h-~N2J$gH&-{U6bw`blxI<7}_2sH+lpZoY(DG{;Z_-bQ zJFl-G=f|v9oSdYK#vCnyDz}cZqqEwh{ew%PD%3#MZmKSdSycjaYNpa>wf91j=zrde z1b$q`t;y`B-!-;}Dq;Bmsmy$<5i<0wgr2inQH00TRf^?4y~wSVLx{BaHLUwq1HTje^bZ3J;%9)($TX3-hHU&CkrU$Eg_I(=3TA{udc z{RpC~{D|XVJ>(JSV-D6h1Vl@#3A3ut^6jsD4Z0z}!J#gJa?G(&CiMw&0^PDWuh@2Z z#FDJtin;j~f^HpNgYVZLFkPd9a;BBIU64Z z!K>Mp^o$xvgxhA4MYM7;{dQ|~VS<)y)ng2ams=y1Q#+++a|rY>XpI6o@1mKE=lI=D zCcCB+az};uCq}`$0fo>pW(^nnOgcwGUB8bYwf$SMHRolOXf@rPe3N=$RvBUkc0iGv zO955ik`^1aM-$GLz)oui%HbWJFQ)m;AjJhcan2-bw1p_4K$tAw`M?TwAEAUMPnaS1 zI$(tg?kXYQ1fV@1?dMEhm#UMpHF-Eo{S@e_R)Eiz4G_KH6!f282HRh60Y}Y~FnsEF zIFr7GdX>>P1Wy{JOMXWTC9FEL@nd|SB>1-WJLseqP!(0dok&PlcM?j}2y1n-Z4$h9 zDu=M!r=>i?xMBhR@a-IKvh?LRSSvmn9Ql+c)@SEot-x`lTY(+ghBeTMx0hvXb&Bg- zTlDLo2GUiWpjwhMR8xAybu1~_yB&8bwnS6)m5{7vB=>yS=Oze|ck0A5eT(sd3sSP# z)DfxI(ytVyYFV(JBQ5#RK&nwH^1ZtTA>Cb?NU11~ax5>`lCCj(fXB-bVXdrU2BG^W zHIV<@G8vDs)lL#qP4)1Giwim3WtE!MV7i0#qBp_AfgHNEN20s)8O&T>0U`EgGIk&D z*pg>p=2ijm!&2!i85{diVoP)O{pqWmJFMx5TusX$Y(bn)Rb7H z4{oXopzNPe%#fr*iI;CVhr&T1mdEeQ9#M@Y=xPa{uq)CgJN+Uc=8&LtYA?9xXL_u}P+j~+n@{oTs< z5#?}x(39L*GE}Nz+E(FO90Lcg3`Hu^4>0st44ghX6v;XjfuBEy{LwC`ivE8=sJu0e zR0M3pP7h0QT**S*aFu6M`6}2HI!u&KoRzy$)ca99`Sx| z&sABlbuue<_C*JBR8UCXNcwbBFB?e%_SWLMi-v@)pkk|R_-d-@Kdnh00}I8W^Nxf) z6T_azV9#mLSSv}wYh4Bszmc5?8v)q4l>IOPl$*Z8PCI?7S69;Y$;0eH!&=2#i-?rh5dS=CwPu`$EOWVaPR?t z4#Bp|q6Oh9MFe&?!8<5|wHkgR5l&aNoMYe-O;@y}&E6mI;Mop@9cP00S@H6?7-i(y({enVPq}NhVzuuYDUS3L&uGNJ{&(Hc zs{QBSuyza>9_@~Nv(AI-Q3beN?~ar*&(rt(a_u0pGN`*48DvS^-bccQc$y#9--SEc z_rToLn%1*Kf`d&Iye+pzoBKsjM2*;4JlAt0>Hp?>OynUwG+L`1vS##@tvufeWkr?2 zg%mGY(wI)@On4czckNEcV`z$m%vsw}9HZ#Noxx(?bN*~!;JJ&=8GS~RyR*8IxPX`N zI{hbHZd)K{BeJ{KOITS{4N10tzwUfIixd~U2ax(%wp`A@<_SDv|DP+8hVLSo=fvj> zECSztDTjQ`z@%Nf|H&m*dj z*o*1Tvq}E1k2r73OBny~7q}frm9z1cc*B4@wCSZ=x|(=-Axfs0;3*Zz%= zvE?!Mb;okkXyANJ5#S&pb_V8z{RU*c;t`*0Taj@yrV!b}A2Do}!Nw0Z`q1$(8I65> zl%%u1xRD+P4`F4g0n&**FXl8pgcxN*6lk+sbgX*_kq7=;*Ej7yh?x|@T1hM(LEn=t zRy^X%x^1E(xrxuGE#UNuRUBSR^!G0mXMehh&xJ1{Y#kA+M6a~XkR+ehuz6gf>N7g3 zi)dOLk6(H(;`EAbmq&EJwohE37K(GfFC=W`5zFU3#|+&s*Fp)S)>DqCpoQYSS2wZj zI`0+RE{|xq;3Edu1>=qrmJqg9iRC+(Y=+eJw2^xHXv%R_F9$!kF-Ce=BTuZ2E}<35 z*64)wMcLxgQm`9ijkf;DkZrdwgUx#VQIFJ1RIes{87(oVn7aw8t6bX6lqgAsX=_zZpx{{exi$3!;n@>#}*$=YP#pCG&=U?dlv*_?q# zxD`6#9sBh0?x?jK;)qWI3>aPw#wz(vY;32iY6VWX)gFBuM-i-5@}3095?jvm@d%5? z!#E5N!sw76$HDfAZAlR9BK2|EnYN19$_*UH-3|(+%SZP)rv-{HBx~_RaS1m| z*m34ZaHdn3I6y_j7FCN0Ta(6)e~hg;S}LXIIU5b>cvSa%7vuHr5UyxiNs8`iA-(=z z!FI`AiQOCCW$bAlpSIShoxTdnY*z+1NQTRgHZUQg;YQf6gmmso>kk?0%KdGrKQJhKCNSdj?>R{eyY<37sSh}>gk79^gi29jP% zvkaXdw-u$&N0K{t_`HP8EO>;(^mfdU0b@u(O&1c^CJV;htA(@Y-f$c&w;=QmeY&}CY&jdl*_H&sR@@a6`F#`_e77r?m$3cd5t{vLoymOpXjS(!;%4X zjWzU{oQ>fuH{C0;nk!jF^O9e#d|twO#UnJ@)+q+*8IsKSVdTT4Y?u)L2e$2dB4=Yb z%Pk0wx1wW)53nWP5reqAg!PI?c-B`d4mNZpT~>|YvJ94k<)%A7rv1p~w^B0C)?C7_ z0<){b>@FbH#DJsX(XpFw#&BBK$J7Y2D)BDJ0=@g*7U?K1Q7x&_zaVz`I3KGO_;6an z>IaV?H(rXNp6QAwOBWEfUXbMrZDom84A7;gvjZr{fQ3=wlY+%~ThRi-R)tJ@XN|nl zY2`>*e;HdLCI}spj)=aOd*P7j%ea29p70zqJhY^br|Xkhy}C%VicC^TM=@vQul0tNZw<)N#&sK&;@9Uq>;?aS3LcgQGO&oJnK2aY`% zgv*yK<-B6sm*gNkz99g4cFO&mw~!~~dqu_bb{QIxKc=?5!fX6#VBd%+{vc3Ct% zaYzxP-FGMoDT1}i81W4DKW(W{=Mi1I#feo0i4w!ZKHMx}M~$uV69m!uq1bIgThX@0 zhp-iYtX0xwD|95LBl5zxXmq|;dso!X7%a|N;X{6C+Mx7uJybQ=QpTd6t6QUWfqF>g zN(Du%vbiT}DM`feZafFuE|2)I(1obF^&qbTB$AkMPeI{Z32|4??cTm5-da`}pB=RWpc*#%J#2ebDMlF!9%C*cr7MKGj?V zr=ZW^SNeCyq}#Ny`j zko6zMs9xjAntQq=-Yyevb^Hx}vr^=&IofiEri zCH9VTB@tE05dOX!%D5UXpX2@VpC*!_km;cx^+IJO;tgJN2dtjQAz z+g3>XSD?GS3EY-Ekn_1{;iqpgsa`j+ZM+{@JunT1^-@FKy)Vn1Y|>z+g*q}`8YcHJ zN{0kmM;5d4GUYH7Mv)8F?TO2#X}Fv64_Nc)D@1%Ukg@0Jht95o+?3DIQ({E3*NKjo z#UbbRiCK9II4xn-;Jr_OlzF5JvTZM=2&-*d@NA30WZAx6+?u`}&W8GT^aRhx?{YSu zqx-d`>Qbft7jW6f5k!mDyq+_q_j?$Y%h;X2A4?t3k_0XEaOB_JKF1MtVxYz&{H}Tw zw?D}4@bQSdx)#LO|GJ`RvNL(U>IT@6)=2;C8@a`XYjkz3HQHcZD6g4u9TEn%K|yx; z^jV2^0&#ZkK}wrD6E@1QQSD%D92C*#wKK(-s%V*jh>}w`f^RRvtQC8E*cu>}4e0dt(lVTzy>miTWlBJL54Q!_vTCssc zI51Z!no_Z0Mc*Z!-G;SqU3TkzK7%M{1m)^Hqb zpV*cJAz`l}KDb=2czl)TXhmbm%i+KNaj<;!#w_~|(uSVn@rVy2$-eG`QJVm5^w8pXSDH0eA0N;i$8oS$m6499 zfasv$bMGlfh`MHzn;FbLo zM%Neo4`T4mYccy`#*t;)I*|)^(?O|C9W3dYCugG!ixvdaEu}G}>lk85&tkDw?6(t- zSd#CqSU-3cnRK@SH?DaBH{1P!3wJW*Y?NWS={c_tJruqdJjsSfHC!BI`FKR=6&YS^ z>Ocyu&B=q0=@56~H_X5(ayH7a-1J5VHxq@+w+UpHWqU4ivR?5BlWIGB^O-3b^n;Is zEChCE=ssF zPx@gSy?aGLPii@=k{W3~gd;`tJ4$;e{r>1Q>^#2fm5mJ(+&K=`!`a5KAhuaRCWmiQ zuY@I5k||zUSk`k9(SD+Vo}Q++!<6h1^_FNLOY-HP`k0n#ApN|S-}LsRnp7)nIb7o6ATzrb^oMn)&nhA$7BBtU0pIE3&2g|E z@(8yc-La>eTu~9mD>ZAysy3}ip@^-Mv|)s=3lRwJge=bE&22^ z2V{3f4JEZPkUx7h2)VsfLkn;Gt)U-}^`&P`N^oFtA9C@H0~(>HfdV5mw6l0gP!ZjXT^e0ctjT>C@~+^@qRQgO$cQ#cmEwnTTyIt{^}y7eNdMpAO*WEzChou7zX334_o=Jo2p z8icRPdXR;WW#nd9Is~LNfP4Q~IjdJ}OM+lo2)Ol*9wd05jLX|u4jysAVIBUH*O8c9 zbs?-qu^bs{FCb`X6L<#3(5HK|$_7X7Zbf|0PvkgQ4|#;;OA~xLPlL!cT?wmEEMM)R zbWrXlAouLQD*E)AKaMr&NcK4mb7ZCMTKo{fx zs_2{S4!Gx~&$uylHs=-FE{`xf>4@#;f5fAVXA@TYSUwH^7jX5x5<33kHsuI@whm8N zT!VjUOy#^{+vO1($EcD~3p7OA-BZcH4#^Og-3i_BI3d4Pkpu~&^w4m8TK*wB8BU$h zL(W@{Q;zOYPDFg|f@fr#66f9N@YS~i>R7W&&fZ|h-&(h?#+2Ob@(PFB_2d+e)u_ti zCvfP>Pe@SzyH^z4Zy)}cIhkk-{Dr$3$HBtXDlqU?;ciA_Z%m^(Tx2dD+ARoQeLjQy zSQrbpR@Z@!-BXd(6`o`FGcDo~7^1k*;Kr#Bt8hHRuxEE{`v1_YT!T3H5&RqUKeZ8A z?V?&j5glFSimz1RSS#hOPr6C2u$k!^Zl{6WD`0nMs8YXDC%2|xd?x~t)tXn} z?p0;>AGsz-|%-$-(uD_MMuY>#Cd*Cvc@bG!cA*oqGth@y|P&?{pQ>is`$2G z3^85PnT#8h3J<;Mddd1+Ijfv(OM+moaY*4+I+k2H#pkyk=L-*jNS@vZ0#Xcn9 zVhU_)`~|revgEARvfT8(rGd8K0E?Db(5$>xthp;-xTG?+-gE9*x zlpu+uUOoEO9WR+*g+JHMwmg0JE`tI@vvq2#JH}oR| zx;%lKmcL-*7PIF|XxLeGf}V4M6~ z(tIusRvc>4V0zyxMTE{jq&Q9ytd;k!IOtr`V#OnjJh$ORmkug?zO3fFV*AAEJl(JL z*oF^WKB!ni5vE{{n2(wg2|+c5a>u8m~!xHw2Z-2_7Vm51?@;$Z2irhoBcGyOed zcgt@<7(Uz&ctEH#Zc8Q;Z|5mmPKTkDbfP@(@(BzuH@q|!GTwsiXmuR=e|*+|B6(-p7I1&XQ^N77tm z$wf{!TJi`DBMrQ)os1mM>rG}}NQN86b#PJtot%wiEH^#reeIdz-ZXmKLKVI3mWj2j zS3F|TEx@H8=(=lECoa~qXqKDm)y~bhXSO{#cDNrGIoa69BivnQVHKJyqDn_%wLclY zI5)t~gNbrB%J4BNeY7inSKgI4M-1Vj8jEIQi6HzQzYU*JbR;jo4kf?oJ>Iy@Ce8CF8I(*72@{Rm9Q~`MV#1`0%aQo$VMcO);aO(wUKbfhC2bHHp-Bls>|2Rk;yGGp8y6;>*vAE6&)15^8>{d1Mkd5ga%Up9Brk=`~PCzTpa=Qy@K zHAa7T_G9a7IX*#H^z^=XbNVT9mDwDkwVmFpJgPg2OnnSC2F+kK(g-;jD?qL%pn$vd z)|lQ3+Vf@CgK)^L19(agACg6HjX3tc0d%zYifm+luEG!F$Iy$1J$Gj?-P% zD<1J6p*y~QVx+?MD6iE0hr~hO)E1>?Ra+2>MsCBePaale6s+brSPxmWAk>fAhL7Al ztk_HutW}?5u`u(9@bAnyk64#FM?8^#9Uq?KO|0iyqS>_?C@a5*tm}FUG_X%CvrBg$5n-1$*0)$JvMQk83VuPvduZZb|QsU2;mYir!15v!V>thqaNOo>&e# z4&~tDF`bS_(AhC$tJ?*IUGL5$%sw2ZJWxa17plP|@d_-}Q$zYQHNn2`WeBWLLk{m- z(J}vOuR(5mO;Z^CoJw5g-iP`tR;a`CJMi*g6m<5rM2lA5ZHpp&Tzw8<;}VPBbtwf5-IUSAcYovHmalX1f-Ar9xhYdQ4z^t$v1G<995D3- z*6{EmY`kOn-dLo2hNoVVh-#^;$Wbd= zNu1IZ(P|C(lQZ$K>ViHhTOKaY&3FpxC0$X7=T*uf`Qu1ZT7Ad6_R<>nUC$u&oEAb> zC#6rXJ%jc1FW>ZRZY8^(8xMX-t&msM-}BDj&UxV72X~3aD`-{m{reE&G7uFnxd(Ft zAHp>EfygE^g5D<^4HH`pKz}CxJ!5j}jSEpx&c#XdD@3+kmd|@l0(iWocNTf;P!;X9 z|CD1*$IayDsGEwEOaa|JR{&wF^QFuFG{b=h1>p7anDld=fQ;`JKzyI;)T@H52a<<5 z=F(m>oJq~`&yf4c0ImIf54yDd3g>Cn{k?Pd;Ckj~c$n7>De3?9>QK2Ai7XyKva`*_ zQ*awrm;Zsux^6JD>K3ed*Z{|oJA72X2@Bdcfn_Tjl9#l1HyB`Q9~owd(JHeRvZf>3MI zmNeZl5(B-*b5V`;ibn*Fyn(CRn<|oX{Wy-u@lPOJP(u2fT*cCmSm<@7B_`7IwG?rn zv#H`SMX*+D4#dKms1_?8QMmL54xeD6n2_zqdBygLjk|(?DPq?o6NM{9uvTolJR(p{ z37e0SOAK#pB!#_W;ex3$vi)#fa>6|hJnEGG#q-sNVqsVLfBVri@I3CBJjhwUb~)D% z7R~mF{zU})^SCj0kaI9auvTolJmT=QH;Ux_qaW#Xz)BMkPROD8R)%I_l zWzC-4?Jz@YZBdA#J*qlCjJqj@er;bpFKXY4#+BDR$?q37=#-lVQkuJ0_S~~S%CXfz z%1hSBDjxJl8|0d3`6@4}aC5HpA>UMblb7G0i(NOz!^bdfq^zwiW51nv-F-f4nlyQB zt?2X0LoC^v3%ibYM%f1EVE>obPvfrmW zm-VrEo1}LlboZ==rt^QZJ~440&Rp$CrfK#h?za+P%+24BMPAF<%!1EkOj1Iy|4eK0 zZiP9Q$*>5vB|%s}Y(1_#-H-U24Im?TCxUvLM)16wBxf@VJ}-H`@Br2^Z%3Z14I`0x ziO~OC6I{C+FK2TGwk29;*=Z#Xh%q8lwu@XQ!*cKlmAd`-=XM?PEq?@uVENdLgWh8P zaTj)W`Gp@%b|q|P!CJjulL$);m5`_U-@1&Pz>Qe{`fKbo!-KGS0*iJjN&?-<^zR~t z|6M~a{>GV)12S@>HEMHd#`gbCiP?bo&MmZuXXX1=w5jc^a zaAU35c6r3$L%Z>?noL~c;=xrkvV4xp>26*e(SR9(Pi1UhVmq&;l z0&(8?G34@c4Z_~W%)WQu=O)6X-Bs{p@ZUQJihe95DM^>`P7_t}+qaW&|APwply?J4 zbWg&AG*z^8)^(WNcoOWUsh~o9jlSofPU}mzUw6l!rVk}cO9!LW>#fk*7pii$R*kJ; zqbET7NEE#a>afNg53V0K}TL%)=+3?>P-LJ;NXRn4ExKG3rQ3 zZvzbNa2y&OHIU8Mjnpg01%pVx#qqd)OD96+VwmhMpq>54O4-;>w=!T6-9HcWIYe`~ zn#ofMc8rl2=BjfU0Gqw=e;W{uYEtanJy9CgqYa7ct%hc9>VvX1)1dt{b+r3|DVk)P z40gNe_jH6Q`m`mPdgXC|7F74BRTSLxB&{_GOqr#Gbp8)lR~;8+)3uipX{9U-43Mx; z5tY4{dqz=E#O@X`2vIS>#%{y}3mY2|QDV=~tzauQn23oeit!DP&-44vynns^-sfC% zoqKoLy{zfy@%MwEb1%R`{+49}ji_^vy`RA0_U9$7fB;gP1{Hp*aaReWhCE0TXj;cPDNrqbeRTd)RdY@Q$q|}t&TL%gp zILh-}2HE~V=UKCZnXe)5Z%N_0MM#YgU(T8gN#6Ju{13Z1JBiF>mt%d>W6E zJU9YJ6&}qZSI7O05)r{cH=wa~6X}|@_#8M2KNCOcwEPOx-BP6PG9^IZXf!p8v@GWS zY{zLnQ!JbKy6gS>9OIT<0mDs2>M<)b=~(3mp5Cv&bPY{eLo<|0avrY5n~-Kc&~>FxX8v(lhwl907r&aEAO_ zboeu9b2?KRkmJovcRe6pV{B+6-GS1Jss|*r)!!+VnMEb!d+6V3tGuh@Xj@h{_mNb6 zubF^Q>OLavf7;UQt>&ujBOmg%v;R%P?8p&X9PySTa8&=Pk4SES?LW^UBIa3IvJSnb zOX&^z2pl*HXUOY`H{IDGr>{!VPvmgQc|6H=5u?}tv?{`(H5aztFGuSz|R zz)^agACvjnf1^Z1cQ+5#d&XXA%1u4tIdBwyCVrxEkOR9=^IEy2rl-L1XwPFp`r6Y* zR}3Vd-H%Ddg#Tt|IuCJRy??w`_W#k7;iz->ACosN?f=PLL})*9V)VldDRFB%fdfb3 zXW}Y+&K*#&xycsurwbge?VpgurVjsb{OS0FxP<-X<7e*9m@tRvl~SRvhk(FQI767=rnDPp69xta7iDD&^&JY1x5T zV%)PO&Gha|jx;+@-sD=->$Er7ZF8Qq7-da|_4ef7?OCrk!rD^`m3Q?Z_U%L_@!DfW zC*Qgt)U4Vy%^)4ktmx-qwd&RW*bdk_il3!EYQ=&cW)Z#gDzYS}T*h@{th@NFtvk`M zC()UWc55NHBCNn=f2pom|4&Nm+429eQ32^7NFTYFn|2_k|i8GW93^DXX`PjvU_(Cp?hoMTU$NVu0C= zxSk|93ZwZ6I<+_3F~Xd^Q0!F}kIN)|`J{UH$fiP-Tdc4I+t!tiEndRfhj&!Am|#US zbv_XHNLN+Xh^91v&k$c3u~7wmno_MXA4n^UXWX&;cr%!tBysSg`Z+i_N0Ow359Ao1 zm)Ry_4{_}FiL5SOPMTOmk>@oZ$#%cm9@uY#Qo+H=lYMVfE&X19irh?lPAVoIAX)Ke zNWq;_^5y+Ll2des_n&)CDjOW+h`frK%)@^>H14nous+{b1SBp-lV*hdQ5AbK@`Lw) z$R5?5XXUrkj4dcGhumiE*v6Ho2~{hoH`FCxGf$EUJv8WWAAO?p_9QVk(WHT;x|~Dp z7Xy9;?o7Q+PlYqV8S0pvCQ0?m$O^Z89MLf7kaC31d{*!LTA1O}nJ${4LGN9)lH)#i zre2LTXve9YAM4FN0$tBg3dREj#f>g}c~`-r$2q zlGNkODd=)#JgXe>keu52j$}J@Qe6uvApu_RNu%{`B|LkbtG<@*s&z}-C_Qtm1vjz1 zx`dotXik?ejuG4ozm+n-IpW*xi!hNR za1>pgMJ&w?{?QB~B5$W1Yxpx?+0RlEo&)n?)z7Dyb41+le5D6R;3&MVh%g&h1Uu*Y zfY-0dLRP7N_{8kZf3w0FDin_vHDn`v>qDuJC-0NGms}3fr+#ne66zgEJRkENGi~1Y z9^EA2%92-5UujuNqxKWQpX0w^@vrt#h!e}+*cdElc4qDchl$%vE&9tlh%{V$n5^xl zP2*gH$merM$(8Qf^mmCL{~J7T)Q>G3x>*W6v>BTIc|;0Z@J>l%7pbsX#(JL5uiZBp z5=YEs`x;GvJFbN!xY=9M$~;x2S$>tYNGT^;qd;Z8>MC&?Qcfbg+weN|&r2Var=ymr zCKqm1e;lAsb&s~AD}&=yZ@1N@8?xKcP2UTo{pXddgBO{4_`-JFcNw4&}s|r7u zG8~1``JQ^T$n-z;8m*Tl_0sRII>He+>Y%JoeYXBp$ReVY*Qm>mTu^$LbYSEDBoLD~ z_H?2Dd2%E!fn4RU!j}!_Npf;L33YLx7hl$Ppeb{HB^{mjOKPMmvEU7kbl}e>bg)LC z+nxwVdOx)hb^2!F*1eS@HKmQIrrMl8xvTy$n3)&`mqyP}P1TPhGm<5`IQbcgNr)vk zSE*>b_-7>7EtZ@NkZ6vi-x8;e z*~&-J{QvhXCv{j5f34!Co`WaVp6vcu4c3&;;SB5kg>0K#CCqKZ^W69p@ZutvUDAsk zEBh(TX}~u?#kosOr-gyuD8j-o=)bMx5)4|YTK`<|?1yr`+M zDi#sjU6w<0Q$DfzfAlWqz}&pzI_YrY(T- zW8K)UzP9X`75_aqs3B)I-WCveC9cRW%?6kEyo=yTJ3;Sa4!jb-_4{fI*C8BsfFqp;Olh}~z% zW_@~sohTr16jsZ8I+yD**!lei+#bX4@ggOR^={ys95QuQ9STQkEA-NqrLc7M4G3H* zB5;(bUQ4eYQEr-U0Ht}0*^stRNJp;QoWeINO`kj_TTK7X0L?q}gjBBj`)}Uo&aI#1 z+Ongn#|0+>s?sV^wGJ;o9C{FL{1yk-`f*oCFvSUN}KF1t=8YAzP zf4nUu-B;_;iC6c?zU%VIO^lxt#3?^vh_0V#k>0J z4U!&iNFQ5n;)suqv*1aat1y|L1oSE9w`c~|rCU<=$#El#$gnb9`eRd+JeXZ2yNBq~ z^j-%z!eZ<>__h3jx{38HmZVusrkWbkI`_ln#tp6$11}?L-)4*aKODAaKx_6mFg!6+ z$OMGd)=>PjU$B7H>n_Wa&|#;sMHf(`{(uoWGUS*9UB9gvNjRYLn7l%1UVt zE<{A&DD#&#)c@ZaDeuOfrKM7qe1$$sx-#4e825PY*U*;wuhgWIb(H*f@aeivtp4F9 zs<6*lFtpEEvfR8meZN_sEIWUiq!l-#Z=;OKmUCxGVCxoCGv970yINM9;V-4LDy7b-wjtxDznu6A{^W zGo=F675ElCis8P#813WGmIhzqoreoFc~+a7BuiT_G6=RGEpXs4D4dmuIQ(`qDDL!S zej3J1qdwDF3n45Rs8>9xyX0FV2YkficU_KEsD{>voec{6Pk8Z`**UKPm zXEoUpR4QXFg8BG4{W zFgmYMHtA3K-??t>>4YkNDRsl%U9dAIP~gDpiioJs3*lM+8_=n0qQHTpu;So%ezt_d z%lEgSu=_-Y^#_j1*~ZVdROr$k6Kbn!StleIyd(~Gw)JE9mmZ__vvSFUth#jahT31} zdRb%n47$ruHha3jf!7rgdS|`h;<*FBUIqvpIO^q&Tr%;l9+gV=a*psZG4QDMet3Pv zN6;lWL%+9q#4b^vYVWAM>3!H<1*7RMDA5WMIPkh6;@P?}ka;K^&W)YL=I~R+W9Jyq zdmcMvtb^Xp%_s4v4e0PDJ2^*r&`B8gH5z(lPZ6@h>xzhNzw=@45g-N4o%4u&i5P-Uy_1_tnj+-EegnzD~2@n zXf0xCvvBA-dnwrV4q#ZfVLq(8_#R8$F0A~+Iyic$Et^ z)A)FthJKq{O=6YFyFfX2VIFUtSe~B-nB=|VuB(E~acb!H@*@A=e(#9shX!uq zy@|$tN2S2)lUVNDSjpbdiW;r|PDYMhMotfCN{t?TC#C~9E+A8Vroqc`Zsk~$8|9A7pQOSMV(joooQo4B^cl0x3 z*TcQ~uca|tN2#zMz)Js%Nh;|Z=T28_F6CM2T}YDdfAeP^kFO~cP8-rS39pFhVLi7# z%M55-%uA9nDo1t3$B@o$_ljgcbmAN{ z+oksOPLh8kcJkr_bvKKCsy$bW$XruPY7w4JQnHJPO3Q+7mea|FQ8!3r0}EQ}lF1R0 zdo$^>?J;n!$LF|D{{Ozx+(Hac{>fT6)bGUmnlR8=)15YzCE4;3V@ERN-O%CDT4Arw4 z?*5GV#(UV)02f2Lsj{{s>1MJ^YJQ;~ydFPG$O^A3B0d`=NO47Wa3I8w;U2G;FY$ss zJv)i_jcY%Fa||95AT1v32Tg0ltnj)b;`%RVWz!W!%5VNl*%X(SwBUmk4Y#&;ZSC5U zb}9bbhrXg+OB!TusCG=Dw6D;3|# zZAegK+Q;QRX<1b}VWT6@U}cFB zcqP6^UwjZ2Jnqi)9$2x&%c*=W@;CC*v|P}lc%|CTEqp?3t_ur1)QstQq>-TF@8r1K zQyFVRyplqpvN`}a4!AI#)MkPf#rji3oYIVfoF3hn-Y9E9i((GU&Gl8E!w|l(BRid8 z!vfl+kxM^n2EJ{58`wX-(>TEm6kmRYa^FcLFAiN(YzlaSTUcJ`rJ}-V1rH9>M#uqXY!zJ9a38EIPpt zv^m$-;T+a)g!eCQgWSCyAZ22azb@w;nJS)4o)3G2*C;NgnV0ta4KL`Y{A z!mh2m;M#G2fdfZjwakCj7A=6_+c%)ehlvcUVjQ)jUN)&ns6%fYtlbU26}%A6e!K-4 z<3$9H!rGVLUS7Wd)Y0c){g&wrYg`-^zB!xtHPxfjpB&^In#HqV=*t6e=YgMqz)@Jq z^8VDmqab+NCOB;s#IXLvQLeLd$pf_k4Sg7U*9C%$3q1|dHXu0=*-hn~vdO{xA|J#s;Rd1KEV*MXP=0tHi%sJ$mKQ78!FZ6lpO#;rglw zW$Tu~3`b!;5izyjJGf~uLgha*9Q3xOkb|?D(XuHKs&rEzO&{@p*X&XS&PXA$=6}Dn z0bcJQoFk&AhXanf5|KiV8U2kC5q(>Ifl*5)!CgMDF`}lJyh|{l!MYpeHf^pErdgj} ziQghWUwfUrvae5{=darxzgux+xI6?3yy*l0U<_ zE=qH^>BYOZqJ>lVIh{ zCtLGA#iLI;GWXe<($m5cvTbV(`IzS;x7+@Z#GL$2J_b#dLytTlQ_X5f^x9f?S9fKS zbYkXH<)2i4hC8t1S30cNk;Y`0(oNIixxTXAcG&5=^-F_=6 zt@Okh>$rwkeXBWr%_pyp(F)R_gu8Pk43l>mwpUS{|1g9_uCjX&fMM;3(Xy zn$NuVOpso#S}JYd>&tNGY8;igtOG4w-jELNXT$aGQ2n~fd87NXPS(v?@UnK)H(Z-` zV$p89XSJhiU)N4pO?J!N<47k~@yV-EmpMXn(IK!m{w0}D_Gb8YFFrx}s8=@GH@*q& zHN5uL@B6)WOe1TKbn$strV)LLEL&zldwedJPXwJNRTIr=^S96C{DmjU`zK~pzr36y zPMM#BRRsgtqWBMRus2IN5ALbAdd7}#9j#*!3x~K}SzGbBU`7dOJ ztAb#4kGc76+2lZScVc9k(>J19_p^*01m@;1!pB9eikrraC2oFBkBo`1#@6-etvi5S@_hs1Dn&Ujo=Niy6?Azk+zL$$dsVk zF6Q%2sG$Y1Vmp%j21m5; zUIeF8HQ44&Lj(@Iu88RFod(VO-Uj`IA#5Mtn`pw%)}`1m8EbVB5n_HE*4BK2HyMK% zj=~v=h|E(L;d@0sEbcgponOgoF}&+cdb4C1D}Bt(?=-gg(DvlPjil3<_w$bF`%Y1gskwoA|mA1dU)9B0&F+-6*zE|7w?*{4A7;mAJm>s zID2XdbR2#YmQS9@u;;)TKIxN1O8V5LWZw~v2+U>h?E5_kY&JyT!0U>Lt#fC>t|e#S za^Vbt14m)^!tb~*+yd>rRzRg|0K+Z?M`b2ulZCvdUuaW%*5Ik<9(eI!BQ$iH$*||Z zXc5sYVIMsGu^0x9^JCaGV6=$PY_StQc=mwh+_6;g8Fx?j8qwBOyJYMK@Jjr4=8xXc zU+=6s$~9E*9~iNU`>43(#vo^r_;wtrW?hSAh<`WTy(aYhZ%`&yxeSzRV zu!ERbo<}Bzo6woFYIgw&2Jx<3GpV{|;36R_ysn5?Slt)yERR*D8iumuihPpsupaf{ zJ__qy5wSVHFDUB8D*M+96&wrp93o<9gN@MGq(V6%GML5jJ(d=2P3fs45i-`%n46zG z`#KtOhubQhABHd-g|iY7*49f|S-qv|lJ7T_-&$TGCes?wDK*8a5VK39q($ zHYINlx$D5^AVn=9GeaYZS4fir=<1UuhPt4Zqi%LF>JnOSNi6G1$~wu?$$iAEB$rRoUS0--9j35 zp_6x+)36(XT#5>`Rn#|5eIWOM$VXj~!9?plW#dURvI zPIje3J89EiuXW|EkzMFzeiF1--8!;&Wf$t7t4-7TRC11k^@cIUOCweFY0Z>LUy=xe zrgX~qwJJPwbm59ba{Gi8t#f1+*SksUhq1sXN0sej4cMRJbHwPk8J+HNPcCZ_OQ!TN zqkF~{$y2wTBjJgrbg=h5{^Y-u6Jg!l&9FFpmf(u+3`-?(p2jp+k>`pX5!Te62Y(g5()TYF$gdC4B z+s(0ulW1X zBW8khq{f_WU)PsyZ_tst&()?Y-kx0>28kbrLkGE z+N)qUZwz90w{@haq&if7xJigQ(53_J*QyRpAGC}kdWPGu_AbtBzt8yn@4Gdb zq((RW*Q*t5wPE`?B9S9-)HjzD;`RP-l!(xF8I$5QYy?EPg$iEnb=haKwC2q}=dU(5 z{z8&o{rxxZ2-N&3@32vywX$+z`1PR{&eYORhh87@-A#P0I-Jr_P5$r%n)Z-b`;=}p zAxf8q_*A&zS2`rZnHI{rbp5v489Y?$hvfLF94^<9#PH) z6T#!p6jrxh7kZ?JAuTOm>XsMXnHKr+zM^y2x~11~qT3!B&lLg%^+gkAeOS< zh>gp?N!l}O>QfIic@C1Fl-kRYX@**Zc$|@cVF2d$wS8D%8Y_Pr^L5=!J}35nhS!<2*YIr;GW?F*#OK8A zxB%}Hty!OtPHY8bWJ#Cb#AfzQ8T%-_53w{uzF*iR!w?7IVI^P0S_87t4VSo0~GmX!i)uO{YC-Glr_xrgJ zwBRo2`wS8|@VX*mbKyBiJX!{6zeRV49i51XEVu|c9Sh)2qfvsp!;Vfw{4U!DH{HI2 z*W@7#dnfGG{KxP;y?h?42-rXyx4 z)#BaYd&FPh!0U>LsSzE(z#<*q4HTbOS|X$E;3UY9m(bBuFbT-g?2)CHIt;4fr_*A)>>envxB z%0U>tYAPGz$LBwU>Cu$TLo)ViA|kkM91Q!i0Ny;C#&8tQP()l?&=+F7*Fe^b*$jI! zj5hd`Nj}fkr$5|kPo8-wkHGmBF>qtw6oCV0C?Yx~^@V<4SHtD^A_tDTw>gWfoNYkw ztgAhFHmC9cxc&|Sw~nHN#2IR?$|C!t4QUTnyRVirr$BA6S%R_3P~kc7x+0>!#ZG7~ z^?>3a(Q{&-DI!|Gih>pV2$k=URr>9V?x-c4=wX{_>d>X<` zSLKnCmi6i4N84rWo$yM$8ufAmEXjGRoO38x@Pn8`L`>IN0Yj~uOWJFK8TK;R<6v%n z4xp?r+^!$1tYZ=?_(7bNh-m8k6&`g+QAWBc_CPfnk2M0@=?B+rN_ATL9kP{-*<`8$}tpuTFWc_XN6 zB8{tzldnEYQ4LqakO3nEMTRw%i12yYSoLK3SM`8U52oDS zlUDm0(O4&Kd1;59^z=Og`lYLujJbIQ(qI@{f7^(?GrW)zH8PEKZO(5dtW8(pNi=+V z92v>yG_;zQ$DP-?w)U*$&Gum4rH5)p(p8e{X+ft>;f`o%A@LY#PUoEh;$3x(w7FwO zd)!Lp{^M3~M|St967CP^tit~VpTEK@aYg1&V9kK`5V~G;MS)#XiL~;sE5Z&*p{VnH zH&|cv1Y29ttEE%`c@=I<8(C5bqxm!_j_4on36>mzqwaV!65Zb9AI~8oj@+?PehweS zp023FRKZ5nGvhTe9I#n>G{~4no#OwFyesV;X+-Z|dPT~*Zso6)XVGP;e62q-ch&_Q zWjn%{_8Ik>tQ=jS5)o&Eiu2fP5 zGS<;}C0~Bz1f!OUxfV+%poFj-d_Zd7JO>&BppGwV-C#CZ{AP81lm8_GK+0? zYcA@rP_Ajio?1H!ni?bUN_0z6ThP>46^n@Tt8YSsqGDJxXCRBY#K@v$S~QxUXu?Vlt4x04ci0{1 ze;^l@r3_;0<}z|?r8bS(oFpLdO8nQk&2>moWWc!5Lj`4tIq*vSF7l34Q2ITASk)l5 z_Dd?+R=*AncDNv8)rVE4LNQ>#S;*%-IR=#YFdT)^SkLjZ&O?ttCwL5(H;-Ugh2bdM zS7{{TsVxty>8 zhMIj8TJk-dZWT($-NCGtoJXcyGo_^icga|{VQyY8d2$pI2lkK_@vLwZ z<`WSe+owP?$7{-m=lt1S-jC7H*qr`;xl_iP5p(mqmUp8e=xVBK<8N~WWr_JjMA*C- z^(MQG(yw{*RG(gdCwI0sq`w_DlB(pNB;3Ct)n2-hX!iO^td}&VCVe;XU(UHId$wfS z4E2d`gD4KPL{I`Kd6I-qa!NIl28vO*Bk<(?-S5c~-Lxhr-t) zf0#6SuAt#qdmzTKe>EJ|a|-@deIGXU+718`Fs4 zdi=FYANNA3?V!bMzl~y8CzkR%GtX&wxW=&tjYTgZ0k6p-bR%pB?pZ^%R1)VkIHS1R-tnmOh zd}o8-WIfjjemul9K-Gx;Y|dmg$=jt#ONM95SiRttxXS2q z3rsb6t#4jGp*n~;M1*VcBe1%h4davpS@3AS;ZUSScO76d);pM+&&|lZ4SrLL!S08* zps#RNB4U=^V;H5E3#)H=3;GIkU~c|N+^vS;m8H<3W*|E|f)T}A9s1)$yo?o+sIQFs zCqdnm$54H5u%NFn0L3!4+5%;7QoDjLGDLc)Blm!y(kZR%1*Zfz&%YWH5yyLBu)@%9t4!t08N zIs61&rFjBe>oJM->Xl0FchsZ%l1|82Es2OW%TI#raT-=WnZ$4u&QL`7#GQaC`P(6K zpf6inoJwA`(x*$89+k0L!rTgldF+0;I5-9(Hv2Ffh51CpS>++<^KKCgK0T9RRfN%) zTcHTMF(1aRSPBXDqFTZVNt4$_&-^l^^Sjm7;chhC331(fz?}c7kzuXXzdrAsVrfjP z`_$IqymLlC!=v}J*y$nd%%;+Ib@=y#u>d}!y#ZgDL-!o!6A7`;cv3Q0sX&fEZp z8-7(ESR!gTtlLDyi$&3}a%HOP@H%tZ#p_u_dvQIgAGBM>3JG)byGw79!T8xV<)1`< zLG|IRM8vPJec{-nSmjlNP?ml>o6N|qPg`%;En|g*xp}v@dMiLZskv0Tf}d7Lst;!+ zA}%*w0o~1-OOsXxv+UP7M7B1gK5h5NSRr9<{`XRkBw>a$ z);^e<_sbYs0}JX}DBs^1&u|pZN<_Fj@0D`e2Cyj?d?ft44b}!U{p?E;re8<6cd1Y` zAMzZIeRg64tW4O@fN1i^s+>4O2ubiiOl%IkA~gkziB*F`WWW7ua%pqz`4UB*id6;6 zlEd1TT+tMepH=2`yyrH#qE#W$V|*@lpKbE&Q@qDkwK;X{xsLyR=#I2hg*zRAq4Ok$ zJ6=qUwxNE5H0a@$?rx9Yw4sgoK9y;x5!XIeEn2Il+ARUY-`yFG3R}>IYV#el$)P6y zgJ`9FO8q60;Z~)T&b!aZl2s?>$=4kn{}x99~qx zmfvf`cE2=bo;_2@vo0od4Qs8!dJZc!-Uo76JUkej3+qmd5)e`6Qiw}~dbH7XQ^`pW z$gP6E3Xs269Io;ta9M zTL+T0HVT@@dk05c>PK!R{3eI@Inb981Nl2xX=$mPkYUQ4HV$GEcU>#^^xREXuS@4n zn9=$+@BUH6b32>U58eL$TcIdD^+ZxQo`mP^hYQbvGcmbgL&HO~>B`b-Uaf6%c()YL zIuZ5_Ad7RbfpjD9ARVkNV}IEhWX2Vg{<(pBEr98nAF(xGBh*r6*zE|c+-29 zb-6P5t|qgx7%lh@T;;}Igzs~LM_~DhY_6*e;td6cpmc;7HE%WcTCo* z@p-YF%6w8||CUS{`(E{p<`c7^w`7i?J^x%CA6X8uA>0)ec4y%`-jS+A-Y2v5LJ8lU zAKSHp%pJ}z_n(ajA^GlZe==RR&gD>#|F}F6>;JBr-1fH<@VhSjIJEyb_;XW0?eI4V$tvv-!M6 zRN2NHB4XXKXApGGfL&kcEFdsn=YS-lXs)0KGHXv8#+pBeoT9IwXeF~5LCIufrh>Yd z-ITGT6A^c3l|W}5T{h0rmEkCyp@>-K@ElxweuL8QZi0ivXw1#)?c3k-UaU!=G1Qyo zYN<&E?^>l;o+e|rRT7s>n*GwG>mqacb9CPK5?=30gLg*Wf*-_=PDIT9T?h&7zJqC| zJ8L&iO=f-6rf$h8GWKVfn@`pK{1z^sNrt0u1_*u-XC)$5B$UIh*=p$hZ~#l*o%6d5}&%*|^{hjU=kuxBvN)LU?nI4cq1EWLt16S5&+?Zra607*Srhdv)3FK}RP zg(B+fRWRFA4LNb{Y{h0EehYMIy~y)2_G)+~UW_vSz&nf=zzr+DQ--`Hehv|FZo?S} z9=jh#-k8GrnlqyBUzZx&osqFW!`!?N%l>!>n-Bq~EPWV`!h9m4lO^wqyWeVWeUS#JT!29EGzI5xWX%J3yaRFZvw7PA2htEHjL$ztvtD`!md~P`uc286KFP zSNH!Oz;G1i6A>TMmxFQk67@m4fU&h1#A~YwZ66ycV}FLZd3Q>`XsGOv;`&T)uHZQ_ zpNMD?8vq*9j8ek?EM#4#XOhn8^=M1(im*S!+9MF8{)shiUB=R(1A;;ckO`OoEW zcXV?pe^oHEU7AHQ8=F$a#7G(YGtA8uS$SVLa5Gl9mERt~Q8+6Ranfc56swv`la~iG z`v~3{Ypxk}{uL=>e}=ggif7!V&ev-$Em$pjPRu7FzIaA~rrmgHTwDNqb~%TH+&8Cz zP4~*!pJ8r=VtNlvR6A z60Kwln&$eVjI=mNChO?ZPcgN38iE=+vKymjNJ9p95wd!EGoS2@w4|=f_Xuv1cOB~4hZXx; zN+$iS7-kQ8ah&v&EUAa?FBxac?*iPY%f8=QB@L8G+=)F<ve^LzWJ>FX)PG*2YzutKtycruc+57r(4l}dnb3gl`dr&9?A(`S>{^>$DbF1G zCA*sgS)t-y_KcyMhY^sT9W?05*6UQ_%&;b>GoZhR4s)GDS!VBKa&25aYM8!X!fq0u zPv+g;zVp3vgM%=kkl)Wh&J=q?5#j7O6#CT*fRv$g1%!@u3VHtiuOGzTkWcRQIRpbn zt_Hn>GXwIc3B%3D3z>W8G!rhE8-?49P>2F;F zYPd3)bM$rCBweUl1ukX*LRNTP5n=Y-PD*Rp0*rarQ{2r6^F5kwN9#z2w2|`?&hg8} zUh=Qs0`gTMLRNTP5n;JGURl&g3GH`=GTbEz^ZmJRM;r1JN{zy`IEVW$JLyevbFl3t zW`)-k5vrL7r9!Vf^(fvq3inIEeA|5OX~ovRXR-JW*0h7t&4GF9D;$BN=8dqY^(X#~ z5)m_&#Vg&$C_xn=J_pVOqj`;NMZB_*BRX;fjbR44jrex5iDb^b^UZA|g<8hS_Ga{S-3nsZV7XA&;Jw>UG?8-dXtIV8BN>jG z-rtO7f2jDU`hhDU+<95}NqgGeag8tyVVE6fb?1Ns^=e@H@9i3WOFzlJ{T9D$?o z(~5{jr<*8U6BaV3d9wg#h3hkE&So@z*;_&@&+%Hu@at=&bdaSH4s(Rp3TKG>5Acq1 z=223G+gRy1|5d|%25^+CQ9F8FX-P9q@8BFAM=gX|fAm%4x|h(k4)>(S9qf4j_DN6F z$E7iv+}2HyChgrV8COnbQ_iZ%h>xAAQ*s>HdM}x@dewy* z9E~Hh?STy2(v`l_i02&U*(YG<+X<=`B?(f%A${ty#-6q=oFr5xviuEbk4g6QehXiY zNOz8h4abKt<@u-JbLt8ybFU^9n!jaSDfn{f3Q=|bMppgO z`h|#CS(OV9%K9+Z$JKD->=n{K;5%usj3UJMVpQf7i4SFdo z*r%DcLY)C4`mVl04&M7kl5Ah_-}B9To8+3J;N$kw){2dP7-SX7=c&fH^Z(~ zz~HC%;ZCzY3_Ex1=tac%<~8umJO_54=p*bqv24{RDC?XBAB_63GA({{>VP)= zJSJ1dE`DuP5(&=YHRQv!b%wlaHP9sEEI9S{5-JloLlM!VjuyMLC?CRp&FyH0%q z>*>9O8URM%mH3%dBM+i!1FAsqO zuPY*SZr=jK=si&9`xwE|V;A3cF_6+``gGTx7|u~g?gmTLTcF3r*+N!$T@kUQDieY~ zu7x4IdXBw5-qjTmkQl*_{KmlX{=V$AJD>Wr-hgfiJR)NkFCylQ&f#MTeBr@=cDtq;i9lZ!QgvgK>w zp;@|mLGe8HXkZ%gI&Vw^XYZ4-!^SJ|xt2czVQYpSc&(o=R1GkPh`6&m8X8xDtFGo; z)}~`R+5XIgE?%=&#ts{EbG4Mb9AX|WQ7`T#Rt<1gBBEQDo6z)GJE^kiRCbK_{#(?p zKK;FauZ$fw=2j>ow?%{Nedb!mv%*n0D-mJ8Asd{she$eKrn2I`nWX(1Q>y8@PsR=# zb8}zIPoq5Y94hTCohnofFrSDpwuyzpx294Y?|HVfe->$X(~O=PzE8#u8*}sh!M)kw z8!<%ks+=lR4RBT>;&kT~;AhfYI?NsY#);Wvn4<-4_+_8q$uT$ojdF~Fr>5hjwO7Qd z0nSQ9jB7O>u21%r4BO3RRgpR5=K)J)UchBWs30U7&f%+06j&RPM5r<+N)7Y7S&8)qdV7F-AeyQ@c} zW81ldME7H&lm#TJQ6u{P#{n60bL}(A20mUMD5cpfU^ohAB_iJLjFpt0L2T2IH9bch z(4%vd_f@UJ$1*efaLu#I)y7qx_^iUw4Wy-x<$v zt90S#dY|yA?Emx%E9HpcE}xVqI08o!p&7Ga2rTg_Z1? z7VT*dey&rqPwma(-=lX(YhbPPg-_4MQCQ=Oh(*=|lijPDKvS(HEPjN7?z>+~a$~Dq z7g_uv!<(0p@C(%Scy9$A)~oE_vxAir1}4Y8Z32rp0!P(r^M@4o`x_-9=6tUN4Xv;6 zFw|9W^tiUr{#_#Jb-o_0(?gG|a6R4DZ14>`mhvhKLf7plxz2A%`PwDKvHd~9qTZ0! zd-%U!?IR8Ml#_E$YCBphU!Q_c4Nt&OpUDibGdy_y4A{?%#{Jo7p6iT70=@Tn%& zDWzo1FbkE2!8f8gu8geN*_*$*JvVfR`fr}WK*c1c8&X70KGL9jiq6X$XfX-f$osMe zo{=XMT_+Z|G-yoS+OujGrhHL%>@<~?q(1;WA#KyHB67L$Taq0zUUjCTi0ofqPF9x3 zbB?7iJF{(ryRs(^>y<}NW|LD*-jkJ`a#Z!#WRY=mK9Gnm_HMfavxq(4ea+}o$Pvmu z4<+Z8#;mBDGsFE7a1Ri%?+2TBR9f)JjHz0=G2B%Fqus`KrTZM}Q0wxC{O@B|@^vXj zPlGufCjtjvS48Bb=Se<(Zy>aPe}?-dV7{KayVAOry7Xj+tDK{XSg2^S78~-p1?%~% z2aPkSOJg0H$W0dZpgZUB8SBHF$bG81(`UWv(j7K>{M8M;d}M z?~*@}>iNcG#+zjFYjGt>>ZZ>>?U{peq=8SJl=d6^Sm`)tTK_^l+I_@!w~v`!Xogok zS}KLQZT#Jph8mmF`V+!=R>=dtD*Jq1!W6TctG9n|K$p*dM{X3FyT#=5Ido^<3L_dHg+DYn_u z7W@p2^`8A4Vb}IIXk6^Ye%!kzI7sXPkG)PH2R~I4w>$-Zj;%Wt?26+Z>1~S49`gHK z2`zc=>&}UCoeilZ!J-NM=nyNnFlMBKS7Vxetahe_;WHi9-l{vlQT0l2kk|u8UPvG< zru`uCYrb>D$3ji^XQK=2%RUHM;Y>ut_(e4U4Q<)TlV+lWM2@vlUIKY~wubb*{h4#T zaIV9m66}~cuO(w|iPseo6W{AHon5Wi^M%HO=fpl!``~4AC+R22z5AAPcsTxm%2&oG(9?rmT9QbZA@4@8>#B@BCtis=Fa1}LbN&(NWr*Gx zKZl6eknsf!3S%H-#z2PsE9Su5{C3Saedhc=8R`|uY)H!_Qh8m6=DMWI*k_6^)#Y1V zcD~hZPbK!!aTMmVIVkmXPHXuM5r*E;8!Z$aC0 zC;Unp&Ttgw6A{O6ZvZ}f0*rG51P&ZEW0aZ{J=Uk0p0&Q#qy1HA-Ek(wHJidBlxpIl zV@NBS9+$BP6cLwfFMxHY{c!c`WWlB4XA%*%ytlfy<4U;X>&vF|IeKO#hSc2ku#87K^eP7%+2SFo;eNWd)KIocLxbh z7-uCS-WjIA1KlF!!Z?4{qdb*da;rzfpX`^hYsB3Ao4WZq$UUL2OxPJDIANTXh|n1o z%ll=RNk>-%u<-Y3q;yk#I=Onkj9nwo9!0Kp04tVG0B?~Sm#{X6CF zO~Fj{kxx>-Z%X@H9FVbV#N2$>Qs)>nyV66tRTv;RVVsqS=-p}~{Hb`W?6@bGZK=#4 z@omiMwe|;O>>4pQuW}CG2zJ#K%I7>Q9EGzI5yi?Vi1ZjQ?csad>c&~bbE5@a)Bm81 zT_fh^^()sEP-@X!lKG889EJHrgwF~SXq$XQIpx@5cE3Y5nefAsYVSWNW7qh9Tzz#| zl}-2cA*34w0Ru!4Ohgnx&V9J|C>Yp^iHQX!A{Mq{VSpWAU?<&Y1`HI%E>uhuK~yZj z_8VT`_xkqy{_}dCy=Ltb+-KIBJ$qwrK6{|cW_sOfiIm!LnxKR+pNJSaZyBXsMoIpo zX0d+f3gF1W2Bfv|K|yC?Zr+`8p)viFeo{H>V5FdgaaJNCeT65r{<%)_vI=7bH!s6d z3p;Z6N`lY>0&{bYV?AkJ@h<7tqv?VY##&ZH+%Fu-HXYbc3x{2$mv0;gv)P8Eh0$Ai zX3_~*-PV9qPkbw@6OKcu(tyls_k};$Mk3UcbT^?m&T+H_n!yF8Lpm2F}!E z7h-z}yKuaZ7I(<)*D&em0#l~hLdoK5a>0AnD>#%H0pq-KAZ>Ul4A~n2@Al_FGl$pE zb8tA{C)y0}&74d-(nT5;!qj>^fT<{D>H9%ZRNX{uQd)>Ndl?IM^1eI0=;L}b1O(>8 zXoceY{GD_jN0e{`j{34O3!3Nr;}8+oUs%$!sdH4vmPJSl58s8;9!?}`a)@g0*!!T} z&xxGxyG-?N?LEj}>hxcq!RebN9hfplRkb!k!cmPs--BIi{zZw1JIh?zn=DCnt@~j$ z=D<J$`sN^(RiR5prnDhO z-4023E_UD$J#xkEf3vWUUNTXh=7<{{fuoA}l(&bj|Dr_150gvMala5Yr|%=RJ+F9C z_xS{S;zq$HD;uKo^Am)x8wEcjY{)(1&oI8Ut{T_Mirfv z{g@i!!)-~bLo!F~8K=WK>eWh3mUdus4by@BvLVM*7v$SRQy~AA4e_3IRo>nu74~H| zAO;!NIHJp>W~|I~58c|;gGE~J0rMJd(yrA)sP3^B0@rDiq?GwED`qz=YOGDNHrL&> zIF`~%6*G)i2}QZHMyJk!%byR>XF>!(XdYZSQw5ouW} zO`ubCm8xWuy}+92k|hsQpzq{(pia8P>17)9O^kz~vL4a-l*SQfAH9*T6s@H(yN0o^ z@f4bUd=C?6&4dvn7&tY54=LHR;Ne|0gzc|{b7plM+wWyctshNd2`9(XfK_(n$TePp z?KV}y(~c(ZwIy~L?;*;29{(E*pJOgrH+@An`Hy25vD%;a$BC`_j{`OKxE+b)GsXY8 zYW-J#l?pY}Xty`L8SYMqwfg(Aj-;8b9{HrG>xti(rl(4$7bB(_#7QTDYk@ z5`GkHUUinBOvTSU zK<9@txFAouY7@%Z?#TtEw+|UOKLdiEs^QM%E~KY_2Dr7)1@#$k^4>X}b9~&Y%S^l5 zFm}nFVSR?x-PEIL5R>y8(yo5s-;z`II*jNUv%CGA8P;bQ-RgKcm0N2cDH4!KJ;$U@r^ z8LKT3QQFIZ?Rs2JHK8NJQJ7CexSrQy7jA!}eQ$dRdJv;AH?Ko(q05$-J)q6G=EMpM zD>@NT?{YoX+aZ;%xar5eGgMTfZ+ zil0Ag==z=K=ve)p!dWWLN*@9*SpovD#H(Jo`>}f66?)mqpS^yW z1@Gc`=eREEGFFXvCEj7Y*EbrH`IuT-iYgUnB_foSKk4IU*XZVwZh}h19GIJbuXdlK zL47aK!I4AQqY=D5&BcJcI(SOP3KHv2et!P_9DQc(Os5)5VWk6dV8d`jV({mLj5Q!$ ziFZ)0e~K3UolIS7r!X9aIYh+7Z`Y~+uPIbNdz_$BF&cC8-@%|nnvxMk2d7MA3mU0m ztfMjU%}9{3q7xP5pc7YkZ|ZvLDW5{v_*ZI}*~NtDnH`j|KEo^VI{lP=G(XLe`WMd- zG$-Z|5iQsy`flgm+_K}`G|@2jI|Ty z=KGSUsr1a%a%Gdza|Jz!vl0=vhi#*)3dTvxI!zbU9p=E?3WZ!Xk-CKMmeQI}V;$FC zg1m6$x~kh3jo864&6&BPDPif=K+0FBI>k06QYP;Y_@!Fa z<(eb8qWKjP9$w|UzAEk^8|g?YdjAF0u+9PJhbofBJDd#h%YlF$zGTv43TN--LQa@3 zN#MQc6pD<~$S z6`NOJq1%Xmf+5k>(ziZ4b2o42(*!TOlQCZA z2Ol)xh(TWd(%c*FtYvRE7BwXcwht+V?R)14ir&{T3tVo!fUNcN_$OH2aIw_J(~ON^ zJs8&d*aKK}FAH|me+_zMHb-=I94l2lvSN`@-5HL;d?LcNy|3i0wUF5lpQgr>RPlt> zQ)YH#-JFpZ)l-A^ ztq)KUFr6bVF1jn3q^_gILq`c5cwG^(@NAj1%Wo=my)=?Fjbd@D^jg|2T^-G__JhN`wHp9 z?z!|-;0S>OuN&B#LdL|;a3f(Fe;r+-0_YZA8BLq~riYD-;I`K%kRraxTeAyca^WX1 z8T(D1*!BwiUG^EKq}QGHWiOw{W@;JbuFsq!EvQZf=et%U;Z=?5VRS0=AIJY~v|bfd zFAYxTTap3#8vJ_|A6+cXTAH7`=Jh02lF^YAyO@%(a?S-D$_Hlbo66s7gA|B^CaZ{e*(ye`I{l**`lK4lVuxx+gXGyBn&qW*XFi zO?j-zu$IM$1fNvC z9Cc+&Dm;Do7aBCKJ4?O!P@jQPgVm(B77#dU+1*sgIISSFuhnViY1g&cd81l7@q~wf zz)_-t9FVBNx^yq4Zk|e(b0rOW8fcN>mG@<=8bw54$Cq@I<14yykU#72ARRWRYLVrO zZ^>8#;+1&4kJC3gy>mJZ*bpG7RLmhFCa-x&BV8EP6K4+uWT>qL5#pF@qU(L_1Rv2m;TMFZY<0q8$4DUkf-Hm zWUQS;t#;u1C;H`86Fy04l%Ulx0{qXhnI)(@oRx?u)4D_NeQYBQcA3Ebj-qh=uNjGt zIVfYbg}M38QaVBXa{4I8SnA%b$^Od+WvsR^H`fMd___9q zSf#t8s337xA|ig>LmFE@N?LF)h^<_g50Ck;q;q+KjMWzA=Dn%T7f|af1Etw-CI|`= zXC)$THY%lW4tPm{Nn_ZZ4d=kLr!^^79Fnox!rZ(sPW|`vUfB>yXZ%P(LE@}LL>JHV zG-G=|sZa4lHa+1y97(VtPxl;>u|C7xyc)OdZ5nDhPojon1qF$-5)rfgkJ264L6YIh zP_}?isnhLhOO{p~ma(G4-25ie^i=9#yIKl;JV8*9I4cn`X7fmDyk(i>K6@71-nIZb zUbQ3Kx0kV+#N52f`)3r5{I*wG>%=>lAmfd6C2v)O|Dd48X~-o%8Qp^d4GFy>X`VNc<0Er zdaAv_P1)d`rtI+;N0O8C8A{)O6*M5$hP;Aqql4-|IlpHT?7%))I+2Xfuh4W^Q(qi~ zGvrlaubZ-z!dO}~#8c>Ds!BZq`rS3j-{VsuLhmRf9oHm3=hof9@=sM!;}vV9ZF*tM zy-5~0Zg3_Gc`s9)8yS%Jumy>KbqdVla$rhV7xHoRDUOIBgH^j@HKe8``Yg`ah?q$& z$mFv{aI>o+sU6mWK;J9i+s}|BG;ty8Zd~DrsRuUaXsuAGhCX*?$6r>0>!K!P*5@pU zHT(c6hntXAJ+mP*;2o&9Hzpn4W^hE~!W}gDU@vOils`o))8X85OJdaSgp{>816K2C zy_@qp`_vA~gyT9^|2>J@eRl_aozjc;ZZd=6sQsrhpegr&>P|^S#J4{8=(2G!xt?bx z3n~@!Va3XwZH~C}Uj&ZA>xzgD2j)=URtoi&3G;-kIv&b^&4>PFb>UbB*lhXV>uB_B z4mG~`J9qLp5rL!dYvR2>6K6pwfNWS$iN<_3bZO^uh>LXQ0w`aJ|8NN;aWpfb>iLxeE z!F7FWTQx~l@4PvTE#IrnUXRFt=f%&#Z*U}Fy*#ua6Z{gN!zrdIxt_%3a{Ivg&HPAeT4}N>aq&Is;LUp@4mjVG{{=$IE98q+58gtyh=pG4@;#D6q$6BR}g#oq8e@ly#}La`y|!;uQ1@_Yl!|- zE$y%V3Qtqtz~)(FeRw~zi`h~ezx`6x!ZB>iBL?dixsdmsr{QfOh2GY#WOIkpFmO~p z%nNrVtJj|4uiWEzceeCLFXc3Y#_U!9M6e9EAm2LQkkfCRf#4?QBwqji|C!Hu;6Ve{ ztcMjFW@W;#?#HfyZle_F(CIIn+E7>NG+|@|W@%u;Hr}!l5I73^0o<+iHexRO%IM`t z58-SZdjQKGrNF>jyce@pDd(uNFk;r86*T^02bOm|71m7EB>i5O$XNG_h$y8#TYUW` z4XySRTmy{2EAhWU4?R}}2~4Ft_HDpI_$7Soe#rfo{D9tjFzpG{MA8a1Ag5uf+G;NtSF+^i$eh zuRS|HECY&0=#!T<*)l%W6%lNLEt|Efkm}5L7kmcnErkv##xDo{7>I$l}I4cnm8=%8%osFnz!y&AjPBy%4%I7UjIU!^J0&{b}o#?X>PDSc^TLT4824^KA zygO<$S9fd5ehgtNeR5z#tqFC^x!y#9rmBkcEOL zgR>G5qt!dB_ncbYcOD!D?;Sckt1H-{;gls47c&2VuSVoxv&_-@Non z_z?L4G;6H+Sy8_A5Vm@e9$WwNigGCZ07rkkg@YQlzEgHp!JUK((2TS5o%{L&$jvI@ z_S{h%;k~$qCb@NG>n}W{_;wz?KRBOeKzwx#JT}zf`^3M+r|Hlg{nc$}%w%nPq(ifE zD`IqGhoo~wpldh)9i}kc{TY8_^13(^ zgH^mg_4rKwExCGPjWqntHu}Lx{9fU2hKM+qd^XqkwwAQ~#v=AP!GVN$HzJpZ-t>9U z+L0JF{5NC$)-eZStnKsVzLB{OxRzJFVS6}9L^&t3$Xp!H2XTtK$hrs!*CYd&NI)r;31pjH8#K*ACXK32c zS{45H3vHg*f;G(aBB@Jt$jwrFd2>)_Vlz#L>_E2|*qi|Lt;^NQG%C+M^(I;u6 z8FnKu+Ui<5e0O{URd4FN411q$>eX$GnBL>T0te1eMEv+XQHmIMiI(wt2JA*)zH+|T z_A;-4&-Qhd1I^C-Q2yTfihg}NPRI(cD7$V)Rk6QFn03?c#%@)8ian@C+YrP zMh^@LVc5UG8H$L--{YkI4Hi=^t5AmB2#n4in+=<^KEv!|A)Mnw0FI3>b z>xzh^paf~>y>8S!YMS6oV7^xTY%+4nSD5Qn$5D|QFHJqrldd$KE@Xw*6%p&eK(%ZA z9<|<yiEh6}>b@xl^7j9G8qDPtv^`b-donyK|0_M5^I3iF@Cddw-i?enY(~zv z{i#Yda3cj>Ovwt93RUjXcH}`nGeYuD^Cv^nrP1t9X(cro)`+G?r^C@<7R2vZgeo>F z4VF|}kaH?6-}cwj;ESmx@vE7|5p9MXmZD=1(}a}q4EMLk&&OvMor!4+T{6DkDvp?X z_mE_9=`g*VKVEo>;^&}<&@0?7>F-q2qie=8++Py&i3roT4lG>d!2S$+M>iIKgubgP zK&O9G748rBWPcSL==qjc^v~p3tr#0h^?Z-e1y4f+PX_xim3?dA(Y><&-kT^H6G~U8 zj?ldvfulCGsfNi3Z~hY{BDQxuA#GY#Ow)^o2;VDn%UqZ@w+8Z0PloB2)v#(A|M#yc z{CkyTZ^n9L_GYnfyHQ+u*8XfY%==afem7?eRcQRID8z;R$gyP`(#k1zZg8!M?X@Hb zV1M9m%`g6>UUI56Yh=-oooahes7TSyO@i>4-*Dbp6GX({Z7$5h+=^)}s}VSG6!w64 zb;9H(Y@|Y)Jvw2{up@+{G_8`sAw@y9b^XY*+PTYymAZVPW=EVEc84(fV~=E5J&oUF zKmC>?+MRFAM*IJ!$4l%54!o|2u)Ju^Op+_;!Q7St2aXcGrGrf^*&oZtG%wbjC6^_` z;UAi0cKCA{`$-~VdW|J})$#(pG`lmq3n?(6NQZ; z4q!7O4MMu=knMM`%eXcMbMu+^Pqo>4lT|ctj_8r$tVG1={Z{P2xQ+B?8DSso)8NAp zT{6|BNXEVx=2j@)FEL@Q|DL6qak5aogR>G5duFv}!CjZrkVEZR_!{mfcG4pjHJ4=U za$#=na<;H%^>^gb1@k=w=MHBjBL12+XAk?QQ0@0^SYz7^@Ed19W+r9G*ntuque($1 z*k<2Vv_?~AJ2zxNXWk?JS7C~b{Up2+@3?rgAuDvBO9RjN3LY8e5D`h;&DrU5U)3|C z`>}B@nNUECNLf{)jQu3c%~k4i6V|Q5m}boAFL-1)D-jV_s?Rj~1*(Yu#_X|2(2pGRkc*sHtQ@Mw`4**@#2 zjC~lq67LSv;tx$e(Z^>+$5Dc}ggHdS_~>HVe-G~~o5;t^+|Gf{)STpXJ1S!z26HPE z&z=<1d8Zmm*JFYOZwY55BK$WWq`SM`@VRs%jQJ6u2d@v_snH|FR9`8NGsxZ;fRcV7|hMjSZ+npu!U`;tq!vV zZwY55BK+JB&`&|$Qq8>SEUlP=UPgVgX2ww&`!JYWq39SokE$Y5l)VFa2Q%a?;jBc& zlWs3)lbfm1g`k1V(IpSOJ#5Ik+~YF#VK6s$QfC~XSkliGJ0Ab3ldPedpSU(g1*t)#ITV_Duj z-dnw~9oahnq>OzS%*{_!(VcB7PJ`f?*2Jj#h2Y8HmAL+39_-qc&&rS4?t=S)IYflnhxat% zmKN>RZH&M%X;C^1;a#lUFMm;PQf0uG%75MouVQ`wo=?=#qWd@kN8QrRfS7)~9~Q5Z z5fO8ewOHRNjnzAQj}WrLuL=7zd=@rGI8SV>-pvs>3a=|72Kpt?o9o_YO9#V*tW4Z9 z;Ku9*|H;bABLkMRe;IP`^{kpE4d0>MqdQGN;3)i>_+Yu6mNfCs05*TN5$izjz>kv8 zu=K?T*`&*DI2Qj2_Epu&j^VfA(ylMSuGdvZ|EzRjbGAv$eaTJb^X0tqNNrAZI?qvk z%;Xh2*UWi$#CpCRm-8N5fxI?ykTzF$J6dd)250r6DdT1^+!r2yD;vhTkO!@e{_DfJ zxNeuUGkejM9D$=AEp;IiE&oM{h`6!aCH10SG=HRsz~69;=KU-=B8nq!a0HH;HPnTi zdSLjUOhiO*$5|>})d{K3QD^0lD@NpCtG49rx?<3tZA7d!+mSX$9)VMu5$Q|XlJ8F* zagDPoUPtw^nHfv-aAGmmUS#P5U80?)C3JYho!@we@sk(SG`kOr{9(n8xTeCOxi6u5 z<6OY*P&1oUsC9h-D))t)<3h$+b%#mASu*b`hoi8!)IU89qAH(5GyS>>q4|kx)vu?t zVJBCM{uM@JZr-miyMxd5q-MBg?81{NFU&zpOm^Yyk8tka6dP&)p ztUSLXnp!uXBV>iw6%iSFJ*C|bm(rUX!x(mMFyB+H44Ak4JxmI!^OlSUpH$Xgzne;p zXA4>3bw$Ko{f<)c$U$^X-w1&NM{WO_4(Si8AYyQx?-LsqDec@ALc5vIV%Y1!8TxMF z6V zF?ZiQ=|*e})tNC($O^A3BIdR2z@p!Em2|A#SWZqVEa=>dq?9E=(KD`Ia`B&EwkB&PvfM)?ajz!sRGVhtW||>FeBZ6@Uw|Fmc9j-O^JSd z1%w%x^Cw(RqnlFVjArVRlT(C_i}*GV?!Kr{)U)0$oeS$lJ*LbM=1t(|s?97(|?)Zi5R>OWT=KJvFSVYyw}5-M!Sxr=BhDyF?hYNwY~=#I>nd_*f3qV z$Hb>QYHpRnqt2?|)(;mraPF8-p$NFzi!R-Fl6tdH);PEpmRG+5+nitt*B2d6seuE# z|L0%zxW@bL#Gj--9D$>-XC)%M^)%@DPw{l9$1H&ZN4cJ>g?p|4$1!buj&#&>I$Q79 z!{;ggW)x_=g{HRxeet(s_ds*fd;44X9B9SAC1v5}sw>f-)O#ZPv4wA(NcYh{VSKA1 z)$Jcm$&njBAZq_2)r{Uwq&W8v=q#AdcYW!aHf+U=Kk5xQ?TC-Ck%=eVrx!qS?bP*#3ZvCWrH!;pjKq{{k{P;-S> z;yZwrZfw1sK8ro@gJNF{yK42a5@A}ng1p^a*O&8$fg3aIr_G+M)?^rgqprMvI7huj?`6s;QLx z?axjG)zxz85be<0GWJMBPo}!N0q?R9Lp$8OF9;3`c3u>Uq3fJk$>bv1Ke)M2w}d?zvyEv`{7s)6b7lOMH^^+qx{tj{!@AoE zo($#_5nDesWa`SR^!16hOsg~v_MbN(qq=3w*dq}U4=y^f+a)Pb1>#Dx>Es)(gk^zyK z#-w0%l8mc@FgM@zRq3<-(c{&9+l#&r&Pqhg+f<*q#;j1^Xw;XfdT=-Df(h}^J1b+a z2XpiD+7IUJ#?ZHF|L*;SN++C^h-eq<%v!j4_zW8Zte8(ex%kACG<|qV#$FHR=FWt( z9rLfcuhxs}DY#KMD-n^^(1^LcKCGUg8q7-Lv*5^EGm_Zrgp9o&%+3F5=QLtNc5P9v zRP+%1E1Z>xu#d{8dcTh-=UPu?F45WWq!FJDxc|6}y&lZX`vHu9K+m19lWa962>un$ zN<@5cS5ub{Cw(s5n#R^o=iQjcS(1&sh6Q^)n7eLX>SZd&j#cI~3Kje-oRx^M{FOp; zrcRa)FQ3d3*5tymA}jK0^Klt_J(!!{Mee?p_9(TK8hM2Y{uRzjMAUrwOa~?9NOsQx znCc;~@#=0(qDoK7*z3XEyu!2~m#*L6M{?{rS@5rLRwAOb<`KOZ5-VL=HG&<|U@&mE z4Y|_bw2ZwT%*|_St-sQ;=xk~K)d0c2!dZ!kLmhMIo_lkouN^0{O|E(HN?}X-bUY(t zuLpB;RkY;}J*N{VwOcwu@UL)IBI41t9rV)VsXhh~;q04DJ|vB{Bk`W6W$a90ZiS*{ z*nOIR+DV#pFIe!ea8@Eh!?YO-zhTYHG=I^AwTUpl=qFeVF@Ri>3~Mg`01H1osDI=v z+?N)8c{x-+N{Regoy9W3q7Wd9jD9E$`b}_pLZNAr>4Vaq-9d#NI zzrM{?*q@ninFf#A+K?50cJr+E6%S=QQg0|vZ>}e}AJ}aX5$7!pSorchbxW^6fn#UG zbg(h8<<&xmq<&p9;9~qgw?(0NWMRPc!}HYD9D$>%xStew@?VsQc%Rpl<@Gm^er^CE zEBu|WzyWKErhI!7G{7`TRUP@^H$oDngPDY zZU3t#)CcTY<;pUtBD4j=QEHn^=aRr>bb^0TBEmo1gLQZr zC(Vp<5;$-aeob|Kw##TQgAhq>5F~IoHq3(X%7(-!|A1t>Eeqs!4gZ_fd5-w5A0oBq z2pr{An+2(x{zZw1pIW&zY20L7l!{1a34_occW0; zw$PR4dT&tHG+!i4;lp$E7WZsL5;Ffcg>Ue1YbKpvLhKPXFmt^h$Z}4vdAV*inu?ODP9Fr z^Q!yMv-&MqtkLtmfBZfSn^FnqJ(sC2M-+q3yh?a!S2vX;YHc4naAyDu`(nmA$0b9L z+b?0?vAKX9D9p|8B2NpVzuWd?;h!x8j|^ueBAj+yR;SMF#I)|VXJ_vugIS+fpt&&| zuxEw2c_+5*t?9Cz4y^JZ2sK_fD-qEw)t0{LW5@F1yR(@tDPX{FyKH_t3$TBMxfO~B z$%*QT8(f&*6qVqr;jBbNpkZSgSYMZYxIdU-&kA!4icNtRNpIjzT%D`daFrgN=v$9n zeKSPhz!{2&>A!X9lm3_K5{D@adsdiFw{a?rj;jE6ug+DA3izWAdQd={@ai2Lh1V4k zUS4awr)n&v>ZfxV_N*{p8SfOb^<*U|!s=YLQL`ZZb89KIzM5GkQH86L}+&GC^-xtM3Z|*2pl*H zyI%^$`r@|I;_j zeT4<)bqK}nw$hf#t7(7Ur5Q)zbwxyA#SuDt)hK?OiqZtbBv71r4%*9>0{+`B+LjEb z?4QH(MRk3O7X54|O$}U3eGJ2etnj+V-kESTvj*xLPvVG(Yh^U%eiGGPHb9l`kPO0 zS`pi})A=;o?{oB}*)PhK#TtOFVZEqIkQH?$614zE2NNv$iN=J9O>|2&>XxiF)x_Uu+@Da933pG=bA zO8zg<9is!zz0N}K_J2X|lQu_8>u1NZe%P?B^Ys{xI_+{6)X#py&9-{~2NBP^!sv`N zVG)@ZD0YW1-=WoK!EmR7Y;;s`j%BGXY;l$$Tf0!3;V7Jmh=^U~%`ArLv8_u=1P&a9 zeI{P_+Rlyru-0a8Hfu8MI^n3B{)uokP=ma@S~tyn)p{59a@0qfx7V6s2MVK07bHR# z15L8yNnOX@n>*XF&p)cEUxlH-f!7rg?=HKrzMY=YzPB1O>{DUBUCxOR_g9mQ{8(2< zW@Xxf>F1TujVqc6S>bg>#L1P-7;h{_OFFk=tED99^;e7R>h@B`Razp#xMg$pc2PFn zS=CB#)o_L);-=DpEt;A}+dOP9)RAEh%&ky7Ki-&)`IAB|<2$g9H1`qh;9ki%-d=qy{GIZ_=y;exp`mCnf2L`p?xXs(Sv>Ho&q;N>k_v? zH)UKwCHjefS30tvn&EV|mXevCO97K&esgkSk&Hb=yb}NYFmA+rYPL~N#;e*?dMwe&cXyOIDqoO+$J zdx)5uJCF{YSwOKJt=!Q@@I`S}BErt79V>sNP)6?eW;5QU!E85U^7(Ftj6Fom&3l+m zZO*h)_Nbdr0>Kx>S&0ZEuTD(W#ZWSx%)9+(^Apfsd`h~UE@KZ7bMrleX*+gejzYOD z&Rg(BaaJPY!$=>tz+#&^U}S67Th4%2Jxs}S>l7J#h?tw7s}1kUeoc2(?yGbXd{La0 zi0Ibdh3yWO)X(<&vYLAtP;a~$$z7Q!V-FE?^Y?01JLcT*i_hE+-hwZRvl0<=gB;n? zh;8cX$KBZS`I+#1yg6xm`m~HaM9j@Q4`(!I9XGzp?fVA=UleC0BFZLK(hEvk<&CD} znOom1c)repTpoN%#vUT(<~NJqXtMoL#*&rOFu@naS&4`<^|e`_6E4!m4ntTv@EOvD zmSpjllQQ-YF*pCr^ULVfv=Pet4TA+=6lWzOMnC;XEhlW2ZW{-(3*1T7lzAWFZl`7J zA!2Uc>m{{>*-qJ{O?q z9t}K}EEN?53ce`LN<=tDWY9K6`y>5dL-yCm(1 z5PVV0hqF~EBFm1_k?lvak9wEs{5uC=U`82Sez_FVryd07_&4zLY9zGzkN};Bmx0@Z zI-g-p%XgASm#x$xEs)vY^CZ8R0g0)&=!?4$i=A!_r@fW7`M#zFab1PEGPu9&gnAS< z?0pRj<0Cl7(u4q(UfG@A94k7I*hB0%E0xcvZ$J{pZs)u31Mz{<<12Gn?0IA9RIm}5 z)#eQpl(?(*3^gVX)80U7$4x5Sy;-3M>*vWUg7sgL{yYdVv$|0 z(MRtMrLYxz#`-W*av3B`-v-ZBy^CC?zH~VmG8Qx< z)cg?K<~94P&om;#9vy*SgLs$C(~U^JL2JO1%ysudkjAT4YDWEwP_Hx zq6!MCZAs@7yu)VL2e_=TCyHaK9N|0vj&!2SAZfYIc!r}IsNcaZD?4&|TFU=HcrH6g z)sK3x6qNS^wggwAdFjJgpHM3bK6h{g*Wvh%&0(xjz+LifEEebb=q1HUskaja1H z%srVxb5%;fHTCL}eynnV7a4ZOn9TCK?~9+>lQTWZSAAphX;Ixh$OgY3OA$wU&?mdb z3eR@@bQTcC+~Py`6=sb;n1OA!0$T0f4)SYj(zf2dcQAN=o~q2 zcp*5hu;-Pm$A!rSyh7;aEZX6Y77MN(Ak;?TxzV`Fs%{eI3mUrGf;qNo&u|pJ+b1GC zXp$7>Kb2i*(^9&rWlA>M@H)HQroLgGCIl9igT)%Vb_v>a$vLurbz$qi|E9Lmdy1VK>=fnfdW-zZt!7zKB5 zN-2)Qd?I4WGq!n_XD5{-5a8_#Z-6cwG@O z@unNQV*Y^sPO=s_aFpoc6o)ypU6DC7Hnb(X+T$!hCvEbxwp_-piiiktb7o3zTed#r z%7VQTVQrB%*>m)zfWRy94zWWWna!!=)J@%i9ovxzmk-t>&00T|v8#et;jO)tWO%tL1H+~;D=#h+l z7}3Sad}zn6*(qsgfFB#UAc;?^*CQX*cV+CV;Fb6uj^A*L&Iq8VPj(Z0AIu>lUL18| zeZCWV?zqHiHzvb^0DaPD+YK4JDwvyB2sPv9U7@@?KL1AID4dmui0;#h6)f9CH*kLx zyDAusx%qtqK55&h!DiZKn=uO-lLD8&7?7Q-3uNq(;Fb988jdKb4WxY**JrcyQy}$< zAyHVJldG1J7_hf#i%h>V2-29~BR)0pfx6a*m*g|k|a8@Fs zalR9CR9Mj}BC|zl>2UtK83{>Bk+I`}x%u}h#*GEc|CsCE$xCo?a8@Eh@y3Oj4gBHL z+S8XkE=`AB%`8anq7)fB9+;c!bEy%l-F-~Gx1zh?;^3@AM4Ow9*z~Cyl0&s0JCU6M zj>9a;&I!pfc04dQuf=KCh;5klRC(U1yWryBtVG0OeJd8WXR2h?r#qYHn+5J8tjJrx zL>W6Cm|LM(m}0>!Q+%a2Zd~6Y7YAo0BEqKqr9pbDr10YdS#c1b$abkd(Q{3bvEzZc z`95({J(hKRr}Q%`KyYy|pNKfP;TMe#*&*$m+Mm7Rnls+khTQFxEMvz5b1M{Imef+; zZ5ySsIfDcj2WKTB&YjPrF*{~R>*r5k?T+L^)lz;Mrc9Bs0zRor9dnet0(NL;R9?hWQ6TI4INAy~z3;G=Ec0PCM?MC_~ zSd)1L_fuI|oQ9&$)i9|b36_?gf^j3hfz&w#5*$v#vgmIxCO4VymO8I1r<=Me+3S^m zC|0~!VOO0$3z@vbj%88ZWT1|`zWu`|FQ&6Gm*S|hJ7=Nj!b`~h9tk4ixY=#G*T$7S z_~yW7zCQ~S`n-md+vWgPzapZaZz1oD}bLXIUgG9(S zegk_Rh5=T>m|LOfw&*;a+43*l0sexb$61Mp%-d^d)y_YZ_ThJUkq*Zk>-QzX(0%2w zKB7*ahd+*^7ABhP@T=Ye2hLDL)IM9Lp8CL*1wNM8>eq>o;r14K?4Jf$35$qx_E9ut z;%6Gsa|pvxI71Q9=l2ff=FdOrBBN2fxAXtk;TRpzCkgyNRzm+lb^3hH;701)y9R7( zNua=iGZYcsdgLl~^Da=SRj9y$qp&JgDEco=RQA){O50k7Gpv4bR3xu-I?feEql0x- z7UzhE*W)wfovKs9gZ!zoiQQbS(md@OP-0>B@{;1Q=2YfxG!D|N5kU%jjysn7YZo5G$h&oFX`D6#IATi%0 z-89&`uLjENPv9I|r+T7UT-$_f?f<`tY(I+h)JZJ{ zGow|;Y{!f?WOca~i80ObeR`)2x!FyNczrDPy||$@Sv0Bczu)7}-HP;N^_AO;*|+VE zN<4KKPa|%_yZn#kH=$P58_7S9fw^|9#L0;bzxb8n$w{~`4(^x3PXU@YU>6ik7$398 za4klgr)S{d(_fGmUf|Xnxc@gSnPl>R z5SG48S-V0DcC=iZVZDs`)FG!~X(|VbjlO6lWQ8*k5%WhovWLyJ zS?}pq0tb!~^||wyj_gDaEw-W4H$l-f>W^Z<)Bnd*|4M=>}bs1|}yplrE&$>RV zdVYZ(9_}e^>z;aQ4}W%Me=7W* zW=e|AP#J4k%*`j!jCNx`mCuwn_~(M7a8@E>;I7ULi~{KXXRhqLX&U4WG$X$fvSqAg zF*mGzi#bF@ z_W>ViZ=Dn=HKs4KTb2z8r))^~wdpd}fS8-RYMJ+_y3txGD1g`3B3+BK5)nhVuKhv# zNNJ|S+3uA&u*1lf?0%3gV-1M8c~A0wx@=~0tkiXLfS_wJpNLrG@5MAOH>Pn;tr>fk z1dfH~q~*v0x%g8uBm|k0aZ%^wq6tZmR%J#4eiZWGC>?`*rOP`fRV!!08koM}x2+qJ zlzl0%d~7+ipWKMNY?=lwqsqamcSCZuR|@|oVx$oOOBRdhwl6?&!vhTadzRMnIRd%U6 zgUG&h_)@jLVRuSbu0&FkFT?S0Sl%*>gV0zqO16cy2{>S%zs2AiJk zC-5Nlm|S`kd^fy@(p&2LYqM%A=#TgHG@@CM;DI9)6+P|^qXYK)F=?JVYif}NVOk&I z%b_WNX-ib>T2e!YX+Ea$ympC4VIC9}DTZfNrz->5x8WYFymJ=Zn_dP5vtj^~7xw1g z1{!_n@-KGGF;pZ->?bPhF73~YJ8sClW=1f~XV@eBL>Bz0^bc@Vuhp zqSaCPhDKZH2a7m{i4OaPmt{kX4pk5xpeD$li67+?I>yt{C2>MjcwSMFo%bqe=Dk7m zkPh#OjMx(UT|IjYCawPp<5#Jfv##ofJhC8=c8{JTM1|)S74pN^< z9S)+RWX5il>*--^pu<;+N8t!X1y#MLE*2x%_u?E?c(N9G|K=IwEH#69?=^|xyXP=_ zxiJ`xYe0U4KZ9RN6ZPL?_c~hYKaR;a9uPcmgbS*V!xybzkd>pRyQ*cTto!}mijt~( zd9S^5VPum~vhdei2<3O3@7@+lLYfpqzYlq^{zxd%QmAhRdTwtm#ddq1_w&X)w#d?k zq$WC$Q4_7?`=f102RD0SStpY;E?bjS`~Ti#_SwN&+8+8m?=x56QD=8q69-TG|8T9S zSRH;+P9BA^7Z=T#?>={8y|n@Pl9U({x6p%(+0cM^v;85LcDR#a-}!yQyUuW~eH->x z@^Ah(uP+_V7Mb~y=vBtVw7f^i(&^shv9&Q7VcJ5tL!7UlA73MB+Q%x6j_oY{sclat zTD2nXU*eTJ+qWlwd$%Gr_N#@pTbXRi&qY$KW;9EWNTEzq1?jOrA?L&>n3_mItHn?7 zkwpXUNGp>a?PkdybZp2DZZ&6^8ZmROS(*++B_m-}kH5RM`Yl=gN?qop-IQT!#Ol{9 z9iGH#kf{6GT=8acGuEhBn|(LpJroe};(0~IhkJa__U>2ozK?_8fk!>k$p8q@BxT-O z+++PfV52fWQTfhK6q6~A@Jp`@NakH#%@(WAO(gxXV_KzespUso!2{1LDx421S;pP_ zbd;4Q!yb4PCRToHk1~YaGEb!=hnWg%!kAM1j5Fb)r#89OPTd>VX|lv}HFr>xPL=|t zVlovKUpD%)A(e}%UmGWOKjA2Z*6EPyw?#_KfFg624Dn?nooCWHMQ#FfVg;Uw_l+v@ zWBt2!rt6w{3IvI%QB*v*W5(>1X-ib}Zsoux44qB~B?k%wi5XB- zjQ!PxRayK|^|Z5M#;1Ru8Jgw1vI- zsg%>!O!0aJUCZ~<<54&&QPIX<$u1=K2@d+;%ud^$1P@zNvg4yliP;c)^8<&xQq;X# zk1n+J5(pCei3*FvHmv`t{_^mv0c?HLDTw9WTT}9Klz43ud&^`}lqXBMt}i`Ov=;~x zMcDE_HtDB?5)QG)#AIKPMHc4x(v~W(4K*BgGQ85c{P|dN~(uOMo6t)?cptheC z>3&^bndEvNw)$9-kp42ITWLN7w6i4DZH)QT=d#-`dgJ&h>Hfg(0tw@&aJ2kBmYgTF zuzoc2cd1kj*!&G%UMqnm2U~^U?(cgWe}_pHC19%ClIILNR}Yese$Qe?C(g=GZsvRR z^()|hlwHW;nkJ;(f^x8Lzd~_I(}I{ARKUo47x}KR)x#P~@109%WycY$`*JIieCsn< zdQFsYeSc*qE7EM!e{1@uhBlT$xWcy62w@d~Wm^($pMRr7h3T*3lIy}%bV224rn%Rf zOrFC#H0>J^QhCOU%v0)-snbV>^m);S-=@Rwk4y66uOr}%7G3%AxO8c23_B__BD<|z zNm$=oaPgTTN!ihw{HnbPGg}yveQkITx};nD+u2Qvuk21}#SUhl&ci)2a1Q{n%jT>> zP1yG`W0t64A#g1w)9miNTUTl+yx66_m1N>8-sk?EFdzjfDg<DMMbpixoYf+FdFJLn_+6ievUK?T=Tv_!7DX$ULAi^rFW($-8^x&5EY(R zRM=m6m}fN1gj$W7&oDJ&KT+|z@O{vvl0kH~_8f*85UXvUXTyAh?@$$^rqpY%?gh2B zj-qQc=LjBnUQrQ0sZ=$(YCqi_7RxaAVLzw%V^Hn<6UOa#EdA9m^yKRs}+1`Gy|0L+7;;^E&uw9(kktY`bC0@vaQMTK`CJ7$+9 zXJZ$SpqMSON3;B6VE617zddU(e;uQuYUokJE^I>OC5lJk2t`Hm5OelzPcKEN%eGw2 zj0+Gmpc4r?@DeU9x&UW8cOrgQp9^={^0UajIyV4R7lvFL=0ys9bcyDqnf%+p!|;`~q^mPM{B#7v_tnViJV^@;6GBdB z{LkGrE(tYKu=`MjZKsv;l^-5JNOTJ_VC*({6!ZvIHf})zPHlxop%0*ORtxgz-Ddt5 zoHIC675QbS^ulWzn=;`XJm_gh21u#k@+KD)T6UycMGCYj&jI5^8}hhq3RfKK(1m@! zl}$^%wHT&2Om{{NGGO#?Ei!WEU;g)~z0r*wjLf42hCe7KI;^hjkO9HR8jy2G)GMQ{ zUv*&?lg?2m`j_HScwSL4Pt}zjZJkah-qd8+1CJ7UaP@LvQI$*RHw{ZxeJum}U(+Ge z%*&OS0Y!!EmVzb8XV4peS_%Y-6?i6@Ony?qI&PgwJJqygW(P81Ww|byGr2^G8BkP= zxZuX-^~m@-Sa!Uek-3G-x9*C-x8(mp)jsmaSJ( z>n2LJ>wYHeexOf$tzRlJL1J%Slj&f~u5ai~;krVgR2-G4aH%q82Q?Q_+r?ek$(~2y zu8Oa7PI;=t)QG+LZrlUSSlC`)TDPt6Hb1cw9ki{Rz|J^AQSqfD zh^=eCTeUE`>j4?^GzNy5ViM{zs++K|M}KTPJ~?aa5v$SDe|E*Jo7n^&SEVV-M`jYkiTytSDrH z>i0!=hS#7lHHwOfWr0jfZ=Gtmwx>YCm}N!9q5@x5TdW)0NNOi=E%w0PJhN;T%*xEP zq)n?_S}TS|n5>Jms+`}5fS402@JzhNZ%H$@I#ns%iSNW- zwL1-CwVIL?ca;+J8J>yX1@X;}{jfVD1(tiVx(R2Xc7_EhJx`UGw(v|cS;-qS_Gi~% z>CF5t0zqOAQ8DmPq@seT&sM@Zs$+DHFM$mhkRHV-j1}q zn#;dG4o3Sba&L{GdfPnMr+yA(+|j>4Y91;QYaNJ5uRmbd%QFObJ?6IqTMVY9U5?4y zal)(ZeHI2DZ%0y`PQa*y92hXL9r3<*99o<{4Vyah)2x%!D~e{*y%lCDOX=Mq?krQX zCwsfpz{vFT3OsM^90$_-dkt(#XwAQCZ)B{Mx7ilS27c5N=nk{txZRfguUY{s0%vi8 zEN?hcb#eYEX5jFSCTzO{XRJO!!R#T5{^TCKF5~N8`===~%J0CQ_%c{pc9JW~GIz=A z=lj!NE#|V{KeR|_gA!O|R1`Sovlj8x;Xm_TVe@$%+{NhM&wLGX^j*5XteWok>!iRt zVzWP{L95Y!Ab#jch_g+Fgzvv0%w7G;ug)4JJ)qOsqxBvV?)=kfp&>b*QVRJ4t|+Lj zA-R}Y3QG)h_$xoM-jS{C)_}cAG+~&wFx_o7$$~RFMLliVPU_pMj5c?{zr(mjpZK0jbv=xvtI1c_AL~T!t;uXy9ukP z`QRWHw$g^Zi%W<76Fxy^SqxzE5)}rzbi}MOy4!HD;DI9)6)$(srLR9_(y`;mF-%+7@8HY~=(-#k3>lG;nPU4G5eec;Hcb8;`;>pKnmH>_4YWO)^w1m&mD8${dDi z3rE-|jQ6IB{tnvf)I8XKd4}r8N;yqTo+EhRc}2yzSE2N0qrp^Ldpg5}h5Z&Z%m(W{ zKjGgQsSR^!pH(x2=PrKMmi*Krb^8B(?#A0YumVqD zJNkZBg%1A;Pj0*eJGphpL#J=xKjj_dr{^nhWl|>F;BZWJd#-`Pz%7E|6SAK!Ux6jP zo0E)`6lJgTSKyR?OJcO(IAHbsE9fJ_ljX z76bDBh9UHNeGsyF1=2j#kiS=xL!8**)L(SfuqF(zBH}ej?N6y-ZlXyh73p%t(NFDJ zh*F1nT`#3SE~UcIKn)Tx$^hQmq{5s_GIDd9F`T$~1Uzyy$fOnO&cg+}?O3y|FX^0o zdxlpLv0qf%H1N5rNnW&7uZ(VwaA3{`uj!YSwn9`m5>YW}fEROYwu_ScE^Oh3H1Oi9 z?suv*0aL1|sO0OMd*8jKRUd2_9)%+m6>a(|S!~WSD%o1G>BG{X{%ixHzd-{qrDAX1 zDP)!(t830^&yiLPkHUVUBA{(|b|m2xJ#q0D#Vm`}Lo?GrF+-bt*si8+i<_aWWJwnN zc}-97z!8cH_by%8xr_|jNkfZa;>CUqdB$x?q zm4&jJ&x`10ohAZpV?R-0`%cNet=K`kQGRZ1Lk4UZqeo`yeNbYS9n5nE>s`9!?)P#Y z)hoyDEas|$>KF2JYlyZnVT+1>Mghz|B8wh9%vX`0WxzUbebP&-SczE{d-GHA%R*S& zoCG>!h^4^i*iTekKk38LAIztXYup6d#va(4ub4nH=5u$4>ih@(dfH}z!?cDZ@4*8l zWpWOtqCsrtG*v;BqHaI4aUcxv5JV%oyq{Fazvi4D7!tXkHi zwZNP>DpBFsUCCrUnyI>M=KZPBK1A$+z4?C8-u}!ox4YEK&yC%5O@xTOnk0Yie7^5z zH$0JPlEwLR;KaUNko-`COfQ(vpFSI6fW0{7sOrnR)?x0$9@v}TeRj-)9Y}eRx8-w? zK#*9CcT@6Pz(?yVcK>X~wk&C;m^Q+JI6je)=5VY5b1M%6qm?V8rp?P@8?8zm8+m zOj)!0nbLK8g}}Ag4@b+Z1|MguVpa#SnQJ}RpXWC~G3Ohst^K5|TY3vRReXh@%N5Gu zbvM9*eucP}mE2?CizbSiZ+y>>k0EQa)rP1{zd^ys?uwvWw)`+mH6%T~p=c6kL;7s| z0we1wr@O?X*6jWhmDJYJOJHYA-r^lRyCby}l^Yte2_`PAvCNLJ)8B!7SSomA74dyp zrr#mq>T}*P>r|AL;{A#j^h2o|6Cyzoii+mXeoC>%JE_*naMoh19f{Pcfr9x16xi=O zuZc&@{0T>E6LA`{i@VuhpdX%xEZ$wktX+m#??%uyH4`pPYPg2;}x`lPDDQW^9&kQ_JBBiU}v`CqV|%171fa6UB) zo5W_=-|G++#baCLw)Sd4Yi09=_bNoE9(r{Dr)cC@4|lu$_r2;}nJhUq z?#XW5{VSzaso({xfci*2;Q z#p9|$=;|~`x$qu#wo}&`hRp3PA5=1ll{%lM8%lW3od@s0?dT$~`;h|l{yR9ZZV?=e zPJebpbt`vecodFM zRBV5+fnHcQkcB>cO`FB1fdeUnl9921DIRTUSTG@fB79o zd{xu-x(i$Ak2&q>?9F0ScwSMFv7iM_b9bb>cg|**U$LL_hNIwaTmyeUs%bl8WdLoo z*PYJM7o)=Sii*|;^XQJ-W2xuEF)Yn33pAVjhLK}N0p?m!@woLc8rrmwb~!d&;By?I zs93Yh6CR;cwSn$9Rii$Db`P5Bi zM%!JAW~Ci(L5sr1#OwA364=5Ayo zM1|)SY5ViMSCXyQeCl*+FzYX;;C{FaEcK_t(}yaUy8jbgY!nNF1~IUAtbh~e)OEP{ z)hhbwNEJ=9?jiJzx_+w$;>MT2sFP#lxH}a8cJA_3Qg&y-6Jv+7&>uczlggBQJS#^qmaK~x;sGhg!Q{)aAl+>aH`_vHJNbjgyl;X))<2i=Ls z7acOSr7w@_y``~Y?%(c;0>tB>eYw7>iz|N5j`OX1{XNV8vWLqWJbriCGrU#5?@CbZ573DQN5arVNk5 z9-<<^sW&VByN|B1uc0>Z$&LilhaWa9=v7e|&E9aF* z$5guHU{is%u}5pZBfc#O*zG*aD<|w)eTQp`1J_gXXDHq zjWeLnLIZN=-diPJITjTUtoV876XR*Lg{#2ln8`)OhmLm4?@}xsx+a)aRiuO6E<+MM z;k6R4HDhmn!_is3Kfj^}jcpN^rqT*RME0(P9L%oJ{Vy=xcVP`)hV!!K|5_3QH z=4Zo8tk|?#Tl(Q*Ct)=lMu{U2I9NCC{ zxRR`DGB{kQOyHydTq)?oZ?a3|J*$lTuJZS)Dz-VBBrO{2Oe&G6rsF>}d$;=vd zlm|A8Vv_?-!e>(pa_Qb>C9V`;Z<*}xCVO_Re2%m>El{X_;HX4JT!B9CE!vDZjccaB zl^YL3C$e#@2Jtue-zv@-&)ZUY!7{01&M-FH(vOVTW=@vepA?d)=}YYSK6KNg-9u(* zwk02*Hz9AYZ{Qg~^L5oykmF!#tvOI2dd%b^Z8v(?Lg6^SPUUd96T|lgV^$yC&yLik z)3JekvTv zvG1D1zEq{aeigP3q}xGFQt)#)_xPmJRSfO-M73s6q!1OJS5&ksO_YYpEZBt^3ZXI~ z8Jm;EI^~dX>z;(G6ufgi?=5aN+7Z?=@) zwwS7jnX*a3r}Mna{mIfst;jI%P5*OJ&#{57M0P7#fRO{Mc$5ML-XFpGdK_S0#@@U~ zyk1*rh&!(V=voRj034O5c<_D_)$QTS6D9#(qsQJdnM28RnmJ2i=6kJ$y#_cc zQL);5HQoR24Lve+5X0;8*rWJY3T$@!498Q{x207ySwY`_dP$qGD8U0qC@RL6B+{`i zJ88=$V;Qb3U_Xz(X)xky1ns%!r?(SYj=qGChywRF8tce*rp3d5stgrdSZc@)hk)TcciXEIz{z-sKxy8=(> zM9qt%=*(~Y+%~FNVD-^K8IaTa2SoK(?==|yyCYq3DT;pk9Vd9;c}2yl&fREBcPH93 zb|%Bs0qpmqX(oJGUIVA2)b)~imi~03mMv|VG)ssI&nqfy@21fJrdBYMbO$IaY9shUQyA^u@$o$7Dk8gJ+@NBQSeBpg_+(X0apz~ z#jM_UX#2*xY`?pL;ZeAjAu4V*8pOhLe$o@SgXqK-yid{1zp&@z5Ws#*x@5w`%XP3z zp{|$wxYmi?Zr746NT^cbng#a5Gx4sDGY7Nvy#`RNlOO1zy=h=&CdM%HQ2<8|Z$GPjuAoNTJTKcT^47<`uz;eoYj(njn+KUY{VD zx^JWfVUw7Tl_v?eGay=B{wk`xJjnCr1|)yNTSaGH<2dDSNVIA%@bAGks(fkZeQ$aq zVjR1u<3l#SG$fmPbPcK0@*?fy4GCB`3puseo9y^yM3$WN7wY@~9UO8PJT>3{;<8%6it4-5c(&nB{v!dKi!eNe67m8{0TuI*c>?vyd|fny&YMSUkXH?(I(5rX#-x{7HQk(HNRmz@-RIV*MQ;GX{?yOJOxY^ z>5xCS)t$NbT@7U&R_>yKfqXy0K9i8U0HJN9dIHwBh<)Fsn>|8u7L zYZrEN{Vw|3Kwpds%_}PIp6S90Te#2xpDb7xk_yyDkNmK%Rbq-46)}7t^~?#ObaRM> zP-nmqii)dAomlu(6S|;H3!%<{J+L=Ful6IC&eD%jwD@>R-X$&@jx}gW^cx<6cKnp_ zwni<<{65KmZ~2hPvKPx0=k=TwF1k+AbDw*#*rz!;KW#q*o7{z>1K=Hk zvLc^5tMC65Q3 zv}tuCmeB49=o;yf7*{Q*tvw7&i*!j&p$=@bNrutu^vKQ@>is2#x(fEEVG*r)2s59V7fv6}A^Jk$Shtnw{Y4{EvHztK6She7QF=|;%e{K^5Wgq)+Vl+Y zWetht-e*co*mx$HY)s2$%ro+{%39S;r~zOPQK4yP$fkXDSB>2p!A`hjLZ@rS97(n?~d`zf%trHumOg z!ix-9$L;~DZ4nVd)c{8&DhzDx*;bEElG6u?oxXDvMp-u|d-V&In6R-oCt)iaUYQsy zPwUu8s2bp?M8&(`-PpN619_{dR_xAvUurCGR~*RZ&q;zGg~nv}JYDE7ONOEs#>AyS6E<5M zhQqHL63@;J_jBuC@5SMrlb+_8N;6Zvg{lFLN>uc*>&Ygc zil@n4by=qAb|~`DCo$#=U}NhYkhE2wL{-j);0rsTxI~X=#H-gi`_9l-gxB0v{VDFx zs$V#gP0oz5ld{-KM zdZI5oALK*~mTQyZk!Kay@2aOGDe0(-#g(%2QvBs~ z+DC6Ndwto7m^kzM4SFqCV87l4j%2b-mlU*cFFA-<}kuyqX zsa8=kyyQFI4SePTCevh%BjA?y4ss8u?+lyNB1pO(6wAJBT~F~SyzVS2JTEqtM{bN@ zRbl*o*{{hEU-BNh%$y0BGqE?n`%Hc)Sbtn!rg7U?U}x+nDkds5<@!oFYv}9FQk{;# z{D_aB8x{wcGqE=(FKNDfsS~h<&7A~x#!-oi6K=~?)yG^}N@IzAn|K6{mzKewX|aGg z6MOS&txW^D$K_x)G)H7-9F?fhc)E=CS<#Rcp6SY}FCBsH8_MDE`$>SA6MM^Kg93J{ z&fVlU5PSOw?2Mxl75cv?(H&(k>GVfK1O@iP{K;>fp3;vFXYusLnJEmDA|5q^uOV%o zTm`w~)m;0E^PtP1DBAK*oIt5q{cU9`JYMq^3cS^O=m)LqNDKJM;^X?$1rI#0sE9c= zp06TTt2&0w6g==K%?+vWTjx6jZ&a`9Z!kDcn=Ob`1s$Hu@-@>TxB3Tk?KloF4~mMY z%q{dzPtmV0m9_Nh$7Imz_YTGuF9Q6G!p|LwT0fWCDg_$|Eu!9WbpR2%z5mHst(d<*nHHs^cxPBS7UXRSn zDFNbej6d6-dL&cVRjpY?vAe*v>ob1Ay|Op3wBJ?*W?X(ZM+a9LY06aBd(0Kq&%+x3 zf`_f&{iha+*V1LO5r4PQ&ey^eLFO7vHs&pC$!keMo}Yp9gNtD_Ye}+Ir$NiQ2y}H@ zl6WWe-A+HJ9+z_O4W?<+qM79yPf{6aNJcjOtiT*CvUAZJZB}!uC++>W59?#`6~4RGU~1R(DAY+xngU_#VPG*S({7Cm7z>g)6uG`+QSZHs#J0mFaRT=I@jW zjT-UYe@p%-aUDjaRG)$GrSCm@u)juEC0KtB5>h^b$@IgJp*RQA{Xf8}=Lccho?LMM z^8xan9OO|wxtmEpCXQpidb8_?sN2t*)u_Hk#O`5<5;LHva0ptaD(aF)W9P*v z!XKHEdg&9yukH$ktIf#x6J;>AXIJx3_*wlAfwEV0;OWk6czgUE!YftT3*nsi@==N1AFt%c=63yvdUiS z;ns<5xXL@`9BfP~n?6%wniP5PsdERmutOu-Yk`eW1Hjxb{smn!k|e8FtEGGVq~6O3 zUgX}^X2i!-5n>SUO{^|hkWF1WhkViVCbuh^lCOatybkAP+LtxmXvl^oX-T)?BJ}5b zn(fD4Q_Qi>hdoojK$6cbMd$E*xR>+=OcT{-UnQ5j(zmuFc+DqL8!antz=~3sVbWK=dcb_g}0S}Do) zvVH=2uK(@naOM@09QT^RR1iHg~ zCMrhozMKc#_EWw0FS%C!L7nWqmU0ZcjPy>Ns(mG;`NZI*He* z@hCj6s2I`TR&xBdm7a--Wo>j^$g64t;&UlWj{O`~IFou_(NmwV=FAysD=p%R(_Dc^ zMT9yNyGQ>p;`n$1*(1ywr(I?D5Y-RBTwi zUy5z}mF8Q0=4-CWR-3r9fV-7&;KC;`GT1M@+|PgRS_V37 ziemcO&tNpI9CSJv^Z%&CjJ9k>f+uTmtgTdh@hm(HX-r_Kb_m`fqP;E$F05-r3MMS% zilAB(+9!878^5Ady40{7w0NJkElW(4;}({|OaE#Zo>m(ocjl|&bE_e$xjz5@cszds z-Iz6u#ddm3uMIfNyO{Hy;eF-;rr&il4nug&J6Lf_&F7nI6|~RM(dT1%a|#~SYs;4^S0VEV=0ygPo`FxqNTFXp&iUm$uMm8fuZzpV1U63k9G zx-n(^VF=yx5x%vK15CfzTPAaHD^(r19KfDj_7I33M^TV(z z@DoJNjRj1<*qfhTzHmt8VCBlb`iex4qY@S8ve!~=Pa}53S>$u<@vCbx#(du5Vlq5=`59VtjNu+hTJx!$ zZ6V!zX{b;&!1IcVLvj7+U{3TKIMHLm#(vF*9f6>CRp4?*P4q!`qG(?B8oFG2iVzi^ zS5(A=ZlRa=`O_B1rZCLp*zZrv6nJX!4F)_{*8pY=_M?5Ptms+UY#}N&|gn>l3b0ET7C+S}JVZ`4e>8Mgt~nJQL5BO77Au2e+(JCEp$|)Btc)qT=G1mh9HebE<3comu(dba;584($EM0%m9I z&1?F__N;H+m%P$t9fTSHj!IN)tg=%?Ud^E%!JZ7CKEkJxtVaZriYfZ!>{4z1gtKVx z%bHxgO9z`a6+Cc++e7$C)~EGwY4J$@DY8wl`8n8+?AzU#m}*ZB!Px-c&rmQyY7()L?(8D2 zBFj5^kU~w~k#d@D2wqX<=W&(?GFjW}d2NH*Fua0+^Jw>ZX}t4hLo%;T5r5?$W{;CL zr0Xb_-R;dT7d->Tsb=K+-gGz?@B$jIu_TlD&Q^bC{&S~hWYmOo{>q=Wm)NQXf8>uR zy0ELBiJ;&1H+XcKA!JLn-x47#x)y#7Qg;doy4r)SJ#$E9Thx^KxgsXv9qa>*zuB%kXfvn0F)@6!{3s_%ma2 z^BQG@*<+aa{tFD!tyJFnPzW!1b@1jS^$F?m2@1vF{#FVLx>kxzZbM=t9ErbWYk)Ui zWQw-~d40zb4nJ!{h97bycY+;wR9)`{$)D|Or>NHQWgmG*1^2^tWKaJKpp2}A#(WR` z&F|+SzSSSNmuX8nk7itPa5iDbd%9AKbJlD|t0QoapI)|g*91(zc>R-idy56;p#<8j zleMsljMsrh#e$OFtTp6NH`ik7xM>Ht`+tGucNf8ZtDSI&S3SaK&xhtsc0tLXD%d<> z9*?SJ$vOJ?T?fU6ZaRw7fq78XE0lb{QVedsd2rYyl(;P^fhaQ-c#IDvC(KK@B7Q(H z+xMq6ZExYiHjhhzz{mQeCHz%ly2r1NpMAalK$4xZVfMFO*oc5!I5n^sB6rV#y+86G zFt!8^ot*)*FXaJf7lCI}_0BWjmA%-hamQ549+@)y868}c0;7Kz5vk)R<+iISFgULv znLb9n5?6M50BflChqeqNbY9DJ*f>r`&dePRi4D`B@iGlkzhNY}$aw$u>oO9vZUpym zZX3?}J^Mg?He^e48}iJvzCXckwOvSqqVte@|2s_W<-n;ZZ7TP; zdzwbo6j03lcz=m1DHSHj4alrE-*{AYL%f+zii>G%Va0Wlk(Zh@!jeVgU&AYX1$T211VNaCUn|GlN zHf7spwUFQ9pGZ6kM-GFrlI~}7V|E>u4{}+^{Cv;A z)C6Dhu$j1X8SiN3yI8N6)0Yq`X|5a0Y+js#3A4RPlJ{|_AASb1Zg`VV%a6eXm(#F& zsuy{^`56C{xV7uRdb|yiPtkN>omcLHWld|K!|IuE;@VD_R#*d36J`T`^2ucP!oyhX zpzTt@X$^+ia`9n)hq#pmx%&JuUsyd3xi%K$?2X&}Q}XU%W6AZD1%>!I0u{wyb0$4{ z8vcibV*9(0jK}|emdSz_x=9BKJ}>pPV;8aRygDJT?Z z0`q{V_*1!=D#r9=$DA6lCNGkp&)yI4H+v@F%o}_2>bb{w8eSjCeD>D}G=ZZM702i9 zq$^u_vRb7ZJ7IhXa!t!%$htVdnK$<4>*voB=*acH>|GxhfhKTNqT)$HEY&<>&1Bal zmK1RaoRU95x+)fM7LL97J&LvK>9OwSY}<1p&;*W3RLnVIL(3g&XinEChBI&Mv5Fpo z-=izwT&$W6Mt6*)*A~iH#pMXW14k$-UM8l~xRC`k`RO2rGjHr?+W#<2A6p44OVn&o zbKs9^<^5!;_&r&O3ePJl!q@MnS5}UvSz9KuZ9fh}$doTIfA&PcS-7a^^mQ9OoHm)`v_?hHK4;EU{6?L;1&d;&h<4`hWto;TT6>9!SP1{1dt?{Qb4^9z0aD<{_ zOVDb%vP-3^CS7C$?00kO5g7UOJFH)?=8x0Wc66;@uBtqFt`HTTS5!D8?WaGM{0ScZ zbt-!oo&t-5YoNkzJa2se|H(pB$mT7ii?b%EB4^GN_yaSCsL=kV#YW%Nl%|#UXW?B_ z;q9{DV4WNdIJ?K*yy|Ruo(@~{Q?)5{f(Wdf1^ajtgorTPfZ&#Sl5sJysAMS<-P%(0q%-f-(=)S`5P$s*i?aM;%rml(?rzc;3pX}@ZGhl`tK8U+|JT-RmZSzNRLP6t7`~%u+)^)c z#n6}>w=@WOZR|~2N1KpMX~x`R{qm;F@wgj1!_Nxi`^fQ~#rQ5`ne4WG7dB)_+u$J) zt(fug6j(d85otQ>lM)k)xQ|S`CXdd$^O#;X>Z=Hwc?niLFeOp5OqCHkFGBAZjmeX5 zT1wBHd@$`6B?aS~_(^MJT(QvbP}bz0Jjx;ArWvFDPZbd~{e zc&Y(7hZpnqUP}}#bo}$+!?d-qyAAJX!>cDUnb)sHQkX^;*6TqdMN*y$+OGZzMgz0q zLDyV(+w}`9K9vQ3 p2uPPYqd6Yll<_%Ra+OY+5Z?Hnh+i|Xr|I_&X#72f}^^b7Y zeW3%zUEOfEH+=U5&zAB&OWzC46pz>P{y6Rz!Mr7q!CvQ~qwWQ;+6UxBhw~8TnGfra z0VyxOz@utj*-4R~w^v$!-GKdmaRGMd`H{%L(@;I=B3voD+aQ%%hc~*6n zD;gE?UVW}gY3q$Nz&Phs*;}!D1du8l!+2+0{|A zU2bIbD=ji$RAxxpQCBimSBrF6s|t~AbR{->wTSJGJ^a)D)|lV@*(8oG3vyv2`|gJi zU3JOSiBsV4oCDxJQ;&>lKM}T79fbISIz*?r`c%r9;`h=V-V0#1`&9|A%jU=A!N#R! zu-ou3;B{QSi&Zu!_u}a0biUqvHYoTDM7VzfAFl#=^P5#rH>3PN>+-cnzd+a6e?Rkm z$Q!T84+eB(gLP~een!1}DkC<>UPHcfx+3;ZJ*+?T8b&_c&MVt9ZLUe>)^4=RqOmMn z=0y~FM&#mFePIv%$XZXbew`7?fA)$iy2c)ts@Y&_Fg=>#o%VR&fvAW|b7ZZK&XZ4C z39SC^QD|6aM#gn{B2W>gC4OYIsEFP;(u1APzCl}99DqHpAK(=4W_5bvL2%mpp5Kf& z4`x3&0DaDs!qp=6O0}lTPHE5LY0Nz!QPsIfk1YI90wWHDh9q0-k(ZN7VAGfmAsVH+ zBzZ;&*zc?3uVZ|dKeWw*F0AZ>isHGHv-ZQob??EgWD#I*{_Yw-p@S=fnePo9RvdQ_ zf;{-CtzokOXRJ6vo>PaPpt`rZFxgTKAq&TOw5YIJnnagW2C(XT&6&xzg8*yF;QOyQ zz!@v{mdT6VS7Zoj>tjqcgCv5nqgV5Eh9J&vk3OIYk-u#u@ z?WDWwtyrr&!9o^}qY@R}dz_+cdDWnoPjA+!ZxZBIR=_ILDS)$A?9Dqg#h;=T8$Zx> z0lgU>g`*M`ltt4?dRuAu;~0jsRIHx*Ite0QSHj%zN&HhX=>9>f>v@1CSB(-paD<{_ z&a_^%Y|JW}>KQBK)Ywlx_YmZle1VnE)&J+E>qpTa@-?*Xz+@pRJg=yjo3e%eP4K5V zJVVAAE6$MjEk6Wnhg3tTLhZ5af)hx@N$hW78#B-{!{c{=4QnBB- zUx&e@=MTuMR_D~eU02g5!Jk#*j>id6;dw=c@wN%Hd8%RVE8E#ZPL2H{_)f0;E4(&v zOYPydTa(_}yDs?TtNB7ycwSL){laFt@x*@l_Reu^{_`VHPX55er15|=R#8z`JCR!2 zU&!5L$Zv2#Svbz4Ma7kGm*|K274piM@yz6A3jATb!_=JdfOA~z&7Y!+lIXY2(}VA9 zm?~u9*iTdxtTkXagO3C+^o?YPx2M8!{#4f95Dhp(#@@W6wOq#Je=Ak*mk$!Ma2%DW z7_eDlT}`{wiT3vFka-&1Es>GN-NpjWys;CtDL$wBz`!68hjef^cwk*q(CE5RJI@lpWy1OhH=|+z$rzVlN(>vlzNDcxGuj zY_gS+fDuCgXGl16lF8oZ=FzQt`mp(@pVHm!RdCVj8$4d15Bs_^=r#2#44S3~dty{j zk^2Q|W~lqUvLv1X?2MzI6P#J|*N0$>qXC(FN*i!)I7oIFl1=nUKTUP7mscc^J?zKN zF0FA9a#5UriVBx`GB#e}C56}ZXGf-_!}nq4#QIZ-GVeL>Ful47zuDuh@>RD?m~hFQ zxH`Y(*%H0ehB=?Lq#qi$6S7wv6^@pFfAI4RW1mShh}sEtY9aTvOaYI21JX}c%RTls z3syXg(^Q-ddMDjzU-^B{D7LQN zpT@*hQ(XDQIrV12L+Ut?U9Nm2z2CQ=ZoEU`c#0;;UsA8=`ijAcWtt>mIF-6Iq!7eU z-Y<1n#lO#E*7RmRPfVHH^!mJqmyf_2{hP9qKKo$N>n;f}Y1g0kxA^I--X9xasfFi_koesIarx=nVfAiPjS$bbe4{pwG z@XFf9HQHp#=_1J2k5>#h(12X($xluO`zT%(HXxC&i@`En#`mzef2@^HJobV8m#BKlR_woIl2nm+Gf^%TudoG3`sPqyw0ft6nRD zcW1hh!}pII$Vg?4%ch{jNB=lMXGL5n_CXdwiO-S^9Kfwba3Rf)Ev+S5#~& zZ^9n=9i^2K!9o^}_rT)4CVUU%wbJ0Xt@yo@(Vf|Z;KtpAVv`zMup5yhg#$6&fIPZK64IGa09Jnp% zmiCB$cK`mimx%W~w!>?oYLl}i>3^T!4cNyvI7MV~1ORi4}+5F3bESkZ8f76^l zMWy<`)aIHW^9t7xvR9mc_Kn#O^)1Sv9aZnxGHIyAjt_ET4Ii2axhT#iqqppbQ%gR< zrqMIF!th%yP1knhJMNnZ9(Z0+F~HUH+t!#>Mqy{vQrNKEDrcI4Q(}=naw;1-6vLoz3ybdSs(W1x#*ljw0_Ng8h&9E!=rFiqT)R4 zp)=1fp&PQtv&)T=;PsTRFmO=};H(dO^Ze@mA-bn-3VoVCp5am0PgEE+TS2F{{;0YY zF`fNCuC6;S$M5|=?LwuZA?;EMX({SC&+}Y|?47L4GD}1xJ6Rt>wlpL&yONTga|qdc zWp9;+hA1Py(}&ONch2{}UYz%RUH5a}_qpEZnmp6v(Y$QdFC$M%{3rR6!_HBZ=WRT? z-{O66|NK`_j%xA}J1HNGR|ujF-(aOz&(X_{?5uK-C<9S@K$mh>W@)gw;?;=Q*>Q zpO8aPJXwO3x}m_cFkUwMYO7z7gh{3O-OMHn%#zniL`3)LN(<(0Q0^hFbcIGbpvfwD z(2!}sb2wf$^Yxk9(MOsaiB5^Pz$|&KM8w1FT9nhX3$?XZrzZ`Vm5Elxidk<256jds zE_j~08jkV0$M&m#)(6qwx%I@=*aY$MWj^k_xt2my=2y6oy^rnfzYg}LW@lPaFGXj> zbIwcK(}6~);0^=F{!eWC>xbD$Qc_3eb{IkViFLdmmhWIFk;En6CJw5`bmcA&`u0s7 z+#d4*TD;ng+)mWN{Q7s`e`k(N7X1Z=RI!dX)pg7|PY!QOv%)Q?f9KzXU&Z_0M1Sdk4YeN=8O6 zD@l6)0Ltfx^1p(3=RaA`{<0fK$?~HTHV5nf+4d}>eQ@p&t3}ml4lAqn!n7?qc*w7& z+Kh^xpOlULqG@Zh-h{8P=WC4a>}B;vweP{IW;sLHr1hW{dnS?23R8jU^YTO)8_Qg! zy>%ziu?g=GUpMj4uLgXwS#9#tBB6$Y^)}qHK4c5SfZqyI$= zF0n)FhJ8dWD#ug5<{G$jcN-jW>O2h7)W9Z&*4Q(ed2VIuIIO2N?la{ayN@DYOKC88 z$!wN;(ir*)Cf>Kiz5{Y0w_iCZw_9S5PdV_|pbX%N1)dgknj!KJx2G?kPf*%)lF9IjUDNL$v((_lAplBdFFj>emYb#k8rb3 zO%)?`7rU^2=lRkXC*3IjKRlwobvncr8sgYtO<6D7ih%Ypx-VV%*^cu6(|H-IkS#aD zmq&b2@K<7|)Mr1?de&=cY71Lh^|=fF)>;GGQys;nhu%2wfd-y>R7WwU!W&y2Q^(^` zTP9<`oisGXa0)%Nax3AvI?v(9>`=$s_q>63K~J0Zt5p~CzqaZ@4SLuK-daA=#CvYp zeYBa3TK6TS+s?@X)923vJnLt9WTul5>O)8zL-4CqYt-@P zaTOR2ErGo?Su&n2GvDjI0&nM;wKYtm!VEhzp4n>E6no%!<_f6|jkbd7hCtpuvRBr5^4gFc9_ zk1Kgs1519C{;i37XtI+8v`i#B8G>KM*TIR1ZRazQ=d&4P>XfO1_ne=Y&3n=%l0&Lz zP`YFy=~KpJaC5c!+CCA{Ztp}i_>H=3?#Q7uWAPIxe`bQ~Ivxf-S5eGQY_HLQqG}r& z-tiJCs!s=Vli%=F)d;>P9R}^Z-%xv855^uj3TdgoVCj@5??-ZVXX%It5%@kTlE z>4WH#_*8JS`V5hWB7kSbBI0G7Hr4dHLe{Fu1*Xr-6A{kmiwL^5f~@ozOM6@Gfz+1O z;QwVN@T{1Z&35Xnr)0$Q7}BfbSb^#DT8W5tFYl0lK943#U4mJ^zCDn`rY?le2nU`= z^RijD9+SIdQuom$$0=A~`n*;mB4^bw|gBlM>BwD;k<0t`*Y_> za_fbcay82f=U4GsiHKPT9ucn~AHUy|rqTrOy|84_H*kv!1D=KRvL%w)pSF^lRoylVU%CR%M%eD zI_@VoD|(`jW;1Aw-+uU*_LF(g!hmPqylmF%e(PFd+C~KpA0nP6czGfs#W{n#JZgc? zRD{t+bO1JXVPDkCFyNUtFPnA7v&taeaTcgswRoD~wGt5*$JUccyIAgd@n|~9;~@NC zQNH`iFyNUtFIytne&H?&-K{EpIdPhBn&7n(5%C2;b-q0%rPU3D_nz_R1moui;rAOA zocV9QPs}G;JcZTegqyqvLoEyW zn7Ln}O#TjHCm&)6{qJhByRSMDN7dm}#nlUcy{?Pj3|lAXJ(;ZG+KTs37#Aixkfe!!H@pMQX+|=i7n(SJ;|B;yl`>y==&t^>{O~0b z5m-X_6CM8q`6tV=an~Esm3_LC-a&n33-_zwoL2TY{dx)L4Q6>O&1`Y%l@eG>Rk0-1 z4)5>qiS5);=f0CeLmf$(bhM0L#iPB-CHSSE9S+%F%n&2$HWMIK(of^&2nc@FsnsfY zQEOW~tX~O3G#YlLYpv~NJBnhF&(?e3X<~-0=M;di$^)4E-VEE!D}Y78_u-aB8yuG0 zlu7Q=x+|^g45lmxL`Gl zfNNfmHL}k2E*UNG-WyFlYbLGrq(irO(!Ca&rF_o;zRv*Pl}{qM7Vk>c2mJ7R<gtVM{LL=lJ2AC3&!XYc3QU`eBJ*Q?^LS;a;dan`|{8#)WP@ri%NW zXZcr}6J@-H{4T+2OqR-Mx~mgiB|9hO&;5K9NR0fP8C@bhwpv2xEF3LlZ1F5y%<+0% zVTpDdjidfOD+#|U^{fiMbomvixfjYr-hM3E0@+OMO%1ip1m4b{4S06W>T5GDquV!h zD3#0Ts$cH7;(|Ip|MG_X198V=S$2wI?hAQCgBzZ)QynKfq3oG|_02<;*=%ZfKScRe z?pNHfQ3vk}{+ zV863z+KsdIS@NxR5S5vHAi>>Uz&!V_aP9gPMM=y{=r^bizUp6BXx@De?fTR~hYNSu z$*avPE!wk(HS39ENO?BNd!1d9QXo909J;)YVlt*3Yeu!TZRqfPJ<6~86rBRMt;=8< zS_mRy{WCS%)!`Spk31;PAbEL*-lu@FZ6!E+HdXNK4N#-UvVRiws~&<@{B=b{sp2%jUgaom@e z&2ogTb`V3{fz)1_B`{=Oo``tb^8g9`VW!+#89~=SV=)NpdKeNu19&#c%VzQOw8KQ< za5aBwuLyx5^IC}rHSgmj2LCPMH0z>At5)q>pTwyueOQg#+ zLg~x0{Sf1=g4a~e0G>_qvRQuy|3_p>SPL}z(IkN(^ID0BO~0Dal|_y;V3?+`Gw^#9 zze`9YEi#+a#0Y=oLFYh0E7_?7pwmkg|4t7Bks)tv=0OX$_LVMJ(}nWZlJ7gHc(flz zW$EIJmsHtz{yVxq)zwe#wkpGvCOPkge{5Rdl?$~XdifrB{jLSxUeg@Ld+ddJD_z_$ zsfo$FaJYz;UGpQg*;9nxxcq+3XYaAP3GcON&FC6wbZR7Zw<>|?Ru1@zB;Id~ehH}m zw*NQ6`|ua@>=-%xjR}u_avs$*^CYKIr&2y+gU{p;`|mmqe1&!mNh0sFM$ok0o;cxy zHa44{D(6{^$YicQc#JMZwfp3R4!)9|<%dhTm$AyWkp0iuDoWCc=GIFa> z?8q%7YR52o#!?BE6HDQx-E7cvJqrUyl!DsNnK0t^S+EN#gIoQYsyWIsdr{NT$;7Eu zGrA>u7d*79h1h%Zg$h8vGLSuUs{u4P%Y;4;F7TU{@EPv!Ed|x&Hga>-YKY1!hRpYE z<FCe}Og4(_EZ ztQV+w@rLA$dnokN@VmhduZH=#nHchE)71)iK_hwHoQ$xmgSTOY|hu;yk zkg=xbf4VJHn=$MEf=WjW@)zm{`Al-LQm_5ddFVqyBH3LPN}He4!WWZRyynwCh(9|S zhikEFgpYsEYJutVQ1baiqFxO#@QC0>X{ata)k2~_Oxu0Nlo-0mp z-6!8&Qwq67op4ND0ei1f-n65uHt5s$$5koMEciWY>iHyy$*6#nlBRwcQIk!mlVvgK zr{_X>p1`Ba_9VlbCzVh(vni_oz0#h}zgm0sBmMH{}t!4Wfo=Lx)Q=Ebp9r+&_p^Kbi( z7Pt?um54C;_JqXcyZNn5okEXnPle6T>S4vcaNv0YFIyt<)GZ>Dk0kqUGM*}MA6_dF zk?WK}R(5EQbZ3SMOoo@i%Vr$}%+Hc!g)4IKolY&)(%2+~Mp(ILCh%5YWEt7j2Z(27 z1PTb4F0c$9!C#3*uo`cW#P1uVy^E(&^Yne-uw4ZQw3`V$e-IhK>cekH;!z`V@zzAT zJf2k?ep1CVCWHfT&-p8{jwe|)#mhM%s9}u~hCF(h*Pis)g^pw2||@8YGfRn|0`C&Tg`#CF^Z? ztP}ofrh^UT*1{@279x>6eIA3}2R|aSyN(m)5As!1ygU}wpO=N^j$B1*9VZJh7G9nx zLq1?FI_{c7{2zu0TJiTJ-bae3BTcJlOO;9QhA!CrqUpcyRai!W2g4hf6}p{tc^>S<;L0t9Z`9XG2INH-2|h-Ve8-t%v&y2!{ck zaB8GFzS|;A9=Wt5o*b`^-DoO%OJqYz{YKqsBwNbIP+6od?sI|lnjEkmmABW$y)*yB z()w@J#q-F2aW$9n3+VmHL*&QTAmMrNzb^l5BoeC~{n4wnw@LiK5J5(NR=487dRw}$ z-6rMbNhJHX^+ythC}IeH)rTa;r`!F}L`0~bHlbVO{b^5miZp3K7F=6a57;CSytZe- z^wfHIK426a4a|h3xCXEu*wkP2?Ft7}C+|pazVN2+vUIR<=VEXV&yYSyXod&47DL>Q zt%&b6Dv>;+7s>cmp=4KC2#w!b0d;3sw>SIwi1#OttgC>&jsJCf>v`@X8DSVo_Avy% ziuW6fhzPrS=@sQ*Iv`44mh+NmlrV^I71hHrf6D3hT-(uxa!erqvU<6D=9>mK?`zDbEvlUXnH~2{O|^L-4yM zzmJuNJ-r`&o*Zy<`aQ zz&a&givZs0^Rn67?yF0!6x)>6tW!F_iq}d+^mPx58{oJ3EZ}(pFPqf~ zzhu=;_lWQO7SjYK!)qlX9=e_-ubY37S`H4QMXXY9nbS|O`!y4IX2Hv5p1bGQ$?-)2 zD4m1|OorD=L=5V6gjhfGK#w(M2uy~T!OLbnQp`@0Fvpds*Z0XZGCmD{vwkb4PU+g zQ!XN2Psk#3SiVHhO`|B^U+|w_m2kCVCEMo{rQ;o{;Gg+_rsYW_c@wjUf$Jrrj2}h$ zRZI4NhS%kPR*8t|wH?vNH8#}ZibAkaycInf(gH_xEQZ48?(DZR{8o)zQ+55+6DH8` zEADuFR|8zLMlR>`GQ^Hq4>#>0J8#C4&bOxtTJhGW@mM9)nEz*SzA{8lhVWtteid(J zM8pXHcc{=*h4$PnrSc#zoaCa3Z9YAh^Up?qkSBIyRSKoqH`((jiSLpB%5Vf(;k`hp z)ju^{f|H)Sg)1lP{cLnq@QRlI)zP2Y)FVHhA=WYkzY2#)@Ljtr z=CKO!$(LEa=!F65vM&eK=m$?%%4@=FC?eDxv(WQ~2js--Kzib>HBL9IgSact5HIgR zu@zQ*@CDrS53rc91v{mfe;gc|bAM{w{chsN-1&_9+THZo#}_ zRjhfvX;zA5i~Z=t^hq*L>m;-}w+&v-x&W;@(jFE@nd9$vZupQ_Cz!d+9FJJ(hCOz) zXO{B>n?95<>mJ#xuSt1p$y?`tdMCn4)_-?WdQ-i@ex)~E9e#s6(J`d_s(YG=V66Tb zLYFN95s|#zn@)~8Nc`4WP~JlF@{$q~A(wfnUg6CjO2D-dc)?jg_u6&u285lI~&5hLaxk zFsJ)$;H@PuoB5V58nCZ*g>vQf!2$!|wGt8cmN$|%E`6jEE{&m++o!<$rQcz~jtJnb zB`=#*H8yBdH1U`8Zq+b>0q|Ohh<0W#iO3X7Vz>smZXBdp&EWSzbUV8WMCuAwnIn&GUz?eX)NBG|sUIUYC08Bd*11STfU@sJc}JpAEPCgaYR&ZMAn z6n)w8I~n$-0HWr7hNKpHpnbmp=3lFV&9ii%NAN{(oLdE!%XApx^nshG%##x1mVv@f z&F{71F8WOK22w7aLAp8zQ+`e{zXzXQXN@yhm%Kk+n&UKXpt5B%NCZRhtA0qk8iWDp+^j1&Jg@6Yc>;0t+M{#RU#sHZ z-x8j^B#zLp>kaTGP6Q)_5l4QSLP-q$R&v;W}wKtV;Bh z)h=j_?U((>uk0A2iXl81f?u`IxHXQQ_Ggudczb9S+8Po>O~1b+yo{Lo*0{@(a7!lOe?QQh>cha{F=5%;tFQMc6 zt>~vPqd)Tp{Nscw8lS+1Ph}A6yZYZOq-)4kCL>Ec#pl7lOZ>B86`=i}Ba@#E%6s2J zC_nR>fBqA<+u+qBe*S&t`F)?G!@nAo4)r0zTXJQt4bGhXU)j^b>vCYr)cAI63JCsVWnT-MCa4oV7 zWV0KtDdXz~QT~5;M23kiRx_9UjiuT##H(*?!aPIpt9ac-#E;w-GM#o6%6C_XQhq`j zui@buTYR;PDmK%zWLnkx)SzV_J;{tZ@jiGBMTGOjMr1YVi*lVFo21OmYUAY%*kOlt za@26#(??8(kxO&gqnpQ-YUhUuTJhHv5tReJpt9j(NJ`65tT*oe&uZi4nY6LTG7SwJ zr}BcySl`1J(IYnW^*cG`zlqx6&*AX43Mh1OldakG40=x~hYQ8)*!MB-VjjhuGSc z%TUG~O_{#aAZj|N67pg#a7of>=*zn2zGGbqM&8PWE)%N2ZIK1eamiud`I$$))ce69 z;%3C6`W#E;^qxg*7kTE``_Y=N&})@v^C+>n>evJ>20 zsb1|zW!f|!f$#EKi3qj*HuUMHH~Bij{&azN5?nBEfLYBVf#-(2Y>7mDlOr9QCy~m> zDFnXDYb7Fr>I~@Or^!;4;K6jKW-{!W`U4J+m;*dFtw{%~&&@Z6A>&HN=(%1PAlo5K{>c+3;e_!I=r*y* zr(b{Hj`m46Ai;wabg97}xY9x$4=k7sJon|bWfg}Rx1=4rNM)}UJJS_@Pas~q4Nfm& zli9fXILXnc5OL8Aw~Ic;WNdk)B8wP=$rq>L!oJJzoZ_CC8vh)X6ef`M&qh*yb_u_u z>aVrO(yp4g#lBRwi_UQPitfe5lJ2_$g?*R5u83H%_@**{M=$atH(Kx%@xGq>UY}vy zqdzldScTibHb^bE2hFLspnOD$k2Hy~BD&lZSr=R+Eo9RK*2nWUwc6I$^TmIxZ{y(i zX!Xs*WL0W_aOb@4XG`tz!2m7n{$K<1ez>g9LSGi7lHgAhC_jUR|J@80IpEOs+JCKc zV|*665S>aMl}-?3{4>D;pPl(WX5_21{=|Unukz;rofKNO#5!tmnv|Q_;Sd zo>bq^T{%z7nl5gZ2w8}SLPLg=KL~v+oq`&*{8agWfea_GhVQX8zN!U|b6bO= zMxTW~GK+sTk#@)fr(JFTYV{!4QM&ljLh2juNqDx+UzeB1Is&ElqZ%9DDOGGt1Y65n z%jpXez{vLtENzrA$|W)rRR@~3J$2$qw#eHUIPz|4fNVBfpRM>ga_H`yT-7uklP z#%TS=$56K21bZ*t1HHT+L65bj_^e_NgqJ;n`R`2diUWHYV&L|!G~ri*-?HwVh1mnV zUE(`-OCtNffMxeB(Hx0WKp@1+Bs^?9AN){BjG;^r9ec1i61oiN#%zOVct z4WH>J*jipI5%KeRE2=eM8uI3? zua$_nrK3s152qmH+?PIUodO?TOYrMv^MJQYyljc2t*r)qsGEq?BKrxpme)!|jQU+m z)YPXSFJ@~G+3f~(H&yJVmlq$XgS9YR6;d5&lqhh^V@a zqwR*CA#JP+VCsz;XgggEB3v$l)VLP5?fj{@WpW96`PV?Z)e`n5_MCJWJ-*%rU1&Cg z^8I%B{yx$Bobljqt#ONPyO@nyw6!yGn&^&lI?t#4|L}-Dmd^P4jsNzNv70-i9pl_l z1w-(w_#HI<3X`*V zd8{X3NLTuJS2KG1$Wy{kM&~D{^Z5a+=b0i|n%(R$`f+#`U1rAO28s4KB&?0}Krbsi z@w7dTw^8*woMMH2&D!Br(>0s?3~xJ2pDr9J4Vb)?@~e1sDz?I};{N0dvl#uG&eD~! zBc=Trf?uU_$qJ|2{aGa<5^Kz9ZcGb0W38c3Q_WYFi`C>_my*%p5v$R$+G)aj#lJCp zWjUMNtFWQ3es-5V{Q6j$RdN^-#+c*F*=dldaSX;8x5eH!SihRBM?uT7Exw+&hrPRJ z9{SONS5HW9&32*nxu@V#eMdZ~Gy{h0%Y+!$jyPCy3MxNlLc5Wj@L;u53~{8(OO$_G zmG-HT3Nc7NiYUgsUY*WC4r^8E2m4;scZV0&HrB%Ft~cd;#Oz>-CwBg#iO-)n&#YQo zuMemq# zP^)i*{l7-Y90z8@$4d71*JcG#frA4GrJDBpZw6*vSEMKRJCx;(Zh;g-y2o0KRwuCIv8cYl3Ux%;9 zjd02OEsDqP*Pw-7E8O^Tn__a^b-2{26@G8JiS4`YDwu|sbWk3OaS$eL@YY$>D#y4t zeO_QeW!K4pNTvt=VlB^>>C&U4kku6_Ev!joXLAXjdnStYef@t+9jcZH z<9Ggo*d34%T6wGt86OZ4a(^D)YkHACsXHcUo|8r~fp1^lUzm(3=0uWLn7a0_Ydz(ImN z=d}_Mcg)Obg{KvL7C@+qd)-&b7Q&B4X(e zE1EZ^Gx=2kH1{6MTt2LUzslyoyLEeDm|O#Qx-koQ*{nN$Z%aD1QciS+Val)KwGt6+ zsx6Vh`$cra`4V5gx82c}ZSd~e3K)_*Ti#z`hWln$K!Vn0_U^hJH>TbZ{bkud*fiy@ z+IZ*aPI!LQE6`x`IK!H`;x09>!KZgKY|zUU=N)^=-o#9|&E&CXe~O|tY5#*)pt7t6 zE?dTnq>$JavRo~C(4(Qh83WV7{TUAr;Vc3l^o^;QRG6z0nL z9kryN7p^kY!Grf7V_JP^JcVY_1EgWmcwyh=cTN$JY0?6Hc3Vj8oSTyugZ1#P!z^nu z;W3Jo>f?Z-5?J-tL*_VK5BD5d0se+lZ-OoDA zv>JKwCen5+Cud{&2rPr=C?YS}DETN|Tj)qRl4fg^=*;rN%CXPFgeoDvGDyr~4bFLhBBNcDt&*qGs*9fZLjRWdEm|PwS4Ho2 z$E_~wWB1uob|1HjlaQl~)eg#*pgU^%c!LS6$JwPXALiB)PerA0!SEkh;T3(XlTr$^ zn;9^~-eZN*IV&CMrtji?@V~B$rarcv^xypRvO|T^tqie-A^26TQuMID|DRPNB0Az6 z>QNU>jy@5e2mcIyXLZ3PDb2CLg(FO>+R`Gw-MA}#v$iwsWhue!bl*VSs2_;$<<94e zOC*;vEu`BWUy;+S$0(mw>fEy#ej8BoZgp^x>KqrAk5jE zgBg;K5Ibm8abVh^AvL1n>F?{%^fy{Okdq&#|wTP1CuS8bp)bw<+JwzXY1+KEtY@NwQ3I z5!#Nd0&Hw@+t6#vLb;XcKq|N+j!;ToVv7-%jvrL4OXC*kcZ~^cZK%6Zb)7p>P_F0ai ze_9Jxjkil8V$?+|y1srPa(^PF6Rne=NTP~kE-V1v0`Rg~26nU~UGX~u-K%vGtQxPC zh7IFl1rY5=^IA43ecU$kDycg? zvo!^Nu({feDT59n9bgj7kLq=b6RhjnrT1{jPhZA6nmGBO@-Ns z1k~EH*>{p@!aK&^#N72{b+3tZg~t_`HMAN$cS?Y_A6xUT!qltPpf{muj$+7O zEt=MTJ9(7TmkwOcD!SFQ@!mbNU_|TPFi}GbS09=U29C*4v{?)9nBJ5#;okKQDi3$` z9r0?KuqX2SAU_q8?Qp@S^jf4Ls-E75_PKBha<6#c5$dOap8)r%`)R0K<&INlWHK4r zod`N@Z;}7~$PD2-=fCZ^LT_9ZK9vSY{& zr}VCe;3MZ`ZKv4c;cE3zxOgPn87zNxqK%*1$l^=xkfkS%!1+6txNMgmw9P*PF7Z}4 z=(QniIDQPm?X9uuHGOvHp+?*N+&g_Ij|PmR)lZDEO(>hIJ~m2eRYuxWC(s0@68qw`%Y~|D@I1r9+%cC zOV?ZCjH1sF+qXo<=OnI?TjHTHpF!2Ympu=-5GW--gX#4l#X>#;utav(54p-`cr<@7>OHR60MF)OHT=Y4OZLNAs#IrszH4R z4xoHC4WH3?d$%Q?w6zA@>z^_Yy;PBboL*HC{c8g$zv|*>OI&ii3RX35E)x;@ky)tm zZXS7aCrHS8;pN30vBC)#zx>S{aEZu5w)gVLjJrXCRx@0!aQjEK|E>}d`6G@XU*nck zwooD5Ie(Vre+AZ6C3`E{>Uo!x#f%YT@VfKzSS=Yt{Pws@IxinX`Bkx}Eircfqm_tw z=KK#bU28!vT#`~=lZ%f!J3?L(1VVU5;ljIadn;9U{pk5b5IFP z-ZBsPYI)`zJc4Q0f(GeH6I+30@G``x3@M8s*VpUNt1yt>F1iQlu@dZjCsQ%O`XQYE zEy4C%k0~A~?t_Z^Z&=`w!|vR>w-pVniy($AWwfq$5(KVg6U(xqf#(T)6i6Z&^xB2? zF)PpSv{fqb5}u2Q2!~o7dcSQL**bk7t?Zlx6{j?C>zMh#^8{WtJJC-xrd@j)kapkt z3QUIAN<^f8G@#3mt|iV1{&eE;Brw^>Jah}#FUqkRUbaNCa;iQZ8L*R#E$tz2A6_dF zF?5VJ>o~lNj2+R3^4x&u47_ZX(fCA?0b**#NrVjhJkf1w#>Cs^+uyVUL{yruGcviz}%X$^h>qzy=CX%?7 z9(2~?T`)C52iGl{3%@nkdmO8c2gXN%-}#;J?mg??`%hEMYk*BG%0*E$G|54EzKan) zwUqg+YLCkh^N+=7mP6dlyT~Z26&}{E9QIBrU<{x`)LP}e%PdZ0Yeo6G#BQh)?sSV) zk4(&$@0i&UuV$W?P5Nh<lZjVgx-7Sg^g2;@W}6*gh}K41acOGJiZN0 z?*CZ%Ghhzovzz#AsunYBv33X5zY)dZ46&3U^oPw6cDOQ6TU@hI<=<5zf?Pe0R#+WV zD)!G55d1#Kqa~7Y`o-wO3Pa^f976eQ0bavWr7e~$Q~OV=7R5-q)=-(!Jw&(<>r7ib zvh0uUB4S*|HZ;k-NI7G$c;~$CJeqai)2u-|dwG%3jX{*pFW@!w>Sl+%Zm9p&>Z5uM zD(vk=k{E(twcf@Kk7v6?Q{-4gWLwst6SiI?u0cfby7Op>BsV=1ZJj!XgwLEt`D_7R z!=L-?@Mm+)zgn$jh)WC+$q@W1yPbB}L+j5f5iwxRXVm6EUv7_Q4cGdsmD6&2WXllS8G>KsWN(jcE&r?%5%c3SP&SL|pEeB> z5WMa@nq{P%TZV2tsU#OnM$(w^d9YBc7>t%iz}8`B!RGQu=sJ8hl&78rd+QI-XIRsT zC3?UCQwSVYEc>Z}&)daU{Rsq3x3uGb}jjJ4lTDuz4(R+GPp0R8(>5Tp7sNGVupf~=F!n-+vAO& zTVwabC#8I>sN`CEJg`^mzrXHE5{zy$L?_}BhcP~kpO(7^o_r&9~Z-L&yLQsG0j}INW0X91?LZ-YYUK)0bJ;C&2tlLTB z50Y|wknCjXVX&O^1O6Fz3ietbfta{@7@waBcg`GxR*SyFm{(0PuTg<5Wwu6cbPL;s zWT%y|#P>5i`E>*iS1I8+t$^R*Z2pctg$FF!AfKDg5J&H4li{C-QIlnlNZPc+aDD$r zDDzwln%$3piPs0Xac&vJzfXs&_dkHk@uo?C^K*1$#bakGoqG+Z{Atv`eK*{`S`VL@ z_C{W|per7ETo*_9KVo~k%AEo9fc6RHvtF%f#*qZj+NFwXzbpgS#R>3jJY&c|mI0r4 z!e-u|9ztto_fj@KZb^BL!=pun%c4cJduu(?FeOI{Y()7qmf5>Ebc^ia7y_>X8bM7r zQMOI+dz)%_M=mf zj?jB&%(eUA-?tiiTGT5%$bId2jhi5N~j1$4&t2%ad zY05~!dd=yttPN!Ixjyv7gd`|`qm9$|%mLoEi}w6X4^R5|;sfR8TOO3xoo8hHZ^)vS z`$oyOC67bdIn|`E$3+O)=7v4ha-hNL5)6~MWD@Wv8d zJS}FMocGD_9ckH~xX%?ikL!niG|Z#BS~+6p=O);_d9bzse%c5xagi{&$s#h~GFAE!>((!ZoG~K4iYf0q=p9NDgcs ziau=1BtO-s3!M;7U(>-6=ZpV6ZHtJ-UJc0dKBhf>J{I;8e*fqW6ym+AVC?rJ>@6{H ze}V??FrnK+T5BH~j>$s$Y{@+-AIIV2EqqLeG5t>kMC(->8n5j^>4+jYw&*8J zotC3GmGKBnxBUdY<9Q10qmN+m)L&5ZvgyoOJ$EP3zjcU2j+{gXcew^yUA6Evqcp|j zHP_(2mJW6bNK%B{xel^H+IT~L5<_U){X=w`tw*~@hEZd+TsW250Z)8<0=nep!IpC! z@L(G@t$AK9lr?w3UKfwEwcN{OOXD|~;hRo>G7{)X zGpynMUv@%6?p)caey%v3=uh zCL>GoRJv)VEBzYoBgnX%W{NAPR=}!A3t6g%8NU1GKcD4g)u+;QhIq&j{HpQiOtBiX z$W6O}h%l%fPHnsn5m@nr>`OTedPX{UbyAIjpW$~s<_PTgqK#kmD`&q|yKY|8JKcj$ zEKZXy?|lp&Txx_}vI)TVMh zi1+nf8g7AS3}W8T%}v!DL%yd;&*J8!&&@^j#l6?iTBjP!x|yP(POqS|cQv@jua|~) zc@1UHm>v9ghbyj6llEqaAq>H8i%%x`b6gK2@?EpyjJ=hEb+Vz z|H=5k5E~gHk|Fq21@|nl534_J(nLh;s2Y!+)RhvwLn4Cz6?inuvZx-9eltYv!64zc zdcNNR>+1cHAtDCNTPuBfB#)HR8Nz*Z2(`pR^#1r0dEX+NS=>Gx6|%qaOuF_^Qqd_Ii$zZ=Gdtd>ulrq3-R@QJ=wo!9{LCuMqXx5Fz#M|YOG3?kA@oy znKgXg3ZDbZG6$*`ql=%TXwCH;zYx>rcvJRA0QEj{V$&QK9Qz2%n`z2dzHg2fS{6fE zi+;?Wn_BjuX+|-`L)Tc?+xeY({Dhq_;-@;kdb5dH%HP`iHLR5)yLdJucTO%0Y37B0 z1Y|<@gL$y(sTb~?o(UCYXQ1_MPrL$}A|~eL?dg5PQ$+u#6Lqvt0K0rmtYW-~oreB@ zpLe>r6O!I*;3;WK7-E2mH#L3{O@ay>1#7_X=OV%ho6t8^2S{nDAHBOZ0i1Sg;n8=Z zf!{fK*(_u0fE~qyR+81eT?K2vYb7EsDNX2|*?UQ4A1USiFuV+2HnW3)di2%(?W9Y+ zzu?8;IU|21)(3Kk9yR#5oecfvFIWR!hKRU+-H2wJ8W62#{b`_4BIHCj!=Yt!pubHr zY%JHoM@B~g??IAC;s-aQ(%%b6jo|>wui~{55xP%X5QDc9XzcWlMD^26u+IMkY9onE zyTeTw8CwR0VS%!^?YAMP4f{KKEPHovKYyW=rn%9Bs0$qx`~V`~)xs6`QpF_t2=L-s zSUtE@!FR@#NLF`nkmY-ACnh^QDepHPy8k@n&SpI=m(2SgAM)|V_2_G^GuoFsng(pO z#LxCR;uiPQkw+g(yyRlLe;HX;l?B$m>iCz#EeiaGo-cGjMSX*)Re~4(mBoBxutgr} z;)5*$TH!sORL=XgB$9xsZn7V`9x~G4j#9fkgu!P`@!P|Dh3s)YtDMbt8nYBVc-e)@ zgB>X!UEre*V%(qytdXAUdzNh2KSRhC@eI_*35WmWOyoxC<7=n?%d&XWz7Hz>+LGoz z>nHo*X@kGDXTIY4Sm?0Y8Yi;uc#D%(K*KL9{3Nsyf|{>jUsT>sU9uxSfVT2zMy;N9 z!t!)g-0WC(U#1NM9Hnfkjgcu{7YVqT=OYh~8s> zx5?fr_&HxJH_Cm3-(qazZW8TV;y$+S_ocq6WNw zHJzPr-U6EVCXQrGGZyxC{+@0g*a4o*?>8Z>$$r=@>_=_S99KS$GNqF?9f$ZchIq)p zBE>uFlMvj^2=5HKt$089Bp5{+;(DLkOopw)5bEnRi6kx8r2MrCK5d8eB2BDp9Rod# zcEV4_QQeB0d;rJGvz2$gjG?aDKS-#)D{g6~hVM2$72bCKD_|$#2bYj%+8{d0>IDk& z*TCbo-og1VrSh?xH1Mvu?_tCQO@(5*I^H_t9Y_XgF|C$B6m5wYkgeJ$r8f|TzU%72 zt}sWoc@l;3ne_ltYx&V@1Wxz;4tx8bWN%`6d{???*%22_O38!LtB2e52+h94$QyzuLRu z4_{6)#0b=e-k+jI1|I4ySOb1P=Vh~s!<*{VW_c&t##o)UHQ58n&LwPu?qcA3dGp=> zS+3gb6p|bhMmMBQCMn;3fJN)q@b2CLS=P@6uyub8vv-=yHy&+(yPsaOezV)yohQ9q zg-XiQWPz6k(R&&$_;jx}Sk+2f?rrFdlf2qsyBBX|IzG;LbD%k%Xlu)MpT!#{(1o3g zQKCglaxMH7T&FI0RkLA?tG{NJpaa$%Jw)ai_6q0%m%n@ahD{Ub3a4UZqu!G6tG>;D z1s<#atP&C1!@5g{vR)Pg+s_bohK#5dSli-HZ$rM%A?wCIR)N+?HK>25VZzS9^ErN( zV4k~71==gqpdFotQGS(KZgYIE;?IsFB0i3^rT+7sl(7eUP`>Z+hnBnGdTeuiG9wcB zKFRDG9GNDyJ9rQs(2fv1slu);?1>&88mQBUw`i|^u(*qItN7={GEyF^p%Rb9)XZ>; zls^?sO)|r6a@aYl+k6>6VVUi_i6yA^ls@X{#hzq@114Y1@G1*!S?fFYcvZUTzfbL3 zj6I%q!0hi6T+l}oMStv02U=NEzB3vhaTk3{w{H)js&+ky{cdf6A@j9lVo&mW6PuI0 z2RqV+M?RG2B7sJaA*{F>Mr(ckA6_!PSw2~qa!WexR2W@2>;^b(Z;6w-Y*IKlu&qzk z0Oy|Cph!!+31QwXaqf!^Y-e~J-j3@1*i9AL%enWYK64ZO;GGI#It{I zRQRpA1;t@TxYd`{3~{@10}Aj6lR0~?Atr0u;8Eo+cyofTJadpa4nOLG({8f9T2Izd~N$2&U9AocIJ@g)hs?!GFvw z*~@}!@S&y*{JRa3sYtFupM8(15-400yV#z%f%dF+eUwBTYXB>JBd33Z}s_ILLwQe8|9Zab~L^JQH@^Q*#VEQQ^R|9 z_x3$Ie|$7j;}N4Wz%BzRc&KON=x?sBZ>z%@%cC9*wLjebn{ zo`8I%1z(%R&IS*^OI6-kq12KEblT#2@YrdN74^BW%<&sU%{9mK3UXl}dk@AyTkI)o z@`a~pc+qGT589}BEZv)42#3upA=d4(>}%m=*f*#G(z2c9XHOJ@B$WA_GM(A;u-Ma! zSY$Sklh;PdX4rJWI~cQ&0B9QMZU!?f_e>vt5l?svhLQ?+pBuBNVa{eQ%g(F2gQ zLO+V~UM}AIsj z{cOKH6FhxP1;nkrhWM%Ve5{b|yHndrFOSft$6pVnJfcsa2_CrUkN+y-g$X7b{_}Ws z-h53u-Fz`AD3~Yo?DtusiFNk=>DhninkMe@`p@4I$@}npw3|)nTA6PxL;?8w;3EPo z51{o9RN2{vu50k7yr-F8#iLn-cebO4(>wVKVUdUPJD)m-qm+b5Vu_yV;0=z4My_?BnXF}Y7Fn(Ek@ceL_}N1TY-P@}9lB~@_2~}(N7h@1Rn>g& z!v~d6KoFFcZlolXID5`nOF_aeuoW>7J1|geMM1^Z$L?0dLO8Pt3j^#1r48(sdWYZh z{an}V=l$^$yms?2Gd)95E=jsUzF++C%c_l2)|OHL1mG=A~ko zIP%}lat5zTV2#25>{pAPHYcOwJjK3Gnv=GR)$!K^NBm)513aIUj6r7Z6ER&djADK2Z} zFL^)scY^Qp#jH5LPpMv59iloeQzg&5TZ#`7JJ!XY_T<7(^MzMV{9u-}=eMwdM8GGB|{qr@j?^cYY!aS>by6L6R;ZZZuXq+JOxsUux z#OJgy%iVr8^0nqA-DyQ6&x3ykQpBpYPQtcF4s?yx9LY21pYtun8+Z=?d*+_nx44ha+};ewp3f*|EODiGa592@mE;@@x4FS*su`?8>rp|FvvC z3-%Gtw8@umFP!;MBOIP;Z+ybwte}a&0!E6Wc_}3v}>h)kzh&Ptl!g*hT6tVYy8{t7sISuH|Dt~dF2KvbY zlehi5Ci0ea)@kGK7(urtRxfa_a@ zx30NVXUYgk?kk_~D)k8$PSq5~oJ|xr-Mge}w#EW?{`?4ia{Uy=h2}^rKLXs)P|(o! z*nIFOuxnS!?v>jjU-9h_Kk~rM;Jgn`2dMD3Fp4#nK=OHD_4R2~R-CfpT zn?75MM00?(IJ;1UT`#&|z=Eq#IX4$xs&~Z?bFae3##~rCunS&1lg|+91|z8F_%Es{ zzY@gj=@(f=7Z1GRbO!k6!E>_;W@Yaw%KHjC>W4_?6+f4xi1M2YRmv?oLcIQb$-Lq@ z+=?#2iQ}HQe^isD=(&0`sywJJ48J6uyS#={g!%gcsse8it~E%lQM{CNmK8!OoL$sHX*DVkKTK(fmzJn2Te4iE-HxnZS^E#{jS`?8$$fW@uI&~i z@=~Ec0-ZJgl4|^0s2$UQ+Yf8F#Vj9vT^@Y-K2EIY>yoxm@`CdWy*ZhezD#=!{1v z{Ewro)ga-}t>waHhTx@mO{9ped$tRxI4>;RI!aDi^^b?)l05_e)t4f^4NDf%ubdY) zFkjD4Jr~q$VTSuZWfDGSreBaVHn%mya*d|0J$u~Bg$rLF)9+`(MLyG)*O2dh$2waF z%@g0Z=_GjmSt}oVs~8e`x}fbrO-0*-#V~Au3u694@^o-9l&*3{tXaZ1*8Ay+1D#ID z&CL3W{QInR{TvKA)&al%U{xx(_n++(wZGDNG5b|;bcD#Swfy_>aNT(@j(5lLGn!V0 zE>pF{S0yKckF1K4yyyJ5QbdjAD$0T~1asRNV%n68u({C_!-~%U|3>lLO||q6(u9e< zgaxbOMP7>6N{U#SwM_Lx6)G%UK3C-5P99x%`4WV&9=03pnyzE(-8pnXj3AUBnJ(er zHIyO-UQQKyMvM@IWs}9Q(k%F*<%5^6rNi2%tb<^+FKV;;A2BCYFz~YvcFbz>3179^ zqB=0gRS0IQ53dzJuB-87aBSy;^VT$J6>}?@_Om`t`!Ea0z4!SLrqV`J5-QxP$%8{< zbg*OF0(rAv`7l$V^MAX(yEl{R{PxG`7lz=a^ycJ)+w^~>qzLEt9zx&Ey@kN+St74H zuZh&RU8&(F#BLV_-=*UvQDJ;cnRK>aJXj)ljd(%VrBbow(h@TZRPQ82xs#un^{WCTA@Zuo+X4XN?6HWa& zbqDnn2fk}To5vZ5d`Iz5WqZLnN*kx%*9N|CC-dVpv=R-})r08Y0V4mV@^2CUcCo&% zF;?P>ANPVUckU*6&$F`5!Q9Snm{FAu{79^KO-%xQ7?CNr=$;@pj=Tt`SaBN_-aGbOgtz*OGh>vD;R$oC-PGK`yoZtI8|rYry2?4+s_yIxx}NdrLxMW zK|ZK?u!+NN(^zWMMN3H4OptK!8cGpK^_zlS7j_h8woH`7WsFYAgy=#3=zUKbqroaJ zYNusyNQw}KKc6eniXT@x+jaT|i1?7kkt$C>WIzb z?-Ty?$~blnkgq@4UyO*>5i>urjuA6|fNjrGCGS_YcPoPYdEX(*vx?ahU6p#`2gmio zSC3FJLHhzL5@(D@$Q5P7go{u&%NVP2s4}kad5EhvLRY(dhKTuPM$)u1X+Wx<`0|qz zx|FG*L0XcczpWGQy)MIP=MoeVCQcZ?q#2G%3qHqF~WRYaQ~WWXs`VRzAkL4ixdBCuyASG zaB?~NwNPVXgMNQqvD!ESY*?l29s^u4D!3<<2H0YFmMb239L_i%%cj$tZG41xyJv{} z?Blbr`B)=Xsc>olHSDM>9-7vR9G#*9u2YS=y^ zm2n88i-aXxw$Vb&(YDzr5&& zPo4E}q%wtRHC??08JxdZb@kF9aZ*wzd}-JQkKz$U&MSXxvsw=`%XTZuhO*!3`WP^9 z14C$TIv~f8Gs514$r5YSl>rWD#OfzDSygyH9$ORN{Snf>9#r*67$)-L@|s9Fiam}9 z`%do?K8+nM;o$EZ&&OtBhax7oo?_iPY;+v}7&eXNL5d8>Old0yd8$OQpnin`H{RwTyLUQs4wPzvPHAm z=6LOw6^XR9!|Op7m~UG~5;W}bbBQ^Yw>-!8yWJmz2)mi3Xj3n#rHJRSGO@s{w9o$+ z{ds~RHvb=jmrBVr$LOekrKE_6r)fgeIz#bBn=T@c;ID~C%Vasv(u7G2F^wU3sld(V zIE6*1H_a<4!peTEkoGj2iVvigB3={TYQ(C_m%0nv+s_qs{xqljUF2;*`?{Iq&1B~J zIp@uuN68B<@xUN`y0=$<(a$6YPP+ew<)N-*%w!Q3fA|X;mG)%fxg2n{{0lk*b}(Cp z(TH3cx2!_AbgHL#)9WG}SRa71FP;al5t$(92cjT94>QG!&@#I-zFpar^RofBsr+}& z7hkn~tEzH550!Pl;Bv!Y_UqG8)Mco8tAUZZm=0y67bO ztW?LPXC1L(;Y~1z*1(k)9kDN~efH*}I_6w(z$)(>3=z}up{lOlQ9R?XAbz_$kGktFDX*KvIxXan>2BAcvE%Cwg%UQ>rqF~YO)z1h9m*eYMpOBpR5?KO*TJy{O1x}N}-UMJbjD&Xhj zPf&g(m2BQ!2{(Ryg8e=jY$mSQJ5kVT{PvKT_)GBe=f*f6qKOULUc`zrR^t z(b*dM_)D00AgYM+zTcWLr=U|}1z4?~1E2Cw!==~dV0e2ryYijeCWyDsUKh?Oe`J3w zya?xAgD|=8B^WvC65z)m?6UkaEZ%qtsttls7JP{zk|P!it2ay+Z+d$R-zSwp+xDNK z;K*r3w?kz>Z+wF2EvX94hziIX`WZ^Cx3eqXE3*|kV4_(0WTA?Wbl_`j@wK;DhIDmj zk^W;O^p?4cd~{P^*30yt!EI5;_lEK|i=3TB3~|@rtL%9!uQU;qC$G@4tgbVEulO2L z{C#8R+Hw=&>G3P{21D>te7v9(G5U_ZpzmWzwyJd%cNS(t9}8=oJMl1-_)<{hSm8?h z!!Y+%HZ1Va%J$nMo^(pxq5eyo_P@tX3UV?|8|99PNW1+{-Dq`vJd^|h)OgG0%q zx$VVIZ(3lR2M*|QKPq3Y-1WUe9h zX{n~*D;4q;3|S}TrPl>*Jg#bYGfw2Y!**-#gV;$Ir!0P&CO8mt+s{p16*NCg^wmf8N)w9D*v>KeS z#o7N^yqub~JzrSEPjhrddUWXK6;qjifiPt0%C;Y{=?wPRsKrqInUy{5Z(iQH^vUcKxu9m{2h6pj^ z+|(GQi@(1y~=#>Zwi2fHey*Lig9cnB23;Ce!_rir%Vl5(f=;meiE(neq)j zkT+m@xU(RwN0##kuUQ70kaMd=#2=?#^%ZQ$E5XR+#fof@JRUvyac(lgYFL zhY53zT^920jum-}DL;>STP8aXW-;4tr;Ebx!LgFr&RaR92&1UGLbSadb;2={(*(bp zJE&O{<)F(#LF};-858G~Ug|?;L6?qyRF|Ak| z*LM$RU(R&gq&o32MAX%`7WqB~e9Z}Ior#(q`&3;X4-lg>TZ;UD_{tRgmxx8(-**wG zf6$fN4kjZ1edWKq-Y#e0Ors%oTiFysWF@u_^BLl)z8 zuA9)lx`saOH&hbE%GXk~Q`5$8JO39$?{Kl3u$3V;Fa$5fS6P%I^ztg?25Qa4j|PJz z9J~}CH7k?(S5;D-$bVET-o=p86L;Y4`dU~S>ZA;Ix(jfL?bXkEDeJr3ft$w~phk3J z&wO5lfiQZ_5jx`QB*|`xuSm&fU9fHiDFwoaHKWB@K_ettTYRRL^j`V&(4d<#CyJ{s zq|>kq?zoHf_r3c-N69~DY0RBc{i`tdiJNNSfRU27mVfW~(;gcfG*NK+K-@xh`A%o8_# z1$%2>%uSJZqo3%(r6Wb&F2=|ENNr>h#XYjsx&VuAt1$oLXmWYzapBt(d%W<}6-V|9fUNU&xShqj57iBXFI(;L`dDWD znlESXph4+I`A^n^SLPK#BbS-sp*yT&omaddITfEVLs`#{EE_PF?J{CcuMz$(pD7;H zj8ySb{24b;f;h#ho|eVviGEM}N>1BvYRxdf`rp$wfAVG-Bc7v#nqlJIfAe;wh?OklKJm(8T9fP|{>eH9%jan!`SwkcEz4)o zvUT_1PSpwX1*FhAM~<;|P{CsUhpg!Z5##H?cZ3_xY3K(JR1GjE!41=X_hWZ==SzLM z>i9fz%ENO*Xm0ru^1!>aYY7~*2rYSpS;^U2aF z|HyeMo==JxyV9MGx;T^cYZxueF0Y3HEN1&*ZYY!vVx7}(y5Y~vP~f>)Twii4YI}D! z`DNKv;H7vzDWY>;JJBjCl)UyIM-z@@z{wf*_-#@`EP`5<2-PTv%+y+8yR9=`3Y(@Kp=;&7?PZI zHz3^H1{d~Q3?u(sgC%Qi@J8T5n6vX5G+eaCK(ECN(IRG?xVuFdZC|7kPM<#oOM+d{ zYQ}Z=ar`t~DR)BMQ8(b~4i+mD=z>*;3m9UxQ)PCqA9IQ5*-h|$RSEJZuGlyx5U#U) z+WC83@%Cc@=GVP}UB_I}?WVvGQ~PVvI-$s^=C6+`XC#8mDddJN3h-b6dT;#uAU(@;xcJa(Kr$x z-&?r#s1VvrH^nRE=RtL}5QZEv#lox%XyEmKOpq#q&uK znNc5U+lYZ=TZdGkdU-v3sPw~b>6S35u@>SJ{c!UdOW?WLTGG3vsJAVIRJ$A#cqyJw zis;Z#KvymuLl!O!5;U;^da<+9x9MikSX&E6Z}_1i!VGwBwu-8Mrb(NlNsoY80x!k$ zNfAjss_AXp;lw--gxiVru(zi_PBS-x_MdBE)H^?X-_QKbU`9PS1^J^}qZZ?EfBA~Onmn3x zI#H?OrTB5Bh~Z((0$DJOd>PRN%6y9V_E>uS1_?2R6qRi%CZ)Wqi9+kRo;#w zVcL-rt@v@Ji1m3o;@+bEq<^MI_BsdloWuO^^`}N9&$nu7Jy>h|qmh48XQ0of->6#p z2(tLXQaLZhk1IuVGiWE~_l+cfy)Efkb{)r~SuYdCFD1|Sp<@Fy`1oVRtzT?qkXLJq zqfYlHcYm!?@lyP_QpC+HJu$I=calG@7wyP6p6L5wO81XSp0AgC0}L$n!xeX$az?`w z48(NzaB_3iD2Z15xKc#$K`XH+r!$%KU>mKcwQwQU7yZtbDS5s{@%6AH)DImpo3c`V zhqV@0|BfJ&o=lTy#g8jROdp;@t3zFdxY6SYe}dpo7PH6Rfij1`&@aK6aqQV>Du(y$ zOa>l0E76J{_iao)ESl(xvWg~qduGKiRsP4>0sj<;b4t9sJjp(zfa|D8E>pZ_fK_eFy$L2(;W#=4-aOee>j${oF2#U9*FoXTZlJ9IUy7S^* z;b84Jl0GSMjF8$N63%Q$9tMe#|P0~t5O zQ2ubkQMme#8Q$Nr2Qmzg!|_?>crkr19M?DwzDee2IAJ$KyfnB&(hVa~SNEm8jEY?`b#otA4=%`f3`_{7+ zw;sA;jjcM4T0Bb8oMnQpWEIpGzY1k%9Jrhy5Ac~!vT|Aq3lHajNtz{!*Y?5&*E~48 z%o6+O>;+5rJTN_JiMQr8X=Qoux?IR#Ktd+^2M1Y+P;kr=9q;UgpX~RP!IdP2N{pStHp#{3Kt z!-iJC4SNe5JLxQZ-&zSzD=cvKpA0yDuM#q!nWLI%lRYu=*Hx-0Y$dMzBZ%uZet;jD z?2KbSTS%_|2nFuU`!?wxxirtKVP02p@;w_e=IJI?`{G&%UFVMH!ormeUbWy8=8i{p z4N+cORtGx99=I-XFngnBWE>S%w{1a!I4dj3R3f0U;lfKa&j=uc{r=Pmx zyMJuhbvz4o5O-KB$oHlC^f}Y&dNk9dO=l&q;oSlC5ZdUD3eNzh)ngMEF}5Oz{Hd{_ zyi~^#_0R)6aLCvQr4-S{p_C@?izQ2yo#bg#>cOF{2S$E%R7O?T!lw*(e0tgOKZus6 zoWxzXI+HD`(E=~UYbfP-aLzcpq}y;Ji~TDYGJWljc%buSBc)40E#w{aK&=ELCC|-b zqv&axw!xj$#5fXOiszFeT8RsTeTPJnXEtVJOk_QHPw~XaVs+&l)?azbR8P!lr=jGz z*{Nt)vut&XaMIbLJ>jKzJ}F|q+YxyW)o_v;^h0R#`7b22_QE+E-YIx=fOZ44eD8^- zcJJ6T58XI0c*LM_B;np;ftTVnlp;{VV4aKMeN+;P;bBg)C>fZe;f*}RI?s+SMBHJ_w*=&0IW z%_{uQ_QLeBs}%k9>tNPoFZ9NP3YUO-Q1tS`fL4o`R_)$f6N}IJLTW#E;!^91{ob0P z&h12~Hgmuq?m~O`7HQlHhlhKk85limEB?~{4>@b>#sDOio991x3tyTBz}Og$e-2t z^I5+2dC2}~g=&YIYLZ_YKU`dN=(noS`m1m(@(RQZ{ta&@{Zc4QuRz_0Kd|lRFNLvt zK74fh4W$d4vVMmboRbfIKc93snkDbOA_wvpS>eo6YoVE89?Y6zg++(gLb`q);A$&; z5Ze^DR58q0431Wi=Z%|$DK0V`knDsn-HO34x&f-LIpU7C#c^b8p@KU^1Qbfz8f9aWqVdRjJr~H(y4AZYV zVcRWF;Z<$}yo_SAhW+NbnO`lTop{ZvI~ns@UErm7J}F}M{u&C`N0FPu9p$giH-K9V zx%C%6nIoSX^ z`Z=Lp;{)LNimYTfGQ$bm$R09|xf5z=-ndcZ{fkv9UWy-AiZGwMgl_3RjVyHNMq6BL z0EMX&x@Fu0p0BNq4Da_~bK&eg#xcF2h?WXNiSwr|l$YYil_Iu0pGoVpCXfYvcG9to zFOa^add2ul!JgHG&t$_+oKgx!zX$suGB^zFy%m&Ln zN~}Fg8Dfb>iZDlO4gGO#g813X9bcHY!u$!PL>}VKd>$>aY`Ugmdx0B{WznC_x1VOa z*I{d7Nl}=qFj(V0^{cxANgW-~#`FyApKt{RyE)?PL#IJ``6}eybU+Q?rk%`D*9O(k zUTwwnfF5M!xYqb(x(xMaN+S&U$U~OF)BBLz$1IVok7+MxPiTPyKf7Y8eKZ`hQ^#4% z0u{D%7+mmH$M>&XakWD<;~2SUG1Xd~K<+90v*MPOLysG-n3UiR_g9p|v;tSW|Je_I zw5f!Rb*`Ab#G4`VrhE~$oQ@!RCs}Rh@2;pZ(h5Isu~2pkc12@FeV?$(v@UY3!|R7&@QDB7SQQ`*pIRca8(TU8n_%22;rR<$%*1o6fc5 z#Zx+@j}HmfF%)l|%7BhZR;YLMtCC+IrEB8e6G!Ad&6CI{ongVty5@pnhZT-}y%N?e z&Vi^sR_N`t8Zukwfg0;ElVZD?acu1Ij&2KcC)YL`iW;?fpxeg|e?2KvW+z_(ooYK= zKD1mJu>K0fzO%)+`e*Dq{AX;U;hq!8eW&TP&(sIdbCnrR-j>1ojj~E(*UfOmrVNPs z`w)ufv0Y!+rgN0Z7H^VY*NLpypj2(`=z)5>oUrh)Axt73*x`T^_SZFm-!e~J^q6It zt~X?eeQsANEgMXhKR6-0QojYJ-5t^2cMSBE--M8K2RytZ4#bVOVYa^`9y!wVJvZv% zO;4FjC#P;Lqt?TUz`v1IuTFD@;cxH4P&-$&*x(F7@9sk20~d5sw`U0bu3~n`&Lk2w zB0@EUA=aN@wYF2N;GgIsIDgp%-J01$moxVuKEnm=mRT``=FhLRd#91a|I4RrzCRz| zw{Lo8E8LXkiDNTM8RBhk3(<~QgwH#Tpz^T$@Trp(wqCncx#RXj@M4k7Z>DZj?s@zW z7JswCyqW9R-96<$RXnn3hj8erHZ9qn3FE>AoN+1}YRxahCq07wj%0&lVWb|X`25HP*N=Awr_GO`P{$S1lbqq!@W=2`pPk))cVHaO7nceN@1~Oj zuWYD#+9McI?1Dpo*+~%mNUZwBWPAFLaxi)AUQ2%*WmQi0IHKC(pUTOBx1rN5N6ftP zQ+Y^!8>*ZfG4;s@rqyf{W1&;Q9P&NGfv#Iw1;uQAot*GfY2Hu)f8(7na@kL1P)Zf( zE?{fo_(q0sP4BMy<}{BO%^~z#%NKBfJ=;&z5A+_s00XA`-jG1pz%r3;l)2y&l^?r~ zctr+n^Dv4SKD;el)22}BZ;f-t&x8486lz{sVR~*7*u>|+08eYQy`RJoJ4?0cW7|>W zQCg)iuFWe@>~+Sw`-Vb9?n}s@;fy=B4uw^QuV9RUGd^lLiXn{XEEqyUA8W`Z*4lc3mXkm>PmMX0o$E&Q>?AE)UJjt7`Bo zd(`h`$v7fYb5!@|C6XEX+QP^U`OxLC6^8a%3SnFGp&j%56s}ngKOL{atPNH;FnKvc zWY7I4cxiSLX?Dw5rJ?*oJ z=QRW=+hdrMQsR%`xmmoZ#Sz-scnn#4VWY%j z!uvd=2zn}yx@V6i&m%$N|KL3sJhx0Xc=B2Lcz-jlAoWeW zY@R{)T%1hizxx%;OYvylBf!od+GlCM_mhctZD}xX$LFQqftns_>M}IXvL2!Md-FO6TdUdwlZ;u+^Mkv=I!yv zsxdO)E%Z`E@pm)vpb$Zb_XIgF#cL=;Th9`?`as2K33cpPy5H`XV)2hoA_Ui0+OFJwO?l3z;d?%5*PU%C?^rg^g z*KN?bxf$mVUxRf}?=aeoL}U%Cst zJ(w?x9M(~H+hHLX&aD%luEV^|EZftbHXSq$*sBOEW#c-n~^yr@V0`K$S zeIcXsO2NCY2byl`#PUDXjo-;P>dq&vn%$DyHdaHujxDZ>30JQv>d9Wpem_QE}Ni59lt9Fyi*) zy~L)^TjiyQw%bBft1?+&@vwaC?HMHO;aY*WtMgJ5);EH82WI7tyv|m* z;~{6|Z_mvq-zOEx@1!o6}IDIAd4!lj5)a}UcWZJtlG)k@{O#hmApA{JYR$k(&; z`GVa0*;n!!;An^!9=)LUiv$lKrQH z-1u?>I5V$B`RHn*=T#3EeCp}>%2hG_%4b_Dw6?vd)vKXW4PuY{z(UxK$xs zYp0IcGY%>9dt6-ycx!Ce zVKI0n=fi1zR{Pv)G3eQ_zdyA?Wv``-V?yOty6bTWDf^`>@|J&}C<^EO95A7(;Xhu0 zWm#6_pHHDApOm@TV~8$*Y$2-l?T>;z@&qxqF)0hby*DFNNm4o1^VNE_h~N z(|ItWgR!_iy$jiNCsDBbB*RD>XS~Av2E0|CKUuPzhGH8rW?N_Svt^pZ)4-oOrHGZY zTZ{9S^d-Y8&&vH->*)}|8T*wzm)P-nZWdp%!%Q@E4kJaUwIrSfUMneL(Rxks{p%>Q z&Qa<&;4S~(-pa5OIOD~wP5TnruhwEopMFGr%lu$oiq}wzF#l6Umroo`M(s)s=B@I) z7oc6W43Bv@V>9MYU_O> zdnYugf513ik0_%No+HT29U+vL;>VRDtY#dd=4!E|tL{$9TjhDaDQ{%BcZ(B#I@jbk zP_J4^bqeB1%f729FU5~5MJ%w{M@RG>PQIU_5)NL9x9_tmX_^7FWIXfyw5*}LwV#)& z3|GU9Esprgpvemmdc=jw4h$xWAHV6!1*hXZzGd4fE;YlIp;f9rsTtbQ@`O*Hya zdGBcQv{j>ogCAFl_Sl!c> z7L4jcDou1mUMpUTN3$Bgvm@lGy7lz6$1w5Mb}jVY#NylSN`#dTTG&qg-+o@Y#aj5s z<=@}zG|^_bIHq_J{i*qc^0~--g?VXJ`OCgeVz2q;q-uFJ{kG#ITzJN8WJB9Z`nWGB zJPu2TTH~_6P5a&Bw|3JDYy9b;ib;fzXgb9D8CviD4K**FB{>u_*=@HmLgM{dWMsU) z#I{u1mQ^zj^u(0?2ZeTq&Cr%r7i)gxCEJVssnQm0LkAGWs*>!BmD!N-&;c#u17O@_ z3aR}av3z3y9GpqPuZJVv(r>bhs_%SB6Iu=?`=70+ygy>l5DJ~59dYsL|N17*KK7yN zC9}!&T1#Q_tQ>eFT44*b#gcVbY8@QfP#&!LWd`$~Zxr~|nP0V~2)UP|80X?g`rKY4 zEGRty-)&6Lg2gQ@Qac2%YfW%x`7W5KdjOidn&6IwyV!M1t-7u9UF1RfrUZzq{R-Gx zXpO;9XGLZj322^BCew+X-~E^Bm&U;zp41&?4})aK)2t-N9jG5tOl5fZVm- zaPH$>SR29o6z1*>k(uo!j?!rq?sV56JjWQ1LU>tbg#8|{KHnT4`{JArqSN-xB?ofP z%PTT8@$Nb|bo$*BY`iovCfW@nyY`3H23mN1A?pBewLjzNa@KC3)^7-p#6aBcULU~>lRHwP%i+;VJYqKio)!PNPiTz+?_csuh z?1G&JHAVJUt(L34^i3jmj-yq)Ro*7-IsDde#qZ&PFmm@xxNGlv*&Nq>e+@3*uP}~-9SHGCxFqPb*Avb9=7W1%Z|uOTR3;|m zLH>PjoT+vm`0kbLJ*WSuc5j+Ya_r6sRV!p@$7ad(uhI;T;MFqh=IVxq;Z2^=Ed#t& zV}48{hwtnb_&g6ei*0Bycf;&H(I7=EE!(AfWILZ|&1@#%G8vkkW7Qki_LAg$@Z2(4 zbmk#d=KDlqyGKLd^E`MyDdKP7HzDuZOnE#VA+Ba|&U0HEV4LCVB>jV=SzFNjw{X&Z zmAqrba7p)UzB-5$QM$7uap~+w7Pl*vCy#T$e%m`>o?*Ij@+Es*)zuxRq^2uxCpuv3 zAsuk(mQ1#myuNf&Sdc!DM0a>h-@LHE&jze}z;F%4t?%Yo@YWS^{W6ly>VEjdy5W64 zE%pTadArdM;c;YLc9y{Vo%j`1x+WG*e?>#hhmt9*Zy3K)2i(ktBDPC*)6xZg)n>M( zz8B~g-#GH&IZ$5ey_pEAOt!W={ufc;l}XzlokYIdR%L06C2(!14Mv%DR`ybrz^36W zd!!;v=@PYuuSh+1$4{A z;bdm@20Gz$B`or_#<$iYOuk$No32{p2v*TEc3Cwj(yTGVMPxHEYfB6@h#60+f1VNe zGY9Vrk)A*LB-4pBGFn&xW&pj#xa<<3C@{XBsDIrCWEhYG0keuQL48?OI-y3!VLKaKnzK^(u2>HtkS1k<@2x4ert6EEo=Ik1O`=g|HcC zAiV{P3S-~E>o?BA#kuW~wmHBM{a;+558W+ER39I4txi5Pdt`|pwXQ11o8`m6f!6qW zeUZ{}?G+e-Rv6WIg+0N@?0l+|Ie@5^TobhW%5VtFY#e4_2fROm_twZ{Gle~L(8iIZ z=hX8O9}Dj#ks@yEr_&V6Sn^h}PMFw3hHDlxOZ;<7;5`^TH;Xl}DWL1jhLTZd_DXy# zyjD^~zRhu(@^m73+rd_7JSoE%)-_<;Rx?Qk2hYtolF!lJZ6=Ue2RloAEWB1yMA4sP z)NbBH5@_!x@v-oJ6`q?_;D>zb7r=J4a=+J7 z74L)K(T|iee5=z5$CWmDOr}>~r!5}F5k1@^=cV{@rHH{^&BV7=ERtj2G>ONA=d&U* zjB3*f+bnO&wAi;uM|A(vpJ=Y%8q7=a<4O_r3QckHlL6#ZL37G`MtG0Oq0Ta#_s$>n z?0>V_{$adKEWI-cOD}THVKe1DF+5+9j|}6B{qS_VV#aZCMr(0xGbEbg_e-?m$CV=>+BmNZ6OFSlO>VdTOGCgO~cwu6#rfA6&QpG~;mi*+(o}-dnH;(j>gs>WJ($m?_p%}hJ zAoJ3W(`myRU}}Xo-Y?&){KVevW79g~u^Bs+TN)eTPN_Gpo3oiAD)$vlj$99AsU|QL-tOdM0tM%?>$+(U4~ZGo_MLtaK=%-PE#}+ z*@yg!8Yn^VQeI5MM?*aE#IHz(h%S|h&BcD?h0`?3`y+V1hkop9Q0IY{HaFd?5Aix; z%*6w(K-$HpADKE#Q{rRcwUQ#1Khu&M{hdM@ zejXRbte4@nVox0Z?5%?LfAHL_hEURrY&)1hVkZ;`ycDmM6wxEDm3($)0{QhJN#Ok) zJeucbeRz9(l|L_;Pp0qcsd}?YhNZS%s5Dq8@kdC#8B>x21)EiKiT{#3mA#`3znXes zSy5*N? zdfL=RE1I+xnu~^)eu1O59cBmTLFY$5;PnVQbbFc)=_`Ii?It^{zMIc>85irn2tyZ* zAnNDShjuufd+Ll`PxI8aGXEsv_vo`ZIl4HI%5HxeNT6!}vosjIMM*-ygpJIe+Z=ekA+X zuq0Asl`Q9N7Q8K^HH+Uhy6%L%uRAb~L%Mr|TYgI-)iXnacsm>)6(;qVq=rux-un#} zr$2m8yRJG0M{=uSoBtfxH~tvhI#>noedoje4M*VEnkrB~)pTMJ@72*}#lU+P4rHj|smab5GxHTgEU32=8#)D%TXeF-W5WA9qzGE_mp<1SMry3i z%8O5^q49BNOk@5J-qXNyv+RDYdU|8vP_l4rro>~yYb8Y#{P;xk%}0?)vjxGtcY){V z$gXejF=wo0ITS1(=XNc%sv1Tf>{*w^OYs^?5k*_B(EaZwknEciRJ?bA=gU5(hE@xm zu|B-X|6v==D&i%KARGGrRPj>$xKhOV2WM%8LmcTpvlr#P3p}6QaW!1s$r*L(n*1LP zu{pG8@E9`nDFxn&DQKl~k2{ zooQu!X$>88uOF?`m_m4~{B`#t=r`pT^jiC03w__X5}H0bTaYL8A#1zd06d_Dd17}( zT*5UN{-PyzjMGtcH@pT(Z8b4(V1Ks1O57h$EB{U9Dg-e$quGNiGbdLCcs<-S8m z^M;b$Ba@C6%{pNG%g>?e)Zoaec@+ERp++WD)AeyWqLz z6>uSt<$3k$ia)NG!z=GBh-udqlm7g_i1@p`RWV%_3(D0 zI)tZ?jeso+k2PR zeB*oPypE_!AKs-yauo2e?H*P0t@r4QkM(qX;vRlyIWn_{6i<`nBc|OYtY8NgXhCkq zQ`+m{wE(Pm^WTqO9i^!|r^@-RiITga798Meqsfbl0f#{gCdg0dj-K29gBa3!=-E$) zrb)Djk)=KV(a{~19`{cI#*E($61MpVJ7}0eYiD=3z*M# zb#4qTZ?}gN^X^k!zB8kZwg(9 zMeZF`$KSrB9lUJ$b6Y3XyPmJ9ewZzvN~%$WO#|<L z5_Q*{G?G#Br~p^N-d8I3z(1LxFy8X!H=GAIED+GL8;ya*iH~wuOL~i5y}3*Fye$TS-#+?96qJN2zs~4Giwy zn;vO(l#ZyghSweY(SK8p)8_o?zVF+99C5WShb@{tkvy;Tk;Z;4rdQfn!V^%JGV54W{uonmi-`FThJU{c)Nku%f9sM z(q^!wn;RG^|CiP5rFO6sy23Y_-7bGOu;c&~$USwp+lI z&qk2WAFm6_HrA#^g!YMfj0}n;=BJiOTUu(tzIT{MaOS#(cn)KCi&!4E8TTTrYa<4F8DDleP;IWw7Dzqnb6Phk!baYpY7+qNo( ztZ3ZCA1lomy?|%?B-jt!4jS?I!*@gh>s=X3QXP#24xFKgsJc+jLbt^b=xbSkIq)g0 zK=Up-!|m+YgG5r(y{8iE#`x55g%%ti=m%fVY4fa7-4C$rar}-fXpKKsfiYS{Q89s&Miin^O-^O_>llIY*-P)3N7Xn5xKfeW9JgW`Qyy36kd7f1R zn^toDhR$StH<@8g7xNAN&1Vku^M*u2jqkkjAHFXAzLMOSS|D)XxFX_WW-Iyq&F&;& z+gygVV$A1VuKQ8 zdN+{|4pfn;pN})F6=S|EZ7pDnykPs&e>lgI!;R%bCO{l|9~H8~aYaPsp$2m8Cy8XO zy(;tqV7|&IEm&>i1xF4ny#~k|aCc5jgNE+Iv_I6M0r%;mu^z-GQXYb*X^Br?AS+rc8CIGxTKgxjZk^55bN{X!@p8Vd z{32`sNi3NyaNxKiB7GQRjZRGd=M;=0KS z|D=|&B=}FElv$^M3p2T!@lsEPm1Ys)eJWQyY1|m1B|jI`bF6=hh?v!j{UetpkS8Ou z1q9|3b?T=NW+-Q_O(9-WCJD+mKBfJy0{l&R_rRkPexDd!m90!1oJIyzY*S_q(t_#E zp73Dgt^llNi->yT8OlK&(nwbK>q5T)R?#6g!JmLH^zW}UFi(2@kt>2aQMrq{DKDhvE;TVAwK#L3}na^ZLU! zJBN_2HVdRzrRV6?-F9%iDw<+G{LH{>KNcCvkKYaDRTkb|GooM8k;ARQy_|Q5A)Pwx z-&ZuD!W#DdPd#_eN|chK<4MMi1q@HTz>_ed_{1X@L%!1_&5(cEuWst6JbLjI(^?lN z4|0A&J^emYua(P{dc2G7c)uFDEc2c;E&maX9r^z@Q1g4y75$XG%TBS6YvW{mDr^2D z8W{fnPKgMs@YZrW2qxNE^OT+LYeQS!eHP*Vh+<85a*8&bH{kPZlQgRH;<@H>y;Coe z^-&gdYOFMih{DYVa_Ov4Qfh4I?{ZHY2J)GJfiEg3)^{;CufTR}Ee}-$lY}Sx1f3dZ zB_h0cU1NO}F=S)d!n0V@#T;$owc%quuex8O(EtXPH;`|uh7#BKhiZHZXDA}_?&q_Z z0-V_KA}B%mNN|dt5Kb2W#%%)^JoI;u|ifju88=UvxAwvjw1T=Pcf_lW4^YD+EA)$4G49`vD|#bwj=>_W!yBa9k15 zvZn`=-}NT$S6a(agLELLj{`hwbCKdx_c!Z+a)=`+n1;i0z&h zVF9Hp)U?Em-zUUbz@naN+Cae-`f>}ff1&0G^A!bB{nBtg^SprJ%KqR?1DJXGCFR4( z2%cikdwx3e-}4Krq=yN830CE?TL0_sMap6fLA!S!{u@3absT^!&~K@XZan^E6I z4$%EZ51!RSq9X@8^&=yutQUTxu(l-rejIDe)H6&|$wXfdzGdYSO&IS4s_h}PwaX={ z?dJq2GUH_cTy*`|1wM~^uKb6v$BV0pb1_4-S61Ao0*+-?a z(8(mF=Li3HR^?RhhXwf7Wl`)1%;Y^3@^W4S`8tbpOj;~UITe%0IFmU_d-k5 zLYjF+1*dj0p4B6}i|Q$RN0QB1@1_0=@6x1cFaS!133oSG&=lt#YVddwZyC<;fAR zUVdR?yFWud+cEPByVbIl|$z>v4^#by#Iq({^6@KZ+I$^GTKPi{VS-K zzbjPt2D)+i0~%rB3Q=<4f1HLb6Tc|k9Mg!>Wmf@q7cg4%Cb}A#%KJX}ld{2^r53&O zXs;9sM$=!?R`YUcP5}j%{mahHLw7l%e?-B%rAoO^>23;vjbQLrU178F z`Qf{%S4m?i0gZ;-q_MvoJC%BI8}iI1-)(Tq-2&4~z@Zg6!?C z(DYyg^=hjPb_zFW=%@L#zt`%i{G*O1DOZk5_|$V#Z8*B#6_Qu|7x7`sE9I3Qab$*j zj^Jisz9+m#AfInzX!%65b>Y+}kZi5Tk>t`cAuF7Th`8yzS6M-35SI>tf}4T;h*mB5 z>p1NOYZhv{IqpThQ*QT4A!~0(2wCB{BH|OhTyX0^5^)^6NIKia0@n3*gC3IusoTF6 zP#^9F+e>>;Q#}hLp-?Q49DhF4m^^T3I8#)KT2afnX^-V@6?e9ri@l$2ER&e1^0huG8h zo2=kOn>mzzW_0%|E7%)8kKzh^eqVCbNG>%EAq#2`3q7N_PgKNT;21Sb}tH|+t9 zv1KZvR2<;nodWO76+nN81lO{c8ob06+(RGG}>T}h8^;mDg^sy!{L=)f|* z>G<+4{>n#8JuYqRI+0Wws-)I@i>vosS3bF;7d7}`1CMy0#^9(P|JjTDD!Us~uc%@L zCnE{De1lG1^_6@7cB(Az>vVz9H`>3{R@Kb!I?b8$nSQEo$vGljg5GI;``&X3X_>iP@IP=?A|mtCA{L*QKw7@+CT+c=1z)%~as4RY z(|{`QF*pBpj$6oL+9s0Ub5w%=fwK}36=}QJsJRnK*Rt`F!Cfu*Ho*_P$F`x^kHFjt zMa0iVti{a)vS%+99214Dz@N$_SJZ{s1Vs8R-^Es)-dzkN` z$>ghEh2XK^tVBe*$$a+dcM{p%!A^-C49u~%Tnqf?`oYRPjbk!v$}u*w^JH@4^qm5H z3TG%Hdb^!vE?#kD+K@A6Rv2%`z-DojMDT1OfsL(^e^yP_iJN>tZ-ZrarVP< zmOXD8>2Wz$i5(2gcdu9rvX*j><*LSGnKbe&8`UX}+{mIrRyeMRDDAzJl@3ZGSy(63nI zv7}ZnXS=>85Pz)>LRL7gh?p?*5j$)fP8K{^%dmri`7-(IxOCqa*5B25EL$>iS<}hU zBspWMkQI(ABA!*gX6+jfB++kAFzjGpzE*`=;5~}(xICb#?6=zdfOX?rV(!Nr6tco` zMa00BPuW?mfn@W`vjPV`6+W1&J70X@5-sH%il8dCC!jB>aV=%o^S~LlVOsF6zYlbZ z(s(TUzPw?7NAxAvnwJV3IIf5&+1pxnY}SSJ+?vm@=YjbY{F7+*(;Hm3Xj~cT*T2k8 zF@%tDONFe2xB}wR3WfY~T7ObuxQ1Z|1M^AzulvHo8_Y{JuFOo+wsNaR{>0$=J|Qcd ziHLZ8?hiY&upiOS-_5Xtf%%Hqn+}pJv#>zEToJLm)f@IMvlpqTb?rPdEiqCw%YLPM+fM)YYxwmaiu(8 zIX^#dicb8VRP%L96OXdIK5M^7tbd!>->%c6y>a9j~l?`wtflqw` zu;+mzDHNWQ6;i^$S>)RHRf5NYIYh+VF=M1zty4&~+kG{ja)JF8%*{L2?foU6$W-#P zysH|Y!dZz3^MYRTpbss`!Zu^rpKmp^dq3XMeb+*`SNGMfq4oRS;CHoVVsCe&;nE%6 z72m&hA{(?;0r9yW&|{y1U_P8J?}A9W&x-7$NkP?C_1Dg4sUhDB;PuwyL5wyfe(c{t*AxJ~?Eqbeoq*I;(dIb0+X? z38%m+disqEy!zIMXI0xQKrZgLP8t+#EGV>C>lM}7m8&h~oqKzdb`yLBuL!$6ZMNuu zKL1-S`kz=LrVaYe+FbCK+~ZZvru!x(ljFdyx#1HE|nz%4#8oxdLsV%aLI zv1C*2c_AwtS47+@X~u@uM3VzO${BVrFyF>bI?$BQi=WKrrtr;j7lyJa&7;W57mtOk za9k15VU0Vp+a6AGw0|?~U|_zGO*#{YA5P=CxZ`g6Z*B>d<1N6_elLF=iur}?(9{Ve#n)NFZie2zM@A3VZIpUXw`NRU2gHw+KJ2%Ve@v|yede0dtdf1~yoPE&tRoJCG7)|Ljm zyhIy=FLpuZQA+olgSx-wm5+;TCA(DgB@P)4*bbLM+MYSUlHy=`Vb3|buP2{9|2CK=@he=t zu_H7Zp}Ce!Z?TS@?3X~A7+Le(7KL=veFrdj-h;-P7gGDf4)COVA8NPa9KF-Z5ypMh zI3`V>J!c8L9xmq0G%0I#DP78^!n~a`U#O1F{!~mm&9H*SFIV%wm1X!0R@-(IY4)L9 z8qQ~3U7lwJ&k_y-d&hM zf>kZ0`m0yz(|aaR6MCHD-FJAeDWAW)=PFxKIFPIwT`tXNe1m=qc7{RExsS8-8r@OL zXPuu4p>}O=(9Ktzz_Fc1+5R(a5o_OK0mU~S6-vX*6@mN^RWLQT92H^`k(M4 zt5!J3+Y=a7Jp$P2eu2Izm1!%RZqTpG1-jvjO#RFO2EQ)k9I7Yp)q^ae`R0kgTgFfb@6pxaDKNOI@@eWN}9 zTrKZz!6GbU$sYe>l05$$J@L&EcB>?MaXH`H$Ms~Lt&}DkU!bp#ID+?1jo$v#xO>5X zZmDF}W{{GfX+zW|S8!hz!RJ!_pEqIlQk(Cqa)q}wBRQhYcwad;MJ`w|zoU%3l(^_U zbV~Qee1?<`6&;iC?x&P4Ch;WO>bQjc2+VQlu{JFK;0mL?G@q*r4Sfs#W=tb*Cm_(F)Qr6#|LXN%26tco`MTB?e9_5y2Ddbzz zk%B9O`8rl=0r~9)HQqs-<50pI_I>U^a^lM|2`lEf-bd8i%>#!^sVNEM#*z%_>C?t= zD!~UPN$qK~EF<`5oDXCyaHrGGHU^J_K5%S|8|V0ud7pi0I+pC7+d^73;Urygn(tZf z>?yd2VgA3o##iwz1 zh&&Wvu(FbR{s_Xh`7)Pws=ZBXewxDJ=efcj z8-*gEft&g~8%+MrXe^)XSWYeH@~hg{dR3DW-hH;p2@bVT&|UoBi}_BI!*VUZd+p)w z#TGUhPrCjsk~;P>fOWjf%&2V`HEC%GFZf=e?=ca4gPI{U<@-4wH3{dhgLW!sM<+y+ zEsrgv<$q=Bbi)xgCzN=8x3PX9Eqdk% zW=bFGk#>&m=li2(UhB*`^kXkDc^3CS7UioyZ+=bP_^yun2oyJQMST(KT2 z*XX>EeogDH&aAJYqgJ>&JRo?WxZphdz|CxT0dA6+lFGV0CV#@nJg=&GkqHA^CnU7KX6teBIB(! zQ%svdOg#=Hf^z5(XuF4-s(c0@mwJUXc*;Zry(5#icn6kE1pI@uog zr2u;c7~Or1He5f(->35$H)Gc{8&-RMCP_NC$RD4=8H$L*2Op|m^E%5pDN~f#E5Ll` zS9AU0xF4+bYrr|O?~GzIc1m(O6~A9QV#7ui2sk>=j@>5iw)>U=}lI z2JxWV{4oNbGF_n!Kl1rxqobP1Mkn5mV<$#VCkyIF6kx9aqc?Iy=aYW0e2>P>&|ekH zI{i!`F*-|ytZ-Zrv2J24`}=bmSx(Iu_6jgxn`PP%u-Ff7oY%M+eOyMdvtN?P?Vc?e zK853o2!}0htY^0rGH$jH!(IXAQ!Lhoxjp>A{C{pnQ-=wx|Mx`FrY2IzN{A~U))!7^ zmb?S|)RkEbdj**9%o1(LG4g|=?;1BFu-=vZjZ7xiyL$>*;Y>ut%ALimeE2XzJ|AJ& zUBGO z>(qKAx$t%+!#Y0p4J;RGgGVsme||#aG-$v3&VKIZJ3!6z7(RvLiil6ypIPFwzGQrL zKEpab<};qB4F!9>VSi(dCR1^ukeSVoAOmM+3t8c~A|k`Dmc4u0pY$HETj0Q_u)fb{ zd4K=I^v48}J9CQ|R^_p#-*!>zQj{ zck(dl62q!IK6RYG^5uIvK+mpII7jeCBiYcU8_6BV>qfb{{QqnB7(I<=^@(tV??{g5 zxKm$#+_o?I;I~@fz;Q)HV(=HX-#C=i>Si#k<72+z^Ld47u_su+*7Qw0^JpS}IN6O9 zU)m{Th2x5dovB}#Qy;!vzWr*3b$rY>m2-UN8!GbC{W-_Jk2P$?>LH}<;}t?yIIf7O zA99H)6vN4TyS)tS_?U0r9Bl}x^nl5GHBQ5biEr7}x?rMmI3r|*%clb<|~-14HNo%K)JidX;3;9vBb*3r2bl&kQI(AB0iaFNztEXk$_gz{{{b>%pc?d zol^8vSko5~-&+N-RZ&w&z@RA-K7}(B5!+U2OI||~$fKKE1O(>8`o2POZjObd;J;C3 z**%o`{8{bQJMKZa>_U>ktR2uO3o;jN%(ny z^l1Vu+xWn{Ob^=cP!l*5>I16In!E6`E1$7mo`&-Ms7~acb}b>w_9IPR+?RGrZUM^_ zA8F0{KJ;_Lcds?oid1Bdg;<0kQWhx2yV9$0BxO2)FWukPtVzX)ae% zGkhTYXM4`kz49Xqv+^d_{CHA`yBK z5WDwbxWzMk1j!$7- zoZl^ddddu%4I`g^EM-{D#-}QN=)jpde4}TeMsHubJcpg1Jd#*;-p#N!jnSR?>*(de zJ4yaG7e_vOmpOP2Adgcn2^=`Ch!~x&VlG3Y$$q(rVQpIA`>6ww5zdggN28vnIqzpT z974z!gDN2_9QTfZxRO4TSvy3MCm$a&tW9ISzaw-ZpR0I5!!_!8+FBKRGB27;cz!|1 z3da=@U+t!`*|tMT_K!M&1E0d0wL;O{u2z~{yIMK(^avTxR(>Ag3(b!=gU&;<0`T-^ z?%f%eFz3UUqy^r*^A~B;Sb@eB_`HUt$U@$-ZCJtWtX@K8Kd$D#{^ugC_-zPZE^8|L z9p?2sn`#(Ftk3hQp=cW^e!3T*=sRsaB>|gAMr4^wcz!pY>piHC9ek^B1@Dpo{@1;_ z>l>TDF^YUy*T5g^##m_LU6d)p=9%Ni2Ak zExEw_L%EepOsx@ zd}{v5Qo4li{@nZXzlaxgL*%$)tEIuN@1?X6XK6im8d}Wm6Y%Ku89G1L6poYm0b}_z zBAd<@F#YEe{@1nHRL?#>??zS+E|-!T-k^t{I>XtF{Z&PQI*eGMxq4FMWa^3~L>}x|CEV@Jc zKX8HO`EBS(<9oF4R~NWtVa5?B2HMG~o&8A1lvUD;*2ie$V|>SQu!^Q{Jw}^!(z1RZj5wqeiW@ zY(Ur|v!P_?Ky8AxX^g;;_{O$TscA8yYj!77j&q=7@(ZCXTpIp0a?oHmoB zrrJtRcI!avm##3`Ka6617jyHvSC>Y7Ps0?F+G(YPPvNXY#2t$~<&8mc(Zj4t{2d>c>Rd*w*VTmvw<>kF}Go#?jg z2Cy&C4@iI=Rj+9PKOgx*Gd?$r_xvdN+}#gOHxp{7YYQhD2KFI*18l+_!@;BGw})+t~%=f;AINo9iWoxh&E)_ zxxrqyAc~c3Q49AS)<)hP-hpT<@3Iv~4%0Y$YtX*bl+JWHN~e9dh8xDs1+P${I8*5& z>+kd>bFYkJb=wY8yLXmwa-u%P?xN@@mfm>D?(OC?=-j(Y9VRlGddd-+5_e(ZJDvp3 z?-Mt@XJ0yuAp6@oN_c`1p2UVD@s5#3mh!N*PUPyaCxXw3UlaB``Nj~pHLP#eL~`%u zdX_;O51Sx+?_nSeWM?Y{c(aiC{EGh z9AAjZIzcP_@@VBaUpV&Z1V{KNhssl{^~lP?CM<5aXW7+ObzV*uQl+zcTpv#V{=rM~3;YmZHb$z`$Z(xT3P7SfQ=Gq65d4_(J|-&1d)Z ztVQZNGL@X4wMNPsr2{{W{h&(EiekMLN8(coVm;Zh;u!MTSk#a)hlu$6b&>kj<785K zC`nL+F$d;WC|thUsqgaHRNDj8N~~;R_4M^{9Z2L_-}$y05Asg(pn_&U`L^aR)6doo z(}58uxSDy^h+@rBM5F~es;8byC&Bvj{P8KwCn5q8dir1eo=&`!_61$Sb-?SW9~gFM zK(S_txw+ncXkfu)p4EhT23_$f%qJo`zSZ`R`kYQIJh%II7^(xKPx*oRfP$JLEfjNe zN6{?E-+&{G16KIsQ!Fsmk=R61mJ?J`&gHgJu#a8sRXBT`Q>w?dIPy1wh; zujwSB&(Z>X3iFAG9j1@foeriF6K7+FbxMqW$U9sYZS#ZTYZ@ih(j~v(-iI`@aAd9; zpTZf6h%U>E)$Mwu@cqtX8P+K=Umf2pXFiPgI#g)t!pGY`P?zjZCO?i%6tco`MMQzi zZ}r~#6msiuFNSqW%(t3zw0H6YTiwT;qkQK@^}IDR$e&MsLRL7gh;TpX#1@)OB`1?J z7*;kh-=TgwFz$sfoYB=NsSS;Os_&0UCZ;E%g{*K~5m8f-&z9>9CzgXxGpuZ4z9&IC z@NuIrY;94_If~mkGw(-JiQB6rAuAkLM7X=1WXrOK5z{JJ;J~M{ImawBU$FnKsU&}B zeS{sXjv(8&oncrD#Th1Z#LulhaQ~@Bt-Y_#VQZERC$|a<1P&ZmL>P^~!wyA;k%9Jm z8CFj*U%x&&(5$f!`FcX*2yl;DhkQI(AA~OA-vy6)&WcS5G46Cx3?+fS1 zaPfw{T{m)$zsGK~!*@bS!S!q*D;!ruSkJ6t8+!L8yUI!!)^stSh$xSIz@ASWL~{SC z8P;?$dPQ#?$PelW1`{-j@Kn23ti{hD^5o5Bfdj`C5w|z|U`B0$oOZ2XSOvy>oq}~> z!bLvIf8t!uvHs>gwyx_ya;vIH$O^|55wEJgu?9sw$p^DChE-t9w~W7zt@d89^1DWL zUOoOd8@aI?c{t>TkQI(ABJSS1%QpWT&bys9F{}b(zMnmH;Aw0J=rkvkbDS#q!~CZ7 z<(rfb2wCB{B0|UZIRp0)QuOjD!zwW56A=T_^4ZvbMiI+%F4h+ck1oLu@ z>g+t?8Jod5>>nKyIB;AMk@cXMU5y_~0#)Z2)^ssn4(F)q;t8RhT{*|CO($6Ioe^Ya zVV;l`jw>Q!(|fTatwxjP5AHCm<6^#4{{47A%L6tK)~L=Id-K@+MZL*}h`&NsIIf8B zp|+B*Jd^C`-d#|gG2e2|@vx%@1leoq+aF&HV+&#uNqKRSkQI(ABHkRalm^TRmOs0ju7>;dlC{<87tW*C&(lD>g{@6pkw*F6=dz3dSdqM*(9ctVd%$ zZ9dc8&IYIH z1>~4HgV8F@%uI7SPHOctnJ6s9ig=tA&Xy~}Kkl&A#*rk;XbG!NIZAD^%wbX94En9< zaoYAf|M#^S)O+?(n%>nMhIdNh9789XDpjS4WGC#9=3OkKLzAqaQPCp$T6LLbEwKW9 zi$(Ow{4)CQQ!6m&y?`T{6?|a*ukpE@)lL$A62epL#it^7hp#M{Z&-EJ-K56T@!iwj z(ByC%NVPAaH2n>2pyJg#H#9T*^Om%bzovVVdjA)~^B~^5iJuJ>in0|~*xQ+-$%=-f zrA=}UJydD|`~A1jrRTV+l5PPd^S05PkdxH8!UD7xY~vhOZ_lt#${^yK{Y}DN0q#o{ zeS_t`3OU1)Uwx*9NVpF5*7@T!_p>?t)X)A;P3jBh@ydhUN07GVbqrU&??Dyuhq!N0 z`_T^OjL+lW^P8F0@`unsa>ZeezqXAYpP1zay^@|#tkC0a#9S}YYb8gP^e4l6mH1;o#T=i? z;91Gno#D;@G=2Z+*{p3p-s5g~OF-aLSV`xON!Ud8_unBT^2;xVb#;8|yn`M@q&dMY z15LI1#lIt%NtYlp;eJyY|DQG`x{$Hf5kB)Rs5lZY3-8xdZZut&MK2sc-qpOL5#C(u zF?>K>8@!=AO)Ox1$X)ug_gi`*-3&&KxW_r7Bg@!~>;mb)uA#(W>^a)yZd=fu)_30gmY zRvTI>%???|wuOw4-8*@~;dBFdyKr7W%_&cqsWO1XX`=(Qw|0Q|8GN?>wo&}|WBT-2 z^5#{Klxv3Nsc~G)XW)B|?nu{z9xwd)w4OlaGv#}yG{U7MotI{ugZ*WLwkMmW>h-sN=Q3Kuw@ z>P(XZ%IPvb5vzxSF&CQfQ3;aYh-J!g@@Rk|(031%2+DrHT!H}>Ff?|)jW5B+;e(mx$1R~MJkIRnh#(Ek0ZQQ>9OX092ZWS*_^;oBAp zrhJIXLq&dk|YM6}WVlC(b`hf2_BLwo%Vj?fI_8X7)DlT=`rT^Sgi^=9BUt z=H26nRfu&7p!kGM|z{WXE9n@><&)4p-^bvmxn1V+Bd)%>ki{83lL&g2g7 z3niZ8gQxuG*I%cVyuv)c7jT4C_!`#cSS)dvG*QB*+$LP3a;ys+?h8~z#P4~8ct^0{b91k#_L$PHAc-`w$&frk zD`?waE)eAuL`~N`plwgPz(-znUwiN&?eL6$+RZfn$MW+<1uef!BSFiSOW0kAJpO<- zeC7ntdG)yHO?0uEdp5d|f7*vNkZ@e1x0ST;j0+52`Ckrm{U&n%vJi4 zCzMy1UYf?drAFlIy}o2&={H&t>kglyT~(FO>*ygfcPI$*Q5_BbP8a@ghkR$v?9b0X zPD`WiM3M;e1JYL8=HR=@1txWzNS{Aw1{?icVN=6#bZ}rZc-)Oo?oo{AuiWr^7umIG zmfG@7I~jsE(B6*?0d$k8#jSO8X?R1h(V9VDHQPup&us+9j!)$X??7YOuCs~!JGr5p zfA#>)p}dE1RbyIPlubu;(Sjjk8q%e64^mJoAeb3&#C5mh%45oj%eOl)RB@eA(_^Mv27Uf)ne`f_jKZ)iW<+hQv zFY=W>U5S^mri-=S-vjb#IM;gjJ8JY@RpKVLZ&e~`aIIX~xk{$Si=5zQBP)t0{#)}+ z5)ma%(9T3tRqUYqTsqP&n5>N{VNRAVVBLbxnrzWr<<`*^dNt+Wk4g3_JW-NQ%|7;p zT@SY*anTmC17}~|&=n8ou#zsS=kA%Mte!i(i$44~J0SlO9q#S|ix1h*Fj7wIX1Tzjc~-iGr0XWr5G(Dlsapa%|0fR*WaeF{MU^jBeWgp^jbxR zWi^I&JKI6daqECvp++#5YvFbw2l;Q*ly6Pti1#__%Gm?uE-ee`gJ?5o>vmkFzod}n zwKjuKZpTy)JE>`&tr=YEsL_@@o1AC)3A~>A;Y5aO+9PM*r33q!L1TU$G|jk61GUY- zXtm}Y+}O#Sq!;{_?6+IWx2o;nC;uh;+R{ulDwb~p&vAxMeGF8FwYIQfmqnYGc zy1bz*ZyQ3Iotvk`+pCKC{?(qL#&8T z7^@?%)(;~yo)}2ZH{Q~-2DWgp^b-BRpCI}Uwt>^dmuOSoGx}hZ4J>V=xm$WxIfgYU zcOc#~x(IGK&ICK-++(@cLe7rb#cG^X^2ud+bYEBt=&?VEbhw&J|83e5dekNmpXxk% zeojkh>~TQi&*#4;Dtn(9P4?+kN%z{-Qk^57uwiUTfYv`>sWn$T5~@lA8s7R!EuB0e zBj6psllk3kCkq`smK4s~COvDX3%z-LySk?x#eRh7e}r!y%)YmnMjloKN!8A}@N$G7 z9C&I@u^)jWao@Rk7t=lzO#=323XTcp5D||%+pt}3Q^<~PO9cM|b6{@nTK?Fpj!Bl}1p7IzwKCYuZIb?V+4Ay}73UI%T8(Gdo=< zB8ate()%*PK6y4%+0ISgBmH9K1e5zJr)Sg56((NocPnne)8iOOCxlZavU0@kptF6{5?2O+tyRoF4X z+zQ2)(Ovyhc+G@OQ7pr!FrSE+7UZf_cb-Y)PcE#kl`b^qdz|YZJW^rD1am7CS+CNS zhJ8}W#^aqBK85*2#6Q1-Sy%I^q_B82!!8L%$G6dih^BrZ`DlEcXqV2)(vj(8+NYsv zdYIlKiq%4@l0&B;U0yrRKh2x5drRkn*@y%#*Ke>cq zUj_5cX{rn3FZjUYTbf_z#vxmoPx4@*GJ7Xvh2x5dJxx;CE#rw~UE6I8`zn}kM{`|p zn&Jaqb;meIRiGbh6~H$&RW25?!f{1}{j#;JZ?{RLWLBEMfln>x9Da^IAT`?0ITkov zWqBRL$bphYz;Q*y#QR6s$_JsO@7(JG z2R>!M|GJ$zdc)>I%?zPc!57$;ia})i)0+%CF*w5?iMkL_*%8W1HC~Y^?@U-75=kB> zoD(>3ToK_Hahh3o4kg|n${2QHFkkmQ{90+scQ3oAagHI`7uXu75E9FM9DEAL6%lb( zWo+yEU^2GJV}_j=%y*-iF1%Rm1yxy7ImcLiHM^!2LTW$U6SBf_MZ^=A%Phn=j4XI^ zf?;0;^DR!$g&&>0U`)g)&arIz4feg|5K{8#jF1(MD2At+4td*#JA6BhMgFkVMG&Mh|=u<-5iu0QN6Q}jn)k#MU!QL1IHB+ zo|EI*IjeER;kcS%CkFGimvHtWxDK0OLbk|ugVJ8Oj>G9WbWTXe2 z^U!!j`J|D5_PCkE>zS*BPvN*C;#ST8q9aK)e z`OY}1><-rCDt{{K=;SPKN$o;%Mg>Y19+mXUC3Bd)uY`6!_lSOPXbF0C#q{m<3cBoz zISdRa;)tMow(_X{-N^EeN0otE2kEdaW-!rl3;mj$O^bL>wc4C3srm=0H`kC`PSkiT zE=5gb>6dD75)I;NK;O#S>s zrCOO!_wTTVy$7mQkQ0j@Kpc_I1>3wI_sqE(yTTZDVHD(#m%ktMC(}VsjpJfI z>;iG8VV|R%YDP)e`xa{K_TW?37U)5fL^r5yr*W4aw=$CVjt(KLI!}$=9*q9*S`Yju zxS8Kh%?(P3=$aHqBtz?ZJHJReCVPfNvK3-?rvo zLk(oTc6~{G_oWPwz6tJa_%L#a}sVU&?;1>q!b4)CmZD3j0P1#fp&itY&E#X;sFzzo9-4eCpytJ@ATj zhM&VU{U3z}tC+G)Fd@%$WQ@S4u!qFE&xQ_>zJ6;d->>c^pStS-{d(#_=cnrehI@GM znFhLGvSDw4Je}_wRqDZjZp-=iWAVPxBX=# zeHp5tfdP>I#1QT;&)}c-)-HT{t8N3fuyBgJ_|HdL*6t(qirb{TPCka(=H2{p zFUhwKd~#1k186>eX#m~}!TZ(t?#vzY_y(}^D(PZ_gS7IE8FYHSk;YBWrk*{`;PJhU z6kqvxm+5+Ixm7^`zZdNz;ZyjUC?bwMIj!7LlSX1L)}4LO@HPeBYc~=-gx{n3L$vIjmES<=WQ$NYKZ2 zYOM8T&wE3sPO<^>sTV2s>-p6u;9qw8>j={R@;QM6*Cb;;-t$v=l}&aTPeyuvQ{pQp z&QQ#1b7EsTuU}6Re0!~gT`N3~PVCh4T-8QiwK<3^ulcRSlb^6}AbMVbwZGZ(9iOH7 zAG*lccfx+u7QQ#b!ps_a9J|jyyR!2?%q=aJJjzI5LlSS%P+|&`dmpC*6K>JqC8iL+ z;RFr+d7C~;HHFpPkMqCoq1O6xqlbT_9U&d$38vh49BK`pR$o({+EhgMC~aW4`*oFL zW)Y17D+sMG;vA1nb~0PbuEe(3RJPQ;K&#aD;NtK>wdKos>XYpN2in!D#w{qK@0&UR zwAM^~|25D+9(bxhv3xRKN}hU+HgD|$D|Q9a6Dil|mr`d4F$|*Vx;JRgKo@vzukmqq zH0U88)NV-zbzRIJt-410Yg~o2TAqo1dNzfD$H*TebyJ&EC4W9MHH5t_{)+IZTJoxfSsLSZOf>Ce2 z(_-lF;lhM@g`#dkl2o`njPz~$iQ$gSDZI*JO=|}jReSM2-I=wytCg?Xr;+tB=Yvt91dcYOjE=fGA=Q|IvHoR8tPK=p)<`bDVN_B!k8%!zo zrtoHSj#zh^RZop0ONRaR$F9}9WIhd(Il+b1c2sn*&b9o(%v}x0m&qMueE&%X=hHQH zHn3#zSC!?n)6~by20|uR^Y4e^$6pp)+kwo^)0KDk&ZpP8&r-5ihps$-nkG)OhtfP9 zirp-}NnnhneAK=h8DHK(!q;>BTOwZD|5#PA@PJ6N=tw{5W8DE7K+U1uh_y5@I-8nT z@ZYG=wG{tKaChmXw%j#)AgS%2F5y#{Pei;8nZq21PbPyp#!AV*4^Xzm9L5>{Lycmy zX?=(}xVQR;Vs74>p?t!^GDAq8+~X2Hh51CpFx5wv{$(VIyShkC&hDmx3(Y{+Z#k`y zchl^xW^iYACSB5#5A=U!28pK2_=vWXpjH-%Vyl?w3tjNdi!J#P|wnjJNXC13sS zDe?P^-+%GG{p76_cA12bGCl*eqDcw$iQ-E~JwK?z)|S$z8yvvZ`-AGm#!`CfjXi8q zyyWkBoLvXDH!gy#@c7K6+Viw5#t|0ns8?M`Euu|VI>PHk^{V`gBI^6a0pb&CIpX8# z;cRPcB$?9wrF8PUF8sRX3!W>SD0X|2f9t~k$JKj>MX@|@yntjepdwi$XAl7qVW-(H zMMM;{f;nKu1S&}o6?2Y=2{9`eKt+`85d(?|6JpK+M$8G++xxxuKELYo-+4U!_FKEl z&g|5utLkV(JLr2{U3qV+oXW?Vtu}m_#e2G#+E7elus6@v4ozm>ucnddbGr&W3P&X> zPHbDiq(7V@H}jHCzt@JUgS>*L)I#vU-n=JAusPehESWq$|5TCqRvQwo2Ed`XmK3ua zyc0k5(rXSg<{l=Q3V}!A*C8tO`_!n?BT|Wx#WsO1VUMM6v?2B~pKRSiUBT18zd2iM zIg3nIK0Jk2;Rr=V_rouOhulpiDHlb$g!$0(*V-_39k0{bt?r)mSO10T{HH|XZ7MOm z3hyf_98(RYL2k)p;>JeIjPJE8HUQEB4Jf8PqGH4ISHVGJ(@5dPSptv3L`hW4Xn9nT zxG|N)e;zH+CG62MTn84V1;B#m+Wd9&j%_MkxSULuXIClkDjcDx2(LV<@H#Y$Z2Nvq z@W87?@{=95H7J?$!4u=x79V-84F!An1c!v5O3ZFV#iPfsiu*iBBmLdh6>E0Xfxf!} zz`v+giAfCJi9h4~%L@8^K8@IS5a|;35EZ_wL)rV`(@2w9a|Kp}JsLdGhC?$0;Pd}# zelCB0Qyjog2ssQkV|W#gP*n6uKCIGOnM`V$y9lfZ(;iLk@zPXP&%3IeKcm8{ z@V=s=+`l_3oH(5E&#(UA(cmQa*zMGtnQx0GwX44hQQ>_>MeMl0s=5L3B<#*&hS?4F^S-MM z(aZdyqt+4bapKiL79Tr-#1GpmM1}Vi730JEuvvVfPMeT946_^T_qKx$u(AGdrHz^u zcTfOOnb0j`WX|w*UqhCCU zm^4s`3hyf_Rv);^7WeB-e7;;_nD$`5*%jIlpXmpojn{LJo5S;1#@Zp|j|=aZ#dF^O zKik6lii(-~*I3rp-o#=|nc#s}VG6`+!{HtazulYM3NL1ut6+|^i08upkIH-r`^*HgVRfb| zjPKQo^P0qnst`;wM8)FN2dc1lN#ywAGn3nH6{Oqn5h9F8Z|f(m$O%p!rw_TG;&)P2#oTdf)7+7oQBB+0FyXd)e{d3{_SmrT4}OBt7-9>PU72 zh>7rqk$DvaSG$NFe!-bizhWzrzAQ-YZrTR6yI6u|%>0le54@nVsUvn3TwIk-FV{CJ0X=)b1*VYbjExr83bc|$DuF)%~mXKpF);f+e>HW-lXSvHkB|4(*sL%(oYf0-3| z6=tHkI8de$L7iaC-7nZKVSnJGz6eeP6D4aX&ez@{h5e%UzxqLs&Q0k4F~8|@-p8xm zY-6rSP4||Y>UJRMyZiTXumbp1ZYg8=Qa7UESH&=oz<%?(>q6fW7nu0J zSrDVoo@GWIdXTjVPlc%PzM^7c%XRGc^X{ayNduu)2K$+G)8&&Sone@c`n>3`x?&a; ztR!Qv8OnGS-d9u%h#5|%Pv{_7Iz44=hM%R6y*fbERz{6d&e1{3IzY5j2~B-^mVVI= z1m`{K>A+{lG?a(jb(PZwHjoGTzoT*eYU$D&ZzOHkcl2ZH4|J|x4*6L9hSvprq`IGc zIlH@ec#Qn2b4Kuwta}okb~0qad78bApF{V`BF2Z#QCnFbmUhqMXHt9Kx05eFQIdlW zrVRfdJRb$`#Q)lp3)nR0$>i111&VET`|0t9)}Xg>1s%k%i9fQe;O(jv6kjVj1>h$* zj+VxfoVpwZUWKoZqGH+VGFI}`iWraemT@KxpX?U1Y8LOy*`f1e$PAai3Y@LM3_;`u zNB1aLb*erY*sHhDF$;Ie!qqB#9?PXo>@w9M#T_DKoTpr{?E)?0S-i)4{+qM>mf<0n zUJfK_a~es0@p^FB)DyY~R8f45nsiGCcJmpa$N9f&Xf$8@lif3LA}gD=ly4cGr5=%X zFlXOArEc9B+NhU3{HT1c3|xJV#=PO(q5jL)so`5DJ)mAg6EjcOaxU_&82 zsBaEAqoP9IH8??c>skQy4dnO1Ed?8xjqOx&>Wi&}D_n5p%O+kcR;!0Qp%P{m@eSy5h7`bvC3Dp4Vy+((l)l%r;>iT>k8{a zJJ4f0D(HlFuF$Y=2m1JDC4I}ME3LV!&N?4`WKTQ;dC#-^{S^BaT&JIoT7v71E!6S( zHJUih3T|}TOb-W^(@TL?V6%EFSNI#RRt(IWPPPOrVR#Y+?iGf6i18_WoAl)~RsrOJ zezoLNUqD0nG~;otr|}aV1vLM!H4L9VgN|HtjJD*2rf7w_hPSJmN}+#t1o3%T!!FOS zqE_$hA#D0_p*tn+TFE<@UDiKkH*Gpmq^^>14Gyl&Ir!lLy~!)ww%4j>C>(sTR5i?Z zGBK^s7b7& zdPc)GYl7iFXK1nR8TW`Rx0f4E_8`Z`s@Ut1e`tEFA85R+RBr$9m)_y?=5BAhr2N6^ zX?&b7{A_iN|6OH-O;#N?l360pU`!ml^TE+pXa5a=*K<29{(ws zb?-yIj$9`BX4ygc6;DvuInXH|>>#I?7yMXcNy87>LgG0uF!|YvD{6dw~F7FlCS&tBwmI06&0Ody=E_#_9HuTGZ}uh5wV3de~%-C7Mjo|B}H^ywIf)J zQop+c4I9We#(R-XUvz}pB}{=t@)L4xGi$CDOW^JZ*668Bop{~utbBd?mVcV6A}5&R z)QH~nJwprlC)@J2x-zV6`x-XDYznE_)rsL%-#yRJ2tQ|N*6F{B7~NUyV5c#p|AYc| zxM3;vG~n}m25D1|ffwnrfzB{58}UL z@o#t3s?CZf&XdTu{6gutj}E+j;s#3`qbPoY5c}L|do59zO&&^aCH#N0<)t65mvVzCIvXwiEeBorAHM~@*PyFut=%u<-J(B!&s}YC^rXiMO($n0a7terBS-7R%L~Nft*>5U31}N>o%d@?!GbnIz5vq}K&H5Pl;7 zew15K%sj9+C%i*U*wH?Tr1NDTfy&^hM1}r`Zp>zG0`ZB^m6G#yApLs)3{GrGG5^5c z{LDlbZ`N-wpP?{7a%$00g-kP|QC>#nz0LLATOpkv@wW3mgYWC@N+@c&qTK zP9Y}`-&Wv#u^*-QT_0BE{SJ<}ro-CkAMtyH36 z5URqQ1FJXe)d4Hsp{-ZaPyUTM8QCTH?v6B~8Q5E>E5iGViVXdIsuo{T$wmV+!2_?t zEQDukpZ6&KT9ZP$o3vu@cIiN?qyT7jyGkk048(W%`Sw-rss-H=$e4Kt$UURNJOZm@cIZGS-ihr_ zpqiM>H*rzb_edkXX3SLKRX9RX5!Llu@wh*!WQ^GX73LAxZ`^hraBdI)T0Paoq-T7g z%JgRnX<_zHhzjp3DwgdS$VR=ING>$UW|&7{zX#d;MC0XlFh4;}Ox(VFFD}(iCdoTO z8D53=6%|dkX0dK9`jVvY?-}M1*sowK?|u=|4u%D(iOIE`NYz!=boa4!;X_I7*%J)Y1*|UK zqyvMh{Gg_jnr6JeGlo4H8%q|<$`m~CzM>+Y>}A%g`;+{-`wUYH?Dr>&f6w*(plZ@W z?yx1l)c{DM*e_2rARaY`~ z;M?c6@b%3E9##0h{cQ7)f#gqQ8N-wW`-zG%dUM&-@G<0-(P4&}2Ue$Zk1IB9VbFm8 zF_yKvSor*C^0dVb!2|CrDpsYBV}+}u$ng$e7-k;W?-ciF9Pa~bC#tDTlM!+3CJZ1= zXMPi+!uyJfC9xCPiEjhR`qQrk54;Mq5DkqpI$c@!k^RZ&LJb)c47@6x|0RM`8;I~Q z<56`g>aRL+WiZJL{>w0f!0Pk-8x_*a8;UEnx#GwwC3_kYNwPaO7Ci92qM~*{FKLS1 zG?H>`Hgnyk1GU<``ee|n5KJ>fh1TT$s?w@d;_`8mz*umEqT=zPdD6>C@#NW$77`{S z*rReIzf!yMs+9OMJYQ0m6C=4SoJpp>`>DXIaD<|w`Ko!6ZSNVR^Nn1gDh2zAig6P= z%8lz_IvbYKkabA3aXRTy~3RP?qxl5r;_{8_lkQ5oS@C>9lWR+1E3KC=Qk|{OlBzzHhM$XWa)$HU{5%}YUt;cdhof{1M2Tp^QgYRe61QeCXp06cb0Mv zT0xe9JB&_=pe|#rKtbI>e{5%ZDccg9>)gQ9p(|Hp7p+z3@qEdc%zSC#rdDtz!yQ`p zqSR=b4J=J?hv}Y_#&)oQ?p5wka#q0=x4SvXjk774H%=#@T`4c{~oY#f$ zeBuy0*?ejz5)(E^g?R*4FV@$C#^*es+jKSmIC0fcPBEfnhQU@9UWNA+6&9zg<-*OO zWWG~Fh6x7tGj5~@Rm(l#k-M6h#8kGHcclXv|J{_~Rd`=fF|o0sd?&6a@$-#fn2cb* zQX@UM%-d9xk1Zm6UUMDh#_j|=2copU?yqndX?`-0S5Yk5G^J@{W z!K*$_(u4lIGxz-OYL1gV@;=kL+ll;K_mN@dfz?B~qJVetxwTzQWlTT4XVY9dkb!+Q zWxNXSD=JzxvL`Dn53_#RZRFiUf+4hdLzw8@QrYZVFpR1(fM8D-<=QPlkm+v#AK#nv zZ`35a+0vQ(15(+XvGS7}ziGvFYj|?(B%QM77yZ+h_tiRol0F(xK>E} zgj>MKW-rN=6;}Cb)HA@6?NO|{d7RM z6=dtr<*)ogm9gx&v=gykwo=H$;oKX(K5A&>bv(cVji!+AJ5LLzqw(ojoGIkpVR*fE z(t=o0I%j~8jlvnI+?><2=X57n7py+l2j5SzaRUe`R5cQ^ocPqNcv5!pT1{f~HG(*K z?_?c*vf^9bpwMA?Kp^eC?d$ch$E?Y0C8FIvYq2T1($AJ!gZ{`0I(PL)s(s!L){VYH&Ch?P zNBHy*`(5g;j&Tmw@{4jp6suDu)8x-I(82*C_?@N6ppW#ZyFH)Obeqo(`@fy|FS3Pe zm~V8g!ag#NgnH>hFFtYR&)s)aO4o&(VXm<0=sVhUf)3<7a)EHCcibcON<+5XGKS1d zx+mFM718*&R$x@JUBcJhJAaC3v6eL~^;yWTyBRZUR0f$N$dbm@>|3K!+KA8Q@Vx#{ ziF4D#Zt%WQ?oO~QS$&4SraYe&-55w*nx1ASp2_s`RY&;O^`8=7qfU)0p?z(fAR<|q9fWm z@riu)wD;E&)To6MjNYwgMIkfl8RYgO4jp0{zMkVdfOu`c7p5zJ;j=SeeM(>}*X*UM z2U**BV8AQdCFLzmd+$eJLb1Ml)f+M_C%Grdb6ZG1k&V^rYd52jZ9!m7XQW+)~ z_?I_+7x-_uH>+8v4wFffi~R-CfJqak4*cn^&upf27*85b$q`7yp2||%e6cfx)aVP; zfuB#DcAVw+Y5W&XO|THX~ymbe7{6dq9tROX#IJ zDJ0O|1Db&aXsKF+l%915d5ZY=YOhZC%gxfg$;AXmsgcn>YQElr&(7OQZ?D-$ z&u_ATn;WwKQ?dRx_b2-_cnDd!^P(ct_6u!m;t7wB+tNSZYH6qL{FnC~YvJ6Qx|c<7 z#m772$#u(10yn^!|D9>Nus$LHmiDvfpU1r*3-bDC7h*I_OS;bMtQwZP!^uBpw7%RK zz`-4^4z{LqOkKc^&t`eCLtPox-fw7d_>cq=UMg|}ocWKQr3=G(ucy^bZMdSa(Qw7g z)-y;{-6A0>9Eqr?E;LX~y_!tAPxhA{CFz0{uXgY_V?l9NUR3;e)+e}IKr$&>-%%h9 zm=%Z$N9Xy91#M@ML1Xj;Zh$>fAL;_U2!Q3|)vw$kO-B)&lS;H_T~y#zI6_e|HMmIC za8)XqQ8`qFv+|e%7|+xNylBp`0@Af=H>u6uvyIw`W(trZLHvD4V*VKybAA|EGQnH+*Le(SRyG(8O^Gv>q0?v z0OUFvP@K~j6^5aXs)3qGBFg>AfIq;7w$67vXA(V)@G;2#cYWJH%OD!d9uC@ONc zl^3_!FpCrv8?cOt{BM+3(HLH;QewJ*z4?j80bftrG@nJnqbvmef&E0qi50h1Z@m*p z+|-c*|G*yC#_Pfv-r3BlT3s;$L#`JebxR@VH+cyjI6_eo9Ntx7^(dL_b8N#J^1TLI z1wcRJ3MD2DqGEaFBh?!HRMPKkyb7f*!J{PNZGT9$#V^cS7ARn=4 znSuw7P*k++o6X{L29UOe4;khW*l%r&E^Pkc4=t2x{xRgjY~IabIGMZhvJe&CS5z$f zX3A{56UposZ5bvQ*iSJ^7lPOOgIRlZ#mJGu18j5NDE?z~qYxF|S5%lTY`{h}Ng^!S zn_+^1{eGO+g`?yBVN@42F-i0_Wha^@kRIjXLR5HPQL%2XC$smSLX4+mF-$P9-@XyL z;A`j)f2o?WbaK*UbN|MXh7XqtQQ>_>#gmu4*qYj*q}SS~3=<6O*MxiI2l|1OrDiN2 z935H1#-oV&jC(>_|4FdN`RKd|U9qt7?bp!q6>kq0Rj$?lGq#mfhMsj9la=;xWO%5sHcq zE$6VI{rVH-gs%(}46JtJuVZ_m5A<=9xW|f=NH%Hm5E7)Q7Ci92qGEsaJa+O%6sd0W zM)1I^FbmPpIJ|iTJ945Qi7WccFu}m9v_|T}fI+;I{ctrgS@)<`HDPB@vgCFX88Zm1 z4(8vFl2~t8SgIx_)4Y4I4P!d`Gs=?#)2ah6<2g1*jAn9zrvTh z_L5FYNyOuRCk0-GBNP>juS}C%JIo}HyzdIc1p7T1q6?GE_*|J$Te-)eUyCIlhj@~9 zLtDbD@V=sA!Jh=l@nbyM(bb+64c3Lk8ZTbE5Fdi;N<@X*`>|5Ngc-!UqNPwPgX?2N z#q#c!^07_lqz`S{63wfx>8+W35@MOA^5mAcRHN7(GT*jPHoW(i{<-b}A@xT5GyfR2 zn}zT1NxHWAEa5qv)9TJsEouX{EGHy(=ULj#!Ui^OU&UYfg$M&_5T81|qy2U1`MlQf zmT?|2NkNZ1v4Qvq5B{4j@IR!%R!)+}$#EpCUl41orwdz8d%?8*twRhSYr~2%FR;J0 zir{yF*CH?O$A9JLvn`kINSa?O>5gbUSlE0!t!{RoZk(?VSIV~1$ftLCHIF__bl%Q? z!!>+pD4$8_LH3RBEj-uaXW41a`{|#JoSJy2amATw+Hw}bJ%MG-Hz} zUZpyCfDY!p0krlfaYf$a21H(_N1~Q^$i0aZ0Pk$_v9E`c$WBnhPf%+7Y^#jbat8MX zF7Q<4$lu+#ZTnaln?xSvHIt^06Exz2BlKSA%;)T!pmR4l!sQ?C^!l|TYVh0WNyntr!XbKRL1+N9?VuSX8Gl zOi8fc_%`~m%gz&y{Ey>|+tf;yrx6nGA1_3O_Z1Zr0!`$0$(_jMyg3YW73`PA->bsm z9$>gpJy*usrj=~HGKg&Jw_1n_?<*?ugBr+l14GHBuPTN~4E9UrpLsF=25+HvxW}Ej zjpSChgGkpdmxQSBzM|raLp|#=Od?Cts|63d3KJUMt>=}QWPRM2MAvthH)=ego0?ic zQTv1RWdEmhR}DYSzxNQ`IrJ%gTwo4$-}87>ALq9R8K=+mA%{uVa|R;Or^xWx~4-J>_q`fddI^ctzFl zqf9FeLg9^nC2h8%gy!pXhPb3kYBaZmYF!Tnm3@W!6MR#^v^N@&_Pl{n?YQaw&kIJ%M@Y!)XEa`)|NG;woRZyG9?VwiCz4vNrcx)n8}!x)XZSsPFkQU4 zoX(e=p=`=vn)Uexz0u7XN~_gVz;&AI$}NH-h|bSU36l}bbVQCbXSyR9*I1uCbT^Xm zQb=wJSr%&dJ$?rBRGVTl@?e^-*mh&s<*EC01(E7ddNk#=d)XoWFdVN<$ zwWy?LZJnSo@9D*#yxzO3>dx|RBrA?7@DzE>KU(&^L!r_YN@uBaec6p~1zWvJBa=n@SqU>sx9+sWXr;zf9`6X$X0gpD9J{zfONFvVx(zHqxfc zuTqx;PTzWG(yV3I=y`rlf8O9MuIRYqIBR)uFo{YlkZdQOrv1EIgWb(EI_o*3@Axl` zBPD5c@{H58Mz#TMi#c3z_`@j4deCHI`)#RkE@M&MOBx%*yGv!g7tUz#GxThe>P|`u zX=d1xbv%57PAqT*`wSb}Bk?9Rsd9w`eFs{rb({9TaDp()csLGrpnaaUKKXV_fB+71~` zT5f5`e&|-x6}dK$-62ZpYg9>R+_!-+{|UYg^6&%) z5@&aa{b6}uBfPdqtd5GK$i{JT`- zIIdl9u)5S>K3UFCzR=eIZn?REmR>ov4cCXrkFKEgr<}H5qYv3f+`xIO`s~NG1vlBz zBdv*FJ69RsW$=ATyyG}%?_vh4$CCGf3x&EOTuUU9pM&@Qs?IcwCzoF?71$lFH^Cf_ zccHZiWG2rhlRAx!QvAwtdU%~PytRrF?gscS!GGy5)0Yc(bR**qERg;d7SQaL_HgQ4 zIJNi4=W07h+8s{gE*8-4r|qD?I+DNgbM=yx|1638u3o0-aLN>pn!7=K`$*ce%oGf? z+<-mkO^44mgVEnyA^S^ru9#szhgEw|C#{bg@bj8J;zc^0?ykD3o2-j@^Hv~@Chd#96x zS8dy;2YWgP012_DqT=-Y4~qGaL~54%3RDLB+3wPVxqO~R=R6DU@$sClys3iVBl58k{-1A5CGea)Qm-u z*o!5Oo4og$D6t+?XK(W5E%M3jJSC6kjqH2rJ6o|8ZS_FMFaZ8m-&W$xzo>Z9 zp;SfNZJ_m_JK9ymf#k^Hd}n^`xC zY@2e8;mkkwyW_40jU3y7%Vag1*tcehs`R;Rh>!QG{PaLHsDS4^0? zTIJ?4nw)lfBzWL`MaA@g8LHF6Mw1ZLL$=Xb55Dk9%=rDOO6(^p7VWiDEgn0Tc$}zU zIP;GccqiUr-2GSal8Ix;!v6Q!9qv)Nt1U#BL@RNIUR11i(N?`m7(;p*-)DFg_7fEg zY(kio%}}!Zbv46ze5_94@0CfF547H@<_352HB{T@jwcfiUlBZTgred}N;Df(6-5#j zePcNDkNtA_>&p!Bfv+>&xySr^1*%?v4ZPc=CJng@2e7x{14#7RIw2~&uc%O*sx5Zd+m$4Ku#j=KAN%?9@5h&^-f(-K znoTs=9L$181(Bq;&N5zw_Z1ac*E>oD3wsb73nO{BrylIw;|0d4FG4T{5EaKay(-?7 z7DHZ-c`ncl9HFR4Z8k?5XE>8U+YANH{9_O7t)cO>dY^QWpOigab5ntH_gMYRiRTk< zdck(jE&K^`ZRRMca(x2X*5sgS>q0#!&+&q`1ye&XLl6~Zbvcslkjdmpjg3GWu%DUn?G3?YVT|(QgFDnS&H!3micu;)-=X7I8N#`%N&NG$jZTo= zr$F?dre)AuaRp31255%B&; zXK7_uMpxHUX!q|l{|)!FwXxJ^Lke-3v_sMQ)@Ay>r3E~1afpuVb(QX~H-~lK4$|NY zSLiQW3vlg~%N6MX#;nX!T%QpvmJxta@Cgc9&bj=Zct+Ke5;7#!vj&`PF*W%o{_P#Tq7%WRqBAp@@BBEj$Y`g+ zsu%Bt;^7ECE-GkXMG<{5))9*CDgN^WspzOHl4UGr?f+UaD zQ^@aS>!o(Dn!~8iZZP6}Bwdo%0#@+T{7X+q(i<;Zz;#|RQhrSxl}U=Lym~Gnrf1u$ za2_9XgPCjfp-S?Cf)aK8N5e0TNZ#GvFgR&1B}+m9(zx$FK)ph4cHI$}DIizp)0==h!ZWGv+u$KaqF$xajW*r`D)*`il=3 z%0D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΂V_)K)Rikn zIGvSd4xB*OIA4`8(|6!}Kd`SoL`4+|e4p3iSXz-KE%In#Yilxk-w9^j!XC)NdAv&R z6we{p!Ej!uk0%lF%1r%U1pb#rYuW@7yf0pba|rx|n@jvhB7@xX#k}YR$P~+B-iCKV0vb`onuM=(6w~I7p&}lZ* z!W|x_5$1Z~B-@^`nF5?1K= z+m|l-(NKe@6z&Z=$L#*$Cs98AmBopLc8M#Mr5=6gie~Q!&JW-$0IuKXopgrHk%|wb z&|hkeVy*j_1@Y?$rA^qbMvs}1Al{RN8GGPR))f${(&M&bNp3n!^mMhkkj?#`Avh7kSTZUcYtO}2y4&+UJNU>Bl7F5kR&7+!pLWi`A$e~9U_7=WTIMaZ?U3`k`pc%yMVG{KWT0-!u{c*%B*ke0ZP$CU z^odu>u8QyieJPURoQL?E;Y*Ks%Hl60X&aqVrEL8X)-$suEDFb5uc^I-#M&|zU)kYE%4Ty;=eZ*K6HZnHy+4i zCswhDHZEZK@|E1^=TX+Amot3j|IVN8_MB6uP&;}?_R-)~cwbRbIjKqs4AY@U$|E#! zORAXbA$y36xF}~Vu41jX@eVY*Z_1;r`29+M2Y9#OBKNp*Z=n+FI)+Yl93i|PSAveR zJwIB4`BgpPz2TiH+>a`sPdL-L&R&{>%d1#=jvb7feO#Vrc#Ji;W(RNdj>{kQjxm>o zwy-?s5cfD%{ZJYAss-I&?j=NpBf)AucWJevoc-=X3x9fQ78g~qMV7XZZhA<@exgUZ zb)E8I&R4Q;JZSLMR`aO5dpN=5E&sjp11U$9e{5W+q<9L~fnPTs1V~5fU+G+)VuJ9)xf5!Oz)xfhPr9mRS-pG`^OgDm;kAva%a4+T% zU<@OdbI!EZlTj~YICdf!5@*!sCgMW_N$|`Obamz>(%Rn~e1~{Kuh1wqu-Y7MYCJ*b zR9DuonK{g_@q|pN8&{;fKTC|$2h+hpD+wn5IMYz=VGR9wee%uF`rO3i$y@m(g+yx6 zYbwF3a3rE)?>`5L$NK?v;r0^*lYi{@(asoNuMUBzU$)%iX4P?GF~1Lev*o-H72a1= ztd?eyrF`Dqf%}~arv2D2fqM*k9|B{J)aNEb&M2g=Pdp`WW(rZ^eMQC7ckaZqS3bS7 z*;M*$Zw%3VZl7a<8N=jXR7^iVo%CInMa?X|glqIhL#5Es81`0& zz{s!787BYOn@>5mcObo;bLfLXJh6_l88|9YVRR&b{Q8kbQ>GLt?X8W$fOpOQmT$-~ z`N!V;4&dh+X;+6_8vl2okj=n;qT+yK0NE~&r~YS4)fcUdVd~tjEy09~Dsg-iqX6BW(YCX!Q?@McD zSgPOcGsqzKalErp7{RM>grZ{gv*1dr%MVPL8>k)~kujkc6@53_OEG6B zQvE#^LZ$)d3PeSZbKOa2i#)1*qgZX<%otX5;O7bq4#=3$V{iU9D!x(WE;f<66|Io) zDjb!l=(CZRiS|yR3D=IP3k{8dc?LtU*G?HzdF;(|MF~BLbxa-|9N{D3RoG8d%r0F- zj1AIgUW%7u-PjoZd<}vItVG6C9($`)WlJi^{2__7B4ntLX~2G>;_Q<-WC=~AmXFpe zE%o@{)L7o@WzSL>Q+e#opCH@LAP(GC2=(k%r-N+c? zs{>%hl{6VMcI?gXeeRc$Azy~lbC=77yaA3%RJ7VXiQMCJmp&W0C~Nq2JmT~`ST9z_ zj2(OP`8d)0$>O;QG}koP>hH1m)W#y!e>0^pX9r;Hgp_U7{qu3EJFKAz_wuZnpC9F?fh ze%MFqQ`>>wD09$MjWC8O9{x~RY%XKQj=lMrhO|I++}22Hv&~${8{nu!#fH)j#C?$w z?Yq94CWe1MPW1DIPYEg+Gj{B)Qr){|DwW=Ir+2-=g}ecdN>og|ppjOb38k-ld26B# zjNyUIvj7ft;h3>wZ{AC9+Z58sxFxmmYc1pra8#ng*|-JSvoW7$w3w#O;h$Y^e;-&E zcOV=SdhD%IJ@EA*qtnOJzKu2uc>^4ksE9clN+xOL(WulX!g&Mi(QG8YmuSPim4%#4 z6t1x(IZ=F`@a{DdUWFqR71pH&Bnx)pB>TYK={JJ;gEG5Hr2SLU@Nua=Fc z8<%|$G7UJpAS%?8N~G@B3#i+xE@}(zF_ym{ll85`ajpP+t5jFBIkWu8??sn=7IG6f zDp5gKt&prn=g^khlZ4y^_Q2k}(&@%OVUM+<=_N&1Q}Eje;`;I2L7Y4nOJf>V&z|lzs!p(Z^kz6HNPY4nfQt_%F4iB_X!- zUGxv7*wPnv%(DlJ?{V_R7$5L6aDc)&gXLh^7oIn9fL}VP{7xo8x2a~p&E9m40@E0@I(Gdy-wNv4hx4^98=o z&&0(HCJA%KQBoEuFnyd6zmO}d@`;m7DtF@( z652A%;rW?{#dey$4)k zF^$Tgr~iZ#90|@9h)jQ%O#uCID3ETO7Di^~@%|W%__O{$&Do1B9-ugSf_)1^*6V>g zG%e@7czZVE@8F5D1xl0GgJ@%;YYOgofjeQS=hU#Qax3WKx{E7fB0DPWIBy>|b2F)P zxX$d|d0lwt+zl)=mtP)Zoz;!Ol6EB9YL2ngQw9+KVLA<{ zIm)zpHwNdub9v?R%eo|G;-@%zw&Fa&75tdc?=h-ni~Bpmsk2)Av#aQ=SKjaIOpV&< zQg`JXGi~euTmBvluUK)8!4P|x`KBiPv-Krr{n{SNYwOP&d}-KUvCkSoo4-3r@V;r2 zYuHE+M=0E{C5s+QjeRwJz8KR(MbDKZa4kkDhG2B6f*A#u3M51{2*0ug!g-#(@ zF^yMBZ_%-X-?8(uizt3iN zv4;_k8YU`^C5}+fGmWDM^WKo-=66`ytd-`gZyMy}sFgDBNE*oj=4%hVKSktn5Y~4mTSQt5yEA%Y( zlV6?2&?T44B;2Q@dHZT+w9^KzJuYULS@YTCW5daXHe>0Rn&kvja!k)%r<=e(6Fi}K zQGM^70ofDDC)1Ji!?FVeuL^fJfw?U`A>!{KCMtSr82NQOgN|{?5Ipdz*^VaQe!~;S zgw^*}f79MYb34kO9+>=C$@kdFGQT>&;Y^Pgu1Izk6c{W-7q zyUjFT`gNwYle;P_&s}ByJO}kGZJ9j6?gnEnjxfV&xxAPEOzRwAT(kN7`_W>Bfu_{A zD^1m!t8~0{l~q?dz`ted<+glQS8owXiX^Z_sgs67+yUsj$HGhB4p3*dzN~XSw{O#jG9Exnj4mg~lMh8*O{ww0i!6YplZF9$qyYAY;F;jc%}c zW%jVPT{KrLa&*vy^D|fnmkm>JBsOL@m|lnjeA_hPKT)~;wbA%L=}4a(`KZSG;@JP= z@zPAw^Jye49Wg=5nQ)Ey_}KHl;2mTfp*ZEZtD&Rjp=UUKd?-?g3STXbke}6mr7itb z=hMYG_QbNT1pu!W82@J!OK;W!bSykz*UwQb^kfV8&U@s%cCGIbA7Ru|bFui3Vm{GC z_}y-C`Cqo0G={*GcM|?R&vPts*0kZ@j?}A%85w2g2G^E(LFb-!?2?xoG`{EsmA@^R zDy$_mN%n^R)2+FOV`P{n&(Me7?cG|9I|A8s`p#-U@g4^qo3W3>elV}8A@Iqy{`)br z{ZVpnOFS*yHJM;;j5&4QYh$=_JQ&s(*OP6B-2ai!r&DRcSef8e`0h+p?CkxHtiRut z8iXAqm>Xk1=NHCM>J@yLp%Td(~?Fe}D> z-Vcr8?aUBJUQ|!EJD>VWjJNcmj~~tvqQd+BN5MXj#H3-g-K581`yUy@XI|y4gqbnS zjYY+(>Nn(A`#5@dsiDBaafG5GQ||#8N{7>NlP;)--{ZuKlT@dh%^Bv#*qc{{jebqu zRm9T3+Rtjd3P&X>R+pEMrlF(h?9SmzSAHFh+lIjFVTKHIW9-c*DIc#P2ZM&t%!gA1 z7LNTy#o9Bm(;y6$jjSX2iS=-M&_4*t|-m>XknmCEzMR`NPKmAXN+RB8~=ZdAAlERaIr?Selt=Eis@K4JBlAi-|O$vq+_v=snQd?i5Rg}f& zRQDA;@V=sA%lz%?nF$5-ZTE!&5yni{f_udE=h;Q0`bzRTx<=hzng%v(jp`H62sPgv#C{Br>UL&g+XRP)-Z^HM!lC}zPX zFh4yAy6LZyF+IiJoRM`lAFLEO68VLWMoFrr3ioJOan&^qvViVF8y>tNgP_+EK^X&OjzvzjywqJQ@?I~lhS`+{)XN1X^w_06{1#1t*c9ZG%>u#F*?^g7 zY-8K9tf8WO9ZOtN#^yD!feWeiJyMpmb<V;)Y*UkpcR{mE}^m({) zs&6j6?Pe)q{)y|UZyh?w`i!)LK~@{N$8z-|r9?lT9&xNtaA%VVr_M9W1P^fUYRpQH zpJyH3x${n&^-mLeqjr(^C5d$X=Tvgs(gf~n@%xf!UxuFzJ`Xd7@OHuQs-+)SoLg~H zxf4H%PJW?7W=5W7D+4&|D+pmr_MK!(tsAT#6T&ddhx=h z^G!Y%d3AHrs^&amX{y2$PAYMK5f2S{n|%kMIx+pkv+uNX{U zC!Zjg?_u>_(^^*Z$pK3HnsCJytq^kDDTThhypv#ZgSpT50j5ya!V`{o#qcY?UG+ej z_&AFG2~d=NZnaGJtrL`<*eBz@-o@MN*sU06@cglldxXyORGL*q&_j-PRF{7TUY+rP z(Q|sUw;!y*CDRkWdq?r7Fl*4-=>apH>+7ix9c`+f#?KG#?es|M{PHH-ZS4$!J|Ru!A+JG>J0z1In7CG+h?&#d3+Y_66s8Sd^O=yl-wbjbGU;6CXjc; z9jvB|VIkj5;HTmaEkCAnkDp7&DR%>6Y02s9q~fm$T$S7*txdMD>ZO?pI8S$nbDDZZ zztSdDE37Zw*5PgC!qk>9w~04o={vB#es0iuo);J#cVhTSpU<4Uc$6G<-7nQ{O4hiz z^Akchjo{ez^R)e1U+|f01dS5X>60gZFk^@bJan$+*Ks$|Um0CHi0&NokzgX|Vtbd( z<5l-JhK&3V9gI)Yp-(pVqXu4n#4^$oPQLH}{jT~9_xttL@q*R-d_(3GU49*#KIzQ;=bIz!IV{qp;M_t^V2&d{7!oATL!$+=3=`H^&8 zvkK+enLF&1qcfzp-zaywc!ynF;tW~Sw#$S2-eY0*&ftA_4Oghs!^yb5V`)aq!_)|Hun<>0o=LyF=>v>{_ zS^6Y7G?(`Cmx!0W3EVUEf~GfmFsyF%*aU`u@PxSIJ-8yKIFKA|okgkh0Ko(AD=Hc{ zXh|-t&7(i={F3_k{$T5i{K2?1ApB$CZ>HDTAJVV43vcHCn^mOv!$Y^{{2h#*-<&>N zZATsFHr71++!9Vi*~9$MtKnDO++gqtJ{?%^WVmlkOL+E=9aOd0zzKcqmlNc17og8O z>u3&Vdce~DoawdJm%Hq62Q%K^e#^&K;m%?1khk9++JtKJS9edmwPu%JSGv51i_jgv z&&XQl+|U+clB?LgeYaR}jV+iSt?!Qi$J1JK{#q9rJ$$ZoIk1im8*K}|RvP~I;{Pdd zR~=rL(Zon|>QyfqOF?x25_6S;}>agDc<>|MtOyV!yQ zKSzYs8XoQ8Y+KkprM~0I{0ogVftR||!FfdrUWNA+6-h%^l3kz2&`JBlN#;x&nEbHrnP0bJ^|+ciY#WD_YjmN^_-|t7h%`cglvDyIAhIpUk+w0o(4rld13i zW|w^R*!!mC>`c`!rW@OcE8cH8L7G;@QKwOpNyDor*vuogu)666*7M&JtY#B`H}7p= zDQPF!txQ{J)w2E$V8rQbB&o%4I%P#Gg4rAXdmdF`0(TOF;mvzTuDE*d6#2a@fo`+) z6!NuaDox;kRWJ-c!xHp2t#} zP#{Ew_Z1a!oto0LkS?@x{}h6G8}{4FkMubH35Krm^>lF2?_Wf1JAjT-`Up|seMQAo zZ7q7}S`0m=Ql!vkrm&pPI6L{xlwtNJDyHmiPWu`6rq-#q1fGZ^6cq`TKS)-?A@swn z3U#AxCa_Eu0ud$68D?+ToBuV~_nRm$2hnYf&ImjaMT4`XT2k|YTeI_!bH`8|VC7jj@w z9&HmeTVQ=yJ=ee#x*LbU;9_n54sQ49Os4qM!#nXTnM-dn{zw+BEcI6QtTllFcY>kW#aA+BZ+It_%6VZga`r(q2DM7d6zCw1 zN>q$b=|ko>iKC@OH+@PMa8aO*QJ>ka(GQ@e}efQ_A}-lFZ%Lc z9mnelWT%)+V%;-^l3&Y&sPMj`Ld)=A=(9f)sl}l+?LP3m!utio8QlXiW__ZfPw^!w z+=O>-(Vwlxt8j#(VoaOc($m6h`lrQc<<@Ew&@$rj>hF{>-^1Sgp5fQx(5>t9sehuY zf>&WbQIXounH0`RrSi|^%IxJPP_ripPQBhFW4?#Id2jW%H>Eosne^-jky&CtQL*8Z zEAg6}PAxr(1OkaYus5Ho8&oZ|d6rH!CzdL)OHE)y;~;Q(R4ik@C-TIUr$fS~nr6}A z-{&Z;7MZ~9gMpy;b(V~29o~tb;JI*7YUGp9!?e;#Hw7BKdV#>vttOPT92i79WCF z;Rr=VwUkOs<8o-5rkQH`(FBHe3xIncLS;W8v1j-$snrJ?T58Z)AduJtd-HSj zy$hwDZ3&$?-&6CIf8zG|_(0FB+HlPGM4m_{{gL#8vgxgJqm&ZMu|UGBaD<{_b#pC}YcYYY>$_Q~{=|OM-9Y^g>(3MDyBj|0qPHecZsY^I^)16O*%TF{G`}Rdasu5^DAtSOice8tIqhF* z+nO9YK5nRz%{``G^o9*bS5r(ju{S?QKlhRJ8?x!=sIdZj#Zifh_)fpo2cL%11zlVP z_KH0^@hYT#Zk)*u8N^TAy}r9p+B>^94gbk+;K!(Ggp>k{p#O zJcPH4Y|b1Zd-!B?oO5veThYUwuGWy#>7vg`*mgtJs_}JRJ^V!R(=%>qXEW8$bnnu*^EQ(Fm|)pli|(l^GvskJN$fE z|LmOnV1be&52ZHW&JfI4aTf=?6F*b!HAZ>(X*hkl>6qeZUc)xrQe8xzcQXYe}IzwI5s;&`k7@ZF}v1}Rr7lj-CsB?Q-OV%972-9ekKC`SzY zQ)}aW!sJEVnOUT@iyBxfbyef()R=SXDc-fL^okSodQm20);n%r9n*jB1U8@Rdlf$p zj?=7**i8nuUrV%?RInX-mau+!bojfK2Uy4DmT+^+wD4Ej2UtlXD_}uw`R_!Q60aT^ zm`_6zTMD!m6WYx#X28z7gI{0pK z^_7|9OpKN1Kk{i*@NhL=HAZa;1-!%j^1?ApR4n6X0dCmm&Ejxy=m)Lccsx~?hw+)3yMQ@ z*xVWqcs`GJBbltt@)~=9z2pVw|NXWCLHyuW@fDl7i-O&?X^h)F&ubxwqd@qy!t?flHmBqAn_I6X4ch(c;9I5BKopf7= z*)JPT%SJp=z8ICSUswpdPohHF)2n z++)EWcgW=XiXQKl+7Oq0Bk8fV7Zv!U2e{ zEV_A}!tU`tMPdC1DtO;&|611Wu?K$#t=Tel9h>#Q1JpY8^@)d!UP<|Wqv)i2XOxco ze-2)22^V|*l`Hv`2fS+ur3rs!?9ICZ>pYaQ1LJ7y`)3MXh1JDXb*ww@@}KBh-?wD~7WFxkX^&#z20g{7y0AYh6ozw#i5gXF@a5mf12NboAQ z+7!AD41yRfeYao=@G4el%DZ3$frDp#UxPkTPs#PovD7TlgE@k z-^mR70rZ|aUWf|sD=H>#{z(4yiKRtjHcQw8uM)ZFvUjJ+`^QOC=Vmu`aF!{YE)9mx z{KN<*o1$WSqYCn)(OCK|a`WNUX{L~}F&H9U3>hYycqg9CxPO|gyPrg()A|bR6?=$^ zX9;e6;LOawg}} zm6ujYn3!VrDk`o$btf$bjmQWt(EE{`sq_eEf@ zSb=xqclw>$lK7+?`un4^GU%)+L~aU((xO)~CYvHjjXF4;cv|xl3OjZyZxc*;kN#kA zpYu@0oD%QEiC0Y^IhUP5Q)f*U*emuB6$1lu$*<3`^hK*Hior-z=yEOyT28H%F{i}d zD%FLflgR$LLuqKUYXW=4QHctd%jsm%#WebOVxnTrJ%&#Yg3|w8mNB!$-n`$^|9DT? zcVnnk?>vFM;;2MLi=_1=&NPLdniEIT5i!Lc@8V5iVkM`zf9fZ6|2|nrsu&01bbNJF`O;I3@B{sU{e2A_LAQ)7#623hWj8;b?hJ@=N?2eehW7emy}s!97xQ zgJA20O)@5%*qeVp=wWg#CXPBxC>Gc&j!IOF`x!)nd2aifR)1w-tSP*18wAE@R?3)# zVsDkI!Oa=O>dh#+cG*gSz2c}ug`YX>fyyKqb5ZQAQf)3WBwdCk(Mc z>(<`C%A=Jc(i~}pQv`i> z%31Kh5sC_(mbPSiza-jro}$>sn8Lmj-muJVe>i5AqQc9^DD<0OF5O>}B(PUZPeldw z(;_pvOrQskEs!v$#2$zEtA6W=H*|KcC#h3*v?UFAk6+7|cO|?EM<^ozmUL>YiFdn+MAoriLojXzj-QyB9?#>qZg03X?)n5xRW_84)#(t_;#A z2R|NX)=%wV=a9v$@${4Iz%)B(wR9;PY;c;b$hCw1Jr?tOxP~8Rkn)5q`e$ovX?y-j z=Azg^AG3uFt3`!rm7S)?srGbSYGZ!(=QInP?GBD*-mGXF_h{%2i@SI-k=zv?*VP0X z44}`qZ<6pTObSKC(8OdVN1va^Y54pw=6i{}lWXK3OBlCu4~uzxnf-LO;xw$BU&n60 z1jYPR8vQnXoPrg2mB{+CdS)w`U1I6K%de5=It}wmjZt$&WF#F#6 zDoee{J5??n%snP|KB!pu^`)DqUniLF^-bjG^S`-4?v<`gq=Uo8Z&G>6+&5G5e z>#Sn~YiP1y4>K{TVZ*vvL+2%X7-oQ+m$;c|Oy>vCdmZj5lUi?J-P0@~wsaCp4Bo&7 zds#uFzyGkWd?wNdGb?^>dlHYT+iiV~i(VKlORQG#D#w!>+0TEipquHG|0t?@>{61y zji#3BM#N@C4GVB`fJE<3@&fl-)+m|(Jhjt*Sl<-GZOW`hqiMm;V1k(*uH_V~KZ^~{ zDf^QL(uW<(l+`Y^Y~C41FkCiYPV%f}tHYfjsb;yHT2aT|d~}3&$wl>dWI>yi>Z0Lv z#@*ElUX{W5Ugz0P;M9D@e-z6aPgl;3j--SB(WRFgUSuFiPOPEx+oTcB{$f|!?KvC>UR&k?* zk)4)sUA>Ac9%ksMCphQPf&KcE&HtEzEkB)^GjR;V98RQzXDkk?x6Ur0S$#&TF-gM; z-^pfR&imw!Rn@b;ZIzznSYJYcYWy&~e+aHY~Nn?8>- zP*!;EWxm(#K=z)^Y26-n{+S(2&n#k{3-+_F*7oqocQ#kNw{Ryz?T641ct?Dun}bKg zK#0g~!=99w!M>6}=&BdOMh!KC?rwpw#;Pq>Y~B7w>UBAR2H&})yiI<{LRLA$k?ifV z?&yas*}(-2i}%ahzCB`rja;B$>VE!7v|H7f#J$O(k3Y!db%`lR{vH6C@xrSsUPstl zp2KlA)ZDugqQ2qV7!plf;m*x7?0TgEbc}O>%e80N`CSH3k>~;;M^EvnLa!}QHd&?9 z{#GyHkQ)y68-;pw-?8Yzy>i3}wN zuG+$|Z~ox@(1leuwuR9H0-&|7E6dEVg$=*`VVhBX7jtdaEp+gLL@Ir|Mg~3)fvFSi zU{=3ba@DO6=)>nI4(Yx?j@;1-I`V&4^{Ag-cl4u~Y0!Qnt1cJh9`h=He)v*_^`EQAwbbberbgF}9O^UU~u+m$(z4k3z*X0Fkq)DaWwQt$a(a)Lo zyFxsEb?W3b zm1o%KVNPJY;}XA)cD)xXOLh*RA>$q@zw>XiXnR}8Xmx;1inzl9?$|>0%t}^lc#nn3 zw$Qmz1;38ADP>CS+Fta>=oboJ)%g5fHp$lxH2!us5epJSu zt*c<0c&4H4z3p6a_s4p&E_)PBn=pk4L=f@B!JW*Y@01{@NUkT4Z8wyV>Sc-ad826r zQ^zes%plX2GsO9ROjNY`kx%w{WzkFjev&W|#C|Rv%s~GjXBk!vP1-5pRX9RXkseq| z%Bz!TaL!1Ai6B;oZZw15_k$q2M?JH29bZNgGDcDTA7cq#g(DOdlRuv)KW44sXY!Z98E#rTKrv$^H-Su2F_w`Idi__`Nrv3!4!V!v! z?WygFai=_*G+>*+MX{f4pc$0Z@HqsT^);#OeAkh~-^b9Am;8jN@V=rVU`rgCw*c z-D9NfTN3Eyt2YE%i#%KYlTGZA@5Ap!#|J^-k$U#}DaM z|FTe7=gR+1{0@W<@tb5!1o2M%j7h;+vNdWr)mRS}C@1z173C*Sk;+X;v_ttC^>k-5 z`1m*wMlM__VVLi5aB9vUEDyDM+z&Gy~Wj2+ICq z852S5%{w&tA0ftUIK8lHl0Z3eRH7pL)k@OIGm&mGSg1HUnL+Em{51L6Su!Sq*qdh* z-KLUazcDne-4uax;;2MLx4rAgh?1dn=2W$^ieJZcJ^}3Bgh?_cg4mls-K8!eR(zUZ z*3b%pa^k2&Me49_WcmICy59eYa^8X8S;X?5nfp>@Oa!qve>Rx1f=p{2P5<1!El^Gz zm8j@)IhZ{BluA8D6)TbaI%Hk$Q8+}#bP#*n{5*0JsZX$pE z(y9KCcZYA;nL*B9e~5MJE@Os>y?I{Eyeqjz^61E^3naV>MdxJ4647J?O>{pZ)TH95M8*3veq{2^F7!>Una0xI40>+!gK_Q6WK1@( zH_udOn3G=zyHop(CIWlKQHhF>e;-H@OYLcaYX{9o{{1-d!v{Q?{|(2K6ML&vMG1eU z)j@XjMMVdJ*5ar{#Vmb)(yDO>8s%i8!88+lU~gWLGPW@}&ZoHg#2r>@_@}*Uvp49k z+ZT?RCEkgjn^-%axQ)uB2TKCOR`b_t;5KiV*@PhPcM77%6VSn7JOAHl0|grXv==7zLj zVgc>=_C(k${<)Grc*D`G7U8&lQ&hYj8rZ>b_Eu)ywVsB2>2Az`r7U%H8nPN>Uj!IO(IW2Oyr~~c5PxtRJH3Oe>USRo# z5ln}%H?O)c{4OOXcceeEYz2laM1`W|wK%%dR? z%i1rb)-jlyQd zMZnrg$C>)9nvK{6V6puqzk7XfdA4%fJ&U^0mtlEzRI+ycGp9w6 zb!BQz!a(}!w6ttI^`^YfbsA#^xsWF?L`tL^8l22v7 zd!>L!l{xy3vU+O_EeV>V*e0?(&comLNR9H6teK>I1MC#$yUtq}CuY9XH1UKTfozv^Oby31ZLq^r75&Zt&=pKXcMQ#`L$i!OijB+@tc6 zwkEu|BmF#UKQSG;kL^oyguU~JumbBntaFY7cooI6W83yJDc1ph>eXNQj~OwXU**!b zL-|RIrQg`W4gOHxZbkSd)2}S*oIl)8Ssfni`;A#I@Q3L4C;0EgKGEJ}vm{fSiFA8PM>SqGY|Slp$;A`K z9wq-#oV;zQC^PfujgB@-am;OYidSIXP=^Q}4WHa$8~%8JTouASbQ9-DHT;v9tmh$N zckGese}{Ez>6SU3ZcgYR_3C?@g}w8Dt6c*aeii&4-C>{ktFDf!Khw}|t37#dpH9SdXjoT6F`#prP8qXiwIuT(!?ABn*>3V{k}|84AqGt8Rs(T zrq*o;W|P=&QWJBSS;T4WZ&&USecFMX3(KR<-J1(h;eADg_u`QxEG3uP=g$b0c)SMl zcoowB92sVoqGHp{VFKE`gYR%b;oVBMIIY`(b{`U#rM*uR|$TCM_S1?67QQv)0>wZa@8>hbM8^np*h105qtBV1Bu1txE6m0e;No} z6#I#anb~FJJMU-tWx*6df&DOB(2gAF_S28APB8R)vahG(eC!aV~ z49dxmX0RJMo^G%|gia{0zEi?IeNRVGmI;{+74&xaVkk_PC;q{bU9W zcm>_cUbQmjV%VEkg_SOsqV^|Iw}Yny)`z1K74P>xkPICX>F&Ol6f1rmRuVr04wq%j z$gsCc)%1gpq+2tZesMS~us$4>s0bR7N&+V5&}VKvB$EN=5EsO+BmI<&sT%g?volQ^ z5!aIO^u=*)f>+_FM8({ptH?tCWIFck1cC`2R`2X%4xaq?m1&)Z-;p)?l}e&NkE1P9 zeFYC3p{V%MVHf$`ER`c4YX_KRI4V)m=j=?OLxW}xifpF^0Mj7)x?9I=g{~xZ-J1UAMX!mOdGb%ZQNDz@=hUsRz%mKk1Km-Mm zAP52qf;oZ;n8lp42!a82RsluKA_fEzG3S6e-roD&d%o)TKaZ!Lerjfy-JM@oSIxaf zDDR$B;X7HMc4;?|#+BO14L|9^m%iNNeWnugJ?yPeG!3dpzqj$F-D}nh z%o1lMDrW9!PR~ypK^uBsRK0tn3q9>!!N7jC67xOm&3F5>4XAF=KzcpLKwy?QD^cON_5@#hU7WK#{0}oH4 zZBkO@M%<%hz6+SNn5V>i4}0@2Y2)4zhjrex-^(n4S>mijMNf~JWKHu3TF_&S{Q8A1 zytj3M5w(#@%=fT2e?9JJld`3LwB?VJ0<*+fi3**`_M|dAmhP_$mk+$ug=4kOFygnL z67xOm&8Nf|%p!iV5j3-Fy1*=PR-z(E{}Q<{FNl^YyyUCTb-`x0Gh7)pSc&-__U31o zHg+SEN)zdpw08ot#94`ow+%m#o81HG68)X3r4KocTICD|w|glu-^1R#a-iicl4(7a zp7yN}m?h3iRH*l!CkZB*%=fUjLUC_FElFB8mc}J!2+R^^ zB`T!ay~MwRlI|+kQU80U3toddL)FZ7O3e4LH?Nf4vV~mk(VJ!tZY?lNoRz5PckZdj z{76@75z$?}oxiW@zIB3%WB)uc5yalSiq$ZI^nYPY^PQ9ev&316isEqtrFG*6Q^P}s z>Sf&HcDqh6?_Gr_W{B9Ee}B~6_4u4Hl-|3hD=zJIu-&ZaN z9pO<_t|w-Q*qgr|{g?0`cwsc^UWq_CaaN*Y(~s%W+X-{%;t@tFwV zc_Q{!DB6$fS5Wz74)5aOEpSnsm8gh)7)ks}qv^oM;|S)4*rOhQzwOTFl(Wj0KixGu z5htziN~Q<9T$FGW&QMhR-Woz&yUwD^8a?tjU!x0OiyXl!Th|jaL{ZTsaT@vYcqV<- zQ6+FuoS~?2IXQ~t^qfu$b}bSpC-%VJyzA-d4|08eb}23Tk#v92VYctE32X^i$KHKE z$UK<|bn;)vFlXe%Yf&q8$v`hU&It&P!fa7gq>lAg+cwaq>-J5N7oW~&Nt2Y|*x(#{ zc%*=tZCAptY?+Pjo6iQX_k<~xGXE`Vdi1N@BWeQu68}Ql$SXc)95e(yr&BER)-^U% zG6a?5DYj_J4c2*yAvny?^i?~VxR7M^i=lhFyU4hLiY~m#t{?lK+9+Hn#XGkgNh2Az zX3+0bH%JdkFR-5N%;03eHrCCulo=M7!t+tv*q|{NnZpNDKHpnY30U+soaD@nqBQ~Y zh*`-6w$j@Sa_(juTWe!44L8H)oh%nmLrRQzdqwGt!)A<=9kT{i}K~{nV{exL5f8+h!Uj^3ZcrsLz*Y5@wd0Cf#7cm4*<&NufwNlN$GzpW6h{1FlyIW|Np% zij}fD#|Ei)o%}=$_0P$_jL)$5ttgDxU%=|=<+BbI6ml~PSVp6KHo6{#@^zZ5#(c_? zn=YD48-@-MnB|ORcUYfvV^F!B68I%Q1yQ(Kel<3Ps&zNZcybc1vlVM=*FUvVA2P6~ zdzxI4zs%2KPn(%Tk`X-lIO-VUo>uKR1Wr%YO0SyPIBjQQy66Kwl&m z%IaRZ?46f2JiXt9jVRAyKY5?jKLt(Lv5z_Ilxzj>4K$q)iVXkAg@cFEzIS%Wm~5W2 zxzDb4wFJj@bN)j)J8jLATjYh%rP;o6UfMmjpsfW=yf9XY8EHpeHCr&5_erfkj%RhL z@nQL_`&1gYb%szWJC`%kTwW=AuX2|XSIzQny2cCS7~WgGcUdnPM|H`rWGBv9!SY}K zRoo06P5Z34Kt66gEB8Is8JavYgQ|}6mE}7+!>(2quy^corFna2aGzri9@kd#tU{{2 zr1Nd&P`PQUgoz*~ka(sEuhQE-SPHC4rq6fmQenP_)uLjz+c@>+)JD`NQ&0MJzmECv z{;PpjDaxhS>)2gKYZx|czH(FTCpOE^3O-L?%CmaovsT*em!NLfxj*rLp$(V4-ZQI= zQOw(^DL5CrV;`q^vmu9@Le#H!>~_at{1u$G+)&=McnpVp4~Jk zW1C*uKw)4E+Z240J@dB#@1=2E@!|YNsp3u`t>5_->AF)FUhyel=N3(1gS7M^aDzSc z&huqsee~eOCwoYa9>*1lrq9TucRqCaNgI{%maI`*dC&39TALA@`?WcQrLux@a7 zNF8O(#{FvqWAAr^g=$--TH6GEKIjImPucRT-)7DdYH?ipO`|wcA5^D>4Tjq8{Cs_D{+!Cv+dw#jsq+!Z^tU;+QZWK z_7MEI9mDhE6p9_e_UgvY5_Oot`~1u)WA&{0E?LJuN_zArdzE4e_iV-~x6Zi5bjO=P zLCF|?9a%Jl?7YBxlCx@+Zrl1`#rMw}?60Epb~J#M;hkaUH&@T&+Z#a8;Lb4V$Zh_b z|Ni()dUZCM*8jGiKkNK2o5TciVTB&lAL0gvV>Qgud}WYF^Pe;6>5>S7qw?(QvoJ1*)5R;2q2BQ0H4R%o9b$s#IC}Ses03mTeO#C(ck*R1DclP8CJcUZ3m; zrjFR7dzl`<95;w{&{TgmE^kOWA5Nk!-P%Yv3TG%PD)uZQDQ%)?U|cA{Y!dq|zoZB2 z%iTaxtD&6D-ei)s)27l1UsHvw@Vfs|yf!5k@d@;=aSJl)vL5vO=Ls8Mq7M>_GocY590aE@@5a3@p~1J&%4Q&#M9m$c@mDo8H$Qd zsVT%`Tr_=B*_mK^ig{~wksh4qb7e|XnsARa^Lf0J=L~wWwIRV#cwJEudUh6>o)AkN z6WbBYSh3&K_WJOXcS5Lk)6m-eK`G?I>|EZv}~?@VcVH;hlwe^Fuz zEGnKAM3Z_4bPXLs z%2vhGvJDmjr^Z={ih=M#at%(Pp6gs?i!+?*n|6WYevg%y0%LFft+u}z>ByheN^UTL zY~!p%#r0YJq)*GEXvMT6vhOK9*qZAG>67j&F$Konyo%MaocBBnr)Tb~1hS2@5*6R) z>k^rFl^?VIwOn1G2Uqmnc>jc(N=$*VH~-w#?jr^HOr_b%n*!O!S&53C_U@#7Wg>0Z zx1PYMu?O~6C?*YgM2ssZ(>G~HRD<&Lpxn?6dR65qF>e+5uGyS&5@#`zwy4RML-^|v zxth=5NjRd!^c1hee=TKQA$JYO(2CkTfe2#{QDNHfI@$Yr3{CBwB`4?V!3-;Y3OjSR z64O)ctxzP}-XRLBQPg)xu0VuwR-$6VsxPFq)>u0K>J+&VfA4O-=>kvYXDTs0#oh|V zu5neQVe3G8YY7#IFwRO;^iTako)4WsC!9W`y36lwbRO?pc_u@N=_&T+uZQ%PM4a-a zk^WZ&B8;;V6)DqG$l&Z)N+MEK(I@!#_D&ZFd9+N4=_&T+PpR4;$P+e>I!_B1h%nAd zRNQe1D%ig{nNDkVOLg~{9;7bf47vF{C8np?o7YAa&n2OS;k1{2hCqaIR-)q9o;#{+ zJ>HYUd%eJSu}94jJ=jC|N%nS{Y0aclK*98knY3lX48a3u_#eeS3)P$*Gim&WD1q-{ zLhHpnmcDj|54|REj~TP>sg^~}pvyY06tcqWiVF7;ZOFjlY4l6l0lD5bJ-EM!SATvQ zq{Q@8ROo11tBeb0(ccaH1R{)?uBa%Pe4SLipGf_t%#%Hj>cM;mXV|{IrxMds?9ETO zJ+&rHUM13ie%k~hjI$CI{4a^*7EGlT{f5dzcvZ;$w|p8!nXMAjQ|!(6SVr9-*TVzo ztA`jO>b?A41r+j`NX!3uVtR_b6^f6}miAgH<=FGBJk@R;@GVhdbED&Lwm8dvZ(T2S5Fq@8YIxk^jiamn&>A?`rmf4;0 z{3+FEghawt&7!%l{z^CsXDBM}HP$9&%aiD~CM~56d-cHofFop|Xy=J}tEeb$(S}6z zOQKe{p9@47XDBKv;|Zy{6iLrNT`z}nkHkT|PpZ{gimOVoH~;%c|0nq#i=!J_Mhiq3 zXC*2!X8e`&PmH8vw?vZx^A0n;KPDhqu3_=N4>Flon+EHzVVD&2C*i+u>yEGqmw0?C;Uk#u|1D)Q}fDLXvV5*o*iqv+lPcOh&2&=w+cj96AmF}wJ{7GBnxuno(K+4#@40K+sr=#J;a%hLwW zr1o|-1#eepvw{pW@EEs{_1vD#W^6Wtg-<1mZBS|b;pjUy4^g5np8}O zMZP=lRhc~Bb1DrS-^~M4Sxjrcyu8U;IvYVDXXFY+@zWOSeZj+M(&oklM`4mKDiUsY zQ2SqVquthL$hc(yep<$s zJTQTTnduBq0WY~w&aB6qK(nE%xnj(P_wvWGQPg|O3K=t9|91D-_J783qRW5zZuI4Y zvPzyx&vlOydMDtDR@_H{S6S>0;hiZ;$d*8Tk~g7%6<9JD)AAg{yADBo2cp3@PpHQk zi9)epMYU{nZaf_plOoil;yP53y$)KHCBNY(s=_RsB-}dzlUv+JfzKbDI8PpOGKy|U zoGP$a+|LwqScT$;uc6FJW>Le-)-sO5olZr?!n6?ibl^1F;di>+#q(6J- z2Xooi^JehQi2r*}E{h8_gZUYA_?5S*vQmd#a-(Vd97x^F<4otdB@B7##k%HYv3MQc ztD(nm=G{A+!8uDf=|7w+R(7x_8MTInq96BOL?_wc~TI=JQ+{b=AT#7 zw4`X;IrQDB^#XOqq*+wd^K4X5I5n9*(|Ih7EYpY99qb{yO#s7nsMuSf=#mn7`r_VX zn(^+Ygrjg)qC)XycY*PuFscr^NKRbS2a_%Kus_>ZV93~;cPX$sn(v(&PPNrV1e0d$ zCn_#Cu^~^2!sw~pxg@QTKIApvHK`NF2p*%kx02Ui=8ql2U-KKgP88&cy{l00mMcOOrmH8Fc=m(#c^nEp(9e$0eSD1qQ zY&E;N_bR(_+Z5jHNau=YBckQNF_UP(rBagBu86(2w}lS_2vaXQ$8z|5uiZ+*;`NKz zv!flL%TC4>W?L7@+pS~h(C5ywvCdPLQ^Gqz|8its_`lcuc7TEfF04`JGdA%ruN`jE zi7V#*S?Ye{3GZL>N2T(fRmOCm@s1~2?ODUd<;;oqVx8TnJ$qljoQ>v_^WHAh>_I;0 z@>z=eJ)1J`VhIykzm59vr3;_po9w`jZ`Ft2-fr;kp@#3ypFCO`?;b?mN7oXMmKAKF zk1dqjhq26UciE=$4qzD@$%-adurArSG?kT_Z z;f;+O)V()hn7v|eUg^{|k(_8SlLlUFCE+NXm8fuYEhOjO1k&esmJrNXvHJL0eR##G z^V=c=ey{c=tszlCkyLN2H^EUjLs3!lFp+f4iKS~#G!=+2_Nz_ThhC+e(9hQN1L)ho zh(vyvOp|s-3R&TGMa9anDCtLKGCg3kUXoVp!?WjZa7)pWVfHF2*6oWY1-0>XO7}FqLp-18dDxs_dWzNNDf-aOxC_*uqv5+Z z=Z}%bpG%?<4ZjN>cwJF(e0RAtgZD6fbh3%yfuk^0<D;n8!0hhxD^rR)&3}cnK_vK39F?~_3nUe1B`W$qSV??N z2GKOVWAcl+`p_rF4W72Tuf)_5dn*+7y_S-7+9CY&YM($-aaN*2zEhtVmxR*RW6sHO z^Z4h|Pkz$-!wn_ol-Qf^jDBB8{Itf?2zV-xRGgKlIBb_p-tyjtb^Fs*`}lPvK68ar zHW!t+QWksjd3V;jAjHfL!FUfuhhlAvCmOq`Yl`9ZooRz4kH+wC4 z9T7!4bnYo<^Lw?D&sfj%&s1W1ioN;otI=nPYpWpot8=_SgmG4)qI7nR6x=r(^Krt?^Tx#kB~7v#k6)#j6Ot%@ou5hG<-MmOFjAB zwOP~?y2&^SuPZ7RE$l2CIY-m7OQ|v@rr0ludlQM1U-`IBM@Pnm8f_Dm&lO)z370}t<-1vb?8Jo!HCOk zl$f4kZ+@zAcLhoD>O!+pbOa)dvl0~v8STleK0|5nyw>Uj?y+xeC(z#b*AvrI?9HF( z)6S4aUprGpg@r(baaN+@%mv=jC?=3Te*9L>nV}Ex(-AB;S9oH2ioJQag~uI9)sd0Z zsb6D(2;;0oMdUp@>3-cbI&@B+z<03+_U4mM{`Mt-S7y>|(2`H{SFqTJ_j|QV^Tb?K zWUtE>NW^``Ec*P}UkTGptauu!4_ci2&hIylKdbdWJd_;iHIoi~*o@#P>?bNNUmHj6 z>m*PgbK-INrarU?;kC7jHlCPlii-ET9^^?w#3%MJv-L0q%O~k< zBCp2X{?!CR?x!=%WEF~5xj*E|mELr1+ie6#VGb)QI^DP=YgdQT)3@{`58g#}bai_; zb=8VpjO`jIbG^v$jG$)_gwr?dwJiSLTj=U&>N>FTIYxjd)hY zH$TZO{R8M#n|Jv*3Nu|%(d3G*`uMkjbj%bdg6ni~{cfKQH`&N7hTzpzGp9N$uci9@ zp5c_qn58=WL&qFhH#LG@UD<%(*;knLik)tc9eyEej~+?4>+g_9@e14~@2z0} zg`h zzzGzOAG2d7+R$l_6MU+v<%;vlk>tt5DB8SZD!J9b5UTlK)QN@DnR|&o{CI8$Z*8Xi zr*}f;$S5+)DVBcf?LaV<#frd816cIf4o>p9=n92XNvYItVltiCZi3{$-2jX}*+J5Z zAclFXsF-RNMy%e?q}tEy1%{0ML`D6fo26CRNi@#%kwAp8NBK_!_}$7Lrhc2KxmSVb zrM#`Y26A8{f}?PTq9P>YvSgnUO6@LO5Qs2lx*K>8mgP(Bq5T10?(uBdR%vlWI6Xe( zEWuHDT~SeL@j}|ylGlsYPA8bRV!m6LZUD|#?BQK64H161y-b>RKAzrf6eeVa*A*3; zcP}FO2V!Zl`i_J-F7_L<$^fdk$Ff2V5k9-MQfkb5K(NUCUN{P`D=OaQJd%F?oJHb!?F3vAQ`KJJfZlSXW3F9tS&=OqQYV)ufRxrp4 z<~P$k4-O7*E2qaq)Ai3X_R6i@NT+HiTy-HaW_4A<*JGlfz)@)fYuE&B zD+vFs`Anpn=E?Vth10^abou7L2W%pr2e*CC93}P>74a^M@#mY#7uCGW#RUGTziPY^t3`#yiY&QeU=+R5@`1azs+z6! z=kM1i1C&_(r(X@z+HVQF2My#Nv&|~y!)3wrenGMdN8xov#g%7W)kWi5t9#78D?i$M zhrR#ukBxFYstmBW&CdN(K>IaElqFSn*r;p;R2l5y9&1d$NUOc3(Bl1N@{Dg!*k&c~ zf!(!K8N+*PTb$=-D5NrFi}}yk`FA#8@%Ro`)cko*7S$g`2ODP)7;XTz|6C!Wp#zJv zHv~7OD}3zMiH+ue!4YY$urg57ZQ7*#hh(bOrvX<6spCzW!M4s0Fmu;cR(QV|?B^#f ze*C_|UUg^&I~&-;`{$RrV)Uw2q;z;Jjdc%D4V!ELZcW@E&fAh<#(r{=0i5Qwkzb26 zdlT+ASCGK1vGkPBC}H0KlYdc>xF(HUS`$mtGEI76#*RI(H$Mj%RzTW!4yAuqIuK0E zv3iee09Tv3!SFN<)2D4p$ZDs_wEn4S1T$}}UXpJBl>^wQm&||-^-UjeTc7yjVHQlCl?Mlci-^sM?o-iRRysoI|n)OyP z;wOvg?H0VVwE<*(cLV<|+6>ckQPJ^1u5{NTiN5~&MZ&}!EAUGEghEgo@?lLP%?|w_ zVXltVj{G{zEV{sTBTYT^L;EV}U`P^;J*yHt@VcU6@Gl=SA}N7hex~xU;A@@j&;^`l z{ZV2nFDi_Bw;?Zk&ZgI|o|SME&QMfn{oX{*-j1d}4y#nh1{*-{=6n}m&u1m3^4Obq z+5GKIlGi5CxWY(b-vIlGigi=c$mgsWN``%rd40s++Z~LSQy8t*VQDHValze;`PdC|J zl`tj89x43#ew4ey;lUcFf44T37!<_N#C=)>N8t=b1(=T{-4Df4Eel8aYHtHrwaXQJ z1M-xZn2U;~m;4DWh^6l@xCy%eI73l!UdxvF-Uy~(d{tfv2C&xD6%-#2D={(0-h4jJ zCl9hcl+R>U+!A&Ha8{zipw6BQiV2}wpNr-40|wx`!Ua-~?owi6j=dF%RUY=__~HSZc1F~{C~r&@;+=f82(@0cX)0^qDf z#nCPU$wJ=m^=0&Wf$3up?5$9A)5?+-m?u-crbneq!~mA;ae)mFmnks|$LyWYc8b_v z(DdURdZR$jZ{%SBcXqizvEe)=Cfj%={*5!_pk&`anOg1Ht-?{*LsYao)?bNlPd_L9XzWKD75c+!B%{voz1l{JX*Txe+{f{zR9hWF zN4CEv5PF=IsHpk8n%o*l=({K*wT@%}E896i>Lnc|rrFq=PlJBlLPxRp5 z6TNvo_1{&Vn4V*A{+l{BSGw3Gks4Zc7MMQHN>sdaizWS+&ZKXK4)93t#=mO^I701` zF`k&1V{e7x)9^*o_s6s8mW0*>N8zkQg;Q)SkrQT8i?D+N)5mJ;t@%E$lJB0HOnU`4 zB=_bXX3eLXg4WhmY}>DcERWBxX|iz@!&II3?EiR7UVkl;esWkU;V4YfMa4>Ww%lWx z5%rwiUA>C;m#oiE5Wmwpuk5g@m`wz881t`KX+PyW%WiK5wb%0bxAXSi$K@{*4e6rm zJ=C2{iGh_zp13Y%u;E5Ge4W&zg$YzP1K8dmA3?sTpz?R|Z)oTih{&Y$cJ zANWj}hc5YSl5QWE^Wza4`J#ZW+Sdmf&>F6|-yn_jkBFw{73Ku<@1%?pwzI?(5;yM< zI$>~@ak@@!KW!r2KW3%MV{-|6InWON`Rg&v#Yb9~vLm^6up~)Sfjy(cOSyE}B%0Y} zm{w*rfbN0xmmk*&}r=aWCUu41M)(~eDFU;`jv%Hjb+R`4J2gh)ac_W*u8%H#! zgGO7c4LtK%!hBQMo>``JT6LPG$R@C<%`N4F@2A=HmHc!zyUXwHfU2wH>YGXQcF8z0 zZP`s`V8HhZQqtMYAJ>^po+-GFTE)iHzrg~gnL?k*G%+{dQL2T4&6~MHc=u?>m|M(w7dH(~{s!aE2qA++-JmOu=#GDxTHz z)=%YuRlYQQ;BRcu&!2CjPICd; zdf7%|?U>E7)>=Wr-hpfm@5#~9-3p3__Gh?0nb%of)gr-5Lg>AZm*jy*?LhaF862p4 z<5>`E&v${$p?`O6rQuY2$f+@d(!1~Zj-uXhb2{^>KK**EzB=NNEleNBYirl?bM)#C z@WRI)6yIHyHy?F?I&%lm%IM9rYFOKjZeBE$W@n~IzMrnJiUy`&Ep202J+HG%Jx#zo zV=G(m<_eo;W(qgIZsxCtk?R6-g;UN3``$`{ng7e9x70HP)4g`^qwh3kJjDX*5^zCNEu6q(){?cFI)L1<_kathMYX?_?g1F*e*?bc8aR!b1*Mi_EysoIwacD(W z-%g-6__HS_%{U6vVSXBLzdfnj6HW`B93z6OFj2b+fU;i6Jj zS7Q!Z0~fP(O-dQewE$1uh3vZ9MYey41=RP`oJw)E-62(G&Zcr79a6nQ#mt(T!_3}W zm}R<(Y4dk@tJH1mE8jKS^3x0sGEJW%yB_PM(>J-Ic}s$$dQ_`;xi7T3Rt0`CAjX2W{1woY#Kk0b55n{XuaTDJGJkJzVzer zSkkF)5xeix9(Gp+vHin}SUp91=t)9Z%(Y^+eR+FG3)jpztZt^Oc6{86W=bbX%(X1G zIm{e}qy@6VIazE6|Avdy3Sm2fve}S%=3vx(3RfKWc_${S78`o~9Y|g(i_wv&b&O6(2#X*m`@)q+bx_d?}@yclf zSI^nOlob(dXQMXY>&4GFT$s*Y>$U~!CH${et+`jrmTZwdCr+coeESo;F0LMb1U0Ps zxFr-vb>JQiZ1>8YLj&o$6Nd=S7iTDDb$!EWd1~S``rylBk7k@9U+}YpF-ARqkR)JjE6IC)%*Z{6td!lddp-n}*iPDXU4h zB{S&V8Ox=%c80L|iYwIXX2~#b6%{T)Rb>0|U>Y%Im_URv(-jrl2J9fdSEA{$1+7&- zEe)Y#u`8^)VZt!2#ooML^il>X@r=mmkj19r|2=CE) zP}47?Pg)gG@qU)O4HgI?eM8uO!wsZSntJN#Tjr66 zTjFSJVXlPvCsu#dGla-DZt$wUhSoN3w~V}sjHUlB6$u`AT~Xm>m_l^?;^?E`-|oZO z8A9lLHwf?hM~PXes4#Coj||)wPd^>a7x*sDP*ha^&LO%U;WTTWrM$I`A-L~zgU~PU zm6(NMZ-rtcpS|p~FqW2IlLfwuvl10IhZmBK??P$8fDZz##U9vOp)jjVBRadHY1fT< za>FKu@M5YPbbeW@#Pn2DOo@3-8m=Er&pM|Gv=$TE|0pumB*tbi-8<@&JiE0aY|3(l zxJeaCOi!^le=2IVkSx76fj+o+N8r0SD^cNIc$wIa@}s->jEdjW)=)O)_eww66=vAwDKR}26_G( zC~ds1NREy+gv>hLf4A_k64O)c&3ognHzmLAr_j{kXA0mHZp{u6c^Z8 zyiAG7rl`2`SDRcMIh$H7xGu0)%v(i8tDg_06El+OJXIqPKVJ3nj&tf6|K=(&*~H%b z87Hg}$>iOvLaN>hv=(P2D&{VGB(=PpKpl%a%E|Q&;g+upw9}4KVzP<7dFQXrccss| ziL|DxNNaIcqT-G3b?I#3G_H7)MQGSBK=xHF8g8l=RW zQskn0zwaq)m{_OPQdS{rtu7?s+N4ygMwe-wHdU?l>PC5TqAgS0xRMfqh zBQ4oFlD=|it~LrX1gF1FQ0#4^#GDd)D-?I~_7pfz;HL+i>Z@@S&Pr4?vQL%X4(LtO zgRRw8{5ALc*9o+i=qNFD#NNDmXZZx_ZP&guF4R&Wsn}0cH1V!-4`~@p?b2#wH-4|u zqdURzKYu+jb;RBZh0eT#(xu)0)GqOhKvHp5qM|Z#vnt6kg8t1Z5V$DzSUJfMp6Ygj zbh&~*Z4aWi-7jtA&uY!q3m!N_QBi8-qk7;TLaXnITojW{XN4gQOm>8i4kx(B?W5~d zh9SYU-KR<+E4;3#`1-XSk%vdq*CSTT{rFl9+dIPP7OOllbrcox3zJk4bNPPlSQCMy zViqbYiXQut2DP*3tqXSwe*Q6l2PTfN^Xe#1%qg)qKS%FlOH!B3rZ8rdKvHp5qGCkv zj>I7{ks7@|COz~w1f>n{N$k+d6IT*rZ~j|UJ%PMAH;eAM@?IdRI4e4p(;DT$_s zFRm17ov{b@Rwy>x>!=q7`_Kzf7gXck9b^-EAIns)6#{#GnRu9m`k6wyTPptzr?{Ld zuWTAe^8(8~a8Cw24NRN>_FH-&pS==Hix+1VU|Ne=ujpal_KsY(VkE6IIz{>$<*`L? ztl;>;;mq<1uY2~j0_UZ}nLIw1jp}0szyFTrS-IzJk*6-3O1pY4mvQYeu3{D|m*?NR zC@=NzPI7+)tAF!(XGf+P!h|cwlol=3tn&~fxUeTn`Cb1UJMM1;Te~0O-#F&Y6lzBU zpxYLd5u8cHwH&tXf+bvjJo-ObT~0V8Z;>MD{K;QcKC4TZcY8aSSgXS@hb`iLiS5DdB20EU6y1c`3q2imruaeEwJ6H6lrQQ4`Olx2AIcWV>8^b~!^?z!F zKmXY3@vvYHHIB5EdMqkql^^Y4-;`dgcv%_i#OnxKR}i*>XVvzdJvjRH;#tvYb@J`B ziBz?DsS1-{OoZ_XaQ-)V-&EaoM?V@q>w!?~jI+XZ&z!Klu9n-?`P0uE#tM8FGhIwo z`Mql2Mm>I=7j6FDNXD7qN@+2xF|%Xjnf!CN>)GQ%9WrLRBCQ?wzEU>w^P?RGEE2L> zx$_=NIBN-B^EL?tn)BVFB68tqH92v@TYWsTDNOm>9;Uu4VR=Ke;T&rZu6h^P`{mkj zB*z9kD@yp?{b9I9{%~_DJ$oWU#&z15CpXTmWd3_CV9X9pKjhH9L)2#$=8_=xmAtio zz`AN%gUf`&o|zd{tm`#vu#8#md2&`2E9aHj^TurE-ygZ1`l@vQCet~(8>HP!T7p+# zN9cHc1l#V|65M8WgiPI`tk2OFkTr&Ptk^t)XEitBqr7G81p2JnSn$B>+KsDZjkj9C zfqL7xM~{~gL_LL{wd~!BVBU&pt)9IRtln=2j>9#4*Qtdaxim46h95X9;i#J}jbO-f zJDBw|l!=M~gDuF>umsvNs~N$B7W-8!GlI7_>|jlerVe>xv5B zKw~ni=``xF?U3MsqcFMUzxoEuC2eA7&|!Mk1T$6~+r7aV^sne%#v zMO97`uG7V=S5ySgOCn3Q@J^mtK>`uRexkz9WDTh|HJs`;nMW|w#U8kJn4d&ien?iV z@}k~GKZx7vvrIYH40O(~@=Tpn$Ye(|=&6(I8L_*F4KXr@jXTo$YkoV|mfSuSN7?St z1ixyT{55!NYX_|tN3mOFMxY&G2QgV1F8VI=v7|dGmPU?WEaPqq>v-pdX5Ad1!A3jw zrAaw!XyyPGDViF{|KKU0=fq#VXwQ!E*C6w$!L23|RW#9uTjHjyhW3hw7fXBkAps*~MNq zFm%UI#v4zu>uqdcn(+wM-1sch-CzUzJT-qG7y3Mue=qQ-*Sh-?{5@gjcATY7HiZ;v z3rjhd&7?V|aADy#t_WJ)SbaNeG`%12Pvw~WoW+l`gv9n2*o5XUS>wBw@T$WFc2esl zJ95Ah`j=_C^|*vtN`ETiXj1#dvU}6j;Ga;x%6)`ri{+tF8?sfQ=PDHQ%?*#$KYyzhC{R>|jbCA<6D9_og= zusZEZw)+;ZLzTNSJU>pM*brY!zE5f;9S;jqKYq{vru{aBZ&%gqLQH+IFE$0U$ud(< zZUEjE=HMKm=GSqM1N=NZhE+$jfoHsP$F;V@+0HFG(7IVi zNNTUCq5t?xkCvzh(~;^Y(y_g^a8vC7UIu5B=kIrbnNb~KbGH-9^uP|#=tM_2`0fwSuQ)4Fv8~w&a^zVA-Q4lH zgo!EknDo*R6o*}5UU$t-_4A8mZEbFzx)imEeKb6%{%C%xH@dN}B#_ z0>Qi$`%U8>dz-t#g)j}@Ee`lf_8Iw8zp!%>j>7ATil#SA>4TpAseR)!66USgujd0p zIN6Q&dp6MU-G7hFX`FXonqhxg!cll#QStVEOBxa~oNlVwD`Ccp{R%1!!7|hh`dqEg zJ-Vct(uAzO^j~&!f}`-dqGE0SOLDkdAnm@eTv~9S?32@Dx$C@OaCenIkMCerQ0Eaf+~hR|l18+3nDr^NIWd-MIMoLXWc1=5Me#sWje zS&53@ZcoX>KLPa3V;#BcJ^t+Bz^}vUwcvrhd5_=Smx=Y}sr08+kt(Fz5YDu81EbJd zCFZSoC4Saa~TM*wX&Pe)+L_&P*|k7GQkyX;F>s2Jxw{HSN##xDq<`qYXU1vY)IYyR)Zt?wrpDys#;)W9QR_x7L`1J+Ex93#) z_~mYaA>*t>MZHUfq)&%1y0olP!s}u`%wZLZvi>K@+}x?uEU!Po#1u#QcH@(YU0tE< zq|85ed&MpzdltsgyY5#D`t$4f!>7KTQRFEx3l$YDJ#t8Kegu6G{7Z$Su%D=SFe8z4 zJQYII#vB%CEmmW1zQ>X$kp&(BG}W+1-uZ~{-uHEZzhibOapkJWUO!7M$uIBOG>x8D zwY_Etubo`L`|BnpX0Lc9{<-Tkmh{*kOIMDPgxXr{Au6^vjU%i2#Zp*gPB3G|9*ep6 zHxC!+Ks0>UC3TG%PhU}k7x;Blcd3P^K3$GZ$hp{feRxeXx-YP17 zc8nwSZQ|*G^VbB1j58D!AJ#<^Ih)T=h<5P!d&v-n`MJRU(z!~^Td_BvA#D;*;v;5K zKhG!bI0|PaD*B%fAXQ`I=-Q^%@)ai|n5@UUT!cj`F`>oYyq;nGRC1fY9y_+#2@Dzg ziHfni+mOuH)9Jbu>*V}WL-=*s8EypmDKXQ<-U@|&&mrV-3;s?VDhmu5XC*4m&HW-J zUJa!iQVQim++)}+N(O9nn6`J z)(CtTdx(nZ^%P{)E?#HpI!a|%YzPM$I6`36NKec{u{S?6dgX)^{)*2lnp`IEU7VGu zC~>b(#*if1+iQ(LYq1CR=ABz^Ig!%VQFP3`P4X08XH`G9BQ)rnLUGRtk-ZxDHd0$I z8b{wWx_4#|XRps6o4`1&6oxsh$VDyBTp`EzjibGLA0!#4j9~s{7g&7AUN~##&3{Wg z_~8N%8)>Ew>1!R5&9+UZ?MH8t12VFi)j%`oqcfl3UZaM*?`V>X85~;q1+6|>FYNq-Gb9OisnE@~G^FK3^W zI_}M3f9|x0xBYC{{TI0`nV%)h3$hiuRPb)0kyG4@T*9eK?0NF#Lkk!<+W~sko5~6b zTf#>E?{!~8Sk?TN(E5S{yzHr|znbOWTsGmmeZwuzOJz$Qv*=O>DErWry-0n`8uK|t z7Xy2-E)SnF>8=C(3)Zkc#w8f+s(b@zzrpA)@xf>JiP_O9Ci?|dv&z117(t? zmqnMnJ@V$3q4ZtYEEz{(7Ah(#4b9XA1KjDSTdT>9oZT!r+891uOlL(^J6WeAM&Nyp z_x(7toB1>_2A8I5xX0o>Rix_yLP=zOwf0vl*f`!EnorhNcDJ#HcYLmT>R)5!t=HD@ zlb?P5+}4* zY*Nlf**SobKQK`ds#0Zk4WY|?cF34)hVm(FTRp8H^xl6d=c@jT zfOKk;(HwfzID+9cFo&I1sZ8>^%)IKE!90ZLI?2q=N|hArj9sj@(UwKvbKjsv6?DY8uCpw zvSU15?iNnAjQ+<|eva^=O34=N{=*jczp_xFSRvPypC?XK5JRTq=! z=8b`>$S;qWj*bJ2dt}Ytgw(JW_6|_*oi)4u?Gd}lC&JAgp<$N!87C#Lo5}R%mF6lO zbuYArmAN{=hDmn+QK%aql12vbb1cQ};y? zZ=nZ9OXZ!hTSl6fL1x=KZ;A!hsZh}vuJemLkUM&Y1OiKy&Yh?`oD_x zZ-=S}Jk_G9dDGEOJH#82bWLG>mP3_PJ`jQHM9pPU3w8+nk zt~7Y(@nL`iWcu<>AqU$rn|t<ou72V2xxs*_*-kiFsDp7 zX#^|z|62^xRI#qkc|m5@n@rt~`U>n7(^FAl^X3ULe>$03?Y$?^=M7& z@$~DA`x0h|m~y6P8-cTpE8KC>^c*n1`k6G>^P`<|tqE4(sL5GIFlwwTG=JKbE6%z< zB2#Q8(cnid2xf>_J)i%g`I_nq)$28s)2HQUay!(Iru?uFJn*`rBH#Hs8Bq{I3-vEa zm?2`nw#|*fD8&`FIcq5AG}lKYr|~4()ka6i3a=|F`gHh9HcGy<)5fK>U<%L9Gr%Bp4rb3^Qxu-^#oUvPyrDH_VD zSn`K7n>>N8;iD{Y6kbE)De604rZI2X@l$C=^!s{Y1sO?b}Jn z(rEgqdY*J;s}YRlmE@C6Yn7NfVsC|Fc!zJqtZo9mqOTH2D$Yt&Ts}XQtWi#+t(H{C zU$}>-xSOlQWK&dJtqvf`b0g?vn@uuVZv-YsU7+##!%9px@k*K#Ba6tQUQ_rH|Dys) z#U7$!uj?98f6*u!TKz^ox6uf+v|V83tX)b>HnBI~F>x71j%fwZ(lM0+d;LFLon>5A z&G+_?1$JQ3-6hz;nPJaTjN5Jn1te7jL`g9T1slayuobaTLgnnEqF7i6ieMp#Vt2*(c^B#U7#}ZiyCoRmqL#@{KcW^0tyN*~H$w zl6CqMW#j%ssgbI)KvHp3qQWqsBUu~Oi>7RJR>$-AT*`NX{w>-`m~3KizPCNJm$G!b zM2kDx2<#O{B`Thmoi2>eh@<{dBjm>X{h;wqpf~TYJ7%HSTcOyxU<8qd%%Io3as*n7 zqY@R(M(tDecbQAA|E&|)EA}W~!S74DIKkpKnrz&sJqin7bIvg2z+%AzM<^<~o!z7| zY3WBF&8QbV@G6m{lI4s0q%N36PnoLaG5j4o(#{cf4qN4pS*WNux3fsus@;6r()*n% zJC)}ry>o!`$H%&37K)F=pCF42`h7phv-H-F5@;><5EYvrxRcfX^Qf*{U}5KF`Y@S4 zxuowtyy*Fy zyM>tVVy5d+aEQh6uAbS&%eco`qNA?-K8kMB`Cj<&Qx@xc$q=5$@p)%xl@-s%JvPD! zwk0KVMd%4rb<;lXG`Ra{Iio&{O&nqfnN1TIRu7NOW{nMvV350}F7>GWLHWuYH|o}# z*H!=c#O_bE1LwFYZ06+8Y=n*-WcYcrNa-s(I@%7_fF|>7Z}~!b(yeIvD(qC@@Wwf; z{bVCpx@#x9bUBCR$MI=5?e+-M(|LAusR8w?Ur*|PxTyngnL*_WV@R%OMIZDshg&=k zwK%CG{bOwg6>E%P&ACuFKHKTx6*iv%k*@jvRXutG}G$=r3TZ1g&&xJ3N zp{trr_O$?yfv@>}Nq$O^a!l+DTEFFzynS6A`@4YW(7Lo@2HMY9w{%#`m(7*;-z#SAQ*FTgMN@|9Z~-U6-OFrXVS{E|Q4R6(sq!#7 z-D!cqkTC@o6`TIsNjkBaw6Z)xn1i(^(HLGB*uXUB5O#QsF^r0|fxVZ5xJN#WmM`3# zO+Q*C5S&lDc1*OckMvWZ75fy=1rH2K1b7b-dB~F>0;I^X5)r! z8&hcACZ2X*(3K=*HG(xfcc^{VNcJqdF)ZZY;EqNAu}k5NVCpLeICB0!?lF0&y?U}w zZ@OW_U~=BAf?Ygl0Da$GVD+~u*@};bFxvgX{}ADulUK=Av!>HQhxqrSZ3Wx6&4BZZ zT!vY%>E`>ad4&PId7R5V;N59ivBQgcjyNe0Va#+zh2Gf4>c2K4>FU-g0^dEpyMjG5 zHHX3-yCuweIeYE*MotLuq>~;6%6Qcx-tRYexj9r+{jZ|(S*Gm$F@grnFDb-K7gJ!7 z@17VuLjFA@hW^WJPH=}|OozW5sbVWmn?kltFaFv6nXpuOW%4{~@wXg(?Hf+LLI z-IhHZZw+leI>HqGdj;#Q;3#u~b}gj2aK-KgX+s=?(aYKfRJxIYioElzb{!1Ve%ODKw6d5f#Saz_;1OM z{U6v6Z99mIn8MFvVEqdD*U%uE<8nYAI{pbWu(F0E-zuq?zgDlbhTy5S(!?j#teLMh z?DwwX=dtI}9{KT#88orWTsdRx6L#m5HCzjOBNfzCvrGMK;LQFv($=Tdtl+&h?9Hm> zieW2GtNPTKheWuezIJ!+lxBrKN8LyA6HZutevMi zUO$a~eE(9eYqs(6EGbnWuDa@i!_@!+2Y z#B9owusVcatKepqU>cjp6&HFLsPYN|XgiZ?;XH68qDRSv5$YdF?bR8@7gWBR{xT+g zVe#R+CGY0{m}`g6?8w$*($(RA*pl^M*;T8f+#@}GxcYW+d-b}Ee=7VxSn(zL4_kQS z3+p}f6j!v%x=D6Un@l%$I6z8V3?Yp7ha2D8nYHH?Nuja}gzGr5!~YpVCC|7?NVVgi ztBZXJ+0XZiCfV&Iw_de}{JwVZ?Xo{>6x#v3H`~D<18?>(w>_NAwS!}uyt(3s|5380 zK?rpl*@s{%i}%vkE-(ONPF_xS)$m=%HU~+MO|$3%I~QTcJ#3KyOyrZzyKS^%qT*oW zF`_*poZh#nJCiZb0NS5&gnLA#6LZpZVlcjP-h&WsQB+z74iQYNIT{l ztNzV5fa*i8pyzGKFcHSy{Qa19oJ@@hqsLyXR^nASDp8?y{Yi{?FQg{bMQ(ZAmKT)y!`b%=>h&N3ww<4GuW3_LT0r>G65WEUUC@LNp<&bS{L+FhOP6Tsf?6+pF0cdK*zej1vwpI8G(nHUa zCSIH`M1_wlDjqD%A$C$IUDUWni9PTt%#(RXxq#QiwzVHsOdId!AId**UR~j=9 z78Q;&jH!9(0Q%~qt~`>*`_ZH;czQHsnCapp@tQc_*W^0S~S5!1?W=7ww^Pq2EjTAUFCe5PaWye$!@sW3%K9D3(XY8TpX8;-LT_N{$(XA9`|} z$f+@D78T(es+14icz^0))iUGLLR#(MBz65w3G-d-&Fc-$j90ogolbM4Qh`(Bs6>Ts z^bQhdJ%`HKeO0&kc{ruHLRMX|go!Zr<~TDtHGB}NDXC-iI9F?eO>#>mpM)*(|eqPQkGyuC! zE^wfsmxQ@7_U0LMEtiq*m;LEblT!lO#!-oirG0jixVe6`zAj4+I>qmh4t0SwErv*# z8)I)yQcbs!?>+(an6y`5;W#Q$p}TkmS)iIl&o5pmyPP(F0M9NEvZ$AYxiR+U6sLYS z(bEg0n+9zbSU8SKR6OU6JA)gKr(Mr9Qa2iF0BZ}KA-JKHgt;;HRw&~B1(3S*5!8G_ zbAg59s6@rrbJvyoyDO=FqP<#+=h*ez>IAjl+e(-lV{bmerNo2`a_L1M3=>&6j!IOx z&AEKKOX32$%KCw77(b6>PPXeK{<>p^jJ^32=fiM;h2yA1g}>yi{5La_ zPHeJ9_U9glEuCPe)_r$Oow2t`#v%d+M%h*p;WMr;a{+JU)!#3TM**F7u{nr6v z*R6ENY#Mv>n$dg1-1P3wqQge01bU965*33ZJjw3)bLpB(qvWf(1`w6y03W}Ma>r~M zd-F_=PWj4&p7ZHuf04K2s6@pIqfO+Y$sFo`;HoNTqydCxJMdl>&D}AZ#@@W2r6K1& zQ)B54yBPv+$5Dw2d1HTdr$`I>`u7NxYVkQX@w5l5d0oot`0IbWJ;1c!7CS%uEc^O* z0Oal~<@eORjGEHh^>wO~PsgiY%AeS)Gy2fwYaTo3_>I-_n#H6^rM$)!}bYx7kG5;3Hw%N?*s)ZZp(cs*U#5li>b$?+8hRFljX!~c(m)F!r z^4GO;9n(?UfqAWla{3oT7F`k-!oQNHecv zWe0TG;IWo4Y|L}^{-PmEpJV}hZq~6)SB$vF`pOh}Lew&n|1yL&+L+IdG}VJ${*&AX zgygY5w{;;RdbIoL-uW!xMG4eQS9Ys*z{ zB!j=T>}LqCyG{Da@0KF|3zmC-4xw$$whHtd^KVDb%WS2m4Mfk>)bMUtRz%k6%%E}DOZIWw&B`C>L&D@_c4g6C z7VX1-jiw|svrBu}uM7Gxw1Z}k#bAP+vi!dVbb-SI<%|3p_KQz4Gv76ZeQi<4I`e61 z_N%9`Qtdi+r->Z|n@{43oi`mw>WH~CzSDei<8TejOSFS^ysv?OP7Mp}X9tIROkx8X z*0GVi>+NQ>rf$1y=eKhA&z>|pX|h1J9rsnR(COwdH!EAhlv|-VIqap}e9RO&=kQn= zuS#^RWCu#kVf4%YRrLC^SkCl{qWf+XD>2Q+{97d3l_kM)W8RCkL0lJNcc_Z>ePaqk z2USyfsT1)u&LM>qeg{KnnY}~%9<#RdVH1(ked9&*} zTVHDiyU*{ScickBH51o*;^fa zt21TKa>@H`1#I9JJ-B}`+5PhUQ*3vjJ{%mH=>ED<0o$jg53E}sesw>5_^Q%x5l8j5 z_aHdqQ>XP))=|eEuG;{+xw(eL+uOq=Tj1x>+KmzasXxiDFO$@lZZ(CV+m_(BMC>Pm z`;74Ws~QEhYCoKw$<35sR2jm19sXC%Tg$y@zY#1_IKb$kL){}Xc{P5TJ?L08;!(v1 z=g3KBA=K=sJ;7BXIM=mkZ4LV{&mQ(&)6`AOIXqOQ{gM;<$Qxu`qBdxMwg+FWNh~{4 z3!Xl)hj(leGhd<&S0n9V%6tvkj?il^+ccU?A0KK!TQ+^h4!pMkPlq6uqpo3Bw%Nkl zufEJA`zZ_OeGM$zYj*o)wuzHl+RvrR;BEx>Ts6B_&0ap>bI`W-mO}4VvkC3YVUbGH zQ})8tk%bjk7SbeBV^#j!TJ~wMIV`JRC>8qEutfvS!L;Eb$?#(>YctLqQeQ9Qip1W} z<;^X<>1nw?nQ*e2RrNQAW4k&E{cuGOhnoAc9OFlO&FLcal*K(>MMe3o8FB;DSbFNq z9yi=aw%7e?)}Qx)=stajgwKf+$Q@PkcFQ2D^RmVb9~WN*(PM^Uj$B+HO-rh_sqnlr zugYrH>a7`!9quJzKmI)*5-)$&i=o#Ve&~mfiz5`HT2z!G_c4m3R=vwrc+#6|c{Q8c z(i}>pTdDtufVp%_(@M}G_N?1`aocg!a4AN4`6)E+u(c3G1- z*)(&2#IGLwFSb6kG;n~&?>zXY#O;2BY+4>oZ|Ch5&KyT5M)j<#fx5I^32}3Bp)Kye zVt;Nqg8T25l1}DJ=F!^;7VT6>4X)R-JJF8dbEN_Ql(f#TQ}x^%L|eO*lIs>dz%s}f z3P-0(=N|NcvCVmhreSH)_{Na!=h>S*eZdyj5k8$_ohy{C)6jG46*5_$G=p|OuS@VM9HFQfw)q}u(b$^~`)@J9 zG#mT%QW}EsGgt5!rJ?6ay(&_6X$mDz6NISnaYcoX`5BUUCxq@TD^+6Vjs3oCHH6P^ zT_NUebMA5P(tWaRtRFq}xT_EqKCYn9D-IS$j%jW?2Hs}h?Hfk}0>`pu|4}8sqHq6zBP9)oYj-(VeE8;cQb!Un1y3+UXgoBoAwwyk;=2u1g4Lp z5)~KDWRrPo!sy)i+e*y5vBxoILx`_+g^a3?{FfnW+dFb=z85Xa976Ca9HFSN3Ee>U z=Y&!9tNsF^$A0}?4dDf^X?Q#GCHHt4d5A0woiXnZ@GU1X`2~N?^wGEQQ_l?ipPCtof&>?KFv@zlNZ_YYr+Zr z&&L%K=HH?sMlX?E_&l8skIfXAK8{dS1Z^86|Jvz8OWV z8w>@ekEy(A@w3%!j5rjPwZMY^0tQj`4Y zIJ#9%w=o2*7Or5alPzKXjlC5LA7u^+aF|9LCx}cRMqNq%XSK$anMS6C3a^dDYn%1DBunU0w_81$&s{1bB)mk&<_)y4pGIIEAy4V|r3A^9zH->FV6FDh=$ zI7BAg45m%?$ICxj8p64`E^v83sDv3i_U64_5=Ib%v}o$Q-$>Xuz)^{co#ng8qG)g0 zai&Vx1;8HIn?G|prjnj>hf|%STI#F%hF~$*8A4`TN|-c@Wcz{sPG$JG|7fGW`sx^d z-3KK(!J4aWCCrWSk$8=wcNp2wrVkCBYb~&F>>(XMG z+%Y%C-n_5D$|~ioCiAJ*Uy+65s6<7LK|`X$=F*ARQsqDV%-1*LJvmer?wA{6Z{F=~ zZfo*E;_S6>mB7MrRH9-?`CFxbe}CHJ^J9T*V-M`jclD#%JEp)Qbzc4Jj&kO`D7vjKR-n#Ufse#@`z#KSuh!x8;D&0|aa}{`7T^G-J({{> zo-7jK!5#Y0wS&7*qdkSntvR;v^MpO5lyzV!adyx`%N`;V+OpA4ZK3sXd+`3h`$Q{W z6LrdAcUltaDP%5VrfV6L&7P?Z;lrE7{H`x$b6fR#=V5efr@?ZBO&0sJndb?1S;%nS z^Tx1jRyo}e28`77vM9eiMBVgICwhIo75U!n7MpRw5W;&8k-`FRv#uMA;QRE!(w;xJ zSobYPa5l0x|79?Jmn*wE%%s2HxsbovIjlj5G2B_Wfw`I;XBSP3Au@ggXL330K~G-w zeRdP~cpGuj?eF_Ay1_JuWE|9n{R4Xeb+=%97HYwUp}kFae*fOf5}s&-a_OQ_`fjr>33`~z!rSt$ zz$qEb<54c__|ypK&7I71Rz54YHHNnTH;c|9MJ0E>`O4`;6h2oUU|%=q zu}_JnVDaQ2YcjlmtxPqAM*0W2$Hw4PdEdf7I(Ov}dC~ey%=ET3_&)h3VG10^^Qnzn z*}$f!njVeOMQi07`zBMJ%0~n<-L~6H*$gjR2s50(GVIIPj#^uo`AtJPH~t+VZ~G8R z?=0L%FvrDoSR}&jraqU0*i<_Ik3J?uib0nFLEOdz)kg-+XM z>gBfmXuo9@a&Y(EY>IPVn>ixo@>hif7XAzNtcXG|q1p6?=kz$V)m;qzi)rWb3R7roYe}hOWq! zTJEo4ovxWf_GVcc&$F1dd2ieU#ku_IK1?xGcfZt|y8PQK<5jd2ZfjR`HondK=eX!W5V9tI6}#Tl3Gmjq+m7ts3-EL9!FWvdNUZZt`m#5 zJIW&Y{JGnm+p&X*huITLGZ=P7(+6@@gB{BGC&Fl=&rx|_bPY?a=N&@(G-k&9^{a8V zFu$@XOK<#)m4Pj&E;Z!}-K*y6F5O+J_Sqxy_l(2L;-xX1oT$(*zoC*J3;0 z9bwmMjA7xp23%2}pQOChxdYv3HBvpujT4-nCh)tUsf4H3*%;e_sg5Z)>a^qM5qcv{ zd2)6bz2tM8xW4WM3H&?gtRd^^^N+HR55CXVM>2O|bkT+XsR ztaWZAzmgnqJFK`{Ts%7j~|9})R z^)H*vpEFBqc1l6sf0%0>fBh?qU#l(`ugf*>gVgh$Y7?*S1?=>$4=nSol9^sR#dNp7 zXZJVvVa-ZTG55Fc*_uyE?s2!>FuBTcB3(N5FEQZlxf15^zP?STvDVp7*v>sRuzq;p z|Ik|R=E-t!$OM}9?E}#|?{#2GAf|Qzf*$wT`;VV-)Q+e5dka zP%ZPBWC{<$F0=d3p0d(X6NsL5nN>`$WwA2%mc5bd%6+N9$sH=Z3ag#@ znO|k5uyEcvejfYHYGj9cf7-K4v}%3jQ&#fW1X{+N6Ffvkr>2(blv;QC?QSQ6uOhx~ z#bHm`jj1Lex4yak^ws*3VL!LZknTJf^ot2tlKjV;Emi)~GlB_jdfw%li zAc5WH(x!uq2xgO*i{9arZ)fqD<-N2uB=u!vLvllor``w7EAKZmg6nf!Avn{NVd^L< zx{OXB8^WS_Z;=Xtq+&l&5x2D+F%5{P+U_S+aoR@kX|gM%^fF|aI%02y;zrazp(0w^ z{&dNur36z)>^HEX5m;?-h1O0QE=o!dk%6tJ)4$cxLR9#;qGB1S$@4$c>Btvmf(KqD z63DSPE|P{LX3_`6+f>RXMsO<270!lgG0YG}#hAaF$e}JFH0oxoJc-9^>dm`_zG%QO z5yVI0eLseuB3m$M8)3HY@+onoCZZ)Dopa_^@2TIL8AH``yJrF_pf=jx@@jtme)UTBM$4P(+-uXLR9#;qGC>? z0AfEmk|wR`K`;fxeztE7;h|GkxSgzFmb5;O=#Q8~+cfVlM1_wlDipn%ld$LU)Y)U3 z%IS+CwCLOw(vDO}m=1~xzq?b&fy8LK%%izLIdO!d!hF&?RmqK5n&dY|?)J+NHdVU9 z-J>@pOa!qv&-W?*s%+OWoRaK)GG2wF5*0pAjwAV1C@k{Aok|ZoHH*d zd!AW9m;SyhP);0`s4yzoN!IV2O)KgysP=s@gd{uOx3>1Agoz;b=D$~0l1No<6n(SO zTcDgcDp3)C#+wAZ3a7s;66I)q9<<5@Has{aVIqjV6^iqZ)5%bti*v|lyFfW{RHCAC z))*3Q6ioXJFBF(1_Q2l!o;oIyxF^O?vrGL8vw2PPyumK8N^6URS)a%gKl}_OK70c4 ziky2&OzW`X$xB1qN!+@1dk|N)%mG+Kk{;I6_ge`uil(!aR%;x^{PwyrRw!HZJc1dvrY|oU@C)d9IqNibxA4(Qg;e z3Iq~IB`RLgt>n+^5c)SXSpLX8GWzpg7A*!#IA<4oD-=`WFOrE`Q)su;eL@~Gj!IMn zD-%e1_Xyf|?+|%wwITFu-UW`?_L4B!#NNEd{mo{wx@0E(IAOk!hm4~V72m(^B0e7o zO~2Yv{iEIxW;Sz%w!h6KOg6DMzg7z-kw+s((7pd!2<#O{B`O+UG9m>xCezT8Kl1$- zh7jcC1cOGkl`z@F-U>xSX&?E_N2=eeXeZEG9F?dDNpU6w;^@t`e^ib5XE(Hu6PUI5 zpq!Od^A`f~i)c{c=~H85d64_U8REs%Dae8KJa6cr;pZCsOvRrEi%r!- z{RnNjafU#hF=-YV@}I+NVb*)l{0gh(b=$pHYjT7u-t(Tzug6o@n6Cm6#uQjo1jhD}hhGYyf8Ucf zH2y^VJ~xFPh@}2?4NZo0JCAonX6RAj`!ldGluZjzLjhn@6$ME!BOrp zclaXtGrzxD;eS+M$e04-Bk_5ub3Vw`HokOk`Vtk+-^Fwo=kh8PIpGTRjJ{sfE&G%T zufp6|R9s%}D?j&&q~)1?2&TX|e^(^J-fW%RJai^Cc)N^XrhB4YCEGB;3@%@5AYr!5 z?<}*j<+UMG==EV7i6ioh)p(k{Lb38}l)PknD7_h-DtO@Iii(9R%#=n8;;3@U2zkBY z8M}4J28L|;Ck4#m`RyBQAl2-bU#=$lk(l(^wW&z^0<4CSYDnj z6kTt}vIae5fiq~Cn{=0XGFyGR!Tzt}V6cZEENnWSf)cS@!!K+GJ7{i7<8%X);&qT%O zgKF8TM4z_$(T%QgKFjtkGJ(h@Fozf>Db~Iic?qXhHrx zkD{N~O(0dLjKDh4783L)GwrX2Fk*)-+*>jEf3k{SY~Le0dwSA<2{+_~$4}WvR})C& z^#*@A|py+v9g2r7CGjtez{-^xp(`N z{PspZ%eC(ZDPs!QD8~YJT-g`a)a5d#{`sttUtdU`Sin6}AwkZJnL^|9ACOla+k?eY zTPRUSu&u{*;QL1#=rT8o<^O9BWlCF^-8-5q+PT%q8{MW-w_X!?cjISlcBLuozg5K8 z!skp|;yW9+i&)s{I+lLX6nx?|1hVmPmAwCe8=e24EiE@GVs$(#{m!>ImJn0KY6?xE z`rktKtldSH>0$=&&uDfnwWe<*Bj@42K-gnqb zKGkfug#lOi_41U1qPkEU$F6FFvsc;I0j8jH_@cCHSP4sAZ3=s|i=~k9C2Zdm6L_6g z$bZ|jZ?q>m_3^aWG*G#Ad>d$c-X6xA`m_0ZZDHbmdsw{3kIiY_7IcrV&%7wug#!{o$`H-wC3ZO3ovjv8X@0LWx#eN0k*#1zu+0#Jjf87XbTl21toeUY~ zt=OAaR8{^UgBMJths^g13>ilyDx~z)q`O-rZKsM+Y27e_`@Dv?@v+VfvsdiRslkYo z=k=+8ufJz33xDNn2D@UMw0oO^s|_K4iQ=SRa$+6qzO{JIt7Vnrm~WI9lVnJ)Ig-uznSZzIl| zr&I5*sRYwgOlxZkI92Bz1O_~)=f8toD zHj-@l9Zqi?O_9@b`CqYtt`NAkSi&q6d-FZ7_$}o1cYo^H@SwnVaa5vW_(>o=Yh&oq zA}`EU5$LlUN^ z*qc`i`Yy|lxX0!}oCqJ-C1Ku*y*V`)_gDG$ z<1D)C&T)b7Vn0#g*u<5b%$`TpOQKYmw_*?M%_mfR8bW@ZiJ>XV#sm{ntUlV&7#4fD zz?QxmzT4YtD5=^RM?Zp%a@i3h=p5t%`_?X#FbfqGsTM;>VSXGPH`!I-yVy@uOiIor zS;J=0Oru|_>DJWaL^ zolbkq8X)jp>?bOG+R5beh3?eGOJAMAzaPKSoS?0dxrA9L_U2D4_jZt_b11z4>o5mZ&$fyay(im9qtExT#$ z8xjMI=KiS{*em9(qT;}iX6ilj`_sttCxmQVOixuu4zVda44`3F96yigtrY4pL;F%s zcrRc6mc>5tIRlUCA{k!wctJJ`vowHDKO(uJtc#C){cJSV+VfYKeTJu(t?XFF+P}2} z$0?d=H$D2Sl&`Ysv}f)%f!1O|Yq;nxtLO6-Je9|}qIJ@A`EZmU)vdTDKR9!WjSVyg zFa15t{b>RFeTmPw8?ukJa6iMwx8(VLru(>}#Q+=i&W?R(;`IP|$bUcBI{WTG4t|tA zFZs@1*>#7Q++R{^z)yCdtUK)apy8t49UsWkNe+F{t1@Z$pX$?7{caUKEZ~c zHHQ;MBiPtZdF<6l&Uax1_Xs;5Cp)$nPxHq7k|%Ar#GY)n0{iZ7B+Owq*<4}Ys`zxM zO>elzk^)P)=PiFq$K4fZE#|GFqT|O#>RqRz+$MeOnFf$*sBU49-(kv4Kt z!#HZxqzyR|{G6>db$|tbda&>|oV~r}(}%wI_@B9bE&nr;>o$ba!}+^u;U%548 zyjSr)#Cd z@-w#arZt4@()42O9cD%R9{AFB)1Jzho<1G;keNi=!IFed|3gv_zdu2??g*g+=jal> z<$WQSX9+!Rl_uE)^aU%P7Z5&olN6}i56pP)2InUmxQDyj7LwH?oQ}TbL@*1*y+uSW z+D6M<9Xxh7DcaPXO2@u1EB?23N3=cbM82{GkDQ>Tl|9Ri`^<(E@oA#JG_%h>9ClZ0 z-&jw!lFk&@(O-M_gf(kx0b|!_O9vEBm@YAgH47W_s5TFem$!yT(XXm!D%$Bd^G!46 z{q$F`%X@Ozf|JH@&S5!=t2)lvpE1Nd(d2TDno=VNG#*ELnq?7utd^8_a(!+FF1tEN z*qdjuPRb>nGlOZF`!q7*Vjp%AQ;%ZJ_qG3s#Xh`YDfKaGf4hDp1FEd5ALeA zvxrA~*qz_JUxv>%wz$DQ_T-l?Y_HkD6<=?4RvY~3OSi@xCJUxubn*akx?JA?x;#(iirI~VHE^ZT2=C#B+k4$TEVohmxW!#W$j-ueLE{yz%)IVRrbk+9nEIa9wV>H+5CULzO{fQ z!FkfP)VxbUn<{z7SbM6!&5)j5bD0e>Fyqq?m#_~_uCOa_%y^#EBIf&}m?f;{yIFk~ zagTeAe96uXC$)ECH@fJ0KQPVFf~$cyrHf^55T(|JvtP@kJH6as^lxqGG@*i@M~h7% zG{f1G?EScti%a^*NP*m#M(*lGa%+a6`!5yi~172n0ap}8;lb8rUT{5XYJ z_S#5(?Js6trG_x-thfrR`SZu0-^xBsAIXUe{nY`hp0XbA-m?|$Hju|HpRyv|cdU4F zclxlD_pNUBf$8Q+|?{>9m=-3NZO=93-X?UJ_M?gJqTBUmtN7e8}7D{Y!K zdJ-+Aw*^j(Nptl!W9T360&`AiIQ6gezvSunDby|Fha2X&m>bXCWDHeXT%h2&W;a9k z>2YGbdpbS8#EX1-XbEX8`FzH!6016B1%Eo&Lt1Ay_FiSsqJ0FQI;5pSzt zn%jJm+o_Gl;E~}1?^8Q7%ydPMMIpaQ*5IkMMSpLBQ{xCl#gm`K zc=F*1adhXs6SP|qOl5^te5R>cBUk9RT*Hu8S=AH0r+zfTV`1S>{uj-Hcjk_=&|(5_ z6%@-{pAbEpK-w+%KY<}*KZT&6P4bDo%`DnI=cDSwa$~r`YjsB!Hei_0VsE~$R{exb z{OUuO^`-(t#!-n1-2+F-qHkf;@OhMK4xdP}@{$WYJ@!+=bQpW{yVtG-WCSN(?l1NU z3>ilyDynmfNHOuJl?P%7=Em5gDX%s9_P_=HeEh(_AFhGN$v@AT^yGO$@G2aksMr-) zMbr+HsZZ8sg1IsFE37q!083ZM_t9|b47&@Yd~g6AHXuld3LjTg)Sjy*l_UM=pPx+# zX2sY~FM-c1p63eTFQ0Ia#@(Kf9oPKmV!uX0RQR}}LU(&HaT>}q=(1NRU-CJ~O?X$} z|gk#@@W% z;NTe&>k>%qisuR}97iQ8qNc4Oucn3ZchFOAw21$fG<5|xk75aPW9-eJ&y$XkHtz%J zuE&W23&&B3iW2J-^7GkT`f&0~RhMdGxOvqD28~fkm>XknJ~upcJsEU7f)1amC9rTD zm8kH&yqDzf4Wl~AE#QNn@mRfraC!M1|FgbYizV zlwSWeS?kGcge&_Csngt;;H=6OqjnIv!cOu9a7uE4@^RH7nmQV^NoID@uca!4+o z&+qO!xPX7`E(w!n?5$AjFkMbO9sQ}t-BSV!$5DxjKHF!K<4G~JlgDzEPn1-5D^Mi8)7LKD56@jn0AFlZxn>bn(f2frVo~ zQITR8Np8KIOdo{2lJA5YgVeAK7?w?vFgM2D3PtjGH`0^mayEPOKw#lGDpAq2^9>Tu z^QjN@IVe~0^XQo7%qOr9lrT5O-U>x{*h-SoFqCS0#tJMPMgRFnc>v43a$O~t2qE_PwnGf1Xm>Xkn zg`&O98*=pXXxg7=vEo%YDpA4ST_n?n2GiTQwsHo4KZYH0gm$}rx?^sPz4?CagI(my z_i$q^LH8@XT3^b z;W#Q$v3l52lJIsaJ=3pDPMvEE2IUT5HutDICe7HJSN*1o8~$~YRm<-NR+_hN0~>Ht?(q`G4^jlFqpREI>eX}KqTd{boM*iTes7dN3d?@glL z`%hBhd-Vc7<&E$fifYM}iFe2&-fbfdzxqY zg{n=N3=<25B533j<$`aK^yRcAvgf*%;IzvLa*mt27u2G)1?b?NG z_u8R5cIe`YZ3fW9Y&QC0PZ6WtnD8|nVmCH-UQmx(%)HPc! zvHa(juvJkjVaol1ca88hv4Ry%HJsu4vM71|;W1Qc)KHCAVVW%}c1JGmWMuy&@lmJYx-Z+QO^Pz6^H`#TD`j#WQt*{M2#SAsuczMhXII{6713C`*GSRMP9lrlE%iJQDTCP$#!y|hpeKh89dphnZkGEZ=qah zH-nyzu@!n1!<=}P z4J7RSOxmsRkc?MhE-otgW(U=6VM<$`fE2lM1eMITuB#0V}d(sZV{9Dh(g%rgP$x{ks`wl;j$nwOaktPJ=nOlRZo z;O`uA>98L?Q@KIt{*60+Z}K#OEvIatQN3mg-`I8Af%+l_3bm3c-9o0i>|UZ17EQF)68Ibr|Vqt$CAk3zs1qk z@ynFC3mQPb#*Q#xq6bSiYXHHO4&eLzKh~{^x32i@0PnhM=5zMlu~ha{xY08|P1Igd zd2Accp&fqwfUu(&H8r1^@ZVs&NtzwS+&x}&&7JeI{fmwD_<*9I*op!Q z14Fmi%IwYAOR=yq!2%>CL_`r4OzckV!dAq<0Oky~0v2JQC~0?Mzk9C#hj;Dgn-}hT z-|NhoIOlg(5KNjefgaq`7$&B=Kz30HR}_b|(cZk}LQ8Mlk#S!X?`!F7iKi9#XdAFM zPRChq6D2J5uCG%}p6Atja2S2{{2p1n)dKR9ok2O6v5(U%VEjL4Xy--PjvG7|Z;>c-wI(}Ktg-xB(2KN5(fFn(GPa49!UF8vnV`%e5n}p-| zex`yY`|ugUekQ^(@hfD#1pdHb8Vw#$S9scoc`|DLA#|%JTbuENIW=>ImbW|dsG99Ipf}r(qBh<2)R->gYf*fS%Gs-Z z4;sAGm`3;8FIzKP7#{5c!S?Y|?Xx!UYNHGME(nqKrrE%uVXiRiUIPD4TohhOj*Of@ z!^4|r&%I~~f9iR_Q{R>h6WTk0mM~cD0h2H5IQ8uM_sL^^$MV@*q|W%NSX8`iUqwt6 z6X=EO_0*W@Vh`-i?+toXk)n%%v_(xVf|)K>kI`7d6mJjcv{RRdJTv(Z`FUv+Js7Vf zn95@H3E2{ShjPXNIwHJzR26aK6$;Z|E?47KcwbR5tfK*KX*Y_Fat+da7-$L87ka?h zp9TyQT2Wyw|0W-|jG;rr!UXD!BNP<}JJzA07l+f~>K~f2!It0_z3Qvw|F5?XB?HNXuY+Rv{=qN_WIbWmz=hQ?_E5=s_jn+(^~A!XH?ypub&^sYq!9pCV>+OWSR%&Nn4gqM^_ zn1x~v%dgu@^y!nS{&ZOTM1j3xMO-gS$Te#V^9t|tcYCU@g2uNQO?w|5p~kDQpQvcz zdXvn39ZFaJsV|%M=95R>d%%;bTM{OlqCzkA2XQGML65Z=A<$aPTSdjj!ln zhxd`^RGMqZ_a(^mT~3X~Ijh>BO+dXrfZgXkkZ zGt7oZ^(Nm9Qo=_{m^Q^G_Ld-FRM{V>uiB#g$UpB5-5j!IMWg#1fXPT_J2?I|&m( z?9G1%oBScArM|S;y<-C9#8HWg$>Tqg9;LnLDb+36l)raN_PIdwcS;EpLF~=@a&|VO zzx-76#EP#nUWKC)75i;2kd9p<>D(i`HLLhJ@4wOojB6T7m$2_ zfdb{kexjnqigfbHJBt2V)Jk62#S+TKy1@A*KfEy!#NPZF{fKO$Xg`s*p6Mh|P8^k} zFx;Ra-}uv4!@iT`mYpnN9-jhkdaKAA6G80F`x?+=#4Bea-P3P`Ksj+#qGIm;)1-6q zaC)iPUAZ%VU+L zfuRMPwxS=eusODc&3}{6qAl9M z-EZ5NZN)8?5X&i3k8NDhr|n?5(sUYS|GE(z2_~LmRQIN&%12DP(0=P%YZvXj#?HT1 z!IJ|e5~h*0TyL=4etbe(ZQVTj*6+G#l@|=@n^~o#@APc8|Ew9jtb5pd^TTX*Xp|ZB zPPynERF`+abTWr<=Zl=fy{N9My?3cU?H4>>#`&}hwme`H&MBd2VA6kbYX`-SmmPNW zrt^n46SycQn_^UV{0)_;#eK$jKh(u$Tcj@L_u1#gRxq*sUTNi?2W&=; z74)CGg&#*(Q;iH$!)aCBPQ=Ia0vo#66865`Nu4-JJDF$+1@}$7w`X5uJMLLR(A&L~ z-=B|ZEh`2_QJ>)B1am`7BSiv9Z#35)uk1k^b(kmPNKWj1z)F?YkiFx-QO)XqTaNoI z(c=wxAJd|nY_O>Xl$;<7o`BMkWZ3>^T6KTrp&ZysyDq zJ~J%yxgoGhSL^-Kth@S@Wq!4Q@TnKr;(_I?CSJ$hE->$YwuZNbE3N4tQfkj z@i7@kf*Gk8)rY?e)DbOaQU7(e^1HWH?1Py#^wN)(76w+bu`+*5^;NoX2te!pWneXBhkmxEZ?fj_s^g% zPR?@2kTRC}-H}g_vt)0=%2)$OC(wJRVw1j>vnEZPU{tw^A4gRCB3a(=PnQqbDqkH| z#z-!#%$cM<_G&uayg5{U|Dl|9+3N`R z3(T0^j;HM38J?^7*^G_+T+Zk-N7(15d-4+yxJ^DXE{4X}widW(3;#0qVi2FBIN+az z*%_}G34JApcm&a{Ge-(NWocF_>$!-}b?>x7=r7A_`--Q@bEizF|K>(& zEh%EEhE4y_9I9^D;z$1V@NN0r&uY>>uP+U7xXK!rwT2(pK6y_(a-F^UZ4TG@XTHYd zI$PJS4YW=D%|GWYT}{+8U(BK>9L>ns!%C>nCuAL1>BHvEwuFW4o+W&F?*vZzegC7V^J9tnTf!{*aEBSexxmJ;{7QDZ zGfZ`54D(X{-mNlG+xpL-BW4a3JaB|JKnc%AI>R4l9Z7W^5n{ zBnwB5UpM?J@Mm{tM`%K0`9$c1YT2%;oQ+84J%mo)ltz@5Gb7#w=)l-VQZrs7aFbW1 z>={|WJ%%keRhF}BeEMnDfw#h^NL2W5IH5_) zi>GwtWI=&f;fe@_;@|9YO+d$KbZ^ic8Gi#{KT*MKP30%wgJ^=@W8uiL8ovtsQ+wpD zru0-8?e^rB;DPrQ6?KOu$tSXY5ED8~`(R!cGy0~6rd`i7yMO1|*?|O#OfuP8gDf^& zk3!K#-SgUKU3j)g^hEk$f2lw@@l`RtTISzZ>mHG7FGJ|i8GQw2i8NEL^z!R~Ds4xw!MLSfFqT5$& zRO5ZIAEtQx*~IC`r0x1~)QXHCnCanF`Yn~P&({N_S-O1D*6j<(_wj*r^Qj<$nI2Zp zk5fY0BoAnJus5Iokx@pj^9lCp9!3JQ z#D1b;v)S)o}NHwKo@~o;;2MLxkENt zS`x))VLNE*87aYsllZ`I*%HpJ#NNC!cR(I_S9c;E-fo}3EOAt#Lhs)>a?Lf8Ze3PS z&f*?s&K_{k@U(*gl;j-fbi4;i!5-z9^1LRIF~HA*W4(=*NN;a+fG2oZaUR ztBVdxm{VeJKB=kpNz!~y2(9xnSsh0CDwidd&N=$}3yd-(2Hp#Fh2( zGkqmQ&UXjHzY!88wPipJGv)g`urY1{FQwVk*};b}Lh z@fay#7K*+3wdl9W>LUB0^xk)4f$!p|M8(wMYsfE!n!eiAT6>>+d_L<6zA7IHvrz2K z=h5%fsBJ$FqX+ejw0IScN>td6t0M6;+-ZX$&9p=K`8a#l1$zDQlrRg$-n@^OY8R=U z+ne@0Qdf&tVLwr^WWZyx{>V_;*)U!1u26!J+6BJ!QA(JFVsCy;JxZU3`~zy!>xRI0 zv7e~u*zYxoIuS^Xw=L83`^TTM+Vc!ksiA~fDE8)am%hFy=Y7Z1ua4UUzKf$06``>* zsVI)53nI5_hX3Ku)f)4@2J>sYF$=}s3PtbC=VbSo@wDmCCIa8ZQHhFH%TAMJ&BN$~ z`B8G=FU~HmIz#W0LT}7Mu{WQ8e*6rX5+6!8B*zGR7e^&3a+FudO#1=!aMw!N>8~Xm zZ0!su<{b0JEEIe5%HqTO$jEmi>7E&d0^h|^iHe-kDe^|=>2!TftmgZd8|>(GE2uMV zD6J{ZV++q(!KH;uXpatg>>Z!^GiS<;OogI<`4l;jEA+p_YVfM-mpMsI{og84G3Mb# z5;m$I-M;>{K!ove;N#;Rz}BFB0ctL+R}X`2wfLlw0iRu<76GY}JfF zI%nZK;W+T5ahyk}P&7z%Q@i$#r|zlq2tL9WXDivSPYz(cXEeiEh&;2#y+o7MFNxOP z?x8lDmdSaN1%%b!D)3#*eYv7|TlU|H#ad6`TvYBVnrA)%gZ{Ud(Ca z8r@{lR$YDM`3--QLv*CTUNPAe6?v1I%5xR7=m%Dy{_rrDojlHKj5@%_}e@)lR*K8iTY2FC#$?^eYXtG21MjbF}{ z^`Capj%cxy1sc?aj|XE}<+9yusJ8*Q<;Spd1v}Y;!v^q;PT>mW^ej2#SbtjZ?hV2G z6Vu4yF~uy>%nH`bdcs-8`^l%&(cg#BthPqlRZ#_OT95;{)H7m5kp-+ko+Q#6OWu1aCtYBpuiAsFsU^eR zFwgwC$d*5~hlJKT*7y5uJu-{u@77&CQpQhvj6y3J&9#PS*&C&!AFEi!3TudNp`*?- z4)0Mf?hsF#^-q*BL&W@2d?q%N@ZcO{}PwmdkToyIn8k(lvkxUZvSlVbCo*?>2 zg5LQoFW4G#R@~tp9wYb5kBoTV+G-COQ%9UlClbgh?-dN`k43i#S!vvhMDuope}qq4s0P^dNzYQo7#c* zO;5HgyBRFI)(%X5y0I&!&7fSbJ$Q_C;~q;Jx6l~nCQ_}w9>JvXO)D$t@Y4yNx9rO> z_v4@QMQhbt7R;bG_w*o`0^(KOjjdp8UuPKZsH1~=2(x`G+47`HcJPEFbf_@n9zC-&)alVl^uYav8oUatm(H(b-Jd(c zyX!jMz9uh86R>D9^-13^&~v;me!uZ^{=F|b;4+<#I@^?Y?EQbPjyb;Qv48(e`F!Iz z>NKn!iN06PhBvW>IT}03>V7$U_1Fq_ZS5?j23Iou#@2BCKxcmBeU|Oi4D|`7mA$Lv z%?B%(=Ls8V{9G$xMk-QH5@IM19XN}29Z;<9^stTx=0-$_;D^;lf*B0<7t;msb2VKafITLmvpQlvE!|2qNADi%>a8?w%QWH z)2qFU?CoLnRSPILyyji`)ef%moWC{Qium{L^_h8u@(u!dGmon?UMXQLpBUoTswKm8 z(EY6vTw~m!d#o;N@-x+^`?vX1+sErPcon9OqGGDSUE;qfocect>Q!KB1r_`r`PJOU z4D&?n&HLOr9EP@Z^2&OQjF6-}3`@ha>mDt=9VO49u&Q0v);G>>~*fnB&e zztyTzKCkFmJAzl?2t|c`*G&Fq52uYJMlcJ-exjmi`!N!`JDkt?2^SQ2l}I^%d^}BJ z7DUnc*S`oP6|WlPWd#!Nz9~I@%8w(-`ve*197C@>+?;83PYFAsc$WflU&7Q;RIIsl ziab6siMI9rl7&}c7Ah)28t*4JN=?xIi4N}S}br; z?18=cRe11X^5kF?-F{|)+~|%H+H`h@g6!QAW{4uQT(o@wG38Wk?SNHY4R0$UR_zXd z6`LhY2k}n4Gll6IVmo&#{o1%F6R*M^qGHy&1tcgUmR|fU5v;&|m=yASpIJOBY+fY2 zIo^$6riWLxxxt@*rn*Dg%|-n4k$-OvNje)(k5z5*^1H5t2Z#9YN4+Eo(>hTRy5|^4 zoxwX==L`@CB=!>(HFrmne`90l2!3U`FPFboe(qqiBSONo4tw)!xc`0*Rv%6?c;M62l4y+QQLI zJ2YPjTfhazy=W_8T8F*)omWaLvfG5wj`OVr0*Rv%6%Evl=#%{&>7w`dmS&aosRUGDiBBHz#&T!%9H*ZYqu(v`n-rkrl zoiUU)ZMaGxkT@z)(ah%&X)NAc2_g|WKgL&`SVGGCO`L(ajGJd@~d*5C8zE>EX+xDvZq~B@gP|^nU7w%-sE}UfQ z*}P-cf}L#SsMBmNvw|=jSAF-8fqF&W>bds9=kMGmLJ~m0jhTjVn$%LBEsaKmD&7 z=MZ^t$y(BUb&PhS+f~*fk58sh9F!j1xy{hjiCh5gRl= zSQ34{@w|HM&n$M^*%BtoDeQS%CfnS`68y7Mm`Dd}&-0M8@)KyIH%0`n!fa7g%)c^| zy1ba_6?Uw%-1@CGoL2Lxg~8U;mrt3$)~z*MvaX;P_`G|w>E>|tyCu(hIp*RbKXa}} z|2PfN?ylrBsxDZ9$&@P+rjg4!++dE5O7Kd%!jGfa_j#7~PfKe5r=P$qF?AFbeVVk? zTFmH4y?TxyTMKWo0cumw@R>3_X53`uJCKII zDXiA zC}uQPyE$uPUpvyJ>yF6Dms6SDK~s2Iki_QM?PV%gQ|O*Oht2J@m-U;>`wJhO%RQP- z+opN_F@{#oJ1Ap@h}mKb&KCCs+QOw>Z*=i$Y*3)CXOFlkiNAj&<@Vv?14x=8iIy-pxR=u74^YP+u zkUafrAdQKHMkmLE2IoS4-mi z{?CThtnXMy2$e1+Z+DANzNTINaRgpn@5mc%=FH7I5SY$mF zRH;&>{X7G^uZIdc2Bk{Z`QIDOQ9+-WWBj$MTkuRhF=rYzvW}NAp~K|P^m7$Ux@Qgg z4qLe*v_oU<=0AgJ=ljv>NsI0=>99E%T+3#yeiyO!Dsz~BC7ZqEy^4FTGlvCDbXk*k zPnl^yg!iF)Om3+0ss%iI{HPwEGS*1@A4R zyOk5n?iI)?%=F$M)&+9Jh&e3YcPf09kxn-aOVk=DpjCdenyJRf5KXJvVqkJ zTB&Fx?@szp1=CY>d1T=iN63$FxzjoZp4z?jb6LB(mJo6>TQWy;g~VAx*787givf|; z*X@#wi6G{eA|0H(>7N`q#g{f|#b-&+)w0i=O@1C9Ellmf(|q_W(?9WYwmg}(Y#A(L zB8V$;MLMXQ>>%F@4xx)r-I6y3m9eA@2PnAJgy9Hr<*Y*Scl>8kv(AS;T2@4or{7_d z0?lCZtNrXNyTiObn8Cvq`&i%Cw^%Jc0q)7hef-s3xHd$d+c22A)X5d1!Zo}&Le6)c zzIaVInMkK@H4t(j4S8qE(x%QZbes=!;N5{EJ2}G`rH&`=37*5Jt4yQys~@WI|6s-S zt^9LY+Zm1;=oB^A^VH8G6KM8>{sgm0%q;OvoNSxxQ@1Vw^ynIUwIawBx_LT4pi^^p zd!j4!RXTvlvQ{jbx`9ioJq&HoihDFDi=e^Pjn#D=ugaN<%gmaCiRIc$?8A-AY|Bc3 zTIp9<8;dJ!$RY+kdtK!U@6);Jf@{<0hAXp#sBk2y$9SFo3TG&7t>%iMzx35BcE!_h zevfeLSS35Nz!BEn_G62!Dp>SV{%!Esk6$xXvXE|$aHNB7(%;6>CfYT{{pg(r8qJ!u z#q6vlufu9ILfR2m$XfVYK=!o}QgLb_OW^$iQ<_iY@AgFxhji1cJ)OQgpGfdtv&WXR zWqjXvY$U_a*!ZhEE4W)w^fa1(Xeq&wUvsbJ|Z9pKN_ z(F{NN;~kpnNtz8U;%I1M3c>qg1>T7h;Z2J)V+whX-(MjDNyUs5Q&m1E&a;!8IUXywZX8XQU6;&K*eYz_II(E^9%*&=OAh^NI6@;+(2_LG^0E$HhB zBlewO&-TgeUH5k2_V6UTyGhIBO`c%)=Op(C-R`8_agxvjcYb8!=jT_t-ejKqxxw|6 zA71!bIczq!G2X3j*#>w_ra&MqO~g3aa=VlP?8E40FovN37teojbI1*44Q0I^2*BitwX5Qfj>LD(ojJ zUQVq=lZX4$mh-4UQUx{kRy00ePO?ZKUAIkH z^!B}h1QS85?z+ng7QJ$ZMMHJDoHhN+$d-0v>0y&`f(PDLRE!U}LvFZ+(4coVf(KqD z(!u$^Q%FY^N4MYI7ckB+U0jMV8qpGOa9u#wUAfzVjn|qV#}g%3Bhq zb$BN}TlVD!VmfRJHJ(@`5J>DHD)e9ak#=XM(W@cOa>G4Vkn)~S0r$8fVOod1`ETw0 zA!O#wY4rClCxJlXs6<8o?Q==yhB!L&fVpg+Vg+ljxI=J6wuEUN_U8GC#v{o5k<;mk zh_3>H#8HWgnHMsN=648H4vUbNY~sf;%N?doIwfJghrM}6hqSpQ=U^PKoHP{(B#uf{ zyeK(N8gee0UpH1hwSgapr#sw=J1k)$h`o7#YM#saA$kJ6Q#@ZFkT@z);gPbNcsNJV z@2v*Qo%w6^^P?Ngn6_KOL=b!P`;Vk_;_MYp;}(Pp%o0Z>Dwc-tAPsz`(B@%{)Hy$_ zVCQ2u-UBB^!aNasD-@2q4w0sFC(~{xmI#y+MGl;b_8=nylPmD71XtN2j3w&X8EpnI!Vl$L`#B~s4w#_;x^;mVSQ4fgo&W2 z7@T{F1n}8_0hd+?loR`j3hTt>w1Tv1XITBiL&8K5d-DpnK6A-p&Xy7@+X|EuM%8@ox0LfmkqSZ zD|yc`eytwX*+RlZ5PS1_gF3t`@SuUT_2>5j<-}2mifrpP)c<8~dV52CjqgG$cyH_s zDPxQ!Oa!qv&nZ$iq;@%eH13n3Ksj+#qT;oeF_k|KqB8;o@uv1jiY+tXAQ~ioglx$NZNnb3KSJi zaQ@aC&Hz068EN}{QPYcWZ_1yy9b;!6D&f)S=IqddW2}r{zTE*Tf6qE z6+Qc|2bnbc3>%qb3ef5SU6_1^J##h%>tIjsH?_{O{dLTMwd=w?#speu$5`~Hr>`IE zcKvEDn|i?kMjz_H$|`bMYA&DetLn;H4a{d!fFt}X*7aySUErZz`_hA!7>|;1H^iih z!)!wnGawn082mZN<~f+cJogx`2wS>Jj-DMsea0;3&nQl^Cgv7!hG)=i)t+QW`Q+Y% zUfbExo~PLjJ$^UQb30cIUHnC}dF~8)@w+qG{WXi3kG6!BoO0$xX0k>-EFm#*Bg3?f zPp~(+Aiwntr|CY<1hY^-_Y*8Ww+&4CyMzQeg-|4 z4V6DNvZJrYb`w}1rgdUelj;>_@4aJ0+wUE&J)dx%ZSUU=!V1r@14WsP81cCcF=v>^ zxbuuO?g~V$BdH?_@5<9R528&gZxYPgaAooAvqj86V+n@yoAB@U3zw?M?~t+dz=hr< z=AAX{8SDn%mzXnrz1!!w6(n4CgBCRw+#~Z`vgWyB7=4#iU)zY+XU}PF2XW88O8Fio zY>T}eTxt64KU6Jvj7$$5YRa-meh5F^NB&v-1-YqTq5qoB% z0#&nX^k>CGHm#cq=6Ak9t0q5U$(-I=Uv%bYaKG08*}t_DjdJL$^}L(QUh~hy;cX`+ zeAaII=QE>Pd_K;Gle$;eW3xO;9!(41=F2!&$-GH5J9UjSt6wgxFP|mlpmu_){<^%S z<6*w?(5MMC@lh^u-c`m9+;V{8&7)aZlc&s^cig}SAyr#O?DDXcXBX4EO zb5%Yxe^zZR_Q=Y8!hHU5kB8SK?59vT-KZ~ju}Y+qpU125lx#c~TbzZxV=!p$ABdrD z%8KQkELvDkZ3z9-x`Y6g5#ruVs(?Z9A;IZTcy<>$P^s5f5i*Cx@l z2e;LjC*ce_Os05`U&%@4?h9-XzF+h(vwy6Q#8lWhC6Q*7xp4?b7%G*dp#U=ayzVQ*XA{rT8q`r4z) z5!!Ly_Qb*^n~j_Oo&~?LXBT}nY@gSAcE-nrHS3YZvSxf>XQOq~%)bQg^jfxf5*-$F zn(RDO7Y_971k_u_)ES0gdaolyW!bY`cMYLCbb@KFx_r2sCcR0*;IVX6muk6Tv@vXK z&Zlj<-eaaF#xU@-EA$TMIp}v z+eaKBI(8t#v`wL~-s!Bpe9Dtg$eTlU_PWPZ2h8BizRRrcynC#2xH;s7Utj@&#q0{7 ze6%R~B9Cf8-;L_2uaaozfztm)w-qudd9Ip419{8u1iClfQO2wXcPYU6cl>czlZ{DEXFEtM`1$8N3p|&`Le(vyebG6th-mkMw00j)8^37E`>Xvwxxv41 zB9j^O`wht`pUHYC7E-;JzEgAK(N@kx{3b zTQxnJcT6N70l86Dr8EvBC7po@n!(e*Oa!WQ| zg;|!Uc>C`e@tqt@LsY%I#!Rw?pSRthQMrO)wuHSot-bMqR91|qukOtkvh=W@sJOc2 z7fCJ|MSl-)BA6#(k7hB}u>Z3gm|6Vb-wd1N=OiH@kUshQT8&rX2t~!jSzpPJXn(r@ zsJGyOS5=2v!_)TeP&xAh_pox*qmhxrsB*zDf|(VL@Yy(P_?O@gXR4la#pupI$jmJx z>2vq~f(PDLRFoM%A(|CI^dX<3jmZ}Fdlh62do$hP#CTnn-n%Y(w8M#E^uWSFLR5HP zQE~0|1=9E3MB4NHH}%H}*3jt*=RW7|Ntkkpituhvh^lG=UF^S3jaT6aMa8(bnIvR* zG;LP$JG&3>6J=HC4i-;uN|QNlS9fqv*5aDuLW#KT#3(<2(u9Hj%b}=`5G? zGc{|cJJfl0S;CYHd-Er8lQT%y+Yz*Lm5o5|a8#n=dbby(<*@+z?RcnM#Gmvv^>Bwi zlg~<+a$#@YTjXgbInX|WUT9_}kUJcesEFA5iWnva(CqSY0*AvM*qe8PepNs|t`DNw z*L>yWW2~W0p&Q7p4@;O?iHa-xUz4!s{`C8f2?B@1Bu!K_ZJ9-eU!O=Hwp7WN0{FXR zj~lFRw_C!@3VZX}PHu%HRt}=8FZU8S9F9s!4qBT6a1dhkyCd^GSQuM=G9nAG+Hzrr4(Vnx(dvbwtq zz0%i8YsTNZofkX7myfL_%zCgl_t5J@>dC&;*QSZUuW(eN;$c1Bg;wiFXILi4nDt=4 zPPQs|$NSJP|7*_QCB2q3p#5!!(gi9*fnVXMu$n*fA|cxBv_iFe!b92T$9p#8q7$t9 zRhM^=d(S%kc7!Lt>oV_}cdT!@6Bvy$=D+75h3#lp15fJT&s>&lZK2TJ74m}?NOOme`tkT(<(fj@4}M zep4pZv4YwO)y$=??vB2BY?(Z_M=<@};JJE&M+R%u&=z_ZIqO?Pq;Ym_gY!UB1uJ z4tiSm&OPX}Dc6YXpTUOpu!i4%hqI_#r`XP`R*+XYoHZYt!7?UW!Ra+)xMKC#V{&E9 zM7pE4pZudvHme)TXZY3KbW&!nUMy-A(Z*-U@EB^)B_nZtxkwsIZ+ zH(SpzZR5G;XWwZGji=I`8y6A03iC2ip)wmHA38OOj#{vW9Pd@cG*j(idvFK~`+Ap^ zwzr3G{vm8z^J2E3qdlbDoXB6R%tI~dvhBXK%cfiE+BY2_dn*4Nd{D96qmIyy-$xbC za9}OxIzrtVM~L`o%@xZRFP0mPv!>e1U9puq9Xs;3$+igF-dIrOg>Um#XRfSKvMD<2|o>Qt*vHv*Vw?P z7rL3O#a=D7s>RlH=bOLs*Lmrzx<2oKIqs)~XKdR9oMcshIK`{4>sb@>?}t3C&tR&@ zXF*_k=I2$&>b$Xl)_tv|U9*arC$AoAy;#K+nKrBC>fT^>QHb-Z9gxEaLQ$!>j+jF6~oyOBJncma!a1=HIZK2d?_1O;o{zX zV!yr(?HXwN%^gbr)QR%K{rc+UJ!SPjSwPOUOG58H&Pxt7k_UbrO0#)iOWdyycN7#W za@Vd~qVc#eiSBkt7cx>d)_=-Lp(ErD9LX@BQz%MW8EZdw7)D#xPw~Q$+#JI1&v`et z0r~%ps@BOda@M2KH2PJwj7i$ip?u11J6m}7`@dA}tAB5KQv|C6o)#%PR)x{y zDd|E~BMW%<#TZ-YXi*^H2o;LBQ}^V(X^h%D`a?SE%Pjqc62eU4+12_oEAOa;gz%Yc z!N?pofY+b&Up13^c;p&u`;`09g|JiIp|pan_+kk;d6yV|t#Gvbef7PqT=r@z^{YEZ z$Zo?#5YLFYq1C`^v69?5X7l@1N%}?}7DUucZSly`9UNN7RECy&YlB zpnM)x>v6ec!kZ8}dP`f9ouAJl_=N68J$JDOL3ylKP#duCv6Cf+<*_m9Ht_NCF0Qan zv7qZVoh7!HJ+Eh6n8g?IAV9jL1xyvIuA#PefmX;F~8zNCWX z^RB(dyuYLyr-Qjn3A1NjU>1>8Y~goHNVd~uP44VdguPYhd?gcv#`iYskgplZ#FWI<*pV|L< za&$OQS9UR(E8pb`yh`uz3-+}9f2%~rE2DMlO?oqEvx5UMmAXq z`V}m5sS`Y`=)ejVRkGL{PEhcngFx{Viu21nwcBR4rRT4AAvm9Q)}%ra>lb z#jEBB#0y6yDxO}+AlrvTQLmfd)R-q>kI$P`;5FY3KAx@NR~gz@{K~i{l(t-INAM~f zp{Tg5ca=nh@_u9w`w`5OuwVQ}6&%fQ1M`+Tesya`23emLL4WSHCwLX!S5$0`_)c22 z7)8@A_9vJpVZS{c`F)hWJ9OEqBVJE!t`TExIBovzry8%q`-+Ov*M@X!o53_AxgWs{ z3H!ZsRKZg(cS!&CgnM*9Q9~xQ3ZVN^tc0lWzM`VeeIwfQ-cb7baHT-JuwNG!71)h) zhok}bxJTS&Bf6w&D1D@?RO3~6Us18FSdTv09Y6>9x9hgVNd<<1?(lfUO$qZPQIV-{ zM4LH`pr>c%35*O=E>TgF`GNTGoV)Kn#&Q>D72M!#vS!z13G*cE&97cv`S1AcQ8fFA zmB7ewRH9FC3Mq7^C79xhp18 zh5y>DMGh)x)Y}d8D|ShkCt+`X9Om_@Y1$CFeqwWhc;To-h2qQ+GI&S~^*XUz;8)mV zB0oQ{h!NEmdG}!VRWXEaXwOy#1Xd#*L+WFC=REDOIp}n;V?2J4?a@N>uFI zA(M}zqG;F7&H^LDexl+~X$i4!ForIRnI|_jQ^C5vZg9?eqJ)_h_U5ylX1*Y2_zWJq zt}6tphNBV{M!s6oGrcF>I9s7z*jfem7P*44dbors7xq>tw%f~OI`pEq>xfhhM~{ufe$|dvZgkdS7KSMo z_Esq7Z&^b&{_&&}-q;J|4o4*_ZdtUX$Cxj@`~8Rd{WE*`#U~RQR_n2-qYlu)&l%Qr zsLf{7cLYndGu*uVm%kG&N+s=E)c9HyU$@obtSoVtBV-TPRe&D0uGSa_^K6mmnOUcP zUS!pLHsDuZ6K4JUB5Tb1A4Q!qV<}56GygC40E2bcJ{8xm$fLiGrH}V-knz?1q|9e* z!xbfrn{k0fe5ht~+biLvQg=mWS+q*N6mCNotnH}%YR8w;qo zl_h;YaGCW>X$^rzC-`v~kC(mX_M1)H`>#^BJ)X^c4_boF-!<&gSYF3>+!AKjTFWp& z;>Yp*i#&YaSekYvLo;LhDR%0T4b-nTWy;N`nAcO@_hq03tFFpmb9jB6VMAS)n^qkX z<wrrEVp_y~;CsDTHq8dkn$&?t?*|LMOdxRs^ zj&RY2ugzo6W|)IZSgI5_>ISo#Zw@BJX5A2uZ z2#wafk>*U~cNN_o!7s5=QZM+xDi(9L)ufVpoc=yQ{xtA6nY3kuz^^cY!VxMIfr}bx zFZJ$7j|4xE;}4!<$Kq_@b94*l;+Vk6>W_s?wl^-N_Z z{!HNhVCl;)v+MkG^Rl8fS7f9+YpV;@)G%V3*Rqc3EPOHlUhHJgx{-8tdVvaFu61Ue znw(@VV{O3H-kvL#KiaA;E(oIk)X!w>j-&d<>6fd*0eU{sF|x4Uk7dw|q}%Urkw+YS z#0tJE;b2;%G{Uo#Js)EQzk5Xqb0PS1g91r2f3^#~bJE8NY`xZ{HJWmXA9V= z(lSiH#0eGq8b8rg?2e#2d*;YE5=^dPub?>3{~zQ&Q}+ZkOa)dTlrH%N|u#^&YMgVuF<-s7ukHmkZG zygKQ|tI4bRIUn%ol5E5~0@Yg;BIEvf&GtNGr?iMXgEwbXjY6f$3-&YqG$yT>w>Ay2=WxIi8Y#i@f`QmGo zw7O3j8)IY*k-uk4IID-}Z12g`Sn5xwPfQ{OkKKdH*x%LG;Ay*7@Z;Zb6`wWk^Ao9S zt92T@FOEd?*c$3ZuI&eHbvFxbo0V;$K@WXcZLE+!PxXZD{q(`_R4plav?sL6*8@MP z0Y47E^O@Pxrq87MBZ-V7S^T)1!3JwkwEAyU`a5cC?Z~A&i)+k@pn{!Hs*~lIlS||+-Af_R`|dM&MiG7865w_ zhDF-K!Gmd1%z#f!vEK&9Tu9@J?#brzw{|nB`MpmXOowo070&VG-_(YGy5??9qB;4+ z>e7c5EbWFPY+uw z!O#8dY)vb8l%gY${odY@i!B4R&zf(S-8Md9o8S|3`CBb*Y+TC7*w5_C;c_XzO&O~i z^ofn`TFQ^3z5Z+B8X81j`OnMFGPZ%m-(10>X;X&zjL2kYTp>AJ7)C9(gF3^2Pwz0~ zS$d}%FwA7|P6|cY-&bTJ_n3HKp^zJeJw(Ne%U8&jJ`?GNVXxJgyPr_CeAy?DRyKAqKn^=-hcyBoZyW56(n5fx2FULr4e zkN7{^LIk#iBNP>JWlKqM&@{R^Mw$KouL=U08_eIWV3^5ZZ-v50e;!%4HJ*N2K1EWln3kAXZVn57hIBy?NO!5pu>GX?bYD_#ZVe$FSuau9t!4MxElbQXb zA+@j`L@(;KAediZb^jU_MDy>&sS9+3W&P43l5i)C{+W{Ng;(KyMa2<63+fTrlUAK7 zR%2#?{c3;Y-<4O~z^Sm9dz{g4M7J6F(Ut8z)p!-&S5&xZ&8S~hU)uCX^8ayl=5aOr z(f_}+NGdIs_I=;U61wwl&QZ1`WG_pyCA)+uYf40xvSf|yQpi$wCZa?|*+L}>*(qzb z-}`>Qzu)8cp3i?hc)#YHnLGE+%yZ6p9UlX_t>d@cF+{(NXZeLxk=$rT+Q$u`b!6qe z*;Qj#0XumU|2e~9)+ zl}8Es?_Xnr_aqHpU3Z&cll(4oBz4tgY^A8OF!7ylx#n#=c33IqTBk2 zgyOJSNfouZS)B3fS!8!~JC0=}Y>ZotHhAB~9W#HX(K9jQNj8@@WfrMQ(c#!tY=%FRHmr>#-+!)k0`eV&h2_OXp~lEr0ux8!CqcPx@ph&`OtW z#xr=9s<5$T^flQBPUOar9`-9Fq=?N*s`&g-m&`ojNRFoe5q8pFhVYB7SlVL*&r%gO zHoX_EYDJ8)dJ*R#9|U$4o0U}I-RdsaJRZofPcm`OOX>ndSw{6w;907|#-`8bw>60F z4QpbzQAa|G*mzRKGWl`tmzOt5FfbK82iRg%p))S-<-xO5g^f+$O^g<}NbN4)Qb9{Y41yq8*F zV#5~SS%(T?u(1X1Jdi@)*SZ(a5eDW)lfEws6r@u&Oxj|O2L^9|r8CY#8J!xsE@~s( zIFtji=gjenOA^hh?WhF#t+jc=`<=7IIzN59`TH&0=>N}0*GC^SZQlLQo66$>`k3YP zzkkbQeh0dfH#fSFM~+_=2h&~g)G9}8|FS)p(B9Ee*$y~tX&1F zV{EW+$XWuks-U5ox~b%t`m&u*)WzJ-R5U*TvTfT@XwiLTCR_53v%j5p+NN-uINB!&nlX_C!&5A|Ki% zT42_tO|WX*Wq6lL=ki|N1T5F0v&k!ReEMs}k*8;mE7(;mXOb$8dOi?dd<`TnzwQd% zFb~dku)|l6Rba}kd!L#V=FZDoF1 z%wXb}WGJ#VX;vj=kTlE=J9;=!5fcxxYDP z(7w%SHRoZjF3luyAEZ(zFq=u{csywzjj=I5QIKWLC#QLLF8V|zXzX&p9~(o#&$*k$3EbFQGR|69-P-l(9|K&be6BWXN&~Wmxd5yr^>L9L}M!$o>f8^|{;!{uI$Qg5-y|oCW z3UkwcK3AQV6Wc=_xGJAoxO2e?ufzob%bD1U3+ndvaFfucK9X!2yGp{Z*4(azwxS(o z>OSFFmPMZ+2RszI+#X3*oINA3t5^ahRZP>+7Pq^OAT!QRR?SX9S!Br+?c45OD0DNSSDdUQuA^5O^s+L-p7b|m`=MJ<5O0WnDHmYLnlfnn z#1QA}D2dly{juDmv?WCI;wm|t$-#9K2vV^d7lmHQa?M^;f-}`qVo-UEm7=?nnbEr zeG=G?Ro3@js&Jj(MzK&Qn#ejxJKREPm7WiMBkKBeAJ2BX(eujuz2e8`Xi}FtNnjZn zOYvANLgflQgU3KG)=L>9_Xy`b2@9jLuFd*|YT}{H5NFS3H%q z&eev8^M|ioK&BkuBcW>Sen^k*PG3Xuu-9O6_-u@Pf71)dqCVK$7u*?5dspA48uD|GP@6P)t}Zg7`+Rmw8$-?R+(i{b`S@ZzPi4_0_ON zbU>9)2}Ite2HbzsYwe~E)GgGcP@VW*b0;PFt;AVREYZTz8GGp*@O7r${JUwFX;&`F zS2{l`;(!V%o;Hr$h*wwKD7VFcO>Ve$jW)21j6EW>I$BY{ow^%IK1L6cus)X7Nfj!c zwaLRD!$@d@8ppCQHbyCpeK*Su^*xm2PA@@~^h_8-qU=f~G1v^HiZx4RcVGEFDypA0i5n11Ape}4UBzx!s^}>%;nYJTNC};C?0VG}XMJ?T z3(I7{QZ=dK_3eM$?YvMjr#L{u`dC^gRZO~`&2_JzO{Sj~tcP255bl_ON$Hv<%+Tv+SKebMOq%kgU%jWug ziX`Zh7Yj^+!!-SOeGmpse*qzVho3tVNZ+2pkSc{#g^ z%}}cNC~r-|!b8Y|qRx3oa&7Sq?~VgKYI&CRv9V>cXO7>wjiwWcOZaskb`={>s#x34 zhG?EeV&1nvVL@k6+ncy!ZQuJm%lFvW)ZuS$YtrlCIAZJUD`!`+@uZ3ehF(Ooe-C1_ zZ=s^(lr7fjx?}H6r98{`*w}QU=WII?HXO;$s1*`s$;Oi^@^pKX(?8wF{xi1}Te57? z^MxBO%_!tqzQ@L<{Hn7T(WY4)T^=Q2mTXp1g@HCi@Q{9PmpWZ}$)e#BhWV2$k zrB}831}>tRkaxmQ!F`-PHm;_0pmT;V>$xrU*-j|-kqKVzjdSc`SWp~Z5{3b3@YXVvJsujl)L6$&T&|`Qn-wo|kmCW*H z!9XH=@_{>kutb=+!V^{Jn`5_(^}PQ@4{Y#QjJpaG@^-%McPfCW+`V^v6)B}3odpfe=h`*@6+}u*seB~ z2uc<6CblI$A4iev#iE3AvKdMh8lGK=Np}xohU00cf-N2!NnN=fEa6!q$i|k*6onnh zipznd>B&wBc`qWHWIzI3t0a_@%}T1+ zWZBH+Rs<1C`(r{gJyyF{xnMp$5m_S0#-@CCiz$&EbRb@%>IHTco0U}2GpmH#uh)aj z(CH{)maLkMO`UW;=@J9g;iTa_mp8-QfqLT5Iio|(VT6YR_T1!xn%Avi1-(-utzGa( zit_tW?b%*@sojfkmu_=x&)~2JXCdFs3f=mI{HK2~e_$?m(9nVy9qB5D1AU*l?-`_ANKY*P4HQw?FNU8Rt##P(mx-^jHu4HOUlppBX5>wTdjE{f%}c;t+~c zLrbB>*%YU19OYT3AzPPnxctZzbF%-ZHfr4fq2Cf4q7lW3>?$@BsUr1xCvMTHY2^CI zQm(E}3op#;j**-@XkBcFJ5##jj=Szq3tG6PZFihf)s-IILB%V%9gjK@KD@73PVesC zM46yU*+~*j`|m#0nqYm~b3}2|7Ug~DTmUmSN>aZ(Ea8@Hn@(&WXmk5QZo!@pW*8K= z19X$iz;QACd-x9MY+nj*>AyG1Q)!Ir_k)D&Y$wt%%UiM^?2%^oiMkFQ)fWo_8@UF- zUEGwD3-?}`V?{wD&u_j6M-NzH=JB_Daw~B?7od>~ z=V-+i-x+|dDU;Tbm3HebAM-Jm=qnB=)UEPBC&mI#Qwl7hkqpa}$r5h9RctMvK}=O| z2->|%A%fNj4o+8vUPWc_Q`-?s52%6;{o66c0Z;17=$`M^c`OV%Xhxo&a}p1K%!m3I zz{ej8;Nc(vw)_U{@vi{b>Lf~Qr`{AqQ+x7oj=kvKoDaIxcka3TIX}cPAF}8KxJ}#M z@;dVcu%@1b%Z#4WJwHq*ckMnjnj8gwEwG=}{&T9=VH zmh8J4BWEcfO9xrsYFbr1a*c3p#8hIed5&W@Rs1DyfeXAfxYDuADK9_;O}yXeu~)4zupc;XrN_f0#J7Tp?)R@>u*CDIx= zwl$2$G$uUe>*4aA=9UdH0zTJm4QpiTr)pm?u94tq1g&Q&D_YZ>RkhIudFbq zJb`D~qDR&)ee zdGCxQ#!a3w%hA^8NNaJ}crw`qc}LNhvc5H^%Oo9#EbC*t52@3X?_FWH?-XKl%~`@M zS?VawO8cvyxIfB@gxpyxKX^a^%g!O*n|U1+w-hkt47E}`RSeTa0oI50rGCZAqdTwY znK0mID5)AcOTzltDm0e+(P;%YT6|>N<4CV~Kl$RKr;s7idQsH?U}>b3K!)CZE74Kdw^X5NjIlUaZnD2%&c`{sGw3P0-Ck6zslgnDyZOM< zNVeyXzPo!d6nvq~i@!n|Me z$<*FkxpVK!=xh-qt&%}R|L7-(S^Hp zzZ~=y7~!@0^R!d;|IlOF#2=Yxd>OmMfKl9gd>vr{fBs!tPKznuPq`s zjJt8x8qcXax-;$Ae2cT3gqP8tQCUWQwj!2nyIdrxBV%K*orrYi{aHg{ z=7y!D^#Wav-7cFU%jBq^{)=Lt4wNT;S)C%VM35zrQp(vE*2y>e#gT-H4stdV_E<@? z3O_|V6t>MJ<7al~{M7AmA3Z)#ZuvvQT07iTOop*U6;Kqk4gzN6pTuzW(zrbf%U4=Lac&MSGVe3a9@pBpw%QzZE0D82oGi0!+)xkdr=9UeSZ}JBu6tH!b)5Dn z=F2#C6`P?{VLl^HIKDc9BwpVyu>O*2yI;b@zs`8RjT=<$dI?8%I%E1=M;c?`QEhI^ zy!qs7$TrE*WshhkGcks`S^YKQ1lLeIN?} zJL37wt~f|T=|a08kC0-$CeHutd!ZX8IIp!W@we(+ez3PYF7&p-s`e}SuvhN*-i%ge zzfe}OPQgpu-ptvgQ;)``RtAbZp)FUh;hnLn9Mw(HnQC@1@LFIBW&Uc;rtOeJl0 zqgWnIOqGm&O1m0e&Ptdio1s+U`_7OQh6RxHQM(maXud56-SA_24bSpDHa4AP z7S@(v>(N9xReA-Q!ul$Ht}}jsAvYPR{^h z^XjIAS+ZG474tmhMKvb)!K;nW&Ce5mb)kr}smmhZ8#X-{>SEonNAM346E$M@=M|>p%tCBxY)&ypEI=rx~7`pj~N4~V(B<%u|}&ivFh-K zJM^>#YJXFd~w_vND zCI0IY50~n0!u~8vTpGRxo~|u{<~r)kJusdshU~K-*5m!i>$|Fg|5EykJj?|r`VZ$> zlC~qp4ogU#e6Dzljm+YgBOdZ!`Q}MqkK=t6-3&1$xdBAz_FrcHU!- zFX+EhkCd@n(9NQb}*ZL&{(WwGE#bBtv`VwBzNdixTl|7>avifkH6iewG z-ji~>%t9zKqg*{A6)rVj2NO!Bvc{*v&FR-*xvd5EwO4jda*N``jyKct<3nQQ2XjwC zyk9R&e)uOlDnom54laJ zv`P5Oo)Xr_@;#|y;*>0|4Ru^J+xuGXwc#dMOf|=w`6=+mq7>AAnqiM0TcIMe4DQ@F z!*>T#=ze$%v=k#VdXdi;ws433+<|Vp%&;KJn=gG*0ljC^+QAfiUQg=|lAjZPB;xgT1RayUo-KHJ9+ z_s_oryXF@_=|4a8#&Wvn`={BH?r}iwrL4@~X6%F3v8L$gm%nx5?1dyhWB?@-t z-1)Wlp&hZn@Np5ml=bPCWC`QqMw1gB72Hy-3ivw25r;nymJmpmOwt<2uU0~3n{LEn zUKcU>$Q9`G&jedEa`@DZS75slCCwf3csH{`@H8;RrV+{xY4Nt~?ZwK)!%5xVc=^GY8o1Zh9R25Bkq}6hOv+><3;l)R7ITPK z)J|c+`6n z#S+divU@GGdhdi&4)z0N2q0ui$7sJS;WG zyu`~?(Leo+@Tv1$Qj%b-_(i=10>AacmHN^|CN!U8LAn9}P$fUJu-X7*c zRp>M_bbP5~HU~S8Lz>l(tiB|Dr78Js2Z9sYW6Ug9{1KnZe>-T8p8H);_H!eDzlA<6 z&2dH7O-lFHzahqAw4X2ea3)bQ7kN=&CKwDb#8TN(9I52HqyNlOph*l# zbm0WHH<+!U97idR8+Fv)rIScwXr3-pkeiFivB6^{b(X9*nN-oEeObQ8fd%CGd1+-P z%j8(KOxDupHuqxrWa3yF!VNq`35&BUemZIoZ!+nGm^6CFy4(@EQ-9Wjny$FyoAQ0_ zWKk|0;g^ubIvU*5W6xpQKX;rgW|PAfFJOcV^-~XdN3QBOz>r}c|F`BYMj;ojQpGoI z4US#4)3E_22mkLXsRGtq=ZtD*lBzR(<+ijgqw=pSu6V8iEH9~{bJ5#3xnd|$lDk)D zuW`%NBFXxQ{t{BevL2~obwWPZhfbDzZ@XWjVB<|5VULq+-SG3+)-=Y9K@Yjf{il+E ziA{2rs<2r}6@Oa&;-UwIkcVfrIhK*I>I=i|u~U#6I-UGZKl9PIYq`VyrjXig`H~py zcBP8VFaB_b+;}oJ^0-exustrNH4~R!ec)L}B2|=Cw{UCPPaxX@p7^k<*bJqLZehBl zdCpKW`N0dtyFvCC)!hw)^)FWK=Q0maMSHgYRtfUI74$frM_dev@UmXd>VPmkd zWilH*Ym&H_kmbVygq;EQ_-2AD26ei{v&2KHSlix{+-mk9fkAU56o=(7QpML#>SWKq z!K9`xNoYl5T>ImKi&U@jEb(At%VY&A#^h&iFOubULPBxatfY#<0bU}twIG+AT!e7f zN_a5J91Wkw^XZ!RV8%cTG;F($XYaM>JIF(HBAeZClHZ~suv~=Aip^FgYqhyVF;9pk zM)vkTB&Q1EUpk@fb5}T6NoxvOlT(X+%01^_5&d z*lUKAuq-`fL`vWFCp$iyadXg)I+3_xdip-TBYnEBIOU27v4{DyVfJVr?uw@0_S39Z z8}0BpSKNy{*7X!ORXm535L28_r}Yj9ZGaoLrZ{bO4m4WUL&yvh9QpVRJyt{L6f^Jc zKxBuODA?#M(UDRdmE7~f(#qN7*XE^)i~sJxlT%K3aR7o!QYCOdo$%NQglmbF;6^`L z-ABrIERkz3aG*MkEUI3}xqj5g$Md@3^UaQ6*+n0x?&^la_B+GZN&3`%rW?Mq_n?Xt z*vwu2GnCtt;0d6J4~mid#O?qb zPYM#X#Nosqv7Zxu8sW;bd`3!G;<|KKEcS^ax9n0l&#ad)y|*(ax+1i)djV-(oH2`5 z`I}#O3Ek*-#WcPj-SbDrHHxmA<`Os8OpaYO%=raOs-V*r=_;vW%eoY9-JFG_EHPWo zzBy*O#zp$Hs+@PI6&gZglvQ+6BrWbk{_4AnQ|R^FI>8j-j-4+{BiNct+WY#*g^SQx zO47$^a4Z*TD;l9<1of&;4goeEb^qSnLE)BcNn+jlNq7kxgN;q6l5|WI?(dfq_dGL^ zeb#3ylB88gCYA35bxS|eB74TY9U;Q|*S2^reKZ(Se$iRg7F}nJhCayxbkniLQNNXY z?v>I>oU}!cJoh$`und(uw1#PfH7-8*N5VB|f0WIAMO&*_GF84*zHszqm_zH90^TM7 z%TA=cWU`@}=o-)#D;_jds;``=J<)C)sZUEss<-w;5V?2$umG^<%d zvjyWfBgmFvkGbdDE8!xg}7eG-Wumpmw7Lry78NHYxFQgx|c533R|$~VJTBb6P}72ijRZLAh@pND ztL9ewgp+TY?KyT;Deb^Mi?qJE!a-8^OrIeC*b=o+AloA^$-j1`Riq})sL^UV@7v80 zS5KtghWkhHUPBzPm7OyNZx~5G^Rx@cxx~HUV(Qsloc1|OeA%S|{!BBJOo?Hq$I$z$ z7ETyryNFylPrH{H-!YasB=D0fQI6YRbk97o(2g}HNvPHqVh_Uh5S%j34?T=K(19@IHUUuOH4QEL623} zbSu)PxGiaF))9l&x#BzeKjAmV@rTB_p@*g=uGkRDdmM7b^#+z0Vn38BY?JiF&7MKz zG5l3zL>0o~A^os(@*U7`x(c0t_~XMl1{bQI;*&I+VEHZT@#S@x#&BuXmRw94MUK`d$yrjsvJ5v< z2h=~}iZdLPEF)%z4!NB=oGhA@DIqK;WDZ!9myt<5^O`#->%p-&BcF z>1cAc)f)-@V6&1cUd6X3UPXbVzPPu9Ww0^W*wjb(YDY5jSbwq`M+kKt=}Z}YR}@n3 z@+>KkDoi!h$sENh&CO`*V8!p1sMl&;9I{sIzKvM^bdDKe@YWq=aR#F{BEo zp>E>j=w2l0fU4wf$@gR>+?{BSzyHPXEKQ)U5m_=~y?H2Ej>!_1!Dhu~OG!}|UDCJf zaB{vxE@ufHdnU5yG3_3h9l_0-H;vR?zsPNiX^U&Jd*Fqx(wVjFEL%zqo^2HF9qz_y z-I_;!4}JsI*KAO0lsm8Y_${P8vcYW^yYRJzZ{UFybrc-wLeJgw?p^x~`4&rd+g_9> zuPT7i`z^4GLlX4;EW>xpLh%0I%6aKMh%f)%zu45j-<8x$sf9|018)H zVASbNQ20lHNy{xTGJ6voDimQCy~_;xs(hDfvA>2J={c2*9lu)6dQGM+p$^(P&X}#} zEAgGAG-}je#aG=3GAr~t*Q&lPF4A_v{_n<75019j-r5CgbjE^_L0hc9;f&uSLTL%s zAehkD7H}vWEh88RRWZvEBB%E*2CH6aph@tn&AYuod8Fu`R#22M{ z!fnVdv&LcP@6fF7Sxr-v&s;`^CRuVROSV}yEmdTXv?5Kz z{mGDPLnYVqR8E?{3dlvGqS{(5F6#Co_OX+@ed9hH~(PaUN$r;S8KJ*9T{ax|d zP9DCfwm|-67fc-*zjKUXPRp07>DPoA58n!-Tjm`8O@R7%A2*a$gPxV#s zX{UyseXVfbxhquB^;vYD!<;zMrgoho;!!(HTJM43{xwjf-wq!p(z%WOYM}0RI}A_r zz|SSMRI%)^HSw{~CvP0o#91dCaNbxaJi6VFAF|K^2W)Xf%S)`7@=bftU# z>s~98lzM~PxVEp@?HtXu)C^aZfbX6yHpsP@;$+`XaT|saPuelk$-)6$T+PvH z=0RV!w7$`gAAb|%&i1Ig-iM=qKAM!(+Vj4i8Fz$nlei{Ch5+d*w5 z^Izz1;*7oAOdLY?O#COjqgQ&_95cL{A1&!*Wn;@^S8tx;Dhvh^ov*D$mc6i9Nflos z*Ks|)yOYVs9K@*g4*2(@3Bq6#UzVz{vFW>_PVro5T6co$93`Cbxxcw?lI}CM)`aauqvvkxzly*|%Zc@YPI9+lm!V*-1>QIo4=kTa zt%8923p~?I_iXxTkOlaV#s7F>)c4hWG|9`ce14Gm+jkSXKKo1#@lm+ zhhry__`Jhh%H~QKkm`iLy9Yp=Y6bMCjP#{#0I&p!P8oZ2L5TZ2fy5?fa_lOW=tvcD zGj+t77X!&9I`NhzMeG|BmKxETq6M8rg^EA1u9+^ds{(@`z!FbOTz`5UFIB`_Jd<~L z7(;YJ^|)QFL}=Jfr@r;s1}y7&zo7u!R#@QJ9?HtI`V4#d36EvugQ1JWV~h3Gl2V-c zGb}l6StR+r@VvlMC$^r2?)Q(Nfou%X9~r87Ldr1K>|yMx{?~$+GI@~9uED76jj`x zCIoMsNxtvSkaW1Q6)@7O7pv%MVM^h6(sO8(@Nq>oba-rw9nMtnEX!gY)G7VQt`-uH zk0)(jMM;PkOSz;9=S<{!O`J#K@{+jfRXV6!`2RSdaO~kPt7{D~zRIGFg^qiD2wFom71`5!h8Mfs!h0R)q-7zlM<|M(QHV zuh?0QEX$%Ct|ebsI5vcITYOd$gH^NfWU^k1w<|v9FCq3Lf(3TF7pYHwaik-vjL?Rj z_RqlE-w}7$Xwakk;aZHM*)E)T8NZY$*j3W3#`>I4oKTG>hPAN*yWJ5FYaut+5ev)o zKsvE-&H9rHu5K~8@o<7f!LDNC(PxA2WqnBQGExz3Be2^|om>a8=N+-K{J$~6%T>iu zFZOfViG#%A?|Cq6q%o!|F7dn8FB&4>e9KPZKtJ7lGujBEt)Ebij-`?dq3Eu97v zY6h$~fK-v+vWj~#cNBMe!#t6#@^z_hje3_X(07^${zMfc`&r_^X$3T^&z?QS71@qt z>EK!1Ri7%je#``Wf4l~5Ry~0FQ6_k6#ueDt{{h$>F~;1(*QkQ5>Lk`L^&u}do#2)Q zWP-{;6I`Lc4F+631VdF!u#4t4*gh~59L-H|$1r7&`zPuiu&2q9j8G&B!*m?+6!kTz z?s|_OSm}t{r#R!H4W;~T>IQXqwF{mzEv28wCauomq}JU@adI)oZmau(Ly$~+EDw34 zL3sa6coa*g{-r3Z4G$?gh?kZlNp{@KrPJsI?MzX>A_eYHk{UbT1V7zK0XAFe%jplI z>BD5i=+PDAk;Q=F@Q2zINTf(e~Wv1jQa7%=}d{OD+kds>cA#Us>UMI`ci)27a4V(>N>n%d9^3Z@h8KN?osdoMUh7+ESIRCRC)AF~S=Pfo(X$hS zXh+o;d(v+hPxcMUmb0q{baKR!T`su)Qd^KJ%A2joVzDpD+EyrM`3@Ve#Mco&yrZ8} z(l`2fI5yZ4MGa35H&sirVz(<*gw*Pjt6o85?#&{(MzsU>3#L^_h97vA^+*-Xi>=7H zOn*`r+gZY|*bJqL0HKlV;v7b@2R15R);XZ1n=8I>eZjM=hm9?xvxIcW*}x#O&%jN> zuh^`liU+g4(7LNoa?{LC=t}3hy!z>a`cN&2!N#Vw=hL2XL7PGeDP1Tz+gUoqZiza| zy?er~Up0YT=@lvASL}XB6&5kixsRq{q|(nq!mrpE>^F_hn{fIoJl)WV_($7Fd=1#= z1Vi6ESh~s#_wTNxpZSSL$-;u{@7%9(!GvW!ECYJh{w=J$W{tWzy{O{DlSzs}&zF*z zTol;K6SgA7YQSUop-v~;4^+|*^|$V#!z(v3*&tC;SrhiU5C2>=~ui?NS%HKeuqcrloFUvl zbrUv>qvx->3=Yu0ks~zy|7vX^U&!-KMV7Y zo?A|qXKHXPxnVhzl;SkJYAZVU4krQ4Zo(K^t8};A64key;MsW6E+OZjjq;m|>D=&k zej@9$dwcY42peUK=N~@irEF>1z5Dq(Tr63V@LC=~dx?1Bj9-(xNZ1m~oM>&7{wZPP zz^R1ayOAsYR16WPEpe5g;j6v47#=&(zdMFWW{AsVx5M3pp{hp2a(936Ms*qFeX_)$ z^+h~OzphWc4X+%maBh4NJ-Ro7-^(xeokY$&d&}*e+yToHU9eS$0dVSq0ahBg;3WUS zP|?r<@BDJc+vNfDESc@{n(KLj_5v7ra9b`KEyHPSnkvJd?3B;@K3%!tW;INrxsfrZ8->ZQUuuF&kjR8m0d!1OJ50PJ;#xl z{c&8kyDz~b(*v)Tsr$aSYJ?^69@un!mal$ZBPiNYS8GRedX1WQgBPdt)FMlwbGiFM zK6pMd!-Kbm`^HYlgMW0MwEl`gzEkexgH(^b^$V8o|xIHi`tz{3+x#IAF{Ub8OZ1hA+!{*e%h!3^NrH zlxa@p^f46KRqUKRKN1J=^22R-i$UzXgkv1u3f#z=19$#L|J z#v2KZV&h2_M;0IC*2MKC9a3~eo=*B3t!;)|uFdyl$qgHu_Mcbx=T=pYAWo}PM0ORM zl~nOkOy&$#x|56$dkI@&)og4^4f5NF*zXT_p`WM7y4mbmA%K~QCHkMK;-#eM*1}O- z%eqNqF`$ntQ5mHwva8rLT&lRe=Y!%;yJcj|O*P@z;LA`n-U26wtpS!Z z&3u#xeHK~ZU;6L#SM=m>McY#`L~XXFz^-C>l2p;*XB+O#;AsSR-QlvI(r%gnN}WS{ z!Sgki_*S4@7qjIs<%lJo_NLX}8og)?ZG-LHxU2=FbXTD~bZ2M$+RY0CVx0kp8=}L% zt~g888M60w#^1Dh=igK1Z^=p8p^)*QKRNtHMI6-r1vtu`u_4e=;$`qT{Ux~2TF&<8 zZK&c>-iE*wb9`_qhi5B!=vB?wLGg0*B62f3kuz4KXW?!a z%(?-r^ky^bu67IAA!97^jY=Kv!HuEe4qRvJ= zj`z;`6ie>dUY4_Olv;NeU@U#3Ge|v z2YKu&c1odC;oYMsEY zn%S!cruDPIMS7?Hqc96RB^*wgLG~F&3WMb}@Z_v5wmx)&XQ@%%&06sPM_q{@-Jrki z`&Zl-d`iZUh{_BJTVm;uRB^$sOg^XmQu6CQFPJtpKzmyKxBguM&sIR3{M-P~H(KND zj$3GqA)|H*MvLe)+B!$kT(uAy6}ISP_nw~`e+}NXryZdk-}Cu&mZ=t<=o25RoP?Qj zYrgPPYcX*p*aE#zy$BViHySa*ieW)*%uF%d%KCeJ4C=zRca~><}+nZx_6eX!~L@??p4|`e*GwGeB z;e1D6)l$WpeGWd>58_BLYAN1LuLEuRZnM<~8>p(T1q=Fls5H~RBkG`%#@;bm=??Q_ z-aNr$_hMp@*-^n}!X9a9j8Us&<*jOCNyGTf3U<3}hSC^U+FX_6$S^Vz-bnb>$p>_j zU7!=rp4|h_8Y0Prj(Gwboz03pdt|bt;HR88rIE{O z^q06g{xJ4N?bgQFFhQ07)J#1UzZ;=d;4^yH7qdi*)@+X;b6+O-XwjZ+V|wl$EH?v| zWvQ0YNwiVUxZ#uXs&))@h{v5^($m;oLcCbYB~?^TH6smvA34Q-YjJnM6^K0Gi__i< zF#UD`a5}y?!$t9*S*GXW+K~zBBgx(&tL1DaY=)Zoj_9?=8CND6(X2*Wd=@TSk0&j+ zt+}suIS_uu1`|B`Kx5l8Fn0)bO`qls>Ga)gkN!5;=DiP9==Ivj?XO-)hF!ZVH{Iuo z?Uy;?w=;&&@WchLQ~$i>Hw+>040R6~=ZKTk&8Xr+b#8uLZ7AvP^pDe%%P@9}Gwu_{ z!;n`0;CpLl?6*1$^oPq(SHl_CtPP`zMZOn=eLB-g<=iR4d%rW_U}lbiL)XCjtvQfS zC;0e`T|+1ND|fgZ9$x0T0W$w`k`;fdU)C;4<>i?!?>T%Ah$Q2s1xLeUyJK$ zR;udRT;#?%y8>5NnWJWpLsW5j^FXfS zg*oKe>}?$Tc9MN-xuQ`QoszrZlx?0=vAtM}j5j%~@Tv$FRa-xW`B9y4_52f{TKEj^ z<#xg@-lt$_@H2?|)e!>?l+?Mhm`)$w>qLrwKUQF=C+<$7J^A6%c>^0Xx=^PTb3FNA zJv~pW%QbfVmuKRt-%P7iVDiJ#E&lRA)G z7U6Yi3%DM(#yz92K%)6Cs5oVX{ildDtKjt;g`{TMCp@oOX!59qL$6G5tLj3Jyeu7w$UO>tD!d8%-(y_0X(I*xE-PRiMSCARa4Wlq$YLi4QRMPLjmo#rO6 z1nO^o6|AQBZ7xH4gOo=3cb+e#q)aCV7M&4T*2DUlO1aO9^a|ldiWNC{%u$>ZcLn-- z(>cy>-|?xm2R&t`9jf6sp1u2^wNcX)im8SEXW((T)cC z3BEQE^E)h!Bjb)PkY`aQGcd>*Ee+k^+=n}`X%KZkF>wQy)zI&`sg;m5)|hPb?k}k+ zVp)%ru#5}yQ*>#n6*MfTie74eAbsaE(6VdbqNe?Vi*$Og)}tzJQPVHjx0zPUE-1N7 zpE+mvDZYHJ74)crU1j~`7j)bDzpJE*)VFU0$4_I)KVgxC6xFKT07FMBjQ4Cqv=$V> zp{15sfA|8eFUeUV7q7@VleNPSb0>@Lz%~;jeDGcY-51<}D}xO&*1Q0Gb1EQM&j`^& z`Tk?tI}LGRNC260ZKH&K%&={Qz7d|Na%;P!JC`~FMK}v3bb}K zCr0bd|A(tD53A|>{=Z0~kW!lG>6TK+RQK%e+LR%bu@HqQG7FJ1&$G9A%sdaJgzi3} zQVO9o$<&}Cb29s_`+0uP^WDdP_o=h?T4&sQz4mLp)^bK2`;bfX48#M-j`cikPtUl1 zRi-Y@fNr1c>5N%lC2L>oy3nVUSUlW^WH{YoJf75D^BVkz{SNy1{);Vb*K8}+=`<(r zqwOUaGLInecrr3MX8QF%sUlOjg%fAxv}+ zC3I}11oz>il3M6z%oW%XC3*7PR1CW8M14}s=&ch|eRx!b_l*c-n3?c=ls~a^G?3sv zd{j~k_v`V(@mXETl190hglmLR3ry*w_zpfiTZs29lP$RwCJfc?MVvQCaUVV^sf9+l z1 zzR}Ah&o2MG@=pxTYV98|_S&2zp#qKO&s)%Xh%IeIjGg}uN;9w6u1+j#{Q`1$V`s*{ zQ9PoEx!_4h3I}%Gap!=ngXCzjkHGk1Pp_nMm+2VS$uPGKa% zy@SAy%VR)NACX)2dU=0~C!<=$dh=Xh9>w9Az*r$|)nK3)ZA+bhBrBUC zTe5vNV(iOOlspoGe9@#Qta|7Wvg>-L1jXTTnBTGG5Nv5q=X6uo{1}(Z*aO`#;ve{i zrJ%y}R1-UDGe=bNYpS_<&!9thJGv!C#PiU^u8#dPN07r$u1KQVajp#Pi)`sKdr=Z0 z&T4hqV*T1qq{QZ{u*l;!>_%nBsl7v>)aN!V%eSMamWIK|ybOqrz?FD{8m;Y|yp;vC z@+Z$jv_w7<9*2=eHEKzgs>=^wtXQ`cKicL%n58}4pjD~l`!*Ub&V>sh*gHq2?$vm6 zoh8fgoJ*dQ<-+zQcVIngEY&Vs>BGMh{JVm?;nUl)?$L{hSv#7RGvg+%a~-MKB@?j1 z-yvC!)YaG$Y<}GWT}1DvC7IxPcnvtkx;SGVHRiTZFE0nrmbTPm>^Yx_e@kGOn+^TG zhxur2DFgRE*0kkwb(RW!%vhL1D`N3wsA!sg7ryqfqI%~um4~k1g=t|nRPRE*^2oqE zShv}V9&4fAT~aPDO6%`#K%DCbi~LcvUmoO6w4v!6|F!s(rXe1AF^D7?Y!{ zvSqgxgWccH&|rf-dHkM$aVDxHF14k$$BXbh`jvVJNt14}C66OSJH2WseenT&lkLgc zuu6z{`2lpceG}yGDq%tSCop~_6Yw2$%kf^oa;UJirvL4-SAJv9z;=!`t^8$=XFhtb6SEAACA&k+6f+U0 zp7;(?u5X@jA>uV`wQ`|xzdgYkaq2ZD*tuej2cAdZ0%Pw%e_~0uPG*dcgvU;#Q4QFA zoV}Pgh77rtEi{iVf$4$`-D;5}xr6+j#eUm=^vUJy0Mf3g z4Mw#)#fqrB{D{WJNN+ylR|49-AgQkePu%vZuTe`pw)qn-z}%TQ^vrS z<{fBCGiRC^8iYO;4b&DkTFfDCv$qIa4Gihiw9a(1Ru_o|GOvw{x&~P{m;+Xs?pjf* z;*p8E4woS%!h+7;ze<8qpypZFPBv`oEJ8<^NpJ?;q%9)Qfutu|s`4?;=|`wM*> z9>VYg#&nQp8pKX`4EN1VXw(4_VrM*tWy_I;bW6?Uyb76JdL4(;^G6a?`1=qoxexg?8Y9s2doj(we^Y7%Ll(E zHq@rN7k=Rmz1Lu=#n?eowvq8O89)0JV@Cufc2l?7kb+VDeQ}gEyEl%+yuHr&`Hr{l zi#K7W8^y7`q5NdE4R;OCfjj5Yq#PLK3skNZGf7Mk&e>cuiI9(n` zip&}r-~F<1S_Sm?x2N0MFRzJ$>exgXhut$Ypi|c^UE7Z!w5ie<0@98ve z%;>kr%~$y2Zbt1bWIN^BgH6lZ&=TvNOBQv6Hrq15@Qx!5yrbSx+`i$u>i33N(nqe% z#?|ISh%M&*+nppBz|NRQpxq5|@jYrR{LPyoswQP|q_gu81&!dC=h zplK)a3=y6=B1I;KX7)?Fw|*e;-)bb`m+<|a|FQUD${v-+k{7L7DfpR%pK<;;)WGK+ zF0}c2^^D_Qp2JcXM39oT*cU)ZhUL+AsHUO-UfWWtXIbTUh<(zTMqZnYW@o$Q!8>a? z1vfna?>tDt>LaTpLs*Q+i}7SRb^4#4{@n$u*`o|pl=e;{VCd zJs;IFFYI?`;#DVTVn*L=fE9i5ZXPtXyAHXJE$PmxdD#E=|1y1 zG4x9+=(KmBlTKKG@2h0!HQAmHi^kubQ{l~Hds?BZM$e-w5}8Y6FzIsUuE3AWM=162 zvdIrttm{j>FWqN68lkU9h1aON8#w4+WWsy4j@aoW5K~#A1U2As4QW33F4QM4+ycbNZMjgr(3EzJIHu$~L#_Ir2ZLp% z)ZaY;-;Y}b<;*IhkvSd*GS~VvY-soagF7ZcMA31W-0Tk+3rVo&>2XL;`T<+8>jqXq z%-!U@A+RG!?5z;{RDFduG1jzd8}<&G`3-t2P&FC%hVNT6Ld;An8k4Ag&)v?2Dh4iz zBzm%Z36{a55yBKXeLc;B8n?*B@2*8cbK%sgD3WBE%J`#{- z#bJeVI({Se)EYI*herx{->A%8x?E^vKEzjBihl4>NiDJ+=Zig>_F)^ocM(h`?+2@& z4N$Jw2P4kz2krTv;n?RraIkSdJkl^}=UE%BX8_)!&NRE}jki+l(xvuOdqg z9YH1?%4PhV5x(*@_-wVJN%DW^kG$JkS<37wM5o18!7LybY;vvWr^0Zbr9-?dn8syyztINCDr&jc1M^E38>d=08Co8s{BF{wO~0ms(go_@+9sB$nJRsgTsZ z@_2w$|7y(ctE#(CqRAe`YUWj!5517x;@I2{`1vXT=O_bI%vzvjhv#8hm6YZ!#*_Yj z7789I;Om5?s6o*-Bk@ze9>mr$MWVeEfAA8t@xq=zgZoN!c(7vRWZ#b3IUtc3x`|#@> zeyxQo4f7fw^tZ>6ObrbC-UP;Ev&{4RdqF4NcQOrW4z`r z?{7W&=#y?kXFKdeAI}94-il-VL`@#1gq&7;vG z{qG^R;bkOw)nz5)dxL3UEp3*o4Gn0u_Mg6FJI)VhL#EFs4@-?0KkmK^tiD}uO$#>t z>*Ic42$OZ5LB6!!Dmf26cHSS>D6S7=+al(Y$<`qfAG~TZ?+?GCorkJ?4=f}OPW>hK zgTJD@KV-K}9LdHUn?jmfUJzEEcm_LL*ibEvX38w5a=7`-8vDRDRq|*8&L7wIGN)M+ z$+lx>CD)3-H`4Pc9et1GKZ_*oo32x=LgrDimNk8`zq?W!??G0GH4QT9@eeYQ8~jey zy2_q(x#%PET?2C_h*0#_hyK)4!SnNJU~yPUe=9#V~T$qb{vWKWC~JBd1>erobZw zQj4`+bxAtvQ#;DHrt!HxZ^4g*`?Z}6$*5<8$i)0$)d%#kZ;YJoJJTL`1VL)yprudN zCOf0za#j*EdU+OFHm^oBEf#X`or5I_m9TQ^V$ke;7CLxVL0-DL zR>rJ*f-vX%Owz>ayCPF&Pam)BNV8pRfY-_0rLw1*0UfDUD{Hjq0Z=9It|OmRl&LPWsqHql~2Q~ zU~MBW+|nz~i7@5sRZTD@Bm74J{#aqf-SV)8w>yFH0D-y&A$V%Bj(9HCnrOe^c+6#AveU#%6X& zvkKbj$f+S#aD3LPf&t^?bc~-N+}v3WmqX;VbzgPe-Cu(?ta=}IYWnen?RLz8M$E9= z?5BJtoMTIjjMLvA^2k z5GPur+Y+M+99gIku@*VvtO4Uy#CUbF_MVTSxIj+#i|X?@zeJz)HeNuEKl2w3xS}GL zn+siKIY7e3J#xW}?rrHpC&j8O6ngA27E4R|k|+x+p?1j=@Y`-mSF{shMYBRU*95Ef z+KQ5@J!EnOQD$kdh4rw(Mv7PTaHm! z1WzGTyz&G%Wk^ROmu!Gpm;|$w)=gBLo{+Y4L;x|k)?VbX1)e`4#Tg801KGzkJ2F4l zTWmy)_<_64==g%mO8MkWNVKz{ukPPaZt%>4JJn{?K}f`FwQAmTwxfIq=``}1K;NW7 zd=1vFR8N)U27JySldaZ5JiiWgwrh+Od={UL9Ui}rwx_E1HveSw`z^5!GO8u93osF{ z=HiN8%Zx6Gx~6>ELj@@|ru1%?Ys!I`mwbF{O1o9x#Hf;@YS<5hiKK0Qr!;}dLUWcUz*YLK6u|U+5Bm<#g1#k*vFMKga_ICV4lGj zNcp@|lArT=JJz@-4}lcYpyTVsmXzo?HTaA!Iz$J z&V%01Gr=U@myS)ni)a4K>J=L`FOUqIohCR(rNPQw*7QuT>A-&_q+fT>Wy|ZBdSX0`2#A$rm=S4KApp^qTGu20u(eo8`e0GmLy?t7X)86}$ z^4uMQj%hj=?6#*TeTG5RE(Q~L>k!EQ||Eoud zw@JUL#D8E8F1Bj)gvBSArFl zR6sUvYge@B?w+Ljd}I;nzRjNTtU{h`_-jBZT*hy}@O%L+;@;-4=MX^F=9fx%mi+EJ zj|ZRvX1BJY@!6Bi_Z^6RS{;UOC0aBpVmb_7b_lvR)1pTcX2QAQ2Vvz-Eqpg;p^w*} z{@iHNeH!svkk0&YWqGa8fj$WQtE?GN4s}l)P&xgtWCe&-5I0P`n|VzpFHe<8EPj11 zg@iCi)FRh_=6#XRFb36{oHWo!X=D!THZg$w$SIYqMfp{xbY(eW(goG_6Qjtq;AUdu zwKAyqjcVo3wLlBUt=Ds+*I#S><72708EdZ!CAV;P8S^AaN1r zSRndnw#|vgV%KsJnH*;pI?kl6L9|XB^8ne+NJQj5~ZNs3p)r;`Jdr7Aat*UMnYdO6kD zZV1xzFb}z^dT?O^(OXl+_}KZV_`8WLi=bQHTOy{ABeU)aCdJjT=K$)PSB1gH{#DQ< z!3pcA!=RzO8s6AAQF-r4c&*;gND?meokA?04G@mixX>+goM^yuX@1_MGj@A8=R_^$ zs8wiF&+Cady7-apHD4?CHKSkgh4)u?l5=zF2~K^U=cnWkES3W7s)u@j!PDexJ# zUk4XD(os%}i`02-|GWyJSz{dSoY*24m+T}&)2y|kN6SPAnrKH&PTPQP@kLNf z!Jg;T7S?yW1d(fOsb+UaJde!2Plff(!^z}!jS4;zKEgYgt@Ok*pD5Qwi*~yBeQX~| z5*ls@9+y5spIuILyebSztUrLM%8AaX2!mnXAHgxsiRQUYK#P47EQohGC0!G{32U(m zS{s!DqL=G}J?gkEz9y%(+jODsw45?)XKL9&&6G9rixU^cRViBaeeZp0UK!NY)fk_@T?E;sJDTS6aMaW`2#d7-c3&B*FlGr z_i!}uFtYS~j}>~Ke_%lB7Y-)8e&UsDFJMZHD_u2dFgfG+3evUQkTaEm?46_5dg6eA zzN9vMy)a>WG8keF=e5oAu)kdrB>pj{VbSwIaXJ~Mbj3~&trlTaFXnz^ML$Bwqn>t> zs+8DWmq7oxEscrlDydMB$%YI!68EMIB)$7h@b(fe!Ic%Zw04^djG~v|4l<7%KXig0 z?GvH7n;k7{udX+^Bm2mvyc)fxV3oxY9J}UY$oh` zR|PB5t*G1WyHFfi2{8&Q+Tqq+XpE|Yp%biVT0tKASiaCmd?+7Cs+x~eZJksJrlYOs z0jn%%j=E~Q-doY1)>#nzxe8{LTG5mFx6#5yEK-fgk0s`v-m7?QVey`7IE`Hw-U|QX z41ZJgy~>7T)$eu?nmE+L&uol+sUexrrn|_mqj=WjCbx$$ z*~^ORo>Q|XLrf~XAGpVpF7dk+Q)_C$q{xYO{}CkVea1&ClP&f>uPA7YBM0Yw@eVum z6!Pt`TJDwr3FT!l6Mt6-RHB82wSCismV26rys9{#lk?dZg&CH8sE1MyBkEL#*P%Y;x!cQSd8zex)CS z+6fVx?P=mP_0#_K`g0bRIhgcYoh9_$asz5mS#wNWICL>ig~mv0+IwI)@V-%{;PoWd zZc+?s%$22mCwY*yNKUs~nL;rB{#IXFUY3^L20w->5-01z_>_4P;?I&^G-ZVN~DpJcKUdJkq0nkl#%J+-cK_$tC1^U_islw*qD8)+r4XAwlkCXa%SME{ z(7c@%bXL=PA3nnlMFkIeOG~;YPMy(5S^W{rb^M8FeTnfpxjvJoT&pcd)LYi`S2OG zG(Z2{-cRU!*q_vFYA2rl?Mx^3#ttr8vwZm7cYY+qEKiIQ7FzcsgO0VA?9uZ+q!vrO zCkTBTx{|&hTtx3*&a~Rply-h?aU^TsQ$HDC|FgZ9MdN&x;jYHJDjB%}QvN@>a z+2dETg2%=9TwTg~2^jK_k-m{+>8Jq;{-~KG75wkm)1hk||3TGWudin3YsV7vLH&i6 zwb$U7xgDLba4=lxbPd*Cu%+GwLt&?18tBK^(V;(wVpJ0|A2Z*$5c0%gtKd_A4Q4O0 zqk*jl0B>!v=mvCMY)4x!9gG$)Zgghr_v;h+FnLTgz~lQI=Cu z&z7IGC7v(LM7{=tuZr*8E(_i-u|o}Vbyd8-n5U{cHipR8{$YGhes#zL_+;-yx1Z7g zX?}h_Pg}GO7(qt0{FTN>GD0IA?%ngHef(a4G^(CkR4S98SaP|wu7n4`BL%%LJ%p$v zTmi0Bgaoy;uM#&Y+s2E8ZM8lpNVU&dcam0d%!B zrOPwZV8-evpgdzro8L(T+gpXuF2afZ5>jD+zqgSyIz5I0Z#_?$2$MQl)8QE-(PDybs=}~7mTbK!6Zn41I(yUMdxHgi(C}~X zW&MSbg3r3yWMFkT8@~oSnYD7HN3g%|+Mks$&C8Ka*;}vNf`2a`T$L)k752_s< z=*FUYNi7Jn?oYNCOXv0`XI$5_#v8}rlYt4fy|NUB;coAM%O>>2ou$C{fW@kK-=9MC z@b2Wg!5?A3oBPnLyD5FP^El{lya)bqrZmPDEn7Z-ivLWg<-n5|)iI|FZ27(@@?)Kc zum*X-Imaw$&Cji{!1yxE$LcB*@BiS+sYE!8eBm)ftqS~Hl_b=_6cXY&KzN?$LR;ow zeP5BCga^Rm52%N%dsVP+H-pq=wD#^*;zCVtVlL}$4t$1PhU=aJ%yBi&s4;-wBR>im z{ldrno34X!>jH;&WOXuhpr~Ot9CVMwS>&Rq#jg<4P^S>Wfgk z?7a}QTo4C!aHk1QrnE`;DxY1E?sQX{Dc!Sgw@+H32X##_r8x(aa9uLUV7?;xT}fK4y)o*H1=UsZ(eRtUF$fTEbMYbQ0{C= zwI+3^H_9!5@1b!7wZlElyVIzvYPQImu`>4V$6~Ut`{nC=y;92WTd)D^m14~PtzCMX zeuDY;jUu|A10~vqF{jeu+A{2l(9KYybBMWfZS%CT+hfS?2NQ%&L8V~yQ%*x2{h{~W zV)%+^c59_SnCvJ4Bg9VL9SFdvHoY%qZT0(*IpJS~6~XB+_%Y@Kn-@WrHiMVlkn0+` z2&|*hVMHe@YV%0_O#LZk5l=M7?~w2SHpErHsmpTe`AW(OK%9F2K(CP{b4mT&9Ri<+^ZEJMPPK5VyAxf} zSB(y~G4dqKjk}WTH`XgYCuf0(n*A1bCm{QTL(&qb3#kH12P*sZigSy?6&)OD2Gltr@`}~w^HWb5Otp75~?1taOPp-ORw_Za@ zMnHFk*TE8){n(5i%0o@Pl42OW#EeE8i11uq24SPjsVVB+;kx8YP}<~$aYQz>T(xR^ z1#ED#p&xoqSMptyu42{J=YBSHO>I2-$i7|Al2?o;R`-k*jhaQU`J5#^+$&g_vISKN zun$sbR9q4)S ztCHWLk*@mgn$@wqX8Odg$W)F~vCE&i?l>XhB1Xg=WpjELctw#-r4IRrM@*3`D?M}k0d%IgS zn>EsbcwOuvI&98>P-;no{$?l>DzaeIO-pJxCsVRtk2~(xFWHf|0Yu}kDEu`^1K%FD z^wZa|Fum6`7~IWk%9(PT&(u6r`LnsL5dn!oX%$} z^d^(@_gV{l&cWv*JpO=q$pdYHMlD9o0V4&U#cPG+Lz}zC^pxt~jQ+fFD`CCiVlr;z z8Wn#OZ#{l&J~ESxY0DND@md}1uC1sji6^0dyLj zftQ?y6*MSyal0uB6&Me1{Hna(_Z=K^b)w?>zjz1T+vu}hXBHBtX8MRe|6fL@I(;9; zoHC~OZzTPb-TC)x6#i)XlCt)X*s*LE+A!FX?vHns^bFI>bD<~duy5xNf_BW&Z0^J38oY0uYwxrWy2*Nw zZK-Y&^n=GQq!y(=n=7n!;)%=PqbmMA;NK4^G7&U3omr2WN|s)Er{KQ^JU8aYfK(_M zXHS!!s(CU$vohGGsrVIbohw+UWAHZsT^=;fC|&@?>*rfMP=FG$^S z>id)@OujmZgnOPAx{OW*`*YYMH^CQvYo~x4q7-lAe8D{&Yjdz;(6Jx=(c+`uLspg+ zK^)7DD$?(#fc%LaHMpPvvmvQ)qN6=+%vQj_l~>_Y2UJ4nr&gz2?mdJ}I21+Brydig z&A$Qbb?vFoSzjovyauN#?5N*)U*PcvR9pC3%-Fz@q^iNV|3-k1dq8$pX(%drI8vl~SA`#d;3&x*b78{fh!036FkAqe|Q0E}FV^ zC%eijR6P2@V+$jjrbGS?U%D};49`5nU@vR61W20=`jV)4jTAmY)aA6vP&u56CZ+RM zGag$A8TtS|&UK>pHvi%b^S5^s_a${Ah4t;2u!6zO2Ysm4{W9Pqlt%UB)@4;n-*93P z{9NMWROUVK{oq9VC$|RPpG@{6{=0YFf<9#7bsLdK3f6pk3}-sqQz!3Ar4%)IY_%ZG z1l1P0{2uGY^AJb8%7@|kh*@VF0*`SZPJMr#BJ%7UlKgfLyf z4OY3|*n2mgIDfKJ@p*sktzt;_LdCto6r>nHS(vu?(s>9eGj?ZY21TIdX+^&sUo6r4 zT(P$p!c(niK|mb(u&XUrO`1KAWH*n;rXQt{*~N+KZ4UuIlVVUHbD(a22#mdq>xY+) z^woRyKF-4SqUwYFSW@@)yAYUwYq(oZbjrYBi3L9rT7+t;3Ma>sL7N=~eymyYVsOR2 zSi8ngg33juV3_PkPlT)2qUI!lS&W%Q+8unZ;`y!oe$+6l8d!_9)|t=Myw@)KnyU=X z&Lv(~cL@Br-fc=?1@^2hkWc-`M?=31Rqp;7#B|1aL0nW0zhdPyqIwuycvl9Gkbjr( zei(#ce=>a|Ij!j(j6SBFau$7N%SmATMPY61SvWJ@oR<9@3mey;hbgue^!VB^DD8S4 zCf>E6r`$%P#oMgbDmSbc8N7M3aC>V7d|c#APvi>lU{3|aIy=)~?0??G{{MQR1S*Ulm+1BJ<35<;N(WduQN#5{Xt65e09%n9M2vbr6Rr=-g|*>UG9dr;XQ-?8gG4a=EcM=NBdUzoxKoiy{C!Yr4i{ zuX59oVpy1tT5(JFDt8|&hEgwU>Rz+~-}Bwe0tCbVhKt{vnu$}r+tGV->L6?N8Y=opGGRVL#{M{M zTZ_JygNg32Kz0SAB4t)|ZriO&K0;|!zp{}{eASOQ>Q7_5CNY1M^m}!_zW(~?HE|^R zU8#cq_VM3DK3eRqVrxytf9^xD5L|I>rwd)~fcgx3nuD8$3q811PNP?}fa5b<=v!ww z-B_#Uo_Ac`n|ULD*K}U4z<&)^elCMqZ=I-WQ1Cxr22I05LijpYlD@^6SZ%%sZlVdD zdh(S_ z^OzuJ`lk|pL^)Fbm0y+Nb1I-Ks%osW{;B*=Rt5R^o$tR_o#UJ^(h(-V8cpt;`NjB( z{vxdI|Fg=0%FmQ3U9eVPHQ9kWo&BH6jqORr)4hvG%`7?7pNZol##*SVm-yg)qXK5h zHrC@=N7A#wRnk3zXEgGiB#^fx+o+I-#gi0mdv89Ae^*}#A53g$-=@%*`GxW7ggonBfh(t+B>c9VRinN~is`afaM#2I9{ z_h8|Xwgugp;z-wiod_$Qo6&{1W(d#=2gN>fs(Z?j8m)`Kr)1@_foz;*J92%kzXWHv zx-SEcV{Q1Dj`gJ87T-EEb>QnGRuMkXRK*yuYWCKD_*d@tpkZ&swnVi z1kW{)A``a@pRiHZ;pAt!iNGTed@dr*Kdf%ou!rA5$e{fJ0-uxT7T$+;bBt*Q)*bAf zkPnl}jADej8=5=A3GZP?hafX*NWaRw5R(*v*F&QR`hCw9re7GjXr|j_Y-bSnoV}MUB+%~ z>`1>lSkhz5T$Mah!28D4(wXdqX`d}ykUWA2e$7Q5DF}UtsIv?1b1wR- zl%fVLltbCBYtzWP*9QbX5+2u(MrGaFQygR9MoP7PC8z<96l~29u?otUHl0#}QQ0Zw z>|I(2aas70@lo+#XFftiqb}Jp3o(S)P5#7qY$0gS1IX5w({C65#TklSPAcYJnMY>1 zEEBfg%!H>0{OAwtBCz~h7F>JoM+?)+V9C1-IG5o^mwJ?ARIQJfrCGi}oFQhJH;*mw zoCzt;;8Nhi4*iKFkMvZMsCc~{K0>Sj^&Bc3`W#NCCT1}njX2Wy7*1TWr+Opnl~QD4 z^(`y!al_)siR2m;zsBL$K0GRdYHxZM1XH(2@_6?QL36qV-Fz1-6qbj=)WgWWeeFp9 z9u0xHb=a@N6yJ}nWAV%r(geW~`H6`aG(_GzAJy}fg>bQ(0}UUdUi(yj4f671(d6U2 z%@PctE}{t5VO{Ez%qhU*0a(HFe46MzZ8}^3b(_#|_9A3dIMUYRv*BX$1z7Gar_Bv?i-tlF|d1-tZbVZh@LG8rt@7pJ!xL?$J) zlkj(W&Td=38YmfWP1hUVLmw*lOR7Bu^NF6;EP=;icpp5Dg1qqJPpSbk$C00tK1nc{ z0A!@3Y;dCQ2T1W5;sKlDo`yGzSdZ(PQc*-L8$ek@L9NNl+GJUrKq3M&+3YSo>F#l6RBKibWv|8_ z)WzPMuK3bl+2v|a>V$Q-{`KlwtP9s!{abg3*Sc@g`|21QGTu~>G)bk&GoFQ?we|$ z6PwZ&v#qJqtZKNjx(SUnu%W~KYw$ci_}&z>+fKu7H`gU74j&aCEp}ck>?H0_?MgC# zy0gxqzhMx#(J_+;D6>}n0-X+SbW7}LW$wJ+pnKVkT0NhLSNE0AOU3jU>?@NHC9Ehh zq)i8Qp~k_^kWy?&TWWWqo6oob-@6LukELcRS@r@lvG;VzlgPg-JnsP440}u!JI6+o z?Bp%N4(}ppi+v@`1b^V4W2wcaA{&KKx5cE~x}C&=KT3+1*d}lAve^BO1{Yfp(op2Hy zU8a*Js*|k$fG4mGzqJK3HGo$W5C=X16I&;`=ZhBJ^W~2`gs@LhgnFHmXb$i?15%4E z9X=|Wc!ncqyNvPKuQw_d{D;+fmH08|eIs77JXUy<}yO*WK&R9f7<`apo0Y6(xE%Z*DQT3fapP0X$&v+Gw#*|mE(pOHm z3^N2?8v?loGDF3eHZzEEmlVby#j{1E78M>UMeM{-vZDMWpiG{_vP0Xy{OKv{_q`AD2g43UH)Hs9vz)e--Ozj@Yq+k=WUK!9W#XJHIdZ z0VH3?4i!!9V9eMDudgEtRCl%d`8Zi|WzIm7sM$f}u@@eb;jaQ_ zUa1F}sc&0SE%uh6A3af#GQ7@)PWfG;xCV7J>fFzIGXjYtsi3=e$T1M(SpkG%(0It%=6 zD8Ea}=OtJ)Pb(t?o3ONd*1!CAwA^g zOy5r&483l2pjV8Y>D(UbjAd}s<-+Y|vq_iYK}`E_UALsAwGJJUag7=NA;wBdqV%HF|x0w`S;iHmTWEY@rZQ^j!|GAdvo8n4e zB_qGYYQGPUc<{b))wf+=FzPgvc%U9Ve-s~;)Z(Y(OyK}@Ap;I}6kjE}(w19I>8JXs zK0M;V`^J6e<_(H3@qNkZ&Snx!hW976_&mR@xN7?l^87@mg2!a|p6-wTI|nT+%xLcQ z1bm~e^?Rb|pgo`DxzA%pdGBH0Hfw5R6{oCIyaR*N*3>6BPWk5Edw5i8O-*dp;FD+_ zwwn#@J(r~2m#JDIXRxx^fu7Vdgifu~AR@zoYR)i$#sCHf4IJsVF&F;*iu&!wIH^z80;@;o~;I=_dyZY&2 zKj#0#PH^8~LMy@R*?8hq`AXB=&MqSOnmx~s_S}bXO61YqKZe`Q%fZEIPaSlz{tCD zT937sch(oey*G0D%1&Kt**WZ}YTt=CvZ;2tijRapN*a}JW@puO>^Zr9QG1o)@Fzfv z>={26 zUoqskvk>mvWEQm-6h|M#k?OaeDt;`!`Y3nY z6L_cVOy7R%h(4CboK!pyT1X~*=q;&T;w|`*u*!5Csw%fxOf;fTrSW6&x+n$VPaw(= zdl}F4Kp#JA39ZkooA8`HJ`6h5dLu+{^lQ7s%Er|P&Mp8Pj*U0Q}& z0gP~RrY7Sk@R{C+V})=QtE+?;YULLF-W6WiPZyKrPn)rg1_hx1PEI?9^nymC0$8c< zOn*NUAo*w^Onr+A2E%)y1#{G4W`^@gaPNtXKZ+k$Y9Sl$s%Sqpj(lnPMB$Q92z^^Q z)2XjL!Bf8g<|6Cf;$M*uBEu>*l1rJe8>)K=WwX&AGDBg^TC-FNY6#TgS zIZ1s?xze1lE=uyHf3DB~`QZJ*gq9c_hm{NRVa9k9I;-vkY`y;wUU-;LvzN!wN0hg- z794KuwBO&-6yoFxc1FoNj)JbB0AQoI9*ZU%kNfHK^HC@sst5wk(jiE4r%q-W)s* zGo856j>jD7@YZUE(3Uf8+0e(a#J%qp6@Sn9XN;Gy@rVUx4+F-YkST7kY z@MG~l_>r)K%W7AFep^V|-o3Bjp9UVS_u44e80j_h`z zaVNhjA3V#4YZo2pru45$9!-$R+LwJ*jQ%^8IAwljb!egHZ)*BiDm4+Am^a9teh;iv zMj|pXB;TGI2C8|MQ4sqkccnhg_Kh^<7f`kHv$jUcw8DKoY8@Bl2VM z7JRhG%ShUx7(1Xh`3|n)sb) zBJ$(%XD;=z`OiAG|HWL=P6~8aHa0M$wKf0mj_N1-q zd2qGW4R*+7G%0R%gMB$r0)<1&Xl0jF@O3JKzbDM-3;f;Bu?#*rn$fW@)qIBMi8gHS zvlz0--iYxC3-6CdTTo?l(h4?Edmh$1XQ}u|I)prcu4c~keEWZ+(g?{_C0>ssJ-a-) z!K)tf{-h{Q#L3mHZooe@hIrptg+@eKAs<6)AUYV?(+} zlh#eHrSV7ckw`6i`WCWHeLTpKTtf-A#Mis?I1{dx^gghuRdz)8s)?j3o@b~_Et=eV z#;P_BCqD7#1zstD&xClC3VTk5yke7v4JB3wP}Pdl8Q}3NsYTiN5;pza1mYn$34Gl@ zuQ|Z`Ms%=bH1mHpmh3zGO0afsK__4@L;pU*Vf%^}v;`_)glPst8$B(0XNe0<$sCSX zcWpwM!ubH|emq&k!rIngS6I|uN#3iBSy~NqcG}RHg?p99^=e>9jt%XfdlbJuE9V#r z4goPF!Ow#k=(*8nV=bv{N}!TQhqfEL(F>a`snPfGXkpdHMzqQ6PFD8(k3Dld0xyo^ zeD1y)x-LzCTlL0NS7#+?3_lF}k%cr1R%28X{hP2QaSKSs>_7>A#rtqGa-&a!ENPEj z>MEgMs|*CY?u*HOtF3ALQGA3_i-CjIdB1LmCvQg`@Z!-S9*uG~bEDtAENRpfHGb71 zUXzW9izVwuKc9WOUME~*Td(4B$D8%y%{$j zg)gx9sI^uVKqJ{UTV=dPl#hmRqu(7Q^xwa@%b1V3BA}Gy(?#pWR`4GUk00?=MAS-JhofkA~o<{yXW{gmS3cWl2l}yTWpoDRQ`GNu;4&;qaXb=(&#R zPQFl9$?{W-Xz#_*_*GRW%4a<0O{#_EXV`3xvVXH58(P{T|M-P?!}cShN*rHH%V1s| z`ff?GUn*^U?^P$O93;mhZvG)Ax08&2zw&Q=@w@iZqtUb> zs0Y54;UVx!Tti-82eZDWq^kc7dB>=maF{8_My*%QoJ?78Sz%eHkAGB-5cpO9Exifd zMwyaii+>RzX)hG<5reSzZ(9+9za}0nk+eU^PGxqp#$PT<1zr=3_wZBN&HvGKo3}{8 zyh^Z1qaU6SJpM;d(RJ{?ixJE6_sAX$^}sv*dW$|?KFSn(H9BULaMa>0`j}cx&Da#a z!!jxPbU0t6TDEZAO(=;qBKr6Y^XguQofVfB;r$*f2gz&f805)7pRDk&@mj`{yOUCy$Lp0v?#5k5D2BXT&&)JRxw%vxIl zhK0@G!g_J^lNsmi*aG)0tVu=caOLlOjj^z`0k|hf+!)(td(9TLq zirC*33!lO@7Jble)eNDkKSXHlse?lUVkrOV@}G~4X`Qw9my&K9cd#ojs5(!pKTO3P zW}HSwO&7s6NJ>7O@^cT`cpj!bH6%fFiu-~CWiXn}bK9Af#!m3KWLOKG;|All&E3$# z;2Yqy&47HHJ5s)k-L*FCMAcH8q4ER2uY=1j19Coc0J9;Ko~7ko0`Xp&h4_7)x10xg zf+5kkwDBJsHx5n~QqzATgNpHV@t#^}WP6>B-zVpSrE4M}9| zHu#g12W>(O$*uTp4DqwAaY@|SIe6*RdgSA+O>W)jL!vdp;V{eT!__{--YFcq#(I*F>XBi-oFkO)iO1k9sV#&UdI$+EQ#NjK;XO3*t^zg6wP}U zi0g9hBEGxH-MJ22J=j@7mg@<)P!AtkEy>&i$`iS*e@@G0-<^Ti8#d7Zp$;~-u_6PH zcNO(a@VykQA8v|1N&+AJ{;i6@zh(GN4t^)53aq+XR@i1dJ`tiJ@O+uCvWv3@Z&rPG zyL&eRkIP7>#Xd|w(TwS0oa!jL2SZr@ZkJ_!NOnKv{W$(NiLR`P!rxN{%XnVv-*6S& zn6lNdbI!nXT&7I%WG)?%ycBPcZTp8kdo)y_OXAn%7SqnW_meX+H0A?f4`viUY znElQJ?hob>=7F{Fv^Sfiv(fP%8#8zIpd;HXz%9~z#ODq9e4_Zo;RBpXmlZ_d@m>Ct z@%!@j#9oFkxRRA#ofymCREtC!-T8B)3^z8Qk%u&#%jY4V)+jqr562?^EOEaFrwhdfF^ z7yHe_euwo@L;V$)b=iQN?6e15jjw=isR4ODDHBTOSHp`)1EzwzhuK&-H-S2j569oX z4@UOOFTfFYzB0CUAP7kpApf%kIUq-HO0x`Ftt`pAk;>fbs%cI_pFmfGx-_C|ZTYWmuDLr=Ni3Oci1`%bN6k{fr^36Vz$PU9s3=_W_0N>T=L!Ie^2B z8o+b)o-79t&7vjs7s|fyxX^9rTEZecHrWO7zGpODf%S6?NQZS<&@iJKM$9lEmP3`% zYrlSTXdyepyJ%o9q+MGKE6k$vY`_!9y_vLu4r<2U^ksWCsAtep>yyQGT=XYZ2t#2#P*7vjVylXb1JOgh-jIddH zRc6ULYfgS#TpHhKM>K~>$$chg!t-<9wnXB?dIoXQa@=2IXDPpm_ezW~F1#*V>>YuWKi<<}Pi}DP-S7OA^hGi&g_yjzpL?Vn~_qH#?mUa< zZL^BIT3bY?1mOdg&7wR5@0A!~XRC{7M_*j(-c~rmuH*GE1F|gTqC4MH!rNvU;kR>; zs>}n&OjQ@<8F;V6h(l9Gqmu5P7+up4`aH2CQLJ-0&1#oB-&4ZdW=gmET4>JjiFo@C zai0wDl^C)4;u7>o&k}#F=r5eUXGiX+>yf9`v)%a)7~VFkC?@wsf%X0Hon|{xpA7Gn z7?JU;l@6L0h=V?CR`3}QJ`*C&GyEL-o-Q~NfQNrPBWpFtg|8|4`&)m8An$Q^M324-bbW z5w)P9Wkoh*D;Z?EFoSxpiNe=P^$@>r&h4vEn8c>A-A6D%WaE-?06h{OhEu{8A^u-@ zgw5Pq5EfXG6Qh+Hruo6~^q0v(TwJmO@vC?b#fTwll{9AL47}Pf7V-Y_*O9-JDeG4D zArsU*nT^XEW9ja9^Rai(PQ>rU+u(O%8OXiug;uT6cwJBdQWMbRU^`(U9*GS$oJ71QJc8dzB00!x_;wwIJu?m>ey=W{ufmN+OX4%! z3$#*dA?pk4LoZaGmB~BSLCDha#L+vqBYs~V!SBQ>qbZjt{WA@F?%s{~y{tN1gM0fe z$(@V|5V5HiPHnX$uk@8QdZ&uZ)PCkn+%K2Ne;(pjt?76T zGW{({bXVVhZ0xETN;lce$F|E(A&;ZAaQvVJX}B;Cewki_s^u(ZJU$OzpR5HNnFX0- zx{!I5w8@>aP#*Vsm5caQIyTo}Q!fir)Mep6h~4Mg(aMd>aOX*bP<;1m;Am+{`b7G} zgPzym*ar*p?r|XW-d79FT`Y<2BV~{9mWgZWsoHsXMb$RMe4X z$%6LuSU@c9^6QR_-;1{~=1?uXeQQBf#wvAKj_-P*Fg>;m|Azqa`|=)&ZP>UX`seCW z++R-<@%#ReUSm3U7GyKidJ)@rklvywkBi2adpIC|FWv_4Ej#CRXE3!q5{^$+#vpz# z-Uff4*h#%MBk7Q^Fnm{Q1>#rn_ePAkpEQ7e>g9(QpZJ9Md&}R!;=)>R2xqgzZbz`s z>ZJWlx_6oner@v$@vDBZyZLkoo1(QP0>lWrnBD@DEx{?#;fU8(ex`K_x}0Kca;zL0 zoby0tW=fLKFr|&o{3ih1x5zRmJ1FDMHskZb$_%Z4?qvW%C+ z=or=SGz_bobi(V#-h}dSBa$`ufjf^DBlhJUrxo7Aad@RFp7y5}6a_|Py-4e#()(O8+UF0p8#AYu$KB{r&(PG55zgy_ehu+w2@)tB}`3+EK-MHggc8C!C zPOQ$ESVp%z8i+M#^}tOUmtdcRF?m-K4=R7k;Yy1!Y5zF}>ZN7SyvLZ_`WnqXtHT~L zYH(pGo|2)Bc;3(F16&?8f$WYo`5Ub4@jBB!6gdwM!vl`YqUu^NU=8c|T{Pm2oY!AY z@AU$<=`+m{Pvr^Fn5Nsb=MG=IMMfwsq#ReN_S&)pf1*@cEp4#P9Hw8)CIuK-pvBo?*1 zfX`BFpHmHsj~kGlWxJSHw_<|nq_iOg|5tDLm@(6v}j3p<;>)HX8RB)Lq%%lhyHq zn=CJ?#`IGM>983*dv7~XY8Zo?qRz^?v9l}Mm6l{&r8&e)E1(O@gfy!3fwN4}V?TSV z4cnsZ{)|v%6A^bU#=oDhl<_Jzyz=y z&fz%C$PMvX4nAKZ_NsYQ3(c(`g@ex3iuBtXbPK^rQ%XW}qriM`5p+(F5{sHB_E~*i zcaJ`8@Wwb*JYkjhQ0$fdiVKWQ1mF+(I}yKct6d?CV2a-+nlbR|OcA)S6C&0lxEnIy>AW4<2B)OKI1X0$eyS^F(mhG zR&gOb^J`!_I`We@{ThQdDom=+jJ6M$DM_SF&5kitJ#UBhw#FyT3KI6gL zW^bIFLbvR>%dv)FhNg8p$p7e<`B&kep~tU{5?z41pR z&f@T1i4hIz9Z~TaU%YQzTjAb*d-C4WfEY(#bmuc3yltlTCh3IS5`FRaWN{XU_ezX- zWgmx5)M4xo20{U|(T2^6U%PsjJD>63ZA&D5Z%feGO=Iv3p{FQ|!+Rx0ocKy`YRD^e zJ*=4qJ+~uo42;N;rUZF3%gL>h8dSL_pzb|$VL>kgQhjm)SukhXRC}ufM0(gv{o<(+{iGd()rP&6 z@y~GnjU&!w1O{EAsj4CP-gr$>o|?~1i*v|wgYI1h1ZNSpHSB|eWYen;I%UO)$! zEx=R0Z5L%f_|6eN6T*IjZzzgCHWyE-v=-G^_>6}*l6khJGxZ6L!x4o#q6px>UFBex zXGtVy>_pK3JN3IVA8k_$#&x|`BXsKuEFNe`rlsxxK61+RtA;&q4Tx9#4)$#Sd1VKB zH7yjc+s{sIaq$)Ji5TG@eHOJ-U4SS0NJKXHRlO`~;1#p+LZ+;xy1Epjd36i$sx6ta zhgYt^C01pf*)bjbJ6(a@%M6Ln*lqAqS_AFB8xYrTTNom&@Ce!*&Gf0^qKsd~Uz6BI zwr~W6rZ2{SZ?(Gd2!55=hMPe#>O6S?e*E%^$SZ!8b7~bxgAGYlsWMu+Z=8;!hMWED|F9w zAc-NFj1`$Awh@*+o{S5_FAZh`_LND>}*7i{w;Rby?+G?dq_!|#dY_>-8Dd1Kf~I$4GdxTd_P^@ zFb3ai{*9(QsD}65%}L$Va2UGo3iRD$MjSlD!Rm1}v}1ESKMTrg`0V)6bfxV~eA@at zs!?rAt~ywghrfcr549mGI@Tn9L=Z?l+YlEvq5XNDlF{#?L+HUTOK{h<#;9ta93H@3!4W`RTAb*=*r;PpybT zMGp)|Jz%rFtVpezva47_;|}uonuR~L(L#cT8Bx8_m$)|d2JJF4vS)Q)(*LtA_#ZGO z+Z^r4!F9@x-*YDnWZyf)VQI299mdp#2C@F{%sEoXIDZe)+1Wlnb{=c{m;<^#G1LT9ZAC`}~8*Khc&(SHxkXOKlbW zzC2oN!_3cL<`Eo=%ikGO{tEdk=e=d0Zr>tVMD=2vaUqNH({uUHjo*pIaF&KL2~)qY zSfWAseR&VXHn!X72&e9h#*)+SrTi36eg>#`qG#)&4#H^N5jga~aWwvRK9u$~CVdC{ ziDndOPA`Ch#m3~!|0o;vF3=RJj*P+0<@JiZNw>k8v2Cv&Ir6f=+pwgBskinjklP+= zfY7-nB;r^Odk?PYq9Q!&Bgg8cwRAnx+nL^CLSEjhl)uewfB}n4$)rw~2TJF%_+{IMx8YS%0!;Y5_w`^+=({S3PiKP$yxb z{vGgLXG&JJT$h{Z-GPv)W@Ki{UHMgpK(|cEG?N<);Wp-xtg!z=JaO|0+J{-UZZ#vd zif8f|?K{w+qd8ge@R|JC{X399)11us?=?fjG@qwqNBQ7ubrqDKaH7X*|M`{HWXVrk zXxP;ZhuLYTj77>53WqwaPz+;p!w0xMla04-fB)s@-hFFPA(~iYyBDPeXIq14f@l-5>Sh_ApM_fF~qR# z(MUT=M`uXA+9XSoNp84SwJ69ZEr!skd6iDf<}=qps1x{pRB1 zg{Kv~Cw%n6qggII>@982PLmt!9HyPvb*x!zPK;~2K=%u*@8G#P={-{e)MO>l_}HA- zG^I7BNKB#n@y{b8K(p9 zE&Hsp)P>8I9@u8aY{akP?THZ%&3b}$#4vp0tqn40lMCB#8<3rE(qLR<4p_P|F4C9= zylvK5^XC)FzZ`(~2-gSi8|y$;Y%nCZeOAbM79Wt{KvcpEiA%OJ(%&aBljROuj0ZhG ziuf~w{8_>u`t8ZiAvUCgsq&=7tW6oRDmD}8kcpj)=j6PN`4J9e?L$NIsUeKnxcR3E zb$RcDA1SsWeiiSb7-3ugR^d7&8t+)*hTiq4!?!@7Q-d|;XnZG;zn1;wCFFDW2#fW}tt%}iXV&PgHJH)TzJrpD6 zAM{XM9u|)`76gm320WU#%_dtX4piuOWgXb5FBO9qIgo8Otnkbf@WBC<5>XC-_ezY&kJ*P#l=s77A;tnfw~gn^yltk|Gb;g=9m4pw zzBmWKdnHE11V;%APb@@}Lc5?vV?Ti8kQteFAy?l1N%Xo;a^SAq(lA3tN9PPIipV3Qx#^E_2yr zxxE{Ke=12N4d$AHNB96dV^0~~bdk-LjWi>bXWK#l4#kjOZbn89>j*BS1kPxhljnEa zv1iGLr3v)@%}9J;`43sKb0K)0F(mu;#xoXF1Xa%siTA$vf3lqVz1j-98$6lLT{h+S z<=+QgeAZ9^bA~#zz3Y=IpJ1 z!IID@+kd$8)A1ka9*ap>eP4>`&B?#}czdjxp?ioHbPC0B7aVEE$#Sq_H5SEM4|wKY z0gZ;1Bxt7x42244eqlkTc31WR)H(Sm-X_N5+Up%eUh%OA@1aD}Mtd#omJ^Bh)}K_Y zE-Z(=O!xYSh8Nsr`?eowNhTY3iR`g#Ee@lHT_SPgR|~Xqe>qIPYC)>@1El7c!|hB9 zvbxQ12(qhy4u34jvBSW;nlNG=y|tGqv6&u}@%!@jEQVBorZLl`->IyhN8db7M`niL z14e@=zc2qOh_AdPu81DLJs*dtX(N8$`qnZCJYhkmte5~|8?QeU&~AOlW8Eu_D0x%` zR8O`bD?|N7Gm3_LR>1WO=A^koS$9rIzf516d*EZiZxKJq$fu?pBAK4d&#XWYBYp+m zqRvHAaA|rL;{Sz5tn+6|F>H2G-N-r2hFe1sEx6=^ea6)wIlBk$_bf<|hA;3Fm3VI@ zlJmh|Xx7;=xb|2s;`a@>QVt34*o*+RU=Z6l(Ogfj&!2#gE>$4@U&603-Sc&3WK+mI z7QI%2TDBQ+X;${oUv+*%jb2Z{vg{1R@5>|jotSRz$_m<{aU8D8y@U9@{2rA#&Xur3%Z$iKII~f!QA3+td~x82JjCzIBlw-zDN~7*#xPCU%DbVcyYVG3YLF7S z*DCm8aS5WfNQuwdWVm&@0#4>j$$4S5 zn_^0W&6TyHS+UaukC(p?T2fy+W!`!4?Kq5#2)hnv5(UU-s`C5T-xtT6hcADIl7d4@ z4Tu9%OJzg0%)?7JR#NlLUC4mPwnX=fJ1T1KOcE#eCGAG0;aiitl9eO-64MFC*(r!0 z$3D4r-#Zsa)Ly52cRhddL0q+5W-*)Uvu}Io;Z{_j&hAHu5z(?;0sOsre4+yGbul7F zW0e)&t3j2t1FI4Gmg``>B^P0xjR}cQTq3GYCw?r47a1nx)3K!t5ng?gHg%tk&wX2k zJ~~#x!wA-~aW4>@PhW>pv?b9$sq{s1g2ha`QNB<4 z6dmMWLemF^;`cDPlxM<+^AA8-xE_(dUMFJ3th=pydusAD3OhE>N0sc^E=y%^fJXyi zVpcgMj<6(eJP=sfRKVXLOR~#T*{ilR`ISQ5a5-Lfxwni*+;*sdG1-6siSByv)*GQL#=wN4U8^Q2N zG4yjXCKDFDlJoZXNuNxUJkMOH8K;kLXSPt@1|QY%_9T+ndmZS`nbCMiH*+csD1^_S z*l8gB6|nzrAxv{(vms}!0=KdvSlnGo-s&l*PVZTAnLbFKkE?tW-T1059|wsmyqQ1r zg#)8U;NUS2WqcII$8+L{>{kCe8a8D-P8o4oG@FC3nD7jlbsG**7vv${IONmL(w3MU znCEXm(wtL8QQyaoxiI#H0qGN{oR4!jQAa3n7>#EodMkLZ_?S_QDDF5&=xS<VM(jl5i5@2kR5R0a4)Ea0+f{8<6(J%J+v>Q;J&_JD2L*uTI9ZMxM(C z${b0%R70ZjFp+&rR3bj1ZtX{6?}t|qzbdt(Bl*o{A?Ms)Cl@2W<#wWLd?WFsg9(Ud zjl4a5W}_FI+o^d~$!mwO$)w>WA=p&sBH~x^`-%~|ws#d%3&ZfdfSt&8pChSdoYONW zP|mYPF=E_7RhksG2tSwZNBk<@Lop(u+e?KoEfyDL{gjOx>`1nROG)`mFFDUMdD|@Z zS=gxXNQuRtQ$LHCFmF$cc(P%;;(eQVe7qV&yq33dZGa=G_h%;;>Ja;^T4%H0A> zpIAi;?mRQ)ZL^-cPw{A?&lnuyt0rRGyjNm`S+2hDrOpjMX}g)OoAm>Z)VYuY@4v`< zCj5X5Zx^yT^Oby*$9LFb?LyGe5A1ujZ{Jb$J;Md-1{#UjHt!YhtwgeQ(i{4F#8{kx ziV)uq!*|(;pSvD+x(lhNz457+`J!hc|5Urqa)5827?7_9DeQUG+G0x=7{}mb&2q)a z0j)vi!X&uSQWE-No{v~wI>PWt(+LA?gT42`&RZ8n}EQk7*7tC0Cmi81>-{6tdZ8XPehB#KvGd+9Z#~f4;3B z%&*#QeFp4q8xpzgzle&h4fJ5NI!=x5C)jN)h7_t#cJ;U=FVHFi+w}%ySIIs3gKx#K zc!L26gFEaFX3rXmE>4cZ16L10>yxWtqlT2s)?NpEZBwp!6%?#H$*^%P^Xk{Z!*ny7 zAgM7|MZ}$XZpia!mi@>prlXen;KMg+MDuHTrYB}zAJfj#?(^ng!>fUa=axL@S&sgtS5;^IBDe0mA|W#`g*BzU;uv5WCiN%{y4Q5s@Ce0 z6-(N=^S0S+r&v!R+dK;WvhRxdRlHYXgzLWV^qOoS-eUd(O({}lkwFeCfM+ja#u7E)GCl7!1RF)Q74_DxTv`UtN{z^qzwsh8Q^tGJ4*eJq zix1svmP!7ULG2nsw9GC+F{_Znx5aqiOAo}a zT2N2{dcC9srT>d~W1oafu7qR%2vZSaN>DjtFH++7Bn@~ptHj+|fbLv~!sjNpNBpX! zWtC9hU`PV4|BD#%Z2{6=y%d}M36t@NsyXElXC@^>EYg8Tvy*ys8v6bx5+7n6bfcUZ zCudpb*32Eyd37ZeB^wgg9Xp`-<0a5zS-g|el${*Ghy9V2djwwb+FOJ;?s5sbq!^NK z4|a*rtSjvCI`r*t2%dU78S$$OD=T0FQw_+!`!8b9r%{R?@8fW3+*_HKIrD0@lpL>J z1Dj4&Kq~uQsno3bCu{KE`Di-yL_(XG0Sp5 zMc;soa9;(yJ=J!(FnF&4+2f(iu>3yslRk~{$L-HoEBICXzG6hApNY&yS6N44_gXK!vtNkFD}G-wVoE=Wp!LlgZ#PJ! z+ZX1*-MRW?s8>Aj_6pvf0PlzTWZ2|*W+SA=MwTBRg3sN&h>SWplVc+cNYMKo^0&24 zM2B5%=+VvcUW1&7`A7qjkhzn6ci*)esjwQt&PUB_M&WDNXRd2QO3!%0k$QcyVKaLh zZ1sYq!v@5IX#*_FR-Oz~F}thyekBx-9DfS&{EX*=k`7MfcD5mLs8TY>PAmGzE;r4< zTEku-epOXFCo-xx9Dk>%Y16sw6uO#MSPI=N{nFVeUZhxsn~M&6MFuW zBWb)~K-T1Rkn`M$x6L$Co~=O-nx^0vQO`ttkoQWAIQ^>tY2O%&=M8v6mwa?2$=%sR zgg(vgJa^)4OC*bbCZoE-Y53g)F(2f;5+fw5UZL(i%ja?$gO_e6|PVW;6Mo;l;2Ki<(t%X46% znI8H0Jra0(h8nr>@`4@-)>h{92RVJD>rRcpQ*&!XUh(^i5zgy<>9V=Ya8&qFgQtGgjby-4xRYu^`kF3z$$4q_Jmi44E1*5$a3t`m{LlU}t8}PQ- zY4W7w^xVSv*zL+V#P7x1*k)SGJJ%+N+h;{eeZ2nZRm<5pQP};gGd4@yE?b&d4E2ZgNr&u(B8C+B=^O~ufXtY- znpI4C?inqFMrvZ$qn#1Yqj(l3Mg(1Tqya}4;gCVw=(%}?u+ZL+?9x2|QPT=Ry2g-L z`5uD%tjlTw>k;1royn0)?3|a>#GS7+G1b$onAXZUqdkT^7bFkcK0gBUACzB6blf(lv;OT$rWLJM{vb$3- zys1|wBNDC2qut61uQcrvo#^j}>5HRCNUwpVY<}gDBlEypRt3XOvy-eD^PvCU8t8J> zoW!dr&pUfL1-pKIg9(7FVHV=+3 zH6YrPqoC$*KIHvjb4?$%QmLa1kD;mWVF= zJOdlrN{N)k=X?ic{h%|jnB_8q*{_-9sgw3n9UO*7^b}+>^YY-nt08G~eg`Zs%mWRU z3qPx}8?;BAfj@qRWPUs4vt+++0$aCViFVQn{q(cFA^tRf}v zOExluLHk5Bf7=qgdSNHoiP%aoV}0xsw9EncG>~{9Og3m@pGf%FvoYm^c^}uJQSTCpg6~&ksA3UQ)6;D0mLU#BVkf)1x$}imS zM<#S)=Nm?EmXF=-LiV>BkdX2;7WH{(N6;0Tk$9ub67g5gf4cmq&g!+l`qS8J?0xS0 z9Zl|84O=vf$X~}~c$9PnK0cO`j-!&HS6+*rWgC(M%kK9k zr5X`%`Rg(GxT`mL*c{0aSL@7#oIic>rkDAYU&X)S-s|K-?0!8m@1?RTGd?0iHbWkX zA1zsrjumtzKP_yC_1nqtI<^~$?qx%6y_gIKR(B&~f^3LQt+HwwcU-+ zi}Jb9B-J9w0x4PkQu$f+Uo+b6v~M&XyX3$4h7crWPMau3e4$#N4nd4Uk~ z0Di?dOu2tqh7MJTm#12DpZsC_Zlp#+P(&ix>-UPmBmj%TiRb`5(P} z<56*?6KRQ%lG2lba-Ko(wk47l)76S|j%y>!h0n~D4Y)|S~Hg8hh36n{Jy+B zF`KA5lPdEw2**yb8FZ)MMC{pf$)(a(&d2IvZcu9SPdMBweWNWG0UHcHnLQqMS%`W5=*$)YBAKJw;mvw4sK{;1j9 z7uThH6|o84D>34Hvj#4jtcGWMONE6sPUK2XZ{nL=;Lh^|-ZneC)cH9&DKW=E5H%@V8L7oK1;w>;ZbC-og+zr)BLyZT74E zel~VtdHoSb*iS!RYFy%L` z{=^tj3pM#t$3kl*6xy zObMY%OI zWY}Q|{;AoHqz$qsso4k7QLi?nG0*OQ&@3-{w8rftLp;};A@HlBFSjMD_WtiGF~ZYx z5Z!Pj2D`j2E#)ItKE4*m)Y28hh4Q&ZcvaPkL1(9xLa8y3$=xnM3H#fV{jE;Q;9zSh zJc|KxxAi=`a@n@FLc4_Jw5)o((C^h*xVWMx>0*BjonSLLI+*t)GlvY4#pD)37uO!7 zOZOj4ZDEMPE4uel5XPgU6}}&vVDViea`<`~wExls+gpvuPvZ)J_~)R?&f2QoC}TFB zI3J`3J1`ykfTJQM9X>AQ)m9{uK-~k1JvpY>_7cJ8Pkw`G>+Hy)HQMqnC%?eR=Ds9- zfq~qs>>Es(+n0RGGiTqcv`@!qFbc$u<|jn)E+0*bZEOrVfSUEfaM7VrGS8-)u=;^M ziC&rpp=)n|jt+~EQqrK)h3imYZ9q~Qwy^8)=&dhoef=4!&oai7qykeW&?kZ9y!%f( z3O!?4ysMq*o~f$1i0uXCB$`ZRNf1wA8rkZ%KO<x!HhvY$qv6-`K6Di;CWaN(xFW? zv$1g1+S0WRG1&W+D>6<~fZAh2(mgd3_NbP^`uj|)czq^J+@^p@#~A~-k;U#{$%^#~ z56tG>m8dFWI+w!bOvV9p4zTlyrC_j)<;xf!tV=ovM;T*HsaGQWo@)t9ZDsgg<}vi+ zU@6qIvj9CBySvxZQgHasfb6gKc2|s`uql-3Iw$(Dd;a-IG1{ImSLjqu(D=GMxO?#t zSWMjpN%eVPKlTx*IHrT~f-_L%^%&lM+sbUzUX4H%Woyy?JE6j)tnZLr>Oh>PHOek- z`3~OG{`ZN4-hG3whyLHw=agibY_qHlZV2@gK8*Yg@oEkv`Bpc~KZ)Aq{syP+_W$?k zv+(aySrJ2AWC(thf$$f6TL1T(C`Q~m_Dj+6m(+u!|MJjB+qRTJWI)fiSF%*UCko6 z@H!h_{#79_KF()|hRFqJ+9`HIx}j0V|JD-JZbERGK5=Dg)9OQSfyPOFQs1Qf4X#R636s#4hrxF}noq35UJofZc~nr9Q|)WFtnmSovY58!pm z*gQ!8VN_0|aN8g@u_>emELnHtfc{?48c_oySqG)z{t3YAl(F+_PTsWO`C`04a|Pn- zPJFG1&r(Sw>SGtv3?UR}zDq&;Dn5TDMyQS+jkDF&aTFSj(pObNzis-&x%C(XW>iAF zwmvcNKLJ<6FGKEgJ)+s+IJiKebV@m3h^1O)o`?K@jdWt`+gDfoCjYME>U4imlB-SUUCzL~}2vabh4bsXL+ zF~a((FEY^z!0Wso(p&60-c}hBw{tdfp4afU*$f4Ua$D&ch6naMC}Li`S7OBBOLel( z`=;T|y}#0J$RIMy<&jHoZxQzbi%4r`T+A%g<<(pn*4N+K9Ls?-lPYlTVzJM7`TA#M;+m5dS>qpW5PQ zyG^Qu-pldBpBDW@iEG%L+CCPfY)&}L?_UpJ3)o!bfQ4{F=O*lGF((&;l$j#4J_f>1 zR+ZVdv5)ADqvl-$xxQ9J#bXfYc-4U1&x-u5SH3yFjE|uar=qYlr9sA56!@s0&tEf5 zz|xHrTL<9BE>}d#s!ro;Am~>ga^6v_vdYewoYkcAN>}VL*$Zk&I?o}w#y+%4TV-V3K>X$pKac}P|R&6XBq{hc@eM3x@A zf5|4OwZVt#rwDt{Z*X=rCgVR-$Q$|>7VS48_qS8HSN8=fmk_|>FIyUq|&4F@bNM6$To#(#NV(W zv3CQ3x5q1EvMSk`*VLrvG`vaQ4XxOj2kV)df8zaUcxZA4f~yTk{o80!wx0FL>`qoR zBi4s(G8!#UsDVe`mPDrN3%pmnswX=Ou-}}%JraRUuf-sK74IRhBFYf1eW+p8GQ8Va ztS`zV#Mj|A?t`K>)d{P;a}h!&)xaUvY5jV0shnp>eV$&0v9VI}Bc_yncV#cj6=&RM z;T20CB7P!l?dcBWFUy^n&G8456{@5v(wg|kDdUn>y?DC_TRh(pbDUc? z-Gws_1M!bhwNw~X0B^^blBT<=u)XjssJ}2J_U${u((1Ep+PEpnUa33*s=vTk@PFO| zM^&~LZh92Jj77#IQ|q^UpKk%=ZZ;v?X10TN*U!S4i6&&}{@?66zBTF!{u&0jShJnL zuj2O=Bj(#13C`Ij*k19R@(A8T9?jHr9}}9W#VVtDp&~V1K6>SqW7+%sP8@yx)EFB+ z8!Td}JTn#FkAqR;uR3=Gc4>gl;*HA&X7!O&_B?AN3?R z2U)XdY44Zeh*uiowTYacvdY#(Lo&v514DQP>mXa!b)U6M7sVbcgUV*s5r23G@I8Lw zI?mkBX@l2Hzy=xy*lcmBC{Z!`Bm8T<03RM&CJi9 z+Q933N!Wh@wC$ILcvJm4%J2K7>?%M&A2OiVzc$*`OjEqS6^g6TS$c+fVz`niK7aZv z=RNGkyy}x?NpgBfm{+fHomjxb`CdLT$LW#YLDA>!eEg|x1^VFYLdIP;BqN?B%K6A!b(#ygGo5{}hAAs1 zYjSmH$1MRkdS8o(P4Ij`jCfYGT{cH!J~nl%6mbLI#+L~$B(pDj@|{qg$9Xilqhg|d z7*2~mD6+wOC`SCqYl}8KS&BWnj}&nOKDtjG>q7F_{Eu%*fy_ofyDZsTA%^K+S&F>k z_Z1^-eRNT-UL5wAcyn-^hYQhX%2*N3UUEM279&(1wMCiraroxSViB9*`G6Sl>{el~JG^5$)`{zM@K<>oVmzx2BzHohsP}?tctMAk)PA%JG5u&j z(ut0okGy%?>@;A*EOb(J3f>p>LBu9_uf&M4O+{#iw=+JPZXnzn=|cWI(I=nIs>u1s zo3|~I^s#kB;Za`rPkmPro8Y|?BT6Q|M9xLOkn=d1aCEi{iJQPO|E~4!eB{mBW*v>1 z+mQ@<;go^yA~wN$B}N>%=tU1kF2Q!yhKN^UdUmlHo~K!ndlS6Ca`+1=b`gLQ*x?c z7I-{WfZZz-(qYFe7!V_XJ=4GX@pCS-5xKI2?q$84X)N!+D-Ct?qp)O&1S~TIbwz)?Rz> zwVsE?LDF0TWs~i2bw-P=7&0HG_u0JD$_))**u#zV`8)XBhSxDqT`&} zlhbeNpog0kc7Ez5GqI_In}01aG^zhTtl2f!HWAyJsq}H~G=W$BGW=Wz3-4K>io>pd z6u|0Jb_j{_GwEB`7}*hUwJFcAJnbuyd7Lb~xogolGOX z78=?z9oF-8vNgZzV5+Y@PEJ?u>0b(XBaNw_L3bJMA$?TpVF>FC*{K)-1|wfXZ8t~M z$Qc0>2fl`WYaFrHSY?fH`h9bS`G>aD;aDfp%8SoS`BfOpUe_5b>aJ+h{0lmw?3K?y z#R%Jnok@7(1DH2gHeY*t~#c2a|LgxVu+bo~HJg-vKK)cs)^ zknKOouIHQqw?*dIfpyOD>s`i9x$%=QnJMa=S9nYHKNLgcOIvjR>JDdL7Q>k;TQr;E z4F?ki@L(Lz*L9TZ^PT@`ld$#+XrAyudbe#oRJLLD7goX0+`b<4Upb)D`f>1K>}#0t zp99`xt0lI^S$SKCDW60oZe9KOH-op?Hh@2JQy$%U*}<~V%KFPUS> z8MwdJ0#gfqi|&a%t0$9b`{_r8aO-ek-stw|d%_lHO)Q7|-P&WUt}Q-gefl>}Y2evd z8}ul-#=I&?+%GI?Ka)O$V}7X@nJU2|Q@pZ#9}H5>1>LcxxavR#1dq*wA;qj;?S}IF zW3*Ri#pk1T^!t!sLNC``xSGjW{@19$rra|ybF3vkD^UU7Ly4p!z(f&n+K7(PYpu9^ z=@j_cnPGKqqwMR_Q}B}UcdJeKDdT@9#>3+9NKo4pMu+Gu7I+RBo*B)%ycllvwnOK3 zTFk4cZMwpruSnmgScvvA`27ouM+LCEy&0-`K4;&@O3#PFol81YPsc;S_mv!eRt($f ztWkH>R~a9>*eSruPSUgcBB@H|OS0*e7rL|Vv*qRKGP5pTcxo5xM0=Ai+wb9pL9A!v zn59x<-AyAzp0mb?tjb+LJM}Msesck}=GDPA))lX20{HDj9XyUZ3&Un1p7gC__fbW1 z1nm+-n&;`Q*p_w?wi>eM-nmHjx!onO*~0n<=N8FaOfP|}t_e1cJk4w@)HGE@U!hdi zxQKKJZG=2$YxEvn1^P)%;B91s1DY%0R$U`VtF3W&&K+i>$L1(uLG)~TCE7#)zX~`L z<%kw%^nmC3NM`4QhB1!l5Y&kw+2s>ZKP@RiKAGyp+`m zBR+)-_v|C-w)AqsUzca@5!=Y$ZLjFm%8#bn_Y%y;{e(w;9++{k9UKk*0Vm$M1{6>hXvr2e9G$K3A1jL7c*EW3QwrWNqrxnGukhj)(dI5+TozixG`q#*(4B^XVY>Q=-)b@1YoR_|0Q7re-WXQ?W&`)M0gx=h$;! zDV6b=H*cGLAJMysXa8xmV4iq2!Fwe}+*4mij*Oo~je~Xx>CDDV)@f1b$IqwR4-ah@Lq`#!^RYmte4jG+ncV6`OL=K2_`tCq_vFCym{Mf<}?Z+L7n_)_d7PC z)dcUA7_l~ybsBDHLpyp7RIGOJz+tt9_~KfXKfg}kZL=ME-3{bmh8pcYf1qeJ!Fwe} zbT5ukgtdD>JiiT+21xjK6d8ytO*7LT46igMKZ0WUto2kHTvIDejf+x%7l*# z{OFx4nxdS6pLhBEft@Z{1S&?R{3La+$^?a4E(DodqQs*ejHo&TKNGF+PjOq(oX9xO z?n)GwED5#hQ6uozj8GBlX5nBn~Yr_i&{*~OH@21$S z+7ln?8KL*zY=6G~j(=lVcYpVeLS)!HY8vS-stf0B@V42rYIaooSLs0?ZjKi=|0#x! zBl_TtwohRsQ@mM!xDU3b&!KRx0K-)Su%pUTcIO>NGq#@Op;TqnSt(!N&hMo2weGA| zExEH|@)ANXA2=%75q{{F55sO)W2b0M(e5xialg|d6lI#x{3avOs%XO;R#W1__yNy~ zS4eD*YPu&x4;V?u1{4Zi9rK}0CtJ+g)&&Nzo`&4Rwis}>3mE3JUFTmm*xFIajcXC4 zr*NI-M+dAvA@H6Uo+*IWlWkCA?Y~~tj@DH)CV5j=%Muadeb;=jW6b5Bzv}>xW*wkE zwG@ddlu<-0qrimns&$*3SEpNt) z>SXxJylKBAcvb$tb$zE+W=o%}|3Qw-3lkyuQD##mxcuJ#B2H6J1=X)18rRz^o@Ez< z*?t-R$`#;bbuknr_+uvH9vB@^1OvAFW6WcL{emy9=13=;Or}>ftEBqlOTllgIX*K= zg>=?!KY=mcICn@Db$zoP;Y~Ketl4bEvd2csv&iv%;^I#4Q-8Ci{bClAnsxrUI`#y-cCCsNc-F>9|DE_))MCPCKYX_yeMT=b76imK6~M9 zGY!xwxg^0Sg8uHAF3QMwuf&Lt8i$EL(~#C{n<5Om?}0IzW@r%aB;&Ie-Zraf%*rJ{ z4n@$hTAow zjEwh6jM&}2l=Raup$U0C6kDHpU}nBCX02`|hq~hyUqh5FF7W5G z0dWQpCn*uy^^K!C@1IC{tpqdkTv)DcgWFcSL+p_=&>Uui_xHH7D4G~jAuQNAnGSgS z#jjV#Ty;G2pQ1}+PS{n!4&wH;0{T^2yQXf?8(9o(aae+Kw#zG=4k&no!Mwkij!Zv zKbM-APa+)_${{J%99OU`EaPht7_+nVb*#?v5vyWd$F8JuUa5BT<=%Clif4=su}UH3 z|A)6Hw&6Q0jcm@CN$=iNCw=CXg2yB?bc){xm)YNTtYYteZU#Ily8_;w&G76*Ww&gX zLS6ZqyNjq>PXj;xTKwG3X9kSxWqlecN=T$;-BwC@8~k;BT3vx>z0Giw#U5tks>3?s zv1KNmf48lORfQkLGpw++vs^<_)Fyyl_c}uAu9m|lGY9mZ9ta<0WpFs%9y|07{D%Sa zl;<(w-qSF;Fz+1U89R9lOl7RGCtZEUgNEi3Ij?@mt0JBWw?n(gu4vM{pMB?#cU6$i zU&Cl~+$Iuy>^6L3JWk^e?u6zsOv|*{1g9_F4m#`DnK0`m9Wq?`CT=lKkuEqlhvq(- zOTHiW!~?9OyR>MDjGt=<<#=Ks%K#*Ul^MW?4fei~mWgygx;SUxXMHguy~TFym>}clTHZEee4n&h+EsNSRouKMWf+m=Yw&8^Ai84GCq6@Mu|ink|5e0_hNqFZ@nl3;BD}>S>>6woGiH% zPJ`dC7nY@a;uW@+VerRM#?O}G+1adJ139p#3-x&AD4IF>xzFUNC;pmff;umB*>67b zO(xl!*`I32+9>!@ybazqqIr3tv-1RG(MF5XEujLd??`8aUO2^qX}GPOF-tx>gn( zw9kR7%h?yDmIW72oCG++I3R``VqX2)YN^PL`6<1u+nf6O=YSD0KwrkX5MG!AF;abW zuPTJF6{lb?`}d!J&N0Nx3U%LkV;4{ZkFJEDGx*tnpCuUQnc-APekLG6yR`>c&Td}p?gZAk6Sfq)>D=LXqlr-8KDa2Sy((S2q(`_K~RRpCB;X`+8JRg~xue$=WNy)c9^Rj&0; zk%aES~s--@MYgyJBqiZNJo=K8m8EJecq0jA!ak!!X7#x}>`cMo99Y z-PJq@J=PVQzMf`?86)2bu|30So$gub@-rtvtI-5sU(SFW>l_GKZGyiQ8Nf$y#yeuqJn9Mj`xL|y`Mo~qzUT)%!4wor!Z-+366e{51Tcg zgRhJ!$f})XUiFS~S4v?Z7rCWBcrkYI&0n3c;JLEiCp~d0xvG~) zpA2^;Q{rzzCCh!1Ez;mn$PE~`&UTUNnecH(*@YX}6e_ier|j1JBD_l2Im z{xq$J3gtcFBb?Z)>hy7nL)&V|pmXuU9P?XHP-KFmLUzj5<82tq_~ODhZjotSx&=R2 zM_qB`2KKgZ`eUb9?rKE)Y=1|hZWn{4w<*s1nIh_BT@%E1B)>4-t(r8JWyGBgR%|iI zBGWck3)1C{P_x>Bv1-)HG?PC8COaT~@<{gWYa^Vyz*JWhEQ zc-!pUxpFPJ@*|N}92Cc0-kumyoP3$gNsglLCyf_UnT@4w&G3TZco`p2dD~2}&>)+P zNuElF_OKGgUEV7(V$p>PGP3hTn!RPY(9O{cKj)cZSDk?}KGyQK*|X9uC6CrdQu{9n zqO}3LHma1iU;mq;F&z9Pf+4WeHwOGNVr?-lPY`vsSo zC}P{lNXUiWisqdK@OilfT0cJuHrvm_7()yE^5O^>R^-7}T?=f`KhA7SI&Y@yEmbWKfbii>(mDN<%Z`~Ef zh8}c~eQ!U06hCK(5iZLzNSgKxT6UvRx?svpP%v(7p?8`PIUb!Wh~w`lxiBE9*Wp zGRE$&QeXo6yQjn$ySk(SuQwu*RFAh-%(ZZ&mQm#-?T!SSS;c4F))%mAb1Tf~V~;oL zYN7A$R;bZpkDb}Sv-839o`Uz+arDo%kA#o<`<$v^Z=D0ieH#HoR^5YwwGP-2q^u+B zyt}ust91xH(xaL1qx^eTfoG5dc7ou45P`{Y(#Y?7gaVzJil}up;L*?sYddZuy|2B1 zmFZ2O;{eWdHyC>qfJ0Kwq~Xy4+7Q&pW{+)jP`>drb_7dnAtp#d7Ncf(PGmGk*#?^uQN z**x+wf3h(5(P#KlZ;hd^H_N8hHGvvCug|%VE=vjg46|4*R?4&8?E7#C*Dn^j>QJjy z!xhrPVyN6hvC^yveD(-X@||Mn)*^V`Ru19n6t@mnst@&_TP{P`iFw!@N>4TTA}# zN~Ap##B&rs%ZL%tyX0h7t2ml9rlYW~$qP?1MFiK=(`9@-=WVld&XRO;y(xjt@i{A+ zqj;~xh(E0#lG*3R(Q}7Z2|K=eq3Z#*dp0mk#>aEswnVab=s9xmSqxQ^PZZ5jyjNnx z%r~lZv}q9ic=Uka^UVvLZCO3sm;N%|o?~|(RI4z-BlV%mXLbD{DRmE{&s~;@<|y7P z9?fcm8!wa5CamJ{aWBP7!41Qnwnkav6aS~Iu~g+dp-!8=h2ajStHjSYFa8 zFjiQp(5FMH`Y5K1E`&(N&oJxLGZ6#7xDxQklOo~5;W+v-Se+CX6@X8uEl#a-hA7v3 z=%8(j{VJW|E9>B@?_rDQgI(EswPU6kIl^j$7hXF~4l%v<-KPxE)b=z?8g>JY{Wip{ zUvt2s@;ZEARSPwpPcnqfiZ{Z4-$qb*bp}z}cM^s$2Ia-g>F}{r4ivGd?f)qq_z2GW zyhfJ`Dzhh06aTe@AH~OZF=A!DhN8O15PGX`Fmc#>61t?DqW#$&B6V2aHv4K<77L$F zPNnN71WNh4<)6Z%*ZHteW{U+;_Ut}7sD73nT{o9rt{EX>B(+_oi_4OoaP!tN(6+fV z-ksuvmsgEqh|GmENa^TU+U3z{VFJ@7cT_jW)eF^S|1p-rBiGDu=!g&gef^j&Ipfv) zUD%GjB^QE?6(5cCl<)J=_ALXq zR0p&?(G@~U%Hiu*2h5Q5U|uDMy^(&eji#jotA%ULbY4c`BA#cB9_;J;|3jN1>F} zG|Nr)fR^S_Fx+Oum^=2uamLHwzQ`DLLi&`0V=MN? zFi&^CEMt2>rl^*ptoSwYDkGCNL{oXal<<)(QR0n@o||In;!U!R3U8dj6tCS6DP!Vk z`BEY*nN4lRR2G z^z1Uy);W$A%3p-)aX5n~S{BZK)|a3iWF4NxXgKuA&VCUr-GW#eWv}JK@`m7!7H{aFfqM$u|GClWGhw!mv z<0Qt>dCmq4yj}l^qDyF#P|+%k&Z{*eyt*_W?ZokF%pq-sR5G02j=m|i*?JN}&zoXs z;x>`eG#~jSlKfYiipk?f(C4-nMe5nSJu%{0x4Xht(-_(zs5M#iCm(EH+u#+!9eyR| zL2`@@b~pBhfh*2JlRm4g>gUbA52^f@K%b1Hi_?l;sI0VJu&uV`jv`>Ml zF>)~8Z;r7CS2C|2t$QeF*oD#hFUv$V^nBgCSd-Nz%UrQWuMf@rra}0~$;V)E6n*kS zO)-ga=|OR*^!tT!_-x~dx#JyRu6r58oMG8(YdcZjC9B2Rqb^N|52mdjswry!yANj= z2X4f}_o9AIzR#28B`U#8&tkJMpi>>W^57B_*h$f=xC-Jgl)$%JzKl7&8hT7Fg-vVx zkp8FCgVf3VDsM=)rDMzesmhhtVBf|X+wFIgz3p2MYQa{hn(HM?{P7AV&$7Z36TI2G z8=})mVd20C%rsAupifL+vA1r6Cp}g1+`o3F|>Ii@bQ?{(4S}#EOn8#(yt`^&dt22+h82Y zc5ajO{@HatbHm;2E5wIk-=_kcI&AAs*AM~u4U0cQ#xz`a^WoIYAP zt7*>nBG2x`(8MF9WY-;UoFXyBg;NiRzFPikW}V)>YDoOyD0;)-gdfRhv7>i~D-kun-B1nUVtr<#txbW zXFEELgUMbCo~eH;NRq`B=#+=q|EzQMX_!Jo6&FiX-o#7?F1Ht`IvbmS&`7 zNco7&dnop*I6zhLaoborFlw>%!s?R{9dCwn^40^d)yR7*kvyHTLOwHm5#1GZQS@|q zZ6|Tu-J_TxU(9)SF&S(kFZj=VQA#r`AvD zq*(E62pyYuNXo}^erDivZI&T#M8)jkHq>I~DyhzclWf1o8jH~y-n`5P9e*oKTV)NY zo~K~aYHL*MrCd$C&CVbJ_h-ux*Gb{;}RB+RbjQJE&d{;H1XphJz$8Nl z=GE0EO(C`=i4N@aLdwT;KBpGPc3HWtFuq434aJ#+-xuNcOZZuW=`_gp2tH*hG%9tV zBDbj=jyy5O+eeSc-0qaaJC^$%+npSXM>$|XZp&cHwj~6izv09w}3>1Ui=a4g1s4!Y`9x_kpW8XCevh{W6Ah6H? zOS=@w(w7&(c1=S}zpq^5>^Q+RWnHCo`>huRO)b52-?A?Dk%m6E_4=`nf zLvZ%H0Y2WbpFOKar&csi5lWxUbCstC`l9Iw^#e(RmP?H`>}HVSf%=& z-0d1ci%YhPW*mOb5F>gfsM1W^G4xx7wlF=w7q?z!rxq%UWqfqzZL__;2Y<<*+adJ) zte>J8hxba1c;cr;4}0~cyN7HMMQT1e^KqV4AuU&-v-^*tuX+TDW*put-dk3e@#lo} z@5Olf)+LA7gto`VUCx+PH4-W|Xka=!QU29w6twBs9{&q;#;?W7y}n}x9q6{N!)e4o zFR9@kKm60#1pju}CEH@;hgJ(s(4o&pnfO^v(c37znvqCbRh;x2SyconL(SP9>mu;D zUj*}l%<-(jQjmnoAu`n*x8^KjHa0ANBFMudXih&f!beL!whw5>7-(kMpiCbaV%d6a z#dxRT)PB}gDIYocs4b47({HLM61IfUOFFS~UNw?Oe_qZqXEsYbjZ?0KU!85O(EK%) zUfDZK&X3}wwipq$?2Hhe9Zwq#ii>$AE8gB3W@8Xjd8jr|Wj3rEOo~&tB-3}MngSo4 z`TSZO+k>K_grqmKX-kg|0{=vL^u;JSoSw({@ATP|mZZ9sN~cI9G+?xtX^Ll;x@Ynm zZg&4)rl|-k6~+FjP&(^nrXL@7`TTllVL4-Ob;LC%ESZhVfd`47bUM{;_$B3cBlvxB zewSM!DQz%U92y%ym(*XD8vL#TcWYx@cDWc9u>R_$%UHf!QVh#mSHp=`?3}xUg4sBd z`hi$R1k)ETOGtX!O}JcVg3HIHiz@TBF(#d~fvkr=TUlY6d|XGdwdZiE&q|7{ORAw` ztTB#Wa2^s8Dq-p#BQ%(E9(dcV!gQd8qF-GAZTh=H%8%l`5+l};1%3|lnba#}x8U0P zB}CRUO>ZAnI5ejgmcL>9)ZVJFRrMuQA!7%++Kzd(VX2m)&ybPy>8)OVeCM^u9@kmU z`1F(iknoNwbj?(EMUuH41}<^HyhKacR26%4ZtZ~2<+ic}Gdn!{!ww5CcVH3Dajh9` zHL?$#c*Q{Y{LUAPhnt}Lgyk|m;_zQEV{YlBPPg9~O<%MhB8sB?w=G7X%u}(T!zS{* zj}4t4QVU;P?J)0W8`%ifT|AGisfKLoBHMWWCG`4kho_ReFs~XKE$PqgNasFlC5ocF zSG>1u0y*Y}ct!mrDq!W0TDg#-Rtaivho>K0pVDr9@F zE*GPP)S9_;PKTvZ{`(Mp6Qbxdplq7(X5MtVO1_xz8WVp{=qlfcIhKH`XD$%gm;3CB7{ z(G$1d%6W}DJ`x#kJP8Tx+@Ru-QrW@Y|BRqHHJlagA}jN<_iZV9fRu!>*1YyG8nu#4(e?f zqe{00pw|01=zF|`iVKUGS5n8XLgM5J^u`#FnmLt0;Z+ChIMQ6SYaotryR%gkaqY*_ z1^P`=o^yGHmjInEnqf^uC;yU80+_O1!rEWk7df)4fVHgl zL+^{VNL`2Vmsm}px~}@d{ep!ue~5Zc5T1zVeqsm=pTBJ?iL++rEe-FG9T z0@PbGP3En+EM5g?osfE0TPh}W>qB*V-GEz z;}ev%`=3!_gpOpbuyDfuYzq0cF>H)VWeLzlDP z!*A$g;mq<#ns~BnguD@H`<{ubT`jiRcavjkqTj$M^ZzJYa(6DmBJ7_YExtt*%X~sfA*r4Q@7-;!e$eI#Dn=Wn=_)+|I#fULsi-nwZ@l>rgStw*S+^g(yQ7d)e z?FF7J2UQIRe5IwVJ=ciM6Y4T2GHvG!kyre6#fYhWcM6MCCexHQYlW^M*B~v#9_PfV z0&g#a-T5MgJ$kNF_J$XguMqVAn?Xly?k`B6o+ytBlzm|N^V!X?Xu{QjFs@7_}s1FWp^s;>!NvZ|qbHd!P2X@U{{ zjdTt>S!{f2jJ4`{Y>wKt>Ag@ldMF)q?j-4HSP0)HSz_;jQLO$Z52W*$ZbrK(h*3QY zp3^LFjP;hEu3x^V3k!gG-I-B1Lthgo6h!YG*gy9j2#wZvopDf!6KK0Oky z-5N_DWNj08MMwS%R$qJ)44C5W%bCjcV8fbELf+g#bnLVO!p9{(zY6?T0Jg_0aqsmB z3=wzzvtase2(>zWSR5I+Xdt#x8MjUF*%(S~8Y=}}1CsZ!W$sC^+-!oY3+6K$c}drV z2iZaN+tK%;`{1uDMtsbYC?<`QQMU>A3GXj|AN*5iJ)?u(2&o4KQX!(0@T2(OLyUM~ z{Y5e?3|bFZbJFtEI~B%vOV+3w2iGsi(z6QM}^g zBOkk1z0b34LQ$U>dTjnaQ7qxVZLwE{sh5PbUvAX8$cQfaTnevuTj7^ubD`S&64dXp z#L92;LG^Dbl)bUUHeXo|FB$!?UPygDj;>rdmhgP2+8YJfA83oAu0b%>{Z@b4^KLHTJ>j2~*sGN5 zhKk0_0Q&xCZ;}2W{}g!JEHd2OB81pS(}JACWN+8YpjON}Z?BE_w|H3so=nHD=~Sry z)T~P|(8wHjW^81u?Zb<=3s3)>Mmx_PN}O~`AUD|@@7~uFA^0n?)1~mm055B7Y7PT_j^gJoiRAO27$I=jT-srJp1i~RJXqAoDzFc%gk?-! z;mQDWym4qH9AJ!TVQ%KQJ3^Vg?%EzBkf7Q0xv`1hdMqEBFPq^6FQc&+Wm+qL-PT)uJ*A*i)AB_^mmd>MEx0lL!1n(h_W+!oF zIwUkMnJzn}=0|fMz)H5xw5jO|*T>(3k2hM~nGURZ;g~ zik=hJP4Dp!;#!ufLM?z&f6HpZf1MGV^FfbwJDpoU8y*;*1-H)TI4wu{Ma_EhQl340 zAswf8%x}ZYhYsSx7Mf<*DK5W)e^&>^l zV=>Y6*G|GSW%G!}Z^exA!IrT#1u(BN+U*ewi@j2fDHkp@OrnX$1kvg1i9)9PYH5R8mPvu%t!Gsht0amx3wzPGCEo;I zD?@uz1{{bnL^^fZKe`!b&W{mHZqKA4xf2L)o%c%on`=896%veMXq9G~;Ce70W>02% zSDO|A|2>}Tc@~D`G0vjB%FJ?oOQbNeawc8ZG+gx6^52~p(K%F0u{&!h-Qs8=NRQ^j zWTrAC(MST`p7^~Q)<%<@-8!Ed+&32ZH=O^v#BaODX*b2w>E?9ihdkmj^EO-@Xn+gN zF2IQ^w_%I1A>R8Shj(npdwY>ST1F_jcZvz)(~s&&!#q!tP5vig1M3nRk{Jw-+_NE) zDaIV>76PBFPQs|?W*DC`ks)d=%9MF@akiece^VZuWje(L^{atbx#i47ujR8+PDbe{)TyU{j;sbybazH-X2@g$8`~oolc@j&Clih zbwwJ&+&!^f&cH&!^T0G}G0;L3efZcVjtnbSFoxTivGne3cM@M)47nb5_+)f9NDD23 zKXtbFLe>pw`WoPJtIXdw0tBI+pxbgl^jj{PTpQ0t>}L66J)nD#UCvN z;5o4odNBRLv(9JXj@D-|cxQ@jVhh<@vaofoaOH12eKmTqAO98c-<|j^(VP}WEmY4* zEj)e*=?6=|c|E}v)eEpK^%BhNL^0s@Md-fc5^U)p#Z3E)$~SRC7sb+TKJ?p_0#dT* z6lCmY-$A=rn0fOQ?2a?Xfg8gAdD}ll>M824_on&Nmyj6((^yWm!q2z-ptj2?&^%>@ zlLyOSckU_h>}!o}Klm{l-b79tQ#%;P+dD75#nW18Pt03BOz<*M{zWMf~u%jkE7+gmHfIjgZ9ogBFUSs!U0zGkhELO2*WeQFxI-YP6|_PPrC3&6lq|+ z;R6}t8iu^0Su6E79#sboh25~`hbPOB@Aq*LmbGV<%d%U9uY%_5CwSE+ z#?g4>w{&m+AZj+&K(r(Lb8izwe)=D^MSgdfMTRYd==D>}NQrSfdhme@&YED1T5i+e zhtvhf78s$A-AuUAwi~`}F~qNOm)~@wl;y`1cRU#+xDZfP6D?&o;xl6Lz?0(sa1Tv=k0avBRgs;vs7} z(-AYa$M9}b7~Vt zc6!pC32pJ@DW-q+!5a$M-;HzK(dWG-`2GHKsQ{W zZH~Sl$3d`WchqAmq^*{eQtnhvp2!uVAhwRZiJ67E8oOBGusPq_1tORCO6tUKo=Jn+Tp5^i$TqzGitcm zVcU6&nHHoj_IO~2-;X6TguYumd2oChF+DniN@xkR^U%k<>T|Fo@B-8)=%ID)c`&?n z5pHzT!`g)N46)|3jnIGbJbKl~oRsf3Mtjx?p>Goe4zVUE1!rs*8wiq>#u#DgjLVyq zxo8)IcyehcrEgxF(Z>oMe7D&G+fQayzGrnXO=gKXH&%oCpANY4j0HxXN@0l8)rG}s zk+W!c%XT7MQAZV4QzDU$0{e7zJm2DsmRE;D#Fuucm+6e5exn$|;`@H7kwS+qbR9-# z9XG(5C01Bkx(XJpFvM>m)_7#vO6Wh*0LM+T#)SX>M6o%*fmo#sqLqC+((vK>n6k?r ze+``vuh;A0sZ;i7RXiWE_UYl6PWCvW+d^i;HF=seb+S8crQ$)I_v>NyFvjw}bum~m ze&;p=?eKB(;(rj+Mmh*1_Sw-law#R#I^)}qR=D8v3OG{R85^%#V|eCrSh-mj`|M#m zs}q##K|$5Q@AV-$S$t(Gy(ZVeY5K;fnXnO326n^)t|qv3-3Cx})WHfz6I9u?fgxIQ zT9dqHSGu5`Ctbjv;-OFG*v)Y*%)h3CgKEri`=8W*o^Hl?xzxMNj6RJCq;J1=z>6m4 z*luAONH6N3dM9(N3QGh2N=y$jSde}$)}{kohEqBF232+3aKU5>x&t(^t*RU5cc;*H zV|#=jZutAXa#ovDy;tgcQIjruJ%aM1c7$l6Q-d3t75n{zNSVA(`XHklZ87(u{Iz(5 zt8;r?ajho`+RDA9SrIa6?rH}bJJg@@qYhlt#G~?__^iSk#E3rHd2$b{PPF;g5c-0} zj6!2KtUpNM;AIVL!?;lG?GT>YEpjG1f6y`xPv{We4P0Y!fsTea6RiA>A7SywSJ?9`$wB#ZdEGS zUTcem%S`Z_#af7OQNtIky0N)L`PE(@KTb$KB%xE-*&078=2=?|oo|ZwRa5^#q&)9H zZzrV_HTyn_`hx;|?9CJ&ALhdOdIjiobjRKid5~6h0aPP;V#4Y?X2UzbSl-on7X3VZ z6B+0K38G_r;IR8`{rOYt2k8yqJgNsC&{1PE=fqTFQaf-g^?BMtw#gcyX}3LAU5Ept zPL1H;;(!y|#KM6)A7MbOJw9nWjoBD>woA0c(k#816*5c zhb4QI%8Pn|>O|#8FkL-Nh4Q2L>xvQ9rX5K2=)tsoWk+gzy%CUUK}3F<4ZOYjJ`E7} z%@(ctDc=&|Q-XB#kTLX}PCLqv;;$=4X!MC8RR`Q@L!&c2{J0U0*x6$5w)26vmo~Bi zhV-$;>uZ(gAF*FMlF&smD&1i%@`}H%7;&dpy>!oB#v}YBfV#4Jh9^^O@D3(J9GxwnUDBeRcq9OINwDOfH{rEGGrh7Jk#ujT#{;~)zRWw2x ztMZ+j$Myp_+Y(8+O}+HeTXQ-+y5#oH4jats5>%XNfaO|hmq%-=i%Wx7$XVi3Gbm8adSpJ85Z1z9?tQmt&%>$!(XPD`F0KP_GU*kz=N@D#ge0pyM+nq zWN?Z-O-Sw`@`}H%7?F9uo~-*&M`oAyp&1#CVB>0vgGQzTZ!eKFfXZ}JJo-qPx5tIn zk`*p*$zQ)dBCq)CiV+vBThXXh`^W*?LDX$vBP2d#IpOBDz}wrX-T<2t88iROwai9X zS`Fz^UrHWE4ik2^Pd;Eu{}qIH5q zGQ6RN%-20YKAj##&(3Uut%5P0Tb>HMhvDZM;o)2(jE+>+@3!f3igaR{VW(pnNTt*Y zYrEN?=hr!+)dauFU{&|@ncw9KZ5kUgf*P+dz>pIbsB4}A2eues&<0Cf{BAXj3Dw6& z_P2eDvV!jJY%L+8K}zAPJ-s|t11A=D#m}qy!Z;Ik+_a-B3R-=k%vv4Q>zr|aZ{=xU zlgo%={|FhKnr~0<>vY6JGp*6ceK~0D*FhC)8}#0_6t+}%z*keO(XE#S1f$+ zr)T{gC_gIlMh8?ix4}hw|3w%ZHxNm$k+iwX4pM1rg-gO+F!+!&cy?tq0pGe}?-!2H zGu;YrRk)zk%7)o^<<2yh-uGkd#u=pg7*izZ;(`xDZJ_%o8+>@VD@OdZf}U%vvD-Em z4DVsV5Yp^>WI;p}t)AS4OlR5gfnnY7+Ztn*v`I-SA+F9z&cu z*jX4o-Gr*R2hvOXT4Ql&PqcsF1#91_;-sZLF+A8Ct{bSLcAz^(4^ytZ{Eu}fTXV|E ztEOmLG}sRVCU-`a@;ceW!BW)d+8O^dtCKB`_d~VBE*S7hsi^Z?WhGfUdmJs)e=J%- zIv%$`X-Br>wKowqms#M|G#gx_Tnt9Opndk?0OweLyk3k$6KZH+ay$q+u&3Lk8> zMzi@z{~%gB5E{CrGo4g>jCjxNj=AjGot%cjiiqx**V__zqz!_Ip51UMd*`CUhA|tj zx-+1k2tTV(rtluqd_>!h8(TexyEjs4TBVJH!ky8XanSY2(ZW+>obm8(B}3D_epI;kVIUo;;bX)sVmp#S7HXse;-~%1G0Mh^@`JAwR>IB z`_@n(Y8n`?&XnFR1&P*eOm*Q~y}YDUlTLUtoW2^aiQVVh<3*!HsAcwUuV>0~V-jKE zL`{4Y;ea;z%JbR@jf|bybtj2zX5IH?Z7|cp1;eKGhFK@nuxUKosp#E@owc<={gEuk z?yTfb)T-$(e|RlO&|E*C_A%{%TFLLALL~^^Ptn0HHSeL}eh}>L)B(L8ePB^s`9*0I zNl0dJGnr$^*ly$WaNL~k=ojw~KFjp*_Y_y$=}+L=xh}YWfh!)}L>NMERRg(ol`+Jg zRii~$%<<8qu6S*q2lP2-jv>oj&=K6=9;*)Ad)Wo&5AVqkan;pA<6bZNDp`xp*`~%i zFrCpS>@D2C-4+M!cE(Gl?|^3ql1Q8xtK+wB)--FBH=VRW4ev62U;ol~uwiFgOgZd? z85-|_zY;?nGEqo|-XRquTqu9t^ouNSk7gcfz5T~Vez3GSrtf5`*8e6Mz_NSk4F@#% z5eo~xsp0W*Rtfe!7J8bs#bKiyu#MSNb{`iW4W^DQJ4o0B2^HA7rr%=&EMJ}=+8yF| zjUzL-23xX8boULV)l|!K@eNO?!v$>L=iDR|d40F!e`?J^juJVwZ)UUe(R&M$c zCRA8|_$5Dj<2;$xzpJ21XhZN>YIw&4?`WQrcDR3*7Brip`|e_PpRd|-PVyjQ7FY~P zAU;_-c=$jk4C?GnKSt@G`Ik=E!N#2~lxgFOvz>6;TyOTtm2>Zsz^Fvn?s0{+#Qon@ z=fyhMb4DQghq};pbF^{s@jxu{Q&fhjQ%y2&;0VZfdPI0;#mC$DN*mvYbVBFDieE`- z+c7dWcsN9~tQW*^Sfho%lbqT2*gCzM4kE4mV5SSr{MhX$w>51mJGV&MZbb zR7?6lVL2>WRf12>e_G+JY(C|N1w?j%zFnPw-&OPRI=5=0(KUbca98ZlKNlL1BJCIm z3AX@#Cj7XhO$k0*?AHo~0T4e|rm5`V!b=f@Q)vK|om=E{EX zUjH9irhSjjVx5LFHD}NzGplIQ6DM3YZ8mMOyH7_lzm!cTiW6St9_J@FQr06Wx7dMd-ug+s?E85 z5I`q?cgCQ2F_w6E(+zb__-~CE*HML^%=Fv`r22bU$9J3h8_-sj`w!m1d#q~!q}yG94gZqAlo81j(z_@jf*XHS=Y4Sz`I2I-({ z)(EDU{CfkbemoR9s1*@@zWnDH!(0$nw2JX;shE8Z_pW{9JND-g$6J%&bhIj->tTkn z?knj>LvY@SiO3iwwA2h6c6h=8Ns~{<`{6<2|eO7=;6+0 zc&gY5?RsR;M0O(k)5Zxibe1qh?v=^%y|TrGz1yHXNEI9Jnc!rTRrJwIHO!l5im!84 zQ9d^FpmV-S9vBaY)T;x?%UBWi?CFMk4S_zsKD=%bc*@ErTgMMrM(eA_~28Od&SH9JlXg^_<=2Qe_u2 zy!hA!FL#&H~BSpx_ zGeM;@PG~zYgT_xZ#oZ^IaAnsFdPc((v)R33+Mw94{}DjW`5NNv3$AFf zcp`moY>19aS$FZ$DYVlML;NLoMVD5^y5w7x8fjU`IEFg~o}TjTRY+2mDp!R~4tPx* zZAU(loEm29HW~D`A0m7WC%>NK zIlPimr0N+-`oqFHmA07YFrDrUJ^ztA&a)n&}dYyq=)3PhX(mui_ag`<0AbDNi}^lsGmHgnQRD zuq@6J_g`N@@1D}cGUk7Tt}7|eOPT-Gkg4)h`OQRs$^hW6;u)z>QSUv2JYg;#XAasx zYhMYDR5Qc4f;-aFv24e}>YcACU6ZcZ7>2!^&2Y5*E_=dRo9-t|pL)aIZ_dD9b$?A5 z{(EhPx8`2|kD_#k4tcj^B&2PwCOp~XiKp6@5A@eu=6-@B*|*#G-BVe;p#*Z0++l*M zI<7nCg3GFB(x#tkm^n#=F?-W!e^)iUyvGG+ zFFNAV0Sg73l8>#VwDI&#(pPE>4|afnr1C6OsCW>tn0y&)3&F+`5S?nK^rHiYT}&5n zNciAgiAR!q0e10T<=T=EkaKY8~T%N;4F1wTiXr zAv&dQg$iQ0&=6?$=wxl}JZH41R|HQRMw1 zZr=Lvt%JLOr1C5@qp6whFtEd7O9j6={;Y`%EHH%+?4iY9#g8jgTy{z)8@eD=OfmzW zQ}SGNM13>WpzM@=5WRNW{-9Wq9ANZ^I8449uD<6}mKbpwgmyy78N`d-eGqqu!vUPnF>qM1< zhlr`8F0|yLAO=6f7Xrn@ZTrbR@B1XMr62J8laJ@Uv6&v-ZH1qr6wGqI&0W&J?hqN# zy}w{q{J27ePSG`a|G5uI_Q!ZIc>JDjeB_Ah&iYDiw=~f@cSjr@6(Y?#)IdhR+5<4L-09L-hQBKE?8o1`bq(ZRZ_aze}rVzuz9fCRfC+KuZ*E;9vIOtlI}UF zgim!naMJ2Xy53$HM?V(hkOsv*DzW8m$$x2pC<}yWSk&FCjWM8ndQG=gJ|7hA(XKbiSqgI>#(E3Bp_&6<%`ab+a z<<`#V7N%f*i`0wBX73Tub^9VR`mrNM9P?luBwVT8Y9|~z!voj75>cLhvid;_4d(pa z6^h>PCOixE^k==iB0N#nYV#j1dZl)@eDlA9X_~0g@qfafQtzgm5%%5LH6&+r}9L> zx}?-x8wY)`#HDvu3Ql_&bzbNXUr(GTU23c#O3f1oCt6{}npC=yb&F7c#=0FTRsj7O z=Vcx+Zs(@4S>?$Bpk?qrZfPMIOR>JX#a<5?z2onp-p7&U`PN2S23 zlv=_wR-U~E9k4}{OYAQ=Q1RxxQGQ6W=BpQUD+m@)13rs@CkRSP5dr1IB$CxA)*U6% z6(YRz)CE^6CsG~iioMzHWm$)wG-!+nb9#%g_q#Y2V^CR@q+wZq=I^5h{LXZbW-$KH zW1Z$d?ve_3siCZ+^^e(&EW4%`=(75M7c*;IUz$y4EV0GK_pET0Z#Fwaut6v0u{UhD z;vDDXkY&Vp>`vmRH3s;*Gs>%(8h|CfNM1$xdqqj9^Fe0_o1aT!8v;P}qB}lTvp~Dv z3+T?fV!SfP4DH^}qfQNCwAf&d#?=az@usGOq((gfB9|HpcH8{iCwK?r%PLDeQLX68 zzS_pPbdCOY5)%^+u<9op+Y?Q)0%?cYzo;_n1@T%Xm~Ni(i>B@L!U?$w-hQKNfLwK} z9k}~Y2=AqZ7FCWoZ1y60y|Xs1|Kfmd5-cucOHGHJO^63}9XR~UY zXId)SW&}kZ9l&UsI=(4o&UokFQJ(cq$WX_oCGKb(-pCYNYi&ypK2wJe8SLzUBf>ld z7Ajta-j;W_Hioik0iZul9e35bVpo?YO41omj&{Q>rNqeH1BmIa)lAGej$W4$afzON!9MQP)7`KH9tFwyInfMD~S`uqLs zG_%MaFJ~@eWc&WM(ejS{rhr^~tU$qERn2@9R!z0X+;L`%ksS_8mai5Y!<(FF$iAn8 zUOVk^Wm_h-Inxf`unfl$otDyT^*WfC;edyZDA>}XzeD9q0=?k#RX><}svTa}u*dbs zvIGi#B*w@JwB?otv9P3-LtolWbnXycC;HrSfKoF2QWg>RPGV03%M8>i)f5v*(J4!ZqJ z$?w}DL?frg*<&ZSlMly_4Gr=bppGt2G4#i1>*vbCChiq1&LrY2F)hJN;r7z&3Wvl{b zdZY-aHOv$+QYEFBb9$whO*=uu)H?a}tx9Ov;DbAUr%P2||D~Bt-uNjXU7FYMmmV4B zgRA|PvKZe|Y{{K2N$_COcQWUS8JhnR;mZ4I^lZKpOED>Q%n_~5P z@b{S#Ee}^HWw`)7T)xn=&m8dl%ygQ!?JL!3biklF>2yZm7y88135`z7X9}H)ZlrkE zII^pDD*V~=m0qziL*15aIyv+^4X-lA#7o(<<<587Z=5+!tyTQ4?ymbTo7p)U^k-SY zRhAvQq`ebPZd)v1uWvS);PJ1HSoT1XozUBQpuA^i8*tt)1&>%2M3Fy6m;}-LWhyw* zFaUq#b)xI0DC4;&{^)- z3mq(y2I81F#c4*fPjm5d(L++zbu{ofv^6@2#nD^?e@U zStw6WgyReKg=6BWRjdZa5ysyiDo)%} zRyCB&`!yG47+8?kCpGcTYB7qw_n^Gm-bWLM^%rCJh~7-m_C6W@HvN|8J1>*zoUEd% zmZ~_;>jVusd6&)@qJqOe9iMd|C2#{u7esF^UoK@AM3N_x)a* zMXTd~&;_h#oLl}@TQo37WPxw<6noBQ`%{vXJFzf(wF#)%+Tr~sHypnwk@6j`>RFfZ`G4Fn zTuJfCJH6X3|Gcz_n0Fom{8)Spp0Kj+5hs?*+pWDybe^-0&D>0Qsw!06eDjI?+1&%a zzdcT(KRRQFC`X(%Y9j4?#~Gy+j%YuAEVX1=9ChqIpE`Cdo7K7_0VMR%NHEa8Mka*V zV%!@sUc4-!pQp2GT$X$8A4X`_7Uq4mM2vPlDN}sa`5=o^B5>`SE31epi|Kjed}{N)vd7$TQ2QKi^Xa_N}D$R#49Fhku6+ z?-&iT3|rtSAg|W6Xrilnuw2es#m?*T-YD6%`SB2-ZX}4ok1JHP#*8Q)GB6xgymu8a zOFmvF_aS#Kw&G;&-u z8V=_e0)G`hE1_a_mm@^Sq$@Zu2UihWujf|TW60_yl&6DyZ1%=sT|5>cb6ossAfTLl zJfXsGu_k;__W_5rzhvy@CQ99z(+pioc{<3)X8g+U1gX2}0vanlfWL~Ll~7TZpbckT z^&zR*4tOHSt6!~Sd!9jd`0BKRS#F)G1>>y^V9+f)K@5I|LPc-QzvTRBeTY2m3Oohm z<9*3&qH)V@(ZE3Q9(+@#1(li_kov|=Fe`psp`y-oC$ZP@gP(()1Gl`aXu(dfcseLlByQMF zKIZB{C*ugoM zXC+j;n&C&T9u9>Q-CV(QsR_EN`>{T8L3GR@V~iE~;dYB)nmf`McTMocpdN~fk+K{& zxcFBBOA78vj_wuV-BNdqGdnLmKFJl0T- z4&>(4N_wQh5{+1Ilz~H7$C&w+XlHYP(!5FO?4%55!qkQcNs}mkSME<1s5;^^41j|=zhkF)V;--^1^lwL9%)D)hYi(B3%dzco z=W#2X_*Zf6+&4B|Zr1KJIkaXZ@KVoY~Or$4Te$cavML7K1SXwmuJH7JJ1;frvWHDlW3rSMOP@o+Oh=nT4TgFvs@9J=pv!qXc>NDcbXi+!C@jrD+>c_fkU zVrOmYQLgy@p&~QWwABM1PP$Ge{ILO^Cxtx~<0lgvG+j9PKWu48i*qS82!WpyM-#pW zAkUV{=WF4|kDmDT!W$N2^4T?H`r|I(u%aVuEpo=YET^{Y@<`gK>4IxmXOGWD!)We% zC(Lnl#>u+FnId=54!Qf~aqwJy0+EGO)6Jz0*s-%pIR9z+PM>T|tt6IJ3_z$ecZL~k zAMP^O0*&fRrTk9Mt3C(^u@zw1u~PQi)ma}^d@?l*W=44m_JjP6PN-0QnuZ<>Pf}48kCvSJPQV(JyLqACu?jDAUavu;df6P&TwX$Cd2w#Bxe&iE#6 zDxK$SgQG68)7M1`>b(B<_2T%C%CL}mdEIetj~Z@1`0^!Ev7|lgeCmreJEipNn0DA? z;fvFDOPNB_S3+Vc#=~K=gJjY|OYFDA7yUQ7(HpEvZ_+Ox?4##J3%gn2<78jVSnkFY zV?P`x6IaAR<<>7mH`)sO5BI_7E4~87y;YXzv%v?m*7z~SM)@=H^Y1Wd_eP00*SO)l zb8hIEt4}}0xZ{>2M(z$8(JR_w3>LZJa5sI$teUqFof39xS=SEueI~y*6z&HP*Zv}= zJyPK3tp$?yj;w=gggfrKWlc@f**E*$4ac#ZZE+`eytv*CH@G{n82u9r#O-*#!V1pa)DBiVa=l&$m|FHb|=rG8C=YVfK zZ7?w*lYVC%@g{7x#T_iC$c+)Bw#znn>6e0ET|CA*M?^g!0XY_eJL+SG2TojWgPL&@ zD1UdcTI7&1&@i`*9O`2s-{BX4eORq_q)wG||B3)~Xm5#n?;cB6FA2aGM=WrzsEYlr zJPtX^4gDv;<=#gKolrwxKXpKd6IS7mb!(_ve@DFBV+s5!en78RJ0P8|%}9}cSw4Bl zOlu;_b>Wt(1D?!x!y`R$#C~cZ zoB%cKukVUg$KMG!rI3q?Zs(Kedk08O_;9#r$T~avn&JEEHS}#~8`LT{#nu69Xc^kz zb>?WFHBM0hI?30(v{gq&N;Cq2r^`GGcfxO00S=TV3yntQ$w;S&q#$_bj$6;V%-&1@MUFJ;Q7vF zl~7zB#&U7?R7rRHgy5%OGgLXM_+901P9VjxraZkP>>)Q<$7B@86wXt zmG54sf3t0H*@YJN?M7eNAiw-h3~l;e;ClT!-Be(Whu3LJ`Kz>zuhOGoY@eIg$P`LL zkB}mX57aa}!mYKIxUR+<`<>}T=f_*2X?JhbPY7c1T?Bz)g0@F zGPm)?lLcgoc?f9~kr%sspv2Z5_;LB?qcBEo&2e&ehd*RWZQ+@{BO2^rp35=4Xr6^5 z&hG7ok6aQce{U)&RmOiO1^J2K>6}Z-m7KA93Cn^PJJ3nbop8iY5A1x=n(`;H?A)MN zo~&?BFl-F=7QCbQU-m;%52K$@O>zpC)kWx-c-VX(Sg%qBwi<6aYP-W&S zdgX6BT+i|VV!kSPNkze0ndW;>SoJvsl$(Q4iDgUPK;dsm7-MehHTiB7gISv$@T{0; zp*$mH@4@XQ#N%%#Sf6AL@3&gw4QFr6`4lAh3-W(imiJn@gSbC;fu5&*K%H3Pyy;#z z!#|9U>1Ty;oxJdlD3tOeDJg{<4F%6Q8z^pEP562hzK-Rlxfcdsb3l2X;w<&&sseIr zdRMUQsSeAA7~)-Re^km3q$+zm;_Eywtg#IHwPxB{5c5 z6Yq(>J0z62Izqb8hL-WB+(_!$ZnL5(Q{ALziTk{&ROt?Vl{df?Qn;q-X8 z74DklflFh;DIc5l|5$XmGlhS2w(V7c4`^E2)7PK&Ur&5`BYo*L(X*2M~*IM}G4{Meruus&@F zd`>D~?Z)S)G7q5}{bbM1A0l?wQsKj_4(RmH0-I9SP~H`Rr?`x;ypNXew;urox;N!5 z-gUHq?W5MJouqeTo>GHzmbk{@B+WhklzI=bLNRmnWj$Z+=Y(}SGY{niJwjivPJZY|8$@xu#?fDTF0#F0(D_{&=1AkaTP zL~g!oA8ARN0D4-Q*zTA&o=l*0;6N?Rt@lP&!bJIzSofhOC2;qWfVO=-$zJG!-3ncC zb6PZ2n&5&OQEn)D(1qTTJL8QUH{7JI@Z|X3Z)oY+y;<^pJ<3Svph9}Bzze-tG*ugD$Eqq^n1J<465lOyPIj48F9vz`x}m$%t`)54)J+#MRfN>rwz0d^E+s zyDv-QiU{gNn_=#h3ieFgprj8EX0t54Qz|gFjNpLvrg+Wrrj%C;6{#%iY|rQjh*91| ze)RQ3M--t!nLE9tVs@o=K*kLt_tvk zmXDV^u90Tnc1D9g(^-tAtIw2Z4vd1y3+)86;>Q&#G&b&%J+JNoDyBxj6Iwpr4E;> zxhhaVo%tCG73o*4NgtyCSiHkmz>xVEI}6^?6h}w24pw-7Zn8Qeu^pX>lQPb7%J&rqnibLa)h_@)Q<-}nPhX!&?7ZHxL<+T!6H1w%eDsGh{z z>4Lp?fM8bqxI)EC^Ft)x%@{81l>pCi`FLxT-&3QPth)+x>tg55FYCz8{y#|f2U5YT z_;H1b4lE~iQ+p*)SNjh`<|wdGF=ulM*}D5K>+L)gG|#=IQUhz86uye`yj93|Jw`+l zanW`%#+tbmCcL9Jt1U6<0#k6Tmmi7w+?DquYswE0*}!oEBFx7SD%y|gOsbfF+xeBL z;O*Z?mCv$O2CK(`0q^NC=B+hyW)9_Jvz*iiU5KsiM)G>&B({b8-&Opqgo>rpcap-x zMv!G64*W`wUo#3DZg%$R2bu0Pe;5KugE0tKPHq!ddER*PkrDsD+ZMRqOspx(5P@C9h~x$4w>YF z_1hHnQAH-pWakpPLvge@lzQo+i8>>~-g9U>TV3qF-v#epoIxkE3UD=6X>qWlB0n)_ z|9Z0JViLSKR!zn@IALUo7*)Ue2&xQuQmmv@^QwewP9Fw2L$e9bjd?mOWXMY@C(Dnf zjRxv;oE*~rM=##hMyWC7rV1c>8JOoQmqMUe5s&X3HRxuCB~?-xPr<;YUsYV#+Y!l zlEv74`#jk=JO%s~93rpH9dYC*R=4ReiC+KWfF>iHF-ChF?MfWbYKt@Kd>O|Sv+M&P z;E^7rNM4WyfgY&4kg+$nadd2z2R7>4V#bUybhy|9NBP*{jL)N(!fuHlY`CrmN14Y6 zf7KM011Y`4)R80qqaX{_V02tJ_}*@}z|p~`@vTk^In1MB<|v2ST&b%xRAxZmU1s-8tVCr;BY`iGO_4AO<39-Vr z%#Y4W2PwaYV?KB3L&zNiI|w@nz+c7R^FoDQwgte$uJEJBDaj!vb|#eVfvOXd@kW$)HR74`too>^zVd=&?^86iZ0V>{u9XY9NTg&rs;T_vxOfq`4&o7S(ydy2ov_ zFwz-iWHx zZP<5Ne0~?^#AYYR5aRcl+01=Uv#TSTEKodsdb{+4z-!8|ILnuem;2zJJUhIU1ytni zi%Xu^;=ux-&F_6M^Ozl;(NJXkj@%glX7iMwdj}=pf9?Fe!t-QCYhO>1e3z!>vfsKAPHO^><;{| zA=CK_wf*6YQHC?9cX|t*=k1JrOccM8QontY%3+=m;~5H@<2vH~L$>&SQ8s;JYKV2a zY;o<#Y}%3id)Q<dcy&hxfq{nf_}QSf;?3IiNW3m%K7rq^GCvl4%-ONqj^q! z<AS0P8f)T) ztNjb9@pc(Ky~PbXb}6Kh=@;l1e|PNI_XtyD3V$8}tYJE(GP+Av39^;W&ZRkEn*IsYh3Px3l+9`XXP6kna5VSn}E0T z@p!7vymxf2$#Z>m;j%**)IGRLSC3~|g?E&t{8hpjv)j8#GVf0&C$naj9$Q(=dOCaI zwx>sF?dbEgWQjLwlVh|wQ$`K`c%%B}W9+-S)v|(oDRzY?uKo}<)B%?;#-5hahw@xp z$ih>M%%JotfyZiFNOS`Gd*^xK-#PAdq_-V5Sb5`=*)CL-b=3Vci@DN%QV^D_n+jyE zFFL?9Sx?}JDSvkf?~iYZ<+AJ7>qrMN>wC{-dGl)iPGhIYL!>g-UWKH1T`FAp5rlhV zjL<#mwG{6Kqi%u`7A$)$^wsslj4%gu|KmmtM)_jvR|h0#-Dy2@@mzR-IR-!TWS?B`Y^iKoNf`9# zDhB>Jn4a1~s~em#q<;E;o{2#V@5@{_dO=NmFg#~Z%Yso(ctCTWAfHzF6dkEnAoG47 z0`5hgu#Hs(J$~YbKldim{r6dgP_8>#t&gXgDpuHZ%?&54NMy5GTBr>w|2l$H(*|x$ zamCfF&%H&%0-8I`6*n=jxEj@Y)SbB}&#bb>XxDV65D!=^Gf|%mVS^43@!>X_zr_U& zmQAH6Mt-3UY~9}F<3wuvt(D%)aly*r3bxc@u#+r4)*E6+H4vWA2Q%;BI~)Bm{HC9P z*0WQ9ZC-L%&)i`QY=EEp#}-R;N^{2_9{>Fuuhou(T@G-D1#=J@ueH(Hg^svMc_AJ2 zq>Xv@JK>^0;rGUJ=wI)aOA2s9q2F z^$!0n@PAn)B^#}CvUMhm&?oc(-lMH?swo~?;DB512zN;Al&|RbF%ANtH_MU)8IaKK({OAxJx^iCTHto$9Lwq z*gu!@#G82zoYMlWD*!)tRg#_gB7AX3gd+xYrEdAIc-voua~4F?tQrw6>*$Kzv=n?- z-?k?i&_4>Cu9yO!`Ofd#R-XSsdp~5}pWPI!FF)a^>|HslYMfe2+G<(nQwLXc>oStI z*Q%%cKZ$UlcoaS1+(=EB+d}*wMV7^f)+|}fP-oEGPX&L$$?4x{TZtn+(G~tRnUC;> zHrbto_VBbJ5qSQs5}}2eO@5fx7Dnfe)x_3^ewbLO$fmNCYD0``Um%S;B=diV;?XHq zxZ+Q~lu z&Ni^b!{b-{N3lIWO5%IO9KHRBH5TU-33 zr&uA^1sBR}uDF630`R1nXVyaMe3CfJv%V$6;$EK#Pl5Trn&pHBTG7ZnS;i}<^PyNO z4-4%Hw=Qb~&vbe9)MX8HK{pqSS5rJ0mUa`#Z{3cAE8p~izltAMsF-w>%FQ=-haO)T zf#e7_e-+Pq+4}0PvV7+E1UPV84|qb$U-jd{TYAQgooLKgtVJEa$H?AJ4~J`suD~-^ zUfs3sEp21Zl@o6jL^y1!vOG6A8vN9)1Tpw=g^KIX^-J2%M5yfMEFi*sygwh`(zg#C zF?FZHBNmA%7J=u2A9KVHOE&4TgiOoq*@9Jl~D6Z=@9wj`(h#f(Wag z4JhesH~_ZjX$WS;k1JHx1uZxt$z@83zjo#_W{6P^(MDt?AS zh4wQeWL*zk}1ThDUhxIAP&o>1XEVPqDUd_j5E(PLtL~>&l(My>M zb@I1#(F;qg{=7=SbcIBCfmeHCCf-3Rw+e|c&vf~b*c-?6B{`x#gJ^~(mo7BBNLvTn z;V#$xwC9dX)TzHcj+t|SlJ%GA8s-DrdD8**ORVzwSY4v)FED5Ru>DNYIw&@*(nuW+9vlF?k1XHofM2698r8RRscQHv zdB{{z>8tFWw0F2VdfiB+!+PzYZ@aQO&he>q!>3(z*#HgHupG}~m}R8P^}M8z@XrE5 z%742B~P3B@^9 zSUlbieSZ$6T`WCte3c!p&m7JaD-Ib!zySvs9-{*Dbv#k^ls#^>PokB|p7??7-5x&c zM^~zP;I~%}_~g|9rm(cN1fBKv5dHQWnawi0pTs)imhB<5Yq%Gt^>spDhtAZVxkq$h zc}y$^lqpX4?gXE5{NbPfF3H-Lo~U)v5ly#*)7GtCm}lUKJs%J{?Wu2^5C zHyk66%EDm#1|va6BcDxG)tgagA9oyD5XTh5D?bpmqMKx3X^epN@!rwDf3ObcFRidy zrr! zjb$_j-j)3;^@2v0)%bTx3sq-s?5Ts(DPI#=%l>`eT1Q-VdjX4aQFo_g+VGCBy5>?DmkHL3_bGWfWIpIh6yf~ zc;LIU5&uyr@0ZD9Y>mKaN)O;qV)%Po$VEr(*&&NLVFFIyV}ZYF*KAX)Vx3RQb26z= zanAe}IbC~{U{HTByKajE63lSp(Hy$f&JM?{GRKR|XClta7BvmbQT%`FAYacCmy(`e z$-1lh0tW%!1K`13H5~NF74t5=W1oDqd5~Orj5D~rlEA1DMmWOO0cHJ`QoajHimf3A z%N+3BKE;`^>C>LFuU&SKFBMaO-wE;gKEhp*TZv2(m|)5}_r?P6pU3A`^8HPix1ohC z_!n5h#IL`}ieF-ud+dyUu3>_^NTrJhKDT0BiGqXJta_>1!;Kg>m=brF>{!j*j1Rit z?lA#$363WgWm9Ox4LdUS|ro)>~(iqVb+9I;T zlozM}lj-C#NgEnodcrVECE#Q5&_e z!5T~EKqC7P!lgfq{c zXS2%OkRcCy6%0?Mj)EBcxI!+v?bt!N>oH>()=L84O)BYHe{1wD_#MtuRiUCF*a(J1 zY$oGdq+pdS!cQ|SFg15E9nKs*ujZQL0p?rU+9JY*T`lpwx+3f4`Is=Wp>hH|-c>;8 zr1rR?mlzN3?JICcAAGqz&S6ed`H$n7;$@dMBI*+eN_|z~3F{d8c%KKJZ3v+mNjA7L z&J#B-=uDGYw(q?)p6Iek@hrLcbq~p(JOU2<*-Z3i>f&$qcOUYr2i+U5i{U07c<@{| zDvYtm`6>xq$?lEuj|qR@8Gm%ZfDCpr+7Lru1Uq2YVs|Wf(3QpbR2ND1WYg@_gTrp}sv&Ge0$5Z}% zkoU}GYo9kRWRvqaiG|Bt=s2&8bpwh*8uXl!uVr-f_z27$@SNUVP)%u4jc`+tzCGam() zXfGUeN=hHTH^#(tFH|X{EC!Zlggy%v!|XT$XB$j#Vyi8FxR6cX_cFy!ayxv|b2%+Y zH^D2cGBAFiVnsGtd_f|vK1ZJSngINYg9>js+3V1hJaW%66^?27lf-V0*!I{R11iGlkvvu# z7c54H0tu~Tl}HY1Vmz#__;#Dqd1{wBVfK~J3OH4jWbt9&;y$7@uQtLZoL#i zjk~wQi$*>u-Hc38**A-r?GJ%F!|j200(MzqfJf#?0FUKj`x%mtBj^(4f*bncvxy=0Q=vmp^0%P zJecfHGpf|E{8T4gal)I%>Z{@Qe*t(<&z~tyF5D=)z0m^BiMzq4gf{9QVT-}zGwFy& z-{|;cTRfAINjoRE(RTKBSY)HP2UGSp$sGUMgRM#z;0bMhcP%U`^T&bSA(ZcZ$a)-Z ze3McL!F*lX3lLfqmgs$-pUJXkIs8^z%^;uY2D{OI&^Na{u>W z(AG*DX8K}gN+f%q|BkhnKg!rf+VoO^r?NbIJt|kjE$q#Ca)e#>|M8SuSU3WDl&WIBx(yD9UqpAFjN^g&llmyeyOxC^DlYKIxm`EQS4YIe)}sA z?LV0Gy3waJ$oDjT((H{3+)mInsYP_dKW~hwJw_vkpP@hZd7me zzMfn<&h-r4I>iT{tvxPK@FTITFgG=MyYYR%r(P3yddjocrBC0`lEcmzwpnos;C#12 z_NZ?HoD4Gno`v#i<#rA9rzvwo?4e+H<0CHd%=y`7Q*vSUd_j5Ouw-gNu)`zD)fVZz4B^H z^|$n1qyrAkRAkoNowk~6pWKt>&;Jp`;KvmzPPdB5?S{uQGYOKQ%Pc!*==X~GNfp6^a+#N+WZqPI@ z(#;s4$5H08!I58nT%jU0xLLA2!4PhS_kcsjZ|QnfJG3*+raajcDlBfql6%A&MzJbs z{wjWkLd6J}MtanmLu({LXZF3vd)Q+7q!pAWn|y5Ma^ur1iOp*VmzVYu&{{s8P*G4a zkzhhS`THOC%E#biGxlm6L%uV5x49}6#0TC`-AR_XtRRQ-WK+mRRcic+U->R_bn!$% zrYx`EM`HboqMJ$W0vV~bii6iZ2%44{;>oI)(sDyUj~zx>ul`i3HI(4qS|g0UdI~jJomv=UnhKa+nJu)=7WhEPPpc!@VuV=%|n;T)%tnCsVQE-dz($W zqlJxKSytGJEJ0l|t7GX{C2=9PFsdjL_!Sc0sf$1PRZ^-?t|f&&k%yRo78)X563$@a0&QQhG*8U85>Vk%T2%2|X<3!QM2qC8<`-GSGyA>YD=!>9SD1id-<{uV;^+TFWNGI3TnnAzP72IhA_;|FdS>OY?P zR_me58&>(fa6H}fQV$cPZn*rlVh8#1)(5inQ7kB(FCn~367Qb$SlJoRu5!XrhejzB z0Xp#cf;+$zRp7~HalQvO1UjO3=RWiS>vXjFFso#3uh@TNOevN~%Dg~lV=(YL6W&8g z=o?jf*cF~;+JnofyCiskFYfK(z-ny01=$;XRtNKkn>>(Q2^|H0`p5~tD|%*XheLAM zy2>YshDz*E!$O2_;}nGDV1h2lExLd`%X8mb;f3WLSw^Os2OYE53+HZd!E+s5DPNVu z-kcgM$eYXFuyvXTyt81r)QqM*iC9d%S(lA3pKQ^6^b-2(AM3tBSbyFhis$YE)=T)$ zD=XOh=M4GU!d8;E?XkOZs3426O~VJPI%^iG%ZZD!Gtss?x|G#J!V-l53k+5p(5oe%TTb!PCs2xdDCRUu87|) zvFy*Baiq|ZLN^C1kTHhaA=L#R^-rTRH5*(mb;0A=(&1&CL>)mJNq5W)2_fKMH zE3Eg*mcyFV`sjY@;HAPkr|Hl>%l1)=W=4+w>99{e z<1L(e_56t=WmGT!|NS>RE1G&j=G9w|`7KJ!mxy;&sj zM%c={6i?k%2E7?oD+w)6Q$c?{Uo8Hk$YR}pqEhacX9ljr z`~`K}JpI_W^D5PrTj4P`9rpBDF(y}ja>;No8+?NBdF*_Cd;Gay)Jo3-PoEBFF}myw zC@s^qf+_#bk`7W8Jgdt(fHl0L(OZ>K=bs3TSeD+FwaU0Ng4Nxe>8&enII_0|4s2UUc}HSa2T6S4L8=9GIed-qS?T=g2~Q>&zp@G_ z-Q^*IE*UxGQdkWwKVXR=AIs>F-8IxD%@Y6BSJ2OY9#LOkD?I+Jg3T&_?p1QPA`S}6 zo|B>$JN)#*1wRfRMEQGOc%K&;ua=K^ z*C=7lJ7>%fR;-Yx-Dn}Vr|N@>if8HT!a(eD%K{s9{)Sr}2*h8kvQ+-VPtt8;jiL<;X;My<`DU){Na#zu!`Irtci1&Z}%EW6s?=5!CW;xaNo5^+OI$Z zeapmn;h%ynm2Ym6^el8LopMPE@ee}KzLzHY<=mH6cMijzzctaMZ;f>Q@=&}Mq=i?? zAG1%cvRF%EQx^)}$2}n`_WyA8)nQRKQTvM$iU$7>FI%7zn6ffMOwH zAt++!YjC~rBG?@$qWsQ&-|xD2Qu>RDC?6w42ru9+#3%m(A6xb=ZL`V_CJr5~w$-Lm`I%g2MNip8!$Wm_p z*a{aYo>Gjtp@)>A#P5z<;Vc=I*sm1fvgNkYc}G*2IwS%Hx|Z@*RhIbc;+F`KBb6cw zR~IN-wlszwZ^9%@syIR^;bkXWBKS!^!G~_Y}`7C z5QolfWEJfmvmp=rfq1vIILZdqo0((5y1f6Wsu=y_2n&=PiUR&E_8sSjmwvjVW7&6w z+97w`N7~3g{X$Pjm<9+4D?c{oRoD@5cHFTA@ZH@&! zTt3+Yhi0i1Fbf-Ygl!Aj!?IGwL+d?yc;$r$_Py4L_q(Tu(OO=p^zX=Xg7vWUyC*)6 z=}3qgjke*ndEMSY z+F|_BLSx+5-VZlzQ>~m6zpr9BGiuq|)qN$7p5h)wx-aQ7Y9`wx`oPGX-P|my-c5Igg>n9lF z0aF`%s=tU=95BIN);1WdzKDw~E;;uuHHI>}XVHFqU%p(&4Ra0Laki^Fzp~E_1NOS% zovE%|{hBKlQJ(F>PY(3thb)&CH@~kBGuLznk^dBVQ86|#+ig!2uk81gW$O-w`x}gL zN+(Mkn3B&$R#nVymB|9V&xFN{vj%O$jv)3cK8G~MtyiJS89TSJix0g7&oUX*ma?2@ z!$IxtME0z67=|ArPn3d<3Nd#y-ZTvDNLk6dY9+n3&3b#mW36CV5o*W$_E26%7UhY~ z=}b9x-l(DNfE_k=xlV&Gq_l3 zMOBUGuNH6n>ks-NZ9rsCUAi>Ggq%R!K$#pTCTQWO^gs-K7ep}v>+6dhF4@AxlkGrc zOhq16%DqmJZDa<0CW4>#vqF(Qebe_l&tQHS`Lo%7nA9e3(wW(~$#8JOPWkij@7zkq z53_Q|M=S`hGznMU2r8(Z|<&L(4yYgYS=IGm+W@wkL{JV_>suj550*9V7s+(~?if=d# z1^?WSOl)<`(i}IYyWyXLp8r9Z*%~S}ZTi6Q1T7GAT~|-8;Sb|n@bZY!yz|u;{Qend zy#70xVw`*Ir>qzl1Kn@60+DYO(GhQ7@M6j}Xg^U^Evvx{m1||4AmN3nB!<|p6cMPI zU2Lr08=BPVfXKIs@ft#Ec-;mkoSCiKy;f`aD1U7k3WJhsnAl3}SBkL8-%zxEQ$IM< zqZx>Ns~GRu$QoWvN*J}>RE+T2ngzu@;s-*3k(y*wV!u+v?7TX8o5=nUZr=n%zEzA@ zy1j;{ta8MueN~Kbh-`0BQeHe9ZvT{tt;Bw%2+i{;%=Y;}s2EzqM2=OA_xW=T-%eiW z`r)d&i4W`F%8NV_L0*4_iLJzbrHB^Y`?F_Ju@HZ@PQnO_@tO~*;b%xSrgvM_z4Ipb zRF+lS3w(ylKx`%UD@ANv(vywr+ZP@`CO0L4brxG~?_SH@>g}=l*Etm9P<=b*AJ_+4 zD#*P~V17mPxr|!=Yp6YDo>MUsb5A9*QJZ?e6s`ecE3scGLMyT}%Z*2nkFb)&5L<~n zEZy*0o|8|$76!i}JV9hk#a0pPYx(xiwm9drir>8notRdR4ctAhfW?bydAXG>M)k<$ zA{Qz}T(Y<%KX%m+&dinayJ9>k;)Z!AhAS;#?3;F=m{H41BW;jKL@u(YVr-f0TB}aX ze}x6Se%nsM?~0?6A~FVyW*@3PF*Wo4a5tuwU+!v+OD-=5dkJ6=T!c*)^W^$SP&S9!hg-#ZgHS z{((MB{pt#)`#{Pei!sF5v<{m0Wo9j>vo|3V;6Odi8T-s|`oH;HH{+T?LyZv^@Ua!qj=jwDq9G-0g_ujOH#WsaZ zWExlcdf@m3N95|gxp$5`Ha+KvS`+#ZqUcLc<=3!qP_%Ud@y>L&H);Jm3dBkI{t_Po z%J=EDh^_G-0jFA=U?M{+=DkYU+K(kgEbHD7Se3h(eJ1VLi=#*_l6bL4yPfb4tx-!& z!nw%%Qtj);=kh(jmljrz$$%E)FY$W@fB5><<_e4LmpGsQn|~W%u6XTsnU`+*%eyr( zr=3jW!fnjXYY@ChFJ)rC;s~WNmc1FlY$9K>GZuqj!|>L4ZGi`>weBd%*b+0jXs6$9 zxAN@nZOq7NIEXyeA)h8V-qIhZwhZM(ObzYs`{AhOs+`opx1-=y@Fo^ER~!Bg^~b0+ zW@t0FH$U{t5C1JQ#nVS)`O^db*s{VDn=VxO8&sBGQ{L46%o=q%g6MNEy4j14LG%p< z8H2o=161{EWD{C=qH(Z2I(QG}VxFxuw>EF11tj&2fa%j`Gtup&|50bWM@no)YmN9^ zLubr- zYB#$Z(-Fe1Uf`qZA~AktB^NVCq}d{I3s10^Iu5>7%^`5VHNMzKd5DSQBz&uQhNBbY zx_EZu+j;iQbtH&qz`7rLctg({!=t0P^gOs{^18x_RsqnjHVDM3Xi?8nsyoAGF zISBlG2FWL$)W#J{d~npsXI$e#a~z}XgF#=a_^c1jF;LG3yT_{7!8^e>SVDIWw;Y>* zc%l=%fqk(N;JV9Wm4;iw`Ka#%`4kIJ@60E}j#KTUv9LmHa?> z|3)3eR$@FULen9e{SzMuF7d7~FUkZrR{Eh`bz3g#dP`4`(|Yb>SBhG}htdcTPm1FC zQ;O*Na7fXZ*B4lX;TWj7MY)4I=GdnHQofYD$d1`r;N=NY1v~Pa7<8d{|8G)DUp*c~ z-ndcU0H1y&rxlN7lFC5x=J0q*l@^ik;lW!rU||@#hFaiby(0?oZc2I|HQ9I%v)s`Q zHtK$5x8?R&?d^y`-zW1?=Zs7*j$NhQn zo%7@2QA;g6eb5yv0^jk9{#rQVUpI^asYe<8+Dm*(M#z0&!r~MbT3g9Ck&}_1@n!zZ zp^|G{w8HexWjv;!iaX?4W7{re^h?xPbGmrTrOmAQLFuO}W*AEu`ZMlVzb z^#ker3jA*7wJ@|jtch3RuS>XI`jtHTqbxt_2}l35fQ3yO`JDOyRO{fwouB`u>h(bE zdf9{D+Wd#J4uN>Rg9pV>QbpBig)3am_X7D2J8b+!>aAOQbFq3|TCv`K!WntPNM{IW zu7I_(H1O?STl|(am#1{r#QmFW@xt)A{AacXmQA-qH8a(IxBNs_(S_AsP-z|xA`2`s z&{9UYCejufzFlI&r+b2!7pk$;1y`Q4#8XYOctKyPx&3B=*+W(P_O$c^%H^B;!w!C# z?f!Iu2TvuRuop`sL`GO-ifMnf<*0J=Oix%J;0z+iD)PIE#B==YBy#P_yhV(#`I(){ zaR#oi>w_1Fty+#g&(AL+_p+rYBBY3a47Vzif?EN};KHHy=Xq0dgtfc*HbP{FrHJ7x z4=Nwr*Mx!9krEDB9HA5uWBZH!c(#`PywM$OjyhoGKr_@nm%}d~w8yyNrug{4Lf*TX zBbL53L3xTQ|LXH*{gSMQdzJQWBH*e0As%qf9|H{U@bQ@kdHkOM)H`&Cj|xA)+av^_ zcj|3I829P~g`R)e#M{T&n_2hy{M9Dp6uFU4T=IaATyKK$MeF&TP51fYL8iF+#Ck$h zWjtoHJ;ER;O$!#NTj9zHJ}A=<jIlJiuYd9JL zh9<^ftVcI`l-J&Q@NCJ7Bd$c`3t<0={YF>_3KpAC)O$U7B4o1%?gD!3MmZELJA)vP17evN{yN&4EhrcnUps@@Ga?rC(h$r&Re4gTEFhA-t&SxU5oGB z&tTWqP6k|9&-*5rshOz@%Sa=r(t8tjM(UJF@HXJlja@ijx%a~Z|> z+qPEO-1z{zpWG8{tpD<^Xo+sUw!3A-4*vbV9UPUm*{l@PKU!kB6Kt z`nZKW2Ug_e^PZ*#=;UOH8FS&=WtZHOePYeQx2N1^>BH4;u{qF)0lAq4T)y+?Nz7n^!)ID0O|p&pfrm zSF@WCqDsqAnZ7Ly`hXi`uhPb1xeIE>rSit)7I?Rx3+^Xp0mP&>W_w$FFQhs!2Q5Moc1RoqZfc(GUx&+mIcZ+SE99@GX86a?^-q<-)@ zpba)X9Pl4T`0%8U#Z5eYL9JU`5Sd?*PnL4X``7ki{o17iY-yB>oUX_YOZnZmwV%S{ z#`J)`>+~UF$`8J(y9;*emBif#{NP0&T(D_bJpcae8&9Qw_n(XRq{9WY%qI!y0 z&$si@C%((s3EOF@7)afU>&1_?Ub4hr!z7~;M)EMQl<>=1DSi9fXL8_=nopzJa&UKS}jm9!prJ)l#A5J`#jkI#8zUz zQiN4nXXVHIDCn$b3L--*#(V2j&3}=8Vo9Uwm*}y)qp~3}3VJ1(N=7C2D@B~SVyrB! zj)U{pUoerO72|29R`cz1oG`#k#UUTP)?S&mW;j@7Rxq)Z*sl~3`ecvXcKaZBwZ4Ig z46PV1?M5~4N*?Qv@>SoU>0Sfn+4G~}+1!(oQHlLZ5p}ytM$3jv6V#%n)ex-=ADJ@u=iUjy$ewm33tr&03+G_r<+z|^h zRUGozZ!WAuuaV$9?Y3l8V!u+vvJ?93L*IdLg4au8h^<7fm-50txU#ajeL(4^0U|>y zw(5211s_fxb?&aJ%zocT*X7m9-e8-q4I)D;qElbJ;A-SJm-SM`2;cha!4~cB0v*E) zBr(K(r3n3vXXIuH0NvWTg2?HL@!EU7;ATa3XpyhV5uW+vfqbEs9DYo3myAm6SBgk6 z)Rnh+>I1bmLg)_U1^+@hKR!)!xX9^B5fj&(l_%Z`gKD`ah^@pCN)aorU6(sCPgt@h z45rX{ACOYkw7I!l(Aux%*fT@Ona!ar00mW z!4}UKa*@*&V^iIo*G+loBx^X;KT5(=i=&bv5(`S?8@7FASF47=kdrTXRDWyCeYuE> zoURyKCR?-ZncQuDJzJVSNWxQ#qmm-Nx9Y~`Y`wv@za0*jr@i2Jx|7Gq%RDZ!z+!C5 znP^fZ@8NKq9eO!d!c&W*k|LZ3&ttNrU93Y`0vz#v!4Cyn;-kxpB^m&WD%Y`%XG331maykyJSifi zg#zqm-D4vS)WELV56yp@lZ#7FF7mLA2mP^OpgI0B?N0At|HW!7q;3E^{bn)*{;lSJ zNzMP-3hAiC(Nb;Sd^_;WiG;4k+ls_Ina<NUr_l>=64LF3V0FyB}Uqp#bb z>8W{q;4dw_|HTGBzMjVicxz$*v$m+7r<&ou+n6cefAEDbP1->DLPLzF`p3Y%q_HH_ zqNh;(dGt@pxwV*2h+E#Hi-HagDLMW8r!xAwFUC};VK4ob3adOnY}vjE=Ih85a|ijO z=~eo7MN8E_vD-$*k0nF?yD%oYE4-NNglnI;VTb+--d@uQH=c9DM`e+!7}w(1^DVV( z)|5febh9BYCmq>tYddn0dzbR<@`M7`Ua1cS-2vK=kBs{tTP&MDUverEPfMg>x^9v3 zmC+#Bb>kj;Yh;KH^Ih?3$ppSdgYxfUTrs_LJYRRv0Dn^bt52$GJ&$@~0Lyg!AY@k+ z6IpUGe_Omsp)92KZt%SSU$*q69*91JBLBVTpck&cM(P6js(k8ZJH4Svi5(;jE@DnU zy|Czk9R{51!$rrK4jsI3bfrD&-&N&Cy&a%n&$`FL@v8G>VER+uq%i^O$Y zCi~MlPC29JPIk2OXn5}_Lt7_vbl1z}!86pb;|Oz%m`ydRBV~A~zXdwPs7|R4t*)^B z--koHx>0P4g*LXaYKvoz+el| zDFb4U-B$XQwAek1)t->SpQSwk@~m*Ky)AaWpUq3#S>sYtTC}uXz{PKtyiyF3S>&xB zYy6}@kBjt$?-Cz8(DjNc+Tvzxk0&Pn@wdT%v)kH}yAH^YOwLO;qZkA>y4xz=ngoOjUylajLt@z4B3X4>R|OJ z`SHS18+`bX9Go_`A;bj3J94`w&)G%S5g>Bx;z?LMA#eNAFXKw!7yCYt(t>x3UtKsq1q*Ph^!;mkI80Jz-&!MEeYJCw#g1%~B?ZO#rj% zGamGkm(YCje{R+dg(0XIZ-w)c*DBIvAvm+j3eRUQr8mkWBl^^l1+j4Vn%o@No?zGgH{V6~gAYH><_~!TA4rT& z(4j1DxS^gu(X&Ur6RKbPg5Rx`>b>ltA&G;i6tSbP0Xm;_#NlpPJcaZp*0yoP=z}W6 zVV^PbO(q-`wRe^<+hX4HiP`#ie}*ku2CHVcg3(qbOhCFP{?Jii;i5$1>WldbTIzG|1zYAJbbZ)y+Mzpa&zO=oyv zkQsLCzD+UHlcDik^8H-4SE1b%&|s-4sh;eoQDtwu#QOc)zr^b10j0=nij3#^0i-x~ z;1i$Mq6M*><9kd|_G=Rl*{x17k?RpTpuBHS_`O;7n0Qsiw|^hoPq}W=SeSR}9|=<= zvO{xsJmo93?6H}8QySIPjKfUccN0@M4=b5RUh1chnd1ZhBYfk_H@tO>1@81a!cWh7 z&)@F1!0FRfY_0k2IAza06G~nW9IZ51+Q@Hve&GAV75w}P898&k=VN!a=TrV^|m-Xc#iYK+bhjbr#x12e=hFlWHLipsQiy_Z+OI7g1APB>yq^S zSTg%c@!dpI_+lLm@>4%~PB{I3Lg#Yt2S0g~jUD!TJDaa?tm9|2?eM{E)%}Ofwywo{ zJiEcJv8`dOPY6E0Wr2rpA5w_#W7C1bn01*nM|P`Rju%&MXMSt+;JFq;KdL2~+LyE# z0v2)c?Yi>D64TaNVxQA0)rh2d$5}9Xw0M5^jF8Q-?1v|G^6N(z^cn{Kb{<#&Jb5A^q_b^e4n`PZAhyz!d#nl%K(m294m0WvEq{5xpzfB4;1 z_Xidw{65PR1!F*5y~H(9x(@1wbuZ?tKQr52aqv{v5M4~oaemxV?oiYkBLdAaG;Jvt zS38+($hj0&&^jD0Hrh*c4MZ)2=702X-Vs|IaZok;q|P*e~sW$bY?$RT#7ZyLxL7m2Do5CZ%K2-yIh)n#c5V z!O0hBpV(WaTGu^cnR1nN9{ao{3EGYS!hP&WBVm}gqT8G=eBcoBUtZ{{h~NK-zjO4! z6V06Hmzb*2z>K`RfabIPY#v>e1=y0yZ6|*&j!-(P-O1jtu16so+R+}Cp7TUmv>A@S zlFnZ*^u!mD=BSu3nTy#;R6p49Y4}x>X|QHxduF}f7)NTmVfUnDzH_z_TIsuC`pjgB zx*V+rUHs&F6E?Bl4=2EM$_1aNZi)qU%lPWYCV0lf49EH|`_D~7 zZt7y_fwAu$akh1LzHN*6F$9Nt}u40ihe)9C0@w_(O39oJa#alNWO^EeFgNskoyAeMz zR+1wuGQwiMFx8TMxgX}CZV2a>P{pCZ8z)t2;3I7tJPJ}}U1Do*n<*=fykwf1ajFmBC6O{LCf-TitFh43)qAelTt`U>!@u{dg9Un*RH2{$X7FlQg#Wcd@&ZwBJ z;;DaaI9hCbD;AHt4ax#VO#jWE&G%U@=}}$a6j}&{p7= zcka#hMh=6Nl)I7`Vk?nPChqlcFmwGe7)mtXFp)PFTN$*j=7UL5@}I@39l*8aC*>WZ z2Ec0FCLprFB3cnp%^z7fpt7TilWE;k!L~o?1oEk^L2M=VD@80XPmtI4=nCHHMj*1l zVmw**YHpHB8d!f-Jas$2v+{2bJHcaaE*X`iUkReB{{;Dzc@eNh$5j$T>{rSNXT|N1 zcUHSaOWnq15CxX6V{x!0TNCGuGz$64I{u`t!*IX@LgI`pQCxyWpaJ;`K_f4Z?n zi*7KtYAIVQ#*iYenxB(*QJiGgMvaA@tDn;?INhwjUCc#hQ;bbj5GzXL-5Ar(ELM?Ko%zHM)11w5$1+vU#HoLElq`1! zj6IMNUSDU3-`~4pY(_Hg{=*PIeRjp>+DSa-hyh+ZmdF|vLCGnXud{1f=!TQDgro~_W zaHl0U?^{Uw(!c!QT~_Gvt&k9|KPuR@vTJNqMK=&N+QhsSF`tF9cSa>ac=%cN&8iuT zTYr(yG`2*mLHl|8x>D})#1eCc?&rUEmhyqOEV29P0*aCIz(@YdEC{-<4k(#pAj58| zimEH;xc_|_rjl~`gZOjYJxqrFx%T+x!5Knmo?58%rK-b%Hk99Ps)o%c2YgeG+6+`S-!#TD1G%QFT*`>Uh^ zU1ou6Y!>oP?QPNOUrX#;ox>;3wZS=bn#uE13qqrMEvy-FS=!+ zGNocC%T5>traRQoa=SOKTt?SNx7E=0nh%;<$@$c`GOSxgYF*t_3d&vbb}DzJ4JsMD z>#XvqZ*zPdR?WvOnyavH(F}_ZR`Y|M7bxysZH7vd7d(1QCO!GWy_c1HeTS4x*Il6$ zTOF-xhR?H~b8X8!MZ0Fr@OJ%ke)s(nLcA-=R=(P@k8Q9R1>#7=41DpuAqG;5R4Jo= zu{8fSFers~M60Y(w;+q_Ty(@?J#DaRV;1*sLG`=OtS~23l}$CT?h6av-WB3>3)u8G zj_7>E0e7|>$2)v zVzl}cubi;FGc$2bg`p{$*p(UKpV)lvX`_iJry1iZQX$sQQ^$S=##m>i%3IQiC|7Pd zW()=i0bp0Cjb5bJX0m(%?|)7kvq{@%-stCFLzdJb1!4ZTZb#$(*rE$49)&>0kW#TSqi`@R$&XK3bP}JPd;6iQ8G5*uT8C z)EU>emLkNSC~wKmL>ad*oH<`em*{?o9*0Ixbnx6=V|;aRDaA<5GA;RDZ38S)4aC00 zk?i~ai`V#)>tpRxLd=?I3MmQEkgWM{acz|g+R{u@<5{CPd718T=6c}HC$);(t6VW8 zm)sH?p3tu(Dg7)vwc3^KZkAYL0RF_BlFwvBc!W6Pd~W84d1 zJ;Z~(gvAkO1L<39>EBnb?9d6Edssr3AAfkW>5ka_325Hou%$7o`o zO~k53&fzP~H1YfjdtC0V+KYM@bzlc)+$7)#c+gdj+MccPvGoguou3?s#Tub*lPX1K zN;qn!8DZq-D*CJjH0z-pe7Q5*-6IYB-J0OZ9Y%P>CXZhTZi=rfjB&hi9{2dBh7}Kt zal!%>8#Sqg5&Qkw4|Kx#g^>;jAVQY)#sfXg^iQ#h1O&;r0@EIzSWu z{-XS}mW8a~m^!-b@cJJ$8uEO3lN+8!h}Xt#O2k$f`!q0U)Bm=TB5J-xL7%ey%*j&| z^0*%s(B0OmUcI?EKOWdkwY+8)7{4f%o?{bv*7U!5N;!Mv#*l#(ZLqwX7B-uz$&Iao zaJzOhG#S@||G3!(-;+ncssB;ZnPZ^_ou{`0vsG7^wW%ErDe=M_M=ze)+YY_lz47G% zS1x*qQEu(iSY_#>Fi3ZEf(09Na0v0yOJ?Wr%9T1e)!Pm?z0Ky+kG8-vO*>q1P<2-X z4u4qrxM*-GERgt;i7`ZvGV+$SpDsV&*RSNwm$p!pbBibO_k2p*+K5ZrZ*%``ANh?F z>WX!6gRivw$lKMa^7>Y26oh9lOot&+sjM=_5O+2s{i})u$u3OXosnBXO;gBtm(89` z>;__fvzYfR?wsh>viT7B;q-%DD7{i#c%ThVd_pQfovRh4^y%L1Nw+dz-YFhW3&I6c zOz^>>8XDE_x--gR1iZA3%6c4+eRA_ggH`RC635 zcE5YVMqT;LbY`@Jt-l=c^lwYNK$=(LDzl%o^k>s8K)81 zG5%EmE~K1oQDNcPZhcHn48+0~s+?`T4SU#CL#o>zeT0dvM70Ge;>t@C()EdkdYy8) zsF&cC;Eu=4-LS~cjhoDJL#?000oL17jB5LIW>_{59?hs`VqclBTA^EBAdXz_%b#y= zg+@k!2%Cq4*^KihaCk-}i0fTilmY5Jv_{veg?!;0eQZyTi7#zcb4f`H8B6># z1D^f03)^zDoVTqp!(Qk1@x&h2_?`wcT=D$?Z+E+#4|`#T+jUfX>WjM5;5V~VUY+<} z4%V0Wirh$S_ojjm9&(8t z#huaC*s)ihM00{}m$W;k;e|$`kIO_>6iUkZXA>V>t2>KFyBhc=zzGeHWDw$%o2UGryW`Z}KBb=0X zOL2AxVE;`k2bXT;TmaCHq|Lj>d`3sL==bjXv&J z)W!uJR)+I`;)$=m;euI>jA9&Zw1F6<0)oCFJ2K1}okw`0<&RAYqbE*ybH68MXKYvG z3~j30cxn=i&jzKJ+Nu7BS% zeQ0h`C&cJOr<9d*6JhHJV7jZX@!WsxaA~|lguLK7cM7E}g8kRv{g!Kd`3pPTdUgZd z_Pv|5L!P@d5O%f;gxTHIaU^M7yX>3G#fl+!()-PrO#6rbsS-NnGO6g$As6^LTv}Ho z?l`1~YY$s0ttYNxlfRFbC=ZJqvdAq{hS05##m-;)fZ0VYcvr8E^GJ=o)WSO6-#CufmmVYU*E+60 zXeb}0^)Fw(@dtlpG?EY*;|~>A>kNSfJ?m&>|HsgZ%&pBn;w;a*prhd^LfFpgDc2hw z4R@BCfyjl5+-u##N?!lT31?|eAVj|(Zt{)WlEKLI1QQWrE0OV($#yn>Eq5I?1vZX} zVj@o|wwisUiZ`@(!l16I6XX|S$2%-cf#YYlGLfeg(c@Y@BZW#wyn6h9-t&Al*2!f& zFsF@@7-GLt!~^|5@?kYY;Z)Q+CNi61JO_BjN07VD^wX+0>U}2{W_f5J{QBp+WK?3m zQpAa9NBN&F@vvv(QzkN-Vm#eFRlJ0l5;W zmC+DHtB%NQit$#gf5!iiBJqGk75Cc5C`8`yy*qSnVgO<*v0o`-ctle8L4(c^b;klk zE>w&+ud0eCOeANQ|8Xq*5n3#td@vlA5A%?WO6*sPXy4B|?8f(S7b*8LMh^b`F?p-O(?8d;{}do&-g*|@t%4pmy2Al7+WSo+1$dj zREIo+_$9HGI4UWkonf(jMY$c!s%r<{h0nNEk`3-4cLk9J7GqO=t;Qkw^nYx@%_>ro zRV>DnB06c^4Y}XxFH83u4EA}?`10}AXz7*5MHX0$O`aB8iscVm=s@J}UJ{;K9F-I? zdP(1~HPvOz;&zgRrxs&~u}QJ_!WsF^fRn5|c`WR0`ivXKSYm((`pMI2gtU+$yPl?{d| z5)N66A;y-;9(?G|nv`U*nCIhR<&8=X$4#-PJ?)SL22zSpj?-WnZ_-#Kp9EqnF#}hM z=sap0yAr>I4eU4yzD=&=E{jd@=kKL_bTD~t4=_QE8B4hso7nUGuB_SOB&J(95yVzv zJSoE5<#ORR{*1M#9x2Hj5VHj$&Kuwfa|?7DuG;klyxGfSdmgaC-hCx8#1U=_tK>P$ zjB&ZaazZ#vH7+@@C=fopy25Ot-|@nIc4%*0!F@bF@M{HBwSMz1k4X8zH~HG5_n13` z_`Tn?Xz|Q(a(5OHyb=L_R@c9!@nN5$-Z7|25&mZLFC1L zzHlICC>z`qFq?}$^`uOZr2_|2d%({+b9STF1MgDp{1npb%hB@0YP#z_HmN=D*~$am z7m_pSjwl*cm8LGVUeFDUyLmD3e?-LSr|x*_l@odZ65_7$EvEdV1G@}DL3BHjwfn-i z{A-OHhh%f9^T~8l+}M7j8(8dl!48p!NouqwJ{uGw$&_5AOOB6vUYM8>L@@?7ZO=Be z9Rt^!?q%xhKJeeuU2!zVb8~}F+||n!<1`X@ukg>@C4+K@y@wORLSX<0{T-lNZ*>ss z5}jS0F@1&|4SWi(n?!lfl%wHqJed$)E$6YT7xGwC_85|N_{N8gvp~bUIo#&VcfO6z zI4_6g@>G)_d`YAQb|!8>CTm%-rTFKYU>Nt<2Sf#mcCUjm?I2}^HC|A-m;|FvwJA<* zD5HJi{g;C!YAb;xXpA2bjc%)>SEPyDVg}nGubf^thb0& zTyem8R1I{}PReY~+wOoTZJp4wsp@QycsNhF`+yout?UNx-ZaO^L^~Y3jy%;Ww9$LB z9WMGlj~{KKjaozOF?FhHt^FHvRJr|*2Fy7V333Y^9Ch3pUz4ie`F~sBl9@KxdtELM zI6x{1#3whLFtKtd7oUkVWt~Bu zHn$%<(QO8!>UGienIoon&Eii;zk6@06FQ#A;Bp^bY+LJyO%92X1z8xMPf0I|Xc+E%ku|rwHb$;;OOa8lt{0?bn zPBC(auwm#1dL?Z^Jn@PrVUatdU*ZU3)*0+z0w9R3L{?3T=+W#i>t(C~W$ONLY$~}2 zPPV}biL>}F;(0sA*isEeriA6D?_AfS=!Rgazdx84|(?P2rHDj*pt=fUjMiaFL;vBEB88E@^$#0!r@xp;hPqcw8}_ z6!EFGAG_f^o(-&!)`ow%@ssx(ZAQ#dj-*bU-jBTQ5E9*}?DBUBTTvN^M?YyGyLU^` zcWWC|4AVr}^ot79&27-EfwUS-ZqWPDt;iBub)`JD%Fj&9(-kxD|C4neVh-<=ouTK| zN%E$HGWj)!#g!aiY+*n1A=x5(piA!Q5YPEef(OODjBtg}%ti)L!G7S4F3 z$R4-aPLSLii1!Ipk8{KYI+uQ7eODPn=ma{IjI+kUH!}E&a?;zmZ;hioGymgY-#;Tj zY4|ybRhXtp`1a9>x@bT%!_kjRxOo3Xzr*Ay^dJgSd+gaB`W59lL7q-b$7Xzk{qoYw*E;@C!KhP2n_9O0n zy{bZ?XG?9E9M=nmy0>QOYe-RL3^`yG?0TE+ zV?wlwhih%VM49clij7^72-z-gdCp{a%Fj1fOwWJMCsGFfwgPL#sej&bS&;{>e%qS9 z!DZbx7pGkFhOAGdpFsY0GG|k~inkQvdL><>j?}D@TirDQ?eH$J_iHF_oNJ8tVxK6k z4h_SUAtv~#@t&foUnmA9o8Z6&_bJ9ZotDKXOZDLWrk>D#Y%uN^VT?}dPZYc9UbWje zWAtzNM6r<8#7VtPu&9*^p+B!Dtk*imIvuWLVy5+$Fn_G4TheR13l}r9WwNCYT7n&E zVBa!a#Ke5T_oNA5nMl4n`d#_#kM7u)oP4VrqUp0LtbfbyKWSix&V+-=>54n2|Lm4z zWvqK#G^}a)immzlg>Sgxg8ky+dH#tnJZ7*fW*;5KM`wTL3!1oMR96)9;M z(<#32a9k@q8|#Wg-KcgcOdsz?xgx(ap8s>J75;7Mh6UeLxoQvg{adtPMi6wG5CEbl zqnJ-G&7oI!UBD)e>Hx#(6aM~26AOY}@bAu4p7ux+>mIqFU)%BAgE+uS;%as-Q*knT zw#+HswJ(cB)lGsOr$h0fU27b2Myh`lcsvYCa||(Ou1X8({bw)uNL8lq7B2}i3H3*( zj--vcagAc`BR~AQ*$RWZEmK(U@WYKat?<*_^@Ol+-Bz3w;0q&`(f%j41?I<-KgO6j ze7LU;j-`1wkz5MdY;AmP;fU_fRkZ+~!MBxJ`o{2droZH7bQ0aG%tKpT=A0wBC8a#% zeMgi@+YR8*W;uvj21hen;FDlijBuXtA6)~#>&KMkw*sNd6iX0WrT^B(b>txUJ0bZ$ zh{Au$3;SsIfX{smBuWTpH)!L4Mb6l6-DI9%(gGd6P^Pqniud7q{}lGv#i5ZqgV;*c zQIKjU+?ukxxbMy=7^uji17ji(6v`WfiZ@Oy**K(N0Grz|yaQHvjJG-w;R%WDYLiqh|u>7_qcj~w@lroGnRWtQWtM1D3&IXX3-WkMJB9ksf?ClcE-o9O= z{PZHFM1wRr4#j*Vue*C}@fEs{C;b|;ql4M9xlgD@`SbtJl)V%g%ig_Nq?}fhQX;lG zlJ>iDd=A~fQNEWH zv95kj(I}%aV0r5T6S+_^-j=MVeCl*3yr)oQvBte%@>T{3@cHIlCbkm$l_Gpf9v8jb zKMhQxLzu{git(=MR&vJ(Cw$dS^$z|>UR|^yg%FECGAglODdK~*hrECJcyK$tgNawZ0)+O6-9lwr$URsm6B13{YnwPhIf&F3mgoxFAYrOLdAGXc2#n- zfwcE}pgQBsKN2I)_8JUjT7M*?68n`R)&z8yA7cZc$DF1h#t>VH9H~s!2BM2T^pAn5 z=_VjDn_?>^>Cp|gb--51s`KClowh}@Cm?+9>LfvktwjEkGHYfJkl)Y^haeX(80%EU zuTj;nI@NQDjG&Z(e08I=IB%mP?3m2qu2B{L$K4i}(>YV*_r#v4(&F&|`4{^zSnlL4 z;Vi`%Qbg*{BSmXpdPCZSP^hCAJ%-!hL1G|9eou@oll?R+Enaog9=`uU31=yeN{TS( zx<+o-Ux)k$seb8aB|kdV8t1mp<02y{#-@tHhgn62cmA?4nUu2>M&-EaoDID8?q2u@)=kQ(SJdva|#VXDN(-#nAt-j$%(Vi@FYHE2}bDkeiej6`wnk+UqY zc*>nkOmMIM3W~8|TT}3SZw~3pEF_~6`;{UheWKu-<$ks=TT2o{Y&CZIQ=a?L2(LU) z#rWFL5$@c}W%r-aJM!}>Z+@&b2G3f_#a6W+pYTiXT4Q$UDni__XOO%*)QG}Cy`tFiy|u+>f8kP9&p2zAL6-9G~Z&BZeeSUHL*MRZgO-@&b7ud?{@J?gO78YY-@C*e?e z6Q_Q>jWf>6n#zZ^u)yR8&KO`fnXevdj*sF=X{xhoJ%2D_v3%{T0B9?310}0kVcA`B zS5cqEf6(7?tDMlXtVjL4PIZrh_?#S z!;4zBXg^>f?>kZ#XK32us03BLvvJW6<`&Wej%2K7k!Er z+h}SG+3KBPXp|ch`yIJdj-K^qm^!fFKQWp*xt0_#*B=JV=7fB1WHo^L;UJ|PCpHz-L6 zkAkgj=dg3@esc9#Vu4rQ=Oe7@cu)M@#Ev?l+L@gzm-9abgbw@u;C=BASOTzt2s zoTX!EG`u=Dn7#a=2SaZ^<+T$GDf506Z$@{tqy8G8^}!Wf%oZX)`s5Gn$MB(`k@`!1 zJ;@6@+q$B0t|^Z>=!x?N&`pD;75ALyg`t%$xG=<;o+Cil5t=VEgWW(ryb<1*MtAXk zoL~MwxMq z;^HsjXF9e<_ox>NagL$vwy3~U#^w+LjI^(1~eQy!^^)I;<)HS-r>S|{^y7x=K2xcIy-&blyh7u+yz!N%ds*{;e<0J7|l?G{d-yj~~u`L=LOlC|gKiSV>YEp~ehxk3wsy5vRG_!SK zchD!v@2bGl2N#@hKv_YcE3e z^G6Rou%g%%)%V!ZsO%=Rhqo5**yv4FY$1AM58`(|ZyCWmUh>A&aBDQB`r6FjUik4c z<=|ejP#iTC=xU1`Hnngc0-OL&vN5HuIf(UwHiq&K@4WF3Rq*V47|g|YlRVsRcUEd`b%%mi>?ss)qey%U1RH);UTz?#}CyXzAtB#3T0hG5L z!q07NibVqh(B-~LC-t$}VCA|QbxI5CSXgzakDleA_;A%sl0YneHlt zPDh2Z+gC$486o8|#7sbu*PxkNUd`@mXDC~b8(6YTPlmDm=$_N9nD-m`hg;9FK%ZTO zJe4%CpO3Y~$r1mLtFsQPvWeRL1_=Qv>F#cjX3t{J5)?(sKoJaV5wQci3q=tXMZqrY zM%fQ`7Yc}=Sl9t#V{m4l@0{zK=l$=!eCM7ud$XUI->h}7Gc3mN-sWV}k0emPrUiG$ zu`}|Wj<}>{F6CD!UR8q5-?ABOSET!;CnzQBUqM0;#tg z1!)ts@VCSpo%?s9Gua!*9&I0-vOJ2GC23-(U*2dG7sXb!=v#j{(d8ZSEVCE*%;j&+ zf!O<|8D1LwOx8Iy5U)QsLzm4T*e~%;m+j=EK`fkluM9sM_3;#|?$2z^q?z^l*f-M+ zTc(brMfUm_RLCm*S=~Nk00|nxjh`W)TI2<1h%$O5y5jt~ne=L)GA3y;=i&5`w4_W`MV%dL z*1KTPbr1Bp)t>TQ9#{v-lXb*#PzX$1qy?W@o#nt*4-AMPw2nPnYj=6#sn=oj$q6eQ z-{6T*AI?_gw)vzmGR6t=*LniaTlt)JzCwk0n5r%i%Y2}S^gwDqR~@gj-f(F%(&+oEYIx&~8%pO6 zWQw!2Nsu%R0Jl!Zq@%iM;Nl{0gl;cI-5d^DYM>XZf@*&HoGDg3=tAZ~8&!cCUpY%jO zEBv#1F>NXMPEGn);h43G^Qe+03(}@#Ivmbk7O~-V3tc$H7Y`3x8rj3Ug>GH$i|u#& zMLsI{NlUk}e-A5Ubu8WQwIdmm5+FKNul(wlCVKCTA1-__9ZJ48(ID28gW?_*FSPX=RVV@SaJ8qY+=0ecap8049UCN z;y@#NbkRPx|n0uoFw@t(?QTs_l{T|SHX3oT`_!DCO!7N4K5qxii3+X=_-i| zRzG*aVY!Ox{KbZb9r+`OffDS`rwiORIza5B9O z@GO*%ckV+SeQC&YknpI5Bt)8ATfVtH!${Za_eLiu>Qp^s^cofD>B zQ+N(EX;nqI`HY9XBZ@_<;^!4BR{X7!&rKQ!6@eQG&qDcldB+~p<&}>3ZG+Phe``K|{8;g0n? z(W>})#fp!HJIXBDBr^i32|RD*;}!eY)8=vq{PcfwYXdKN%G*Ba4S5CXqE+$piWSiV zi^}He#KWXX#-bSfD4yK1ck1favcDT6;o2D1SBA@oz4>rX1I%pFt09~T~8N$vqgP>MK;yO>yxDs87xQUV-Or* z|3~g;i@y&pqdadFD~`Ds%Kg4M!jK#kF=U|SIIrj7(veu-C)>2#`?P1pzn_y z%JWt}wnTC@Z;JHRW^ZU-CT7U|s>BLg`wIDxb~-@Qx(?Hzg3hcw0vy#UP4sQ6iwSgUVj=VV#xfe#EQhs zjbz&VtwgJ02s~%sRTp1#v^LD6JfY=dvnOZw)6#VBF~s@eWD!H=S0z@={d<_yCC?-Q z6NiZyG9P2hgGY3Oi5W^i7MtZ26~n(a{clOBEA0#AYYcu(&?qPk~|@ot)e2sc6) zjQaVABrR$S{3w22u_9|+EF899NKPKp1fDMQ@jS~P(c2G=aO&0q7DHOUq8yfYcrqJ<|I&>Qba!gY9{=u_<09s zJ)*UCM)<{Y16x(gMh7Ts3W0pfMTBS5Ilnzv#;+6lyGBsH3W{|;iKcKn*c=jKW{@4V zJ~(i@6W)n%r1YsTj$v7*PwqI;bEAB5HLGLk{J@sQc<^2cdLD}gvb>xu8s~+lOPw)( zw>Kk@-dM<}XXPqX5;~HnS<$f2z+AK|$_%r?IF|c-?gHyx z$nB6=Hr2-QM1E8TM_yaNFC`0nw$KHWUyi47tSZoSw+p@)J%JAGYL09FIOFTXii|CT zkWYeILlWGp*g+Cke595a*n4~QV7N5@J&o_;KO zsYo5X?#%i|?^!`Zr|V*y0BgK>bOq)2)a;ZjCr6kyX*p@VngNRnHF2ATIcDpvq=l)P z7!qQE;q1wf@~tgqR+{6t9V^)9`15VO@TWKmLi*_f&yaZv%=>7t_r#V$p<{S7OmESK zzjEfr+}8zPJ(??hJ}DHW*_~iqWIK_9ALZ~yAA7L8gRs5R*{U|XZz?Nx><>N8 zwh*3E^LurkS+le4j1?p^KMZo*ZACkJKIclTSmkF1>W{;q!Ez7b^Fr;SyioV4BYI#c z<*zQrOFo|##_Bf+@1qjSSJX7o_yupNTB1GlW%=g4Jl|7)-^=(>1S+|$Ja zr~G6|y+%V=wY^GUiHKiHBt8vwr01zVP&>Dfc_K@(($);;E1#3; z7ZZ$nVv4U?1kvdUJ0My+ z;IRCuY*nAr2g=J1CXyp2s8RdGnlG?N0+gr3P(B&}u@B3!x#kvyZ zXeu0N?u?j3#%=yYbiVZge$@7<7IXLW`yYkw`RC;8;YheN{X z80G62=B2V6sW>lOH!GOMnDVJX+T5o>s(O98h-?oySWdl)+M`e987ggao_b$uj~^B( zI2^g&D1A~o4Jx+k5OY;4%q#T3gRHr##}_MXP4U3ZSE6arH7k6!$OC`%r%aJvP)e4C zyd?HC5$w54Qr@$M_p)J*?`6`m;b9#h<7yx*->rvhS(mgKM;A~&S24dz7hjKZK>uKc z56h;4JgML6-=s}YKM2}tgew;M;KnPF^lGUQZl3Ood-4cv|B0RYF7!qFvx*GtoW>*M zV$UJ)bYTt&{Gg93{oQdC<2!YF257&Zou$r5rzg_eV{?i-7Mr9o#k5OS<@>4~LFV{| zxXfvyT9)=$vbct}zHg?TnwY!oK;A>G>D`#t>Bl8>>G-d@YH`BoWpDb|ET}A%x zzL4$_@1k^Jxor=qvJ1ofdB)f}^RbN2vlZvodX9)Aqb9IiXD0%$pR-OL?cA`?v=`-j z5sKYNe#h^S-)~6=Kc}~(VZSO~Js*fapZZX(pQ^YlHVD@@c+h$GRPfTVK+HMf!&bHF zE){-^d`Ipl_Jf{2+IWTyx(Vi?kNgZMP)&wZIx598>HEOSdGIEjgJD zsY~O?%Y7<1tI-3EE_9{Mswz0mo1F<)MAIu{+F(ES?H)L<_;x#I%E{*baR6B#$oxSO z_|C{2A5AZl@h7p7T_SMEeskz>{y0FT-hSaGHWR45}JBsI*V#V`)Z=^jBkAX;5g~nIj^VRm^s`xYH z(3y*AW5C;u)l72r`Fy@GuV&xw?M2e(pT~jC?M>wPOeG9g@x-X!(e!JA5(=yq{co*| z?l>yJN7|m4wKAH0j;aoY#LBw|+_~ID_=Zq>WyO-8_Pn6AR;}FV`2Z-+{zTlKE8}T&NAsXT^rpHp-eP?->i?uuJ~M*V zu{apRt9cQy^XNV@(JBHbGq<~KWkJj&O#uX*1Ftz+%6>4qY!`1p!P(urXNqK(`jvyCd|v$xkJ z_oq-hmJ!{7bt7J|YzpNo*%?(EJ|^N}H-Bi}6%70+K8ISY$TeLiL=?{@Cst&_n4p)` zw7(`Z4r?Jit>Z`iNv@-lb6HJ8se&i& z%bPDB&HAK3`F6syH(p(nUq`bI*}gdlCend5oI^x4<1s%MWHD8|AVJz4u>=vzxpI5B-Wc6I`{&674wcZh)z47rX zCe+cR9UO6ciGmJp8XPD@Mh=6qYF9<8;^!4BvaC1D|NcvcKcCfsr*(Y1vORTl>>dYv zvsQ81r>XQpZmEjXNRupgSCl4GS3q@IG!1Fym-mHo`+N$AzYf=^2pZi0K z<)>TX!KBeZv?_jHv10P36gfNYhriBFq8R)rF&%uq;C7j0aRgk_^%C(!e$>eukErb~ zJAA!KamMm8t6Hw*<_pEQgW+~l9nGk=MRlE}l;?Y5#n5B7%Vw5FK-oi2;79QUQmn|; z{ViV-;{|hXg+ltRM>Ngc7IpKMQJ(Mdu~`P)k7{|l3w}@vVrI$56D!8fd?630GluDp zW5JSr@BKV&Fy~ed<@p{Tn`LsW{VX@!V+7$d#LSXkl~}Ry^b>hZp$@2@OA--CJ_a9~ z^&Z$zA@4cjInlEm45fCDXm~eE?Bu_a@+3`6?nZXalWy()ojlpkPGQ;KV^NX?_V2Qa z@?4CcNh0Yo{iN$m8rTde#)%bX8EbbWeXU&Q*u;ag4=r+>oDF ztZ-%d5|Tmxh`c@Po_(y2o;EbaMW5GFo{@x2+mKni{~6P}Cl z@shXKQBBs*c5pidBdd?;3Sl?Skp2!oMXTcH6)VPQ7D&7Iv4obpF(TJG`}Jy=F!g_2 z>#P&iP=D_K_qjV=FrVao90|K{1EHPR)4!t!W?KZ(;Y%FwX{HAbJQzsN9CyGCsvel8 z9mZDGo-s0)qak2ZyqfTtq&&qFle_dXb9gZ{3i^MECFfc8!`pYx_#)Yjx>b8&UQZW1 z_sNl-ed>uzKDgkmQ7$Y-=KYJLONlm2bd|#IR$B}sHt79pAzfc?gS`q_H}*5^UHya& zT3oiq$tsF|!nK#Qh;Qw9m>Ro`Ogz&LeM$oH&|nYR?vxg;UloW2_r2-Ur|nqPbRdo* z-b~?*Z^#PPW8d82lHC;H>NF5cDk#)#NXG`EW` zS~&V(pPh=_k7NsfAvbIicz5qjTsCMh-#-tuyOK!jPPWD2k3H~ZTp}IxwJjQN^T5;y zMNaDdLtTY9pH#4$*F?PAYM`#Y2R_zG5seCnX^ZPjJW$(Ik%iQ|hX;6cFo7=jUXdMX z*0|!SHy$hVqtE|Y(y@fT;@_In0ZGc&~I z?JjubMmDYNWPpAwH|po!8BEdcYoVYrEC^C7>|nx;M%vHW2S=p*i*z{CNUy)}K@HCr zk?M^f>5xWm)HwTtCoYRnDjtBa=&pi z-Q>yoB`Z&2itLb$WKd*0tH_nWL{Dc-*yfB6EqYTv6I7i2Y2NXzusbBZoajE1b{wmT z)u-xd+1<;ss(l(5GxrIdz3;N@=6(${g(vityTIO%SIsdjcUFmlTg8jX`N&4PHqZf+ zPgGFd)Fyh&!vRB+E9sqvCMvCRz>Nng*e5?P^)5du_k*-4S!DX4`}DSzIgZ*?PE*sX z=%pgo3uN?pI=@X7-N#67m~J^!Z29V6Uis7=G`r6u{3u=>u2e~fGS@o0N#~hj?=h3| z;jAenfcQ_R`fKXYXOYA5Xk!Xo?^1 zjJIdLvWngIo~uvD#Iyl$uqlo_@8*I@Np85)0I0M(%QSuCinGQ_Y1$3u`ZmlByA29u zirejW$tUJUK+|&%NYK#1u`EO2NzZ9?iINV++;GNAK2vD9w>BE9I-{14BFkcgR;{#m z&oVM&`Y7;xqJt~Gu=|ohS8BLd7q2&XV6wskBt#c4fAhrWaWPEMy2hHgBpoIj9*u$* zvslltMV=V>BAPDlXoQ2ZJW)D7n%+}4!Ug$W`0rasrWiNPqWt|6L-1drDf+H>KI8V` zGgZ6H_B%DTOraAOCWNlrMSk_mgw9>n@#+R|{H5KI_U+pi^IrPkC_SV)ZPiihkPjYB zRPd{SB<3rU5enCxs|imB_&n`b0TH-0#sb|F6@8bE?h`as}206lj4NuR3O z@B>Um_7p#9&TZJF;>lHSz zM&koHc#QcWvGd>>c2|2iy93QTZiRlC-kAC$kfyN=t4h`d+_^xJJ6JHKk^DYXPh5X@ zgwc6UxLt06`@S!refK-y{^^!DV$>o!kJak`_-c+hPZe*-k&Y$AphptaFv60@yn=Hb zoN%o6V9NV*h&?&}YUT=GrmQ1>YeqobaWyPxG(kJc>WZw|vK(|%tay}57k^Mge>c`W zra*CS(7A3^_zb$2Y|9)A{BJ3Gx*iT?XDsGdy3pPabTL-l3k840?`qh$K-dig82hlS625&R<%;-4*Y;jbI8PJ45*1 zrj)dFA0{Gqsm!%-2g`vhIGRg&<|L6AX{88Lhpi+r)3P9_Ndu2xWvAitKTZQZak?8C~6(Y`L8X8TU1Sr(AqIztaz?>nA51+DTDe(|dmpX<0@ZcowvZ zR>iMGtmt3jL8>%TK-cdd;VBm%Ppo*hd8yPWY#8)xsUbYG;?>!DwKTxo35_)sZve-0 z!^rHVsqnC*SrmhxSFErNvJ|e&&xC_<2MEus_;~ljYw5VPjyRL`k7Lzm!&XU0v`vS_ z8$XIx#m_5NoakyJ{K**x_Y!W1V(_DQmc_Wwzc9H!=?D*hIRHj$&X^(wc z7qV3~t+tcr#7SYBh9~fRhgWC2*3mY_cIdoL@#K87HAMa^iNL=KcTo&}Ua?|WZwq<2 zwkOO?kcwy&A5W~fcPLuew%G~hUXFk~^*Z|Zs||*yE~7lT5tE|LJvs{JX_k<(x1)#@ z@d|z>Mh#MHJIiWm7uH8HDq$t% zSq~qZo!zxW$hQYRU^(=|L^O(zCsu@omrH-{`c7`?^oL`;YpH&!1?FU|qCD&2W3#@N zSC2`Pdw(N3E5!VYUzJ$V#;=h~_0R;z&H>=jv6lX1{YrXXX5P^pnc`!!x21)GG&sJR z6h;jb@hg5+VntLmqY}A#@W5LKc-F(mP#aQ9qaT>zn9+(Hul`TJk$VUH;n+WQQ4D^C zVuh1-B<$#52s4*&BQ;BEX=tPwP7Pm6dDbIV6op#C(2Iu9w@L%}QTz(U3KySlFfFH* zoZPaTRBx-LBMVLOOyfGrb00poMB*}&!l7CTw7qao#IN{xV#R#BzTlH|gh;ktAUx~g zV{AH7OKo47pwFW9?7P}$!(0%|-;r7U&WU31D-wE&3ZqoElIlWBD1GaP>d!3D!#R;&>+Xl^ zm=9>AW_QZ>J&;JA_wj(D@fP6kRVQ+^=Ce?Gck{qadz?`+Ou?4UWmte|yBNrQ_e088 z6VEv4h3AbN5mY1o<9SxA`a|kErXOs+@s0FJG{$4iZa8yX3hl$ZR~BixWAw)q8pzJ> z-(|buxdr`L4C7BFWE!g56TZS|Ks0&XMKdUtk-?w^mI7zJ1l-5#q%;&P5xX+VjfUxB!X}ZJX!n+%TptIeD~%ywS}V16b;7xEQ>ovBzf`btLbr&il<%R! zuG({}BHo*ig|D?GBxREhE`8hqHGcU~slG05F$lzgb9^Xt)jXe-4$}TeI-|$T~PYM0WBX6 zrhE_3PEIbkXul&CSfn$>zx{gU7ZU-tH5?)H@|vg$>%F>WXtjtfiM?1C9Y0HYgt*90 ze;x&O+Uj`rkSkVp_&~`VHN4lEWn3KlK%>3YFzJm8{;m1IVnnBUmp|I<2YoWK2v41O z&ZIuKn!ZT3z#AjZF~y+??aO6rf?!M99nq@zmGEw{tiSWrQ{?&i0nl#17E*iO8Q0%- z!%f=Z^!Ns6GzNFP^(2TMTM-ax{gw zA&D@?Q5X2GU;JI-qDnAsWmz_BOBGIqo-Tgn=>uztrE{ZS}%AW1mEp{CGos z!o6@$_Orlnmb{~KTL$=&=rKw#o+fM;=GK%Pwh`_`)ve!CdI?G zZEbNA^JY9d7iecw4U{zcW3NvUR5_|GF8tt+6Td~UZ+D*kJmF@sjQAWF2hZ-c#T{3T zFlWdrdi1mgzFfv~sJ&Owj~(0M$2KOYU#Q4Di}gD!PbqyxyeAHV$sZ(GTx^5SjxH4S znD8I3gp2pvV$U+gz2sfDj->II4CWlN0b_Q8q2AzxJNr$e+N;#?OrA6DGZAM)FlUNG zYXl<;fm|*e2z*{BpTi{1Tk0OIEmvn9)6dMv0RAq+-%DaG^)TMS2dig9u~l`fv?Bc{ z{v^shQ-L2f_o*K0YWZM`OB59==FjpI>Q}V``)-Mlb>tsy>}H2ME$7n zla^FCVtWI7bV{B^``WYJ<9a*1k*>(g=oYt2IDaUuyuRX`s23gIS&r{G$4-92R*)|B zW1;;AKhZt0ZjTeop?1eSlL(PN2lJ01()1)#c2}!PmE|G0LEX`1NEH8 zq)^oxzqr}qS>+TeXSL|hSZ9wpU3*jB!CE?Gdz|ZO)C}5(qQL3!BM4z)S31HzM~)CN6$>wN~eYR;)n{x)1c0gJZtBD*&tmSIRuU@c}gO59@6=VEW?at_VX-* zr!A~coJ${=tg?Z)x;`P1?|gCbax^LaA5LX&OmPKXTVcuK?VJUplRXWeOKRkZ$i}0fgiyzPpmCk54k)1(` z6#ej?bfjTFn9WYyc^bjTTeq@?etzzVzXKJ2^OkFyq#2|8L+aJ})#R{z)3*pY`a9F$34R~6^$IDNB zNH@*4L*=mwQdF1eFLbvgAS`tft%{#ltZ=xgC2YuYf-XUkFq_R)-^mtJmMx_`>k%uu z4Kx<=Hrj)s6|3aoGM)GpiWS}c+6ciP?BM!x6tN{<&Btav)@ve#i*Y8b$4F-wo>)W6 z8>}%iJ%{piNUZpw*D9al?f}^(R79hA0wq?2%G3q#iH!VPb*xmluLO!#K&g6YxXG% z+lzHzvtE*jc=4+eDF&^#|$#c)CAgCN3+cP8oHKw$P78Nit==bkIlRje(i~H%5NbDy~V_fUzJ$l zctRVLyC}iG1#TjK#m89rxrQ26vChOp6#Lq&nE8$1+{7S44=5&EzWfN%Bb|zzoKcq3W zW;meVI?B@_KDI>Cry&52ueSzE>!Tv##m5sX3LnM8{-a;X*VQFt(c*{ngr^yvX)T~U zDdJwzLIZLx5Wuwm2}y8q?M+rhE>QIB!Y+ zY=0=4n@`g7uMj?$i|2kr%<5?MBV*L=zkz*@xut5L#~gu*#>V34J*{|hs!0}*hO`WD3tC6I5PP&NbVALq86w{g-VcQNg%3|6-8PRak9#^nWC=EpwAEsv9BK`T??#C;`^Yqrfz z4LrBV8GSZRrn)aQQ1;si+w@hOU=4D8C5=z5CILr=!ixar;S*qvs~qy^>m)P$%c>fe zxUQmgi%i-5#R5$d6kU7HhWwFEde=bmZ>Iyl&*ZsZn+|$7(!v+5(vd0j+aHfe=$20& zf13b%Sw^Acs0rQ*&8O23nBYPcQ#|-XTvx`NbdJlVH<{=1z15}=%6tcPiUROCV^-th zb+9F=0}g!~NQ-}IqwG)s-d~`|-l^>(Be#yTUwcauG$iTa3>!bJO_Nb)V}1Op;)n9a zNNSL-hhNqFvGs?dKI&o@cVXkvUBt$GH1Io9WiuUotY?MGmgdrB!P_&~3Jh2mbrIjC!oSMuWc@VcNPgO!2S<;AHPy zvXAA3^F1>83TfW2QzE%JWD@zC?+%CdbpTys3%nfSfF}$W(%sb-IFj|UOi!IpqnHnx zyqzOXx~!-S8_>=Vg4UWtAnUX-cz`cztarfeKHiikQ)`a+;L|m>W0*+}&gm`6^%m8d&{L{hmN z;96H_5Z-8zS)K%q7qCt}t4m~=QwUy4GsA?$?J}xF@J2K1)3HoJowxSUltkwrTrXnvh!uSw)7u8o#=>nm^b+gy}vZ~y#vPWzQ{gD*n1=B_$&~rZeAgACkbkH zHpRSgmu37}I$uS}cJ!&I1l##P$WIyzJdJW0ri8otdEw93q#iDdd&Q$c#n3$EIQ zK$eXG#{RU!Sc^q;*bqY;V#9je^dX88py^RTT8UiX{HT%i9q3z6lQ3?jtE>nqvzzORU$^S@pGH_e`dXh{rzyeCz+ z`vcE+`0G)84O(PLpqr#O_$DBEQ|^M+7u=a&kSA3g;fj04xMQy^9`t6q3m#>)xj!ou zd9Ra`U4$FiS4e^SaNw^AzFImmO&iB5S)=k4Mcz{0LSy0mx+7%emr=kIA^z$TUs2V) zdI(zQW|AWT<3#seKHo>oeYORzmS@MFC3?$7L92dytZy_$ZI9LT)_DW$Ze)f{@vCXQ zjsd!uvRuW13J(Y^$tvOWsCr`ZA_WfnDC1a5f6Qjt!=Bxgk=^bv$~c6+9i)VNKKr9v zoT6q_W|>I_b?*hads*H#SFv8W#2jC^xT4;|F{0{qiR5dKBI)l7BO#&dRkAfj4aYJs zBv_eAd7{JfAm+>Yb)&SuEr7(^4Zd{ILuVy>T-S3Ey~14bV&m-b&VYrKuMB0sk`>wV z=z+tb&Adu6DH@@QevPi!d*2AkQzLeYoJ7gc7YUGeT?;I^Q4vKdxVx7dHufFM z6e*`Buys{uSREt9`X0tuwX;qp>CT*7{TazgtCro)jX={_6HJeMz^+=WZgE7#R05M$ zCIjC~o$s+e&OQQ1Pc+85bB~z9Y^O{*tson|6m=y$`Q_`b7CB4s8gmKGJFci|ym@}A zymZzC7&|kctbPB52LAO$eYM?@cJG>LGV5Yq>UJekDgP_AJ?@KR-&|q&C4~p}3%`7l zp;LGb;jiZsjaGWD(i8pnNkuhZ63K!N-K9f2OoD=oOGK;UIW@mR#$>|lgmS%kWMq9B z@T`ZYMq=*sX82aYE$|Ro6P6DAO86D>1c_xXSCj~Kjn~Qfiz&bps4}92b~S!DOe2&E zu@bD!^TWH^3L2&6^+Z_go=;reQ-F`ouS(3XB39lIW{ox{7mp5uFLPeeXY*aLM~ZjWAHSsyiv*|cM{0Zun_ z#zj46Q?ciOx78+jeL^aXel7u?_3&(I&f+T8pu!n13|HiA-;-XETa*rm!5MeRM#CyP zKZr%YHIiloSJ5BGozZJR7Uk6v$+GCB^10IfuqWUr;bZXgZe3SR|Lt_b#1w_k1a0S2 zHn(km2#x+tc-F(Kv8tN(bacW#Ns6~6P~RuNacLm*obgcgd z)pyb7;O7-9blbEO7FVW#rK<#ZI>g7@JoW+YH^Bi9CMx(Tng(sykPU^Mui*Aux#X)}kC+ zEZwn$@~lU!P}9#8o=vi6-2@{<#EV~{STU}2h_HT-AskNb3@_OCK9+UN`u$<4CnSSHd-xf<}J_*ID&4SjrIbcX;itBfO^(jL&4f6Otaa4qG@4Ii7m0emqB zmE;gubb7ytM)C2)3Z)KiP}IQ>veWa)_23%1nVO?uUqE?s!^dWS^B%rX66^=hvr|Ph zieHsjv0!@`#Edn9{N@v+N7)0qmig08=)HmR~fDY3(!@V{eDbJbs*vvcOOgPLb)P@a%u8U|Czbdi9GItYM*qK1E zt|?p$G{Z@(!fC?mDU?5BQ)1ob&egIf=l?xpiSB(@NSI*+-uDCG+*u7wSRSY4VO z^O5y>Z-XZJ?7nhU1IG@t#R2;iJ`+|y{9ySj19h6xV5<&RxPDl$^q-*^ylN4iI4{T_s2|MnKBtZ_;<{X-ZkXPM*eq2)}G z`~0zVuH|WRqJ9(slUpmctvK8e`6JUoDALV(kmHUSPqak z)fGJbb&Rm)_tsy zPtyv9p&EWLc1tjBUSozyy)Vi5PRiozqe{)8{FL4np)8;S46Q7tLtd(2sLyeF(Y~1Z zbEu)^)8jOwV-YQ4?leVtM_G(6YBfaS69@WERpb*`qh5#;t|!we->Xx+D(FgtPpmgi z!0sqm>1}|shdAQiZ*%DkJwqJ6#1UV*&7*rt4Decl6V5DGyzh3aDP-E;x)884@ zr_QE4pAj>etk=z?mi-F1l^BUSTk}~KeD(#)lR2yeTU<=x>hUT+J(X#V8xPH1juKhloj&G}j;%a^OA!%rU`>j zxWfH!f$*vMBfW0vjh;4bWnrfqX-Tv<{@kP~6IbMZSR^F@zv97bg|>)(gq~5wZOjF6 z;m0AACm|9^*4r7v>B=-{y7rjVY-pq&z5H;io?7JF=tipl(2rFgW z9`C9U4m{aGs(Pfb(}w@eJmGnOm;o4FIxDP$6+{B*aAx)!dU%rqdd~Hf**3nR1+4S8 z;d~d7s}7^JMgz#$@==h}r_VZb^!I&HEAwmA6V?m$Hq zw(i4fL07Vo3}aM{?~%**#ZBM!mIn9tz#g4-*>5+#$8O`IjD@VaY=);5$q49jDaiNO1Wx zSG@R6ks)NaaY%U=)8*ud{$Y|h^&HhQlc3*$laY37&$3**e{|}Y{gJb8oTG16|D&Hb zKV&qjDt4FfwrVTsSv?54uX;ttC9rPBIj%DPZ^N&abt@=7Cy)4(2ExD=!t)EBc<>~I zonU=!kbm6K7iK3*fTt0>dWl9Qoysy<7pg1hhjR5ddAG>}fTn*UJdNPh&9+r^sE!jB z7%S+<+3)~)!-76=XPz4HY=Kw5>0d<$E_TF^DvEc8TLItYF$Y=a#V=n)G5C4KiqOHH zLfsbjIp+T)JX_%7o!eST2eY#f>p;cRVEaK&`OL~Lu)e}Vv?_jHvEp4*KcTly0<`U` z2|Qci;{~0qq=$kXaALC}2l9EdmvD{w=}&rU0{kd`Ua=ywTdok$B?8`ku>zhg@bP-@ zs-j-G_878VK|dnS_7g7Y1;H4557DaldBuvR@LXZTiclEfVJC{gkK&nwL~_)3y8iHZ}-AX!!SrDCRyM*$jfS*Ys`JGuH zxX*Ehz?c3amchpmE1st=5}Y?W!e^xrcypzaUP-gT$rG1So-OdPS%%QcZ9>0leHd6P z6R`|_Rbs^s_jsX@^VR4t7x|p)*(wLhw?OnkIm|ek`@SeqK%;;qN9j@@T(Fl z4(;?8yzCvo$|Dk#HdayZ8Y>(%b~)u~1Rt9*%iOL)SVwD^vyX~+3BM|_!v4x~`Szdw z5a|;HQN>lXuQAKT`Lu%aG=h&UkvP5g6S{}m!kX<=L|FJ$i4|tFPMY|+1LP|QhzE2fmZC(5SYplQ-x#7lVMF+-!8-uP;P z8`mlJI2Li2rDr-00hb>2gdfGvD^}F+vjvwcQJ^#DqO@UbHNCst0{48)r#y`iE7l~x zAnSH@hY6L3M1+NBBx1$Gdv4I4b%`kz;zhiKkHN=gITJe0V0qOaN?&dub6czFk3Htt z;Y9)E*@Bp5NWQv)M!gGsD?1}%8N7m@iS_2_5luG!m<+iyY{<4(s;IQY9rqdZqbK}W zjr$XKT;|k=?sQPaNqgNfW|N{4=}y`rVs`HaiFrBzs^ylfe;dnB`jtx)pIV?9b8Yot zu2Wm4Sz)IXGc-D@_?vfYs|?d4CSR z>z_ojyPpT#P&I?x+GisF-QogYT$62&MRI@oP0bhY1={0+or<%&f4jeuL(dQ3r z+++Gf(;8KOUSct}I$o3Or-VRDl@IWHC!RTo_fb=>?+knB9|EJV`oWwr&Gi0jCk%Tz zi8|eAqWIDY2Y;SKchxn~-Of(fQ9YZ*2rMZka}TCM;PRWK<-R%Izu=47@d31Qg$4Sq zWf{P${OQXh=4jQ)4}D`4gk{CW0+OA~a#H>86Mhu`-X>N=#y%plxj}3wh~8e!a`bC_u=j~T%Ex9dH@BFd^KD-+U*HJ*C_bK8(Qk|z*_;1@w5>@8KBt6t z0**Rvib>ZjanmJ5mc^0bJEb*4ZWF(h5x_GGo@IzLQZ8Clmc@>UgOtuD@H$9>n-(}? zYT0yA71eb5mpWEE;AAt!&g-vT0EuQUY&m19NzB#HGe~t>W z87}}2UNb?xz!M@j0amN;I9pm`|CLlS2Z5qNhIng<2PzrH&?!Df_+hRGUU}1*^3F8O zZDIF0a!qd-yqcOs`0JVH8e*1VqTLqES}hWRKQVLjaD+2a0ob~t2%;%zCVT{*cLDuiqHS`pgk%baGjGI#-=CGCw2~~zu6V_V-&qJ|BbyTAGa*s$m0df9eb!d?pZXPKANk8dY9etZRk)D z31Ng~hM$xg#e$iOIqZ0@gNZUXT-uODd3K^@s)I+O+^|G_42zMGzqIW98x@#-HieyU zf1_GG&uJgtuVGj?Qe>c(X=}Yq>?q^P&CX7LT3Mdy1qQS?qLak%-CgR7I?C`FlwyRnmY-7zsR8$sebLrF8)q zP|<<%{YP0%^~L?d;P@J{#5oywlEU*DF_SqvC|w%*s~@~>{zdpZCx1t+XfVXPzuoc9 z?O68hdJ64f&P-$IY1bZ{S(d|;8Fnl+aw@Hu?S!lE+M!mLY|4{Dw*QE4M=Z-?VDC;d z;JwEUYi+S;wmVK~j;AU%wphhj->4nkSq!Db&O%PqF>)wjB!tXR!kEG47&&hl9qX!$ z#U&QF;qFqpa)<;Er&ypvoT3|4eL)XWz4|O!;V}$iZ~UN-5-f0@G23~ie5VT%EpgbI zC3J$xce*Ot0=v#rD2%WNsD)o8@`X1^udY6LOKORKBhxA0*VJUKH>&QlM4xd(nZm~P z8gc2?1r}dzBDG2^Q)GoB4l5Z(H=cCDieAju`NB}jJ83cE_01JpDx9HmcsbcL)D5TH zb-}r9EjF+*e zf%EdULg0gTFv_U2=y%2Ek@3GVmXkV8B0QeS2))rC5yh!6y+=2^b;9%MTTN0^+7)a!7L*5xaqM$pd4=RMBTbG}M=Zt*pCeO%sBAdjic zg1}z~$Svkc?%DtUaCO#kQ9WNDUqU(r>F(}E*g5PR5kXQA1yL|Du(4ZIM8xjI?rvc( zDs~_sm|w(3!EUgg+2^mhzyEmYJ@?G+-k5pM=X{PU22LMJqb7Z)t65!HT-s3D_3n4t z=e-L)DIdW;c|)fZ;o`tdSbO;!;TZ|fWDM5dq2K#CVMd9 zpVm`j)-(0N*7fv7TRruAYL1g}Ba3iMNfqkMli*yF4)8hn^YZM3`9^(gFH9Xom?py& zcz(gtkDcG{(1vji_+o})2C%1Mo-qG;1Qd3)1D;v%(e*5X9JI%jKMG|gdg=?u%zWWV zT&O4qe_nA!-od%TjSimBni?SDC44?{gwMqhLSl#qNcRN8s@HdD^h_J{xlv5{RlJxQ zOipQ&qd^Gt4QD&zEaKUD=Ct3fgz{^0{!DBoT$d-nWP4b)Nh;zDd=7EM+z*`>Nv~Y4qmI3-P@5?} z`8ByXB1U&PaY|?I7t^j2{wRKg;t16#7O*C~D=2%elh#Mn(?SC)3_r1w@~e10H>(+a z*Z~|qCPLDRHzLl!=MzW#2=juTOT!`fx+&?oxSpCGwnVQlt0}+k=W{a`k6LG#aKHvj^>QU8o1H*BT`1I_x1g!0j#W=($kw zj?(sWf`+>f$k_3YP_o$*+cjEY_RewiMU4l3%C^QI^C!?8!2{LVwV;}&VBxJkj`G^Q z!LZgS2n^Ux+(0821lbg7!~TAG#|39cP82zZN+f;HL`!{-CBa80W5{jOL${|+IMRC- zBg~N|7_9C4nudNh!&z{+9ztC;)S2F!t5@fZi7nFO zgFXED5(SUfh2rIDCU~NyK^8rn^}HWog3hW9GJfsDsvyP;CynKP5HZ46v|{1cJMD-i zP8;uo69N@$=gfmkNwa}EJZ_4IPE5ry@02$#N&@Wx#<2^B~9-A^E{YM)3h z)6lDCu!!?sIDe*$_MgsbC{}yn*lSUgKNIVAv%-w*9Qm1yjOYVAjnJBJj!OR4%zbY$ ztF++B#MAw@B*Fh3vFV--{QvL~;g8HvkL`Qgcq$a}z4s)O`@uiSS|J1YqYiE|$5oCt zc;#&g6-ShGI!;!nJHVL;Kd4u>MkRZ1yip%X&DE^Y{k1p7e+sANu~v9L*&F>!r7Xvc zjvDeFGEX>QNEk##bfMVmTHFw(*iZ!eui#q{I;0b4>obcOuc#=z5vjtezn(u*tFkdWRN%TG$J^f^-LM=fXfHYqJ@j?aPmug9P|H5 z*~@CX$jh&ZaO7Sa$;)uT`YFzMGB=w})^x?j)vSZZgDm=rGH)3J7hHC|7yBGF@3kRr zRxA0I<|E3%pZ9<0$B=CipCWbOfk!&<_Z@!+i|@hQ?0dw(^a@#7p8_pOVQ4mxc~W(L zD!OY=vb(u%i!uI*dCum$V>^eEf<_C--P~D}gTLp+5x3T9K}eTnBsDJ%@;$?_yr&UL zOkT?PeCuY0;+Ne49re-2LA5k@7i&U5*;_P#ea_%vIs~BBtH9$U?ubJ z=a2fc%N*PNu|f5H3#mBbnr{%1w)2ODS%JX+4i4sUw&g zupS`Xd7mFN$IUlw@mqW`6-SJ{vVk~eXT$oJ7sylxBRs{_RKbQJ^h$#f?miQMN791n zL{>}mqJJQMRtaD^dS1*E=0^S?fnhy?ukAXz{sWzv=8Xfs8p-C@zN6DU*^_9tA^Ubm zd~zUDclUxul{UhAeVpECiYcrj^jq$D`g*Ym9zN`f4&@5^@hIQC{QWq87&1K!vLAh; zA+wxtcE~glBRLTKm7b%{*hCc(zjl_9d3i}t;NDC&E^n2aII&e8|U7~2bmvPdo4WF#Sw$L z{=dHc%6Yl+21}6D#R7lSs0?jfGRP6t^XB|dM90Wsq(k@dpt8uA@T`YtKz!GEiKN0m zj%bCA2h%`G_@mN({-g!3{m^moEf7Z>?Yon7$xeZO4qr%CjSEI^*{c(M|Iw}oV5cT1d zA5N8N;Fxj!*-F?TAVzp_u^Zq_4Vb@L3*}N*RO_41s)96ei3RI3`e7{P>tH34v)zvh zSDCYXRiGzy9IAvJRs~_q3V*6ML4rYPK{$Sc-~W)JL&`TTH%}5435#l+Mm@S2# zxFf8aYzXd$D&4k%b~$Z@eeoRo95EkW$h-9( z3@fc}lV4?Q2lS2u((#&68~Wa*s!TajnKTPb+Ulq#Q*0_fQ&B`@s6x9&S9tqC2kxrd z;-*X9I5{;?)I)*yLuaeIQHdnTu-hKj zvVIeTCMos@Q_@}v7Exy4+2jG)tu1u_d2h^Gqb%dKSm_3DsT-p&n&;oKQAwnih`m)O zNI9bdjnAFX?KUIvzY}Tbc-Akf&>dI(>`H|Jj_Cf-9dl#}EXSyycZosAQu4tx6YOj4 z@r1cK?rC2_moP`asfp%z_gM-3$2t;8KboTanPPqwwV{|KU=WiwX8%_qh4O9p(!EEqyDSHdnfc$N1>rI1@tYofoCs# zG^p0nyuFUNuvxK7w#Fo1DADN-16?Gd9Q=935&37+gehBM;Jvpg@Z^Timlaw=OPFU( z_%y{Dr$!PXfF*^&9qmM;;?FCNC~8|Q*!=K-o5TDd+rE~500->uK8NxYM;uYVJWbGz zj)L}M?SMauAE7v+>zjNb`Ql&J(!vHSoIFwC&k&GsL`r1dwP-ONQB*_C%$T03Sdl|VTOd|_hr!`SRl<`keuUy2^#M=Fc6onrd8JBtPQ^#J zkG?|<4q0LSONB2^;9FIAIyV*WmSz)aR2}W6YK04yt)V=DDrCGgYKRqP$TMT}iex@5HGx_%!sS zh^q0U5=Wf2QUlAdK%k?3k{{dasBFFkj?mdid0xinX7$d8^`YO;KBU~ZeP6c=p&*$KCOC*JpN`&QM1!Se|a7Z8bmTt&qZ{b)6k&6Sb%w^ZrA7}XD z>IvIMoF!WK>gXlrHTR=*GbO9<(3)4w-THVbEjUp}4P~r4!gPz`D)ESbZ8Ps)eJR{ZZ?Vj77X+ zpL&_HoHWfLqLnbemKCp3yFQJS$Gu&~SV=x$T{!Bd7~%G!7qTm@jH<;Np-0RMS)_GG zy!6KqZ`@I=on`W+Wb{&Xc()`Tc*?~yGBNQg-Fi>@?vn;6uTO{h`z-M0ZPrit9MZAl zE%D8HPh2?-DbLQBmxWU*d7EtoN=Fg+qxgK{2(?x3$`AS_L4vmlNak5$e|t}y^S!eu z#}uY5)3Nl##t)s@ca{D0o^+>?3z&V30)G95;2MCNEy8I@xDg&p48XRl;WSNV zgdbM3<@e|W~H6|++z-+fKycp6zIl#>PQ-hwW|iOim&h z+<0I9;>9#L)@iwPrM(h!e`fbWQ&);}C1`Qn6R$5$rd3^)u+KG5v{|TF-Mx5rSDL5; z&@b9e^qccnjQAJS*<({tpUrxP9VsVeB~A2_qaB`mQ$u-*w`0Rg8Y!{E;hwiyj{Kav zq|XsM$dI@JPtq)wFkjBy4p{f-f2o>QrC-I~oenTl>j-(O`C#yIv7{bLN3Iz)%HJUNX>M|f*rQFVsAd(>&u>W4R*L|#VC5V z&JE9n+u_ePh39~I>IKr2w}pJ$+XrmVf1}%fn`2YIVo@(4zQ+*LK$Z`JWzn~#V|Lsl z?<+6Te$)~#2A!lWS(oUAWDA_x_XPd0=@LDhW{Jr?6wY5Ot_+b*>|I7uZw!a+fqHnO zoi|pFixu?=)6LLB9ai6BbTWoTB(1cA6`j1HHR=*^W!?b2B zl=4bPiDcIg7buu0gA}dN(tQ$FY$*0ZmEoE+gZaCRwDUq@phsg(-0<2u*3JHmCd)C* zB7v;QE+>2P2Ls=K>|Tp8rq1#~b@lh4!ouoxV$qme4_KTn5e#9+jh1{U#PgF0M(mISj;O(yepIN}*QXY^7T zN-ayA@G)aRV}}l`gx*BWdfByHbl#t zo+uB9quA6l-cv26SDV!FY@!X;?JlCcBN$WmCv78( zTarM{qK)w9<(Zr~M`mFnX<@s4xzrVw4Kl{9!~HQVDU$Ld6hD0=K0C^7LLK3lYc%k_ z$9z|-<6l%!KQjm&SzRG>^87JQIx^4)7JTan{82~b?XW5(2q)x)P;tchPN$^PM?WMM z0|!CEeqGFU_r*_D(RAemJ=C}H#dXW0Y55IZ{Ose0(`pr0iTCW&Qiq<+WWuO^z+csT z1b-%`j!tezbT7-m<&z^kPt?OM4;^rw-8_0?w;o!}cEpU4bLjUey4ZWYBfdYNplaBs zx4d=&tL^(03inwh+bsO$&2Ru_v{RjaSDV$Un!N1$+|h1KF1 z-Xq$}bg*WP2R2CuQU72a+{AQC&D{pmDpOrl&t?7AD+jZP3-8iNLhftQ?{IJ6xgoEU z`K|Jej>u)RRACka6KA zsk)`Hmo2*G zD}1TTch*^+xxM{fs~A;nRlo9myW7Ys|7>Vc`A0KHv3p{AA&v3>M|TXi#p8qL(YQ0L zraIdeud}~dm&$le;bO@{67hKeIPOx%E{sza8_Vc0_BrZw{jqR`jPg$K5{c%K4svnpB~J8{64nW^xf#eXop`f2=V$M!|Qd7o8REoTgw=q6tk| zN*Em$j3XsJG^r1B&-oaHDbKt_+>focCtVZnefNUzYixnn_3)%n%=(;u4JXze9U$X* zBs7{b$Hm32IMXkS{&`@B2FyL@t5F!NiSmborc9q$ zNe?TBfPig%Ru@s99!lr?i`T1)2kXA0I%_PC}bkzV`l z!_>tN7*XAo-eS?=*Bww;o5&&_H`{{cJRjKEdV!dGdtvhgMjhAt(?Per(AmrtZ`=9N zR8udsV7lIbkKQbzbzgsSD#ac4=Y#^^^TY1Z7n;oWw(C;o(!Z=1h>AU{l6Lrig;2<4 zvNUo4bCe%N_)fZ84ehYW#{~m=ji8HsZBgfz3;wz@l;!xeW*|6e?<5+3*OG0|AJVP{ zCK!Km1LfT?#SWO+j$g>p;a|x}l!D_cg8$VTf^_`mwt4GDY2;>2q&kM_?)>|JDSa*75m9b*QEVrcRi! zML`Gm&5sgqVsrkc(ZUUp|WzWyUTt>g1WdRNoM6CH8V8U;@@Z15JO z7ZafMhkn-s=Te@e@n@1qPHoK+4yy&hx-s4&I>_e`N5nZq z3okqQLe7ssNF7j36KC1sxcYgN=VE+r*57$yv0#{K1G{%eis&FeDse>Zj~u}}#u?^D zL_p8vYWnD)ElO~{CNn&XU74;tum z+ds5$uQQ%XYGk7d^7A2CWdKcy+4{rfeQ7(l9Z;JE|WE-q{fj-FAlftxkAil`B$%bjsII?3(L{=k;9Cu}z_- z>Z#@gL!RCv*3?O)jpFn1Iw?jCGR_mHe*>W1&wSGUUM(FS#k9cMYbnpgW@^^bL6ue* zGF3tDZl(3D7~kq8PuKV?RQJ9}yJTr$=e5?%pS+Tex~hf!KNo^o%|*J2Xk$R$M=9%x z)b|{jeK8r<_IpYutKXp;j#^^EhjoD|4+E!Ew%V>rkRIt(OAoOQc|XQ&5pg&J^;-JnvIRPS*~GqG zm&cz;O>jqe{o;>^-0>sib4w)Q+4a&trQ_hQ`aIIH;4`(|8SnxA1;YPtb|JM{fQz$1bc}QoB2Gw4a>?`mv57;jT$E>azu!*LtAo1%<1l z$r>lY(4zxW=_P>UTGlOXm;+ju71H9(Ca50gh$b`UQR!vou`6mOi-J+}(oJ$u4Zg9gH9 z=SS7C(E{t!JkYLB5{n3XXkXzwBbp?eM~OUsd0$`il54c7-Ux>}ma~XNH7VJBv^{go zN&tQ?!dH)Iwtk^UZ0zwrZN^h!N|+c^F<%s%<)TfN9^&1`T}eMV-!ZjbJZf^gspKT0m^4uX}+G1FQifoABiXV*a@YBpTwo@H9VS}_{N+e|3c|lxv zGweOY5yz~WM`tk4;vc0x6X%vQqEmSmT9#_yg3I2xu=NIE-LqL=wS!aBAS-q`N%|ngIy-ZmqkLYr_p%fV z7)iI8eOlJpoVlz%F~_{dvuvKIy=i#G!i+P5861}KPAa^^N^!r9G*Dk1?~PEXCf}If zAf4_dvz6UFQp-BES}})>e%lj8yX;TH9WbuU1GnFeV-Xr*O{AsV9?rzrLqV1emLz)P z>KUQ5M9&s;^}TV(^bjgm4%l|i6gEsOAPwC{1K+{i<+lc!%`iim#}Yc`vIgoik0hlL ziajq|Ur#di(L9nGJ{HVxpQpEcOz`=bv-JJ;3v^9}F;1>LOK+-FQinnlT%&!KMcgm> zL#lQ&xhHNW&!4e1R2L7dQ}U+^7c*M-+a1T;^rgIqG3)7Vy^Qo%%ZCrDH>LEP1FF9C zz)RDk>FP<2xcsOG9+7vVsa+lM+d~fwx*WxFeC}xhlCkxqmxB-R&kX)qk|1}(7vWae z_)+mJsk>(hS4`butK=zpv%nL#7O`1)w;^lCKF1Pu14huV9enVdvlZ^tA4X$Ty)lRNSG&A)6w9&hl7B_XtpMmA>`zouRM26) zJ09Npl#ZIHj2ATA(RO?z-7rNNm9DyB^tz`k;(cD;Jd{ zgmgy@$caq@zW*5CmyB1pN+dgj)=0~`0`$~#2i_@pRK7lbJ@0@;HLPlnb5>?v_g~B_ zEKY@jRqZj7((OA9f8mJr#*b+HjaFJV)ES*`KBNPzf6(I7PWVLk0UOn{dwa|G1YRR9 zJ%_=*99=xA8Be*A-M>=Y?t`c8+Oy9wdTORn+Wj~Q zjU57f<=nzaDmbj!5?iFj^vM-voc+oQAGj`HIZnNtA}8x#k}J`yqMSR5CsX2xE(Odd z_0DjJIJQM}*BUw~q2-NWTsO;2bO$qqP|^`$)GQf%i_{Zo)p(Z0>(*F*1IUnmsJcS3 zl7<1_VY4n%9S59n$3%Ebhb&>8H~V^E)WsI|Ia=;z!^1N^WbxA1!m;j`==NM6d<-XP zh1MlH&CnaW96C;y&AUkTet6^3EX8g{PI8N&D~o|<$s@A&@jE)^03*U1|BJdg{~fLJ zW7VraPe%=JX`z7$zBubwHG9`8jkBuw`>U^DwVJ}v-}h+Vo;EtiOC~#fxSo2o|4p;@ z1j}}3-K8Zff6^DP6g@3IC9jd&?Ak-5@FQOEz8cEO}Y1S87~iLbPQ2{HJWT(K;yYG~wQ79_1(7b@CjoIWB)mHE zamzPa?&gn`87;u;FIn~SHzOhA0IU6&;SVm6x~M(b4L7!qp**eA8=!-Yw(i(|i-O!0 z_^c=Wd`Cd0W-5t3sEdc$uJo=AX;g2bF8z^END2U z!f`bXIK%e3{KhgR`Q3cVGZ~&5u`V$S3x%^z@!)w|3wWx+N4QI?=!KVTh1WKfp0!FC76Z_0 zjT!Llh0nKj=`A{TssnbpGK=M~V9L+HoJdF;WFs0Ce_nCK1oiF0pDHhqI(mRs$t`;R zj6E((E}%Sz5l0N~xk`vi4~FgCoJ6FEAE7wn%+75>@Dw))Dew`IB0dM7TOv8|e!4Kq z+YJu;guuz-Dr%K%hhG-3*(Aq+#1!Y>UlqZ+Uj+P%_Jq9kRrKmATb$uIpYl|NKNI_| zTBiwNX-<&9h%J8bMQy?ioZ=wb!~9w7X|lu7&C;xk__mZ@`dc|b&K|%ZiCC4iYXt# z=VRLQma(KJkHEbDY(>0;SD5nbgjH0Xc^I(;BcW`(H-x-a!j;yJ*lqSK+GU>-nglvw zO1J5v+8m~IT6HqA@p(8rZ1DyDsOwb1?sum6Rhjue5u+^1Oafp$=GSSMWa(`FXizeSUX>tuq`&Ie5PmJ|CN3o!U+=F~6m6=^IJL-fH@z zh}FdHSW9_E^1Wv@tz^4Dqh_vV-|q4EVZvpT0bm+mPp+3*qARO@H+AYtKYX@Cr*R(G z>Xl5l9<;)Bnw~gls-i01x@9XdX-kHex4)C?OKWIOqb2rATu*sM!sll0d)*EZ-KbPh zmAn#hAAVHgh>vm1b8t=^s6>7t-_F<24P7m9NQaG-rz(7I_8y$DgDhq0=%wzOBJRVF zN*vK?&0q3pQ!JcIKTCM_!c!GKw?wj8xJ2|-Vqxx`A0qC>s`3^`0Jxl+hutB$zbd9sO@@6ur1of|EMEqr-PavmB#} zU4>l;&dEFRs1sw-RJ+w1N)d?BkIu(d>`L+)7QsBkGT-p=~(K0ZSB z9hCsT67p;HMvnw*+{GL{N^-n$I_pOt?Khl7e2cm-Z`*7F2f`D;Vy7`K$+O2l|IMeC z3ruk1JbSGEJfC`>G{*J`4tS95_DUq`ue^k_k@4`_(@3;p;oYXiWMY)IzI@7{WVk!n z2yB0Rp|=*h;MD9mzqS?xFVz;m98TC#_+J4xCuR^t`^nfSA{SzSLDT&>qbRL#Lx zd9co;<7>!l8VzZ{G^t#TniJc38(hM=Tp!Ay{F&IdTN_#tG{2FQUeJQqHm_;)P%nI% z`ZOx|^K1I>j3?fYQQ?%;POcwx>pB{qjsY41{zV-Jw&ZAv=6YNVw_Ht271P2{n~ zdv7rf%iWXYpzxQB%Z`KnY`^Pwu{ADPUPSp$b~Cry;>3H__}xb_3s?SXB&>dt2;QZ*v`r;V8(Jh4Yy3jKRj z8wu0Nq)X!IMQ?5F+sd?2{Zd$t^y2nX&8@)|{k?-=Jyg?GRv&1mAIh>s_V+~hceL-+ zS5f5)YUxn=j!p`F#pb&?%M!tXl#-2+65y}!_rtugD%A-OlfF||0r|uaIwd}V_22z07dm#=)h#C*>aBL6h9+;4&IZ4 z&&Rqozv>EGzTYQZ>i;ABQ8R~ndUT`x1ATC|)By+f>BdGCn41GfdN+|n3*7~qo&LDF#u`7)-5?9=;g8>+ zTjO<&rLyEGf9$cs1~dWSsF~soUoUqPc71on&dfJx zQCg+!qs$Ex9X;^lmb0=$J6*A+!UGe{6dcZ`Y&KD!8~{zzJfZxP8FtinL7R^==)wRq zEb({2EIO0^3O2)er)&2vQcsE_MvuU z*Y^>m{LnZU7WR~u^fJYE)0WYozt8Dk*46CR%B6IC##7pLgBk98q)=d&1m#HYxoE=a z<2^wCgdUz@tCUrnWt6XK9l|=~t+fb1-yy&vzN&X3UX`E8bV(NQ`kTj#^zcUqKXlK* z|55Ms&Yc^6B3lW%HDy8ZGhKYj^sO^?$|#>toTHDXJ9(0*3KiNtU}v%}Mwxiw-ZNdP zrI8+$i1Le`H?~+HXMv6Z#Pg}$} zU}-sd9i0j_K95MLmmUUA^2GJVNup8lt1#y1(7Z(+b)p9h?4tpEeg5?{UF^tuuCMZ) zMP2iB(I?so7pWGoZ+H3X zydvwdEf{6})KD_@3cGfV!+b%*#~yYBl@q=*I)4X?@7g;n<>hlv#zNv;=K0ELig*qq zCM-)&^@8kXq_s?kO95!=5s{JNnMeI+%UR7Edwez%*Wm zKv=G~oOn$g1;d8uq2XcH%kaZex^XjeV}EUd{+*Z7k%BHRuCT!3c8a@p<%JcIrmQc= zX6FzQzv919@ppA#nO1plqZ@4L9|Z-oY_L01uX@~0r@3jis1)dq7jLA~m+x(G`X6_U zk|@;b5BAOxjuh@AbxpZ&X`C_!>iJ{Yp9oq}r-Bw){-|#yrDbL+_$Va+2R=~z9*Jw* zSbsws(A4{nM9Tef%2<2cz1^SkY9ZcnQzALsx?YfVcZVUPeW9WF4_(&iib0NfG<4w~ z`gpq=R=W?O9WS-fwgflyR#GVF(liYqty>JFxGW&eOPR|h>uKc)-0mpbOg+QE|)fr@B&_qYmi<^OZ!^jXUS=5B)Ldi?wX^{h*KE)XtnLc<{QsI!Qd@Qmc~^_x`hy&dXbSL}>xO|lbCICTUAOHY{l;3oYM zV26tb%%eQN5JzMM&JeWy+#tq9OjvlTB93@C`HK8?Xe2BO zUv*0Cg{lb@ZWh>!C=NeDaYVUvwsdHIG)%H_0G=oCyhLVni^|!ZYx6=uSgMjOpgJ-TRq&(LUNAz2mDs@*K25Mcd5q?zs zQG7J3uDSC1>|Q>X^0^sjc-SCs$`G1ZKzD=gu{Mm0G6#sde0*`ej{;glbtcvMH-&yYDm zgCIj|D&hGKPgun2ovs`1k!sIGSh1m=Sm=@36yb(JrWxSIfGR z?0IrXx^#wng=7_}uuFMD+lPFhmwUE{V-Zj2r+S3>EsGGy`q5spCp&B^mL;Go}D;L)US%|L3$REnz>`Z ztT>R=s#{^@V^@?Uj-)H?tg(87D<*o5pyL?FoZZI${qYc%qcCAR=`)ng-v<4X^8XY2 zz#7R=SLTy5oJ!YQWBc9g?*)pPOz8BbBz=B51W$iY?yX_^@-`P#S~FUd!(yrxP6>0x z!;8kSh|E`8NaFPr*m?3R;YY%cP#n?lcNB@o&XAvK0xrkRvG%<)=JuaK`Ss@(i8;<3 z?2NCsDdr4Q%!f#wtW)6Q7enau$Q)mmJK^>40{Zj1IZ85}@zu0hv`*g~gV-F)i|vcB zC)|`*(uEn*ARzaobkjrT`jg{<@rG$4wzSpW1kWTeUp19<7P050DG`{ezv9<>61>$I znA5Oey9;2K$4ewdQyHqgsjw~0#?mr~s0}SO$<_6)@gBCc| zwN^Iybr3o$Se#Rx%=l0cW_7Ya4||0Z^pKZxNxw6F;dQ%fbMS@A_D+?}L%?F{}$sdrWfl#kEbwjv~=>tjGYQv zdw9TpvhKrh*jr>l`0<|lY=WP&}O8SRYwgGSRLXU3Qwv%htRQ(m*r^rG9I3B8x7Ln(xV_JbDsr`ijn ze(Q+5iFlV1iDYAG`-=I$l3>V|4kRy56X$R8K}dK>g*6(;96C|*{5iceT?0RS@W$`w zUa?Vm+*wW@JduL$FAJ!A#C~s9eYCL85K%3%UZg9ATQF~vih(TRzoE`j|1BqkV!M&> zHjhmg&eM+eez)cY(;ww!jk)o{@;@ zM^FEW@|*8m;ltV};MFa>>O~w;7qMM_KCUOMAE*w!nP+$33C=k3?sU48)yE{W=b$oM ztMPn>tysD!Mc!GF1Ouv!MWf=04nIQ1MLWfldc#TZ=IndvgVtYkLJ@OJvOWxId2RIN zVL#k<;RNt}hRqqIrt;{C>{DxXf#eaUxb3JDmc$j%{h`bstjr1Rk_zZaHB&5Rif_}; zio3Q~yHDi5o6N)1Z!6(FmcoX(;^OYE*u6RNfBcr>=BYrt^g5$GNI9@9cZ>PmCiAD)OtIJx<6CKv*>{q zA^mBNi!yWPVh%*_2eBN*qZ-O@L=Ok+vlZm@9u-!H$`nl>`%=pn%1mL*T;)IX6-6`c zpoS~l9%cbKkD5hYNqBZ5<|WgsG%M70yTD`SOU~G;1@k$l;Rx4_j zzgrgz``TH;P1X-?`9yatrGsd)^*`F!-yKUd22nGMfArWH=8`Z~F_SS)&=#Jm2A|k(d-Mx>`n-j%g!rSHyusnJq4QVS$6=OK3E6#Z$Xs ziEC{a((iFL=#^lJ8FmWas70Bw^3e8fu)$acJbU4p%;;G^=(lo5e59*Tz06&nDNR2d z3|;C1fj`RBq?PVE>4+zP%%I|kqeD*$QLnOLRj=LTux>N0JnDxk&1YbU(`(vkDEs@y zN-!*YP378t*w4*|-GdL60Cwp*!&x^E!mk1N6$HPsU>=PP2&(%8k~vuo?4SFi#V-ri zxh0jh#RZ_31M3d0lS0qD@nx`X|MpE@9^Ab!>Q|Z#BB#0t)!?vd*ZrJ zI1?Vho|I<5AJyT|HTpTj5u<&kF!y&p;$^{RA^deX{P)ZXc+Cx;Z|~#lROhBWcFS^uDTMfZ;)w4@Hw&+ihQSeP13W|G`PG>x z*JAohyVN) zRS;{7Hw$y-b%M-HebK1+^NJ(BolNfU3-L?z~i`ALzZ zZQn`h9QRyE4ZcVC?EHD>T)jqnjJHK?<_XGpNtbf6^FRwZ{~!_g=f{M(wm7HG3K#ho z(}kyP@QI}r<_n4$S-;P7qz0!(LrdBY;@a;gHFNSqrRU921|Qq#1U)~Tw7fZLzEc|= zFxn3vv|eTR`T3=r$t}%Z;JW$_IkAp8!GZ_gY7C*1rnq2Xr3VIl3!p*$ov}dO6SwFG zu^cO&j36Pahg4j(*e_gUZdtDnex&oXwP92`+lzSjkzT&gAKsMM;F0?uXhGN4i~)?_ zyiBm@{g~X}lF8Z!DdT9X0GzDbQAGav&IQaDXU-;)`K~vFt6e3J_Bi7oR<*OtG?G5N z;DT#eh0R9Y2zrQhkJM(BJsShV*r@)=Li@Hs; z#^lsBl&4fok@8O!{%R*eY{N3*{H%&jVqNNLqBl^U4y`MxqL*G+;hf&nq7T!paQx>jA_m0XAFax8 z@JTl?@}DdsUi_%|(MlxC%1;Yj*M-83&1Mx_EVVFkEYsw-RnztvT9{Jlg&ptTp+;3& zcu?Pq^+c*+pQCWeM$(Y|gq#oT34G1*@>nT8PBX#!osVSp{!;A6sxI`DpRjdp(SZ|0 zDIMWwf);dbsiG>OmiTzp4%$`oHhsRr0&Np^G2g*zI=KW zXK0ERvGp=ZDyw`6FvSJE@3K+ZwJDV!hz^F3^Fc7+mOiT5I^m2>v#D-rdsKFG!tnL8 z>BDRKc&ot)&)X{I)Q+33lh*SO$hJPo5W@Is8S@J3)w+Q4%8|HeJG4Gwg*~1to(xYH zK9!a=r^DBGffa~#i9LitS->1I~#^sL?$ z^L)qADOb$U{Ff`1)Q?kq4ti8-V?PkAzcq?fNWAh$%zd(YpOx;JvVlxyPiwwwJ>SiK zDpPXIQ#HdwKNN0n9wR&|4Eu$_ha)k>+V>H?b=?YQ?z&9hR6nE(KU-n9sEd@j2V!I-tJ*QYCQGae#NoFraY>sX z`|1^l-z3&(=5dZ)yH*qKk%@hcfNl?f{nfTOo4J^uzde_3y=a4;JJ`Nz-CR1)+!nW; zw!?rQiuZZ@gggj{DJ9152MGMRy5tAqnLgGyYT_*!pPM<|ZY&^!KL>-_R#)hrV2U$Y zSLO<>2s$su6gM~eqy6(x`e>mE?vM7z((Q_U1LvF1<%5~y!nDWH;1X?!IlGuA!@{|= z59_rRE_c8)yXMka@rI~6%@Ngt6*HORlbK6%whvqx5&`_YmhW)IyEn70h~N(a-TdI6 zR~8w#Op0D@=9r&#NH)WZpb5LStd{SSZ5SoR%zO*HUbvHeR|Db~$vqnS!L$X<gLXJu z(1=Q7a}<}cc6fA3|EO81*XdO&d)#WF%HFkWyePbt+JkRrPtxPuH5z7aiK@Z-=&i9= z>A@yTG*a6~uWq?YcZ_4I&?N`hC*Q_qV^4-|C2g;)!03@5wj^6&5p<`Es6QTJos(9l zb*I--{c&}o6-H?(6pc!T>*d=^Rl&|O6HcqM>xXr<>Ns0QdCg37qs~`>rBZJtr%d z9}r&AvIzSukHRtEBjlb^<72%U=Ke(G6u)M3jKuw zPjOV8f6;55{Ls9H5T58T&jIEs@^wocoL98cUCIlUC;fP+qS7P+6WHO?b-aL7uB zkC|!$f8O*ht#n(t9|rV!Ar)9ZI3sfW66pz=R5!F6^kE^8B%S|!b z{tWvZ-QNYty?zJ4$b%s;KHCVJE->9&Nij|R+yReIwZqa53uqm?gOOeN20Du8)q&Et zWT5p;5_l~RMl5s2?Q*ua`F$?k*6M`kep%tA!E-5pEwC!=v>(JeI1Y5joF}}?H&3HR zc6LFZE^fH|W<1Lg6ZxXNM@}3_Hd%pbvl`yH9*qA!`qCE%+Tqm;!T9ruFFnXSq>@d8 z(K=J%Iuv#2d3kf552!KX)!YS`M#XQe$jTaJi7Z9ucBLI%5;EP6Y z3>qY(2AQhp7T}BHN}}ksU&@&N!UvTCoakl+lLQ<<`UkUiroYPoQ#NvO2HVw)jzxDRT`}Q1Xfu~M9%M$aeGnJ(LwPONQTARat4HZn$cSqmeLn%+Dt_CY( zH*Kcs={J<+ST%lr`LjIhHW5iePvD)h&2F$>XDMd5`q1M4 zan05ok3ye`-q5o;7;5F1d16uat7k!!Tf)l(IdtTGk zp2*ApB*6B8#v)S0b0%>_wf1&t&sQy^LzjMVLmGkq$JJHFRndLjOM|p@cXtSg+_Sl7 zQzAAhqM%}>1Nm=vsO0FISR9wrv1^`$FjZOBXQFlbG+C4344MMi`L0uY86R6p9v*rBJrUU z+j~0uO4e##JM1vt6pKAx$@nv|9mN@uf^FeWqDUJB2_3YsY8}gp(~qGB+FGc4C;*Rk zrBuyb6Ll8`V2|4}b{)GL%E_{ogQ3-(JTkEiopaX6YCE*U zD8`X~Ik<_9>XcevX|Sh1Bs+?~oIF#+e??ix$lGhuE!Lqh&L|Z4qx3C)QS&@kEciHu ziV+5xH>3yL-J$g#v1calCh$Jl0^10V_^6xm%~1cPx8kUDg7E9~Cvt1;Au1i{iT74t zqLmvC(xs7JSiiHHHts!0E9yK@Kck8v5+<${=H^7h(Z1%uvno7`Gx1dw-M7jaWeLih zxcesxh07@QeqK{;E+;t3Nv7s>jONt77U}K~o37#?w+%gFmkrp|W>}P?r z4^C#DiEflObWuTJkT3puD5J-xsbD*GUyMzOW7jb}a;A`$i=gXmDH;{eo$$3;_JGl7 zq4M?}vahB;@HHlOSH%uX{Lm~entBXX!JX-TIAn+N4L4;a2%)PcL23WpA}3GYy))#I z3POtyehyW>sUHsSDRg1*?*sfD^_^f;sp6aS(~2 zw-&d?6|Vy@Vgh9~9vklzM(sICn)mku{#<+wUa`p%)5pup2JT?FOCxQ8|EBWaTHg7M z^}cSrFZEaz0&7Qv!kfv)IM>e!dvBUYFHSPXq)yIwt^eHrbj9DDlOo`+UhrjK3z_1m zj?z>Q^c*>!7D?1u;(`YbT{@OtBxGySfbP0|4#Qxs*6E%N3ICun5xPimajpT_k(NrkIFX^)=$>4%JybofG+nY&%N z3!wYe33PoTp!V4^GUBN>o_^zoK7jPA+#Ah@yQ4-=5ILYS|3qk#?z$IB>I^0+ye&>s zce4Gg-;%WLQIS4O*JH%?7_2>lM|Fo4ZOSVvC7@ehY<7KG7 zLZA-5=cuV2#k9aP^ug|Pbd#$LCmuh;5P=H}puHNx_M+WnLCsZaaK{GW_BN4Xhv$Hp z8h3^}bQ>N8NyDN=oIcOvixGi$e~`uvEZ6dCBjGt2UMN2-Ux?3(Uxkx}_fT~s#;#wnS~>lpU)q5O|&7jRtN8gw1> zF=>}O-Z+~}y<+sR#|n2mx-^%L?XHLFO>VfS^<;+ld+3C`c=awabo&^QGdDlun7E=X zJ|As{Biq!n832)dkgx4gOZBH3)Tp6EXNMK&z$3cQc# zs72rD@@00o-*!G7Kj=HHFR^94cgpX%k;y#4Z+jNZ**uvz2C=l8TmHCa-zz%vlMaR& z24L6Tb(GgRu=MO@H=+u>oZw?PyMx9fO3=x{*qR98A zFuhKT@a$0XkcZSo!w&n5I7?jv?$a6CwrHYvjv+3a`$~J1I>Yo{vB2juRuvoK*K6*W zW;c=ceq?|SJ3Y`KU&(m&?iZyPG1e4r7#}5H|2&{ULAH4K*#)}q(*wGDk`3Olt){mu zAJGF$?{|##u`z}v?H5TOpaQ*mhrt~SckJ?tWj<8q)3niUIBc~&8XU~0!McnwthK`h zkxGVTozFeu6?2QMsp}+~xAVPS8yp>R_!28To2J~g+}2tqpFXb}bayottbtdAw{N+RuU0eSI3?c32rPpY?; zsgTmMsn5PfTD;yJjpt|6+L}h1r|OOoHn|K@R}e2Ocz&Kt4IK)6=fj9*HC!?w7=Nd= z6YYht-q-5AWW&=$7(Pf9GP*kB{gp0gKWQ?(#X8#R{9Q4uF_$i{cEpR!uX^5OrEck7 z#4yN_%#$Zwx-D}5F7mIWZe4A0;nw4HVP*xLm}83vdMo=49?yw`TUC~j`J`(|eu2#FNfg!|x4}+&i)71AO0n$=Yg}_|8M{|)tFFpTJ!4^Bl#}T0@^|!Ba5$dn zWQ{K$2n?~LzCCyyIYKrtzc4gKBdtazy0uY zwLP|HYy!rpLMuN;v)t^ zz=|G(SAU&m`;TS|+>u4u|Hr-c`A8ALkfT_aj;wbNE{`{#4ZWsIz zb}RL8Q@|A3?~=i*E$hj4)=&E_-VOII=|=exibqu+pCa5ZpGZFS8wVd_wDBY37L3;y zQr`cH_r+qJ-dlIb_j$R)fbBBi84ta+n)suCDAHA7|6xCN6@QkG2{wU-4s1{AfCjc~ z3`XO3?DslP6H|`{<3j%^$~$&5Ral#W!c*26AANE-Sn8>v{uWWgNv zNO>NGF?a2smM?#10BW6+foC~*_QTbQIV)E=;u6MLvyPFf?b0UZ$6=wL0Q^z2x~k*g z(~jt|Zw?hBS{b~ScYdr3rza!>&x`PE3tyXkaZ>W+RzqY^E%5+1BQ-qM*ONK7jG{bu zQbttKud64{&R6z^|MGV#|C-hg!Wh5AAH{PdVuW7(8R?R(32@rW4y0^uFluxtZl4oI zZBDepyOTrl)44Dj=%b5sszOjOQ1(aByM{udvm2PVj|MBj3{O0B!49Rf>4!=)Ty)SC zNsn2y_Jt{GFJq}=AxdrSl7D)_0xd7lRFMMjlEt$vyhew0fOcOk^l4^p(=U8Q9qSqM zC5T(yag%N~<xkGN%@kD zRA`u~0dLB*(Kpc(%dU*1?RRM7g@>NF#&S5-e5-}iVm&eG`bc)KEKmL=mu7c|2?+%x zbiX~mWSMi*hmWD#XS0278xPFzXJ}51&3?O)!^tEywt6)FL_YL4LW^=QY%Cuk%6IM& zZ-h@{yfIfYjMa!}vzXlfF$!##O(JbR7-M0uH;&97K>2iNaU%4Y<#E!yVWAKa+6H(Y zrf6R?U7F*{{MDz>)n>n_OFK9G{6_gTIQ%x2(4ZS_qslA zR7o92I-;3xKIOf!C6eVCY%cTK54w6e0)Ji}Ev~V9+m+LKm%Bi)y(#cs54;D2Tg?}W zOwl~(>jZYMmI^DRZck!ice)cqZB)lyJ-zUApJDVujT+{j@ItNELukiaYWP&g3(bO+ z{BB8eXSw0r=}?o)yy|#j-D%yZB)*}bt0MGEr<_yUoPSRooB`(EZY1w6xZ+jjPI!T>Iet!X z!*$c0G1xqp{$#r0+kIWophU^A)c(Fiw8plFaHnsCzd!t)7T>EaZD)`(r@BG(1XUPw zUz5$xy|74YFl}3=f!n5g;oOgdX@Z|7_Ilun3Q+1rM=17{M_pt+4d!17uLMl}r-8j6 zhT&|5he#F3JbuxK%p5cv+IpNJA@*9>t*0ky*pH%9ern?0OP)BjX&Bv_s)=K>JP`_& zU+2Gns-&B~X2I~YhX{WZKN2w_cUcxm?$Z@gOEuwrl_u7_@j@wkQ}d~@{53ImnB3da zJ|_o)7|#eAZY-Vd^)?vQJTHSr&Fz;hjzMz_^#pvru2+-H(5s>k&0 zlV+0ZOFP0pFXpSp-Ccf!;!*waN+nBojeu=Cc9PZFk0~zmz=}~rXsOp@+S$hgGpjP` zg;h^z-(k!FmkeR|DyA@9P}ArJzD(a9zd{SgJ@vx2aRX@Up4w=#jd{JCNu$pBT6l>$ zDWy$KV~FuqYlW;G$|UH-lt(U!keR zwsrUm69R*mPy#E6GWn@LKmNN~LIgP1V4wAC(vpJG_*XB&I?4O~**E{bhQx!5a5k?4pi%mEP-Zjj^@t@1<9$KkM!vv2!Q8 z@;I`B+*9udcQk4U|9^M{udHIK$pV@5`Uoe8?H&gv8AjNk8I1pa61sP|5zc!WjENCZ zqHKDmh&LQA4Y@c7KE0|VUenD{!sb_xrMa|McXO8h#T<@}v#G%WGhEfp6K@Yxu7sPi zkCAJ#!LZ1DAxR|66?nZHwrUtbYuFsYoOO(}*I_d!V`sc0VZDSKhcd+4t}CT#;oVtx zzajA1-F&@BHuv3j$^+khQLfMP4%}#$snP}ZMVP^M=HH#tnq^4)PZK47+cD0m(TMfn zfpV{C{`zs!NvD!Qr&u5O^YUXC*N}P4mOf||1@#|%foGj~HcDJ$So^iomp|gc_OQL^ zI{5R75k9xSm&>Hgzm&B@@U#0_%%5DsJWL(>%%VJZ#*)S>?V=_f35Aw!ZGayMe;33x z4rN`9DwyaFuKg+S=j9nTagC!te#v)_b_3Z1@%p2FjX56v;er)+#cL79);g97f4^rb z@}u8HIo6z_mc?J_gSBmGQhq6&HR&sT|1N?)@n+n+^H+LVMY%`s+h{B|N$v_Z<|gp$ zohjbk=Yj8UPNF8kX89b)F`$`rnA~@4re)vVQTIp|EuGXvFMeiO z!7*>l|=1TazVMFgEACBYy5Slb%*{ z!I!U?mZCiPEp>AtSy#Ds~FUhzpcbwAT z#2jLBsFkieUMhFSZI0vUkN$3Wr#17qn54W{-=DTo*sw$r^EfT}>zo7h#2RP3>Jmt` z-yfuE87`O@9!gX35WP5)rLr-FheXol$9?(k$GstBuNvewKBp)AJy7dFCXG&hMhjVL zk77k8HD3ChnlUC_HcROQ{nlwQvDlmhomjuxJ0}NxIhOH>8j&Ink#`$sj@G81q%X$| z1m9kDgkLH0Gmi0(H1X#n<~$ufmeu&(bX;n^awD0SG7ic*M`2v1DXLz2DGM!ahZh!@ z;DR}?We1i;;gPl`*m&$UySqbY>d2c5L%^PfiJm$C)WpxD-|17*8+`)dnRNvGI~a~l z-7HY>y)WaRX2{bpv`@3ZjYsY)pI|_ye8y4MxS!!FdglCj#fY6jtsu<@pyI^zoDOkzSA3NkD`Zt zd_#51zERn#lT1MuzvWGNjZOxnzxzyhy$?TU^ggN9 zZ7?t``2A0b^|T~!b=xi#haIf*3T z`$zf5tNKu+*B$ty_z{W`6Z%F9L0P*KaPOucT4HAH|Q5XS~@g<3SJMZ~6>!tz|3>+5d%paAgVh+HNwBu&?yWL|;@- zag_ZS^_dzmSDg({?bvVk@PZ41TJHtKZruRr!hRur`>|}9MV_*lvEOKb6LaIw@R!xI z{it`$QQ}ygA48<>Ss`pp4kK}g$3RQRchs4^Z}ocl%buQpNAEHwWLHlgnIrp+t*K|O zIP+!VjSFUMQ+}g{X=_8dz7aUt zIx9x|o~N%{V(>-pN*ZEZL2+Iz&NaSB+j%n1K_wPv=w4)q(=JR?WEcr|3cX-qkp%C* zbHn1c6DZHz@t%-uZz8k55Ks-^r{M_AiGOI(cQ5SKBZH18X{MJ>dg1XE14JyIL~>;E z2I0ZVXqcX92E4}-&-;m)yH`E674N%-Lze1ma^p!owPi_cFX|>o+w^=%Kc8fO{|bv< z0WWC@W9iSGoyPv18$R@h3udg};FAT@(R<+V?LKI$CU$)1o#5H(&PY?y$xTik&x(O% z$A3|86F;=L7Df#x{iZ4be)v+gErlh`bjuAtG@qx;qT4b+M}DX1AJN~PCi0-;yVQ9< zI=1J<-qaK0C2+f68hC{mVzHk;>OYMa^|kYEc5Htz_P+d>Z#<|ju!o&B&Gh~y7c4iK zL3xIaS6Q)++(WU%`dA`p^fHD1>CJS&Xm@pIH@v`86G zdGGLP1N87A(`C6HS1RZ>2i_5SUL>$CSp#_P?Zb%+^x8rf9O5>C&ir0M-)wNkhCLG* zVrkPUVT5Hz=rZR!85eSqt}$~(DP~h1!83*IE&8ZluqX5 zM&)k!IPJT_fSLd}50;`)@gorMz3|pN1Wtd@7mbQPFVEshB&QX--{f@m*!-eb#4%(<>KduimCch5q!p>3M70VC%p>85` zt@{xiy=Iv&J~(5=^#6v@ISYKTON$M5Q^{ig2A^KDBq1wXf$i~p7Kq-5(|Zb^9`i=XEMyF(!sGq9kKtu0{Y>d4#o|4!u0iX>FCAUILXur z&5V?t7K+wAh4}@oVEvpfz@L}TXBF3&KVp{96l4dI)&RVFCtpwTP8)l${7IAa0#+lj z>ZqWvsRera%)RBhHoi@Cz&(rRQ64Qu{O~(1oH`y1-|FpvcLn7U{F#_W_~$K_!siCf z1+H-DiZ<3WH{ArL|K`zRgvp>7VK?auYp#AJJR`(2MOu5cu(XR8N;H&A(S=$$$!5>u zbk!r`T%?299$|P=*N0_nw?eCiHZ1Sgo35CwgR>8ZVQH`jL#)@-5e|Jx0o4LE;Lpo* zS>hUto2y8t3O2JGH(tAyAjub)UUZr| z@JI2Z5+iP>Um%wKJ)uWGH{iJ?9?i2blwnaTvEGR#CVAjn!XFjNVja*=Hg6vXB!?ZcDeb!bSqgeGlpB!De!%Xe7~Z& z8*r1JKddZ>gu;!xrF??<{k0w#cF6|=uC%7zUU;IxVQ=i$)sQ{&UKjk}(^W4J+HWDe zyD6VQTj}SAH?v&uu9LDW-hRVUqBEy6oL{8|Z?)X9NZDU!I*`%@%xm(w8-^RC(`D~n zajAZCwxx;D{y4suD+aOj83Jq$w9XA@`YGo= zZ5*P=nIHWjb8amW%`!M%L(FC54swG%H={w-_>Yvo!j(@Lzuw@Dft_^zljH7rc9HzT zuYY8lY8t5B`$3!g+2g?#1$6L(pLArJ1D=>QmwxHmNJC;-&-qB@JMrwMUGm&-T_NI! z5%8-x-UC3aFdfO5`FbBV@7ZGm^KCtGEjyQ|e;#cg;)$QTI-=`^9IC<6jxQFm9*Vw7 zc5pzKKjhv{T zIrm8&Jr4Qc`}1Ast9|M?oq30wo$o;B>`}wQV?JoIN15PaF#Tg$?6OIau%#t=-G_g$u_c~@Mczjip%H1?DO_L=2}UNo4#_-l{9C;FqVeIP^R{YX@}b!n|IJCq{acK=Sp$GoEF_nrqE z)vq-7^lN(LrET<^mah~?yrycYvzh0>x!+P4@yc6a9yURmKPVJsT{Q5+wo4*^YTmb+ zeVtoI!{VBb(v$&*1Uvgm+P#2ce8L6#rMiNyTY{)|sFK>=ucU*V5c`Z)cBRx!9R&M- zJs?SOmckkL5WLf9i>b9`vX))JIIY?aBO^;?IuCJS&e|dxzP8$wRDj4WRji6xVKxa zF)Z_w?7-k~Ja>R`h`m0@9$AFrgAOJbHtGkfvE+15g}VA$!BPD!iS|A~8+Z8OvQC$2 zqQ^n1(b*rH{$8c|PxjNoVFCEr=qju6;gyas=21MvMA$;9_jej^6^KEt-bN1|^Of#b zWscvA>!Xv#Ft(*{0B%TCWi|Y(5`~4MtzhrsIM}_{1gpC+rJQ0WjfpeCDOSumqQ?yC zI;b`JHMrr)|4(XqUUr*|_xMA;jYEa}5?c$lv%_(Ae$ly_uK4At4c6%#gW_c_NSbYN zVDuOE1h+J7FZ<;(1vVQ6k@WkjxaGJHcFOA_daGR=qlW44eel3JrGB@q=2m(1+s-iQ zw+VdHP{+yszS#CgoJe^###;>sIQinit;$}R4Iz0#iESUawec2@E8dP{#1J2?8bIuQWuV$ZR_o~RMeR;dMLnJ794D>aTQ@_kuJZk!q@?MImC*{=q zXetz(FjyDgwgTq2D4;Yg;iU-#i8SG3-eK;KRCL)SMhnCucy)pq;hqP?zYH86%D z!u9o_eoT@yh_P>XlJ_SP zpz~WzFtuY|E6vPba(p)B)mw6Pdt4xM$HNPidWO)(IO(-{(_s{8EzLV^i0eA}pn7sA zx>Vf=G2RDvHFl;A3yrWi#s_tzO7&-o*B2rFO&3`HW*^~Ql6d!|&|CF1pdHmIH%!UPqde~yGWj2M^mN1gPD=gN zeE-41>|#p@92g6u|7l_^^Dp^vZUG(oObh!?vcr4KbD+PL7P_yp$JN*8F~o%PBZadi zGVt1LE7JAxOd+rFV+zymZ=-Z?bO5U|YbcB`#MjKrpwFiT)ZNPvCy#T&r_u8%?{UC< zgx}vKmk&N5s}ni`pDV)mhVwoeOlMiPQ5YUuLuBr0P_^wG-RNS2^DSGVo%U7GmLAra zbV*0{&aQ%{zO}&z;lJ4Pn15t}Fn*W}mK?VP-c^B5rkuZ#`RPw}#G+Zso`$@|dr9!| z6fnAei@c4n!KsJcuqt&L-ED1yrES>mbp9l|roS~l8sd(29h6)~@8NOMzxP7HwlY+t zpyL&LVywM;@YMxCo!4OBY^up-#eEZ&|vBKi?kwnuq2ku`}!JZwg@SyJ^$|o>HOjW`5gRC)n)cYY(V?}yG7sbt3RT5Tznsy)fh0;b3YVTW4`%nK&2Yv9MCb4C- zY|pUX{ehQbWZ5a826`P5MH z*SR44w|rTC1l--_54=mOotYM52liX~Fpc&;q>1nxL*cE3DN8x-0PO=b@$piYl5U$%wPtDI+>0*Et0DhCHD0W5EtGtXg*R^Y zz-O=WnXEP8I=HgI1%L0!XQLXK-dBj2=>$%92=H7O&yk4{wQY=q2`pXJ_fQz{NAdN< z2q){M!v0S0$*60+fM@7<=8oq8StskLiNdNxRS3=M4*XF(izh}rIXOx={{8?la~%#j z`!w-eKbF576HEE7@9AGO(4q%(fHy^U<=1Pc3(xMU!>+ilz%z6_*T;`mB585?Ep0Eo zN9^2(Kwat&I*0Xq3|%>&4*T+x=Ev9~&74o0*ZiOsy;-05D&@QV;QbxKK>fYMdrgK& z(a7(yiTBm64s?P=A%5`c?m1E)5`|ma+n{&X{j$fmqww%sYs~MmM>gIr3Ulji@Z0$v z?6><@S52B>-VFi`T0^OoAzHU~#(#4QMCrhMYA{pE7Dow5jkzS|Nj6k475uHf7C2%@ z5&eEvse-q_zjumgzYe-A<=6_NBt`5xwij-fF3Fw-n7mfXf4BMX`KsGS_{Z4?AN=jk z5Ib6@2_pwAC7}~W1Ang9BlK|NENfi8tB@9~Z-v`ztZ|Z2AwxW@N|WXlWJBqY^`dkx zK9S3{uP%OB?}L+X_h1N6yFmhjGNAHbrbw&CGlgP4ajI}ZO1($J#}fyMhOsU_W^<9o z^4^q=*26`~KDei(7Zukiv|T_7ho-`=jW0!fBF_lU%D+T6OtM7{w;gO$n^k6#l#_ko zt6Hsy-OANZsA^NJDriqph?co=LMV+C6dT%zARY;e)kU6kkd#E3})caQ?6@_tq1%oNi9 z)5Gz6q8QQD@hV9S?Fw4nw@C1}OEh|`H4g8%hw|(oUz@2#wjU?;b)BKI?MD#<$=4Gj zcIIp%<#)4S%KZo;Pp+ZEds<`9qx(eO+I(%6k$dns`Fmz0KyN+5bCdk2#0c*~SD0Z_ zPG+|DRV==JhN=$?!Ey7B(bM$`YGfRWF$0g$=ErC08tqW*6?uX^kDT-C$hCE2nFoZ9 zs0Kem$6Gb@qq#M{Fg?f+o*cGftuSV3dmZ_pmaR@kXcIlEUaJ3SQF28Y6#%7ujgKaYl8rK)k3*m`L><d**29My?_!3FjomTQ+`=g;W*;Ay_Vd`cDJ>r2g%huPVE#WsE14UAKI_dI=_g|d@5#GKSC-1I(O*}@c=fAr!2RK_ zIK*)p4cljr!>799bE51GH{7TL>)n&VHP1n~wb~QgF7!dYmM5~{Crksv(iU6O$Fln8 z9?ZAc7hn0lVqdkwFAvCx$-40HTZBm0$7}h#);nY4d3!wfTiLJHD(#fCU9Ja&L`4Ii z8kjoG5}!PEKzaT`dh)e7W_@?SPiK^~*O@A&FwG|kN`?lKCCpFz?NV=S&R3(InSTE9 z3UAD~qeZPcdE>=*UZ~SShatA=#tMPVq9|&=Gw?Z+#hrf8xtlx@XAPu|s~hO(%N}?n zbqGT|OLilLmwG{Lh8m3PY=F((LUG93Hk4d2#N4t_>@YBhX{-%!!IMzb`4yzBaadZW z8QBx$?s}|i{eS2BHnf2*AMAmW~#qaL$8(W=q|_gq)<4C6!X!KS$lJo>hm z@JI2#F)^ZPbA#08{4mf8xJ;_Pf1x+af^hD=DeyM#Gc|q?gqnjU!ToigsZY-!+-juc z0KWY#mj><|0|$QZBpIxKOfta}Z`|)qADyy8cQ%??)~Ph-ogE&r@kITibT+E5{nTLp ztFCbL{Y+vu&J$NMRcS@Xj@0|27amA*N6j;dl)pZfY2me0xN$9%oL(~)Zm#`IM^!Oi zBrQO;I^hHTa+tlT&w0xp-uy((RapMV!vOZ%{kWz=s`+LL+zkIEa$`4c{7zp_WY?4) z2fQ;o8mDjocMx{n_`KXb_b|g$V-~O zmU(7GAEd7hU(q3tEHN!xIcL~5tx$fYAQ_4Z^?~oNQ~rrcjo0pg=q=`8) z-G+8TkEj(yed-vnx6sGF*;e?mu!!=RisBr_wbf>%ASMfjtlvu%n;ug87!N$HH$v21 z!*|^%bE*?bjp;XHeUmZIoGZ^JO%v3=9*A|C(NwM07&rW4f1iqG*D-UQyL7`@)+e(q z6~ZN~o18ITGt-Oc=lv#VXU4M7WrbAzeQWGiXp3Eir3|t4jZE06T~99L_k(R$B-pUV z9`7A1pqCs~apf(0+^9Q`=6;aircDl5dsO*r&+ord+ESqnd27TeuDmA;pXkb1&MzI{ za?2H>+Eh>Y?tVVSm+$mv*P%aKkY7}Xu>DN+GEN_-G}~iI=3-Ii2cOx%I*S|T2m@^I zliHAU;4>fiED$~+ll9#NnG5Mdx`EYuJuq+6O#gOcd+~}ik)m;q-XHoq*BhONDBruM zj>pSi%nAZQI|A;rQC-n?M){Hg%4dNbW$!D`bIy24PkFD-oqH|cX4M{^%5C67Gn?aR zd*G#@X_W6)5YK&P%)UuZc9R0l(uS>T7&8>_iSO@qqtEJCV#_s8G;ZlclUdj7YBw)T z%ILysw3Vxn3*TFT{-R{yclaV_nPbbyKwKOB-`&1RS)b(Fqd$;fj{(3xTRxYLPqky} zw#JXb-*Oc=`?M_>442^cO~KgOA&lN0FTpv?4RP3>5W3RxAJvQx!HMRH!;aDbK@ZTk2rPe{T39U&+1BkgLf(O(Vg2QvmRsRSZ*tT|L0`7|i`y%q@*X zZTXfYgg1$9B7`5)F#XMN!(;!ZQ69~FAfL=5$M*LIRl7GLr4z4ix_V0+16ex4R+f&y zI!1bpCC+Elz-L)4;g6CY*G8+mVK}PHgNhN!@<~#=epA7msuR;`dRT1ci*}VAL`ma( z0y*2~wEZafyu3*E9_|2nAO6yDal!ccRH*1HBP2=i;j$pSuCLtT{cAcH-tBxL?DWl) zU)+C-rID)Rn2N)+)zO<&&4zhe`X8Y)DsIv_eblflMfv^cc`b(Y-o1zv`j1t794F9u ze_3{o-d^gnUO|(X?_k33Jv6;WP7M-VaQnO63^AJZxCIZ>fZS`zFfqUkKji!1#Wx8w z@w*w84D-RA#ta9J_C@LJIEJY7?nVw>J43e8p^#(ogBHcvU^jlHD#}yx1RH-P*x<)pocb ziuLO5xGDS2{?5~~!VP7YWt%Rx#ngY6czNSx_EnqF_KI}oj(_B3m%b3bw2|I0cS8Nf zS)x=`7kMLHtnZ9NZzy?DX}Ts39{&D_5l`zMl6xVEaL%!o zOowVJv9!gy9y=+|-0-zo_wu40q-aqbq+V(T{84;8F=AtlF_d-+fmHgK@Q%hjbHmqW zPPf|6iO1?dDBNu#Vx#zaVuZrb56-NNfMGjqM83{EbHmqWPq5Aa0@I`6t2^uGF zRAPjqxiNIU*#VBWq>$Fym#FS>Yy3WVKjm2*-o2UiO$>F1hCwoLD%vIGkK*fz5vu2B zk+jVNVfx9lWOd>tYD28?)X;;JXNUOO5=sA|8ZhBPZ`fA6Sjr#8*ZU8m-KsLJk}S9t zdy15}U#1&aPPLueVNs3VGcQrq16JtocbNUIK&6XqonwJwjc|h>>`Z-*tZEl<6 zpVvyptM3~Rh3#__cygslG%EhQVuU^GdZ`vFiQjo0_^BR*>Z#UfaiTZ<6B&e(xz^ay zDuo`{9f*{5p&-N!oN z{W|@Ubr|D~uL8YslBR@?9qNN?!n`nk`!DvUKJD*W*3vu{ep>G&Gd@+&eHHOIGw2Cz zJ+*?KC-F!lp3|bUmGp6OJT{v=Wuwx`Jwpmv+U7>}=VVl*19oD5YG=<&Dc|Avh^^Tl z?)1fzuazD`jb4FdVNMenKS8|yxYX4ITVD;peXS|w*CI^G(XJJ=^y>=!mvkV*9U_QOl$^jGZIbcKJJbEF<9+xe2KwC%UEW>uyCQ_|G8d7RQ zh-0BEX5{+fiaHOPxZMpU-ppHMmpcvU>5303eQ{v3GebxVb>%Nj*AboOY~UTHc^^o= z-+40jf^~G;0iLk?wWv5wg8ocE$tDZ}3s< zYM+)CDV)mJ)jia&-v(3j=Ze5UE{0XRJM zFJtb;Nu42!mj>dEAr;a52-zM>QIzn|W*4dV9tFIsxXVs0On4KB3(aIy(OnZIEDf$C zS;;f}l@1nc2Q4L4%~`WlF;y9(eYXE9KQ&V#QWi z*OTOp|5ib*q`#tibueC7uY)fl^P+ttf^q+J)}>M~J6d&P5YvI^VDP34_B?EhG8OHP z@0J&CuOhXh&QNFO?mkv;bM%^ZXX#blKXiBfwP>eRXIR$kUz#^&KSQkj?5;S_9YA-0 zD!G}pndaQELSfBf>L}ex2XA2S_W6tH=6hS{kd4;3DO1U}TO=Kj{+kg9-(4bL>y>tR zFT@fzbh{~=#r|H@Vu`ytUlz^b*_&b46B5y>Bk9!AUomT$KuZS&;IY+*=pKhNR6jis zZLS=qS%zn+`eC-q(V(2kbRLu?#LYcNvi%2x=C;>Vw>5MA`d}i94|_|0vadn^0p_xd zoo{J4>u^m@Fl7Itvg|DsJ`*RCrT1cBs@qF?iRJLF=x!k!6ZVQ)_H)HC-5q4fc`s?+ zAUEu?%#0ykw-_llsjnhKLt=qHibq?=)zQ88UC`Iwf+5;8zld5eQ5#m~r9cYXZU0i} zgdYFq(XA^iu><>i#`}5nZMFsOW%~B@*9+Kn_zyZF@4>R@!%f9`seDH2fB4;Vp@QLj zwpY72TBPLQ*UQl?TiE)h3l5y5{CDm*-&?V%+zQOcyda0{B)E8@JFZ_>OYfZjOG78Q zVr%LO^5~H^%xc#GELcX=PHlVCKD3w?IIuL8XLi^jZ85DL zV~um(*`xLNMGR5e{gaT+8l0zg>;Wr%{?Y5*{qg4LcGODtk4}yV#Njt0M64=PE$!DDU$^*S`inR!J!*`X^#X9NWh_J3rPv8JJGPOWzD#f6D?vv$mM(3$ zkQNS>;Nesobm_E!COQ74Z=GyVP*>{VE>DyRDnH(lSC9_z@e(YUZ-<@N&Z9lnt6-<| zb}0QakMcYtQ%y#N3#M-S$)PzTf!A3*zo?4&^|tuHV*$ONqk=d0+TxUJ%I_dCkqVQp zRg%(PLxKN4Jc6&s_}$)7a!ub;WY~Z#2*2AxcgEUcA)QZO%==51bg{*yo#)d7PJifS zmR(doLaBP$C}ZO)RUQ$XXKtK|M8Bl&x@DZw919j zFSCfsiU#U(2zRyPMhVS-aTO@!c&64&SzdQ6(u z6bA1%1;O7Vx=0*Z*RLdr^6VGym?n|9w^}5(^mBr@_Hn=;wSA5r&VKKUrw!YSJk}V8 zoNP)oevbw#yRD@Ec|Dx`&*vefb3qi54GIfmH4eB{1 zouk1w$6a*gd=HkmM&}?eVb<_e7}4zyIijee)f+tV(+`%`9Pon9%4R;&+8NYg-wQgX z!UJ7RlpQ=HCg}>=c4-hds)_Lbr_K8p^cl-S@2CyS{i}A0H)RhLt(2oE;8z z9%n@y8P9UHxqOihWu9lHVI|7v@%bYO>DK|O+g6E~JDz(RIrbubJl+n&+_y7Cm1(Q; z+yl(ZqOCi;4wGOp(}ngepF(*>E3YtTDKX2gMg`^=fZ6(FIMt+w@&1AM<|ESb8h!l6 z{+@ahDW5*Zbg$|=q#EZM$d}js6vbD|X*XMzQ#)!W9hX-|2WL9q;)NwNa()?Io$H9P zM|ZMO^$`w`+8M(XJ5?tNe7301Ob4{<|AjiIw~7|$j844NK(6NZ2Zc$DbViE@f~pTT z6*<$(86J3)bwoDZ@SwI4%=h(%H$DvVU^T|a=)!2GBlBANo-F)YML!f-qrT)2<+&w; z>MA-T&<5Ki9bkyz6NA9eE&z@W9wy?*c$Q0yh#!BA%ua6$ZnXxm!mOJ9skg$BTMkp6 zTjFao4!KkZ&c#YWr~5U+AH|PKjF7rbDN9+J3F_8Y2+t?+=$&5G^le)!Y>HAcUKv`~ z$%`p%pl-Pd@JI0@6eF^pzLpO?nFSZt93(uS#Mk>Zp_)dsyv7+aCF3<`{kXD>55pnr z&o$Ag`16Vpi|8hyTLI&*QuYy^f#U0}Ev=?KVk|MoQ^{X>WxbRCOi2g&@`q?t{CUNQ zFWX-VaUBxiD?BAU1I5>ybGMovF0sH3PfoHL5q>3td65iCCm92O6n|bZ!qCV}(dN7s z+)&s-=>BT@q1qgaf=^SPjS?faHrEU9ydz+7s21=?@go!?$|Btq<8Q0N;cmv@v#Oeg zH=1GE>N3hRP<(CXC!=Yhz`hQU!TK%vqxgDaM9%&@xBo&i_w|8^eR_~R7o<3g<*?f4pOkgaCip7R z3Zuv)RDYZFyPpETr|%|re>mgQVqe@m$DdlOxnd^x;&g348s_VQ z7k~O$O$q3$JJHFRkeI=Iuxb5LAqPw%;L;a zQ3(OD5EQ$+u&_lD6;ZLfunQFx4vK&x26l^LUctT=*1OLC%RBpi^Cx?qnSEmR%(I?Q zM6OJOL#sYWyc0w(11ZZQ?s!9~^Tb|dGX{NCY&&v{J1(o^jT2|`0j-L7S$Q4LpEi>x z9Y4nBH$363bf?j*-npp2h9e!oZr2Is6VwU|NKsz;*^ZAQRr!D>ZwxzY%gYQ~p*A_` zgubw%ii2zAiisV3;h|dyjG_#dwIQuA?$B($vzrmRo@|BvJZ4L>S!jiu<5bqdLK_^W z8bIq^-}uC3PPn>L9l!AFJD-^9jIX=Z@x$_Oe9%;9{KxGPjj?#N9NMJ5XO~{SVIsdk zboPJR&j*{ew@055{iz~TvyeqD4Fi>twlM0e4Gu4)*J_x<&GhZCs6V-;_nN~s;%qSk zTVaHo^30h!?RKe(of$-Jjt5zy34VS`S6<8IV&36Pb7OqG)gG4*RH6p?Pe&Z1{%2OZ!qp@8N}DkQOCKnLNK+-m+$sf$4d`_ zabljb_FPNjq)q_!{`H?}pwb_TT) zwh(D}o&H3f`rQlsel{_WdNn+So@f=?PvU`HyjvZ|4fVv-4@wnw^6E^5mt{*>w>K6_ zV}ElC(j&ewmGQm0fBD&)q>A4s<647%^VchU(14W8Dk_~#_OhB~{h(XF&Fnb&NuC_z zg8PEU@SMI*80G4MLq3e+3tfoC`k4N|h0=THrKTGTDd+^APxOH;wZe=xE|}4A78kRg z+dQzu7bUImV)z`YSoZG~*^aZe@aIzuT*`>VQN0P5`FlrxWoZ;z#F=B?=sR)|rJ~vb-pH1?hJmG)Eqc86!MKm%d`Nd2 zViEgdty|=OaE3iOeu{*IRG75x7YnG@z?SOn81-h1B%Mo4?IL`4|Ls!m&6!Z{*pp>G z`^~#Hdg0BpF}#ug;e(33(C$hsUvT{|zhL4`E_TWu{lL^pX6EezCm*}R@+^B?6i$h! zzvpnpbbBmpa>BK9XY()vI}F`UNho*cQpFU%m#lV#Cd?`dhqY(5v3MXQ!?bwA@6>8z z!g?<}XWPK{_0qwE^Sw}e@f)hRSGJZl+~@GA~hJuL0 z+)}eeRYxDJxfS)F_v)JSOjW4qP z8UCodh8P=uzT9w70Dh(?DJ%BmMH~IGGbz89)hnNzmy044TYS#546i{TVm)H6sTB9w z;Kvom66s0Mrx%ES5i3Nd8zEksT9nz|9j6FQi!1AHx{3GI)W(m6V|nrQP5ka2a>Iae z{N##_{AV*Q{4-CvlllAeNonKpj&S6nC5T!(k;5e7`{ZSD%SJKw*>BcxJrzd9YT^FP z4p`ZbQf_^S0Xfd>SLa(JzibEn7{d=k7sQt-#2S97iX)YvdCsn>E`Xj z*ofAdVB%qnS13(&OvnnZGQb#T_Ow8abIW;SjUoQJZ;tOyE~n4qP~LjB=W8VN^0J1{ z-DEhBvh5SL*UHn48OrFY%=T9$SqIcHaj}JWYi(h~pI>Z7s5iElX^$Qr!+3u$ZyevKVJ$fSsKE@b>h!TwLu4t+jd26rX${Z>K(7o9TkfYaPkCZi*zWKuj?p>@_Hb z83li2npr)eW`GF}KIMx$3X$JwFvZTZd{J#b=dT`{;DarGSQn~XMGdzW${y|cz~aAW zfH)HoHImM1X<#(dc<~RLv8ES@uN%766qn4W-^BUo|BNyG)vJEU%vBmwnCf+1OJ&`cfI+J&1hUtxogZL(lRlcBWYULD{c8G;JQ+uG!uZ}Gb9^>65Ld<`CyuhC|x_Aw;-o6|9_Kgb;W{j4S5k5)V5${yabfOC5mmJa=MoCmH7 z$ML<3d6IWAKP-#DyqCxLMgJ3gdww`(o>1ZpuU1*X!#q1!K0*a#2hQ`j1}n@iJj6we z#Cp|v{(7A?wlPq$4YTk1!k%0^2*D}|?js^M(uz_0v_Y2R16xL_Nl+Ydj2WlS^KPNk zj}ALRWAwga1wA@j!mt5aAYLWTP+Ae%{05t*8UpPsjX}gnL`^%RMIO!V>D^VQV z2pu@>XaR~j6@tSt^PcByk~(YM=Ial_d&I6^dW@J zCMuFyiLWcI=$yB<)cZ_t2t4zJi5Q7EUdi9{e0s12{;^S_I6rSRXE8Y)A)nkS#H+;D zl~(AmEX9bwK5+c7Km4ZGx15hIaSlt2=N{SFuNbIXf)$%!aDkwuxde^2rg zi41R=DOZLMN3>w+qe!s){eUgFONfV&JI3lrbypH3L}kBAq+5QkB;Z!+0bLJ1Ii3t@ae`0 zRKXfAlormM$ND^)AaSPHwUJKoOD)l{dJz{rE~w&fvcf+*0JfF-OETQH_f^HUS#CJ6 z`)Draxsh|ruL8y5-2JTCvHq~2Q40e-EOE^0C46j^4(ji-MAeZ?x#bdVOrnnXlV(e3 zR=X=smEKD=03(NFsI_Z>r*#M^2nQ}|@T9uCYo@=Lce}L;tL8~%L#BV{L94A%{=Jy% zc{K5o04v;~cAERl{>Imm)>_L<$xpPHg>W>;688O=#P}0`939XK>#n+R4bmz#EuyZ& zUk84cv<=JKx)4{&fhxMVIzwWAgmXLZ$%aG&M$EE6SG^MX+H}Bab1g9U?lJiaUBHib zEl_9M5#lpAW?Mtz&oD6c-Oogw=*T8_WI68mg!kbrt&D8 zHZ~sCt#ZZoiNqMNna4-wyWsXxYhvxq;|b*X5<1Ze2P7%=9|ir|Dq7wyWH$?jgUB}9 zu&E`kd2NLO?UwQ9X)Uokx#_MLpmY$pP*TYD6nj7$Q*RK@uOb>H{SAJ3=MNvo1c7UK zFuQZ!9bZ~`V)^vl@~3~v<+h&i3y0kj7Z-Y}%?c@7Si6AjG<1XBFQ4(h-(2ze8cq3> zp3nHd{;pWmq$yu^>IDz`?uv(|E7>BuZU1HWUMItl*Xvn&4e3G$d0>3Ma2}E3j>||r zndlVERXe%iMm10D_$q|%BlOx(Fh6;oJ-fBNv@kaqo%F1+<(vER_O-#7xXTL1oO&kz z;u?b8FIi&cNM!=?>hWU~ORf!K_ur3!Ko2!MxziMn+AraTOEf5(#SFjMF6EW2)$t$V za*i=meiPgOSsXQUrwp22ctN6WOB_S`^SUlmxv1M-sM-=c)VN}$UnW&(F|IiB;~evz zM2=Ykqe)~si5~dmbGNDs>+so;JusRC!GE6dKkY4uWkx!$)=&B3p5~}IJ)fKCJ>#?V z&9TlupT;=d<1za|{on+ZMi$*M3J2`B!Zr_z6UpU~|tMmALOMBc_>_Fbp^Cj#?I(fA{%xZj` zVQQE^h-oK1omyem8b_?@JA-!m&N%3TBg#ybEWI=OZ)Izi*~6};wjiQhxvQcu#l-># zE3W+q@fsU#t%%Qyhn-7|A<_0Puj}W5i**L_PO5+TH~PND%<0QTPkPb`$49b@gSN1M z{v#o-<{N)Vzw1 zL8z5rhsic!d;w{uCU>&K^AjWKK9;WAqWCj%D14oo#Y!V?@U>-5XcVRvEx&u6d+Io& z)&~aPv#)VB%L%dFTiWlkxNVAC8pC0rMjwUa>I!}&ItFJ9zru|^m2>m&?eNa1D-z!@ z!d|s2*kv16_(95h5f>BJ5^;^8&pdY!7}-^``CgtZ;_7*xoe+a-@89EdzE|;+buoCW zer-ox}0&z-<2>wq$RowkC5Iqu<$b{#ET!rcI z-E67pAehpig5Os8;f%y64mVWM;j$lE*vhz_g(~Wl`J?={5_|ok+OD)o+ZXP4jRaAV zCo1)%%(E7a+Hmo-Hv9KOOI5r?cJ zl~98^+EHHShnm^M*iy$+mXzB!Sb4e|m6}~Lz|sZyS_JVb@eC-f@JiWI`lGxL=&HP9 zBFZJQodSTQzo_CM9^OxF3*GGNfwt4|L zd(jx;Mtu+ItQfEPhOL{H4k9il@}#5~+38KYWJx`JU~Nz&7`@WOyN@Vy`PqD)ZKjQJ zSMAZ_6nU!)Xq$>kP<&nKjB`DjKu-(s*r5V?~}6xkhYQRPxp@7*^GUK-gzpG`Sdr-kuR$#N^5xbn#7P5KeJbes{b5Q&-Yu zQ3#Cg87x8WMC?skaj3_@(ixST*{@AwLF6Zi=$91ny0WsnZ1~+;wzJz15D_{NhpTnb zLoE+~tgokjq{^W_CuFThXu#C^9uPiFAJv2Gu;SR-zG!5#T{9~Q6s#3)*S~e9>E*PLBcuP9WRxQe19HoG#D0dmwRXa`}Uf>Js+C_rh zAyYj4&K~^~*5R=Pun>Cqs%b!?wyhUY1DILwUm;@%KX|KXJp&>!p2f=)o$t6fjtAihtDXG5vckUq99i z4_Me!qWxkn&X#&!Q@p`)h8g6r7i`mNe_T1m2{)Do^6=CE+}X(qYYqLlh{KcGY2dTc zZh;=qU4?--6YCr^dcrwk?WYA?I;-i60bc32z}8d;w)T`Cs$@E1g-!=0iIrZB0`aOY@#Z+wIRML=MgFJa-0qj9d3)^PtVTQNWp9k(rA~Nq7wu%0 z8)MrIq8|%zw5A2A_0CqXVIQ=R8lmNUCp*C&7Gv7Y___ z@W5f@+d!H336*ThU}MN#)f#5*x5cyuN8CDOzT|wqoI2Piok*8{Q+fVS9PJ4SORlrT zwi}p;CyAKVi6d3~?mTN8SFPlp?L4SidGff{}^iNh=or@h&a5w}kJH_mh=$n5yXatCDAjx#OF%BL4hXC0|AfhRK(U zxa#;SUcA%;M+7Mm$ehFxaC38Snc*QNFM6~9mPVJ*gF zNN_muJ}ehk^H;Y_aHz9VqxfaTRoTfGt}I_R6*i1i@YH!GxMb{U{_8mDSUwr!=(zvl z?cvoP@E|k-Qc{E2=k>n0#?Tp)Z!ktr3GRfH#wnd=I_z5OLvhKMan*Q+e~fztb3T0^sVe-Lr1^~7hH z_|Y8|CPTUQEK+$qb;pV~%I?yhTW4AMGwP7-uVbQ1(y-0sr1Z)S|87g?qN@^lW_~4Y z_#{KH-z0|+RXgpC9C6hL4QtwQ3-4yw?HMJ7HY2{*3|*9c^+nHEWoPtG&}K!@`@hV! zECCL;t>Eh0Y|!yqL$v5moaSD|4W8KGkMo~shkSJBB*n(EmN2)2lv5<~h~9mA%P-oH zTadjDt<+_{)7gblPg(5OH1HW^gCDy)U{u?Mly_!}^PC(o_U-~My^mDOr1PXqU@KiSIRq1btWEvoHYD?j@% z1XG&XVXydnc~)Ks7LK;XKP}eMtRC#jEZvmW7hJ91vKsp^{MX731GnZ&D#TY(`n|4~ zRn5E4mK+=?Q8kJ=nl-XWjF@4Hu|t*E(!Z54iWl|C(4mbE$mfS**AF(R5xZ3`zHa&9 z5X_imgNksaBk91u)l7}DCPp812CF;=99ZatHy_O6Vmg9&rY04{)UB*y@q4zwg9K&5 zJ1Tz1r0;H1_8i5IqVe$QiJ@Y7RTaNr(;jEAoBV-C76083gUJ`KbKCq1p8hljHLP#Z zyKA?k1$g_nf!QN>u`T47{B*Ay4oL0DMIPaznXVYS-yPRZXipW9^6~6qd>pJUYys=b zA~A+A-HaKPlGOTz2O@D_Co620uAn;~>S!a|`D!Wz1_dfK#_6G%njiY?ywA6V>!I;Y zUpzYZEb5fk1VH(cU?kQajGw9)rY{XWl{L|IjP^L)ksuyQr^=3BPSFeWX&M?HHY`R zpYixoUy4_F1v~6t@Gf3{_$;jv>UP)jL4SR*U)f>8OH@@}vFEzc@N(WaX@b3wTHk3m z>5>)XF6J?jW_9=7a;7t^7p!=6nHdB*VE!TUh?kF*AoN>}9PpJdd2IDmo+jqFIKrlT z2)DeNv%};sXyWRL6WbTbBhqNkHo^mMXCIM^m@F|&c`94{!3xxRv;prGXL*T3J6yNz z86RSMj%QzJhjV=DdDDioyl-7Q{5!6m##laEmF@SQ#XhZ?0706T*m&In&-pLs(+-&9 zeCpR9{I;BjUb4W7EOR{iN!iu^lDweQyOSK=e02qp<0Eo^#O?_p!s@w-J)dL2_@^$2 z3a5pshWJdw4I_?caz5SK{A{G3M@-)W zw(iUsMfAIjvc*?@vD#P%XPe2QZ%_9{lV;jDyEr-8ufGrW`KpcAA3M_1fbH$XwoJB% z>>+X}C&an;1j2gAo2tuo%FH0#XG?H4*Eh4qs@BeU+(dacnEvz}d*K`alTX`#h;l8| zu*HJ0bapcg=2@hTGmrB_gIP*{xWU!tigsCdSgz#&m~j3NpF!Ng>!TKMQRgSR{Skw% zxvFCJ%{s=v_mijrMFpU=qOLN9&Hm#K$roD_d)g88Lft9-q&t6A?|@VFJaC;wSANLO z0aYs8ai4m3n$?fC$C!^=Ke+F{nvMDHf~^z1u*BPsANHV5##S#nHG1+P<}R4~nG$5n zyr`nEY=&Y*u|0(6%b@!eHGI6%1@qQS;ltahqd%>lk6bc&&Kp(q3wOm^Fo`N&-Mx4E z$}c_mv9}9|UTSAdOi^!-HTJog$LE$BVPMQgpbiiST&SwYTFn6XX^m%3Tu z>otq{%^Gr@O0dSlnq01!tcg<$sc$q~sWQcqIf^xOPOHl$w-94Z%s6C$nokyUu`Bl= zRuij<#s1l6F;%GT`&jB^9tY!=noE>=A~GdKqY|e~S1dA0g5+_UuxFkw-q!ZO{)I!h z=)@;tS@gttzocYCsxxeFNr_G5bEWb=5WBvM;t>tH*!^=L>VJ;nQZ(v7$efaydCu_d zSsM_q645Vd#izXoN;0>XuqBjyA|g_U?`!K3k%rdw_L1Fd9U5lZa)#xNeAXdR7>cnokuz+pm<| zTUN!M*9`;lFJgr_HaY2dYbd6~w}8_xlHr-PDVh<-^)q$D{_SgqF(G!iHg*XY@gVa3 z@V`|$wbl?4ixWY-N<@mJ6)l>EoHm|q1It!+1o0{n%aUSCbBkP=TFXS(PUrK9+2%O6 zy%$D3jNv~h4Sa1cFI*Sho~Pb0!+T|(sBs~d?)+%QL)oFr)4_W9Dp|y7b1bs-#PO{= z@vzTkxXITO-}mptld8>8mpU|x2c4;6R`n*fyCNBuoc_fAE-}Y>%RTX4i&)9)iq)hU zjqXvB_q>9+bQ})9)hzJ5+zNlk<@4Sp=D3S~gKvf|;}d6^;r2Gx=u7`rQ5o>hImOLY zWvmjqgShh+6GMVqp6A2-tnuGLdbC>_K0FK@7Fa;anUie&Xc?xCx5A6rJLNekGQ4hW zjlcG6lCM)lq1Iw+Twt?}Dw1b3S46NRs7cTVasMgqiluwetA^%^m8Uzv1$9fP&Bk&~{X((m*Z#hfvbP@ic9E&JTH)v^xJBJdzj9 zY>tmeNf+%pmfqdDy$3;$v&O7h`zuVuVMN^L{l-duD8(8RyD3o|ceM@>-v2&(bMFNc zkrc7IA+3^^CtBgmK1vpn`uR zl;yxmBGqtILUmR(Har=}w z!}V$vc<{7>O>=H1nU(mu(u!b%1a@}T57s%m2Xv(@van2ZEWcjNMN~yv0soF>`;%4R zhi4ZFQY2zM(uxCD#+Q^ne#gQG_Jy_u6@2PcGhF=eBo|Q?acs&_bW3EXGEHFI=MEC2 zNSu|lVy?sXsDEU)nA*X?pw)wNoJX5t;`LKp#DK)HX_s*?rX+IxC8oYpiWG^nl2-g0 z+%78Z$bH%9xmnP@vV#9UYK)8gPfNxS$5wh^J3wQ83^*U|7jgalO+Hu467$t|@*xXv z@M)w5Yf#zAPc_`+kI1_(+PsiH!4X9|3SGT^U@@|uiK?Av*=pGMIs{+kdh+2iHSE;5DZ}KNz zPQIM1_c)%e^@$s5xuJiDQT+G54}9!=SDZL(998V=>fODife1}F-Q6QIp@J;*%~imunWL)_`1@H4SJ2G|6WHp9N`2v0>ki3f)zf$r;v-|jeQe>69b8< z(n5&=%x&wSOr&GzZyAT@N%39Ln$NsAH182l}NCF)kK zQs#hK&h>v`rtcKqur@fo}(5%wlDj4ng$#%GX+s!`PJno zU)$RmGd4Ws`@a0(FZ^4f-%F*V+`C=gQ0{t|#r<#vmAziLdAK#YJ`C)$SqYXA`?dBuT9pz>UTQvGr$gl4>%CisHVvqYf zsUo^&B<$*4%t}~h$vvk~9F}Z>jk~_cQ>KLCsG;UqQut9`WgCjOJ6qtWPmT1M+l*aw zTKDS&(EGAjf@O&Kg%p|iHpR2d=}PM|!yVCz^gBQK*}>oV&C(O{FOz=r8CSmW)^R80 z@+&{N>65QKf3z~uvwcl0TX-}X+WYFjy;Bi5O49~IwfD;xd=1BRM;kQxv0pyZA_9*E z5WmRdr1G1neY+$w-T?+oivbah5OD?(f1plv>qjMBI#@x0XB>#>$)a1mh;dL}QI`+nBSY#kGy5^qbYb6@x8oy1}+|mzvZ4HN3j_Nq^f&(rgENo7a1`Z&uf!n@$l4|16&rVcS zDeU2mqZ}?dXyBw;a#^IOeh+sIJh#IYCvC`-AR*-HxX1u(HXA~3GfNOxQE}yLUBU29 zjT!1#+@SBSOSu6g^fQDq8%q$c8cJ8Ct~AGs)|chdiXB?%3NMRuY^cjX2@hGsPNe9^ zttB%QhbU*O=ip&*k5r~>rc=*<=@S0nm=>;nZ;p<9DHm}R`b7nJDF$vyhx6GVSx^TZ zTxITsEi8KQmPR^wex?^5uk6B?&m|{t$|>)orBwHOZ4XsUc)f=id>Ia6zb5&BF7{A5 z#auw%v!@Q`zwpE121=gHk6p7Bi!zq5CW8^Mcd!nQT1)FK@!Q2N(8!HCn0(C_^RKj_ zio(VbvLR1fK;SZ|M~di+BE>RNdW@7c1nC3p?@XPz|3^8*3gb9E)Yb^ZV}3wmoJu`W zYJTZB`=vD!MDFps$@g2On)Ez1o^DOly5_5RtUI8_jTXM;lBV zmB&9kHbtd(^!7L{;py!|sIQ{`(eqx3WeqjyL~%2)bXiz~bT> z8e>ZFB4%w*?w8j?z%IiH)k59y>)uozMZ1c5ecf?FFY?O}P+Zzm*9IyIhqr@+1*NeIDHkkKd(VXG%EdG30AV*}GG$L-^@q&bU_73)6`^s-iOg zViVJ-ZUeCTIum_l`%nkDvL|_FK1<}yxI1>)=86mTlc}QGe48w&e*Mq= z4=mj~iuc^0kEXXhFfwR3-%(HbqjC?-c|M9No@RAdBu}!29WC0x`gk1-_~C@7ugu|M z{-o5YaCpBMcwSV`az;L5?}GeLFWdnickRkcsYm~mR_a-?-Kq2Ai$DI@qho4M8sqWD zQ>>rrId*tb4_F#wj~Y5wcyQekekIrrTaXKJB3sHUkht4FEpWjwB?8$lCspx99tnG^ zT|iXWi`-EW<)+GA= z1d|bGD6Kf|qrpt`&aobChr%WGbKHqklB=7a;v#+_j!mo2hKbB&;v?oUqL&1d5oaZ> z$UZTrbX(aPX1iq^yxU&RSNAZ*Dd$dc5%CbmR#9o*RfA=CUtyP<21zg(aaPib3%wZB zSGhyP#%HCbkD~DDF>6fF%axDum7#8dH5$0DlIIu8FudLhR~O~e_v%K>RmFFoH1Pkp zk==;C#Fvb7#Qb3v(X%>Vq|P`o-K;dCZ4zs^Q;h?Dx;21$UiWn^nY+q#cwhOuWbo8) z{FGJzJ~Mv~Dc`^IIpkaGy!0|`%Kyf@Q$9}als$};_bHcIWWWn1TNej&A39=oD?6+$ z&*olkbRz0)hbCbQ_`VYk_-m0Z<}F`H-;xfp-|TQo5*St&Fk?^ZBE@;&1`ETUx6cg6A? zT7S1U_r|O(`{>S7C#Ng=H&XuK7;m^$p@svEgYn0j5Wcyi8aAB`#@-Hre8pH*Joz99 zgRTYB81m|??8g@mXsmGnjcgCpndXRACL_4UHFr!Xa>T{IMo3(zXob_0v6~-;KuEwz zCc06~A5MykWuzGTo6Z%5j<{x@D-N8j%=xLA)0bVF>IYdX0-*W5P;72wfwiBn$;D^l zW|L5i@+B=Dqj)JLqb+V`qp;&+292?p_ zlm|TyMZ0u!+<4@!Tw38V`lu|V-Uj;UbpSDgL+t8{x!B~`JGeJnX&()yMfM=Ru6R$< zF}nN=fTcGGqfSwijVt!WH~$biI0m`MDO+CegF0uO(R^Jry;mc)ua^x@8UJ;h8M20*cm4VqCewU0?Y-!hfnDR**JCi4aN8|!NzLvbHJKE!(+yy-Chc@2*WRLIvQFh!9FBlzZs%`?j zE)hh1%zgfgrxErVdU!VP_sJQ8kG#%9HqgK9^$ATpbDS7L0T;MY4=r49 z!WBCQUgWwtTIjOa1-BHRr;4Pabhy|&f=$hOr&v{0&NttPz`K45j=#?F`s0!K*x@YK zn@0So#Sxh5dX_2%Q;yf7%skf5@+xpt77#+S(GgWKi>@P~y=cM}Hb)&y?8;=UxSD@BLvQA_XGLLW&wZ znsh7j&Ms>Ri;9I&f3@&wB4Lx|IXpvK8(jOB9(+?1M|u#KbeeL{Q1`i(N-7w##1hY@FX0w7_LxfS?^Oqt=i2765sFzwg{;7PgoH0D zVh&Q&;Pt6Eg#$5J{f-TXo{>8Ei_)u_&yC^fHoBO<+8Y%u+H(DM z*AqmfK-6$cQG>TLc9(ijUd-m$O@Lddj~?eOajR}V7f}NdO&~vj*FR-VUEZ=0+cH2z z2ShwzzMl~?TVj8vEAPBMe3$I!QcGavu^=J^rwonpMy(w#ugK*SVvJD#z8$(hQSxN6 z?$0bWuB>C$hX;Vzy%$jf5lx_^Sf^*Fhc*3RPJ?@cbBPI^`>ilyLO##yL&#mU74{mL z&!rUyR*qzQifS2Z_XQCh5K#k7a*}Xu?~A>Q= z2^EzUcf%kz&KdR$Uc$ty#NB|j;iRHbl z7gQa*$a-h2V&YZec+!dqs%eVB&XG)I-2`HQ>fyfD7TD1{pMO5v9Oqpy$3M50annb7 zc<#0tzCNVn$#h@j0uL{7SghKkR8;YcC)OF>49(_QqRsNXwE8sMnhYcB+A>4gRayL} zP<#_*irMGB$TM`p&^px=NB4RwA4~nVp99PgtG-ah^6PCNtKb-W7or2&2LNYpHo;#l z@5&2QqS2zx7}e75%0)*(%0G91!@8Elf`v~FJD}r==jzDs!8eJ2Iq8bp#LiVUP2}Q^ zTt&sf!wU+VQMSzMBTVGui#&Zt^3l{M4^1x&r#m-(ZyB+>F_&$(nFyj+spw+=JGF^d zkT$1Td*$k5c{?1`e|f^}mhKWQKxB;{J)J2Zr8h`)0V*nI54u6*93RkC-OC1E^+p#9 zH}Y%qr@U=%oVv>m=MM7boz1<`O5Ys=KlsoXnmUh}R(m%^&i%e+B{Ti-PND(g+5MpM z#}{o>^%0NngYM&L|7d1_^Y8Yh^Z7RuPsN|$E$nT?D2W%V=&B*QZ4idMJ6zH1wFS$* zohi{9h#CWFh2ckwvaH+f;8ce=HYn~XSNE{T;t>~k#LGIqd7&K!m{s$HgHO2g5<3iw zuc7<+@+Da@?BIP_u=->Oi+IJSCy`Y->^4T__owy6u+;v3{ z-5z{`w<{(Ro^;Q;J3rfvdiQ7CF!O+tx70hcgyp?p5bDzsPMNu4b+{WE%}e3pH%3}< z$<&B36i}KI)hlHL%*uSP1i#eiOxSpS0pc*9&Y(jtrvTP(JxEcg&mN zgrkFoag8hwwDEC5tEWSF7s_DLNGD|N2+Cae41*Hf+{N5c8G(7`4FpSFLfmT^<)ZrsQJ2rHFl9^oqF^ zC4txz6wl<+{$S3WWVUQUFx)BffuA9S?M!e%+w-${ZlDD&4sgXZPB}lcQftP$;)Cf* zuE7rP3v5TL?ohhvG@DMoB4#Nr_~=T1ZfVd8A5kx4NL>cCDV@=6i3=8&D)0QDZZy01 zAQe7s|HgXtXob4Tu6XoA8n+K}Mn0MLjHEGfC6$fQTNj+0+J`D!5}HnR@a_&99d*lc z_E&J7@$FFWbu|yPsN@Bf#PYs)fd?!<$4^5$^k`E}75wXa7CE^iydP67VfKq2IU>tn zMWtil3wF`A3uwFUVy%a`;ZjP}>GCFli;3W(Mu0lJv(6|y?zV^N<9@O1fx4Ix=!;DW zuXtsa4!(cygI~|Qo$O{NNC2^lbJ?S#(0z4&5v zZ~XR*9EhH!a&iBtqVkX92*s(zA>fkfS$0BC8*P)_aD__^-#SzqI|RFr z@YT!}#PgZRvRTu@8RwD$RB>QBRoFf21p1@%*p~BZAkJiKWFR)t3@`Ke|IDf}(-)fb3d0h{;g;$q?Aek34@pZGu`rs*gvUMu-{m&Sk zxAcS)U7xV8sS6c$I|FdjHCy~JZ@oM*Ism(^u*3Bo*30WQ1fVsoyNV>Gy5@DCWz0FM zEjZd4LB&%CeE!QB>s_Yv-WB$^KdcoFbjXq@Z7AI_sk~%$$0pW;NmJRy9<9qfKbH#$h!Ti!nQa&Y;*6Zou|9BP0z0?DlOA-`w<9+o z75Y~8OlikGHn`(ea;%s-qdmT)t2lJJ7q`&10O{VuSD(!4vB|3U@x`22Z6;G+sPWA8b^3oy$Z%F$c2{%d6kK-KBP%npH$u-7-)ZYx= zyMWIlb$>MV5dw1-(5!A>T@|(c#%i{%{djmz%H;`9&GEkX3a$xsPV=`!)_FO9uVsqH zzLt0}Ly5_JUDXTn149*0UpKJIe=GRyi4pkp?p413{yENeQo7uo>wMRhbNthMLW&Ho zQ$3M#bpZk<5pp{u! z!Pj7zIOZbr^LocGA0!{TYqz<5Tq8fd&k>!>ZgLYsSiXFur*-OWs`z`=qO4^%d&pU> z3Sxz?$vfUiSLH0c%iU&u;LUBEaPNY zPN;W)l8+84bw!pxf3s7!yTj8wWa4Tdt}EiMhI;fTJ<5K3GAsM+(Wv-Zv77gfP{pqO zoAKh)d-xHqf}@t{@mCJJ`IHJ3yj0MV#^~~C5u2!IlNa1DE@J5s`75fP|k?bY#Q zCkrh7UsuN1Kpm`_+QW)DN7&3W9=MUTOWswT`S#(S_$kH(_by51;(JJX=O5Z|dwhF{ zII@F@S51!f#0^z0n6)wCKNSH}|FVDkcL$Bl($7Pz5I-AoJo$E)J=hupS6(%+VbeVD zw4DpideM#h=6Is|Im&<-+m(y6CDdSf3OiV91t)K{fjh)<8k*#WTittdkwqY74h)>F z!;A;tW&!^W05OTZY4ulb-oqA07cAhv)W7hNgKW{eQu!PFc2EoQZ&kA!FQY-+t7+!D zVZk{YJf$|9fBr;%jUBDAK~u@53hUH|y@{mMtPKdi@6m63lpB87)02xcl+NnkRG+fF z0p4J8W;N{@e)DX~89YG=6=MEiNRL1KWtA(gH&ONtA__LMZGS_cyR###?rBe_D>qdC zCym#c({FAm&Bi~CXQtTWGt!eDC{wbK9-7$0gKj=hce$DkOtC{)>W7XQzP#HvJAC8s zhtq*-l6N z`@tOzw{?+d@aQBws~N<$wgU4AGgvdgn^*&sGPW#(i+lJ9{k?GQc}INGuP@z4Vf<>v zUB;*B!Jy?}g3SU6y_r0d_o9EBeWv~O&*}VTj4=k#N&ovE z<-VQGeaoyLcZE|n%b3U`5qCAx_3Gaj?G(A;{UG%2Ehau+M{H?^t>=4Ut4n>jD&^o! zY~h9N8_nk zl}Nh!Ec_e}4`#T7*5;0^`j;=Nnvge5Z7dg^d!%kX^W^7Q^ROha*m#eLd-c}4?a{2f z6(;qZ!V5p!Vdth+covmuv|XP%fu+$`#jq@^vQ?%G|Gd`4O!r9nTYDLP>Z^m9eVN?o zOBD8}|Bv!FDbwYsu4c51SJPR@Y!M*0|j|1B^58p|7rU}sw2$lu?IM_j!)L2~EfJEEd;PTK|^%)6w}?&Jp#T4>{$L+*GpxRJN> z)xzZ0Zut9dBM&B>XHk_Kxtcf77;b~gST*Sr=V%|6cvE>UH^T0r9;lZ$gpYV^h&@Rs z-ZXhARmdnSb?gBv*kJOS#f|dAHNJEbn(HrdWm84q@i1gW zvcl!97S1PqaPkS;=#%MMIQccXm=7Hvy>WpyUZs9f;8CTo+LL}SWkxMJ!SYIDh}x)u zg3j_w8{>%&-K8lg)GJEaS=y&ak6k)3?f!_%{?|*neLb|&dx*G)M zZ02kgMJ4P`EL03kY_U7Bu(4aQkQwa8?f?@50}B;Ve|x^qv)1R__kXVC-E;0R_nx!k z6>zNZ9B&bAjejDgTp5u=Ls*<9`Rrd_Hh9{0Vn?l=vG9@~8h7c;pFMC!{g(9a_T9NY z=@g}{^}~B}JJR>4+HVZ|vlC!}_EmP5yf{|vlB2$Hdp;>R2rJ&p@qtGxo*x#7L;DeH zL`O44z6s5l;*(41w^zKhi!2-`jM2fjZ;O)7+zrFS+v=gk!3#-C?82~djt)+)(s=#W z?v=st@pqZwG9|2e=ZTfU^qi7PtB3RkpuP_itA<_Us=1$aIBu*Qp0wNc3ttlyjyJVO()Y-h z-BG;HH3EI@Ht@2gIgWP=$A?{%+^VNJe$$JvewJOyT@9cELswtXj_>Q$(6!UI)f?iHT5NBIrv@{~C zMO8`Fkqj{3U&7KJoE$J38dh8Cg0+zmXQ z!%WOaL&Nhk6e0p*(l#T^$PYyeou?8s1a&_KWvef3E@U&mXO)g9J;Du2;_&UvA|50= z##>H^!xqLx{N$a(eEq6e?EUK?t+9WmPw4@SgRB0dS;1Is)Vkn@jmWLJ@Sqm%p?s&; zhzj1MKno4&t+HOGsaPr>UsXI<>HxQbn!zy7M9dyxi;qq|mN*=V&PU|E{OL8De)|cV zGBOz=jJ#3t%mru1Po=x^!m?yn{P}k(-@QbRdDQDWm#M*JB!54|wtu5O!%sJ8bj%Gq z%^hQ}_7#Dksq|ANZ31)dVgRt{9iDLImocu|reSRM;)Qd(B zfL1}rCCGjet0rRDNISv70diN{z^Q)5lI+!_doVUGbH^unUHJqHd zf?;G<9s3$&1UvQxV?h~B@E3OHV#K_YL3n(iJBHV4^4)#IY#^eWA2e2dWg^$ANt0k4 zP(g}GcU$x0x@6 zG?Ru9Qf%3K*aKE?GL<+l?t2@6nQ`vuM0mIxaRK-|!2^$&X_$Jr&j_5qd4MgQx#CsR zUIgHc_w-xe$@))3dJ{v?-e?8xuPFz56M%1X+;GP8AzX|eq6k2bQ*JoKei*H>)WQ%3 zlv}~Da%agJqBo>8LRoAGEFlD*kEmnf{fc+BIxql#Kl8woMg3?E_X*~(acKyg@%_le ztGe6@z&rD4&Y9hpOC#cMnn9yq5#X0Yj9lTf#0Ycy04$o|i5?9!9j^^1JYnFia4;sH zQSmDAw~rFvVnu+2etytTNLx9g;hZI*hV!?zQ>(I0I*;j72K~WQwbSAQUv-TEW*^(C>Ky3u4SUO zgs8;UsVE9pv~$7dLs!x-_^+srO`qTcyKc~%D@@`f0` z*Y|7`wmsmC&O6rA8eRdG>Pc6cgIzdvYy}-S@lK=>BlIHG>&?@_sj;bK4e_dt59oW? zIOBD_ZM4Rh54EZdTT;QFl%Pabw0MUD-$voN9KxaR-b)bGx=?*@W%|@FymPlete)$q^o{w<%SH#G zPJ4G+D;b}>-m;wg0vU2{yyjLVNPzNkMuEw{o#buhyAM*OC}4NfEX%fH_n za?w$X?&?Q5&9qxUsmFCDc7FTKlH=1sgbdsp&5MrHNk@KS`tKv?d$NZ_R^t>W`*^}@Yy@JxB-T;Vsm$mr zAK0ZY3s{4?wva#T6o1v&9@DIk(In=7>=7ydBg=cOdSZSuJR5EVV(lbOVx)Cc$7@SU z{+a~CfaQrGRzjlolC&x^JgcSd#G635+*zVxE-FGvRiI=i_LrgLzNF!i<;wze=)PU{kZ_E+fNN)zRemEpK7T?@zcaib^Ec#l0C zT4e@fYAr$ZzixlV2W5I5Xcje!OTDlg7yedRbZre&a*QNyunXlzBwW(8In)rjgN8x@5)$uKROt{G{47Cb5EE(p@xkQaRSlD+v7zzI{tRVrT1I$Kk?xxo9>8ph8iV=bzAQ!-g$<@ z%x5tmcH+efsV{ZtwIcoT%wtt+#Wt%}iP{3a4@P4fI|m$p?Y+|Sel*^+ zcfbWRG-$&}|G3hARVj*vUCFCKP*v$)T*fb?*kJEoC-~>{W!%in7Q466WJ`^!)XchX zG(7L%0Pi+=Gg;Ek`8 zW4NVG9Ur&b8}~07!7mlmavKkC%*h!;Yh3I4oYf@+!s*}kl1f;te#LnLVJ65S_Um6q z$U0od=Kc=EL94tm!Y`3)Hw?n3&OSJ?K^$-2f+l_2>B;OHPis6_Vhd_xCm0cKK#0cw zT_xgK{wM?SWm{i7;;1>*wl9%G38C&QTxKx!jX+$I;fe#f+fpF-B z35a={7%iY`!7~g*A+z7!`Rzac;>SU`7h7o;*Lt{--)FxyY_<jbQS&5bR_$aqw<2K784nN{%i{icD=Zo#HaMWR?>TzU zb2dh)tVj2R{@Xq<@hWj2ltyG-a0OQ?(^==QJ z_<9L0L(ItUd3$2BkAe92s^)1g9H|E-?^=Ls$b7c+y(?ZR55-TT{rS5=Zn&~u80yx^ z`LhC7!dQl3&OtAVsF6>w&5biQzm5AnRP0~M8apV^@u>q2tSDCA`I3l?dKu2`4=6?NJ3_I}tz+py7unq1 zjlt)G7rve1h{N?~N}Lz-s8;*&%@OB5)l9GqtIJe5M}D#`$z4Ij*@<^0-Yr$Btbny_ z-vj;{6fiY#;C5a-%GM!kH;T=g;njP5DKaKl}roMvd|`eV;LYci8Lp zMl4p|r}UlrE3Z24h@mxydEaecd7jz{jpL8-Nxnb$DDq<&c}k;eP&MeSYVDGQIJRFAUYI?(XoW^SDurj$3V@*{ZIG|bzbsYwsn06iObmFdG#^Z+5>IOr*qM9jFj=p zcPO+{l3^lugS;|A<<;5awzMlsQCt73b^?we9ms;?SLm%R2)xT4w{n7m2EicWR>T}$ zbQqwi<>@7={FT+ zLLCddpvzMec#^IU41)0`W%`qYV|c@9A$a>fDM|W8N^s~hnVXg#blVsS?MMG$;TV9bYZ^kxvXv6dwusaI)h-x`&w&Kj8?>TTGG5Wk*0s?Hk#AGW=p23)+`a+9fKjI4e@FF%W+u#bl$3k zJ=VHbMzA@JhZ+4R7*#(-3;s~2~(E1VxzUwTR*ufS%+aZpjIDLr^KL6!G5te2* znL6JY68(cENGI_r5uYAEC)uJg(XT ze?6gIcmks}*8d5Bm^tNa(iU=3&I`iq*{-OcI*89*8i@OSNC#r?V4nDxdY87YXg6sn zMfh&Hr%p_uX&<>;2QGcd$NlldT`_W{vfw2jOCDZlg2I)p7FF_L>2fTgjwktG+3sTI zwsNQ=?F5mTF1mPnrFr7d#vWL1HHFq_K1i)TFsubzsnZX}E&RZ9NN1vOud8z0$`Aa3 zO%SGsIVy|S5Td3e5LZ-L(;D+{Tw+rVGoYaMF1tBUj^DloVz+nUyg#{yHm0lU)r9f8 zHJ(^bv$gfpG?~7&Z8d9O(h@qq-o!+Q<~OCj=z5yapU;B+N4`szv%X4BiKD_=B#3{nO@@Z}djI@K35e`N9av$edo zg&ziM_2Z(S0!>D5SF;t$9uT#8mco{Bm1|}MW9)Ya-d^p6Bewy?=kWL@vkAwp(C!|0q0e6eiJ5nDoXR{pUwv@1+`s^vWLwEFrQNj9K@L z_1@}^d*Xtyx_$%hJkuRl7E@JZAIeEM7CbUFhAFy%u!Sa-7dEp)i10Lj!+oI6S*wigaj=tbOO6OQ%+(Mx91VAAg%VS|l7KUGS7 zWjcif)w+kM&;O?Wa3dMyAqTeG9+B zQd_r&&z%ml*pc*?*s`TRZm|L``bj@L<%27UZMDWEfxgGz(>K|RgmmaPK&s;E72?cSL}PAy=UNE;kE|E5H-SGqD8tz{LTgs@r5qrigBC?}VOGbDlfw4F8_r7^??q@K-gXCaa$gpTHct4TgbjKJxgb{@8r9w^BT*+m3k83%dDZ z_oklo3(gH%tM+-@hWX7L1co+Myg6aHw$1lc-dy>K54zxsbGw8pR~@b9+Kc_LNnR*L z`2Kpv-acyt6WYIJ`}9adWQINRVHcFCM;KMu_PBW1Ic3@>1>Sb2XIlFtMHuO~QxE^M zoh1w)6%WA^MN|uwx~tTb-B3S_YRdK-WR}*fJj}mNbw~Nr?YzbLqrBsAPfRV|&UI6d z@_Dn}v7Y00`sNE-Y+$a(Qej@kKlUZa0~`AWqtnqa2`WrH6J@dnC*u_FV^iSzd}k0* zg*}fMqbHraLpsIqFwz#9b|DhgrkY;3(Xz{mD;EJuH~Yf4_wlGbm{fE6lqyGg#G}tR zN3?!bs;u*iN0T!Scy)-TpLj*jSK<3K3ufkDVsYJ^Fa_vMjh)Oz&jzVa!-1qa7TLcg z^z6KtO=?4PgMbixy~mG7uJXidSAtRD=_RRHsh1IF#1@}12G!4&AR-c~Grsf4MsC<( z;B?-k^eewlGmvvDHTiD$TyLiRdNdeY1+$H7EYRF25XXBFX7{!^{_zaN2Y*}f=aClZ zNbk#-)0!De{IY+luBkKu*hk(2we@iR$O!!1C4mpVt%Hl^L|~^K3Hyb6>Epz;x?UJvE+Pv{N~VDIfk4HwdAfiI`Glj2yp+! zMD(!UeLwPb^1|rk&fJTX7W$Ef(3ZU&C}Qi4qbjGia#(a4C5}3q&l;kxP9#q8RFH4V z|GcFMtsd_PW@8(}SO?BTefxJ4g3;@Z99zqixj1zo<(9$M*w&9d;BlYfOyop~xrme> zmDauyTw?#&KkdsBJIZ;*3t5 z-3>^1$W!mx;_TuAinx0Hw%U5vZN}tjAl3k4ZD91EivPJDgh_SA^qVi~^N~%eY^JVL zcP^b|6^Z?45?Anji=;!7!*RtgW1LbHl9V?h9PhcAVoytF>P%!=`m!XWR?z%}A^iMg zfk*H7;h=wmxY+lR;`ArS&SK4PG=fddt>7lHQk=sAuxDW^_sI9a)V7p^CZ=)G1)e6n zvre+&)$L(bl-MKxKi2RsI+_SJTUAXMd3$TVV?_V(b0>=Z^8r z4MToS=l-ib@%w34JoS4Tf9L3ldq`90QKP985gL0^J-Ej}h&i}W)g|!^U-N++1mhp@ zbgk38VnH&N$KU1s>YwH{`;$?&@Bu{}UUz||{V<2n4Glp2TyZ@S9WRra{win7TJ(a} zm+hG7N+Bbrv|h45`rd8GMb$CFK=!R=Ug{KhL{csU+h0{Hw z_=+%JTsAWRWm+2S$8?%)Pt^&6`(;lh9Crue0=yeV`m(FTdHJ+JG`-=AReF&W!Hyci zzuzsPYn3At=V#&*F3$95UR!Gh;p?c;9uQgoGTDXH=ghXU zEljA`z(mZA=-e!RC(_@&Y7T4tQlaKzG}GUa`z_5F;=|IxYY zyyLzi_z^k2>4d@tnFCHD^~g7yCUa5IV^^#_79ICO_cRStui59meE38!#*c_-!W%oe5U~w(s+mXwR0m|fCRuwl|`|K1h z@&Y#f^1>73+jq9#G>Z5%*AfeZGEWhn!qKdWH zzY_ae)HN9H3MYJ%K|kh+qC-z#9PA#1%)*pcQeWKT4C#PuGXD>&@l$C4G&8q{g~^rd zvTFp+PM~w*MzmxaE>6j*R(x{h5kQXwJ87HW36VGMb= zz3-IHWx1}nr!W97?oQ{gKDy$BKmM2`YfWnmGO{ZfZXW?VpT$bBI3oTgkKVsFq5c?f zO@qZLyx57g&2IZ1!=Rms2fJ_;O=v(-G2RH+PE@SCXYt1zLZn9oUKe-9fcb|x!}Mv zizGhG#Q(TupguJ>339!?A+WJF-dg92_fHSu$C)+;XZYdNDTBD^+)b(xwfEUi^9(q? z_ySA$<$*tGzjFQ_F6q$TqPg?rp265*OCWuZ>NRexYvL#7b*U?Oge$No=~J6(KUFSi zs=)Hrws>dDBc;d%qFGV%K;XZ9A#c?ICUzY~jWwyR+RRp=tU&phU7OSe2E<$8@OvSc z$r|!Y8CGa{H57MQa(-)`B`$p(ig6<~6@7;Rrm*LDGEB{)j<7J{OCb$~F=s;1=BFzu zrn%#x#-X^#K-1HY-b9LWOSiHo&y68jCm6ev;`6yhL-;R6Fm^ml8iYPMeDnQa9Nygt zO(L=>VnzWgy?nzS4%e(;;yEFnAM=jrV7Kl8XcSgS5sOYfSNHHvgvlf8LC>vkc`RX% zTQ@ONMt^z3A07+D`zhMWr1(mnN2>YG`|HtuHT(HS^>wXmm|v?ywK2cGToKa z4foPDQx~gC;~K!eeRp_}IVs$3k5*>Y-Qxqd*Yc@BN@cm{JzgI7hi7&}x+|SvZ}oEL zAei(m4jSZt=Do&+VAKN>WxD@2j)ft3)ZJX!e8?9b+L`849W{J|lJOVWkrpZNXF@f* zrSQZT#FmZuK8lN;&LRey^fC;4ssnD&G;vP~B!8`k!ESQ=-FGrydP@f{Cd+aCj>&w& zje2-xpch8Hn?TCk! z5rH^zmmj+3XeLG+CzT}j>XHsi3amk742XP#>ot-1@vt-6AJs4vrY^0oe)6?5bn5eqiC1kp z7Kz0uDk{&nvf!XcbOuS0`Txmp5 z`5rbp#1@=?CrIkS;(Bs?`N|FBF6aHH<{a3qwc7qzD`5%V zyVvsLq@!STK(oW0+!+tI|G~6oR@`Cp1~tlp-8Gwv{X>^M!O&N?fhJ z>i*#7zV3LcZHdUzA_PeDxyuL2-7BiZYuu%tOq7% zJAmS#1zsVo<>~f~_{{N^I8_#k&2Km4Pr6&+8Lco}{ZVrobkf<$X0_-C$up<0wHBUu zN9Kdm*Y@RN{u%zl12=c~!6OO{o?%pWJ(yUL4EgO3Gf@{s)MOE72!!OAM?NNL?Vy+a zKql6i)7$uCq&qpxr$k8VXi`;a5({-lZ?Xnm%|S#^iPK&wn(EkyP}udZ0c@YvL80pq zf~KS7SexC5i|X%E#rLH7dsSYI2f_u<6D<B)=1vjG3D&Bo6kLeG*S^9?G87w1QRS@hn~?KKas!{asz*`ivx) zaH${bl@o>b^BghP|D;mHS&D1RWG&9DW*5FE!2(ws5U&!~lSYJAC4*I^8>mf&AGg^X zg`FEZVt~hGrHHK**Cs9Ra!;^Nj)AYvE0}ndxZZyvvf4xJk^1oSPf}v;n<(^t;eZpo zZYxD>rMNbAylPv*sUlN&)UiwOc_C)=8ObBb6o_ENpr>XBQ^8ElZ2=_x;+t&tlLn$V4pt@R#7L% zs9G5|ggiQalB&w(?@F`D0odTLKYklpO?zUyUrkc-m>t{=}aYc1oQT3L1^b2#DiA`G= z!hSOm-6Z0nq)4Y0XScEm-rb;ZWib;`o?>+`t>|;=FK4g*btF#F14)FK!;8^0oA{Td z+LG~_S-$NBqPDiE(k<25o-^PO8};Na)A`s2M0Ir0?I<;bo&yW=Y4|@^_6u#Q*uUSl zFzdHJ$Qpj(8xOhSx^6RhW%3t(dXgJjew)s%Dym5_#uW`;Xpn%gXs)_jpb`cxvj;i# z!dlPv!T25H_@^1>c$9i3sXNBt zll9EL#CFS`u>oUKVWE!)_88`f(=(-xD&qH}De|{h>}x0j%l#;sF1gx!V7Jm>ob46N zFZLltC}N^z1&7dGp|d$$KHC(6N+&Q;nOW3?EPNA)3v>K1Jx_y3*$|wlt~H5*KbJzG zu%{NTn&69l+7IDk-6pNoZWKk89{T7B^@G|T96_vWL`?GAxk31{u_G#njiQK=!y2>3Rd!HYmkjZF zwpceX3|A&G{%Ec(?rIc{>kAY3;yyOGaZotMr6p3tmyZfKp0tPEe{Lng2#Y6~SYOGg zkcxpq^L^~@AZN*4iC2ktNIDa5Y+&5|M(})SE(?$H$2aTz(Y|enq+2Uy%T#lwle$<- zB?QG@WMb!6Je|c{n;ecDNOO5eKd>)zWMXb0c88=+G_j@SEd30*1E0Fg)R}VhC$2|# zWeYA&WyEO>sdzXRGn=s9VErzSi4}zSWJs%t-lM0okbY^PvsDj76>AauA>sq*X)khP zUSWl7ZQx)K9W@@LDbO&8x)ZK1l_GwII`mQ7*f3(`R+;~n=m@uoalGFu7YvvC=<@-zSa6FSG&i%==gI@jroQAif)~U~R8mpc`5#m+;r+)A| zL6!e^l{6xG<=aH&9RpP*k?>>44_-*K?F**4d;nM<*GlAIN%a|8TUkKr1_k^$bd-tu9-{7thha%m6%P^zz@p+; zJocv#?i+8T%*?VAyCl!d=<3ireRF>wMe{-vdV-Lu_a zGW}bmBkZ)4iFh&b$(KIuTc1)+GMvGRMZcM--6eA3#I*@8no64Fu2E1BdtajbB{Jv4 zPon-+7d88FF$DV7^N=w0#P18%V5eMWsNI; zv)+*iZf^IOsLd~GlZl7|!qz5TWd&zS*pd-#VMOLvUb)2?$26SH>wbOa)z6*rgK9QE zlJkWxBPPMIsT#(}WGx5Kc5#4!J@r9Uwh7(6u92>>sVkiVWd<;+>rFO{*g#5Bn(=Skhl|nD2=~-PXhjN@J=E9P zq^w|Evd$GZ9PcZM5I>1doQ`o&G|>>wWtFq6n?d;2+>JD%`g1W_8gU^%4qTK!S=Rx7 zm{@I#5n|;{Or%qB5IO$`yR!0+9BBQ2@`c6#D0J{k0u_=GCNo~ z6`-QyN+#waVpb!~OZv^ShUc-3VRgI7lJ1}wAc_yCN_r?^S=JSmoB_*Ze(VDJvk5*Khzw(8ys)v$OZF8nC8uanN zt0$!AE=}BDlUk2D5_YfH#6%{7$QTfFZNdTcd7>`ZLoR%i{Xx{i5pjf4?4bVDdrYVJ zK1)t*A(`rnlYG&Uk*4}<-Z6tg;qYRFDM)r4!8uF1`#fE-l=Z26&C1H!LE#uDEX#7j zt6vxJzot&ut=1XK$rn4Lr6XSSa>3}Anm+Z6$NF&WFU@h9pOfemiR+2`3TcvCXR-xx zox$kdJ0|vY#a^%fL|c@l_~B!P=5!ty@rOBVZw1kcS(1r~h&&UgC*%gzxFa*(Y6K%E zroroSYkWk^sfrjSxBO^LI;mkuEhoM;z#4~c3d8!K(KbA>SBqIr=?)89ePESaZ1B*Q z2y9kAnxB7SjoXez;QrRpynil`)c&nx*ljT%{KV)0IY>=1vVQ54SkN#zaztw)|^K}?M^3MuyEBtV1oaS#8 zDQDtzLCpHa zc>=vrQ8v);VgRJg{J_Nir^vh)XBKp--Eaq!zW~#HS~C$}AS&xlv+}_ykAkqq#*XeP z!)vNy5$O~akgwjS-B##AsyyA43%SS>7j@RDDr(YF9k5diw0g9Kf{4!xDFuQeVGYB;Rw%0{gs)#JLt4Uh3JgZFkFCgOyywy%PdEz!I_>MKOmaEkIO(5gmw~U!3Ak z+Bo3ap+_};-M@OJ`g^sYbbSapll~9)CMt1Ru7AfH#|7i04Km6ZR_nG`cl?|Hr((U~ z?idq1K?u;TKC^g5zA@&~6mxymOg?L^F?Jj8j*I?}`>MRxjkzqi!}{Ls0iNWK864(} za}5`AabJ<{CA+&@m&T@~LZ=Zw6^j<%;YZxu@V%K7nJFSRX&$xpwMsAB6nd*#f{~jE zHs9uhH%^Y?FM>_*I%#0rwI9J>w=%}iTwgrtID)?U)yO+6po>0?X{&&hrEb`EwHw+T zpTT!scf%>K-0|eKX}pZ|OPkzt!*5}lzE5+5IC%Ie7$W#V)}>}-o2Z$j3bz02^> zeRh9o3wU4Wfx|aB;Xgi`i@USf-J!i?xG8imO@w>yXV{uP{y6%&FHZSKdz7HiBq}!% zLt&7-v}ScY{Bar2-c`x40r^BN9W7P86xA>Z9i8}$b?TZ7>EB;U`V1nENzAWhvb;x4 zz+s{dv}n>s-C=wLj{4?|`C~UKMQ@g?f5I{Jlncg8(D<<|TjU5&hsfbvuWw9L6&I&+ zA_JWC8HS%?mLol(S!xi7+%Bsa3Z9QnyU_C}u$WBHuBy7(^A8?6p% z=Cx~^4`#o6wScV!#<14Y0%ORtbRfA}z3*<0b|wD!y<`AibJHCEn)u`1Z<=}3@>(0% z)vg)D7kaUejY$KWR7VcU+_?Vh5Okoa)v0MNyv8a7@sKZu&vT@R;Ja!T`pXe|7)F7J zz!X_+R~vX>*)q}~JTQeK%6!JKi#;=-e3UMTNOG~0D)#-z_02M0bQEgU4 zh-o{R;uCWhoHJX4Rr_ub4$4C=kZgaFeW(h<>HFOAuwDXR&?X!o9COFNr((It45bXf zXob4$`2d*JbP|)_GelWxC_X#zf=~WvfKg_ln9<<{cMms2)h*KL-1Umq@L#f=HSMSi zu{F&>+yTTa!>*?zX)3s4{e2p>o}XGY)IBfS>XhMvnhn^|CGV*~{$%;9#) z$gWj!#xC+KK#yiH}*yq z%jIHUL)y!DHn>22D?1iyX1K$e)EYj0ogZReFFrz9!}k(bY9V&#U;2LIOM3fZ#eNNr z?75aL>}k;qlK*)zkxeQ-yW%rVebK(TYUid57WZ)jqq17Qm)-;Gmzi8-B}th`m+luR zvgZ6`U%z%Gop?hW;vJ4;dChAGH~-!-oc2g1e|Fdqk2*zQmh) z-Hb()rWBc3adrt?yH*FTyQhNqEX{CpA~!Y{Y}RESmp)fL`^eNzwG3uv`$FXkTijnG z$1``QatE~y9k-{cY$M1guKSzF5MeMEww?9<+zRb z63_p(=40e?oK)_M{z>g9BB5-hBFAYkJh*XyZS1IrL$m!577pS~g7vW713xT<{@iJy zF1n8KL&cRr6tO$0DXU3u2cxyMBs@qFJ1AlbX^Nce%8IqfUH&9>?u5^E?yrmCpZu`> zuK%uaH+Gi#et8C*o2vyenbJGkUEW4?tEdM|72A-=$+DI&Os0voV0J-Rz*Ct0OEPPAq}n zE_lD*cs`4eR4a*tBLnsJ@1CliPXJzk8{TU17}Fo(M28t>9Cl(LZbix_a@^dGf1&tBF-ae zRB~&y{5aEYF_{ZBnC(n#w!lHV9v`Rgz^L~s*P)yFE*fi zp$VLx*@3+pIvzdl#nNOV}pR6SKR2oiv%m3l# z#na%xm=HoPlSASTIYpduIL406YX^?nWlZ$ZYk$ifvkv>9&Gt-ElXSy0cV8UeS%X&Z zGtwOzj#9#ahFqc=A)f8hHCkSHt+KlB3ClAPCO5Z4o$+$ii=N7-FR{W#YvjnfPvu+M zS)$J|FYM*7IdS}3U1jEX+(F(g07NFdsLU<$8>p8t@RLdz>Inu{5X8@27-EH!dVArH z?^FJ>M$p}AcEP*@=ylI!Tc!ozrDXDveHz8n>jmI>VpsKZ2X%X=Nnk0*tVNt6DA%$#U?i5()C{v|?0st)+Rdm`~;5hKJ;q8?dcN7dLaS)dBO z!XBF3=QIu2mG*b5%1Q_2+vzOV4_UpcXwAcjzyff#>|`c09CmqI$a4wRYVG}x4{aRZVSZp zRZaPjKbB~CH3*kQHKB-J2|=aHRc@tD(=Mw=`xWuOmB0D9j(?RI#YMbuLM_+dsl|0l z_VeM3{_xX2+7vP4+Idx!?HITb)0T<%Yg>Dp8=Ue)?dSE9es;aXeMflW0smg~J#6RQ zXOC~B!)Vh>%sndsAA33DCDm5t2$w`0Rq2FZPH$E|YnFhCl+Rc1T}SWWm*nSc_g)+D z_YDD&MI%0a;%=vzLEdIx(~{wc!Dl8;szq02(Jz@!wGZK}fkS)fdru20IZZ$1_Mk*izP}%nzn~_krTugp_UIjz4R2_zvP1bbsQGTbB;ui=3!~7wCb5Z)s4h zSNrZ@7sp1x$Jw5sbHfi)$uVFasqP!u_~Gm49$2q9`#%vz&0Z?%4ebD(&2_+_qdCr+ z9*JSgk?32cs)N`)an+D zHZct)8qYFW%g80{YnM6fhV=mGa;J(fK0=yjQ|5E%SjG2sAf)u@1w1+A1GfMtQVP*@ zohQ0$vk7l=VbdQcw)dGHzL*_|72nf%`$9boKNE;2{-yA1u6nqgRO}}8CtiqbKKzQl zHkJ_&w!E$OYyJd5u|c5Zt!*0Vho1;d z?saasBy*CPl!CeMPYBjMw6WQ6+-(A-L{;m&#PPS%}p5>2Wq4>zf6Au=l1er@Y z_1iFLE02P1q5f-&X8-90aec<3aSI5f)21(mE2?B|75?g+`4%*KJo~aYjF=y>eIbeu(dc zG~&-$TNtq~6*}&-P~4suiB|QT@p;oCrHCY!MwCY`V4Yw0gm)iHn0S?Vhti1DyBRQX zp9Pq&ou*2?8i|9-oNysILW@XZac#mHWQV}J$Nr!nxmJRX7T1$TM8ssmruDB_zr?93 z5!ovuiMe?cJ|#`SD^(ZhZ{^y*2V~k*vx%|u72;LmU5R%~4lW1k!;I@%@Gl}5M9=d8 zCtnLOP3EGHCQYzzo2Zsvm;kjsiWM;p>f_I%KpeI#g-7?*#|ygysq#+YFAwVD z^@V}x`!kJxbN3%L3ZLlB%%aT@Xny$zf1K`wdA758ziPr1HFQRvHH(W*pVVh?t4H2D zf7sFGG({G6YH*Benl1F=qX=`|NaW&gUd9SDiA5{97UwvSMV>Yhf?Ft`pL$t+A z<5l#{r`9>C!yno~M)wqm`)ZA|hI(UK)nsl`&j#z#d~n&ONnG@zq?$9|54xTvtylRI z_KMumCT%C@-ilx@ayX^x#tQRy%+kjRCU5eQ%6aaafyg|&6#5_nE@nqF1H4lh^_We9Te*6=^^db}uf?i0pcf?sbDFXSP zW+_{vVaj1Uur+hVBEms7>zc>a9FtU zB_?J?Vm2Vn0EQ4g|6#ljRK!L?XfXMoSG!>V@qxwu{tB9w9XRZc-ar43e_q)L{!Fwa z7Q|eMgJf#IFwCd?!7QS=#7&a+#7L&zP2RGfKQ@xoQRB_6vEM8&eC40V#hQwk_v>od z#!jZtA~RURKNqv*(_{Vd?Hm`Jl<|KqV|ve7t4AjAc}J8aLag+}{8}bU+GPRHG9D`W zl%$s)Q0rqNX-aI|d72NmsE@zMv9R{rX}(|q;odzw@S5Lg`s@B7Y{>*CZz#It#;o1K z@JeeBG`WIYJfp;U8+qPmy;r=ym<Hp>Nr!;JthS9l*Pko()gU6XpfgR-&AfS9ngD`_E^yJrc$c?xniF&EIpYW294OvMxXe9Tzz#^RZrCRML-l35aH6@B_S4YXSjP) z28gXFVxVFnHYO?}w%CQziek3{_ehC~-GQQrje-G!`OSUb^{sc#?>`o6_Ut)#&Y9Tz z+0P@P+TFwG++<5!e$Ncod#!=?Q!LQI$Q-u{Yk=2xXKbOVQ;TZ0uqteoU|M>u0oJXw z#e`Fd@NC9c*w1wCR^3d5Q%@UUd^BS*Y*8WymiJ0kq_4N6^+l}Wg2lhv#aN(!(pr$2 zw!;Z$E%3eCI^bjE5{Y~rn~UB*h>>k?8gz{@MOK>PPRq5Tk%-mh4I(NS0pJcl=2FKyn?7$P4IKrQS$WjK-%qGH96c>hWY)C zu_3iY#9+m<9y2Y|M~3uBzfc<6ASdNd955l?71O$&lJl`Fe(z%O-PvIj#;MbYQ(Fkn zw==@S6A#?CWcm6C;B{@8c8zy8I`V@mEr|O<_^2!&trf>Idgz@}gysDqMuU1Yy_ElB zn7+7Q6Q9JIVYey5e#!9(3+71ok^a_(*<b4du9cxO*&N+%2@ud))=E>MxC5j3=y-+&$M(>TzTtDGjBT61D#lv@>3t2lj;o_ zy;|YVVjqmQ@`n3mt#EutA8gs#g^g1w+b5I;-{Q^zw6;3>+?&*rQgvM}o;S>Q05 zj(qnSHeNKvXG_SawR1do(;^QMH+p??h*k4$Yq7PWfCj zk5Ct%0FDg{R@9_P=!J7b=%VUxpnc8_bAs*UNBjPOloqCM;p8M={Np>kWz27R&8F;& zs?vy6+)Lj_v#qgXRD5L4!U5^JtJZJP&J%=%mp{! z94XS1W>K8wH^{~gL3DV?AHqlb`P`IOup{1MC-Lpt%G{k+v$H~{=Rqil4P3zV4mQd{VAi45_?1PbW(6u0Tqcd}Ns@OBrIERR$m0vXI8EIQyJ{Sk zYj5?%53kKoe|e^SWfNmIw`PC09A;0xtyzy2w(d!n&zve!aN#+mlImS>$XI)P^}7%A z5ng_STprtnX4&eCVts0i#kI{sYc$cH3j9~VvH)J6i1yncDm;Bgc;$=6^Gs!ak0YuW zMEpkuW0CcIVi*?5PJMM`^A*M(&(LQp7t9mY$MD+gEQ-TW_qB~oNAaHzP1#_D^Iu!z zjDAV5d9fv~>0yK8|0Mk;J{BeE|y>vyLZmu~`_`Q!m zg^TyWSjhwOZ4lCK(|(icS9a)h(+NBL4hNopm*?eWmEMmJ%B*_!r(dV)(vU40IODl9 z_6QygA1}AY%6HBvTQ*u0FOx`KFF!{5wu_;MQnr%>c7_`g;mC9?M}wb?#T88)@m=^R z*fHD^cb#`c)%PQmZ+q++MMH0&(vof6c)QVgl>`(s$xdalCR+rw8y7*!u#NQ=l3f zvB>uO3_9We`?o}*e#KLm|5=U3ypm826*bhaazdXa@8H30#&W`P^gByF{D(1XO^>lO zc8wJ|R{TtHa!@(sOz4Eq=^5BwQw|5ab;4(|vmj`e!y-L*3_W^^J-OqMRlc_)7~iWe zp|c*TVWXEDdfy3#WBKaX)Y%QMTnUC#HEMY4uN!(aAhW2e?pQQok`{GbHkk65M389X z!R?M%KVdfT%=|3AySS^O++!QLH6xxHTv5ktCwCkf7YKS#Eq6S7M_G`CmBHJ+XD z@HSvR=9P3)NRQi6vlvQwHBu6%j~_nU;KFaoqC6hUfBZbAh%ov~?o^9UWc(>itp8zZ z?MowlHR#(lFNlK^J6SHWW{)=yc%3-D{!1dcHPDx?y46T79{EZ5R=jmA(_^KDR(RmE z^3G`;=Sy!bY9z}~{Up5R9B(bQa5OF_lUGF37So-CuLj~#jMJO#v3rCo7P@&b9|iSU zB++yPoj>;);aiQ+b;P%AU9p{ZClFhlKjb5Ozo-wL$y7b_C+gzL=PZ-o-5>aTi#P&V zex@$bMuna|@9 z^yp=YkZh`jraRmbub!Yge`{e`15+A1T0k1YHBlqS9g}9AU`P(LkMGIzxZA{tvBX-Q zVpx?C#;94k8hGuJz8h@tShF$yo2figmks+!j1LW_)6Z`eX@K%IAAIE#V{Tc{nohp% zM{_S!5l4oMHZFI>gSP^K$076hWcGcuxkR3J4x~GJs#5-}#-HJMoCDMO@i|CHaTogY zlLh7TTzuR|ybrG0p8?$q)l|pQplx-e4^z95F$}#? zODxM){$HL#oSSHIyhgTmmD7L2)kSv$o)L&=3S#%#ag_zvbbOiBTTH&fV8(e0Z z1YO^$;8t^6?7wU&l&)66b(3tc)JnMzCUrhTmTasbQ{snF9v9pz$O_F*o8gdGtAW2E zOC`(O+c!uffb~R9HRL`=#KL25x{@T4eRg6-Q z6P8jcs?W}M#f&MY==eMVvfsPnt$rr>XRZ=i)49n&alzA%w%XuAFL!B${k0h5+L%d@ zHbMpGFy$r(mepWTEVcavDnSjOtGjqu+y|D7La ztIw${SKK&J$%W)_BcI^O3G{bSGT~c&*yn)d+u4nNkrRk5!rfnz2Mo;^x@i=-#<=uO zqANDvb_Cu+%!Rb}?S!JOb??ZEq_OmlZfhJPGs8az)&Q>`)OMgcw)13hxSdMu;LjBn zG@zyjl}mPtl!16PAYMg_W!zaNyfW2|t~7c})}1rQsxBV5P1+f9qbzX!i%xi|&`Xs6 zVj7@B*A{KH>PWknMo|9TR$Z=!n?~5+w8zU}>qk|z=wpKol}hY~(94QGU;dZ0t}v#& z3K#E#k5aMw`5r^YY_3VQ^o=RsiXWla;_WmeDxGUehvv4X>a3EqVxuKCjF=Dn&ak1< z0k3bc#PD8=*r*O{yh>7A>(KmNzV!5cJA@rp=y6~P@aiGWwYE%I(h@T|E5E@^?<|s= zW=Q=G$|%qKz;jaf9Q+kl53$0v+mwtzgU{cWMYn{~>ETSlo~sxcv)lqDbDZ$@qhX@z z5f*hmvbpHoUps343@HCA^1m+6A;!2~CMk%0|0*JE5J$ZDDAx@i3v3^0f)PY{=WOhK zo2+{jO+VdBCIzQ$ahJL)Mz!|^UKg2HXJgFux~2XmZf-)m;WFx@s)sjIYhVHU$#zfE zL&c$&aCxpAwomDZoi@G%1A961VW6iLPenDim~-G4*P5 z6#7i`z=1t(K`+Onpx&3odj8&kc~Qq8?rSHs>2aG`xW9|0DT}|7^Ox_6_+01Kl+cWN!*1B@x(j~Z~Z-g<&mG#c|U(Tn$3r-X*G3Z7< z)m4D)(_l;)`w%jtFN4Fn5ZsY=AM|flfaS*!+^?%-P|kCFM_SbCNM>o z;%*R)315l#f>6qzMR;rRx#a%6;YDigEU5p-P?{Fj2EAHru;50Lh!= z=HYbLy{CldBbmRt=Crx*0w37`KJ!-gS&c=lK+yk>k` zRq8?bX?{7(?^y<$Rs`Zn_j2ar*W}KE&s#^@Yr_U|*XSu6>0ySaq*owoLlqqO$7=Ab zuYkG7Q@DQB443S`#4H92<7w(6RJ1f)BKIOSFy^!~hSNH@d_e=rYG>R(MNRGV!Q*_2? zIBmC1A~elt1gm@-e7(FFy5Dbv7o%*^^-(EwJof_}v=~dXe+lz(VOL+ppdK-F#FU$) z>AET&Tiq4Ut#X7{DXp;XT^D@2)&-tEQN>8ht~hX@E3>dG`l^_2x1UrG>PPe2{)6Is z>~?oZ23uYK!L0$E@Xjg5D-q!NDJfHI$N7TDtg;sK!PjgeD{L| zzisescULUA;|n}T64Mj@P+TPcK9a`1X(BuW=5Epk_kCmxn0*(B*f1GW`l!34sMjD` zIku4KcDBMz$L#Tqdb-= zwZ%<4+)&Xz6w0S+;^;y*{FV|5XZyFssW;uRLuD|t=+V1f(L2W3A7$2{s8?0Nmn@#K z^-%?!Klc|V|FXmO(=Nlx#sA=O8q;LHc$HavbbLXa7kkt0eLK+n+jgke(FW~@EC4=w z&PUbR?e5zig>=zGqA_U-<#j$ny1s`W4DT~)v{c^B_bn_6XI$=^lE>9i<5$6A(daN_9YokO6#hiUfh71d%-Mii({8^pn zk>0c37WG2xux0oRW^p^bk+dosLjV1qPdcO%45~K5HwehwTmQ@T%G;orFUOiuJ)63J!F9s7un$pk_de4 zE$^EJ4)|$@#rQurVcYMrh~EpTd`6jUhK?bs89C#zUlYM1O^V|*ow47fIPj}5#Fn>C z_{lzwJx6};hQb#cn~CF*Xv){i-;HR2#K{)uye9?5J^lexqAc-D(h6p=CU+xQ@fPXl zdmSmSml$I2h$)BdaEIv_;Pn+*WP8n#!kiBgRO3lU%FjVxm4EPqvGIo_{dYcI?sO%( zQ)>`4AsGDOqVdAR5>4>x3b9d(jUa)Yy@4B zWr+z7&9SKyI|-k$MAJ(aI9F{Ih|##0*cs?;SP+fdYC_j~8{s-H2OI%QK*hlbi&+k= zw96u}VHz6hVGj6ok&?f?X+lkre|~!!GGu^=RX(ce56p75!S~mf0bgUpaDDo@#5Z0> zKbsqhc)a);JTb@C&-4pL1{Vyeryl<-jxAGqr-K zW#qK$NAl&#FnVE`1=?v@;MnZd!2b&3Cy%KLqxYN{Gxw~oeuir*K;JwRos;fE`s50* z_6)_i4-Z5q4vEC&yPcqEDW{LeONe4e8??YqD0%e?d}e9jF++C@@Ad}D7q`LsdUtHP z_=f#f*Js=#%@@Yeug8rEzgzM?)Kf0O8JAG>&Q|W6?=o)quX~h8&zYC{^R0%pl*1sO zP`umWA&4#V>rWFO&20ZK{?ml{>^lfmu4+#%$V?d)aSBL-kn`QM! zRTo(^9GUA5q-#H_;lyQ~8Mku}IQ2~pbs~MxmNCp%8mXanh!2kMujDEEkjL^->YGSz zTrV1P(Fw0?Vs%9fC()lp39s)n!9M=W;2W#JSklWBKdLM52GdWilvzFwru+L_i8Swd zoqKT}$2O_9$a9ay)cOox^62)EI+W{52Z%+hqjc}+I3CEfwow|B!iZLOFOy;>7GUf-GO z#>u5LKN(+cN)nE-*NZaC$R6>eP-0~WJgv4CM{VjIRWi{$>-i1**IwDrhn!n2kI zwYJCfQfGY1cCx;XcDR6XDM(i`?x>R8b7B>qbu)d(g$B z+u;*-y0beyLlgzpj%kP0md>b~soc*8_}(Q8qdL+qg+7$$B<9ssTpg{kbF>BOcU#FU z9#q{T5~m2-kamyo_r6mFHu$cq8*0>f179;Nk(AcoCwsRBQje|8gx5;o_i%B~`m%PH$=IQQ3JLQD&6ShVof!wu+vAu9#fwO=pelKu24@f>f}?H-sIp+vEk zZGPbA9}D!|T2?)YeThL z$thnybRfSYUWu^B#lljsi_t^(?@Y`Zy4lmVD^Y}*;I$ce`~<@-rGN09 zC3T`kQaR;Y@%j&93(E;NNZ=Q1s?yt8l;`B{XME0+ox(d@B@OfK=zIq!%D3XNgJKJ< zlw)LcP-psy@fGo{`1_z3ZP-I4NGHO>S^_^`< zwf!BjhY8DE3gdw1e&sm`*?aY<9j$T+p;!9tCOj&g=Q6p+v~gA(vBUG$%Co5Yg-Y^d zuqA!8+D#OPOMPgEC!(w|f7W7AOpY;Hk7`9<_;;o!OeJ)cnmKM`D0K;APvJ59?L*CQ zSd1rzR(LTV3iGyfX|x5M;Lwrss>9ivTv3B*%BH4G5h=PdrrUit$P%x9bkFfSghzJs z_fPSiGa@XEhJG@l`3Kz#lA15U`RWk7U-%UGNP+kyv-wX23EL1x+a-t z=`_hI98c4qClX#8jMoh7Qr7`fyBx0DxT5SOwB0R-^Y?YIyLK(q=>A6K%Y4H3%g?6R zN4iQRb+J~VyKVIp7acm|{YEp4d|4ppQSkg|*-bcO2-Tj@mVV3YUBtKI{fR9qa?cU9 zVI%0iuV=}EUo7snzzY|9c*5%wCTJewg`PbHGK%ERheP4wKGnvU_3>w%&_jNGfrKr z#F4pamlhE=CqXlvDbEzZGYANbtGM!k9ez<$?zL`ZhZU37R1@FcgQ#HK7NZ$LAm!FN z;1PTFEPHk?$qav3tz{OADvQabF;Y6hyqk!*g+BrCCj&Nv5l6}B%jUH2>MkP26J8fU zY|$(0CaKvGLPz)fPIxX(KFTHL4`LwZ^tMzQGPXY?LQ5<2yYRrLDITc|ttp^Zk6j zUYw&}+HExbEqo?x?i7itIrw*se?u7~>CSNK9e;^P&1#9C)C+ahEz#^mAGnd{iNXyF zY)*-QCs|&2xXK(;6@A#KQlI+?C7WN7mL;l`S8d_dTzIS^s}iyrN2djIXfU#G%3WNoal$U6tJ^+N1c}FaJ(6J+Gbx7uMPK zq#dIyD8D1~N=@S3`N&d#h5Om|)UB?sh|_76iZ=FS8J}{G1QEXzLu_q+NVd+_rz&f_ zDUTiEcjT-x3v|u3#=LvVJI?CxM%kgoj&!&ar98TYN4?xTVu%ARm|6uxF|$fNp^+5q zVAUdzTGObG1Z7VQF(LG(d{P;~$gPHW)%3cY*PLZpeY#xqYd+|uzly1e-qQSbYxh<~p#ynS%+3{wo& zyd!$YST$e|1KDV|J~Yn3gz4k_pUSOlsTNM1=7TxO|5dy_vEGmlnsk_0cl8sdyC`7L zdKS}FIR($U7eShDSN!noBxF?zF#AIn{F!%}J^5kR5=HjbsYJK$I1z7cN3VBqnw?~0 zr&)_QY*{7iJjNE0U{5PcHL2gVa+vTV7{_m`hK3 z(Dec19BA^FKdotoL+mzO*r$s;rJ@m@Om)MC2`=m#Z2I_*ME#Wt)loLWhMhimc9JRv zwrMT@bD#?j^ispXcN+2vnGgCtZiT0Qv}G2Wb}Y`W;zeBq7tx&aEGPbBY%rNA>dYQF zn2oCErFDvDll{n?h103Ai3XmYF2&Emso-YW8qY6~;stge7&Wam_9X`RXILt;c)7!Y z1nPv-(*}B!e>3(c+hVb{BijBP_Mi7E?|Cv~Cvd0zTs$d1l4@&P?2y6GbUg=xcvKPT z6=clBVN^Bv47u=v@wPDrez-Rgcvb{46M}zfFH$zhnNIA~L&W9Hk4o&r{^S~RXkaAW zRR4X(^)3GiKf|2R zT_qNHCM7X@(ss3SGH1>N`dxz%{>E#$&=wunv%6E#IQY*ucwLKn)acOX>Xy{T-T@Cf zF&5fuOMt(5i*MU+o;@Yq81A*;AX7Q!_B(zbu6dgm_d% z(wBrr52eD+-GuL#ztM|*n9qCeKW}j_YBA4@N|KH7nwcHW{=OXU=@_F=sU5mSB*B0% zBm8N>*c~*LYr9>m&NNN%!w{zRIV!PS&d1)w6+GB8yil`g5M7wuj(R=(0}69{ zboQSo!iDpAaTWvE)wSTbr2{pq0Lrr&@%SP!rbzYqHPZU}OEULBm?-h+mv*^sHkNqdwy@S9>o~T;6l^$#V0ZLD>zdxL( zi<;lT+fDx;%c*O$Rgrmf7Cl|?*q?7@(&s&7rT=d$u|?mbCc-b94)onX9lB~%BaAMz z!LHd=U>flaTvpj&?yV#*c;=~TbuhIkaE;8=FXbMwUg?jEzD=b+_ z|5Gz+5Osj~Uf)Ry)W?aUIGGE~F(lF$4KAiaaYu8k^D@GZcQ>-%%Dlvm-0kp)I8KNW z@qX}JA7?&v!0@+j`2A`qv*_UeuW*A*pZ44kAp~Dg#m_yNzClST97t4ScQspFJhBv? z6scm6kqsWzQD$HF=c`l0vJTW|jSb~@$cg5qka9T~liX`y{){qc+!l-tQ(rQR3l66g zjgkFmEBE&#XnP@~Z41HxgI93Iw-6d4g0QjT6^!Uu1n!f9@T7h%vsgdbqUilsN9y!F zfbwTU9$U*}ZdoSI^SCV9(VRv+4;7vdZ;gLjSd~!w0&ZW0$`QQ;d{M;~2?;2~m z%tlJPZc?EuT48!!+5&vaJF^eGJxSfOEsHpAC~c9b?Qyum72)szU+`6`de^@siG$;OL>SD-afW%Yv84HMhAi?lkK z#^Kr*WLtD3O}LXvct$aU8BVyh-T}+P!l3&^N8B*T5eIz;XFhJatRt_&2UCw1U&unK z2_}8;M4um>;pbfwyj$vt?fZ5H{ua*iAEv(ahsj$aNl>HwFUli{#lNm~VFKtgBF8W8p^;{|6ir;s6y%83B_0gsnXGZO!bww8Z z{PWf?$JW&7q8inV?kIY%_@@>7Snk_~>RfwA%pWjr zz)g<0t<(%Jv|1*5T3$ni?VRgoDK5F~BUgG)qDH3b*!QIe4(S>I!hqH&VY|V;fdP=> zp^oxxURYJF)OTj*DEgqZ2TdT075%lH@bFGotn$7mzq{QDd#qsy?BCDi2UVQ$_YD_> zA@|uTnmXkdDIam23}zK*ySF=FD68(DXqF88Na8lxV@{DN9%@pa0RDKtC)%~0sIIjh z^p^FBG+!-@Vp zWhJUu=lQRA-;A@SvW;Te=_p#2-$ZU3-GN>2?XhIcOqks5KKwZCfbOHF!Fbg>uywHm z?sHVe8QL~klZhEeh-vq!lwXngm70&wvB-qg5!ssnYq~lsNI2f33OcMY#yH)>(0ao& z=o)2$U)CN0diWVs5o7#Yc!>F^R#eGq_RplJwKtPt{iJy6t1~X15eZq=Qam5#g8Nkm z!!X7?o}%T#5?GPU!lLE^nb|y)>IIe){=4HNUgB@C+f+5$*@bDvv)T-P4tNxrcs?q9 z_LF2Er1BPR>Thp?S#nRN2iXnUyfDGT`kt6}v@7u6KfBkGj`Y^%aQZ&Jt%$#buYKif zVkMI3-1nq8&V?$h4Jkis{0PM}=x1j`+drZ7>Y5xT9)1Kf7=|tWW|WoD%h#-_ib5S8+Gb$JB(J2W2^xeI$>@e ziq5up7+e>E53eM&9uuz83LYL8zC!)@$v@lI>39HUfSkfgLLBpVf^ zWXDu$}8mm%D{0@JB zl6or)x48%U9qOR*3sW$Qe83oi>Y(6|HQGq;F$)L#)x>N567uu+RNDK|2biyKj7P#! zVRdmGL{=H&GMQ3$y44l{fKbm1RP1|KFTdyM3 zpJody-3#E85yM9HISB3J3!&Y9Thwwm2=S9Iz};{g97YbXQAJBPk?FevXrjc3^6xAE zt%%=UEt5F^$iA{NQpET~Ub4EorM-v3=guD3jxmirA3PWiZ|j5>Q<$c-fs$pjb(97rrbXirn`!K+LV!BrzTUL9h+y(UKOB?R~;;{ z>cDzt5i%!(Tx>g?I@SM{4eaz2vetQ`UY=J#>nT6s^)XM(E;&sHHaA1kJ5RLTaGl`* zf=rSMT=lZZ)cZ3i|4n>ZqKUN@p4e~+q5qM#IE-;tnO{ccqp?R>QN`0uWRmJE%47NX zuS<;U8`b)1QGe?^0t@0rJ{G%c;eqxZn6NGgcz+Bd>{dg1C%Dsj%cZpDuLb@}=!9Ap zp1|iL#W~1fC+?GxA4kx&l^Y4q%Xs^g3upS4N`%XCZ-&Dv_*TWIvPMC0MI(zclEy;?i9zAK#Q92?G>D|YehBQO% zc+8q3(vxOy`_dc!!SVsrWTq~4-`E!aj>ln!Pv;HxaYOewqYY>Eq zEy{aTuhk0(Ij2d3O2b5JJHMXu+Vt%H(Z0Llm%}x`*t-j;O>z-*SrEwPq!#W!D*_e0 zAT+*J3$C3DAy+2|U6(0uUK!{86~l`RsC$=Qbj>|Y?3Brv3L96z)z_LhAjyVtxh2D? zR;*qv+6HIMSAJ2dI+1kIhbHoPT|ZHNkk8lMjA6XEOi5s1!Vz}rd)(iYG`*WI%=q1k zENwPm`T})e+kFMS9ArgbBs^8F8}V< z85_#; zw}s5do61?VVZMrAj~iRb9qA>AMspnAcmfXHDTl$XW?1#`Bt*}+1a|FNmDmj>vOiya zFKNh(qK0R$kg3l*;P9!8Ph#FA;IqBFiUDJrKIulT83xecbXGU2s)OG=?6B_gGMMmF z8=YR-;WYQ908|^jgYDRfd>Qjmv}KMW!NG?vvTzmQmUyhvsU=$YtUJSUIw-N6H^*I3 z+^#dE?xme6Us=jCcZiwN|9UL&&yX*mC0miqeXox5Kf0pMvEK0dkQye|yP`p9Zz%b! zhK|Qv@nfm7a?*UGhN5DjjB1oQ(Yz08C^hJU2ctSen64V8|MS6v+MWM{1pIO^mxP_` zK#wezQyx{yvwewimPfAVlaq-NG(74n;kiHOw{^s7ruACzc!Y=tl+{6g-c7poil8gk z{~>%Uo|%B>9c5@->ts@Ka~K_3@t)inWP@f55j`d+9A2`j`(6bunDd|)SThFm@WC!P z)W0u#@;0}7kTfBl&g-_B80*^Mvs?Cz<9-zIu~$AOE0IK|x1sYV?jvT;Luhyx2kbh> z1jqGT0S=$+@cl9qoTaf6;#j0OXQVM!_f26w3|(7D+`pTo;&+fpJCoPT6yLlYmnC>vGI#U=jRQs+^pZDU1m315ZHzcCDxYF+cq;i~6Dazv%%U8zVXg_rZ(0ugU6j4;XC*YWN{z-fc~br!&fl=3rrBfcb_>)# zs{Eo}`e`z>%XiXkr9-)C{S_a7Cz zb`oOfI8v~xIt`QOd11EK3HT6r1{zm*W5(1I@Ne{4I9ln2ACr~qm0Rd|p~v-WWXsjg zr2hGC$a642PgYlyw;>IBeKx>f(^r9pOBy`?Vt|ri$~Un{7$JOd{!GHY_aV+?H!OBH zz!SZbVP)^#pjx4ixua8{zd;)OYc#;)!O9(H@&0MT#DWtf`H!oNZ^id3wlK*XDP)iT zNj9jb6xGl)NdLjqzTA^w|ES#%<7I#WUJNfR@{u%hv>>ebLY}tjUBtKIM<})kYU?lf zNlobU=^2Wkw|n5k1SwAcwFI8k>;_q91N^MN6nNhZWpOZ4xZI_YXvXzb@U3`%VvBcv z&O*u!8#mfY1(WZSne^KzQ zczn4fxhicuBwL-!^jM%W^*ue za9`l9WAX@xK!Nhza*(s#KebHi!TsQ7-x7Tx;H7W@;Ik-L8CWaFT{5EE>G zV=4i7fB#DN!qpB^oLvXZhm~}^&}-R6B0L{28WrEK*rJyrQ8*cFDnp~v!b!LHLX?pd z(~c2%Tf7&1*=c{nIRat}i;gpddC@6kn-mm$D}IDxix+Jd2)dj070z58qOkQ(hk?#g zoG{lHJcH9grJn(=n&Jz*Z>Bj}ksz35YRmdPX6(>hE8d^jqTj_aLe=Y=WO&cpMt9)-wcEcJLQJHXS*v8tUfMKT2JW5X|d@H_RvBg7;I6?X~m+aZ- zE%L#)x-QuZTIUSV{Ejp8@#D-ip?%6;Vk2`_bS>EnyI6esV~jPJ`|pM9VeB3?&l)CK z?uD6!2AG{~&n(Wjj1f-N3?{qP?kdW^ro(F%<9jVNhnFMM!D55~?(;MUz9$xYy+2H7 ztGSk3*!x<+x8i+>EpGp#!m~RX>hI3UsbU5&4x!_QhcbV4?j0$!OjT=IHS8h@V=RT z?fWsp?g(RYBJ72NZ^io)Tb$oCSx{HMNcL@bUF7MI4HlIK*yopy$OrG6v3RVXCVICx|ONiTk+sF|D#iM~?2 z_M;VatIdIFY`>b?UKM!XY|ev+32$w7k=Z++EBIEtKe0uZRsDp!e!WPTnWhl`dLQ@^ zDfZO(Bd<%^2V|}R_SgL*=Y2CA0Ao|BQCUiw9_R>sE8d^j;@xL+!CRh6Zd>{b^L8D8 zkL?YyX3;nKww3uH50PSU<_9_5eE?Jo4Dib2dKPE6ITHks$1}27h z`RPOXqVvaKcxx$22i;*7D}%ZT|MqPp#lE(J?Yg62;LNn!%pZwH#gA4ZxmWZ^v20lk zjS(zJa(4yj6zpBR+HmaSaT8eXl^QqonTZPfJdf2_m z8jY+L%eN2t0*OZ$4%Kh*e=Mvk)fDwt;_0*_848u4&(IKSgH=Jhz71t5;lXOI0N=fbMC_h8;idt9M0m(6*IpQ{i)%Z>OB?;(6Es)XN- z`Z%)JM)^-kCAjz);E04R@;cjV&{iUa5xWd-m{<~Mo zZzNoYC9Ktl*p>2csn=l03MuNxC@p3O4-)3howTzt0*e za;{$o%Jlly?no5*=)B@OXfWSqw-T9;6W)u3XKDwEUi>~>#QWe!D7H9wFG1Mi9}8)2_jNM=6f-3KRL@eY3ANG)}m>V1AK)$~n@wwGy7Lkz(Bie|hbRN}wg| z2KmWf&iBNgymf@IWOsT|Q&mU$*XAlbS<94Srn<=;`&Akg~6`CvD?t&VY*$!q(SzYdgq!e;l2GWd$AO|Td6T0 z6Y{DRNxpidcEniGsQ7-x7PB_aAUkTm5vQ`DLf6p^;I)t`TDzWw@0DM`Xe3j5+i(tU zxBmu4AI(ucR;dVG-_l92nr0@Ok>)EJ72og4AqAkvMzz!9J*z9aT6$eEWO^n^X4*9g zR}MmWvOcQJVErCA49lGiaB2VZFgPF|;#kDH`kXRjvZqg=Fd)0B$Sl^Her+g*-jY8s zy8dxMc}giXwD|+pP0azn`;|h)*1ym%t%dnmYuZ6rvYwF5Gs9@ijo+|o2g@~Ie+B;@ z{Dy^3tg)wSEv&5h10SE*VE^gL+=T!1ctPTwte6%(j;u4<11>uoVdccVQ2b>N%(7^N zl8Kq{x-JbK+cKSqh3U*<%#tu+ZsG37jH9G7D8!jgd69tE)Yo&iqp_%cBJ zm4sE_w=y4hlg0`e zgRUwXK20TSP1E6HTmu;T?gf2^bQrSf3#j+cfX#RJz>>&sEbg$ES={cwP$+a(RaA|9 zDO-1EJJe=MP#(Do3>&w@n^r0~efk<0xP3cR{8Yi?la$rV?|)S(vaENIUYe0~{<8gG ze_Ic?JD-EIws~;(9#c@ibQUxuxp3ov9?t)FhFMh1bP{|nN{Vjn44{j8-hrV{q{go#eJ5{HgtYainG2u5n*)Z}ZCE9wwRr}M z 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%0D{&&h_j-B_tc^ND| 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Μ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μ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 iJ-Ze*E@i*p~8MY-VF;7d4806WL)683h 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≤ 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

knPdtAn+*vqGK6SJ==4?{O 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 literal 0 HcmV?d00001 diff --git a/resources/handy_models/helper_disk.stl b/resources/handy_models/helper_disk.stl new file mode 100644 index 0000000000000000000000000000000000000000..94ab0739c9a0d012e26a472790c8fdc9f3f0b07d GIT binary patch literal 37284 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 literal 0 HcmV?d00001 diff --git a/resources/handy_models/torus.stl b/resources/handy_models/torus.stl new file mode 100644 index 0000000000000000000000000000000000000000..3919fa5b21511e348f1d4ff881f088df1c27cee5 GIT binary patch literal 153684 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

-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

nEyM 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 } + for (auto &item : {L("Cube"), L("Cylinder"), L("Sphere"), L("Cone"), L("Disc"), L("Torus")}) { + append_menu_item( + sub_menu, wxID_ANY, _(item), "", + [type, item](wxCommandEvent &) { + obj_list()->load_generic_subobject(item, type); + }, + "", menu); + } + + append_menu_item_add_text(sub_menu, type); + append_menu_item_add_svg(sub_menu, type); + + return sub_menu; +} + +// Orca: add submenu for adding handy models +wxMenu* MenuFactory::append_submenu_add_handy_model(wxMenu* menu, ModelVolumeType type) { + auto sub_menu = new wxMenu; + for (auto &item : {L("Orca Cube"), L("3DBenchy"), L("Autodesk FDM Test"), - L("Voron Cube")}) { + L("Voron Cube"), L("Bunny")}) { append_menu_item( sub_menu, wxID_ANY, _(item), "", [type, item](wxCommandEvent &) { @@ -511,6 +530,8 @@ wxMenu* MenuFactory::append_submenu_add_generic(wxMenu* menu, ModelVolumeType ty file_name = "ksr_fdmtest_v4.stl"; else if (file_name == L("Voron Cube")) file_name = "Voron_Design_Cube_v7.stl"; + else if (file_name == L("Bunny")) + file_name = "bunny.stl"; else return; input_files.push_back( @@ -521,22 +542,9 @@ wxMenu* MenuFactory::append_submenu_add_generic(wxMenu* menu, ModelVolumeType ty "", menu); } - append_menu_item_add_text(sub_menu, type); - append_menu_item_add_svg(sub_menu, type); - - sub_menu->AppendSeparator(); - for (auto &item : {L("Cube"), L("Cylinder"), L("Sphere"), L("Cone")}) { - append_menu_item( - sub_menu, wxID_ANY, _(item), "", - [type, item](wxCommandEvent &) { - obj_list()->load_generic_subobject(item, type); - }, - "", menu); - } return sub_menu; } - static void append_menu_itemm_add_(const wxString& name, GLGizmosManager::EType gizmo_type, wxMenu *menu, ModelVolumeType type, bool is_submenu_item) { auto add_ = [type, gizmo_type](const wxCommandEvent & /*unnamed*/) { const GLCanvas3D *canvas = plater()->canvas3D(); @@ -1163,12 +1171,17 @@ MenuFactory::MenuFactory() void MenuFactory::create_default_menu() { - wxMenu* sub_menu = append_submenu_add_generic(&m_default_menu, ModelVolumeType::INVALID); + wxMenu* sub_menu_primitives = append_submenu_add_generic(&m_default_menu, ModelVolumeType::INVALID); + wxMenu* sub_menu_handy = append_submenu_add_handy_model(&m_default_menu, ModelVolumeType::INVALID); #ifdef __WINDOWS__ - append_submenu(&m_default_menu, sub_menu, wxID_ANY, _L("Add Primitive"), "", "menu_add_part", + append_submenu(&m_default_menu, sub_menu_primitives, wxID_ANY, _L("Add Primitive"), "", "menu_add_part", + []() {return true; }, m_parent); + append_submenu(&m_default_menu, sub_menu_handy, wxID_ANY, _L("Add Handy models"), "", "menu_add_part", []() {return true; }, m_parent); #else - append_submenu(&m_default_menu, sub_menu, wxID_ANY, _L("Add Primitive"), "", "", + append_submenu(&m_default_menu, sub_menu_primitives, wxID_ANY, _L("Add Primitive"), "", "", + []() {return true; }, m_parent); + append_submenu(&m_default_menu, sub_menu_handy, wxID_ANY, _L("Add Handy models"), "", "", []() {return true; }, m_parent); #endif @@ -1452,13 +1465,18 @@ void MenuFactory::create_plate_menu() // add shapes menu->AppendSeparator(); - wxMenu* sub_menu = append_submenu_add_generic(menu, ModelVolumeType::INVALID); + wxMenu* sub_menu_primitives = append_submenu_add_generic(menu, ModelVolumeType::INVALID); + wxMenu* sub_menu_handy = append_submenu_add_handy_model(menu, ModelVolumeType::INVALID); #ifdef __WINDOWS__ - append_submenu(menu, sub_menu, wxID_ANY, _L("Add Primitive"), "", "menu_add_part", + append_submenu(menu, sub_menu_primitives, wxID_ANY, _L("Add Primitive"), "", "menu_add_part", + []() {return true; }, m_parent); + append_submenu(menu, sub_menu_handy, wxID_ANY, _L("Add Handy models"), "", "menu_add_part", []() {return true; }, m_parent); #else - append_submenu(menu, sub_menu, wxID_ANY, _L("Add Primitive"), "", "", + append_submenu(menu, sub_menu_primitives, wxID_ANY, _L("Add Primitive"), "", "", + []() {return true; }, m_parent); + append_submenu(menu, sub_menu_handy, wxID_ANY, _L("Add Handy models"), "", "", []() {return true; }, m_parent); #endif @@ -1940,7 +1958,7 @@ void MenuFactory::update_object_menu() void MenuFactory::update_default_menu() { - for (auto& name : { _L("Add Primitive") , _L("Show Labels") }) { + for (auto& name : { _L("Add Primitive") , _L("Add Handy models"), _L("Show Labels") }) { const auto menu_item_id = m_default_menu.FindItem(name); if (menu_item_id != wxNOT_FOUND) m_default_menu.Destroy(menu_item_id); diff --git a/src/slic3r/GUI/GUI_Factories.hpp b/src/slic3r/GUI/GUI_Factories.hpp index 70cb225af3..abb5525a04 100644 --- a/src/slic3r/GUI/GUI_Factories.hpp +++ b/src/slic3r/GUI/GUI_Factories.hpp @@ -124,6 +124,8 @@ private: void create_bbl_assemble_part_menu(); wxMenu* append_submenu_add_generic(wxMenu* menu, ModelVolumeType type); + // Orca: add submenu for adding handy models + wxMenu* append_submenu_add_handy_model(wxMenu* menu, ModelVolumeType type); void append_menu_item_add_text(wxMenu* menu, ModelVolumeType type, bool is_submenu_item = true); void append_menu_item_add_svg(wxMenu *menu, ModelVolumeType type, bool is_submenu_item = true); void append_menu_items_add_volume(wxMenu* menu); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 697fba968e..e98069820f 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2084,23 +2084,27 @@ static TriangleMesh create_mesh(const std::string& type_name, const BoundingBoxf { const double side = wxGetApp().plater()->canvas3D()->get_size_proportional_to_max_bed_size(0.1); - indexed_triangle_set mesh; + TriangleMesh mesh; if (type_name == "Cube") // Sitting on the print bed, left front front corner at (0, 0). - mesh = its_make_cube(side, side, side); + mesh = TriangleMesh(its_make_cube(side, side, side)); else if (type_name == "Cylinder") // Centered around 0, sitting on the print bed. // The cylinder has the same volume as the box above. - mesh = its_make_cylinder(0.5 * side, side); + mesh = TriangleMesh(its_make_cylinder(0.5 * side, side)); else if (type_name == "Sphere") // Centered around 0, half the sphere below the print bed, half above. // The sphere has the same volume as the box above. - mesh = its_make_sphere(0.5 * side, PI / 18); + mesh = TriangleMesh(its_make_sphere(0.5 * side, PI / 18)); else if (type_name == "Slab") // Sitting on the print bed, left front front corner at (0, 0). - mesh = its_make_cube(bb.size().x() * 1.5, bb.size().y() * 1.5, bb.size().z() * 0.5); + mesh = TriangleMesh(its_make_cube(bb.size().x() * 1.5, bb.size().y() * 1.5, bb.size().z() * 0.5)); else if (type_name == "Cone") - mesh = its_make_cone(0.5 * side, side); + mesh = TriangleMesh(its_make_cone(0.5 * side, side)); + else if (type_name == "Disc") + mesh.ReadSTLFile((Slic3r::resources_dir() + "/handy_models/helper_disk.stl").c_str(), true, nullptr); + else if (type_name == "Torus") + mesh.ReadSTLFile((Slic3r::resources_dir() + "/handy_models/torus.stl").c_str(), true, nullptr); return TriangleMesh(mesh); } From 888096d75c47d8aee2273da35372666ba48ef52d Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 20 Dec 2023 12:56:13 +0100 Subject: [PATCH 03/66] New profile for Creality Ender 3 V3 SE (#3180) * Added Creality Ender 3 V3 SE. * Fixed fine profile. * Optimized first layer speed (based on Creality Print) * Brought back Ender-5 (2019) * Setting Marlin 2 as gcode flavor * Use inheritance for Ender-3 V3 filament profiles. * Various improvements. * Temperature optimisations (less power consumption) * Fixed some log errors. * Optimizations * Reverted support_interface_top_layers * Added correct jerk and acceleration settings. * Added retraction speed. * Re-added missing Ender-5 references in filaments. * Reverted slow_down_layer_time, Creality print is too optimistic on this at least for Ender 3 V3 SE. * Optimizations for supports (easier to remove) --------- Co-authored-by: SoftFever --- resources/profiles/Creality.json | 92 +++++++++++--- .../Creality/Creality Ender-3 V3 SE_cover.png | Bin 0 -> 20759 bytes .../creality_ender3v3se_buildplate_model.stl | Bin 0 -> 18684 bytes ...creality_ender3v3se_buildplate_texture.png | Bin 0 -> 6914 bytes .../Creality Generic ABS @Ender-3V3-all.json | 13 ++ .../Creality Generic ASA @Ender-3V3-all.json | 13 ++ .../Creality Generic PETG @Ender-3V3-all.json | 23 ++++ .../Creality Generic PLA @Ender-3V3-all.json | 21 +++ ...Generic PLA High Speed @Ender-3V3-all.json | 14 ++ ...lity Generic PLA Matte @Ender-3V3-all.json | 12 ++ ...ality Generic PLA Silk @Ender-3V3-all.json | 12 ++ .../Creality Generic TPU @Ender-3V3-all.json | 19 +++ .../filament/Creality Generic TPU.json | 1 + .../Creality Ender-3 V3 SE 0.4 nozzle.json | 120 ++++++++++++++++++ .../machine/Creality Ender-3 V3 SE.json | 12 ++ .../0.12mm Fine @Creality Ender3V3SE.json | 118 +++++++++++++++++ .../0.16mm Optimal @Creality Ender3V3SE.json | 118 +++++++++++++++++ .../0.20mm Standard @Creality Ender3V3SE.json | 118 +++++++++++++++++ 18 files changed, 686 insertions(+), 20 deletions(-) create mode 100644 resources/profiles/Creality/Creality Ender-3 V3 SE_cover.png create mode 100644 resources/profiles/Creality/creality_ender3v3se_buildplate_model.stl create mode 100644 resources/profiles/Creality/creality_ender3v3se_buildplate_texture.png create mode 100644 resources/profiles/Creality/filament/Creality Generic ABS @Ender-3V3-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic ASA @Ender-3V3-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic PETG @Ender-3V3-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic PLA @Ender-3V3-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic PLA High Speed @Ender-3V3-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic PLA Matte @Ender-3V3-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic PLA Silk @Ender-3V3-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic TPU @Ender-3V3-all.json create mode 100644 resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.4 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality Ender-3 V3 SE.json create mode 100644 resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE.json create mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE.json create mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE.json diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index d38ab3cd18..12af5f6412 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -36,6 +36,10 @@ "name": "Creality Ender-3 S1 Pro", "sub_path": "machine/Creality Ender-3 S1 Pro.json" }, + { + "name": "Creality Ender-3 V3 SE", + "sub_path": "machine/Creality Ender-3 V3 SE.json" + }, { "name": "Creality Ender-5", "sub_path": "machine/Creality Ender-5.json" @@ -158,6 +162,10 @@ "name": "0.12mm Fine @Creality Ender3V2", "sub_path": "process/0.12mm Fine @Creality Ender3V2.json" }, + { + "name": "0.12mm Fine @Creality Ender3V3SE", + "sub_path": "process/0.12mm Fine @Creality Ender3V3SE.json" + }, { "name": "0.12mm Detail @Creality Ender5Pro (2019) 0.2", "sub_path": "process/0.12mm Detail @Creality Ender5Pro (2019) 0.2.json" @@ -198,6 +206,10 @@ "name": "0.16mm Optimal @Creality Ender3S1Pro", "sub_path": "process/0.16mm Optimal @Creality Ender3S1Pro.json" }, + { + "name": "0.16mm Optimal @Creality Ender3V3SE", + "sub_path": "process/0.16mm Optimal @Creality Ender3V3SE.json" + }, { "name": "0.16mm Optimal @Creality Ender5", "sub_path": "process/0.16mm Optimal @Creality Ender5.json" @@ -282,6 +294,10 @@ "name": "0.20mm Standard @Creality Ender3S1Pro", "sub_path": "process/0.20mm Standard @Creality Ender3S1Pro.json" }, + { + "name": "0.20mm Standard @Creality Ender3V3SE", + "sub_path": "process/0.20mm Standard @Creality Ender3V3SE.json" + }, { "name": "0.20mm Standard @Creality Ender5", "sub_path": "process/0.20mm Standard @Creality Ender5.json" @@ -508,18 +524,6 @@ "name": "fdm_filament_common", "sub_path": "filament/fdm_filament_common.json" }, - { - "name": "fdm_filament_pla", - "sub_path": "filament/fdm_filament_pla.json" - }, - { - "name": "fdm_filament_pet", - "sub_path": "filament/fdm_filament_pet.json" - }, - { - "name": "fdm_filament_tpu", - "sub_path": "filament/fdm_filament_tpu.json" - }, { "name": "fdm_filament_abs", "sub_path": "filament/fdm_filament_abs.json" @@ -528,6 +532,30 @@ "name": "fdm_filament_asa", "sub_path": "filament/fdm_filament_asa.json" }, + { + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" + }, + { + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "fdm_filament_tpu", + "sub_path": "filament/fdm_filament_tpu.json" + }, + { + "name": "Creality Generic ABS", + "sub_path": "filament/Creality Generic ABS.json" + }, + { + "name": "Creality Generic ASA", + "sub_path": "filament/Creality Generic ASA.json" + }, + { + "name": "Creality Generic PETG", + "sub_path": "filament/Creality Generic PETG.json" + }, { "name": "Creality Generic PLA", "sub_path": "filament/Creality Generic PLA.json" @@ -540,21 +568,41 @@ "name": "Creality HF Generic Speed PLA", "sub_path": "filament/Creality HF Generic Speed PLA.json" }, - { - "name": "Creality Generic PETG", - "sub_path": "filament/Creality Generic PETG.json" - }, { "name": "Creality Generic TPU", "sub_path": "filament/Creality Generic TPU.json" }, { - "name": "Creality Generic ABS", - "sub_path": "filament/Creality Generic ABS.json" + "name": "Creality Generic ABS @Ender-3V3-all", + "sub_path": "filament/Creality Generic ABS @Ender-3V3-all.json" }, { - "name": "Creality Generic ASA", - "sub_path": "filament/Creality Generic ASA.json" + "name": "Creality Generic ASA @Ender-3V3-all", + "sub_path": "filament/Creality Generic ASA @Ender-3V3-all.json" + }, + { + "name": "Creality Generic PETG @Ender-3V3-all", + "sub_path": "filament/Creality Generic PETG @Ender-3V3-all.json" + }, + { + "name": "Creality Generic PLA @Ender-3V3-all", + "sub_path": "filament/Creality Generic PLA @Ender-3V3-all.json" + }, + { + "name": "Creality Generic PLA High Speed @Ender-3V3-all", + "sub_path": "filament/Creality Generic PLA High Speed @Ender-3V3-all.json" + }, + { + "name": "Creality Generic PLA Matte @Ender-3V3-all", + "sub_path": "filament/Creality Generic PLA Matte @Ender-3V3-all.json" + }, + { + "name": "Creality Generic PLA Silk @Ender-3V3-all", + "sub_path": "filament/Creality Generic PLA Silk @Ender-3V3-all.json" + }, + { + "name": "Creality Generic TPU @Ender-3V3-all", + "sub_path": "filament/Creality Generic TPU @Ender-3V3-all.json" } ], "machine_list": [ @@ -626,6 +674,10 @@ "name": "Creality Ender-3 S1 Pro 0.4 nozzle", "sub_path": "machine/Creality Ender-3 S1 Pro 0.4 nozzle.json" }, + { + "name": "Creality Ender-3 V3 SE 0.4 nozzle", + "sub_path": "machine/Creality Ender-3 V3 SE 0.4 nozzle.json" + }, { "name": "Creality Ender-5 0.4 nozzle", "sub_path": "machine/Creality Ender-5 0.4 nozzle.json" diff --git a/resources/profiles/Creality/Creality Ender-3 V3 SE_cover.png b/resources/profiles/Creality/Creality Ender-3 V3 SE_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..27bb29a209de9fecffc30461a79a780bc9661c99 GIT binary patch literal 20759 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 H`7{3qdqJni literal 0 HcmV?d00001 diff --git a/resources/profiles/Creality/creality_ender3v3se_buildplate_texture.png b/resources/profiles/Creality/creality_ender3v3se_buildplate_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..60f628fe6d8c137806b8c295c41ab396853ac682 GIT binary patch literal 6914 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 Date: Wed, 20 Dec 2023 19:55:34 +0800 Subject: [PATCH 04/66] Rename bunny to `Stanford Bunny` --- .../handy_models/{bunny.stl => Stanford_Bunny.stl} | Bin src/slic3r/GUI/GUI_Factories.cpp | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) rename resources/handy_models/{bunny.stl => Stanford_Bunny.stl} (100%) diff --git a/resources/handy_models/bunny.stl b/resources/handy_models/Stanford_Bunny.stl similarity index 100% rename from resources/handy_models/bunny.stl rename to resources/handy_models/Stanford_Bunny.stl diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index d3afae8712..73b4e774a5 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -516,7 +516,7 @@ wxMenu* MenuFactory::append_submenu_add_handy_model(wxMenu* menu, ModelVolumeTyp auto sub_menu = new wxMenu; for (auto &item : {L("Orca Cube"), L("3DBenchy"), L("Autodesk FDM Test"), - L("Voron Cube"), L("Bunny")}) { + L("Voron Cube"), L("Stanford Bunny")}) { append_menu_item( sub_menu, wxID_ANY, _(item), "", [type, item](wxCommandEvent &) { @@ -530,8 +530,8 @@ wxMenu* MenuFactory::append_submenu_add_handy_model(wxMenu* menu, ModelVolumeTyp file_name = "ksr_fdmtest_v4.stl"; else if (file_name == L("Voron Cube")) file_name = "Voron_Design_Cube_v7.stl"; - else if (file_name == L("Bunny")) - file_name = "bunny.stl"; + else if (file_name == L("Stanford Bunny")) + file_name = "Stanford_Bunny.stl"; else return; input_files.push_back( From 6bb0d5ec30559f9d54556da1e55d484363ed090b Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Wed, 20 Dec 2023 21:09:13 +0800 Subject: [PATCH 05/66] Do not limit the max window size (#3149) Do not limit the max window size (#2889) Co-authored-by: SoftFever --- src/slic3r/GUI/BBLTopbar.cpp | 9 --------- src/slic3r/GUI/MainFrame.cpp | 25 ++++++++----------------- 2 files changed, 8 insertions(+), 26 deletions(-) diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index 3fa7ffe748..99a0e70d54 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -531,15 +531,6 @@ void BBLTopbar::OnFullScreen(wxAuiToolBarEvent& event) m_frame->Restore(); } else { - wxDisplay display(this); - auto size = display.GetClientArea().GetSize(); -#ifdef __WXMSW__ - HWND hWnd = m_frame->GetHandle(); - RECT borderThickness; - SetRectEmpty(&borderThickness); - AdjustWindowRectEx(&borderThickness, GetWindowLongPtr(hWnd, GWL_STYLE), FALSE, 0); - m_frame->SetMaxSize(size + wxSize{-borderThickness.left + borderThickness.right, -borderThickness.top + borderThickness.bottom}); -#endif // __WXMSW__ m_normalRect = m_frame->GetRect(); m_frame->Maximize(); } diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index c8dad01b4a..8be514ecf7 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -396,29 +396,20 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_ sizer->SetSizeHints(this); #ifdef WIN32 - auto setMaxSize = [this]() { - wxDisplay display(this); - auto size = display.GetClientArea().GetSize(); - HWND hWnd = GetHandle(); - RECT borderThickness; - SetRectEmpty(&borderThickness); - AdjustWindowRectEx(&borderThickness, GetWindowLongPtr(hWnd, GWL_STYLE), FALSE, 0); - SetMaxSize(size + wxSize{-borderThickness.left + borderThickness.right, -borderThickness.top + borderThickness.bottom}); - }; - this->Bind(wxEVT_DPI_CHANGED, [setMaxSize](auto & e) { - setMaxSize(); - e.Skip(); - }); - setMaxSize(); - // SetMaximize already position window at left/top corner, even if Windows Task Bar is at left side. - // Not known why, but fix it here + // SetMaximize causes the window to overlap the taskbar, due to the fact this window has wxMAXIMIZE_BOX off + // https://forums.wxwidgets.org/viewtopic.php?t=50634 + // Fix it here this->Bind(wxEVT_MAXIMIZE, [this](auto &e) { wxDisplay display(this); - auto pos = display.GetClientArea().GetPosition(); + auto size = display.GetClientArea().GetSize(); + auto pos = display.GetClientArea().GetPosition(); HWND hWnd = GetHandle(); RECT borderThickness; SetRectEmpty(&borderThickness); AdjustWindowRectEx(&borderThickness, GetWindowLongPtr(hWnd, GWL_STYLE), FALSE, 0); + const auto max_size = size + wxSize{-borderThickness.left + borderThickness.right, -borderThickness.top + borderThickness.bottom}; + const auto current_size = GetSize(); + SetSize({std::min(max_size.x, current_size.x), std::min(max_size.y, current_size.y)}); Move(pos + wxPoint{borderThickness.left, borderThickness.top}); e.Skip(); }); From 401ac1adef49442478bb47bf6bbd43073122dca7 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Thu, 21 Dec 2023 14:19:22 +0800 Subject: [PATCH 06/66] Fix crash on MacOS when clicking filament dropdown in object list (#3205) * Disable optimization for `RelWithDebInfo` for Clang as well * Fix crash on MacOS (#3134, #3202) --- CMakeLists.txt | 10 ++++++++++ src/slic3r/GUI/GUI_ObjectList.cpp | 15 +++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c546b087b0..3d9ad7861c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -332,6 +332,16 @@ if(CMAKE_CXX_FLAGS_RELWITHDEBINFO MATCHES "/O2") string(REGEX REPLACE "/O2" "/Od" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") endif() +if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + if(CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES "-O2") + string(REGEX REPLACE "-O2" "-O0" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") + endif() + + if(CMAKE_CXX_FLAGS_RELWITHDEBINFO MATCHES "-O2") + string(REGEX REPLACE "-O2" "-O0" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + endif() +endif() + if(MSVC) if(CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES "/Ob1") string(REGEX REPLACE "/Ob1" "/Ob0" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index e98069820f..e7f06a1c74 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -5533,12 +5533,6 @@ void GUI::ObjectList::OnStartEditing(wxDataViewEvent &event) // Here the last active column is forgotten, so when leaving the editing mode, the next mouse click will not enter the editing mode of the newly selected column. void ObjectList::OnEditingStarted(wxDataViewEvent &event) { - // Orca: Automatically show drop down on editing start and finish editing when the combobox is closed - if (event.GetColumn() == colFilament) { - ::ComboBox*c = static_cast<::ComboBox *>(event.GetDataViewColumn()->GetRenderer()->GetEditorCtrl()); - c->ToggleDropDown(); - c->Bind(wxEVT_COMBOBOX_CLOSEUP, [event](wxCommandEvent& evt){ event.GetDataViewColumn()->GetRenderer()->FinishEditing(); }); - } #ifdef __WXMSW__ m_last_selected_column = -1; #else @@ -5603,6 +5597,15 @@ void ObjectList::OnEditingStarted(wxDataViewEvent &event) SetCustomRendererPtr(dynamic_cast(renderer)); #endif #endif //__WXMSW__ + + // Orca: Automatically show drop down on editing start and finish editing when the combobox is closed + // Note: this must placed AFTER the above `renderer->StartEditing` call, otherwise `c` will be nullptr on MacOS, + // due to the code in MacDarkMode.mm + if (event.GetColumn() == colFilament) { + ::ComboBox*c = static_cast<::ComboBox *>(event.GetDataViewColumn()->GetRenderer()->GetEditorCtrl()); + c->ToggleDropDown(); + c->Bind(wxEVT_COMBOBOX_CLOSEUP, [event](wxCommandEvent& evt){ event.GetDataViewColumn()->GetRenderer()->FinishEditing(); }); + } } void ObjectList::OnEditingDone(wxDataViewEvent &event) From 53d752b6065421f6169febd88185d056556d002e Mon Sep 17 00:00:00 2001 From: Ocraftyone Date: Thu, 21 Dec 2023 03:27:02 -0500 Subject: [PATCH 07/66] Fix wx issues from upgrade (#3032) * fix top bar resizing * Attempt to fix bitmap bundle scaling issues * Revert "Attempt to fix bitmap bundle scaling issues" This reverts commit e94ba58d907b1b2da5a9e27ad552e1d7f1288c18. * Fix AboutDialog and partially fix SwitchButton * Fix switch button scaling on windows * Fix dropdown icon size * fixed sdcard/recording/timelapse icon size in device page * Set use_legacy_bmp to true by default to it's back compatible --------- Co-authored-by: Noisyfox Co-authored-by: SoftFever --- src/slic3r/GUI/AboutDialog.cpp | 2 +- src/slic3r/GUI/BBLTopbar.cpp | 89 ++++++++++++++----------- src/slic3r/GUI/BBLTopbar.hpp | 8 +-- src/slic3r/GUI/StatusPanel.cpp | 36 +++++----- src/slic3r/GUI/Widgets/SwitchButton.cpp | 8 ++- src/slic3r/GUI/Widgets/TextInput.cpp | 43 ++++++++---- src/slic3r/GUI/Widgets/TextInput.hpp | 5 +- src/slic3r/GUI/wxExtensions.cpp | 35 +++++++--- src/slic3r/GUI/wxExtensions.hpp | 15 +++-- 9 files changed, 148 insertions(+), 93 deletions(-) diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index de4aca579c..0b3b360861 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -232,7 +232,7 @@ AboutDialog::AboutDialog() main_sizer->Add(ver_sizer, 0, wxEXPAND | wxALL, 0); // logo - m_logo_bitmap = ScalableBitmap(this, "OrcaSlicer_about", 250); + m_logo_bitmap = ScalableBitmap(this, "OrcaSlicer_about", {562,250}); m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bitmap.bmp(), wxDefaultPosition,wxDefaultSize, 0); m_logo->SetSizer(vesizer); diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index 99a0e70d54..654cdca15a 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -29,6 +29,11 @@ enum CUSTOM_ID ID_AMS_NOTEBOOK, }; +static bool IsThemeDark() +{ + return wxSystemSettings::GetAppearance().IsDark(); +} + class BBLTopbarArt : public wxAuiDefaultToolBarArt { public: @@ -130,18 +135,18 @@ void BBLTopbarArt::DrawButton(wxDC& dc, wxWindow* wnd, const wxAuiToolBarItem& i if (item.GetState() & wxAUI_BUTTON_STATE_PRESSED) { dc.SetPen(wxPen(m_highlightColour)); - dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(20))); + dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(IsThemeDark() ? 20 : 150))); dc.DrawRectangle(rect); } else if ((item.GetState() & wxAUI_BUTTON_STATE_HOVER) || item.IsSticky()) { dc.SetPen(wxPen(m_highlightColour)); - dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(40))); + dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(IsThemeDark() ? 40 : 170))); // draw an even lighter background for checked item hovers (since // the hover background is the same color as the check background) if (item.GetState() & wxAUI_BUTTON_STATE_CHECKED) - dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(50))); + dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(IsThemeDark() ? 50 : 180))); dc.DrawRectangle(rect); } @@ -150,7 +155,7 @@ void BBLTopbarArt::DrawButton(wxDC& dc, wxWindow* wnd, const wxAuiToolBarItem& i // it's important to put this code in an else statement after the // hover, otherwise hovers won't draw properly for checked items dc.SetPen(wxPen(m_highlightColour)); - dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(40))); + dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(IsThemeDark() ? 40 : 170))); dc.DrawRectangle(rect); } } @@ -195,23 +200,25 @@ void BBLTopbar::Init(wxFrame* parent) m_skip_popup_dropdown_menu = false; m_skip_popup_calib_menu = false; + m_font.Scale(parent->GetDPIScaleFactor()); + wxInitAllImageHandlers(); this->AddSpacer(5); - /*wxBitmap logo_bitmap = create_scaled_bitmap("topbar_logo", nullptr, TOPBAR_ICON_SIZE); + /*wxBitmap logo_bitmap = *get_bmp_bundle("topbar_logo", TOPBAR_ICON_SIZE); wxAuiToolBarItem* logo_item = this->AddTool(ID_LOGO, "", logo_bitmap); logo_item->SetHoverBitmap(logo_bitmap); logo_item->SetActive(false);*/ - wxBitmap file_bitmap = create_scaled_bitmap("topbar_file", nullptr, TOPBAR_ICON_SIZE); + wxBitmapBundle file_bitmap = *get_bmp_bundle("topbar_file", TOPBAR_ICON_SIZE); m_file_menu_item = this->AddTool(ID_TOP_FILE_MENU, _L("File"), file_bitmap, wxEmptyString, wxITEM_NORMAL); this->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT)); this->AddSpacer(FromDIP(5)); - wxBitmap dropdown_bitmap = create_scaled_bitmap("topbar_dropdown", nullptr, TOPBAR_ICON_SIZE); + wxBitmapBundle dropdown_bitmap = *get_bmp_bundle("topbar_dropdown", TOPBAR_ICON_SIZE); m_dropdown_menu_item = this->AddTool(ID_TOP_DROPDOWN_MENU, "", dropdown_bitmap, wxEmptyString); @@ -219,32 +226,32 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSeparator(); this->AddSpacer(FromDIP(5)); - //wxBitmap open_bitmap = create_scaled_bitmap("topbar_open", nullptr, TOPBAR_ICON_SIZE); + //wxBitmap open_bitmap = *get_bmp_bundle("topbar_open", TOPBAR_ICON_SIZE); //wxAuiToolBarItem* tool_item = this->AddTool(wxID_OPEN, "", open_bitmap); this->AddSpacer(FromDIP(10)); - wxBitmap save_bitmap = create_scaled_bitmap("topbar_save", nullptr, TOPBAR_ICON_SIZE); + wxBitmapBundle save_bitmap = *get_bmp_bundle("topbar_save", TOPBAR_ICON_SIZE); wxAuiToolBarItem* save_btn = this->AddTool(wxID_SAVE, "", save_bitmap); this->AddSpacer(FromDIP(10)); - wxBitmap undo_bitmap = create_scaled_bitmap("topbar_undo", nullptr, TOPBAR_ICON_SIZE); + wxBitmapBundle undo_bitmap = *get_bmp_bundle("topbar_undo", TOPBAR_ICON_SIZE); m_undo_item = this->AddTool(wxID_UNDO, "", undo_bitmap); - wxBitmap undo_inactive_bitmap = create_scaled_bitmap("topbar_undo_inactive", nullptr, TOPBAR_ICON_SIZE); + wxBitmapBundle undo_inactive_bitmap = *get_bmp_bundle("topbar_undo_inactive", TOPBAR_ICON_SIZE); m_undo_item->SetDisabledBitmap(undo_inactive_bitmap); this->AddSpacer(FromDIP(10)); - wxBitmap redo_bitmap = create_scaled_bitmap("topbar_redo", nullptr, TOPBAR_ICON_SIZE); + wxBitmapBundle redo_bitmap = *get_bmp_bundle("topbar_redo", TOPBAR_ICON_SIZE); m_redo_item = this->AddTool(wxID_REDO, "", redo_bitmap); - wxBitmap redo_inactive_bitmap = create_scaled_bitmap("topbar_redo_inactive", nullptr, TOPBAR_ICON_SIZE); + wxBitmapBundle redo_inactive_bitmap = *get_bmp_bundle("topbar_redo_inactive", TOPBAR_ICON_SIZE); m_redo_item->SetDisabledBitmap(redo_inactive_bitmap); this->AddSpacer(FromDIP(10)); - wxBitmap calib_bitmap = create_scaled_bitmap("calib_sf", nullptr, TOPBAR_ICON_SIZE); - wxBitmap calib_bitmap_inactive = create_scaled_bitmap("calib_sf_inactive", nullptr, TOPBAR_ICON_SIZE); + wxBitmapBundle calib_bitmap = *get_bmp_bundle("calib_sf", TOPBAR_ICON_SIZE); + wxBitmapBundle calib_bitmap_inactive = *get_bmp_bundle("calib_sf_inactive", TOPBAR_ICON_SIZE); m_calib_item = this->AddTool(ID_CALIB, _L("Calibration"), calib_bitmap); m_calib_item->SetDisabledBitmap(calib_bitmap_inactive); @@ -257,14 +264,14 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSpacer(FromDIP(10)); this->AddStretchSpacer(1); - m_publish_bitmap = create_scaled_bitmap("topbar_publish", nullptr, TOPBAR_ICON_SIZE); + m_publish_bitmap = *get_bmp_bundle("topbar_publish", TOPBAR_ICON_SIZE); m_publish_item = this->AddTool(ID_PUBLISH, "", m_publish_bitmap); - m_publish_disable_bitmap = create_scaled_bitmap("topbar_publish_disable", nullptr, TOPBAR_ICON_SIZE); + m_publish_disable_bitmap = *get_bmp_bundle("topbar_publish_disable", TOPBAR_ICON_SIZE); m_publish_item->SetDisabledBitmap(m_publish_disable_bitmap); this->EnableTool(m_publish_item->GetId(), false); this->AddSpacer(FromDIP(4)); - /*wxBitmap model_store_bitmap = create_scaled_bitmap("topbar_store", nullptr, TOPBAR_ICON_SIZE); + /*wxBitmap model_store_bitmap = *get_bmp_bundle("topbar_store", TOPBAR_ICON_SIZE); m_model_store_item = this->AddTool(ID_MODEL_STORE, "", model_store_bitmap); this->AddSpacer(12); */ @@ -272,13 +279,13 @@ void BBLTopbar::Init(wxFrame* parent) //this->AddSeparator(); this->AddSpacer(FromDIP(4)); - wxBitmap iconize_bitmap = create_scaled_bitmap("topbar_min", nullptr, TOPBAR_ICON_SIZE); + wxBitmapBundle iconize_bitmap = *get_bmp_bundle("topbar_min", TOPBAR_ICON_SIZE); wxAuiToolBarItem* iconize_btn = this->AddTool(wxID_ICONIZE_FRAME, "", iconize_bitmap); this->AddSpacer(FromDIP(4)); - maximize_bitmap = create_scaled_bitmap("topbar_max", nullptr, TOPBAR_ICON_SIZE); - window_bitmap = create_scaled_bitmap("topbar_win", nullptr, TOPBAR_ICON_SIZE); + maximize_bitmap = *get_bmp_bundle("topbar_max", TOPBAR_ICON_SIZE); + window_bitmap = *get_bmp_bundle("topbar_win", TOPBAR_ICON_SIZE); if (m_frame->IsMaximized()) { maximize_btn = this->AddTool(wxID_MAXIMIZE_FRAME, "", window_bitmap); } @@ -288,7 +295,7 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSpacer(FromDIP(4)); - wxBitmap close_bitmap = create_scaled_bitmap("topbar_close", nullptr, TOPBAR_ICON_SIZE); + wxBitmapBundle close_bitmap = *get_bmp_bundle("topbar_close", TOPBAR_ICON_SIZE); wxAuiToolBarItem* close_btn = this->AddTool(wxID_CLOSE_FRAME, "", close_bitmap); Realize(); @@ -464,49 +471,51 @@ void BBLTopbar::Rescale() { int em = em_unit(this); wxAuiToolBarItem* item; + m_font.Scale(m_frame->GetDPIScaleFactor()); + /*item = this->FindTool(ID_LOGO); - item->SetBitmap(create_scaled_bitmap("topbar_logo", nullptr, TOPBAR_ICON_SIZE));*/ + item->SetBitmap(*get_bmp_bundle("topbar_logo", TOPBAR_ICON_SIZE));*/ item = this->FindTool(ID_TOP_FILE_MENU); - item->SetBitmap(create_scaled_bitmap("topbar_file", this, TOPBAR_ICON_SIZE)); + item->SetBitmap(*get_bmp_bundle("topbar_file", TOPBAR_ICON_SIZE)); item = this->FindTool(ID_TOP_DROPDOWN_MENU); - item->SetBitmap(create_scaled_bitmap("topbar_dropdown", this, TOPBAR_ICON_SIZE)); + item->SetBitmap(*get_bmp_bundle("topbar_dropdown", TOPBAR_ICON_SIZE)); //item = this->FindTool(wxID_OPEN); - //item->SetBitmap(create_scaled_bitmap("topbar_open", nullptr, TOPBAR_ICON_SIZE)); + //item->SetBitmap(*get_bmp_bundle("topbar_open", nullptr, TOPBAR_ICON_SIZE)); item = this->FindTool(wxID_SAVE); - item->SetBitmap(create_scaled_bitmap("topbar_save", this, TOPBAR_ICON_SIZE)); + item->SetBitmap(*get_bmp_bundle("topbar_save", TOPBAR_ICON_SIZE)); item = this->FindTool(wxID_UNDO); - item->SetBitmap(create_scaled_bitmap("topbar_undo", this, TOPBAR_ICON_SIZE)); - item->SetDisabledBitmap(create_scaled_bitmap("topbar_undo_inactive", nullptr, TOPBAR_ICON_SIZE)); + item->SetBitmap(*get_bmp_bundle("topbar_undo", TOPBAR_ICON_SIZE)); + item->SetDisabledBitmap(*get_bmp_bundle("topbar_undo_inactive", TOPBAR_ICON_SIZE)); item = this->FindTool(wxID_REDO); - item->SetBitmap(create_scaled_bitmap("topbar_redo", this, TOPBAR_ICON_SIZE)); - item->SetDisabledBitmap(create_scaled_bitmap("topbar_redo_inactive", nullptr, TOPBAR_ICON_SIZE)); + item->SetBitmap(*get_bmp_bundle("topbar_redo", TOPBAR_ICON_SIZE)); + item->SetDisabledBitmap(*get_bmp_bundle("topbar_redo_inactive", TOPBAR_ICON_SIZE)); item = this->FindTool(ID_CALIB); - item->SetBitmap(create_scaled_bitmap("calib_sf", nullptr, TOPBAR_ICON_SIZE)); - item->SetDisabledBitmap(create_scaled_bitmap("calib_sf_inactive", nullptr, TOPBAR_ICON_SIZE)); + item->SetBitmap(*get_bmp_bundle("calib_sf", TOPBAR_ICON_SIZE)); + item->SetDisabledBitmap(*get_bmp_bundle("calib_sf_inactive", TOPBAR_ICON_SIZE)); item = this->FindTool(ID_TITLE); /*item = this->FindTool(ID_PUBLISH); - item->SetBitmap(create_scaled_bitmap("topbar_publish", this, TOPBAR_ICON_SIZE)); - item->SetDisabledBitmap(create_scaled_bitmap("topbar_publish_disable", nullptr, TOPBAR_ICON_SIZE));*/ + item->SetBitmap(*get_bmp_bundle("topbar_publish", TOPBAR_ICON_SIZE)); + item->SetDisabledBitmap(*get_bmp_bundle("topbar_publish_disable", TOPBAR_ICON_SIZE));*/ /*item = this->FindTool(ID_MODEL_STORE); - item->SetBitmap(create_scaled_bitmap("topbar_store", this, TOPBAR_ICON_SIZE)); + item->SetBitmap(*get_bmp_bundle("topbar_store", TOPBAR_ICON_SIZE)); */ item = this->FindTool(wxID_ICONIZE_FRAME); - item->SetBitmap(create_scaled_bitmap("topbar_min", this, TOPBAR_ICON_SIZE)); + item->SetBitmap(*get_bmp_bundle("topbar_min", TOPBAR_ICON_SIZE)); item = this->FindTool(wxID_MAXIMIZE_FRAME); - maximize_bitmap = create_scaled_bitmap("topbar_max", this, TOPBAR_ICON_SIZE); - window_bitmap = create_scaled_bitmap("topbar_win", this, TOPBAR_ICON_SIZE); + maximize_bitmap = *get_bmp_bundle("topbar_max", TOPBAR_ICON_SIZE); + window_bitmap = *get_bmp_bundle("topbar_win", TOPBAR_ICON_SIZE); if (m_frame->IsMaximized()) { item->SetBitmap(window_bitmap); } @@ -515,7 +524,7 @@ void BBLTopbar::Rescale() { } item = this->FindTool(wxID_CLOSE_FRAME); - item->SetBitmap(create_scaled_bitmap("topbar_close", this, TOPBAR_ICON_SIZE)); + item->SetBitmap(*get_bmp_bundle("topbar_close", TOPBAR_ICON_SIZE)); Realize(); } diff --git a/src/slic3r/GUI/BBLTopbar.hpp b/src/slic3r/GUI/BBLTopbar.hpp index 78820813a7..3311c0011a 100644 --- a/src/slic3r/GUI/BBLTopbar.hpp +++ b/src/slic3r/GUI/BBLTopbar.hpp @@ -75,11 +75,11 @@ private: wxAuiToolBarItem* m_calib_item; wxAuiToolBarItem* maximize_btn; - wxBitmap m_publish_bitmap; - wxBitmap m_publish_disable_bitmap; + wxBitmapBundle m_publish_bitmap; + wxBitmapBundle m_publish_disable_bitmap; - wxBitmap maximize_bitmap; - wxBitmap window_bitmap; + wxBitmapBundle maximize_bitmap; + wxBitmapBundle window_bitmap; int m_toolbar_h; bool m_skip_popup_file_menu; diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 6a92a1c30c..33f307cfe2 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -913,15 +913,15 @@ void StatusBasePanel::init_bitmaps() m_bitmap_extruder_empty_unload = *cache.load_png("monitor_extruder_empty_unload", FromDIP(28), FromDIP(70), false, false); m_bitmap_extruder_filled_unload = *cache.load_png("monitor_extruder_filled_unload", FromDIP(28), FromDIP(70), false, false); - m_bitmap_sdcard_state_abnormal = ScalableBitmap(this, wxGetApp().dark_mode() ? "sdcard_state_abnormal_dark" : "sdcard_state_abnormal", 20); - m_bitmap_sdcard_state_normal = ScalableBitmap(this, wxGetApp().dark_mode() ? "sdcard_state_normal_dark" : "sdcard_state_normal", 20); - m_bitmap_sdcard_state_no = ScalableBitmap(this, wxGetApp().dark_mode() ? "sdcard_state_no_dark" : "sdcard_state_no", 20); - m_bitmap_recording_on = ScalableBitmap(this, wxGetApp().dark_mode() ? "monitor_recording_on_dark" : "monitor_recording_on", 20); - m_bitmap_recording_off = ScalableBitmap(this, wxGetApp().dark_mode() ? "monitor_recording_off_dark" : "monitor_recording_off", 20); - m_bitmap_timelapse_on = ScalableBitmap(this, wxGetApp().dark_mode() ? "monitor_timelapse_on_dark" : "monitor_timelapse_on", 20); - m_bitmap_timelapse_off = ScalableBitmap(this, wxGetApp().dark_mode() ? "monitor_timelapse_off_dark" : "monitor_timelapse_off", 20); - m_bitmap_vcamera_on = ScalableBitmap(this, wxGetApp().dark_mode() ? "monitor_vcamera_on_dark" : "monitor_vcamera_on", 20); - m_bitmap_vcamera_off = ScalableBitmap(this, wxGetApp().dark_mode() ? "monitor_vcamera_off_dark" : "monitor_vcamera_off", 20); + m_bitmap_sdcard_state_abnormal = ScalableBitmap(this, wxGetApp().dark_mode() ? "sdcard_state_abnormal_dark" : "sdcard_state_abnormal",{38, 20}); + m_bitmap_sdcard_state_normal = ScalableBitmap(this, wxGetApp().dark_mode() ? "sdcard_state_normal_dark" : "sdcard_state_normal", {38, 20}); + m_bitmap_sdcard_state_no = ScalableBitmap(this, wxGetApp().dark_mode() ? "sdcard_state_no_dark" : "sdcard_state_no", {38, 20}); + m_bitmap_recording_on = ScalableBitmap(this, wxGetApp().dark_mode() ? "monitor_recording_on_dark" : "monitor_recording_on", {38, 20}); + m_bitmap_recording_off = ScalableBitmap(this, wxGetApp().dark_mode() ? "monitor_recording_off_dark" : "monitor_recording_off", {38, 20}); + m_bitmap_timelapse_on = ScalableBitmap(this, wxGetApp().dark_mode() ? "monitor_timelapse_on_dark" : "monitor_timelapse_on", {38, 20}); + m_bitmap_timelapse_off = ScalableBitmap(this, wxGetApp().dark_mode() ? "monitor_timelapse_off_dark" : "monitor_timelapse_off", {38, 20}); + m_bitmap_vcamera_on = ScalableBitmap(this, wxGetApp().dark_mode() ? "monitor_vcamera_on_dark" : "monitor_vcamera_on", {38, 20}); + m_bitmap_vcamera_off = ScalableBitmap(this, wxGetApp().dark_mode() ? "monitor_vcamera_off_dark" : "monitor_vcamera_off", {38, 20}); } @@ -4001,15 +4001,15 @@ void StatusPanel::rescale_camera_icons() m_setting_button->msw_rescale(); - m_bitmap_sdcard_state_abnormal = ScalableBitmap(this, wxGetApp().dark_mode()?"sdcard_state_abnormal_dark":"sdcard_state_abnormal", 20); - m_bitmap_sdcard_state_normal = ScalableBitmap(this, wxGetApp().dark_mode()?"sdcard_state_normal_dark":"sdcard_state_normal", 20); - m_bitmap_sdcard_state_no = ScalableBitmap(this, wxGetApp().dark_mode()?"sdcard_state_no_dark":"sdcard_state_no", 20); - m_bitmap_recording_on = ScalableBitmap(this, wxGetApp().dark_mode()?"monitor_recording_on_dark":"monitor_recording_on", 20); - m_bitmap_recording_off = ScalableBitmap(this, wxGetApp().dark_mode()?"monitor_recording_off_dark":"monitor_recording_off", 20); - m_bitmap_timelapse_on = ScalableBitmap(this, wxGetApp().dark_mode()?"monitor_timelapse_on_dark":"monitor_timelapse_on", 20); - m_bitmap_timelapse_off = ScalableBitmap(this, wxGetApp().dark_mode()?"monitor_timelapse_off_dark":"monitor_timelapse_off", 20); - m_bitmap_vcamera_on = ScalableBitmap(this, wxGetApp().dark_mode()?"monitor_vcamera_on_dark":"monitor_vcamera_on", 20); - m_bitmap_vcamera_off = ScalableBitmap(this, wxGetApp().dark_mode()?"monitor_vcamera_off_dark":"monitor_vcamera_off", 20); + m_bitmap_sdcard_state_abnormal = ScalableBitmap(this, wxGetApp().dark_mode()?"sdcard_state_abnormal_dark":"sdcard_state_abnormal", {38, 20}); + m_bitmap_sdcard_state_normal = ScalableBitmap(this, wxGetApp().dark_mode()?"sdcard_state_normal_dark":"sdcard_state_normal", {38, 20}); + m_bitmap_sdcard_state_no = ScalableBitmap(this, wxGetApp().dark_mode()?"sdcard_state_no_dark":"sdcard_state_no", {38, 20}); + m_bitmap_recording_on = ScalableBitmap(this, wxGetApp().dark_mode()?"monitor_recording_on_dark":"monitor_recording_on", {38, 20}); + m_bitmap_recording_off = ScalableBitmap(this, wxGetApp().dark_mode()?"monitor_recording_off_dark":"monitor_recording_off", {38, 20}); + m_bitmap_timelapse_on = ScalableBitmap(this, wxGetApp().dark_mode()?"monitor_timelapse_on_dark":"monitor_timelapse_on", {38, 20}); + m_bitmap_timelapse_off = ScalableBitmap(this, wxGetApp().dark_mode()?"monitor_timelapse_off_dark":"monitor_timelapse_off", {38, 20}); + m_bitmap_vcamera_on = ScalableBitmap(this, wxGetApp().dark_mode()?"monitor_vcamera_on_dark":"monitor_vcamera_on", {38, 20}); + m_bitmap_vcamera_off = ScalableBitmap(this, wxGetApp().dark_mode()?"monitor_vcamera_off_dark":"monitor_vcamera_off", {38, 20}); if (m_media_play_ctrl->IsStreaming()) { m_bitmap_vcamera_img->SetBitmap(m_bitmap_vcamera_on.bmp()); diff --git a/src/slic3r/GUI/Widgets/SwitchButton.cpp b/src/slic3r/GUI/Widgets/SwitchButton.cpp index 67aa424578..c44f48812a 100644 --- a/src/slic3r/GUI/Widgets/SwitchButton.cpp +++ b/src/slic3r/GUI/Widgets/SwitchButton.cpp @@ -9,8 +9,8 @@ SwitchButton::SwitchButton(wxWindow* parent, wxWindowID id) : wxBitmapToggleButton(parent, id, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE | wxBU_EXACTFIT) - , m_on(this, "toggle_on", 16, false, false, true) - , m_off(this, "toggle_off", 16, false, false, true) + , m_on(this, "toggle_on", {28, 16}) + , m_off(this, "toggle_off", {28, 16}) , text_color(std::pair{0xfffffe, (int) StateColor::Checked}, std::pair{0x6B6B6B, (int) StateColor::Normal}) , track_color(0xD9D9D9) , thumb_color(std::pair{0x009688, (int) StateColor::Checked}, std::pair{0xD9D9D9, (int) StateColor::Normal}) @@ -101,7 +101,8 @@ void SwitchButton::Rescale() for (int i = 0; i < 2; ++i) { wxMemoryDC memdc(&dc); #ifdef __WXMSW__ - wxBitmap bmp(trackSize.x, trackSize.y); + wxBitmap bmp; + bmp.CreateWithDIPSize(ToDIP(trackSize), GetDPIScaleFactor()); memdc.SelectObject(bmp); memdc.SetBackground(wxBrush(GetBackgroundColour())); memdc.Clear(); @@ -145,4 +146,5 @@ void SwitchButton::Rescale() void SwitchButton::update() { SetBitmap((GetValue() ? m_on : m_off).bmp()); + } diff --git a/src/slic3r/GUI/Widgets/TextInput.cpp b/src/slic3r/GUI/Widgets/TextInput.cpp index 2291010912..428a5dcea6 100644 --- a/src/slic3r/GUI/Widgets/TextInput.cpp +++ b/src/slic3r/GUI/Widgets/TextInput.cpp @@ -76,7 +76,7 @@ void TextInput::Create(wxWindow * parent, }); text_ctrl->Bind(wxEVT_RIGHT_DOWN, [this](auto &e) {}); // disable context menu if (!icon.IsEmpty()) { - this->icon = ScalableBitmap(this, icon.ToStdString(), 16); + this->drop_down_icon = ScalableBitmap(this, icon.ToStdString(), 16); } messureSize(); } @@ -96,9 +96,7 @@ void TextInput::SetLabel(const wxString& label) void TextInput::SetIcon(const wxBitmapBundle &icon_in) { - this->icon = ScalableBitmap(); - this->icon.bmp() = icon_in; - Rescale(); + icon = icon_in; } void TextInput::SetLabelColor(StateColor const &color) @@ -115,8 +113,9 @@ void TextInput::SetTextColor(StateColor const& color) void TextInput::Rescale() { - if (!this->icon.name().empty()) - this->icon.sys_color_changed(); + if (text_ctrl) + text_ctrl->SetInitialSize(text_ctrl->GetBestSize()); + messureSize(); Refresh(); } @@ -152,16 +151,22 @@ void TextInput::DoSetSize(int x, int y, int width, int height, int sizeFlags) if (sizeFlags & wxSIZE_USE_EXISTING) return; wxSize size = GetSize(); wxPoint textPos = {5, 0}; - if (this->icon.bmp().IsOk()) { - wxSize szIcon = this->icon.GetSize(); + if (this->icon.IsOk()) { + wxSize szIcon = get_preferred_size(icon, m_parent); textPos.x += szIcon.x; } + wxSize dd_icon_size = wxSize(0,0); + if (this->drop_down_icon.bmp().IsOk()) + dd_icon_size = this->drop_down_icon.GetSize(); + bool align_right = GetWindowStyle() & wxRIGHT; if (align_right) textPos.x += labelSize.x; if (text_ctrl) { wxSize textSize = text_ctrl->GetSize(); - textSize.x = size.x - textPos.x - labelSize.x - 10; + wxClientDC dc(this); + const int r_shift = int((dd_icon_size.x == 0 ? 3. : 2.) * dc.GetContentScaleFactor()); + textSize.x = size.x - textPos.x - labelSize.x - dd_icon_size.x - r_shift; text_ctrl->SetSize(textSize); text_ctrl->SetPosition({textPos.x, (size.y - textSize.y) / 2}); } @@ -193,12 +198,26 @@ void TextInput::render(wxDC& dc) bool align_right = GetWindowStyle() & wxRIGHT; // start draw wxPoint pt = {5, 0}; - if (icon.bmp().IsOk()) { - wxSize szIcon = get_preferred_size(icon.bmp(), m_parent); + if (icon.IsOk()) { + wxSize szIcon = get_preferred_size(icon, m_parent); pt.y = (size.y - szIcon.y) / 2; - dc.DrawBitmap(icon.get_bitmap(), pt); +#ifdef __WXGTK3__ + dc.DrawBitmap(icon.GetBitmap(szIcon), pt); +#else + dc.DrawBitmap(icon.GetBitmapFor(m_parent), pt); +#endif pt.x += szIcon.x + 0; } + + // drop_down_icon draw + wxPoint pt_r = {size.x, 0}; + if (drop_down_icon.bmp().IsOk()) { + wxSize szIcon = drop_down_icon.GetSize(); + pt_r.x -= szIcon.x + 2; + pt_r.y = (size.y - szIcon.y) / 2; + dc.DrawBitmap(drop_down_icon.get_bitmap(), pt_r); + } + auto text = wxWindow::GetLabel(); if (!text.IsEmpty()) { wxSize textSize = text_ctrl->GetSize(); diff --git a/src/slic3r/GUI/Widgets/TextInput.hpp b/src/slic3r/GUI/Widgets/TextInput.hpp index fdd5bbf528..4a90bb0605 100644 --- a/src/slic3r/GUI/Widgets/TextInput.hpp +++ b/src/slic3r/GUI/Widgets/TextInput.hpp @@ -8,10 +8,11 @@ class TextInput : public wxNavigationEnabled { wxSize labelSize; - ScalableBitmap icon; + wxBitmapBundle icon; + ScalableBitmap drop_down_icon; StateColor label_color; StateColor text_color; - wxTextCtrl * text_ctrl; + wxTextCtrl* text_ctrl{nullptr}; static const int TextInputWidth = 200; static const int TextInputHeight = 50; diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index dc9bf65e17..be95f09032 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -413,17 +413,26 @@ static int scale() } #endif // __WXGTK2__ -wxBitmapBundle* get_bmp_bundle(const std::string& bmp_name_in, int px_cnt/* = 16*/) +wxBitmapBundle* get_bmp_bundle(const std::string& bmp_name_in, int width/* = 16*/, int height/* = -1*/) { +#ifdef __WXGTK2__ + width *= scale(); + if (height > 0) + height *= scale(); +#endif // __WXGTK2__ + static Slic3r::GUI::BitmapCache cache; std::string bmp_name = bmp_name_in; boost::replace_last(bmp_name, ".png", ""); + if (height < 0) + height = width; + // Try loading an SVG first, then PNG if SVG is not found: - wxBitmapBundle* bmp = cache.from_svg(bmp_name, px_cnt, px_cnt, Slic3r::GUI::wxGetApp().dark_mode()); + wxBitmapBundle* bmp = cache.from_svg(bmp_name, width, height, Slic3r::GUI::wxGetApp().dark_mode()); if (bmp == nullptr) { - bmp = cache.from_png(bmp_name, px_cnt, px_cnt); + bmp = cache.from_png(bmp_name, width, height); if (!bmp) // Neither SVG nor PNG has been found, raise error throw Slic3r::RuntimeError("Could not load bitmap: " + bmp_name); @@ -887,7 +896,7 @@ ScalableBitmap::ScalableBitmap( wxWindow *parent, const bool resize/* = false*/, const bool use_legacy_bmp/* = false*/): m_parent(parent), m_icon_name(icon_name), m_legacy_bmp(use_legacy_bmp), - m_px_cnt(px_cnt), m_grayscale(grayscale), m_resize(resize) // BBS: support resize by fill border + m_size({px_cnt, px_cnt}), m_grayscale(grayscale), m_resize(resize) // BBS: support resize by fill border { // Orca: there is currently an issue causing the advanced SwitchButton to not scale properly // when using get_bmp_bundle. This allows for the older method of getting a scaled bitmap to be @@ -895,8 +904,8 @@ ScalableBitmap::ScalableBitmap( wxWindow *parent, if (m_legacy_bmp) { m_bmp = create_scaled_bitmap(icon_name, parent, px_cnt, m_grayscale, std::string(), false, resize); if (px_cnt == 0) { - m_px_cnt = GetHeight(); // scale - unsigned int height = (unsigned int) (parent->FromDIP(m_px_cnt) + 0.5f); + m_size.x = m_size.y = GetHeight(); // scale + unsigned int height = (unsigned int) (parent->FromDIP(px_cnt) + 0.5f); if (height != GetHeight()) sys_color_changed(); } @@ -905,14 +914,24 @@ ScalableBitmap::ScalableBitmap( wxWindow *parent, } } +ScalableBitmap::ScalableBitmap( wxWindow *parent, + const std::string& icon_name, + const wxSize size, + const bool grayscale/* = false*/, + const bool resize/* = false*/): + m_parent(parent), m_icon_name(icon_name), + m_size(size), m_grayscale(grayscale), m_resize(resize) // BBS: support resize by fill border +{ + m_bmp = *get_bmp_bundle(icon_name, size.x, size.y); +} void ScalableBitmap::sys_color_changed() { if (m_legacy_bmp) { // BBS: support resize by fill border - m_bmp = create_scaled_bitmap(m_icon_name, m_parent, m_px_cnt, m_grayscale, std::string(), false, m_resize); + m_bmp = create_scaled_bitmap(m_icon_name, m_parent, m_size.x, m_grayscale, std::string(), false, m_resize); } else - m_bmp = *get_bmp_bundle(m_icon_name, m_px_cnt); + m_bmp = *get_bmp_bundle(m_icon_name, m_size.x, m_size.y); } // ---------------------------------------------------------------------------- diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index b2e2eebc86..d45eea8c49 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -55,7 +55,7 @@ void msw_buttons_rescale(wxDialog* dlg, const int em_unit, const std::vector< int em_unit(wxWindow* win); int mode_icon_px_size(); -wxBitmapBundle* get_bmp_bundle(const std::string& bmp_name, int px_cnt = 16); +wxBitmapBundle* get_bmp_bundle(const std::string& bmp_name, int width = 16, int height = -1); wxBitmapBundle* get_empty_bmp_bundle(int width, int height); wxBitmapBundle* get_solid_bmp_bundle(int width, int height, const std::string& color); @@ -169,8 +169,13 @@ public: const std::string& icon_name = "", const int px_cnt = 16, const bool grayscale = false, - const bool resize = false, // BBS: support resize by fill border - const bool use_legacy_bmp = false); + const bool resize = false, + const bool use_legacy_bmp = true); + ScalableBitmap( wxWindow *parent, + const std::string& icon_name, + const wxSize size, + const bool grayscale = false, + const bool resize = false); ~ScalableBitmap() {} @@ -183,7 +188,7 @@ public: wxBitmap get_bitmap() const { return m_bmp.GetBitmapFor(m_parent); } wxWindow* parent() const { return m_parent;} const std::string& name() const{ return m_icon_name; } - int px_cnt() const { return m_px_cnt; } + int px_cnt() const { return m_size.x; } wxSize GetSize() const { #ifdef __WIN32__ @@ -199,7 +204,7 @@ private: wxWindow* m_parent{ nullptr }; wxBitmapBundle m_bmp = wxBitmapBundle(); std::string m_icon_name = ""; - int m_px_cnt {16}; + wxSize m_size {16, 16}; bool m_grayscale{ false }; bool m_resize{ false }; bool m_legacy_bmp{ false }; From e5bf702a3a9ac5b228cf54f9eb775dfabc20c2ad Mon Sep 17 00:00:00 2001 From: Carlos Caruncho Date: Thu, 21 Dec 2023 09:31:23 +0100 Subject: [PATCH 08/66] Update Spanish translation (#3212) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Revert "Merge remote-tracking branch 'upstream/main' into spanish_translation" This reverts commit 694a900845c56ea364cf21aa2a0f65a98bb68539, reversing changes made to 4f53ce4f88a435d2d0305743f42329730406a48d. * Revert "Update OrcaSlicer_es.po" This reverts commit 4f53ce4f88a435d2d0305743f42329730406a48d. * Revert "Revert "Update OrcaSlicer_es.po"" This reverts commit 53bd15617c81dabd6180875ced03826e9c08a972. * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Revert "Update OrcaSlicer_es.po" This reverts commit b21aad079fd6fde7fbfa3dcfbe214d1054c569f1. * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_en.po * Update OrcaSlicer_es.po * Traduccion de OrcaSlicer al español * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po --------- Co-authored-by: SoftFever --- localization/i18n/es/OrcaSlicer_es.po | 6185 +++++++------------------ 1 file changed, 1606 insertions(+), 4579 deletions(-) diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index c16143b26a..e615537d45 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -102,19 +102,14 @@ msgid "Support Generated" msgstr "Soportes Generados" msgid "Gizmo-Place on Face" -msgstr "" +msgstr "Situación-Gizmo enfrente" msgid "Lay on face" msgstr "Tumbar boca abajo" #, boost-format -msgid "" -"Filament count exceeds the maximum number that painting tool supports. only " -"the first %1% filaments will be available in painting tool." -msgstr "" -"El recuento de filamentos supera el número máximo que admite la herramienta " -"de pintura. Sólo los primeros %1% de filamentos estarán disponibles en la " -"herramienta de pintura." +msgid "Filament count exceeds the maximum number that painting tool supports. only the first %1% filaments will be available in painting tool." +msgstr "El recuento de filamentos supera el número máximo que admite la herramienta de pintura. Sólo los primeros %1% de filamentos estarán disponibles en la herramienta de pintura." msgid "Color Painting" msgstr "Pintura en Color" @@ -153,7 +148,7 @@ msgid "Height range" msgstr "Rango de altura" msgid "Alt + Shift + Enter" -msgstr "" +msgstr "Alt + Shift + Intro" msgid "Toggle Wireframe" msgstr "Alternar Malla Alámbrica" @@ -184,13 +179,13 @@ msgid "Move" msgstr "Mover" msgid "Gizmo-Move" -msgstr "" +msgstr "Movimiento-Gizmo" msgid "Rotate" msgstr "Rotar" msgid "Gizmo-Rotate" -msgstr "" +msgstr "Rotación-Gizmo" msgid "Optimize orientation" msgstr "Optimizar orientación" @@ -202,11 +197,10 @@ msgid "Scale" msgstr "Escalar" msgid "Gizmo-Scale" -msgstr "" +msgstr "Reescalar-Gizmo" msgid "Error: Please close all toolbar menus first" -msgstr "" -"Error: Por favor, cierre primero todos los menús de la barra de herramientas" +msgstr "Error: Por favor, cierre primero todos los menús de la barra de herramientas" msgid "in" msgstr "pulg" @@ -432,12 +426,8 @@ msgid "Decimate ratio" msgstr "Relación de decimación" #, boost-format -msgid "" -"Processing model '%1%' with more than 1M triangles could be slow. It is " -"highly recommended to simplify the model." -msgstr "" -"El procesamiento del modelo '%1%' con más de 1M de triángulos podría ser " -"lento. Se recomienda encarecidamente simplificar el modelo." +msgid "Processing model '%1%' with more than 1M triangles could be slow. It is highly recommended to simplify the model." +msgstr "El procesamiento del modelo '%1%' con más de 1M de triángulos podría ser lento. Se recomienda encarecidamente simplificar el modelo." msgid "Simplify model" msgstr "Simplificar el modelo" @@ -446,9 +436,7 @@ msgid "Simplify" msgstr "Simplificar" msgid "Simplification is currently only allowed when a single part is selected" -msgstr "" -"La simplificación por el momento sólo se permite cuando se selecciona una " -"sola pieza" +msgstr "La simplificación por el momento sólo se permite cuando se selecciona una sola pieza" msgid "Error" msgstr "Error" @@ -569,9 +557,7 @@ msgid "%1% was replaced with %2%" msgstr "%1% fue reemplazado por %2%" msgid "The configuration may be generated by a newer version of OrcaSlicer." -msgstr "" -"La configuración puede ser generada por una versión más reciente de " -"OrcaSlicer." +msgstr "La configuración puede ser generada por una versión más reciente de OrcaSlicer." msgid "Some values have been replaced. Please check them:" msgstr "Algunos valores han sido sustituidos. Por favor, compruébalos:" @@ -586,38 +572,25 @@ msgid "Machine" msgstr "Máquina" msgid "Configuration package was loaded, but some values were not recognized." -msgstr "" -"El paquete de configuración fue cargado, pero algunos valores no fueron " -"reconocidos." +msgstr "El paquete de configuración fue cargado, pero algunos valores no fueron reconocidos." #, boost-format -msgid "" -"Configuration file \"%1%\" was loaded, but some values were not recognized." -msgstr "" -"Se ha cargado el archivo de configuración \"%1%\", pero no se han reconocido " -"algunos valores." +msgid "Configuration file \"%1%\" was loaded, but some values were not recognized." +msgstr "Se ha cargado el archivo de configuración \"%1%\", pero no se han reconocido algunos valores." msgid "V" msgstr "V" -msgid "" -"OrcaSlicer will terminate because of running out of memory.It may be a bug. " -"It will be appreciated if you report the issue to our team." -msgstr "" -"OrcaSlicer terminará porque se está quedando sin memoria. Le agradeceremos " -"que comunique el problema a nuestro equipo." +msgid "OrcaSlicer will terminate because of running out of memory.It may be a bug. It will be appreciated if you report the issue to our team." +msgstr "OrcaSlicer terminará porque se está quedando sin memoria. Le agradeceremos que comunique el problema a nuestro equipo." # msgid "OrcaSlicer will terminate because of running out of memory.It may be a bug. It will be appreciated if you report the issue to our team." # msgstr "OrcaSlicer se cerrará porque se está quedando sin memoria. Le agradeceremos que informe de ello a nuestro equipo." msgid "Fatal error" msgstr "Error fatal" -msgid "" -"OrcaSlicer will terminate because of a localization error. It will be " -"appreciated if you report the specific scenario this issue happened." -msgstr "" -"OrcaSlicer terminará debido a un error de posición. Le agradeceremos que nos " -"informe del escenario específico en el que se ha producido este problema." +msgid "OrcaSlicer will terminate because of a localization error. It will be appreciated if you report the specific scenario this issue happened." +msgstr "OrcaSlicer terminará debido a un error de posición. Le agradeceremos que nos informe del escenario específico en el que se ha producido este problema." # msgid "OrcaSlicer will terminate because of a localization error. It will be appreciated if you report the specific scenario this issue happened." # msgstr "OrcaSlicer terminará debido a un error de localización. Le agradeceríamos que nos informara del escenario específico en el que se ha producido este problema" @@ -644,12 +617,10 @@ msgid "Connect %s failed! [SN:%s, code=%s]" msgstr "¡Conexión %s fallida! [SN:%s, code=%s]" msgid "" -"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain " -"features.\n" +"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain features.\n" "Click Yes to install it now." msgstr "" -"Orca Slicer requiere el tiempo de ejecución de Microsoft WebView2 para " -"operar ciertas características.\n" +"Orca Slicer requiere el tiempo de ejecución de Microsoft WebView2 para operar ciertas características.\n" "Haga clic en Sí para instalarlo ahora." msgid "WebView2 Runtime" @@ -671,8 +642,7 @@ msgstr "Cargando configuración" #, c-format, boost-format msgid "Click to download new version in default browser: %s" -msgstr "" -"Haga clic para descargar la nueva versión en el navegador por defecto: %s" +msgstr "Haga clic para descargar la nueva versión en el navegador por defecto: %s" msgid "The Orca Slicer needs an upgrade" msgstr "Orca Slicer necesita una actualización" @@ -686,14 +656,11 @@ msgstr "Información" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" -"Please note, application settings will be lost, but printer profiles will " -"not be affected." +"Please note, application settings will be lost, but printer profiles will not be affected." msgstr "" -"El archivo de configuración de OrcaSlicer puede estar dañado y no puede ser " -"analizado.\n" +"El archivo de configuración de OrcaSlicer puede estar dañado y no puede ser analizado.\n" "OrcaSlicer ha intentado recrear el archivo de configuración.\n" -"Tenga en cuenta que se perderán los ajustes de la aplicación, pero los " -"perfiles de impresora no se verán afectados." +"Tenga en cuenta que se perderán los ajustes de la aplicación, pero los perfiles de impresora no se verán afectados." msgid "Rebuild" msgstr "Reconstruir" @@ -708,7 +675,7 @@ msgid "Choose one file (3mf):" msgstr "Elija un archivo (3mf):" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" -msgstr "Elige uno o más archivos (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "Escoja uno o más archivos (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Elige uno o más archivos (3mf/step/stl/svg/obj/amf):" @@ -719,41 +686,29 @@ msgstr "Elegir un archivo (gcode/3mf):" msgid "Some presets are modified." msgstr "Algunos preajustes se modificaron." -msgid "" -"You can keep the modifield presets to the new project, discard or save " -"changes as new presets." -msgstr "" -"Puede mantener los preajustes modificados en el nuevo proyecto, descartar o " -"guardar los cambios como nuevos preajustes." +msgid "You can keep the modifield presets to the new project, discard or save changes as new presets." +msgstr "Puede mantener los preajustes modificados en el nuevo proyecto, descartar o guardar los cambios como nuevos preajustes." msgid "User logged out" msgstr "Usuario desconectado" msgid "new or open project file is not allowed during the slicing process!" -msgstr "" -"¡crear o abrir un archivo de proyecto nuevo no está permitido durante el " -"proceso de laminado!" +msgstr "¡crear o abrir un archivo de proyecto nuevo no está permitido durante el proceso de laminado!" msgid "Open Project" msgstr "Abrir proyecto" -msgid "" -"The version of Orca Slicer is too low and needs to be updated to the latest " -"version before it can be used normally" -msgstr "" -"La versión de Orca Slicer es una versión demasiado antigua y necesita ser " -"actualizada a la última versión antes de poder utilizarla con normalidad" +msgid "The version of Orca Slicer is too low and needs to be updated to the latest version before it can be used normally" +msgstr "La versión de Orca Slicer es una versión demasiado antigua y necesita ser actualizada a la última versión antes de poder utilizarla con normalidad" msgid "Privacy Policy Update" msgstr "Actualización de política de privacidad" -msgid "" -"The number of user presets cached in the cloud has exceeded the upper limit, " -"newly created user presets can only be used locally." -msgstr "" +msgid "The number of user presets cached in the cloud has exceeded the upper limit, newly created user presets can only be used locally." +msgstr "El número de preajustes de usuario almacenados en caché en la nube ha superado el límite superior, los preajustes de usuario recién creados sólo pueden utilizarse localmente." msgid "Sync user presets" -msgstr "" +msgstr "Sincronizar preajustes de usuario" msgid "Loading" msgstr "Cargando" @@ -880,22 +835,22 @@ msgid "Add support enforcer" msgstr "Añadir refuerzo de soportes" msgid "Add text" -msgstr "" +msgstr "Añadir texto" msgid "Add negative text" -msgstr "" +msgstr "Añadir texto negativo" msgid "Add text modifier" -msgstr "" +msgstr "Añadir modificador de texto" msgid "Add SVG part" -msgstr "" +msgstr "Añadir parte SVG" msgid "Add negative SVG" -msgstr "" +msgstr "Añadir SVG negativo" msgid "Add SVG modifier" -msgstr "" +msgstr "Añadir modificador SVG" msgid "Select settings" msgstr "Seleccione los ajustes" @@ -937,7 +892,7 @@ msgid "Cone" msgstr "Cono" msgid "Text" -msgstr "" +msgstr "Texto" msgid "SVG" msgstr "" @@ -970,10 +925,10 @@ msgid "Fix model" msgstr "Reparar el modelo" msgid "Export as one STL" -msgstr "" +msgstr "Exportar como STL único" msgid "Export as STLs" -msgstr "" +msgstr "Exportar como STLs" msgid "Reload from disk" msgstr "Recargar desde el disco" @@ -1076,16 +1031,16 @@ msgid "Mirror object" msgstr "Objeto reflejado" msgid "Edit text" -msgstr "" +msgstr "Editar texto" msgid "Ability to change text, font, size, ..." -msgstr "" +msgstr "Habilidad para cambiar texto, fuente, tamaño, ..." msgid "Edit SVG" -msgstr "" +msgstr "Editar SVG" msgid "Change SVG source file, projection, size, ..." -msgstr "" +msgstr "Cambiar archivo fuente SVG, proyección, tamaño, ..." msgid "Invalidate cut info" msgstr "Invalidar información de corte" @@ -1118,8 +1073,7 @@ msgid "Auto orientation" msgstr "Orientación automática" msgid "Auto orient the object to improve print quality." -msgstr "" -"Orienta automáticamente el objeto para mejorar la calidad de la impresión." +msgstr "Orienta automáticamente el objeto para mejorar la calidad de la impresión." msgid "Split the selected object into mutiple objects" msgstr "Dividir el objeto seleccionado en múltiples objetos" @@ -1218,26 +1172,19 @@ msgstr[0] "%1$d contorno no moldeado" msgstr[1] "%1$d contornos no moldeados" msgid "Right click the icon to fix model object" -msgstr "" -"Haga clic con el botón derecho del ratón en el icono para reparar el objeto " -"del modelo" +msgstr "Haga clic con el botón derecho del ratón en el icono para reparar el objeto del modelo" msgid "Right button click the icon to drop the object settings" -msgstr "" -"Haga clic con el botón derecho del ratón en el icono para descartar la " -"configuración del objeto" +msgstr "Haga clic con el botón derecho del ratón en el icono para descartar la configuración del objeto" msgid "Click the icon to reset all settings of the object" msgstr "Haga clic en el icono para restablecer todos los ajustes del objeto" msgid "Right button click the icon to drop the object printable property" -msgstr "" -"Haga clic con el botón derecho en el icono para descartar la característica " -"imprimible del objeto" +msgstr "Haga clic con el botón derecho en el icono para descartar la característica imprimible del objeto" msgid "Click the icon to toggle printable property of the object" -msgstr "" -"Haga clic en el icono para alternar la característica imprimible del objeto" +msgstr "Haga clic en el icono para alternar la característica imprimible del objeto" msgid "Click the icon to edit support painting of the object" msgstr "Haga clic en el icono para editar la pintura de apoyo del objeto" @@ -1248,6 +1195,9 @@ msgstr "Haga clic en el icono para editar la pintura de color del objeto" msgid "Click the icon to shift this object to the bed" msgstr "Presionar el icono para desplazar este objeto a la cama" +msgid " search results" +msgstr "Buscar resultados" + msgid "Loading file" msgstr "Cargando archivo" @@ -1264,16 +1214,10 @@ msgid "Add Modifier" msgstr "Añadir modificador" msgid "Switch to per-object setting mode to edit modifier settings." -msgstr "" -"Cambia al modo de ajuste por objeto para editar los ajustes de los " -"modificadores." +msgstr "Cambia al modo de ajuste por objeto para editar los ajustes de los modificadores." -msgid "" -"Switch to per-object setting mode to edit process settings of selected " -"objects." -msgstr "" -"Cambiar al modo de ajuste por objeto para editar los ajustes de proceso de " -"los objetos." +msgid "Switch to per-object setting mode to edit process settings of selected objects." +msgstr "Cambiar al modo de ajuste por objeto para editar los ajustes de proceso de los objetos." msgid "Delete connector from object which is a part of cut" msgstr "Borrar conector del objeto el cual es parte del corte" @@ -1284,25 +1228,19 @@ msgstr "Borrar la parte sólida del objeto la cual es parte del corte" msgid "Delete negative volume from object which is a part of cut" msgstr "Borrar volumen negativo del objeto el cual es parte del corte" -msgid "" -"To save cut correspondence you can delete all connectors from all related " -"objects." -msgstr "" -"Para salvar la correspondencia de corte puedes borrar todos los conectores " -"de los objetos relacionados." +msgid "To save cut correspondence you can delete all connectors from all related objects." +msgstr "Para salvar la correspondencia de corte puedes borrar todos los conectores de los objetos relacionados." msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate " -"cut infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate cut infornation first." msgstr "" "La acción interrumpirá la correspondencia de corte.\n" "Después de esto la consistencia no podrá ser garantizada.\n" "\n" -"Para manipular partes sólidas o volúmenes negativos tienes que invalidar la " -"información de corte primero." +"Para manipular partes sólidas o volúmenes negativos tienes que invalidar la información de corte primero." msgid "Delete all connectors" msgstr "Borrar todos los conectores" @@ -1358,18 +1296,11 @@ msgstr "Capa" msgid "Selection conflicts" msgstr "Conflictos en la selección" -msgid "" -"If first selected item is an object, the second one should also be object." -msgstr "" -"Si el primer elemento seleccionado es un objeto, el segundo también debería " -"serlo." +msgid "If first selected item is an object, the second one should also be object." +msgstr "Si el primer elemento seleccionado es un objeto, el segundo también debería serlo." -msgid "" -"If first selected item is a part, the second one should be part in the same " -"object." -msgstr "" -"Si el primer elemento seleccionado es una pieza, el segundo debe ser una " -"pieza en el mismo objeto." +msgid "If first selected item is a part, the second one should be part in the same object." +msgstr "Si el primer elemento seleccionado es una pieza, el segundo debe ser una pieza en el mismo objeto." msgid "The type of the last solid object part is not to be changed." msgstr "El tipo de la última pieza del objeto sólido no debe cambiarse." @@ -1430,8 +1361,7 @@ msgid "Invalid numeric." msgstr "Numérico inválido." msgid "one cell can only be copied to one or multiple cells in the same column" -msgstr "" -"una celda sólo puede copiarse en una o varias celdas de la misma columna" +msgstr "una celda sólo puede copiarse en una o varias celdas de la misma columna" msgid "multiple cells copy is not supported" msgstr "no se admite la copia de múltiples celdas" @@ -1512,7 +1442,7 @@ msgid "Pause" msgstr "Pausa" msgid "Template" -msgstr "" +msgstr "Plantilla" msgid "Custom" msgstr "Personalizado" @@ -1656,9 +1586,7 @@ msgid "Calibrating AMS..." msgstr "Calibración de AMS..." msgid "A problem occured during calibration. Click to view the solution." -msgstr "" -"Se ha producido un problema durante la calibración. Haga clic para ver la " -"solución." +msgstr "Se ha producido un problema durante la calibración. Haga clic para ver la solución." msgid "Calibrate again" msgstr "Calibrar de nuevo" @@ -1685,23 +1613,19 @@ msgid "Purge old filament" msgstr "Purgar el filamento viejo" msgid "Feed Filament" -msgstr "Cargar filamento" +msgstr "Cargar Filamento" msgid "Confirm extruded" -msgstr "Confirmar extrusión" +msgstr "Confirmación de extrusión" msgid "Check filament location" -msgstr "Compruebe la ubicación del filamento" +msgstr "Probar localización de filamento" msgid "Grab new filament" msgstr "Grab new filament" -msgid "" -"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " -"load or unload filiament." -msgstr "" -"Elija una ranura AMS y pulse el botón \"Cargar\" o \"Descargar\" para cargar " -"o descargar automáticamente el filamento." +msgid "Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or unload filiament." +msgstr "Elija una ranura AMS y pulse el botón \"Cargar\" o \"Descargar\" para cargar o descargar automáticamente el filamento." msgid "Edit" msgstr "Editar" @@ -1732,29 +1656,21 @@ msgstr "Organizando" msgid "Arranging canceled." msgstr "Organización cancelada." -msgid "" -"Arranging is done but there are unpacked items. Reduce spacing and try again." -msgstr "" -"El posicionamiento está hecho, pero hay artículos sin empaquetar. Reduzca el " -"espacio y vuelva a intentarlo." +msgid "Arranging is done but there are unpacked items. Reduce spacing and try again." +msgstr "El posicionamiento está hecho, pero hay artículos sin empaquetar. Reduzca el espacio y vuelva a intentarlo." msgid "Arranging done." msgstr "Organización terminada." -msgid "" -"Arrange failed. Found some exceptions when processing object geometries." -msgstr "" -"El posicionamiento ha fallado. Se han encontrado algunas excepciones al " -"procesar las geometrías de los objetos." +msgid "Arrange failed. Found some exceptions when processing object geometries." +msgstr "El posicionamiento ha fallado. Se han encontrado algunas excepciones al procesar las geometrías de los objetos." #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single " -"bed:\n" +"Arrangement ignored the following objects which can't fit into a single bed:\n" "%s" msgstr "" -"Organizar ignoró los siguientes objetos que no pueden caber en una sola " -"bandeja:\n" +"Organizar ignoró los siguientes objetos que no pueden caber en una sola bandeja:\n" "%s" msgid "" @@ -1778,10 +1694,10 @@ msgid "Orienting" msgstr "Orientación" msgid "Orienting canceled." -msgstr "" +msgstr "Orientación cancelada." msgid "Filling" -msgstr "" +msgstr "Relleno" msgid "Bed filling canceled." msgstr "Bed filling canceled." @@ -1790,13 +1706,13 @@ msgid "Bed filling done." msgstr "Bed filling done." msgid "Searching for optimal orientation" -msgstr "" +msgstr "Buscando una orientación óptima" msgid "Orientation search canceled." -msgstr "" +msgstr "Búsqueda de orientación cancelada." msgid "Orientation found." -msgstr "" +msgstr "Orientación encontrada." msgid "Logging in" msgstr "Iniciando sesión" @@ -1817,19 +1733,13 @@ msgid "Upload task timed out. Please check the network status and try again." msgstr "Upload task timed out. Please check the network status and try again." msgid "Cloud service connection failed. Please try again." -msgstr "" -"Ha fallado la conexión con el servicio de la nube. Por favor, inténtelo de " -"nuevo." +msgstr "Ha fallado la conexión con el servicio de la nube. Por favor, inténtelo de nuevo." msgid "Print file not found. please slice again." msgstr "Print file not found; please slice again." -msgid "" -"The print file exceeds the maximum allowable size (1GB). Please simplify the " -"model and slice again." -msgstr "" -"The print file exceeds the maximum allowable size (1GB). Please simplify the " -"model and slice again." +msgid "The print file exceeds the maximum allowable size (1GB). Please simplify the model and slice again." +msgstr "The print file exceeds the maximum allowable size (1GB). Please simplify the model and slice again." msgid "Failed to send the print job. Please try again." msgstr "Fallo enviando el trabajo de impresión. Por favor inténtelo otra vez." @@ -1837,28 +1747,17 @@ msgstr "Fallo enviando el trabajo de impresión. Por favor inténtelo otra vez." msgid "Failed to upload file to ftp. Please try again." msgstr "Failed to upload file to ftp. Please try again." -msgid "" -"Check the current status of the bambu server by clicking on the link above." -msgstr "" -"Check the current status of the Bambu Lab server by clicking on the link " -"above." +msgid "Check the current status of the bambu server by clicking on the link above." +msgstr "Check the current status of the Bambu Lab server by clicking on the link above." -msgid "" -"The size of the print file is too large. Please adjust the file size and try " -"again." -msgstr "" -"The size of the print file is too large. Please adjust the file size and try " -"again." +msgid "The size of the print file is too large. Please adjust the file size and try again." +msgstr "The size of the print file is too large. Please adjust the file size and try again." msgid "Print file not found, Please slice it again and send it for printing." msgstr "Print file not found; please slice it again and send it for printing." -msgid "" -"Failed to upload print file to FTP. Please check the network status and try " -"again." -msgstr "" -"Failed to upload print file via FTP. Please check the network status and try " -"again." +msgid "Failed to upload print file to FTP. Please check the network status and try again." +msgstr "Failed to upload print file via FTP. Please check the network status and try again." msgid "Sending print job over LAN" msgstr "Enviando el trabajo de impresión a través de la LAN" @@ -1867,7 +1766,10 @@ msgid "Sending print job through cloud service" msgstr "Enviando trabajo de impresión a través del servicio en la nube" msgid "Print task sending times out." -msgstr "" +msgstr "Tarea de envío de impresión fallida." + +msgid "The printer timed out while receiving a print job. Please check if the network is functioning properly and send the print again." +msgstr "La impresora falló al recibir un trabajo de impresión. Por favor, compruebe si la red está funcionando adecuadamente y mande la impresión de nuevo." msgid "Service Unavailable" msgstr "Servicio No Disponible" @@ -1880,8 +1782,7 @@ msgstr "Enviando la configuración de impresión" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the device page in %ss" -msgstr "" -"Envío exitoso. Se saltará automaticamente a la página del dispositivo en %ss" +msgstr "Envío exitoso. Se saltará automaticamente a la página del dispositivo en %ss" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the next page in %ss" @@ -1906,12 +1807,8 @@ msgstr "Se necesita insertar una tarjeta SD antes de enviar a la impresora." msgid "Importing SLA archive" msgstr "Importando archivo SLA" -msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA " -"printer preset first before importing that SLA archive." -msgstr "" -"El SLA importado no contiene ningún preajuste. Por favor active algunos " -"preajustes de la impresora primero antes de importar ese archivo SLA." +msgid "The SLA archive doesn't contain any presets. Please activate some SLA printer preset first before importing that SLA archive." +msgstr "El SLA importado no contiene ningún preajuste. Por favor active algunos preajustes de la impresora primero antes de importar ese archivo SLA." msgid "Importing canceled." msgstr "Importación cancelada." @@ -1919,19 +1816,14 @@ msgstr "Importación cancelada." msgid "Importing done." msgstr "Importación realizada." -msgid "" -"The imported SLA archive did not contain any presets. The current SLA " -"presets were used as fallback." -msgstr "" -"El SLA importado no contiene ningún preajuste. Los preajustes de SLA " -"actuales serán usados como alternativa." +msgid "The imported SLA archive did not contain any presets. The current SLA presets were used as fallback." +msgstr "El SLA importado no contiene ningún preajuste. Los preajustes de SLA actuales serán usados como alternativa." msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "No puedes cargar un proyecto SLA con objetos multi-pieza en la cama" msgid "Please check your object list before preset changing." -msgstr "" -"Por favor comprueba tu lista de objectos antes de cambiar el preajuste." +msgstr "Por favor comprueba tu lista de objectos antes de cambiar el preajuste." msgid "Attention!" msgstr "¡Atención!" @@ -1969,24 +1861,14 @@ msgstr "Orca Slicer tiene licencia bajo " msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versión 3" -msgid "" -"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " -"by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and " -"the RepRap community" -msgstr "" -"Orca Slicer está basado en BambuStudio por Bambulab, el cual está basado en " -"PrusaSlicer por Prusa Research. PrusaSlicer está basado en Slic3r de " -"Alessandro Ranellucci y la comunidad RepRap" +msgid "Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and the RepRap community" +msgstr "Orca Slicer está basado en BambuStudio por Bambulab, el cual está basado en PrusaSlicer por Prusa Research. PrusaSlicer está basado en Slic3r de Alessandro Ranellucci y la comunidad RepRap" msgid "Libraries" msgstr "Librerías" -msgid "" -"This software uses open source components whose copyright and other " -"proprietary rights belong to their respective owners" -msgstr "" -"Este software utiliza componentes de código abierto cuyos derechos de autor " -"y otros derechos de propiedad pertenecen a sus respectivos propietarios" +msgid "This software uses open source components whose copyright and other proprietary rights belong to their respective owners" +msgstr "Este software utiliza componentes de código abierto cuyos derechos de autor y otros derechos de propiedad pertenecen a sus respectivos propietarios" #, c-format, boost-format msgid "About %s" @@ -1999,19 +1881,13 @@ msgid "OrcaSlicer is based on BambuStudio, PrusaSlicer, and SuperSlicer." msgstr "OrcaSlicer está basado en BambuStudio, PrusaSlicer, y SuperSlicer." msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." -msgstr "" -"BambuStudio está basado originalmente en PrusaSlicer por PrusaResearch." +msgstr "BambuStudio está basado originalmente en PrusaSlicer por PrusaResearch." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." -msgstr "" -"PrusaSlicer está originalmente basado en Slic3r de Alessandro Ranellucci." +msgstr "PrusaSlicer está originalmente basado en Slic3r de Alessandro Ranellucci." -msgid "" -"Slic3r was created by Alessandro Ranellucci with the help of many other " -"contributors." -msgstr "" -"Slic3r fue creado por Alessandro Ranellucci con la ayuda de muchos otros " -"contruyentes." +msgid "Slic3r was created by Alessandro Ranellucci with the help of many other contributors." +msgstr "Slic3r fue creado por Alessandro Ranellucci con la ayuda de muchos otros contruyentes." msgid "Version" msgstr "Versión" @@ -2049,8 +1925,7 @@ msgid "SN" msgstr "SN" msgid "Setting AMS slot information while printing is not supported" -msgstr "" -"Ajustes de información de ranura AMS mientras la impresión no sea soportada" +msgstr "Ajustes de información de ranura AMS mientras la impresión no sea soportada" msgid "Factors of Flow Dynamics Calibration" msgstr "Factores de Calibración de Dinámicas de Caudal" @@ -2065,9 +1940,7 @@ msgid "Factor N" msgstr "Factor N" msgid "Setting Virtual slot information while printing is not supported" -msgstr "" -"Ajuste de información de ranura Virtual mientras la impresión no sea " -"soportada" +msgstr "Ajuste de información de ranura Virtual mientras la impresión no sea soportada" msgid "Are you sure you want to clear the filament information?" msgstr "¿Estás seguro que quieres limpiar la información de filamento?" @@ -2076,10 +1949,10 @@ msgid "You need to select the material type and color first." msgstr "Necesitas seleccionar el tipo y el color del material primero." msgid "Please input a valid value (K in 0~0.3)" -msgstr "" +msgstr "Por favor, introduzca un valor válido (K en 0~0.3)" msgid "Please input a valid value (K in 0~0.3, N in 0.6~2.0)" -msgstr "" +msgstr "Por favor, introduzca un valor válido (K en 0~0.3, N en 0.6~2.0))" msgid "Other Color" msgstr "Otro color" @@ -2090,15 +1963,8 @@ msgstr "Color Personalizado" msgid "Dynamic flow calibration" msgstr "Calibración de caudal dinámico" -msgid "" -"The nozzle temp and max volumetric speed will affect the calibration " -"results. Please fill in the same values as the actual printing. They can be " -"auto-filled by selecting a filament preset." -msgstr "" -"La temperatura y la velocidad volumétrica máxima de la boquilla afectará a " -"los resultados de los ajustes. Por favor, rellena los mismos valores de la " -"actual impresión. Ellos pueden ser auto-rellenados seleccionando un " -"preajuste de filamento." +msgid "The nozzle temp and max volumetric speed will affect the calibration results. Please fill in the same values as the actual printing. They can be auto-filled by selecting a filament preset." +msgstr "La temperatura y la velocidad volumétrica máxima de la boquilla afectará a los resultados de los ajustes. Por favor, rellena los mismos valores de la actual impresión. Ellos pueden ser auto-rellenados seleccionando un preajuste de filamento." msgid "Nozzle Diameter" msgstr "Diámetro" @@ -2130,14 +1996,8 @@ msgstr "Iniciar calibración" msgid "Next" msgstr "Siguiente" -msgid "" -"Calibration completed. Please find the most uniform extrusion line on your " -"hot bed like the picture below, and fill the value on its left side into the " -"factor K input box." -msgstr "" -"Calibración completada. Por favor, observe cual es línea de extrusión más " -"uniforme en su cama caliente, parecida a la imagen de abajo, e inserte el " -"valor en el cuadro de texto de su lado izquierdo, donde dice factor K." +msgid "Calibration completed. Please find the most uniform extrusion line on your hot bed like the picture below, and fill the value on its left side into the factor K input box." +msgstr "Calibración completada. Por favor, observe cual es línea de extrusión más uniforme en su cama caliente, parecida a la imagen de abajo, e inserte el valor en el cuadro de texto de su lado izquierdo, donde dice factor K." msgid "Save" msgstr "Guardar" @@ -2168,11 +2028,8 @@ msgstr "Paso" msgid "AMS Slots" msgstr "Ranuras AMS" -msgid "" -"Note: Only the AMS slots loaded with the same material type can be selected." -msgstr "" -"Nota: Solo las ranuras AMS cargadas con el mismo tipo de material se pueden " -"seleccionar." +msgid "Note: Only the AMS slots loaded with the same material type can be selected." +msgstr "Nota: Solo las ranuras AMS cargadas con el mismo tipo de material se pueden seleccionar." msgid "Enable AMS" msgstr "Activar AMS" @@ -2189,41 +2046,20 @@ msgstr "Imprimir con el filamento montado en la parte posterior del chasis" msgid "Cabin humidity" msgstr "Humedad de cabina" -msgid "" -"Green means that AMS humidity is normal, orange represent humidity is high, " -"red represent humidity is too high.(Hygrometer: lower the better.)" -msgstr "" -"El verde significa que la humedad de AMS es normal, el naranja representa " -"que la humedad es alta, el rojo representa que la humedad es demasiado alta." -"(Hygrometro: menos que el mejor.)" +msgid "Green means that AMS humidity is normal, orange represent humidity is high, red represent humidity is too high.(Hygrometer: lower the better.)" +msgstr "El verde significa que la humedad de AMS es normal, el naranja representa que la humedad es alta, el rojo representa que la humedad es demasiado alta.(Hygrometro: menos que el mejor.)" msgid "Desiccant status" msgstr "Estado del secante" -msgid "" -"A desiccant status lower than two bars indicates that desiccant may be " -"inactive. Please change the desiccant.(The bars: higher the better.)" -msgstr "" -"Si estado del secante es menor que las dos barras indica que el secante " -"puede estar inactivo. Por favor cambie el secante(Las barras: más que el " -"mejor)" +msgid "A desiccant status lower than two bars indicates that desiccant may be inactive. Please change the desiccant.(The bars: higher the better.)" +msgstr "Si estado del secante es menor que las dos barras indica que el secante puede estar inactivo. Por favor cambie el secante(Las barras: más que el mejor)" -msgid "" -"Note: When the lid is open or the desiccant pack is changed, it can take " -"hours or a night to absorb the moisture. Low temperatures also slow down the " -"process. During this time, the indicator may not represent the chamber " -"accurately." -msgstr "" -"Nota: Cuando se abre la tapa o se cambia el paquete desecante, puede tardar " -"horas o una noche en absorber la humedad. Las bajas temperaturas también " -"ralentizan el proceso. Durante este tiempo, es posible que el indicador no " -"represente la cámara con precisión." +msgid "Note: When the lid is open or the desiccant pack is changed, it can take hours or a night to absorb the moisture. Low temperatures also slow down the process. During this time, the indicator may not represent the chamber accurately." +msgstr "Nota: Cuando se abre la tapa o se cambia el paquete desecante, puede tardar horas o una noche en absorber la humedad. Las bajas temperaturas también ralentizan el proceso. Durante este tiempo, es posible que el indicador no represente la cámara con precisión." -msgid "" -"Config which AMS slot should be used for a filament used in the print job" -msgstr "" -"La configuración de ranura la cual debe ser usada para el filamento es usada " -"en el trabajo de impresión" +msgid "Config which AMS slot should be used for a filament used in the print job" +msgstr "La configuración de ranura la cual debe ser usada para el filamento es usada en el trabajo de impresión" msgid "Filament used in this print job" msgstr "Filamento usado en este trabajo de impresión" @@ -2246,35 +2082,24 @@ msgstr "Imprimir usando filamentos en AMS" msgid "Print with filaments mounted on the back of the chassis" msgstr "Imprimir con filamentos montados en la parte de atrás del chasis" -msgid "" -"When the current material run out, the printer will continue to print in the " -"following order." -msgstr "" -"Cuando se termine el filamento actual, la impresora continuará imprimiendo " -"en el siguiente orden." +msgid "When the current material run out, the printer will continue to print in the following order." +msgstr "Cuando se termine el filamento actual, la impresora continuará imprimiendo en el siguiente orden." msgid "Group" msgstr "Agrupar" msgid "The printer does not currently support auto refill." -msgstr "La impresora no soporta la auto carga actualmente." +msgstr "La impresora no soporta auto recarga actualmente." + +msgid "AMS filament backup is not enabled, please enable it in the AMS settings." +msgstr "La copia de seguridad de filamento AMS no está activada, por favor actívela en la configuración AMS." msgid "" -"AMS filament backup is not enabled, please enable it in the AMS settings." +"If there are two identical filaments in AMS, AMS filament backup will be enabled. \n" +"(Currently supporting automatic supply of consumables with the same brand, material type, and color)" msgstr "" -"La copia de seguridad de filamento AMS no está activada, por favor actívela " -"en la configuración AMS." - -msgid "" -"If there are two identical filaments in AMS, AMS filament backup will be " -"enabled. \n" -"(Currently supporting automatic supply of consumables with the same brand, " -"material type, and color)" -msgstr "" -"Si hay dos filamentos idénticos en AMS, se habilitará la copia de seguridad " -"de filamentos AMS. \n" -"(Actualmente admite el suministro automático de consumibles con la misma " -"marca, tipo de material y color)." +"Si hay dos filamentos idénticos en AMS, se habilitará la copia de seguridad de filamentos AMS. \n" +"(Actualmente admite el suministro automático de consumibles con la misma marca, tipo de material y color)." msgid "AMS Settings" msgstr "Ajustes del AMS" @@ -2282,69 +2107,35 @@ msgstr "Ajustes del AMS" msgid "Insertion update" msgstr "Actualización de la inserción" -msgid "" -"The AMS will automatically read the filament information when inserting a " -"new Bambu Lab filament. This takes about 20 seconds." -msgstr "" -"El AMS leerá automáticamente la información del filamento al insertar un " -"nuevo filamento de Bambu Lab. Esto tardara unos 20 segundos." +msgid "The AMS will automatically read the filament information when inserting a new Bambu Lab filament. This takes about 20 seconds." +msgstr "El AMS leerá automáticamente la información del filamento al insertar un nuevo filamento de Bambu Lab. Esto tardara unos 20 segundos." -msgid "" -"Note: if new filament is inserted during printing, the AMS will not " -"automatically read any information until printing is completed." -msgstr "" -"Nota: si se inserta un nuevo filamento durante la impresión, el AMS no leerá " -"automáticamente ninguna información hasta que la impresión haya finalizado." +msgid "Note: if new filament is inserted during printing, the AMS will not automatically read any information until printing is completed." +msgstr "Nota: si se inserta un nuevo filamento durante la impresión, el AMS no leerá automáticamente ninguna información hasta que la impresión haya finalizado." -msgid "" -"When inserting a new filament, the AMS will not automatically read its " -"information, leaving it blank for you to enter manually." -msgstr "" -"Al insertar un nuevo filamento, el AMS no leerá automáticamente su " -"información, dejándola en blanco para que usted la introduzca manualmente." +msgid "When inserting a new filament, the AMS will not automatically read its information, leaving it blank for you to enter manually." +msgstr "Al insertar un nuevo filamento, el AMS no leerá automáticamente su información, dejándola en blanco para que usted la introduzca manualmente." msgid "Power on update" msgstr "Actualización de encendido" -msgid "" -"The AMS will automatically read the information of inserted filament on " -"start-up. It will take about 1 minute.The reading process will roll filament " -"spools." -msgstr "" -"El AMS leerá automáticamente la información del filamento insertado al " -"arrancar. Tomará aproximadamente 1 minuto. El proceso de lectura hará rodar " -"las bobinas de filamento." +msgid "The AMS will automatically read the information of inserted filament on start-up. It will take about 1 minute.The reading process will roll filament spools." +msgstr "El AMS leerá automáticamente la información del filamento insertado al arrancar. Tomará aproximadamente 1 minuto. El proceso de lectura hará rodar las bobinas de filamento." -msgid "" -"The AMS will not automatically read information from inserted filament " -"during startup and will continue to use the information recorded before the " -"last shutdown." -msgstr "" -"El AMS no leerá automáticamente la información del filamento insertado " -"durante el arranque y seguirá utilizando la información registrada antes del " -"último apagado." +msgid "The AMS will not automatically read information from inserted filament during startup and will continue to use the information recorded before the last shutdown." +msgstr "El AMS no leerá automáticamente la información del filamento insertado durante el arranque y seguirá utilizando la información registrada antes del último apagado." msgid "Update remaining capacity" msgstr "Actualizar capacidad restante" -msgid "" -"The AMS will estimate Bambu filament's remaining capacity after the filament " -"info is updated. During printing, remaining capacity will be updated " -"automatically." -msgstr "" -"El AMS estimará la capacidad del filamento Bambú restante después de que la " -"información sea actualizada. Durante la impresión, la capacidad restante " -"será actualizada automaticamente." +msgid "The AMS will estimate Bambu filament's remaining capacity after the filament info is updated. During printing, remaining capacity will be updated automatically." +msgstr "El AMS estimará la capacidad del filamento Bambú restante después de que la información sea actualizada. Durante la impresión, la capacidad restante será actualizada automaticamente." msgid "AMS filament backup" msgstr "Copia de Seguridad del Filamento AMS" -msgid "" -"AMS will continue to another spool with the same properties of filament " -"automatically when current filament runs out" -msgstr "" -"El AMS continuará con otra bobina con las mismas propiedades de filamento " -"automáticamente cuando el filamento se termine" +msgid "AMS will continue to another spool with the same properties of filament automatically when current filament runs out" +msgstr "El AMS continuará con otra bobina con las mismas propiedades de filamento automáticamente cuando el filamento se termine" msgid "File" msgstr "Archivo" @@ -2352,19 +2143,11 @@ msgstr "Archivo" msgid "Calibration" msgstr "Calibración" -msgid "" -"Failed to download the plug-in. Please check your firewall settings and vpn " -"software, check and retry." -msgstr "" -"Fallo al descargar el complemento. Por favor, compruebe el cortafuegos y la " -"vpn, e inténtelo de nuevo." +msgid "Failed to download the plug-in. Please check your firewall settings and vpn software, check and retry." +msgstr "Fallo al descargar el complemento. Por favor, compruebe el cortafuegos y la vpn, e inténtelo de nuevo." -msgid "" -"Failed to install the plug-in. Please check whether it is blocked or deleted " -"by anti-virus software." -msgstr "" -"Fallo al instalar el complemento. Por favor, compruebe si ha sido bloqueado " -"o borrado por un antivirus." +msgid "Failed to install the plug-in. Please check whether it is blocked or deleted by anti-virus software." +msgstr "Fallo al instalar el complemento. Por favor, compruebe si ha sido bloqueado o borrado por un antivirus." msgid "click here to see more info" msgstr "presiona aquí para mostrar más información" @@ -2372,22 +2155,14 @@ msgstr "presiona aquí para mostrar más información" msgid "Please home all axes (click " msgstr "Por favor, mandar a inicio todos los ejes (presione " -msgid "" -") to locate the toolhead's position. This prevents device moving beyond the " -"printable boundary and causing equipment wear." -msgstr "" -") para localizar la posición del cabezal. Esto previene que el dispositivo " -"se mueva más allá de los limites de impresión y cause desgaste en el equipo." +msgid ") to locate the toolhead's position. This prevents device moving beyond the printable boundary and causing equipment wear." +msgstr ") para localizar la posición del cabezal. Esto previene que el dispositivo se mueva más allá de los limites de impresión y cause desgaste en el equipo." msgid "Go Home" msgstr "Ir al Inicio" -msgid "" -"A error occurred. Maybe memory of system is not enough or it's a bug of the " -"program" -msgstr "" -"Se ha producido un error. Tal vez la memoria del sistema no es suficiente o " -"es un error del programa" +msgid "A error occurred. Maybe memory of system is not enough or it's a bug of the program" +msgstr "Se ha producido un error. Tal vez la memoria del sistema no es suficiente o es un error del programa" msgid "Please save project and restart the program. " msgstr "Guarde el proyecto y reinicie el programa. " @@ -2444,9 +2219,7 @@ msgstr "Copiado del G-Code temporal al G-Code de salida fallido" #, boost-format msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" -msgstr "" -"Programación de la carga a %1%. Mire la Ventana -> Cola de Impresión del " -"Anfitrión" +msgstr "Programación de la carga a %1%. Mire la Ventana -> Cola de Impresión del Anfitrión" msgid "Origin" msgstr "Origen" @@ -2457,19 +2230,11 @@ msgstr "Diámetro" msgid "Size in X and Y of the rectangular plate." msgstr "Tamaño en X e Y de la bandeja rectangular." -msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." -msgstr "" -"Distancia de la coordenada del G-Code de 0,0 de la esquina frontal izquierda " -"del rectángulo." +msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." +msgstr "Distancia de la coordenada del G-Code de 0,0 de la esquina frontal izquierda del rectángulo." -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." -msgstr "" -"Diámetro de la cama de impresión. Se supone que el origen (0,0) está ubicado " -"en el centro." +msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." +msgstr "Diámetro de la cama de impresión. Se supone que el origen (0,0) está ubicado en el centro." msgid "Rectangular" msgstr "Rectangular" @@ -2507,15 +2272,11 @@ msgstr "Error! Modelo inválido" msgid "The selected file contains no geometry." msgstr "El archivo seleccionado no contiene geometría." -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "" -"El archivo seleccionado contiene varias áreas disjuntas. Esto no es " -"compatible." +msgid "The selected file contains several disjoint areas. This is not supported." +msgstr "El archivo seleccionado contiene varias áreas disjuntas. Esto no es compatible." msgid "Choose a file to import bed texture from (PNG/SVG):" -msgstr "" -"Escoge un archivo para importar la textura de la cama de impresión (PNG/SVG):" +msgstr "Escoge un archivo para importar la textura de la cama de impresión (PNG/SVG):" msgid "Choose an STL file to import bed model from:" msgstr "Escoge un archivo STL para importar el modelo de la cama de impresión:" @@ -2528,17 +2289,12 @@ msgid "" "Please make sure whether to use the temperature to print.\n" "\n" msgstr "" -"La boquilla puede bloquearse cuando la temperatura está fuera del rango " -"recomendado.\n" +"La boquilla puede bloquearse cuando la temperatura está fuera del rango recomendado.\n" "Por favor, asegúrese de utilizar la temperatura para imprimir.\n" #, c-format, boost-format -msgid "" -"Recommended nozzle temperature of this filament type is [%d, %d] degree " -"centigrade" -msgstr "" -"La temperatura recomendada de la boquilla de este tipo de filamento es de " -"[%d, %d] grados centígrados" +msgid "Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade" +msgstr "La temperatura recomendada de la boquilla de este tipo de filamento es de [%d, %d] grados centígrados" msgid "" "Too small max volumetric speed.\n" @@ -2548,14 +2304,8 @@ msgstr "" "Reajustar a 0.5" #, c-format, boost-format -msgid "" -"Current chamber temperature is higher than the material's safe temperature," -"it may result in material softening and clogging.The maximum safe " -"temperature for the material is %d" -msgstr "" -"La temperatura actual de la cámara es superior a la temperatura de seguridad " -"del material,puede provocar que el material se ablande y se atasque.La " -"temperatura máxima de seguridad para el material es %d" +msgid "Current chamber temperature is higher than the material's safe temperature,it may result in material softening and clogging.The maximum safe temperature for the material is %d" +msgstr "La temperatura actual de la cámara es superior a la temperatura de seguridad del material,puede provocar que el material se ablande y se atasque.La temperatura máxima de seguridad para el material es %d" msgid "" "Too small layer height.\n" @@ -2581,19 +2331,15 @@ msgstr "" "La altura de la primera capa se restablecerá a 0,2." msgid "" -"This setting is only used for model size tunning with small value in some " -"cases.\n" +"This setting is only used for model size tunning with small value in some cases.\n" "For example, when model size has small error and hard to be assembled.\n" "For large size tuning, please use model scale function.\n" "\n" "The value will be reset to 0." msgstr "" -"Este ajuste sólo se utiliza para afinar el tamaño del modelo con un valor " -"pequeño en algunos casos.\n" -"Por ejemplo, cuando el tamaño del modelo tiene un pequeño error y es difícil " -"de agrupar.\n" -"Para el ajuste de tamaño grande, por favor utilice la función de escala del " -"modelo.\n" +"Este ajuste sólo se utiliza para afinar el tamaño del modelo con un valor pequeño en algunos casos.\n" +"Por ejemplo, cuando el tamaño del modelo tiene un pequeño error y es difícil de agrupar.\n" +"Para el ajuste de tamaño grande, por favor utilice la función de escala del modelo.\n" "\n" "El valor se restablecerá a 0." @@ -2605,20 +2351,13 @@ msgid "" "The value will be reset to 0." msgstr "" "Una compensación de la pata de elefante demasiado grande no es razonable.\n" -"Si realmente tiene un efecto grave de pata de elefante, por favor, compruebe " -"otros ajustes.\n" +"Si realmente tiene un efecto grave de pata de elefante, por favor, compruebe otros ajustes.\n" "Por ejemplo, si la temperatura de la cama es demasiado alta.\n" "\n" "El valor se restablecerá a 0." -msgid "" -"Spiral mode only works when wall loops is 1, support is disabled, top shell " -"layers is 0, sparse infill density is 0 and timelapse type is traditional." -msgstr "" -"El modo espiral sólo funciona cuando los bucles de perímetro son 1, el " -"soporte está desactivado, las capas superiores de la cáscara son 0, la " -"densidad de relleno de baja densidad es 0 y el tipo de timelapse es " -"tradicional." +msgid "Spiral mode only works when wall loops is 1, support is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." +msgstr "El modo espiral sólo funciona cuando los bucles de perímetro son 1, el soporte está desactivado, las capas superiores de la cáscara son 0, la densidad de relleno de baja densidad es 0 y el tipo de timelapse es tradicional." msgid " But machines with I3 structure will not generate timelapse videos." msgstr " Las máquina con estructura I3 no generarán videos de timelapse." @@ -2633,18 +2372,15 @@ msgstr "" "No - Dejar de usar el modo espiral esta vez" msgid "" -"Prime tower does not work when Adaptive Layer Height or Independent Support " -"Layer Height is on.\n" +"Prime tower does not work when Adaptive Layer Height or Independent Support Layer Height is on.\n" "Which do you want to keep?\n" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height and Independent Support Layer Height" msgstr "" -"La torre de purga no funciona cuando la altura de la capa adaptable o la " -"altura de la capa de soporte independiente están activadas.\n" +"La torre de purga no funciona cuando la altura de la capa adaptable o la altura de la capa de soporte independiente están activadas.\n" "¿Qué desea mantener?\n" "SÍ - Mantener la torre de purga\n" -"NO - Mantener la altura de capa adaptable y la altura de capa de soporte " -"independiente" +"NO - Mantener la altura de capa adaptable y la altura de capa de soporte independiente" msgid "" "Prime tower does not work when Adaptive Layer Height is on.\n" @@ -2652,8 +2388,7 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height" msgstr "" -"La torre de purga no funciona cuando la altura de capa adaptativa está " -"activada.\n" +"La torre de purga no funciona cuando la altura de capa adaptativa está activada.\n" "¿Qué quieres mantener?\n" "SÍ - Mantener la torre de purga\n" "NO - Mantener la altura de capa adaptable" @@ -2664,8 +2399,7 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"La torre de purga no funciona cuando la altura de la capa de soporte " -"independiente está activada.\n" +"La torre de purga no funciona cuando la altura de la capa de soporte independiente está activada.\n" "¿Qué quieres mantener?\n" "SÍ - Mantener la torre de purga\n" "NO - Mantener la altura de la capa de soporte independiente" @@ -2735,13 +2469,10 @@ msgid "Calibrating extrusion flow" msgstr "Calibrando el caudal de extrusión" msgid "Paused due to nozzle temperature malfunction" -msgstr "" -"Pausado debido a un mal funcionamiento de la temperatura de la boquilla" +msgstr "Pausado debido a un mal funcionamiento de la temperatura de la boquilla" msgid "Paused due to heat bed temperature malfunction" -msgstr "" -"Se ha interrumpido debido a un mal funcionamiento de la temperatura de la " -"cama caliente" +msgstr "Se ha interrumpido debido a un mal funcionamiento de la temperatura de la cama caliente" msgid "Filament unloading" msgstr "Descarga de filamento" @@ -2759,8 +2490,7 @@ msgid "Paused due to AMS lost" msgstr "Se ha pausado por la pérdida del AMS" msgid "Paused due to low speed of the heat break fan" -msgstr "" -"En pausa debido a la baja velocidad del ventilador de disipación de calor" +msgstr "En pausa debido a la baja velocidad del ventilador de disipación de calor" msgid "Paused due to chamber temperature control error" msgstr "Pausado debido a un error en el control de temperatura de cámara" @@ -2775,16 +2505,16 @@ msgid "Motor noise showoff" msgstr "Ruido notable del motor" msgid "Nozzle filament covered detected pause" -msgstr "" +msgstr "Pausa de detección de filamento de boquilla cubierta" msgid "Cutter error pause" -msgstr "" +msgstr "Pausa de error de cortador" msgid "First layer error pause" -msgstr "" +msgstr "Pausa de error de primera capa" msgid "Nozzle clog pause" -msgstr "" +msgstr "Pausa de obstrucción de boquilla" msgid "MC" msgstr "MC" @@ -2822,41 +2552,20 @@ msgstr "Verificación fallida." msgid "Update failed." msgstr "Actualización fallida." -msgid "" -"The current chamber temperature or the target chamber temperature exceeds " -"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" -"TPU) is not allowed to be loaded." -msgstr "" -"La temperatura actual de la cámara o la temperatura objetivo de la cámara " -"excede en 45℃. Para evitar la obstrucción del extrusor,no se permite cargar " -"filamento de baja temperatura(PLA/PETG/TPU)." +msgid "The current chamber temperature or the target chamber temperature exceeds 45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is not allowed to be loaded." +msgstr "La temperatura actual de la cámara o la temperatura objetivo de la cámara excede en 45℃. Para evitar la obstrucción del extrusor,no se permite cargar filamento de baja temperatura(PLA/PETG/TPU)." -msgid "" -"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " -"avoid extruder clogging,it is not allowed to set the chamber temperature " -"above 45℃." -msgstr "" -"El filamento de baja temperatura (PLA/PETG/TPU) se carga en el extrusor y, " -"para evitar que se atasque, no se permite ajustar la temperatura de la " -"cámara por encima de 45℃." +msgid "Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to avoid extruder clogging,it is not allowed to set the chamber temperature above 45℃." +msgstr "El filamento de baja temperatura (PLA/PETG/TPU) se carga en el extrusor y, para evitar que se atasque, no se permite ajustar la temperatura de la cámara por encima de 45℃." -msgid "" -"When you set the chamber temperature below 40℃, the chamber temperature " -"control will not be activated. And the target chamber temperature will " -"automatically be set to 0℃." -msgstr "" -"Cuando usted fija la temperatura de la cámara debajo de 40℃, el control de " -"la temperatura de la cámara no será activado. Y la temperatura objetivo de " -"la cámara se ajustará automáticamente a 0℃." +msgid "When you set the chamber temperature below 40℃, the chamber temperature control will not be activated. And the target chamber temperature will automatically be set to 0℃." +msgstr "Cuando usted fija la temperatura de la cámara debajo de 40℃, el control de la temperatura de la cámara no será activado. Y la temperatura objetivo de la cámara se ajustará automáticamente a 0℃." msgid "Failed to start printing job" msgstr "Fallo iniciando el trabajo de impresión" -msgid "" -"This calibration does not support the currently selected nozzle diameter" -msgstr "" -"Esta calibración no es compatible con el diámetro de boquilla seleccionado " -"actualmente" +msgid "This calibration does not support the currently selected nozzle diameter" +msgstr "Esta calibración no es compatible con el diámetro de boquilla seleccionado actualmente" msgid "Current flowrate cali param is invalid" msgstr "El parámetro de caudal actual no es válido" @@ -2876,19 +2585,11 @@ msgstr "TPU no soportado por el AMS." msgid "Bambu PET-CF/PA6-CF is not supported by AMS." msgstr "Bambu PET-CF/PA6-CF no soportado por el AMS." -msgid "" -"Damp PVA will become flexible and get stuck inside AMS,please take care to " -"dry it before use." -msgstr "" -"Damp PVA se hará más flexible y se atascará dentro del AMS, por favor, tenga " -"cuidado de secarlo antes de usar." +msgid "Damp PVA will become flexible and get stuck inside AMS,please take care to dry it before use." +msgstr "Damp PVA se hará más flexible y se atascará dentro del AMS, por favor, tenga cuidado de secarlo antes de usar." -msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " -"AMS, please use with caution." -msgstr "" -"Los filamentos CF/GF son duros y quebradizos. Es fácil romperlos o crear " -"atascos en el AMS, por favor úselos con precaución." +msgid "CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, please use with caution." +msgstr "Los filamentos CF/GF son duros y quebradizos. Es fácil romperlos o crear atascos en el AMS, por favor úselos con precaución." msgid "default" msgstr "por defecto" @@ -2994,7 +2695,7 @@ msgid "Total" msgstr "Total" msgid "Tower" -msgstr "" +msgstr "Torre" msgid "Total Estimation" msgstr "Estimación total" @@ -3090,10 +2791,10 @@ msgid "Print settings" msgstr "Configuración de impresión" msgid "Custom g-code" -msgstr "" +msgstr "G-Code personalizado" msgid "ToolChange" -msgstr "" +msgstr "Cambio de Herramienta" msgid "Time Estimation" msgstr "Estimación de Tiempo" @@ -3222,7 +2923,7 @@ msgid "Arrange objects on selected plates" msgstr "Colocar los objetos en las bandejas seleccionadas" msgid "Split to objects" -msgstr "Partir en varias piezas" +msgstr "Separar en objetos" msgid "Split to parts" msgstr "Separar en piezas" @@ -3264,12 +2965,8 @@ msgid "Size:" msgstr "Tamaño:" #, c-format, boost-format -msgid "" -"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " -"separate the conflicted objects farther (%s <-> %s)." -msgstr "" -"Se han encontrado conflictos de rutas G-Code en la capa %d, z = %.2lf mm. " -"Por favor, separe más los objetos en conflicto (%s <-> %s)." +msgid "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please separate the conflicted objects farther (%s <-> %s)." +msgstr "Se han encontrado conflictos de rutas G-Code en la capa %d, z = %.2lf mm. Por favor, separe más los objetos en conflicto (%s <-> %s)." msgid "An object is layed over the boundary of plate." msgstr "Un objeto está sobre el límite de la bandeja." @@ -3285,13 +2982,10 @@ msgstr "Sólo es visible el objeto que se está editando." msgid "" "An object is laid over the boundary of plate or exceeds the height limit.\n" -"Please solve the problem by moving it totally on or off the plate, and " -"confirming that the height is within the build volume." +"Please solve the problem by moving it totally on or off the plate, and confirming that the height is within the build volume." msgstr "" -"Un objeto está colocado en el límite de la bandeja o excede el límite de " -"altura.\n" -"Por favor solucione el problema moviéndolo totalmente fuera o dentro de la " -"bandeja, y confirme que la altura está entre el volumen de construcción." +"Un objeto está colocado en el límite de la bandeja o excede el límite de altura.\n" +"Por favor solucione el problema moviéndolo totalmente fuera o dentro de la bandeja, y confirme que la altura está entre el volumen de construcción." msgid "Calibration step selection" msgstr "Seleccionar paso de calibración" @@ -3312,12 +3006,10 @@ msgid "Calibration program" msgstr "Programa de calibración" msgid "" -"The calibration program detects the status of your device automatically to " -"minimize deviation.\n" +"The calibration program detects the status of your device automatically to minimize deviation.\n" "It keeps the device performing optimally." msgstr "" -"El programa de calibración detecta el estado de su dispositivo " -"automáticamente para minimizar la desviación.\n" +"El programa de calibración detecta el estado de su dispositivo automáticamente para minimizar la desviación.\n" "Mantiene el dispositivo con un rendimiento óptimo." msgid "Calibration Flow" @@ -3550,10 +3242,10 @@ msgid "Import" msgstr "Importar" msgid "Export all objects as one STL" -msgstr "" +msgstr "Exportar todos los objetos como un único STL" msgid "Export all objects as STLs" -msgstr "" +msgstr "Exportar todos los objetos como varios STL" msgid "Export Generic 3MF" msgstr "Exportar 3MF genérico" @@ -3643,16 +3335,16 @@ msgid "Use Orthogonal View" msgstr "Utilizar Vista Octogonal" msgid "Show &G-code Window" -msgstr "" +msgstr "Mostrar Ventana &G-Code" msgid "Show g-code window in Previce scene" -msgstr "" +msgstr "Mostrar ventana de G-Code en escena previa" msgid "Reset Window Layout" -msgstr "" +msgstr "Reiniciar Capa de Ventana" msgid "Reset to default window layout" -msgstr "" +msgstr "Restablecer el diseño de ventana por defecto" msgid "Show &Labels" msgstr "Mostrar &Etiquetas" @@ -3766,8 +3458,7 @@ msgstr "Existe un archivo con el mismo nombre: %s, ¿desea sobreescribirlo?." #, c-format, boost-format msgid "A config exists with the same name: %s, do you want to override it." -msgstr "" -"Existe unaconfiguración con el mismo nombre: %s, ¿desea sobreescribirla?." +msgstr "Existe unaconfiguración con el mismo nombre: %s, ¿desea sobreescribirla?." msgid "Overwrite file" msgstr "Sobrescribir archivo" @@ -3784,12 +3475,8 @@ msgstr "Elegir un directorio" #, c-format, boost-format msgid "There is %d config exported. (Only non-system configs)" msgid_plural "There are %d configs exported. (Only non-system configs)" -msgstr[0] "" -"Hay %d configuración exportada. (solo configuraciones que no sean del " -"sistema)" -msgstr[1] "" -"Hay %d configuraciones exportadas. (solo configuraciones que no sean del " -"sistema)" +msgstr[0] "Hay %d configuración exportada. (solo configuraciones que no sean del sistema)" +msgstr[1] "Hay %d configuraciones exportadas. (solo configuraciones que no sean del sistema)" msgid "Export result" msgstr "Exportar resultado" @@ -3799,14 +3486,9 @@ msgstr "Seleccionar perfil a cargar:" #, c-format, boost-format msgid "There is %d config imported. (Only non-system and compatible configs)" -msgid_plural "" -"There are %d configs imported. (Only non-system and compatible configs)" -msgstr[0] "" -"Hay %d configuración exportada. (solo configuraciones que no sean del " -"sistema y compatibles)" -msgstr[1] "" -"Hay %d configuraciones importadas. (Solo las configuraciones compatibles y " -"no-del-sistema)" +msgid_plural "There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "Hay %d configuración exportada. (solo configuraciones que no sean del sistema y compatibles)" +msgstr[1] "Hay %d configuraciones importadas. (Solo las configuraciones compatibles y no-del-sistema)" msgid "Import result" msgstr "Importar resultado" @@ -3845,12 +3527,10 @@ msgid "Initialize failed (No Camera Device)!" msgstr "¡Inicialización fallida (No hay Cámara)!" msgid "Printer is busy downloading, Please wait for the downloading to finish." -msgstr "" -"La impresora está ocupada descargando. Por favor, espere a que finalice." +msgstr "La impresora está ocupada descargando. Por favor, espere a que finalice." msgid "Initialize failed (Not supported on the current printer version)!" -msgstr "" -"Fallo inicializando (No soportado en la actual versión de la impresora)!" +msgstr "Fallo inicializando (No soportado en la actual versión de la impresora)!" msgid "Initialize failed (Not accessible in LAN-only mode)!" msgstr "Inicialización fallida (No accesible en el modo solo Red Local)" @@ -3982,8 +3662,7 @@ msgstr "Load failed [%d]" #, c-format, boost-format msgid "You are going to delete %u file from printer. Are you sure to continue?" -msgid_plural "" -"You are going to delete %u files from printer. Are you sure to continue?" +msgid_plural "You are going to delete %u files from printer. Are you sure to continue?" msgstr[0] "Vas a borrar el archivo %u de la impresora. ¿Estás seguro?" msgstr[1] "Vas a borrar los archivos %u de la impresora. ¿Estás seguro?" @@ -4006,12 +3685,8 @@ msgstr "Failed to fetch model infomation from printer." msgid "Failed to parse model infomations." msgstr "Fallo al analizar la información de modelado." -msgid "" -"The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer " -"and export a new .gcode.3mf file." -msgstr "" -"El archivo .gcode. 3mf no contiene datos de G-Code. Por favor, lamine con " -"OrcaSlicer y exporte un nuevo archivo .gcode.3mf." +msgid "The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer and export a new .gcode.3mf file." +msgstr "El archivo .gcode. 3mf no contiene datos de G-Code. Por favor, lamine con OrcaSlicer y exporte un nuevo archivo .gcode.3mf." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -4034,16 +3709,13 @@ msgid "Downloading %d%%..." msgstr "Descargando %d%%..." msgid "Connection lost. Please retry." -msgstr "" - -msgid "The device cannot handle more conversations. Please retry later." -msgstr "" +msgstr "Conexión perdida. Por favor, reinténtelo." msgid "File not exists." -msgstr "" +msgstr "El archivo no existe." msgid "File checksum error. Please retry." -msgstr "" +msgstr "Checksum de archivo erróneo. Por favor, reinténtelo." msgid "Not supported on the current printer version." msgstr "No soportado en la actual versión de la impresora." @@ -4053,7 +3725,7 @@ msgstr "Almacenamiento no disponible, inserte la tarjeta SD." #, c-format, boost-format msgid "Error code: %d" -msgstr "" +msgstr "Código de error: %d" msgid "Speed:" msgstr "Velocidad:" @@ -4122,12 +3794,8 @@ msgstr "" msgid "How do you like this printing file?" msgstr "¿Cómo le parece este archivo de impresión?" -msgid "" -"(The model has already been rated. Your rating will overwrite the previous " -"rating.)" -msgstr "" -"(El modelo ya ha sido valorado. Su valoración sobrescribirá la valoración " -"anterior.)" +msgid "(The model has already been rated. Your rating will overwrite the previous rating.)" +msgstr "(El modelo ya ha sido valorado. Su valoración sobrescribirá la valoración anterior.)" msgid "Rate" msgstr "Valorar" @@ -4198,10 +3866,8 @@ msgstr "Capa: %s" msgid "Layer: %d/%d" msgstr "Capa: %d/%d" -msgid "" -"Please heat the nozzle to above 170 degree before loading or unloading " -"filament." -msgstr "" +msgid "Please heat the nozzle to above 170 degree before loading or unloading filament." +msgstr "Por favor, caliente la boquilla por encima de 170 grados antes de cargar o descargar filamento." msgid "Still unload" msgstr "Aún descargado" @@ -4212,13 +3878,8 @@ msgstr "Aún cargado" msgid "Please select an AMS slot before calibration" msgstr "Seleccione una ranura AMS antes de la calibración" -msgid "" -"Cannot read filament info: the filament is loaded to the tool head,please " -"unload the filament and try again." -msgstr "" -"No se puede leer la información del filamento: el filamento está cargado en " -"el cabezal de la herramienta, por favor, descargue el filamento y vuelva a " -"intentarlo." +msgid "Cannot read filament info: the filament is loaded to the tool head,please unload the filament and try again." +msgstr "No se puede leer la información del filamento: el filamento está cargado en el cabezal de la herramienta, por favor, descargue el filamento y vuelva a intentarlo." msgid "This only takes effect during printing" msgstr "Esto solo tendrá efecto durante la impresión" @@ -4260,7 +3921,7 @@ msgid "Please click on the star first." msgstr "Por favor presione en las estrellas primero." msgid "InFo" -msgstr "" +msgstr "Información" msgid "Get oss config failed." msgstr "Falló la obtención de la configuración de oss." @@ -4284,21 +3945,17 @@ msgid " can not be opened\n" msgstr " no es posible abrirlo\n" msgid "" -"The following issues occurred during the process of uploading images. Do you " -"want to ignore them?\n" +"The following issues occurred during the process of uploading images. Do you want to ignore them?\n" "\n" msgstr "" -"Se han producido los siguientes problemas durante el proceso de carga de " -"imágenes. ¿Desea ignorarlos?\n" +"Se han producido los siguientes problemas durante el proceso de carga de imágenes. ¿Desea ignorarlos?\n" "\n" msgid "info" msgstr "información" msgid "Synchronizing the printing results. Please retry a few seconds later." -msgstr "" -"Sincronizando los resultados de impresión. Vuelva a intentarlo unos segundos " -"más tarde." +msgstr "Sincronizando los resultados de impresión. Vuelva a intentarlo unos segundos más tarde." msgid "Upload failed\n" msgstr "Carga fallida\n" @@ -4311,8 +3968,7 @@ msgid "" "\n" " error code: " msgstr "" -"El resultado de su comentario no se puede cargar debido a algunas razones, " -"que son:\n" +"El resultado de su comentario no se puede cargar debido a algunas razones, que son:\n" "\n" " código de error: " @@ -4328,12 +3984,8 @@ msgstr "" "\n" "¿Desea redirigir a la página web de valoración?" -msgid "" -"Some of your images failed to upload. Would you like to redirect to the " -"webpage for rating?" -msgstr "" -"Algunas de sus imágenes no se han podido cargar. ¿Desea redirigir a la " -"página web para la valoración?" +msgid "Some of your images failed to upload. Would you like to redirect to the webpage for rating?" +msgstr "Algunas de sus imágenes no se han podido cargar. ¿Desea redirigir a la página web para la valoración?" msgid "You can select up to 16 images." msgstr "Puede seleccionar hasta 15 imágenes." @@ -4342,8 +3994,7 @@ msgid "" "At least one successful print record of this print profile is required \n" "to give a positive rating(4 or 5stars)." msgstr "" -"Se requiere al menos un registro de impresión correcto de este perfil de " -"impresión \n" +"Se requiere al menos un registro de impresión correcto de este perfil de impresión \n" "para otorgar una calificación positiva (4 o 5 estrellas)." msgid "Status" @@ -4410,7 +4061,7 @@ msgid "Details" msgstr "Detalles" msgid "New printer config available." -msgstr "" +msgstr "Nueva configuración de impresora disponible." msgid "Wiki" msgstr "Wiki" @@ -4491,9 +4142,7 @@ msgid "WARNING:" msgstr "AVISO:" msgid "Your model needs support ! Please make support material enable." -msgstr "" -"¡Su modelo necesita soporte! Por favor, haga que el material de apoyo esté " -"habilitado." +msgstr "¡Su modelo necesita soporte! Por favor, haga que el material de apoyo esté habilitado." msgid "Gcode path overlap" msgstr "Superposición de la ruta del G-Code" @@ -4513,12 +4162,8 @@ msgstr "Capas" msgid "Range" msgstr "Rango" -msgid "" -"The application cannot run normally because OpenGL version is lower than " -"2.0.\n" -msgstr "" -"La aplicación no puede ejecutarse normalmente porque la versión de OpenGL es " -"inferior a la 2.0.\n" +msgid "The application cannot run normally because OpenGL version is lower than 2.0.\n" +msgstr "La aplicación no puede ejecutarse normalmente porque la versión de OpenGL es inferior a la 2.0.\n" msgid "Please upgrade your graphics card driver." msgstr "Por favor, actualice el controlador de su tarjeta gráfica." @@ -4554,9 +4199,7 @@ msgstr "La sensibilidad de pausa es" msgid "Enable detection of build plate position" msgstr "Activar detección de posición de bandeja" -msgid "" -"The localization tag of build plate is detected, and printing is paused if " -"the tag is not in predefined range." +msgid "The localization tag of build plate is detected, and printing is paused if the tag is not in predefined range." msgstr "La etiqueta de localización." msgid "First Layer Inspection" @@ -4568,8 +4211,8 @@ msgstr "Autorecuperar desde pérdida de paso" msgid "Allow Prompt Sound" msgstr "Permitir Sonido de Aviso" -msgid "Filament Tangle Detect" -msgstr "" +msgid "Fliament Tangle Detect" +msgstr "Detectado Enredo de Filamento" msgid "Global" msgstr "Global" @@ -4666,30 +4309,19 @@ msgid "Set filaments to use" msgstr "Elegir filamentos para usar" msgid "Search plate, object and part." -msgstr "" +msgstr "Buscar placa, objeto y parte." -msgid "" -"No AMS filaments. Please select a printer in 'Device' page to load AMS info." -msgstr "" -"No hay filamentos AMS. Por favor, seleccione una impresora en la página " -"'Dispositivos' para cargar información AMS." +msgid "No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgstr "No hay filamentos AMS. Por favor, seleccione una impresora en la página 'Dispositivos' para cargar información AMS." msgid "Sync filaments with AMS" msgstr "Sincronizar filamentos con AMS" -msgid "" -"Sync filaments with AMS will drop all current selected filament presets and " -"colors. Do you want to continue?" -msgstr "" -"Sincronizar filamentos con AMS descartará todos los preajustes de filamento " -"y colores. ¿Desea continuar?" +msgid "Sync filaments with AMS will drop all current selected filament presets and colors. Do you want to continue?" +msgstr "Sincronizar filamentos con AMS descartará todos los preajustes de filamento y colores. ¿Desea continuar?" -msgid "" -"Already did a synchronization, do you want to sync only changes or resync " -"all?" -msgstr "" -"Se realizó la sincronización, ¿Desea sincronizar solo los cambios o " -"resincronizar todo?" +msgid "Already did a synchronization, do you want to sync only changes or resync all?" +msgstr "Se realizó la sincronización, ¿Desea sincronizar solo los cambios o resincronizar todo?" msgid "Sync" msgstr "Sincronizar" @@ -4700,69 +4332,41 @@ msgstr "Resincronizar" msgid "There are no compatible filaments, and sync is not performed." msgstr "No hay filamentos compatible, y no se ha realizado la sincronización." -msgid "" -"There are some unknown filaments mapped to generic preset. Please update " -"Orca Slicer or restart Orca Slicer to check if there is an update to system " -"presets." -msgstr "" -"Hay algunos filamentos desconocidos mapeados en el preajuste genérico. Por " -"favor actualice o reinicie Orca Slicer para comprobar si hay una " -"actualización de preajustes del sistema." +msgid "There are some unknown filaments mapped to generic preset. Please update Orca Slicer or restart Orca Slicer to check if there is an update to system presets." +msgstr "Hay algunos filamentos desconocidos mapeados en el preajuste genérico. Por favor actualice o reinicie Orca Slicer para comprobar si hay una actualización de preajustes del sistema." #, boost-format msgid "Do you want to save changes to \"%1%\"?" msgstr "¿Quieres guardar los cambios en \"%1%\"?" #, c-format, boost-format -msgid "" -"Successfully unmounted. The device %s(%s) can now be safely removed from the " -"computer." -msgstr "" -"Desmontado correctamente. El dispositivo %s(%s) ahora puede ser eliminado de " -"forma segura." +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Desmontado correctamente. El dispositivo %s(%s) ahora puede ser eliminado de forma segura." #, c-format, boost-format msgid "Ejecting of device %s(%s) has failed." msgstr "La expulsión del dispositivo %s(%s) ha fallado." msgid "Previous unsaved project detected, do you want to restore it?" -msgstr "" -"Se ha detectado un proyecto anterior no guardado, ¿quieres restaurarlo?" +msgstr "Se ha detectado un proyecto anterior no guardado, ¿quieres restaurarlo?" msgid "Restore" msgstr "Restaurar" -msgid "" -"The current hot bed temperature is relatively high. The nozzle may be " -"clogged when printing this filament in a closed enclosure. Please open the " -"front door and/or remove the upper glass." -msgstr "" -"La temperatura actual de la cama caliente es relativamente alta. La boquilla " -"puede estar obstruida al imprimir este filamento en un recinto cerrado. Por " -"favor, abra la puerta frontal y/o retire el cristal superior." +msgid "The current hot bed temperature is relatively high. The nozzle may be clogged when printing this filament in a closed enclosure. Please open the front door and/or remove the upper glass." +msgstr "La temperatura actual de la cama caliente es relativamente alta. La boquilla puede estar obstruida al imprimir este filamento en un recinto cerrado. Por favor, abra la puerta frontal y/o retire el cristal superior." -msgid "" -"The nozzle hardness required by the filament is higher than the default " -"nozzle hardness of the printer. Please replace the hardened nozzle or " -"filament, otherwise, the nozzle will be attrited or damaged." -msgstr "" -"La dureza de la boquilla requerida por el filamento es más alta que la " -"dureza por defecto de la impresora. Por favor, reemplace la boquilla " -"endurecida y el filamento, de otra forma, la boquilla se atascará o se " -"dañará." +msgid "The nozzle hardness required by the filament is higher than the default nozzle hardness of the printer. Please replace the hardened nozzle or filament, otherwise, the nozzle will be attrited or damaged." +msgstr "La dureza de la boquilla requerida por el filamento es más alta que la dureza por defecto de la impresora. Por favor, reemplace la boquilla endurecida y el filamento, de otra forma, la boquilla se atascará o se dañará." -msgid "" -"Enabling traditional timelapse photography may cause surface imperfections. " -"It is recommended to change to smooth mode." -msgstr "" -"Activar la fotografía timelapse tradicional puede causar imperfecciones en " -"la superficie. Se recomienda cambiar al modo suave." +msgid "Enabling traditional timelapse photography may cause surface imperfections. It is recommended to change to smooth mode." +msgstr "Activar la fotografía timelapse tradicional puede causar imperfecciones en la superficie. Se recomienda cambiar al modo suave." msgid "Expand sidebar" -msgstr "" +msgstr "Expandir barra lateral" msgid "Collapse sidebar" -msgstr "" +msgstr "Colapsar barra lateral" #, c-format, boost-format msgid "Loading file: %s" @@ -4778,9 +4382,29 @@ msgid "The Config can not be loaded." msgstr "La Configuración no será cargada." msgid "The 3mf is generated by old Orca Slicer, load geometry data only." +msgstr "El 3mf está generado por un Orca Slicer antiguo, cargar solo datos de geometría." + +#, c-format, boost-format +msgid "This slicer file version %s is newer than %s's version:" +msgstr "Esta versión de archivo %s es más nueva que la versión %s:" + +msgid "Would you like to update your Bambu Studio software to enable all functionality in this slicer file?\n" +msgstr "¿Le gustaría actualizar su versión de Bambú Studio para activar todas las funcionalidades en este archivo de laminador?\n" + +msgid "Newer 3mf version" +msgstr "Nueva versión 3mf" + +msgid "you can always update Bambu Studio at your convenience. The slicer file will now be loaded without full functionality." +msgstr "Siempre puede actualizar Bambú Studio si le interesa. El archivo del laminador estará cargado sin todas las funcionalidades." + +#, c-format, boost-format +msgid "" +"This slicer file version %s is newer than %s's version.\n" +"\n" +"Would you like to update your Bambu Studio software to enable all functionality in this slicer file?" msgstr "" -"El 3mf está generado por un Orca Slicer antiguo, cargar solo datos de " -"geometría." +"Esta versión de archivo %s es más nueva que la versión %s:\n" +"¿Le gustaría actualizar su versión de Bambú Studio para activar todas las funcionalidades en este archivo de laminador?" msgid "Invalid values found in the 3mf:" msgstr "Valores inválidos encontrados en el 3mf:" @@ -4789,40 +4413,32 @@ msgid "Please correct them in the param tabs" msgstr "Por favor, corrijalos en las pestañas de parámetros" msgid "The 3mf has following modified G-codes in filament or printer presets:" -msgstr "" +msgstr "El archivo 3mf ha realizado las siguientes modificaciones en el G-Code de filamento o impresora:" -msgid "" -"Please confirm that these modified G-codes are safe to prevent any damage to " -"the machine!" -msgstr "" +msgid "Please confirm that these modified G-codes are safe to prevent any damage to the machine!" +msgstr "¡Por favor, confirme que esas modificaciones de G-Code son seguras para evitar cualquier daño a la máquina!" msgid "Modified G-codes" -msgstr "" +msgstr "G-Code modificado" msgid "The 3mf has following customized filament or printer presets:" -msgstr "" +msgstr "El archivo 3mf tiene los siguientes preajustes personalizados de filamento o impresora:" -msgid "" -"Please confirm that the G-codes within these presets are safe to prevent any " -"damage to the machine!" -msgstr "" +msgid "Please confirm that the G-codes within these presets are safe to prevent any damage to the machine!" +msgstr "¡Por favor, confirme que el G-Code dentro de los preajustes son seguros para evitar cualquier daño a la máquina!" msgid "Customized Preset" -msgstr "" +msgstr "Preajuste Personalizado" msgid "Name of components inside step file is not UTF8 format!" -msgstr "" -"¡El nombre de los componentes dentro del archivo de pasos no tiene formato " -"UTF8!" +msgstr "¡El nombre de los componentes dentro del archivo de pasos no tiene formato UTF8!" msgid "The name may show garbage characters!" msgstr "¡El nombre puede mostrar caracteres no válidos!" #, boost-format msgid "Failed loading file \"%1%\". An invalid configuration was found." -msgstr "" -"Ha fallado la carga del archivo \"%1%\". Se ha encontrado una configuración " -"no válida." +msgstr "Ha fallado la carga del archivo \"%1%\". Se ha encontrado una configuración no válida." msgid "Objects with zero volume removed" msgstr "Objetos con volumen cero eliminados" @@ -4835,8 +4451,7 @@ msgid "" "The object from file %s is too small, and maybe in meters or inches.\n" " Do you want to scale to millimeters?" msgstr "" -"El objeto del archivo %s es demasiado pequeño, tal vez en metros o " -"pulgadas.\n" +"El objeto del archivo %s es demasiado pequeño, tal vez en metros o pulgadas.\n" " ¿Quiere escalar a milímetros?" msgid "Object too small" @@ -4863,12 +4478,8 @@ msgstr "Se ha detectado un objeto con varias piezas" msgid "The file does not contain any geometry data." msgstr "El archivo no contiene ninguna información geométrica." -msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" -msgstr "" -"Tu objeto parece demasiado grande, ¿Deseas disminuirlo para que quepa en la " -"cama caliente automaticamente?" +msgid "Your object appears to be too large, Do you want to scale it down to fit the heat bed automatically?" +msgstr "Tu objeto parece demasiado grande, ¿Deseas disminuirlo para que quepa en la cama caliente automaticamente?" msgid "Object too large" msgstr "Objeto demasiado grande" @@ -4890,12 +4501,14 @@ msgid "" "The file %s already exists\n" "Do you want to replace it?" msgstr "" +"El archivo %s ya existe\n" +"¿Desea reemplazarlo?" msgid "Comfirm Save As" -msgstr "" +msgstr "Salvar Como" msgid "Delete object which is a part of cut object" -msgstr "Borrar objetos los cuales son piezas del objeto cortado" +msgstr "Borrar objeto el cual es una pieza del objeto cortado" msgid "" "You try to delete an object which is a part of a cut object.\n" @@ -4967,23 +4580,18 @@ msgstr "Bandeja de corte %d" msgid "Please resolve the slicing errors and publish again." msgstr "Por favor, resuelve los errores de corte y publica de nuevo." -msgid "" -"Network Plug-in is not detected. Network related features are unavailable." -msgstr "" -"Complemento de red no detectado. Características relacionadas no disponibles." +msgid "Network Plug-in is not detected. Network related features are unavailable." +msgstr "Complemento de red no detectado. Características relacionadas no disponibles." msgid "" "Preview only mode:\n" "The loaded file contains gcode only, Can not enter the Prepare page" msgstr "" "Previsualizar solo el modo:\n" -"El archivo cargado contiene solo G-Code, no puedo entrar a la página de " -"Preparación" +"El archivo cargado contiene solo G-Code, no puedo entrar a la página de Preparación" msgid "You can keep the modified presets to the new project or discard them" -msgstr "" -"Puedes mantener los preajustes modificados en el nuevo proyecto o " -"descartarlos" +msgstr "Puedes mantener los preajustes modificados en el nuevo proyecto o descartarlos" msgid "Creating a new project" msgstr "Creando un nuevo proyecto" @@ -4993,12 +4601,10 @@ msgstr "Cargar Proyecto" msgid "" "Failed to save the project.\n" -"Please check whether the folder exists online or if other programs open the " -"project file." +"Please check whether the folder exists online or if other programs open the project file." msgstr "" "Fallo salvando el proyecto.\n" -"Por favor, comprobar si la carpeta existe en línea o si otros programas " -"tienen abierto el archivo de proyecto." +"Por favor, comprobar si la carpeta existe en línea o si otros programas tienen abierto el archivo de proyecto." msgid "Save project" msgstr "Salvar proyecto" @@ -5016,15 +4622,11 @@ msgstr "descargando proyecto..." msgid "Project downloaded %d%%" msgstr "Proyecto descargado %d%%" -msgid "" -"Importing to Orca Slicer failed. Please download the file and manually " -"import it." -msgstr "" -"La importación a Bambu Studio ha fallado. Descargue el archivo e impórtelo " -"manualmente." +msgid "Importing to Orca Slicer failed. Please download the file and manually import it." +msgstr "La importación a Bambu Studio ha fallado. Descargue el archivo e impórtelo manualmente." msgid "Import SLA archive" -msgstr "" +msgstr "Importar archivo SLA" msgid "The selected file" msgstr "El archivo seleccionado" @@ -5066,8 +4668,7 @@ msgid "All objects will be removed, continue?" msgstr "Todos los objetos serán eliminados, deseas continuar?" msgid "The current project has unsaved changes, save it before continue?" -msgstr "" -"El proyecto actual tiene cambios sin guardar, ¿guardarlos antes de continuar?" +msgstr "El proyecto actual tiene cambios sin guardar, ¿guardarlos antes de continuar?" msgid "Remember my choice." msgstr "Recordar my elección." @@ -5088,39 +4689,30 @@ msgid "The provided file name is not valid." msgstr "El nombre de archivo proporcionado no es válido." msgid "The following characters are not allowed by a FAT file system:" -msgstr "" -"Los siguientes caracteres no están permitidos por un sistema de archivos FAT:" +msgstr "Los siguientes caracteres no están permitidos por un sistema de archivos FAT:" msgid "Save Sliced file as:" msgstr "Guardar el archivo laminado como:" #, c-format, boost-format -msgid "" -"The file %s has been sent to the printer's storage space and can be viewed " -"on the printer." -msgstr "" -"El archivo %s ha sido mandado al almacenamiento de la impresora y puede ser " -"visto en la impresora." +msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." +msgstr "El archivo %s ha sido mandado al almacenamiento de la impresora y puede ser visto en la impresora." + +msgid "Unable to perform boolean operation on model meshes. Only positive parts will be exported." +msgstr "Unable to perform boolean operation on model meshes. Only positive parts will be exported." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts " -"will be exported." -msgstr "" -"Unable to perform boolean operation on model meshes. Only positive parts " -"will be exported." - -msgid "" -"Are you sure you want to store original SVGs with their local paths into the " -"3MF file?\n" +"Are you sure you want to store original SVGs with their local paths into the 3MF file?\n" "If you hit 'NO', all SVGs in the project will not be editable any more." msgstr "" +"¿Está seguro que quiere almacenar SVGs originales con sus rutas locales dentro del archivo 3MF?\n" +"Si pulsa 'NO', todos los SVGs en el proyecto no serán editables nunca más." msgid "Private protection" -msgstr "" +msgstr "Protección privada" msgid "Is the printer ready? Is the print sheet in place, empty and clean?" -msgstr "" -"¿Está la impresora preparada? ¿Está la hoja en el sitio. limpia y vacía?" +msgstr "¿Está la impresora preparada? ¿Está la hoja en el sitio. limpia y vacía?" msgid "Upload and Print" msgstr "Cargar e imprimir" @@ -5139,12 +4731,10 @@ msgid "Send to printer" msgstr "Enviar a la impresora" msgid "Custom supports and color painting were removed before repairing." -msgstr "" -"Los soportes personalizados y la pintura de color se eliminaron antes de la " -"reparación." +msgstr "Los soportes personalizados y la pintura de color se eliminaron antes de la reparación." msgid "Optimize Rotation" -msgstr "" +msgstr "Optimizar Rotación" msgid "Invalid number" msgstr "Número inválido" @@ -5193,22 +4783,12 @@ msgstr "Triángulos: %1%\n" msgid "Tips:" msgstr "Consejos:" -msgid "" -"\"Fix Model\" feature is currently only on Windows. Please repair the model " -"on Orca Slicer(windows) or CAD softwares." -msgstr "" -"La característica \"Arreglar Modelo\" está actualmente solo en Windows. Por " -"favor, en Orca Slicer(windows) o el software CAD." +msgid "\"Fix Model\" feature is currently only on Windows. Please repair the model on Orca Slicer(windows) or CAD softwares." +msgstr "La característica \"Arreglar Modelo\" está actualmente solo en Windows. Por favor, en Orca Slicer(windows) o el software CAD." #, c-format, boost-format -msgid "" -"Plate% d: %s is not suggested to be used to print filament %s(%s). If you " -"still want to do this printing, please set this filament's bed temperature " -"to non zero." -msgstr "" -"Bandeja% d: %s no está sugerido para ser usado para imprimir filamento " -"%s(%s). Si usted aún quiere imprimir, por favor, seleccione 0 en la " -"temperatura de Bandeja." +msgid "Plate% d: %s is not suggested to be used to print filament %s(%s). If you still want to do this printing, please set this filament's bed temperature to non zero." +msgstr "Bandeja% d: %s no está sugerido para ser usado para imprimir filamento %s(%s). Si usted aún quiere imprimir, por favor, seleccione 0 en la temperatura de Bandeja." msgid "Switching the language requires application restart.\n" msgstr "El cambio de idioma requiere el reinicio de la aplicación.\n" @@ -5220,9 +4800,7 @@ msgid "Language selection" msgstr "Selección de Iidiomas" msgid "Switching application language while some presets are modified." -msgstr "" -"Cambio de idioma de la aplicación mientras se modifican algunas " -"preselecciones." +msgstr "Cambio de idioma de la aplicación mientras se modifican algunas preselecciones." msgid "Changing application language" msgstr "Cambiar el idioma de la aplicación" @@ -5287,20 +4865,14 @@ msgstr "Establece la página que se abre al inicio." msgid "Zoom to mouse position" msgstr "Hacer zoom en la posición del ratón" -msgid "" -"Zoom in towards the mouse pointer's position in the 3D view, rather than the " -"2D window center." -msgstr "" -"Hacer zoom hacia la posición del puntero de ratón en la vista 3D, en vez del " -"centro de la ventana 2D." +msgid "Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center." +msgstr "Hacer zoom hacia la posición del puntero de ratón en la vista 3D, en vez del centro de la ventana 2D." msgid "Use free camera" msgstr "Usar cámara libre" msgid "If enabled, use free camera. If not enabled, use constrained camera." -msgstr "" -"Si está activada, utiliza la cámara libre. Si no está activada, utiliza la " -"cámara restringida." +msgstr "Si está activada, utiliza la cámara libre. Si no está activada, utiliza la cámara restringida." msgid "Show splash screen" msgstr "Mostrar pantalla de inicio" @@ -5315,18 +4887,16 @@ msgid "If enabled, useful hints are displayed at startup." msgstr "Si está activado, las sugerencias útiles serán mostradas al inicio." msgid "Flushing volumes: Auto-calculate everytime the color changed." -msgstr "" +msgstr "Volumenes de descarga: Auto calcular en cada cambio de color." msgid "If enabled, auto-calculate everytime the color changed." -msgstr "" +msgstr "Si está activado, auto calcula en cada cambio de color." msgid "Presets" msgstr "Preajustes" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "" -"Sincronización automática de los preajustes del usuario (Impresora/Filamento/" -"Proceso)" +msgstr "Sincronización automática de los preajustes del usuario (Impresora/Filamento/Proceso)" msgid "User Sync" msgstr "Sincronización de usuario" @@ -5347,25 +4917,19 @@ msgid "Associate .3mf files to OrcaSlicer" msgstr "Asociar archivos .3mf a OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" -msgstr "" -"Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir " -"archivos .3mf" +msgstr "Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir archivos .3mf" msgid "Associate .stl files to OrcaSlicer" msgstr "Asociar archivos .stl a OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" -msgstr "" -"Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir " -"archivos .stl" +msgstr "Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir archivos .stl" msgid "Associate .step/.stp files to OrcaSlicer" msgstr "Asociar archivos .step/.stp a OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .step files" -msgstr "" -"Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir " -"archivos .step" +msgstr "Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir archivos .step" msgid "Maximum recent projects" msgstr "Proyectos recientes máximos" @@ -5377,16 +4941,13 @@ msgid "Clear my choice on the unsaved projects." msgstr "Limpiar mi elección de proyectos no guardados." msgid "No warnings when loading 3MF with modified G-codes" -msgstr "" +msgstr "No avisar cuando cargue archivos 3MF con G-Codes modificados" msgid "Auto-Backup" msgstr "Copia de seguridad automática" -msgid "" -"Backup your project periodically for restoring from the occasional crash." -msgstr "" -"Haga copia de seguridad periodicamente para restaurar en caso de fallo " -"ocasional." +msgid "Backup your project periodically for restoring from the occasional crash." +msgstr "Haga copia de seguridad periodicamente para restaurar en caso de fallo ocasional." msgid "every" msgstr "todo" @@ -5533,10 +5094,10 @@ msgid "Add/Remove materials" msgstr "Añadir/Borrar materiales" msgid "Select/Remove printers(system presets)" -msgstr "" +msgstr "Seleccionar/Borrar impresoras (preajustes del sistema)" msgid "Create printer" -msgstr "" +msgstr "Crear impresora" msgid "Incompatible" msgstr "Incompatible" @@ -5578,9 +5139,7 @@ msgid "Log Out" msgstr "Desconectarse" msgid "Slice all plate to obtain time and filament estimation" -msgstr "" -"Rebana todas las piezas para obtener una estimación del tiempo y del " -"filamento" +msgstr "Rebana todas las piezas para obtener una estimación del tiempo y del filamento" msgid "Packing project data into 3mf file" msgstr "Empaquetar los datos del proyecto en un archivo 3mf" @@ -5592,8 +5151,7 @@ msgid "Jump to model publish web page" msgstr "Ir a la página web de publicación de modelos" msgid "Note: The preparation may takes several minutes. Please be patiant." -msgstr "" -"Nota: La preparación puede llevar varios minutos. Por favor, sea paciente." +msgstr "Nota: La preparación puede llevar varios minutos. Por favor, sea paciente." msgid "Publish" msgstr "Publicar" @@ -5641,8 +5199,7 @@ msgstr "El preajuste \"%1%\" ya existe." #, boost-format msgid "Preset \"%1%\" already exists and is incompatible with current printer." -msgstr "" -"El preajuste \"%1%\" ya existe y es incompatible con la impresora actual." +msgstr "El preajuste \"%1%\" ya existe y es incompatible con la impresora actual." msgid "Please note that saving action will replace this preset" msgstr "Tenga en cuenta que la acción de guardar reemplazará este preajuste" @@ -5672,8 +5229,7 @@ msgstr "La impresora \"%1%\" está seleccionada con el preajuste \"%2%\"" #, boost-format msgid "Please choose an action with \"%1%\" preset after saving." -msgstr "" -"Por favor, elija una acción con \"%1%\" preestablecido después de guardar." +msgstr "Por favor, elija una acción con \"%1%\" preestablecido después de guardar." #, boost-format msgid "For \"%1%\", change \"%2%\" to \"%3%\" " @@ -5694,7 +5250,7 @@ msgid "(LAN)" msgstr "(Red local)" msgid "Search" -msgstr "" +msgstr "Buscar" msgid "My Device" msgstr "Mi dispositivo" @@ -5729,14 +5285,14 @@ msgstr "PLA Plate" msgid "Bambu Engineering Plate" msgstr "Bandeja de Ingeniería Bambú" -msgid "Bambu Smooth PEI Plate" -msgstr "" +msgid "Bamabu Smooth PEI Plate" +msgstr "Bandeja Lisa PEI Bambú" msgid "High temperature Plate" msgstr "Bandeja de Alta Temperatura" -msgid "Bambu Textured PEI Plate" -msgstr "" +msgid "Bamabu Textured PEI Plate" +msgstr "Bandeja Texturizada PEI Bambú" msgid "Send print job to" msgstr "Enviar el trabajo de impresión a" @@ -5772,91 +5328,51 @@ msgid "Synchronizing device information" msgstr "Sincronizando la información del dispositivo" msgid "Synchronizing device information time out" -msgstr "" -"Finalización del tiempo de sincronización de la información del dispositivo" +msgstr "Finalización del tiempo de sincronización de la información del dispositivo" msgid "Cannot send the print job when the printer is updating firmware" -msgstr "" -"No es posible enviar el trabajo cuando la impresora está actualizando el " -"firmware" +msgstr "No es posible enviar el trabajo cuando la impresora está actualizando el firmware" -msgid "" -"The printer is executing instructions. Please restart printing after it ends" -msgstr "" -"La impresora está ejecutando instrucciones. Por favor, reinicie la impresión " -"cuando termine" +msgid "The printer is executing instructions. Please restart printing after it ends" +msgstr "La impresora está ejecutando instrucciones. Por favor, reinicie la impresión cuando termine" msgid "The printer is busy on other print job" msgstr "La impresora está ocupada con otro trabajo de impresión" #, c-format, boost-format -msgid "" -"Filament %s exceeds the number of AMS slots. Please update the printer " -"firmware to support AMS slot assignment." -msgstr "" -"El %s del filamento excede el número de ranuras AMS. Por favor actualice el " -"firmwareimpresora para que soporte la asignación de ranuras AMS." +msgid "Filament %s exceeds the number of AMS slots. Please update the printer firmware to support AMS slot assignment." +msgstr "El %s del filamento excede el número de ranuras AMS. Por favor actualice el firmwareimpresora para que soporte la asignación de ranuras AMS." -msgid "" -"Filament exceeds the number of AMS slots. Please update the printer firmware " -"to support AMS slot assignment." -msgstr "" -"El %s del filamento excede el número de ranuras AMS. Por favor actualice el " -"firmwareimpresora para que soporte la asignación de ranuras AMS." +msgid "Filament exceeds the number of AMS slots. Please update the printer firmware to support AMS slot assignment." +msgstr "El %s del filamento excede el número de ranuras AMS. Por favor actualice el firmwareimpresora para que soporte la asignación de ranuras AMS." -msgid "" -"Filaments to AMS slots mappings have been established. You can click a " -"filament above to change its mapping AMS slot" -msgstr "" -"Se han establecido mapeos de filamentos a ranuras AMS. Puede hacer clic en " -"un filamento de arriba para cambiar su asignación de ranura AMS" +msgid "Filaments to AMS slots mappings have been established. You can click a filament above to change its mapping AMS slot" +msgstr "Se han establecido mapeos de filamentos a ranuras AMS. Puede hacer clic en un filamento de arriba para cambiar su asignación de ranura AMS" -msgid "" -"Please click each filament above to specify its mapping AMS slot before " -"sending the print job" -msgstr "" -"Por favor, haga clic en cada filamento de arriba para especificar su " -"asignación de ranura AMS antes de enviar el trabajo de impresión" +msgid "Please click each filament above to specify its mapping AMS slot before sending the print job" +msgstr "Por favor, haga clic en cada filamento de arriba para especificar su asignación de ranura AMS antes de enviar el trabajo de impresión" #, c-format, boost-format -msgid "" -"Filament %s does not match the filament in AMS slot %s. Please update the " -"printer firmware to support AMS slot assignment." -msgstr "" -"El filamento %s no coincide con el filamento la ranura AMS %s. Por favor " -"actualice el firmware de la impresora para que soporte la asignación de " -"ranuras AMS." +msgid "Filament %s does not match the filament in AMS slot %s. Please update the printer firmware to support AMS slot assignment." +msgstr "El filamento %s no coincide con el filamento la ranura AMS %s. Por favor actualice el firmware de la impresora para que soporte la asignación de ranuras AMS." -msgid "" -"Filament does not match the filament in AMS slot. Please update the printer " -"firmware to support AMS slot assignment." -msgstr "" -"El %s del filamento excede el número de ranuras AMS. Por favor actualice el " -"firmwareimpresora para que soporte la asignación de ranuras AMS." +msgid "Filament does not match the filament in AMS slot. Please update the printer firmware to support AMS slot assignment." +msgstr "El %s del filamento excede el número de ranuras AMS. Por favor actualice el firmwareimpresora para que soporte la asignación de ranuras AMS." -msgid "" -"The printer firmware only supports sequential mapping of filament => AMS " -"slot." -msgstr "" -"El firmware de la impresora solo soporta el mapeo secuencial de filamento => " -"ranura AMS." +msgid "The printer firmware only supports sequential mapping of filament => AMS slot." +msgstr "El firmware de la impresora solo soporta el mapeo secuencial de filamento => ranura AMS." msgid "An SD card needs to be inserted before printing." msgstr "Es necesario introducir una tarjeta SD antes de imprimir." msgid "The selected printer is incompatible with the chosen printer presets." -msgstr "" -"La impresora seleccionada es incompatible con los ajustes seleccionados." +msgstr "La impresora seleccionada es incompatible con los ajustes seleccionados." msgid "An SD card needs to be inserted to record timelapse." msgstr "Es necesario insertar una tarjeta SD para guardar el timelapse." -msgid "" -"Cannot send the print job to a printer whose firmware is required to get " -"updated." -msgstr "" -"No es posible enviar el trabajo de impresión a una impresora la cual " -"necesita una actualización de firmware." +msgid "Cannot send the print job to a printer whose firmware is required to get updated." +msgstr "No es posible enviar el trabajo de impresión a una impresora la cual necesita una actualización de firmware." msgid "Cannot send the print job for empty plate" msgstr "No es posible enviar el trabajo de impresión a una bandeja vacía" @@ -5864,16 +5380,11 @@ msgstr "No es posible enviar el trabajo de impresión a una bandeja vacía" msgid "This printer does not support printing all plates" msgstr "Esta impresora no soporta la impresión en todas las bandejas" -msgid "" -"When enable spiral vase mode, machines with I3 structure will not generate " -"timelapse videos." -msgstr "" -"Cuando active el modo vaso en espiral, las máquinas con estructura I3 no " -"generará videos timelapse." +msgid "When enable spiral vase mode, machines with I3 structure will not generate timelapse videos." +msgstr "Cuando active el modo vaso en espiral, las máquinas con estructura I3 no generará videos timelapse." -msgid "" -"Timelapse is not supported because Print sequence is set to \"By object\"." -msgstr "" +msgid "Timelapse is not supported because Print sequence is set to \"By object\"." +msgstr "El timelapse no está soportado porque la secuencia de impresión está configurada \"Por objeto\"." msgid "Errors" msgstr "Errores" @@ -5881,55 +5392,37 @@ msgstr "Errores" msgid "Please check the following:" msgstr "Por favor compruebe lo siguiente:" -msgid "" -"The printer type selected when generating G-Code is not consistent with the " -"currently selected printer. It is recommended that you use the same printer " -"type for slicing." -msgstr "" -"El tipo de impresora seleccionado cuando se genera el G-Code no tiene " -"consistencia con la impresora seleccionada actualmente. Es recomendable que " -"use el mismo tipo de impresora para laminar." +msgid "The printer type selected when generating G-Code is not consistent with the currently selected printer. It is recommended that you use the same printer type for slicing." +msgstr "El tipo de impresora seleccionado cuando se genera el G-Code no tiene consistencia con la impresora seleccionada actualmente. Es recomendable que use el mismo tipo de impresora para laminar." -msgid "" -"There are some unknown filaments in the AMS mappings. Please check whether " -"they are the required filaments. If they are okay, press \"Confirm\" to " -"start printing." -msgstr "" -"Hay algunos filamentos desconocidos en los mapeados AMS. Por favor, " -"compruebe si son los filamentos requeriso. Si lo son, presione \"Confirmar\" " -"para empezar a imprimir." +msgid "There are some unknown filaments in the AMS mappings. Please check whether they are the required filaments. If they are okay, press \"Confirm\" to start printing." +msgstr "Hay algunos filamentos desconocidos en los mapeados AMS. Por favor, compruebe si son los filamentos requeriso. Si lo son, presione \"Confirmar\" para empezar a imprimir." #, c-format, boost-format msgid "nozzle in preset: %s %s" -msgstr "" +msgstr "Boquilla en preajuste: %s %s" #, c-format, boost-format msgid "nozzle memorized: %.1f %s" -msgstr "" +msgstr "Boquilla memorizada: %1f %s" -msgid "" -"Your nozzle diameter in preset is not consistent with memorized nozzle " -"diameter. Did you change your nozzle lately?" -msgstr "" +msgid "Your nozzle diameter in preset is not consistent with memorized nozzle diameter. Did you change your nozzle lately?" +msgstr "¿El diámetro de la boquilla en su configuración no corresponde con el diámetro memorizado? ¿Hizo un cambio de boquilla?" #, c-format, boost-format msgid "*Printing %s material with %s may cause nozzle damage" -msgstr "" +msgstr "*El material de impresión %s con %s podría causar daños en la boquilla" -msgid "" -"Please click the confirm button if you still want to proceed with printing." -msgstr "" -"Por favor, presione el botón de confirmar si aún quieres proceder con la " -"impresión." +msgid "Please click the confirm button if you still want to proceed with printing." +msgstr "Por favor, presione el botón de confirmar si aún quieres proceder con la impresión." msgid "Hardened Steel" -msgstr "" +msgstr "Acero endurecido" msgid "Stainless Steel" -msgstr "" +msgstr "Acero Inoxidable" -msgid "" -"Connecting to the printer. Unable to cancel during the connection process." +msgid "Connecting to the printer. Unable to cancel during the connection process." msgstr "Conectando a la impresora. No es posible cancelar durante la conexión." msgid "Preparing print job" @@ -5941,12 +5434,8 @@ msgstr "Datos anormales del archivo de impresión. Por favor, procese de nuevo" msgid "The name length exceeds the limit." msgstr "The name length exceeds the limit." -msgid "" -"Caution to use! Flow calibration on Textured PEI Plate may fail due to the " -"scattered surface." -msgstr "" -"¡Precaución! La calibración del caudal en la bandeja PEI texturizada puede " -"fallar debido a la superficie dispersa." +msgid "Caution to use! Flow calibration on Textured PEI Plate may fail due to the scattered surface." +msgstr "¡Precaución! La calibración del caudal en la bandeja PEI texturizada puede fallar debido a la superficie dispersa." msgid "Automatic flow calibration using Micro Lidar" msgstr "Calibración automática de caudal usando Micro Lidar" @@ -5958,18 +5447,13 @@ msgid "Send to Printer SD card" msgstr "Enviar a la tarjeta SD de la impresora" msgid "Cannot send the print task when the upgrade is in progress" -msgstr "" -"No se puede enviar la tarea de impresión cuando la actualización está en " -"curso" +msgstr "No se puede enviar la tarea de impresión cuando la actualización está en curso" msgid "An SD card needs to be inserted before send to printer SD card." -msgstr "" -"Es necesario insertar una tarjeta SD antes de enviar a la tarjeta SD de la " -"impresora." +msgstr "Es necesario insertar una tarjeta SD antes de enviar a la tarjeta SD de la impresora." msgid "The printer is required to be in the same LAN as Orca Slicer." -msgstr "" -"Es necesaria que la impresora esté en la misma red local que Orca Slicer." +msgstr "Es necesaria que la impresora esté en la misma red local que Orca Slicer." msgid "The printer does not support sending to printer SD card." msgstr "La impresora no soporta el envio directo a la tarjeta SD." @@ -5978,7 +5462,7 @@ msgid "Slice ok." msgstr "Laminado correcto." msgid "View all Daily tips" -msgstr "" +msgstr "Mostrar todos los consejos del día" msgid "Failed to create socket" msgstr "Failed to create socket" @@ -6022,18 +5506,8 @@ msgstr "Read and accept" msgid "Terms and Conditions" msgstr "Terms and Conditions" -msgid "" -"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " -"device, please read the termsand conditions.By clicking to agree to use your " -"Bambu Lab device, you agree to abide by the Privacy Policyand Terms of " -"Use(collectively, the \"Terms\"). If you do not comply with or agree to the " -"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." -msgstr "" -"Thank you for purchasing a Bambu Lab device. Before using your Bambu Lab " -"device, please read the terms and conditions. By clicking to agree to use " -"your Bambu Lab device, you agree to abide by the Privacy Policy and Terms of " -"Use (collectively, the \"Terms\"). If you do not comply with or agree to the " -"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." +msgid "Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab device, please read the termsand conditions.By clicking to agree to use your Bambu Lab device, you agree to abide by the Privacy Policyand Terms of Use(collectively, the \"Terms\"). If you do not comply with or agree to the Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." +msgstr "Thank you for purchasing a Bambu Lab device. Before using your Bambu Lab device, please read the terms and conditions. By clicking to agree to use your Bambu Lab device, you agree to abide by the Privacy Policy and Terms of Use (collectively, the \"Terms\"). If you do not comply with or agree to the Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." msgid "and" msgstr "and" @@ -6048,30 +5522,8 @@ msgid "Statement about User Experience Improvement Program" msgstr "Statement about User Experience Improvement Program" #, c-format, boost-format -msgid "" -"In the 3D Printing community, we learn from each other's successes and " -"failures to adjust our own slicing parameters and settings. %s follows the " -"same principle and uses machine learning to improve its performance from the " -"successes and failures of the vast number of prints by our users. We are " -"training %s to be smarter by feeding them the real-world data. If you are " -"willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will " -"not collect any Personal Data by which an individual can be identified " -"directly or indirectly, including without limitation names, addresses, " -"payment information, or phone numbers. By enabling this service, you agree " -"to these terms and the statement about Privacy Policy." -msgstr "" -"In the 3D Printing community, we learn from each other's successes and " -"failures to adjust our own slicing parameters and settings. %s follows the " -"same principle and uses machine learning to improve its performance from the " -"successes and failures of the vast number of prints by our users. We are " -"training %s to be smarter by feeding them the real-world data. If you are " -"willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will " -"not collect any Personal Data by which an individual can be identified " -"directly or indirectly, including without limitation names, addresses, " -"payment information, or phone numbers. By enabling this service, you agree " -"to these terms and the statement about Privacy Policy." +msgid "In the 3D Printing community, we learn from each other's successes and failures to adjust our own slicing parameters and settings. %s follows the same principle and uses machine learning to improve its performance from the successes and failures of the vast number of prints by our users. We are training %s to be smarter by feeding them the real-world data. If you are willing, this service will access information from your error logs and usage logs, which may include information described in Privacy Policy. We will not collect any Personal Data by which an individual can be identified directly or indirectly, including without limitation names, addresses, payment information, or phone numbers. By enabling this service, you agree to these terms and the statement about Privacy Policy." +msgstr "In the 3D Printing community, we learn from each other's successes and failures to adjust our own slicing parameters and settings. %s follows the same principle and uses machine learning to improve its performance from the successes and failures of the vast number of prints by our users. We are training %s to be smarter by feeding them the real-world data. If you are willing, this service will access information from your error logs and usage logs, which may include information described in Privacy Policy. We will not collect any Personal Data by which an individual can be identified directly or indirectly, including without limitation names, addresses, payment information, or phone numbers. By enabling this service, you agree to these terms and the statement about Privacy Policy." msgid "Statement on User Experience Improvement Plan" msgstr "Statement on User Experience Improvement Plan" @@ -6089,9 +5541,7 @@ msgid "Please log in first." msgstr "Por favor, identifíquese primero." msgid "There was a problem connecting to the printer. Please try again." -msgstr "" -"Ha habido un problema de conexión con la impresora. Por favor, inténtelo de " -"nuevo." +msgstr "Ha habido un problema de conexión con la impresora. Por favor, inténtelo de nuevo." msgid "Failed to log out." msgstr "No se ha podido cerrar la sesión." @@ -6108,36 +5558,23 @@ msgid "Search in preset" msgstr "Buscar en los ajustes por defecto" msgid "Click to reset all settings to the last saved preset." -msgstr "" -"Presionar para reiniciar todos los ajustes a los últimos ajustes por defecto." +msgstr "Presionar para reiniciar todos los ajustes a los últimos ajustes por defecto." -msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the " -"model without prime tower. Are you sure you want to disable prime tower?" -msgstr "" -"Se requiere la torre de purga para un timelapse suave. Puede haber defectos " -"modelos sin torre de purga.¿Está seguro de que quiere deshabilitar la torre " -"principal?" +msgid "Prime tower is required for smooth timeplase. There may be flaws on the model without prime tower. Are you sure you want to disable prime tower?" +msgstr "Se requiere la torre de purga para un timelapse suave. Puede haber defectos modelos sin torre de purga.¿Está seguro de que quiere deshabilitar la torre principal?" -msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the " -"model without prime tower. Do you want to enable prime tower?" -msgstr "" -"La torre de purga es necesaria para que el timelapse sea fluido. Puede haber " -"defectos en el modelo sin torre de purga. ¿Desea activar la torre de purga?" +msgid "Prime tower is required for smooth timelapse. There may be flaws on the model without prime tower. Do you want to enable prime tower?" +msgstr "La torre de purga es necesaria para que el timelapse sea fluido. Puede haber defectos en el modelo sin torre de purga. ¿Desea activar la torre de purga?" msgid "Still print by object?" -msgstr "" +msgstr "¿Seguir imprimiendo por objeto?" msgid "" -"We have added an experimental style \"Tree Slim\" that features smaller " -"support volume but weaker strength.\n" +"We have added an experimental style \"Tree Slim\" that features smaller support volume but weaker strength.\n" "We recommend using it with: 0 interface layers, 0 top distance, 2 walls." msgstr "" -"Hemos añadido al estilo esperimental \"Árboles Delgados\" que presenta " -"volumenes de soportemás pequeños con menos fuerza.\n" -"Recomendamos usarlo con: 0 capas de interfaz, 0 distancia superior, 2 " -"perímetros." +"Hemos añadido al estilo esperimental \"Árboles Delgados\" que presenta volumenes de soportemás pequeños con menos fuerza.\n" +"Recomendamos usarlo con: 0 capas de interfaz, 0 distancia superior, 2 perímetros." msgid "" "Change these settings automatically? \n" @@ -6148,50 +5585,34 @@ msgstr "" "Sí - Cambiar estos ajustes automaticamente\n" "No - No cambiar estos ajustes" -msgid "" -"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " -"settings: at least 2 interface layers, at least 0.1mm top z distance or " -"using support materials on interface." -msgstr "" -"Para \"Árboles fuertes\" y \"Árboles Híbridos\", recomendamos lo siguiente " -"ajustes: al menos 2 capas de interfaz, al menos 0.1mm de distancia superior " -"en z o usar materiales de soporte en la interfaz." +msgid "For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following settings: at least 2 interface layers, at least 0.1mm top z distance or using support materials on interface." +msgstr "Para \"Árboles fuertes\" y \"Árboles Híbridos\", recomendamos lo siguiente ajustes: al menos 2 capas de interfaz, al menos 0.1mm de distancia superior en z o usar materiales de soporte en la interfaz." msgid "" -"When using support material for the support interface, We recommend the " -"following settings:\n" -"0 top z distance, 0 interface spacing, concentric pattern and disable " -"independent support layer height" +"When using support material for the support interface, We recommend the following settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable independent support layer height" msgstr "" -"Cuando se use material de soporte para las interfaces de soporte, " -"recomendamos los siguientes ajustes:\n" -"distancia z0, espaciado de interfaz 0, patrón concéntrico y desactivar " -"altura de soporte independiente de altura de capa" +"Cuando se use material de soporte para las interfaces de soporte, recomendamos los siguientes ajustes:\n" +"distancia z0, espaciado de interfaz 0, patrón concéntrico y desactivar altura de soporte independiente de altura de capa" -msgid "" -"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " -"height limits ,this may cause printing quality issues." -msgstr "" +msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits ,this may cause printing quality issues." +msgstr "La altura de la capa excede el límite en Ajustes de la Impresora -> Extrusor -> Limite de Altura de Capa ,esto puede causar problemas de calidad de impresión." msgid "Adjust to the set range automatically? \n" -msgstr "" +msgstr "¿Desea ajustar el rango automáticamente?\n" msgid "Adjust" -msgstr "" +msgstr "Ajustar" msgid "Ignore" -msgstr "" +msgstr "Ignorar" msgid "" -"When recording timelapse without toolhead, it is recommended to add a " -"\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"When recording timelapse without toolhead, it is recommended to add a \"Timelapse Wipe Tower\" \n" +"by right-click the empty position of build plate and choose \"Add Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" -"Cuando grabamos timelapse sin cabezal de impresión, es recomendable añadir " -"un \"Torre de Purga de Intervalo\" \n" -"presionando con el botón derecho la posición vacía de la bandeja de " -"construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de Purga\"." +"Cuando grabamos timelapse sin cabezal de impresión, es recomendable añadir un \"Torre de Purga de Intervalo\" \n" +"presionando con el botón derecho la posición vacía de la bandeja de construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de Purga\"." msgid "Line width" msgstr "Ancho de extrusión" @@ -6206,13 +5627,13 @@ msgid "Wall generator" msgstr "Generador de perímetros" msgid "Walls and surfaces" -msgstr "" +msgstr "Paredes y superficies" msgid "Bridging" -msgstr "" +msgstr "Puentes" msgid "Overhangs" -msgstr "" +msgstr "Voladizos" msgid "Walls" msgstr "Perímetros" @@ -6229,15 +5650,8 @@ msgstr "Velocidad de otras capas" msgid "Overhang speed" msgstr "Velocidad del voladizo" -msgid "" -"This is the speed for various overhang degrees. Overhang degrees are " -"expressed as a percentage of line width. 0 speed means no slowing down for " -"the overhang degree range and wall speed is used" -msgstr "" -"Esta es la velocidad para varios grados de voladizo. Los grados de voladizo " -"se expresan como un porcentaje del ancho de la línea. La velocidad 0 " -"significa que no hay ralentización para el rango de grados de voladizo y se " -"utiliza la velocidad del perímetro" +msgid "This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of line width. 0 speed means no slowing down for the overhang degree range and wall speed is used" +msgstr "Esta es la velocidad para varios grados de voladizo. Los grados de voladizo se expresan como un porcentaje del ancho de la línea. La velocidad 0 significa que no hay ralentización para el rango de grados de voladizo y se utiliza la velocidad del perímetro" msgid "Bridge" msgstr "Puente" @@ -6284,20 +5698,16 @@ msgstr "Frecuente" #, c-format, boost-format msgid "" "Following line %s contains reserved keywords.\n" -"Please remove it, or will beat G-code visualization and printing time " -"estimation." +"Please remove it, or will beat G-code visualization and printing time estimation." msgid_plural "" "Following lines %s contain reserved keywords.\n" -"Please remove them, or will beat G-code visualization and printing time " -"estimation." +"Please remove them, or will beat G-code visualization and printing time estimation." msgstr[0] "" "La siguiente línea %s contiene palabras clave reservadas.\n" -"Por favor, elimínela, o vencerá la visualización del código G y la " -"estimación del tiempo de impresión." +"Por favor, elimínela, o vencerá la visualización del código G y la estimación del tiempo de impresión." msgstr[1] "" "Las siguientes líneas %s contienen palabras clave reservadas.\n" -"Por favor, elimínelas, o vencerá la visualización del código G y la " -"estimación del tiempo de impresión." +"Por favor, elimínelas, o vencerá la visualización del código G y la estimación del tiempo de impresión." msgid "Reserved keywords found" msgstr "Palabras clave utilizadas y encontradas" @@ -6315,9 +5725,7 @@ msgid "Recommended nozzle temperature" msgstr "Temperatura recomendada de la boquilla" msgid "Recommended nozzle temperature range of this filament. 0 means no set" -msgstr "" -"Rango de temperatura de boquilla recomendado para este filamento. 0 " -"significa que no se ajusta" +msgstr "Rango de temperatura de boquilla recomendado para este filamento. 0 significa que no se ajusta" msgid "Print chamber temperature" msgstr "Temperatura de la cámara" @@ -6334,47 +5742,26 @@ msgstr "Temperatura de la boquilla al imprimir" msgid "Cool plate" msgstr "Bandeja Fría" -msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament " -"does not support to print on the Cool Plate" -msgstr "" -"Esta es la temperatura de la bandeja cuando la Bandeja Fría está instalada. " -"Un valor de 0 significa que el filamento no admite la impresión en la " -"Bandeja Fría" +msgid "Bed temperature when cool plate is installed. Value 0 means the filament does not support to print on the Cool Plate" +msgstr "Esta es la temperatura de la bandeja cuando la Bandeja Fría está instalada. Un valor de 0 significa que el filamento no admite la impresión en la Bandeja Fría" msgid "Engineering plate" msgstr "Bandeja de Ingeniería" -msgid "" -"Bed temperature when engineering plate is installed. Value 0 means the " -"filament does not support to print on the Engineering Plate" -msgstr "" -"Esta es la temperatura de la cama cuando la Bandeja de Ingeniería está " -"instalada. Un valor de 0 significa que el filamento no admite la impresión " -"en la Bandeja de Ingeniería" +msgid "Bed temperature when engineering plate is installed. Value 0 means the filament does not support to print on the Engineering Plate" +msgstr "Esta es la temperatura de la cama cuando la Bandeja de Ingeniería está instalada. Un valor de 0 significa que el filamento no admite la impresión en la Bandeja de Ingeniería" msgid "Smooth PEI Plate / High Temp Plate" msgstr "Bandeja PEI suave / Bandeja de Alta Temperatura" -msgid "" -"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " -"Value 0 means the filament does not support to print on the Smooth PEI Plate/" -"High Temp Plate" -msgstr "" -"Temperatura de la cama cuando está instalada la bandeja PEI lisa/ Bandeja de " -"Alta Temperatura. El valor 0 significa que el filamento no admite la " -"impresión en la placa PEI lisa/placa de alta temperatura" +msgid "Bed temperature when Smooth PEI Plate/High temperature plate is installed. Value 0 means the filament does not support to print on the Smooth PEI Plate/High Temp Plate" +msgstr "Temperatura de la cama cuando está instalada la bandeja PEI lisa/ Bandeja de Alta Temperatura. El valor 0 significa que el filamento no admite la impresión en la placa PEI lisa/placa de alta temperatura" msgid "Textured PEI Plate" msgstr "Bandeja PEI Texturizada" -msgid "" -"Bed temperature when Textured PEI Plate is installed. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" -msgstr "" -"Temperatura del lecho cuando la Bandeja PEI Texturizada está instalada. El " -"valor 0 significa que el filamento no es compatible para imprimir en la " -"Bandeja PEI Texturizada" +msgid "Bed temperature when Textured PEI Plate is installed. Value 0 means the filament does not support to print on the Textured PEI Plate" +msgstr "Temperatura del lecho cuando la Bandeja PEI Texturizada está instalada. El valor 0 significa que el filamento no es compatible para imprimir en la Bandeja PEI Texturizada" msgid "Volumetric speed limitation" msgstr "Limitación de la velocidad volumétrica" @@ -6391,28 +5778,14 @@ msgstr "Ventilador de refrigeración de piezas" msgid "Min fan speed threshold" msgstr "Umbral de velocidad mínima del ventilador" -msgid "" -"Part cooling fan speed will start to run at min speed when the estimated " -"layer time is no longer than the layer time in setting. When layer time is " -"shorter than threshold, fan speed is interpolated between the minimum and " -"maximum fan speed according to layer printing time" -msgstr "" -"La velocidad del ventilador de refrigeración de la pieza comenzará a " -"funcionar a la velocidad mínima cuando el tiempo estimado de la capa no sea " -"superior al tiempo de la capa ajustado. Cuando el tiempo de la capa es " -"inferior al umbral, la velocidad del ventilador se interpola entre la " -"velocidad mínima y máxima del ventilador según el tiempo de impresión de la " -"capa" +msgid "Part cooling fan speed will start to run at min speed when the estimated layer time is no longer than the layer time in setting. When layer time is shorter than threshold, fan speed is interpolated between the minimum and maximum fan speed according to layer printing time" +msgstr "La velocidad del ventilador de refrigeración de la pieza comenzará a funcionar a la velocidad mínima cuando el tiempo estimado de la capa no sea superior al tiempo de la capa ajustado. Cuando el tiempo de la capa es inferior al umbral, la velocidad del ventilador se interpola entre la velocidad mínima y máxima del ventilador según el tiempo de impresión de la capa" msgid "Max fan speed threshold" msgstr "Umbral de velocidad máxima del ventilador" -msgid "" -"Part cooling fan speed will be max when the estimated layer time is shorter " -"than the setting value" -msgstr "" -"La velocidad del ventilador de la pieza será máxima cuando el tiempo de capa " -"estimado sea inferior al valor ajustado" +msgid "Part cooling fan speed will be max when the estimated layer time is shorter than the setting value" +msgstr "La velocidad del ventilador de la pieza será máxima cuando el tiempo de capa estimado sea inferior al valor ajustado" msgid "Auxiliary part cooling fan" msgstr "Ventilador de parte auxiliar" @@ -6445,8 +5818,7 @@ msgid "Ramming settings" msgstr "Parámetros de Ramming" msgid "Toolchange parameters with multi extruder MM printers" -msgstr "" -"Parámetros de cambio de herramienta para impresoras de varios extrusores MM" +msgstr "Parámetros de cambio de herramienta para impresoras de varios extrusores MM" msgid "Printable space" msgstr "Espacio imprimible" @@ -6473,7 +5845,7 @@ msgid "Machine end G-code" msgstr "G-Code final" msgid "Printing by object G-code" -msgstr "" +msgstr "G-Code de impresión por objeto" msgid "Before layer change G-code" msgstr "G-Code para antes del cambio de capa" @@ -6534,8 +5906,7 @@ msgid "" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" -"La opción Wipe no está disponible cuando se utiliza el modo Retracción de " -"Firmware.\n" +"La opción Wipe no está disponible cuando se utiliza el modo Retracción de Firmware.\n" "\n" "Debo desactivarla para activar la retracción de firmware?" @@ -6546,18 +5917,16 @@ msgid "Detached" msgstr "Separado" #, c-format, boost-format -msgid "" -"%d Filament Preset and %d Process Preset is attached to this printer. Those " -"presets would be deleted if the printer is deleted." -msgstr "" +msgid "%d Filament Preset and %d Process Preset is attached to this printer. Those presets would be deleted if the printer is deleted." +msgstr "El preajuste de Filamento %d y el preajuste de Proceso %d están adjuntos a esta impresora." msgid "Presets inherited by other presets can not be deleted!" -msgstr "" +msgstr "¡Los preajustes heredados de otros preajustes no pueden borrarse!" msgid "The following presets inherit this preset." msgid_plural "The following preset inherits this preset." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "El siguiente preajuste hereda de este otro." +msgstr[1] "Los siguientes preajustes heredan de este otro." #. TRN Remove/Delete #, boost-format @@ -6571,9 +5940,10 @@ msgstr[1] "Los siguientes preajustes también se eliminarán." msgid "" "Are you sure to delete the selected preset? \n" -"If the preset corresponds to a filament currently in use on your printer, " -"please reset the filament information for that slot." +"If the preset corresponds to a filament currently in use on your printer, please reset the filament information for that slot." msgstr "" +"¿Está seguro de que desea eliminar el preajuste seleccionado? \n" +"Si el preajuste corresponde a un filamento actualmente en uso en su impresora, restablezca la información del filamento para esa ranura." #, boost-format msgid "Are you sure to %1% the selected preset?" @@ -6586,12 +5956,10 @@ msgid "Set" msgstr "Ajuste" msgid "Click to reset current value and attach to the global value." -msgstr "" -"Haga clic para restablecer el valor actual y adjuntarlo al valor global." +msgstr "Haga clic para restablecer el valor actual y adjuntarlo al valor global." msgid "Click to drop current modify and reset to saved value." -msgstr "" -"Haga clic para dejar la modificación actual y restablecer el valor guardado." +msgstr "Haga clic para dejar la modificación actual y restablecer el valor guardado." msgid "Process Settings" msgstr "Ajustes del proceso" @@ -6636,8 +6004,7 @@ msgid "Keep the selected options." msgstr "Mantener las opciones seleccionadas." msgid "Transfer the selected options to the newly selected preset." -msgstr "" -"Transfiere las opciones seleccionadas a la nueva preselección seleccionada." +msgstr "Transfiere las opciones seleccionadas a la nueva preselección seleccionada." #, boost-format msgid "" @@ -6660,39 +6027,27 @@ msgid "Preset \"%1%\" contains the following unsaved changes:" msgstr "La preselección \"%1%\" contiene los siguientes cambios no guardados:" #, boost-format -msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it " -"contains the following unsaved changes:" -msgstr "" -"El preajuste \"%1%\" no es compatible con el nuevo perfil de la impresora y " -"contiene los siguientes cambios no guardados:" +msgid "Preset \"%1%\" is not compatible with the new printer profile and it contains the following unsaved changes:" +msgstr "El preajuste \"%1%\" no es compatible con el nuevo perfil de la impresora y contiene los siguientes cambios no guardados:" #, boost-format -msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it " -"contains the following unsaved changes:" -msgstr "" -"El preajuste \"%1%\" no es compatible con el nuevo perfil de proceso y " -"contiene los siguientes cambios no guardados:" +msgid "Preset \"%1%\" is not compatible with the new process profile and it contains the following unsaved changes:" +msgstr "El preajuste \"%1%\" no es compatible con el nuevo perfil de proceso y contiene los siguientes cambios no guardados:" #, boost-format msgid "" "You have changed some settings of preset \"%1%\". \n" -"Would you like to keep these changed settings (new value) after switching " -"preset?" +"Would you like to keep these changed settings (new value) after switching preset?" msgstr "" "Has modificado algunos ajustes del perfil \"%1%\". \n" -"¿Deseas mantener estas modificaciones en los ajustes (nuevo valor) después " -"de cambiar de perfil?" +"¿Deseas mantener estas modificaciones en los ajustes (nuevo valor) después de cambiar de perfil?" msgid "" "You have changed some preset settings. \n" -"Would you like to keep these changed settings (new value) after switching " -"preset?" +"Would you like to keep these changed settings (new value) after switching preset?" msgstr "" "Has cambiado algunos ajustes de perfil. \n" -"¿Deseas mantener estas modificaciones en los ajustes (nuevo valor) después " -"de cambiar de perfil?" +"¿Deseas mantener estas modificaciones en los ajustes (nuevo valor) después de cambiar de perfil?" msgid "Extruders count" msgstr "Contador de extrusores" @@ -6790,21 +6145,10 @@ msgid "Ramming customization" msgstr "Personalización de Ramming" msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" +"Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to properly shape the end of the unloaded filament so it does not prevent insertion of the new filament and can itself be reinserted later. This phase is important and different materials can require different extrusion speeds to get the good shape. For this reason, the extrusion rates during ramming are adjustable.\n" "\n" -"This is an expert-level setting, incorrect adjustment will likely lead to " -"jams, extruder wheel grinding into filament etc." -msgstr "" -"El moldeado de extremo se refiere a una extrusión rápida justo antes del " -"cambio de herramienta en la impresora MM de extrusor único. Su propósito es " -"dar una forma adecuada al final del filamento descargado para no impedir la " -"inserción del nuevo filamento, y que pueda ser reinsertada por si misma " -"posteriormente." +"This is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." +msgstr "El moldeado de extremo se refiere a una extrusión rápida justo antes del cambio de herramienta en la impresora MM de extrusor único. Su propósito es dar una forma adecuada al final del filamento descargado para no impedir la inserción del nuevo filamento, y que pueda ser reinsertada por si misma posteriormente." msgid "Total ramming time" msgstr "Tiempo total de Ramming" @@ -6821,16 +6165,17 @@ msgstr "Ancho de línea de Ramming" msgid "Ramming line spacing" msgstr "Espaciado de línea de moldeado de extremo" -msgid "Recalculate" -msgstr "" +msgid "Auto-Calc" +msgstr "Auto-Calc" + +msgid "Re-calculate" +msgstr "Recalcular" msgid "Flushing volumes for filament change" msgstr "Volúmenes de limpieza para el cambio de filamentos" -msgid "" -"Orca recalculates your flushing volumes everytime the filament colors " -"change. You can change this behavior in Preferences." -msgstr "" +msgid "Orca recalculates your flushing volumes everytime the filament colors change. You can change this behavior in Preferences." +msgstr "Orcaslicer podría recalcular su volumen de descarga todas las veces que el color cambie. Podría deshabilitar el auto calculo en Orcaslicer > Preferencias." msgid "Flushing volume (mm³) for each filament pair." msgstr "Volumen de limpieza (mm³) para cada par de filamentos." @@ -6853,17 +6198,16 @@ msgid "To" msgstr "A" msgid "Bambu Network plug-in not detected." -msgstr "" +msgstr "Plugin Red Bambú no detectado," msgid "Click here to download it." -msgstr "" +msgstr "Presione aquí para descargarlo." msgid "Login" msgstr "Inicio de sesión" msgid "The configuration package is changed in previous Config Guide" -msgstr "" -"El paquete de configuración se cambia en la Guía de configuración anterior" +msgstr "El paquete de configuración se cambia en la Guía de configuración anterior" msgid "Configuration package changed" msgstr "Paquete de configuración cambiado" @@ -6893,7 +6237,7 @@ msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "Mostrar/Ocultar el diálogo de ajustes de los dispositivos 3Dconnexion" msgid "Switch table page" -msgstr "" +msgstr "Cambiar de página de tabla" msgid "Show keyboard shortcuts list" msgstr "Muestra lista de atajos de teclado" @@ -6919,14 +6263,8 @@ msgstr "Shift+A" msgid "Shift+R" msgstr "Shift+R" -msgid "" -"Auto orientates selected objects or all objects.If there are selected " -"objects, it just orientates the selected ones.Otherwise, it will orientates " -"all objects in the current disk." -msgstr "" -"Orienta automáticamente los objetos seleccionados o todos los objetos.Si hay " -"objetos seleccionados, sólo orienta los seleccionados.En caso contrario, " -"orientará todos los objetos del disco actual." +msgid "Auto orientates selected objects or all objects.If there are selected objects, it just orientates the selected ones.Otherwise, it will orientates all objects in the current disk." +msgstr "Orienta automáticamente los objetos seleccionados o todos los objetos.Si hay objetos seleccionados, sólo orienta los seleccionados.En caso contrario, orientará todos los objetos del disco actual." msgid "Shift+Tab" msgstr "Shift+Tab" @@ -7088,16 +6426,13 @@ msgid "Space" msgstr "Espacio" msgid "Select the object/part and press space to change the name" -msgstr "" -"Seleccione el objeto/pieza y pulse la barra espaciadora para cambiar el " -"nombre" +msgstr "Seleccione el objeto/pieza y pulse la barra espaciadora para cambiar el nombre" msgid "Mouse click" msgstr "Clic del ratón" msgid "Select the object/part and mouse click to change the name" -msgstr "" -"Seleccione el objeto/pieza y haga clic con el ratón para cambiar el nombre" +msgstr "Seleccione el objeto/pieza y haga clic con el ratón para cambiar el nombre" msgid "Objects List" msgstr "Lista de Objetos" @@ -7109,12 +6444,10 @@ msgid "Vertical slider - Move active thumb Down" msgstr "Control deslizante vertical - Mover el pulgar activo hacia Abajo" msgid "Horizontal slider - Move active thumb Left" -msgstr "" -"Control deslizante horizontal - Mover el pulgar activo hacia la Izquierda" +msgstr "Control deslizante horizontal - Mover el pulgar activo hacia la Izquierda" msgid "Horizontal slider - Move active thumb Right" -msgstr "" -"Control deslizante horizontal - Mover el pulgar activo hacia la Derecha" +msgstr "Control deslizante horizontal - Mover el pulgar activo hacia la Derecha" msgid "On/Off one layer mode of the vertical slider" msgstr "Activar/Desactivar el modo de una capa del control deslizante vertical" @@ -7138,11 +6471,8 @@ msgstr "información de actualización de la versión %s:" msgid "Network plug-in update" msgstr "Actualizar plug-in de red" -msgid "" -"Click OK to update the Network plug-in when Orca Slicer launches next time." -msgstr "" -"Click en Aceptar para actualizar el plug-in de red cuando Orca Slicer vuelva " -"a iniciarse." +msgid "Click OK to update the Network plug-in when Orca Slicer launches next time." +msgstr "Click en Aceptar para actualizar el plug-in de red cuando Orca Slicer vuelva a iniciarse." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -7152,29 +6482,22 @@ msgid "New version of Orca Slicer" msgstr "Nueva versión de Orca Slicer" msgid "Skip this Version" -msgstr "" +msgstr "Saltar esta Versión" msgid "Done" msgstr "Hecho" msgid "Confirm and Update Nozzle" -msgstr "" +msgstr "Confirmar y Actualizar la Boquilla" msgid "LAN Connection Failed (Sending print file)" msgstr "Conexión de red fallida (Mandando archivo de impresión)" -msgid "" -"Step 1, please confirm Orca Slicer and your printer are in the same LAN." -msgstr "" -"Paso 1, por favor confirmar que Orca Slicer y tu impresora se encuentran en " -"la misma red local." +msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgstr "Paso 1, por favor confirmar que Orca Slicer y tu impresora se encuentran en la misma red local." -msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " -"on your printer, please correct them." -msgstr "" -"Paso 2, si la IP y el Código de Acceso de abajo son diferentes de los " -"valores actuales en su impresora, por favor, corríjalos." +msgid "Step 2, if the IP and Access Code below are different from the actual values on your printer, please correct them." +msgstr "Paso 2, si la IP y el Código de Acceso de abajo son diferentes de los valores actuales en su impresora, por favor, corríjalos." msgid "IP" msgstr "IP" @@ -7186,21 +6509,23 @@ msgid "Where to find your printer's IP and Access Code?" msgstr "¿Dónde encontrar la IP de su impresora y el Código de Acceso?" msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" +msgstr "Paso 3: Haga ping a la dirección IP para comprobar la perdida de paquetes y la latencia." msgid "Test" msgstr "Test" msgid "IP and Access Code Verified! You may close the window" -msgstr "" +msgstr "¡Ip y Código de Acceso Verificadas! ¡Debería cerrar esta ventana" msgid "Connection failed, please double check IP and Access Code" -msgstr "" +msgstr "Conexión fallida, por favor, compruebe la dirección IP y el Código de Acceso" msgid "" "Connection failed! If your IP and Access Code is correct, \n" "please move to step 3 for troubleshooting network issues" msgstr "" +"¡Conexión fallida!, si su dirección IP y el Código de Acceso son correctos.\n" +"por favor, pase al paso 3 para corregir problemas de red" msgid "Model:" msgstr "Modelo:" @@ -7221,7 +6546,7 @@ msgid "Idle" msgstr "Inactivo" msgid "Beta version" -msgstr "" +msgstr "Versión beta" msgid "Latest version" msgstr "Última versión" @@ -7235,30 +6560,14 @@ msgstr "Fallo Actualizando" msgid "Updating successful" msgstr "Actualización exitosa" -msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not " -"turn off the power while the printer is updating." -msgstr "" -"¿Estás seguro que deseas actualizar? Esto puede llevar sobre 10 minutos. No " -"apague mientras la impresora está actualizando." +msgid "Are you sure you want to update? This will take about 10 minutes. Do not turn off the power while the printer is updating." +msgstr "¿Estás seguro que deseas actualizar? Esto puede llevar sobre 10 minutos. No apague mientras la impresora está actualizando." -msgid "" -"An important update was detected and needs to be run before printing can " -"continue. Do you want to update now? You can also update later from 'Upgrade " -"firmware'." -msgstr "" -"Una actualización importante fue detectada y necesita ejecutarse antes de " -"que la impresión pueda continuar. ¿Quiere actualizar ahora? Puede actualizar " -"después desde \"Actualizar fimware\"." +msgid "An important update was detected and needs to be run before printing can continue. Do you want to update now? You can also update later from 'Upgrade firmware'." +msgstr "Una actualización importante fue detectada y necesita ejecutarse antes de que la impresión pueda continuar. ¿Quiere actualizar ahora? Puede actualizar después desde \"Actualizar fimware\"." -msgid "" -"The firmware version is abnormal. Repairing and updating are required before " -"printing. Do you want to update now? You can also update later on printer or " -"update next time starting the studio." -msgstr "" -"La versión de firmware es anormal. Es necesario reparar y actualizar antes " -"de imprimir. ¿Quieres actualizar ahora? Puedes actualizar al iniciar en el " -"siguiente arranque de la impresora o cuando arranque Orca Slicer." +msgid "The firmware version is abnormal. Repairing and updating are required before printing. Do you want to update now? You can also update later on printer or update next time starting the studio." +msgstr "La versión de firmware es anormal. Es necesario reparar y actualizar antes de imprimir. ¿Quieres actualizar ahora? Puedes actualizar al iniciar en el siguiente arranque de la impresora o cuando arranque Orca Slicer." msgid "Extension Board" msgstr "Placa de ampliación" @@ -7316,9 +6625,7 @@ msgid "Copying of file %1% to %2% failed: %3%" msgstr "La copia del archivo %1% a %2% falló: %3%" msgid "Need to check the unsaved changes before configuration updates." -msgstr "" -"Es necesario comprobar los cambios no guardados antes de actualizar la " -"configuración." +msgstr "Es necesario comprobar los cambios no guardados antes de actualizar la configuración." msgid "Configuration package updated to " msgstr "Paquete de configuración actualizado a " @@ -7326,12 +6633,8 @@ msgstr "Paquete de configuración actualizado a " msgid "Open G-code file:" msgstr "Abrir archivo G-Code:" -msgid "" -"One object has empty initial layer and can't be printed. Please Cut the " -"bottom or enable supports." -msgstr "" -"Un objeto tiene la primera capa vacía y no se puede imprimir. Por favor, " -"corte el fondo o habilite los soportes." +msgid "One object has empty initial layer and can't be printed. Please Cut the bottom or enable supports." +msgstr "Un objeto tiene la primera capa vacía y no se puede imprimir. Por favor, corte el fondo o habilite los soportes." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." @@ -7341,12 +6644,8 @@ msgstr "No se puede imprimir el objeto para la capa vacía entre %1% y %2%." msgid "Object: %1%" msgstr "Objeto: %1%" -msgid "" -"Maybe parts of the object at these height are too thin, or the object has " -"faulty mesh" -msgstr "" -"Tal vez las piezas del objeto a esa altura son demasiado finas, o el objeto " -"tiene una malla defectuosa" +msgid "Maybe parts of the object at these height are too thin, or the object has faulty mesh" +msgstr "Tal vez las piezas del objeto a esa altura son demasiado finas, o el objeto tiene una malla defectuosa" msgid "No object can be printed. Maybe too small" msgstr "No se puede imprimir ningún objeto. Tal vez sea demasiado pequeño" @@ -7359,9 +6658,7 @@ msgstr "" "\n" msgid "Please check the custom G-code or use the default custom G-code." -msgstr "" -"Por favor, compruebe el G-Code personalizado o utilice el G-Code " -"personalizado por defecto." +msgstr "Por favor, compruebe el G-Code personalizado o utilice el G-Code personalizado por defecto." #, boost-format msgid "Generating G-code: layer %1%" @@ -7408,16 +6705,10 @@ msgstr "Múltiple" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " -msgstr "" -"Ha fallado el cálculo del ancho de extrusión de %1%. No se puede obtener el " -"valor de \"%2%\". " +msgstr "Ha fallado el cálculo del ancho de extrusión de %1%. No se puede obtener el valor de \"%2%\". " -msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height " -"and extrusion width" -msgstr "" -"Espaciado no válido suministrado a Flow::with_spacing(), comprueba la altura " -"de su capa y el ancho de extrusión." +msgid "Invalid spacing supplied to Flow::with_spacing(), check your layer height and extrusion width" +msgstr "Espaciado no válido suministrado a Flow::with_spacing(), comprueba la altura de su capa y el ancho de extrusión." msgid "undefined error" msgstr "error no definido" @@ -7513,11 +6804,8 @@ msgid "write callback failed" msgstr "la llamada de recuperación de la escritura ha fallado" #, boost-format -msgid "" -"%1% is too close to exclusion area, there may be collisions when printing." -msgstr "" -"%1% está muy cerca del área de exclusión, puede conllevar colisiones cuando " -"se imprime." +msgid "%1% is too close to exclusion area, there may be collisions when printing." +msgstr "%1% está muy cerca del área de exclusión, puede conllevar colisiones cuando se imprime." #, boost-format msgid "%1% is too close to others, and collisions may be caused." @@ -7528,13 +6816,10 @@ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% es demasiado alto, y se producirán colisiones." msgid " is too close to others, there may be collisions when printing." -msgstr "" -" está muy cerca de otros, puede conllevar colisiones cuando se imprime." +msgstr " está muy cerca de otros, puede conllevar colisiones cuando se imprime." msgid " is too close to exclusion area, there may be collisions when printing." -msgstr "" -" está muy cerca del área de exclusión, puede conllevar colisiones cuando se " -"imprime." +msgstr " está muy cerca del área de exclusión, puede conllevar colisiones cuando se imprime." msgid "Prime Tower" msgstr "Torre de Purga" @@ -7543,124 +6828,69 @@ msgid " is too close to others, and collisions may be caused.\n" msgstr " está demasiado cerca de otros, y se pueden producir colisiones.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr "" -" está demasiado cerca del área de exclusión, y se producirán colisiones.\n" +msgstr " está demasiado cerca del área de exclusión, y se producirán colisiones.\n" -msgid "" -"Can not print multiple filaments which have large difference of temperature " -"together. Otherwise, the extruder and nozzle may be blocked or damaged " -"during printing" -msgstr "" -"No se pueden imprimir juntos varios filamentos que tengan una gran " -"diferencia de temperatura. De lo contrario, el extrusor y la boquilla pueden " -"bloquearse o dañarse durante la impresión" +msgid "Can not print multiple filaments which have large difference of temperature together. Otherwise, the extruder and nozzle may be blocked or damaged during printing" +msgstr "No se pueden imprimir juntos varios filamentos que tengan una gran diferencia de temperatura. De lo contrario, el extrusor y la boquilla pueden bloquearse o dañarse durante la impresión" msgid "No extrusions under current settings." msgstr "No hay extrusiones con los ajustes actuales." -msgid "" -"Smooth mode of timelapse is not supported when \"by object\" sequence is " -"enabled." -msgstr "" -"Modo de timelapse suave no está soportado cuando la secuencia \"por objeto\" " -"está activada." +msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." +msgstr "Modo de timelapse suave no está soportado cuando la secuencia \"por objeto\" está activada." -msgid "" -"Please select \"By object\" print sequence to print multiple objects in " -"spiral vase mode." -msgstr "" -"Seleccione la secuencia de impresión \"Por objeto\" para imprimir varios " -"objetos en el modo de jarrón espiral." +msgid "Please select \"By object\" print sequence to print multiple objects in spiral vase mode." +msgstr "Seleccione la secuencia de impresión \"Por objeto\" para imprimir varios objetos en el modo de jarrón espiral." -msgid "" -"The spiral vase mode does not work when an object contains more than one " -"materials." -msgstr "" -"El modo de jarrón en espiral no funciona cuando un objeto contiene más de un " -"material." +msgid "The spiral vase mode does not work when an object contains more than one materials." +msgstr "El modo de jarrón en espiral no funciona cuando un objeto contiene más de un material." #, boost-format msgid "The object %1% exceeds the maximum build volume height." msgstr "El objeto %1% supera la altura máxima del volumen de construcción." #, boost-format -msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds " -"the maximum build volume height." -msgstr "" -"Mientras que el objeto %1% se ajusta al volumen de construcción, su última " -"capa excede la altura máxima del volumen de construcción." +msgid "While the object %1% itself fits the build volume, its last layer exceeds the maximum build volume height." +msgstr "Mientras que el objeto %1% se ajusta al volumen de construcción, su última capa excede la altura máxima del volumen de construcción." -msgid "" -"You might want to reduce the size of your model or change current print " -"settings and retry." -msgstr "" -"Es posible que desee reducir el tamaño de su modelo o cambiar la " -"configuración de impresión actual y volver a intentarlo." +msgid "You might want to reduce the size of your model or change current print settings and retry." +msgstr "Es posible que desee reducir el tamaño de su modelo o cambiar la configuración de impresión actual y volver a intentarlo." msgid "Variable layer height is not supported with Organic supports." -msgstr "" -"La altura de capa variable no es compatible con los soportes orgánicos." +msgstr "La altura de capa variable no es compatible con los soportes orgánicos." -msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." -msgstr "" +msgid "Different nozzle diameters and different filament diameters is not allowed when prime tower is enabled." +msgstr "Diámetros de boquillas diferentes y diámetros de filamento diferentes no están permitidos cuando la torre de purga está activada." -msgid "" -"The Wipe Tower is currently only supported with the relative extruder " -"addressing (use_relative_e_distances=1)." -msgstr "" +msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." +msgstr "Actualmente, la torre de limpieza sólo es compatible con el direccionamiento relativo del extrusor (use_relative_e_distances=1)." -msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." -msgstr "" +msgid "Ooze prevention is currently not supported with the prime tower enabled." +msgstr "Actualmente no se puede evitar el rezume con la torre principal activada." -msgid "" -"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " -"RepRapFirmware and Repetier G-code flavors." -msgstr "" +msgid "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." +msgstr "Actualmente, la torre de purga sólo es compatible con las versiones Marlin, RepRap/Sprinter, RepRapFirmware y Repetier G-Code." msgid "The prime tower is not supported in \"By object\" print." msgstr "La torre de purga no es compatible con la impresión \"Por objeto\"." -msgid "" -"The prime tower is not supported when adaptive layer height is on. It " -"requires that all objects have the same layer height." -msgstr "" -"La torre de purga no es compatible cuando la altura de capa adaptativa está " -"activada. Requiere que todos los objetos tengan la misma altura de capa." +msgid "The prime tower is not supported when adaptive layer height is on. It requires that all objects have the same layer height." +msgstr "La torre de purga no es compatible cuando la altura de capa adaptativa está activada. Requiere que todos los objetos tengan la misma altura de capa." msgid "The prime tower requires \"support gap\" to be multiple of layer height" -msgstr "" -"La torre de purga requiere que el \"hueco de apoyo\" sea múltiplo de la " -"altura de la capa" +msgstr "La torre de purga requiere que el \"hueco de apoyo\" sea múltiplo de la altura de la capa" msgid "The prime tower requires that all objects have the same layer heights" -msgstr "" -"La torre de purga requiere que todos los objetos tengan la misma altura de " -"capa" +msgstr "La torre de purga requiere que todos los objetos tengan la misma altura de capa" -msgid "" -"The prime tower requires that all objects are printed over the same number " -"of raft layers" -msgstr "" -"La torre de purga requiere que todos los objetos se impriman sobre el mismo " -"número de capas de base de impresión" +msgid "The prime tower requires that all objects are printed over the same number of raft layers" +msgstr "La torre de purga requiere que todos los objetos se impriman sobre el mismo número de capas de base de impresión" -msgid "" -"The prime tower requires that all objects are sliced with the same layer " -"heights." -msgstr "" -"La torre de purga requiere que todos los objetos se corten con las mismas " -"alturas de capa." +msgid "The prime tower requires that all objects are sliced with the same layer heights." +msgstr "La torre de purga requiere que todos los objetos se corten con las mismas alturas de capa." -msgid "" -"The prime tower is only supported if all objects have the same variable " -"layer height" -msgstr "" -"La torre de purga sólo se admite si todos los objetos tienen la misma altura " -"de capa variable" +msgid "The prime tower is only supported if all objects have the same variable layer height" +msgstr "La torre de purga sólo se admite si todos los objetos tienen la misma altura de capa variable" msgid "Too small line width" msgstr "Ancho de extrusión demasiado pequeño" @@ -7668,64 +6898,35 @@ msgstr "Ancho de extrusión demasiado pequeño" msgid "Too large line width" msgstr "Ancho de extrusión demasiado grande" -msgid "" -"The prime tower requires that support has the same layer height with object." -msgstr "" -"La torre de purga requiere que el soporte tenga la misma altura de capa con " -"el objeto." +msgid "The prime tower requires that support has the same layer height with object." +msgstr "La torre de purga requiere que el soporte tenga la misma altura de capa con el objeto." -msgid "" -"Organic support tree tip diameter must not be smaller than support material " -"extrusion width." -msgstr "" -"El diámetro de la punta del árbol de soporte orgánico no debe ser menor que " -"el ancho de extrusión del material de soporte." +msgid "Organic support tree tip diameter must not be smaller than support material extrusion width." +msgstr "El diámetro de la punta del árbol de soporte orgánico no debe ser menor que el ancho de extrusión del material de soporte." -msgid "" -"Organic support branch diameter must not be smaller than 2x support material " -"extrusion width." -msgstr "" -"El diámetro de la rama de soporte orgánico no debe ser menor que 2x el ancho " -"de extrusión del material de soporte." +msgid "Organic support branch diameter must not be smaller than 2x support material extrusion width." +msgstr "El diámetro de la rama de soporte orgánico no debe ser menor que 2x el ancho de extrusión del material de soporte." -msgid "" -"Organic support branch diameter must not be smaller than support tree tip " -"diameter." -msgstr "" -"El diámetro de la rama de soporte orgánico no debe ser menor que el diámetro " -"de la punta del árbol de soporte." +msgid "Organic support branch diameter must not be smaller than support tree tip diameter." +msgstr "El diámetro de la rama de soporte orgánico no debe ser menor que el diámetro de la punta del árbol de soporte." -msgid "" -"Support enforcers are used but support is not enabled. Please enable support." -msgstr "" -"Se utilizan las herramientas de aplicación de soporte pero el soporte no " -"está habilitado. Por favor, active el soporte." +msgid "Support enforcers are used but support is not enabled. Please enable support." +msgstr "Se utilizan las herramientas de aplicación de soporte pero el soporte no está habilitado. Por favor, active el soporte." msgid "Layer height cannot exceed nozzle diameter" msgstr "La altura de la capa no puede superar el diámetro de la boquilla" -msgid "" -"Relative extruder addressing requires resetting the extruder position at " -"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " -"layer_gcode." -msgstr "" -"El direccionamiento de extrusión relativa requiere reiniciar la posición del " -"extrusor en cada capa para evitar perdidas de precisión de punto flotante. " -"Añade \"G92 E0\" al código de capa." +msgid "Layer height cannot exceed the limit in Printer Settings -> Extruder -> Layer height limits" +msgstr "La altura de capa no puede exceder del limite en Configuración de Impresora -> Extrusor -> Limites de altura de capa" -msgid "" -"\"G92 E0\" was found in before_layer_gcode, which is incompatible with " -"absolute extruder addressing." -msgstr "" -"Se ha encontrado \"G92 E0\" en before_layer_gcode, el cual es incompatible " -"con el direccionamiento de extrusión absoluta." +msgid "Relative extruder addressing requires resetting the extruder position at each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to layer_gcode." +msgstr "El direccionamiento de extrusión relativa requiere reiniciar la posición del extrusor en cada capa para evitar perdidas de precisión de punto flotante. Añade \"G92 E0\" al código de capa." -msgid "" -"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " -"extruder addressing." -msgstr "" -"Se ha encontrado \"G92 E0\" en layer_gcode, el cual es incompatible con el " -"direccionamiento de extrusión absoluta." +msgid "\"G92 E0\" was found in before_layer_gcode, which is incompatible with absolute extruder addressing." +msgstr "Se ha encontrado \"G92 E0\" en before_layer_gcode, el cual es incompatible con el direccionamiento de extrusión absoluta." + +msgid "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute extruder addressing." +msgstr "Se ha encontrado \"G92 E0\" en layer_gcode, el cual es incompatible con el direccionamiento de extrusión absoluta." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" @@ -7749,15 +6950,8 @@ msgstr "Área imprimible" msgid "Bed exclude area" msgstr "Área excluida de la cama" -msgid "" -"Unprintable area in XY plane. For example, X1 Series printers use the front " -"left corner to cut filament during filament change. The area is expressed as " -"polygon by points in following format: \"XxY, XxY, ...\"" -msgstr "" -"Área excluida de la impresión en el plano XY. Por ejemplo, las impresoras de " -"la serie X1 utilizan la esquina delantera izquierda para cortar el filamento " -"durante el cambio de filamento. El área la delimita un polígono unido por " -"puntos en el siguiente formato: \"XxY, XxY, ...\"" +msgid "Unprintable area in XY plane. For example, X1 Series printers use the front left corner to cut filament during filament change. The area is expressed as polygon by points in following format: \"XxY, XxY, ...\"" +msgstr "Área excluida de la impresión en el plano XY. Por ejemplo, las impresoras de la serie X1 utilizan la esquina delantera izquierda para cortar el filamento durante el cambio de filamento. El área la delimita un polígono unido por puntos en el siguiente formato: \"XxY, XxY, ...\"" msgid "Bed custom texture" msgstr "Textura personalizada de cama" @@ -7768,36 +6962,20 @@ msgstr "Modelo personalizado de cama" msgid "Elephant foot compensation" msgstr "Compensación del pie de elefante" -msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot " -"effect" -msgstr "" -"Contraer la primera capa en la bandeja de impresión para compensar el efecto " -"de la pata de elefante" +msgid "Shrink the initial layer on build plate to compensate for elephant foot effect" +msgstr "Contraer la primera capa en la bandeja de impresión para compensar el efecto de la pata de elefante" msgid "Elephant foot compensation layers" msgstr "Capas de compensación de la pata de elefante" -msgid "" -"The number of layers on which the elephant foot compensation will be active. " -"The first layer will be shrunk by the elephant foot compensation value, then " -"the next layers will be linearly shrunk less, up to the layer indicated by " -"this value." -msgstr "" -"El número de capas en las que estará activa la compensación de pata de " -"elefante. La primera capa se encogerá por el valor de compensación de pata " -"de elefante, luego las siguientes capas se encogerán linealmente menos, " -"hasta la capa indicada por este valor." +msgid "The number of layers on which the elephant foot compensation will be active. The first layer will be shrunk by the elephant foot compensation value, then the next layers will be linearly shrunk less, up to the layer indicated by this value." +msgstr "El número de capas en las que estará activa la compensación de pata de elefante. La primera capa se encogerá por el valor de compensación de pata de elefante, luego las siguientes capas se encogerán linealmente menos, hasta la capa indicada por este valor." msgid "layers" msgstr "capas" -msgid "" -"Slicing height for each layer. Smaller layer height means more accurate and " -"more printing time" -msgstr "" -"Altura de corte para cada capa. Una altura de capa más pequeña significa más " -"precisión y más tiempo de impresión" +msgid "Slicing height for each layer. Smaller layer height means more accurate and more printing time" +msgstr "Altura de corte para cada capa. Una altura de capa más pequeña significa más precisión y más tiempo de impresión" msgid "Printable height" msgstr "Altura imprimible" @@ -7806,10 +6984,10 @@ msgid "Maximum printable height which is limited by mechanism of printer" msgstr "Altura máxima imprimible limitada por el mecanismo de la impresora" msgid "Preferred orientation" -msgstr "" +msgstr "Orientación preferida" msgid "Automatically orient stls on the Z-axis upon initial import" -msgstr "" +msgstr "Orientar automáticamente los stls en el eje Z en la importación inicial" msgid "Printer preset names" msgstr "Nombres de ajustes de la impresora" @@ -7817,39 +6995,20 @@ msgstr "Nombres de ajustes de la impresora" msgid "Hostname, IP or URL" msgstr "Nombre de host, IP o URL" -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" -msgstr "" -"OrcaSlicer puede subir archivos G-Code a una impresora. Este campo debería " -"contener el nombre de host, la dirección IP o la URL de la instancia de la " -"impresora. Se puede acceder a la impresora detrás de un proxy con la " -"autenticación básica activada por un nombre de usuario y contraseña en la " -"URL en el siguiente formato: https://nombredeusuario:" -"contraseña@tudirecciondeoctopi/" +msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance. Print host behind HAProxy with basic auth enabled can be accessed by putting the user name and password into the URL in the following format: https://username:password@your-octopi-address/" +msgstr "OrcaSlicer puede subir archivos G-Code a una impresora. Este campo debería contener el nombre de host, la dirección IP o la URL de la instancia de la impresora. Se puede acceder a la impresora detrás de un proxy con la autenticación básica activada por un nombre de usuario y contraseña en la URL en el siguiente formato: https://nombredeusuario:contraseña@tudirecciondeoctopi/" msgid "Device UI" msgstr "IU de dispositivo" -msgid "" -"Specify the URL of your device user interface if it's not same as print_host" -msgstr "" -"Especifica la URL de tu IU de dispositivo si no es el mismo que el host de " -"impresión" +msgid "Specify the URL of your device user interface if it's not same as print_host" +msgstr "Especifica la URL de tu IU de dispositivo si no es el mismo que el host de impresión" msgid "API Key / Password" msgstr "Clave API / Contraseña" -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." -msgstr "" -"OrcaSlicer puede cargar archivos G-Cpde a un host de impresora. Este campo " -"debería contener una clave API o una contraseña requerida para la " -"autenticación." +msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." +msgstr "OrcaSlicer puede cargar archivos G-Cpde a un host de impresora. Este campo debería contener una clave API o una contraseña requerida para la autenticación." msgid "Name of the printer" msgstr "Nombre de la impresora" @@ -7857,14 +7016,8 @@ msgstr "Nombre de la impresora" msgid "HTTPS CA File" msgstr "Archivo CA HTTPS" -msgid "" -"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " -"in crt/pem format. If left blank, the default OS CA certificate repository " -"is used." -msgstr "" -"Es posible especificar un archivo Certificado CA personalizado para " -"conexiones, en formato crt/pem. Si se deja en blanco, se usará el " -"reposittorio de certificados CA del SO." +msgid "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. If left blank, the default OS CA certificate repository is used." +msgstr "Es posible especificar un archivo Certificado CA personalizado para conexiones, en formato crt/pem. Si se deja en blanco, se usará el reposittorio de certificados CA del SO." msgid "User" msgstr "Usuario" @@ -7875,14 +7028,8 @@ msgstr "Contraseña" msgid "Ignore HTTPS certificate revocation checks" msgstr "Ignorar comprobaciones de revocación de certificado HTTPS" -msgid "" -"Ignore HTTPS certificate revocation checks in case of missing or offline " -"distribution points. One may want to enable this option for self signed " -"certificates if connection fails." -msgstr "" -"Ignorar comprobaciones de certificado de revocación HTTPS en caso de perder " -"o puntos de distribución sin conexión. Se debería activar esta opción de " -"certificados autofirmados si la conexión falla." +msgid "Ignore HTTPS certificate revocation checks in case of missing or offline distribution points. One may want to enable this option for self signed certificates if connection fails." +msgstr "Ignorar comprobaciones de certificado de revocación HTTPS en caso de perder o puntos de distribución sin conexión. Se debería activar esta opción de certificados autofirmados si la conexión falla." msgid "Names of presets related to the physical printer" msgstr "Nombres de preajustes relacionados por la impresora física" @@ -7900,23 +7047,13 @@ msgid "Avoid crossing wall" msgstr "Evitar cruzar perímetro" msgid "Detour and avoid to travel across wall which may cause blob on surface" -msgstr "" -"Desvíese y evite atravesar el perímetro, ya que puede provocar una mancha en " -"la superficie" +msgstr "Desvíese y evite atravesar el perímetro, ya que puede provocar una mancha en la superficie" msgid "Avoid crossing wall - Max detour length" msgstr "Evitar cruzar perímetro - Longitud de desvío máximo" -msgid "" -"Maximum detour distance for avoiding crossing wall. Don't detour if the " -"detour distance is large than this value. Detour length could be specified " -"either as an absolute value or as percentage (for example 50%) of a direct " -"travel path. Zero to disable" -msgstr "" -"Distancia de desvio máximo para evitar cruzar el perímetro. No lo evite si " -"la distancia de desvío es más alta que este valor. La distancia de desvío " -"podría tanto como un valor absoluto como pocentaje (por ejemplo 50%) de una " -"trayectoria de viaje directa. Cero para deshabilitar" +msgid "Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is large than this value. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path. Zero to disable" +msgstr "Distancia de desvio máximo para evitar cruzar el perímetro. No lo evite si la distancia de desvío es más alta que este valor. La distancia de desvío podría tanto como un valor absoluto como pocentaje (por ejemplo 50%) de una trayectoria de viaje directa. Cero para deshabilitar" msgid "mm or %" msgstr "mm o %" @@ -7924,39 +7061,20 @@ msgstr "mm o %" msgid "Other layers" msgstr "Otras capas" -msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Cool Plate" -msgstr "" -"Esta es la temperatura de la cama para las capas excepto la inicial. Un " -"valor de 0 significa que el filamento no admite la impresión en la Bandeja " -"Fría" +msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the Cool Plate" +msgstr "Esta es la temperatura de la cama para las capas excepto la inicial. Un valor de 0 significa que el filamento no admite la impresión en la Bandeja Fría" msgid "°C" msgstr "°C" -msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Engineering Plate" -msgstr "" -"Esta es la temperatura de la cama para las capas excepto la inicial. Un " -"valor de 0 significa que el filamento no admite la impresión en la Bandeja " -"de Ingeniería" +msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the Engineering Plate" +msgstr "Esta es la temperatura de la cama para las capas excepto la inicial. Un valor de 0 significa que el filamento no admite la impresión en la Bandeja de Ingeniería" -msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the High Temp Plate" -msgstr "" -"Esta es la temperatura de la cama para las capas excepto la inicial. Un " -"valor de 0 significa que el filamento no admite la impresión en la Bandeja " -"de Alta Temperatura" +msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the High Temp Plate" +msgstr "Esta es la temperatura de la cama para las capas excepto la inicial. Un valor de 0 significa que el filamento no admite la impresión en la Bandeja de Alta Temperatura" -msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" -msgstr "" -"Temperatura de cama para las capas excepto la inicial. El valor 0 significa " -"que el filamento no es compatible para imprimir en la Bandeja PEI Texturizada" +msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the Textured PEI Plate" +msgstr "Temperatura de cama para las capas excepto la inicial. El valor 0 significa que el filamento no es compatible para imprimir en la Bandeja PEI Texturizada" msgid "Initial layer" msgstr "Capa inicial" @@ -7964,34 +7082,17 @@ msgstr "Capa inicial" msgid "Initial layer bed temperature" msgstr "Temperatura inicial de la cama en la capa" -msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Cool Plate" -msgstr "" -"Esta es la temperatura de la cama de la primera capa. Un valor de 0 " -"significa que el filamento no admite la impresión en la Bandeja Fría" +msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the Cool Plate" +msgstr "Esta es la temperatura de la cama de la primera capa. Un valor de 0 significa que el filamento no admite la impresión en la Bandeja Fría" -msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Engineering Plate" -msgstr "" -"Esta es la temperatura de la cama de la primera capa. Un valor de 0 " -"significa que el filamento no admite la impresión en la Bandeja de Ingeniería" +msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the Engineering Plate" +msgstr "Esta es la temperatura de la cama de la primera capa. Un valor de 0 significa que el filamento no admite la impresión en la Bandeja de Ingeniería" -msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the High Temp Plate" -msgstr "" -"Esta es la temperatura de la cama de la primera capa. Un valor de 0 " -"significa que el filamento no admite la impresión en la Bandeja de Alta " -"Temperatura" +msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the High Temp Plate" +msgstr "Esta es la temperatura de la cama de la primera capa. Un valor de 0 significa que el filamento no admite la impresión en la Bandeja de Alta Temperatura" -msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Textured PEI Plate" -msgstr "" -"Temperatura del lecho de la primera capa. El valor 0 significa que el " -"filamento no es compatible para imprimir en la Bandeja PEI Texturizada" +msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the Textured PEI Plate" +msgstr "Temperatura del lecho de la primera capa. El valor 0 significa que el filamento no es compatible para imprimir en la Bandeja PEI Texturizada" msgid "Bed types supported by the printer" msgstr "Tipos de cama que admite la impresora" @@ -8011,191 +7112,104 @@ msgstr "Este G-Code se inserta en cada cambio de capa antes de levantar z" msgid "Bottom shell layers" msgstr "Capas inferiores de cubierta" -msgid "" -"This is the number of solid layers of bottom shell, including the bottom " -"surface layer. When the thickness calculated by this value is thinner than " -"bottom shell thickness, the bottom shell layers will be increased" -msgstr "" -"Es el número de capas sólidas de la carcasa inferior, incluida la capa " -"superficial inferior. Si el grosor calculado por este valor es menor que el " -"grosor del armazón inferior, las capas del armazón inferior se incrementarán" +msgid "This is the number of solid layers of bottom shell, including the bottom surface layer. When the thickness calculated by this value is thinner than bottom shell thickness, the bottom shell layers will be increased" +msgstr "Es el número de capas sólidas de la carcasa inferior, incluida la capa superficial inferior. Si el grosor calculado por este valor es menor que el grosor del armazón inferior, las capas del armazón inferior se incrementarán" msgid "Bottom shell thickness" msgstr "Espesor de la carcasa inferior" -msgid "" -"The number of bottom solid layers is increased when slicing if the thickness " -"calculated by bottom shell layers is thinner than this value. This can avoid " -"having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of bottom shell is absolutely determained by " -"bottom shell layers" -msgstr "" -"El número de capas sólidas del fondo se incrementa al cortar si el grosor " -"calculado por las capas del fondo es más fino que este valor. Esto puede " -"evitar tener una capa demasiado fina cuando la altura de la capa es pequeña. " -"0 significa que este ajuste está desactivado y el grosor de la capa inferior " -"está absolutamente determinado por las capas de la capa inferior" +msgid "The number of bottom solid layers is increased when slicing if the thickness calculated by bottom shell layers is thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that this setting is disabled and thickness of bottom shell is absolutely determained by bottom shell layers" +msgstr "El número de capas sólidas del fondo se incrementa al cortar si el grosor calculado por las capas del fondo es más fino que este valor. Esto puede evitar tener una capa demasiado fina cuando la altura de la capa es pequeña. 0 significa que este ajuste está desactivado y el grosor de la capa inferior está absolutamente determinado por las capas de la capa inferior" msgid "Force cooling for overhang and bridge" msgstr "Refrigeración forzada para el voladizo y el puente" -msgid "" -"Enable this option to optimize part cooling fan speed for overhang and " -"bridge to get better cooling" -msgstr "" -"Habilite esta opción para optimizar la velocidad del ventilador de " -"refrigeración de la pieza para el voladizo y el puente para obtener una " -"mejor refrigeración" +msgid "Enable this option to optimize part cooling fan speed for overhang and bridge to get better cooling" +msgstr "Habilite esta opción para optimizar la velocidad del ventilador de refrigeración de la pieza para el voladizo y el puente para obtener una mejor refrigeración" msgid "Fan speed for overhang" msgstr "Velocidad del ventilador para el voladizo" -msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang " -"wall which has large overhang degree. Forcing cooling for overhang and " -"bridge can get better quality for these part" -msgstr "" -"Forzar el ventilador de la pieza a esta velocidad cuando se imprime el " -"puente o el perímetro del voladizo que tiene un gran grado de voladizo. Al " -"forzar la refrigeración de los voladizos y puentes se puede obtener una " -"mejor calidad para estas piezas" +msgid "Force part cooling fan to be this speed when printing bridge or overhang wall which has large overhang degree. Forcing cooling for overhang and bridge can get better quality for these part" +msgstr "Forzar el ventilador de la pieza a esta velocidad cuando se imprime el puente o el perímetro del voladizo que tiene un gran grado de voladizo. Al forzar la refrigeración de los voladizos y puentes se puede obtener una mejor calidad para estas piezas" msgid "Cooling overhang threshold" msgstr "Umbral del voladizo de refrigeración" #, c-format -msgid "" -"Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width " -"of the line without support from lower layer. 0% means forcing cooling for " -"all outer wall no matter how much overhang degree" -msgstr "" -"Fuerza al ventilador de refrigeración a una velocidad específica cuando el " -"grado de voladizo de la pieza impresa excede este valor. Expresado como " -"porcentaje, indica la anchura de la línea sin soporte de la capa inferior. " -"0% m significa forzar la refrigeración de todo el perímetro exterior sin " -"importar el grado de voladizo" +msgid "Force cooling fan to be specific speed when overhang degree of printed part exceeds this value. Expressed as percentage which indicides how much width of the line without support from lower layer. 0% means forcing cooling for all outer wall no matter how much overhang degree" +msgstr "Fuerza al ventilador de refrigeración a una velocidad específica cuando el grado de voladizo de la pieza impresa excede este valor. Expresado como porcentaje, indica la anchura de la línea sin soporte de la capa inferior. 0% m significa forzar la refrigeración de todo el perímetro exterior sin importar el grado de voladizo" msgid "Bridge infill direction" msgstr "Ángulo del relleno en puente" -msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for " -"external bridges. Use 180°for zero angle." -msgstr "" -"Anulación del ángulo de puenteo. Si se deja a cero, el ángulo de puente se " -"calculará automáticamente. De lo contrario, se utilizará el ángulo " -"proporcionado para los puentes externos. Utilice 180° para el ángulo cero." +msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for external bridges. Use 180°for zero angle." +msgstr "Anulación del ángulo de puenteo. Si se deja a cero, el ángulo de puente se calculará automáticamente. De lo contrario, se utilizará el ángulo proporcionado para los puentes externos. Utilice 180° para el ángulo cero." msgid "Bridge density" msgstr "Densidad de puente" msgid "Density of external bridges. 100% means solid bridge. Default is 100%." -msgstr "" -"Densidad de puentes externos. 100% significa puente sólido. Por defecto es " -"100%." +msgstr "Densidad de puentes externos. 100% significa puente sólido. Por defecto es 100%." msgid "Bridge flow ratio" msgstr "Ratio de caudal en puentes" -msgid "" -"Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" -msgstr "" -"Disminuya este valor ligeramente (por ejemplo 0,9) para reducir la cantidad " -"de material para el puente, para mejorar el hundimiento" +msgid "Decrease this value slightly(for example 0.9) to reduce the amount of material for bridge, to improve sag" +msgstr "Disminuya este valor ligeramente (por ejemplo 0,9) para reducir la cantidad de material para el puente, para mejorar el hundimiento" msgid "Internal bridge flow ratio" -msgstr "" +msgstr "Ratio de flujo de puentes internos" -msgid "" -"This value governs the thickness of the internal bridge layer. This is the " -"first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." -msgstr "" +msgid "This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill. Decrease this value slightly (for example 0.9) to improve surface quality over sparse infill." +msgstr "Este valor regula el grosor de la capa puente interna. Es la primera capa sobre el relleno poco denso. Disminuya ligeramente este valor (por ejemplo, 0,9) para mejorar la calidad de la superficie sobre el relleno disperso." msgid "Top surface flow ratio" msgstr "Ratio de caudal en superficie superior" -msgid "" -"This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" -msgstr "" -"Este factor afecta a la cantidad de material de para relleno sólido " -"superior. Puede disminuirlo ligeramente para obtener un acabado suave de " -"superficie" +msgid "This factor affects the amount of material for top solid infill. You can decrease it slightly to have smooth surface finish" +msgstr "Este factor afecta a la cantidad de material de para relleno sólido superior. Puede disminuirlo ligeramente para obtener un acabado suave de superficie" msgid "Bottom surface flow ratio" msgstr "Ratio de caudal en superficie inferior" msgid "This factor affects the amount of material for bottom solid infill" -msgstr "" -"Este factor afecta a la cantidad de material para el relleno sólido inferior" +msgstr "Este factor afecta a la cantidad de material para el relleno sólido inferior" msgid "Precise wall(experimental)" msgstr "Pared precisa(experimental)" -msgid "" -"Improve shell precision by adjusting outer wall spacing. This also improves " -"layer consistency." -msgstr "" -"Mejorar precisión de la carcasa ajustando el espaciado del perímetro " -"exterior. Esto además mejora la consistencia de capa." +msgid "Improve shell precision by adjusting outer wall spacing. This also improves layer consistency." +msgstr "Mejorar precisión de la carcasa ajustando el espaciado del perímetro exterior. Esto además mejora la consistencia de capa." msgid "Only one wall on top surfaces" msgstr "Sólo un perímetro en las capas superiores" -msgid "" -"Use only one wall on flat top surface, to give more space to the top infill " -"pattern" -msgstr "" -"Sólo un perímetro en la capas superiores, para dar más espacio al patrón de " -"relleno superior" +msgid "Use only one wall on flat top surface, to give more space to the top infill pattern" +msgstr "Sólo un perímetro en la capas superiores, para dar más espacio al patrón de relleno superior" msgid "One wall threshold" msgstr "Umbral para generar un solo perímetro" #, c-format, boost-format msgid "" -"If a top surface has to be printed and it's partially covered by another " -"layer, it won't be considered at a top layer where its width is below this " -"value. This can be useful to not let the 'one perimeter on top' trigger on " -"surface that should be covered only by perimeters. This value can be a mm or " -"a % of the perimeter extrusion width.\n" -"Warning: If enabled, artifacts can be created is you have some thin features " -"on the next layer, like letters. Set this setting to 0 to remove these " -"artifacts." +"If a top surface has to be printed and it's partially covered by another layer, it won't be considered at a top layer where its width is below this value. This can be useful to not let the 'one perimeter on top' trigger on surface that should be covered only by perimeters. This value can be a mm or a % of the perimeter extrusion width.\n" +"Warning: If enabled, artifacts can be created is you have some thin features on the next layer, like letters. Set this setting to 0 to remove these artifacts." msgstr "" -"Si una superficie superior debe ser impresa y está parcialmente cubierta por " -"otra capa, no será considerada una capa superior donde su anchura esté por " -"debajo ese valor. Esto puede ser de utilidad para que no se active el ajuste " -"perímetro en la parte superior' en las capas que solo deberían ser cubiertas " -"por perímetros. Este valor puede ser en mm o un % o del perímetro de " -"extrusión.\n" -"Advertencia: Si se activa, se pueden crear imperfecciones si tiene alguna " -"característica fina en la siguiente capa, como letras. Ajuste a 0 esta " -"opción para borrar esas imperfecciones." +"Si una superficie superior debe ser impresa y está parcialmente cubierta por otra capa, no será considerada una capa superior donde su anchura esté por debajo ese valor. Esto puede ser de utilidad para que no se active el ajuste perímetro en la parte superior' en las capas que solo deberían ser cubiertas por perímetros. Este valor puede ser en mm o un % o del perímetro de extrusión.\n" +"Advertencia: Si se activa, se pueden crear imperfecciones si tiene alguna característica fina en la siguiente capa, como letras. Ajuste a 0 esta opción para borrar esas imperfecciones." msgid "Only one wall on first layer" msgstr "Solo un perímetro en la primera capa" -msgid "" -"Use only one wall on first layer, to give more space to the bottom infill " -"pattern" -msgstr "" -"Usar solo un perímetro en la primera capa, para dar más espacio en el patrón " -"de relleno inferior" +msgid "Use only one wall on first layer, to give more space to the bottom infill pattern" +msgstr "Usar solo un perímetro en la primera capa, para dar más espacio en el patrón de relleno inferior" msgid "Extra perimeters on overhangs" msgstr "Perímetros extra en voladizos" -msgid "" -"Create additional perimeter paths over steep overhangs and areas where " -"bridges cannot be anchored. " -msgstr "" -"Crear caminos de perímetros adicionales sobre voladizos pronunciados y áreas " -"donde los puentes no pueden ser anclados. " +msgid "Create additional perimeter paths over steep overhangs and areas where bridges cannot be anchored. " +msgstr "Crear caminos de perímetros adicionales sobre voladizos pronunciados y áreas donde los puentes no pueden ser anclados. " msgid "Reverse on odd" msgstr "Invertir en impar" @@ -8204,31 +7218,29 @@ msgid "Overhang reversal" msgstr "Inversión de voladizo" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse " -"direction on odd layers. This alternating pattern can drastically improve " -"steep overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse direction on odd layers. This alternating pattern can drastically improve steep overhangs.\n" "\n" -"This setting can also help reduce part warping due to the reduction of " -"stresses in the part walls." +"This setting can also help reduce part warping due to the reduction of stresses in the part walls." msgstr "" +"Extruya los perímetros que tienen una parte sobre un voladizo en sentido inverso en las capas impares. Este patrón alterno puede mejorar drásticamente los voladizos pronunciados.\n" +"\n" +"Este ajuste también puede ayudar a reducir el alabeo de la pieza debido a la reducción de tensiones en las paredes de la pieza." msgid "Reverse only internal perimeters" -msgstr "" +msgstr "Invertir solo los perímetros internos" msgid "" "Apply the reverse perimeters logic only on internal perimeters. \n" "\n" -"This setting greatly reduces part stresses as they are now distributed in " -"alternating directions. This should reduce part warping while also " -"maintaining external wall quality. This feature can be very useful for warp " -"prone material, like ABS/ASA, and also for elastic filaments, like TPU and " -"Silk PLA. It can also help reduce warping on floating regions over " -"supports.\n" +"This setting greatly reduces part stresses as they are now distributed in alternating directions. This should reduce part warping while also maintaining external wall quality. This feature can be very useful for warp prone material, like ABS/ASA, and also for elastic filaments, like TPU and Silk PLA. It can also help reduce warping on floating regions over supports.\n" "\n" -"For this setting to be the most effective, it is recomended to set the " -"Reverse Threshold to 0 so that all internal walls print in alternating " -"directions on odd layers irrespective of their overhang degree." +"For this setting to be the most effective, it is recomended to set the Reverse Threshold to 0 so that all internal walls print in alternating directions on odd layers irrespective of their overhang degree." msgstr "" +"Aplique la lógica de perímetros inversos sólo en los perímetros internos. \n" +"\n" +"Esta configuración reduce en gran medida las tensiones de la pieza, ya que ahora se distribuyen en direcciones alternas. Esto debería reducir deformaciones de la pieza mientras se mantiene la calidad de la pared externa. Esta característica puede ser muy útil para materiales propensos al alabeo, como ABS/ASA, y también para filamentos elásticos, como TPU y Silk PLA. También puede ayudar a reducir deformaciones en regiones flotantes sobre soportes.\n" +"\n" +"Para que este ajuste sea más eficaz, se recomienda establecer el Umbral inverso en 0 para que todas las paredes internas se impriman en direcciones alternas en las capas impares, independientemente de su grado de voladizo." msgid "Reverse threshold" msgstr "Umbral inverso" @@ -8238,12 +7250,10 @@ msgstr "Umbral de inversión de voladizo" #, c-format, boost-format msgid "" -"Number of mm the overhang need to be for the reversal to be considered " -"useful. Can be a % of the perimeter width.\n" +"Number of mm the overhang need to be for the reversal to be considered useful. Can be a % of the perimeter width.\n" "Value 0 enables reversal on every odd layers regardless." msgstr "" -"Número de mm que debe tener el voladizo para que la inversión se considere " -"útil. Puede ser un % o de la anchura del perímetro.\n" +"Número de mm que debe tener el voladizo para que la inversión se considere útil. Puede ser un % o de la anchura del perímetro.\n" "El valor 0 permite la inversión en todas las capas impares." msgid "Classic mode" @@ -8256,19 +7266,13 @@ msgid "Slow down for overhang" msgstr "Disminución de velocidad de voladizo" msgid "Enable this option to slow printing down for different overhang degree" -msgstr "" -"Habilite esta opción para ralentizar la impresión para diferentes grados de " -"voladizo" +msgstr "Habilite esta opción para ralentizar la impresión para diferentes grados de voladizo" msgid "Slow down for curled perimeters" msgstr "Reducir velocidad para perímetros curvados" -msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" -msgstr "" -"Active está opción para bajar la velocidad de impresión en las áreas donde " -"potencialmente podrían formarse perímetros curvados" +msgid "Enable this option to slow printing down in areas where potential curled perimeters may exist" +msgstr "Active está opción para bajar la velocidad de impresión en las áreas donde potencialmente podrían formarse perímetros curvados" msgid "mm/s or %" msgstr "mm/s o %" @@ -8285,12 +7289,8 @@ msgstr "mm/s" msgid "Internal" msgstr "Interno" -msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." -msgstr "" -"Velocidad del puente interno. Si el valor es expresado como porcentaje, será " -"calculado en base a bridge_speed. El valor por defecto es 150%." +msgid "Speed of internal bridge. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." +msgstr "Velocidad del puente interno. Si el valor es expresado como porcentaje, será calculado en base a bridge_speed. El valor por defecto es 150%." msgid "Brim width" msgstr "Ancho del borde de adherencia" @@ -8301,23 +7301,14 @@ msgstr "Distancia del modelo a la línea más externa del borde de adherencia" msgid "Brim type" msgstr "Tipo de borde de adherencia" -msgid "" -"This controls the generation of the brim at outer and/or inner side of " -"models. Auto means the brim width is analysed and calculated automatically." -msgstr "" -"Esto controla la generación del borde de adherencia en el lado exterior y/o " -"interior de los modelos. Auto significa que el ancho de borde de adherencia " -"es analizado y calculado automaticamente." +msgid "This controls the generation of the brim at outer and/or inner side of models. Auto means the brim width is analysed and calculated automatically." +msgstr "Esto controla la generación del borde de adherencia en el lado exterior y/o interior de los modelos. Auto significa que el ancho de borde de adherencia es analizado y calculado automaticamente." msgid "Brim-object gap" msgstr "Espacio borde de adherencia-objeto" -msgid "" -"A gap between innermost brim line and object can make brim be removed more " -"easily" -msgstr "" -"Un hueco entre la línea más interna del borde de adherencia y el objeto " -"puede hacer que el borde de adherencia se retire más fácilmente" +msgid "A gap between innermost brim line and object can make brim be removed more easily" +msgstr "Un hueco entre la línea más interna del borde de adherencia y el objeto puede hacer que el borde de adherencia se retire más fácilmente" msgid "Brim ears" msgstr "Orejas de borde" @@ -8335,19 +7326,16 @@ msgid "" msgstr "" "Máximo ángulo para dejar que el borde de oreja aparezca.\n" "Si se ajusta a 0, no se creará ningún borde.\n" -"Si se ajusta a ~180, se creará el borde en todo menos en las secciones " -"rectas." +"Si se ajusta a ~180, se creará el borde en todo menos en las secciones rectas." msgid "Brim ear detection radius" msgstr "Radio de detección de borde de oreja" msgid "" -"The geometry will be decimated before dectecting sharp angles. This " -"parameter indicates the minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This parameter indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" -"La geometría se verá diezmada antes de detectar angulos agudos. Este " -"parámetro indica la longitud mínima de desviación para el diezmado\n" +"La geometría se verá diezmada antes de detectar angulos agudos. Este parámetro indica la longitud mínima de desviación para el diezmado\n" "0 para desactivar" msgid "Compatible machine" @@ -8375,30 +7363,16 @@ msgid "By object" msgstr "Por objeto" msgid "Slow printing down for better layer cooling" -msgstr "" -"Reducir la velocidad de impresión para mejorar el refrigeración de las capas" +msgstr "Reducir la velocidad de impresión para mejorar el refrigeración de las capas" -msgid "" -"Enable this option to slow printing speed down to make the final layer time " -"not shorter than the layer time threshold in \"Max fan speed threshold\", so " -"that layer can be cooled for longer time. This can improve the cooling " -"quality for needle and small details" -msgstr "" -"Active esta opción para reducir la velocidad de impresión para que el tiempo " -"de la capa final no sea inferior al umbral de tiempo de la capa en \"Umbral " -"de velocidad máxima del ventilador\", de modo que la capa pueda enfriarse " -"durante más tiempo. Esto puede mejorar la calidad del refrigeración para las " -"agujas y los detalles pequeños" +msgid "Enable this option to slow printing speed down to make the final layer time not shorter than the layer time threshold in \"Max fan speed threshold\", so that layer can be cooled for longer time. This can improve the cooling quality for needle and small details" +msgstr "Active esta opción para reducir la velocidad de impresión para que el tiempo de la capa final no sea inferior al umbral de tiempo de la capa en \"Umbral de velocidad máxima del ventilador\", de modo que la capa pueda enfriarse durante más tiempo. Esto puede mejorar la calidad del refrigeración para las agujas y los detalles pequeños" msgid "Normal printing" msgstr "Impresión normal" -msgid "" -"The default acceleration of both normal printing and travel except initial " -"layer" -msgstr "" -"La aceleración por defecto tanto de la impresión normal como del " -"desplazamiento excepto la primera capa" +msgid "The default acceleration of both normal printing and travel except initial layer" +msgstr "La aceleración por defecto tanto de la impresión normal como del desplazamiento excepto la primera capa" msgid "mm/s²" msgstr "mm/s²" @@ -8407,33 +7381,25 @@ msgid "Default filament profile" msgstr "Perfil de filamento por defecto" msgid "Default filament profile when switch to this machine profile" -msgstr "" -"Perfil de filamento por defecto cuando se cambia a este perfil de máquina" +msgstr "Perfil de filamento por defecto cuando se cambia a este perfil de máquina" msgid "Default process profile" msgstr "Perfil de proceso por defecto" msgid "Default process profile when switch to this machine profile" -msgstr "" -"Perfil de proceso por defecto cuando se cambia a este perfil de máquina" +msgstr "Perfil de proceso por defecto cuando se cambia a este perfil de máquina" msgid "Activate air filtration" msgstr "Activar filtración de aire" msgid "Activate for better air filtration. G-code command: M106 P3 S(0-255)" -msgstr "" -"Activar para una mejor filtración del aire. Comando de G-Code: M106 P3 " -"S(0-255)" +msgstr "Activar para una mejor filtración del aire. Comando de G-Code: M106 P3 S(0-255)" msgid "Fan speed" msgstr "Velocidad del ventilador" -msgid "" -"Speed of exhuast fan during printing.This speed will overwrite the speed in " -"filament custom gcode" -msgstr "" -"Velocidad del ventilador de extracción durante la impresión, esta velocidad " -"sobrescribirá la velocidad en el GCode personalizado del filamento" +msgid "Speed of exhuast fan during printing.This speed will overwrite the speed in filament custom gcode" +msgstr "Velocidad del ventilador de extracción durante la impresión, esta velocidad sobrescribirá la velocidad en el GCode personalizado del filamento" msgid "Speed of exhuast fan after printing completes" msgstr "Velocidad del ventilador de extracción una vez finalizada la impresión" @@ -8441,56 +7407,32 @@ msgstr "Velocidad del ventilador de extracción una vez finalizada la impresión msgid "No cooling for the first" msgstr "No refrigerar las primeras" -msgid "" -"Close all cooling fan for the first certain layers. Cooling fan of the first " -"layer used to be closed to get better build plate adhesion" -msgstr "" -"Desactivar todos los ventiladores de refrigeración en las primeras capas. El " -"ventilador de la primera capa debe estar apagado para conseguir una mejor " -"adhesión de la bandeja de impresión" +msgid "Close all cooling fan for the first certain layers. Cooling fan of the first layer used to be closed to get better build plate adhesion" +msgstr "Desactivar todos los ventiladores de refrigeración en las primeras capas. El ventilador de la primera capa debe estar apagado para conseguir una mejor adhesión de la bandeja de impresión" msgid "Don't support bridges" msgstr "No soportar puentes" -msgid "" -"Don't support the whole bridge area which make support very large. Bridge " -"usually can be printing directly without support if not very long" -msgstr "" -"No apoye todo el área del puente que hace el apoyo muy grande. El puente " -"normalmente puede imprimirse directamente sin soporte si no es muy largo" +msgid "Don't support the whole bridge area which make support very large. Bridge usually can be printing directly without support if not very long" +msgstr "No apoye todo el área del puente que hace el apoyo muy grande. El puente normalmente puede imprimirse directamente sin soporte si no es muy largo" msgid "Thick bridges" msgstr "Puentes gruesos" -msgid "" -"If enabled, bridges are more reliable, can bridge longer distances, but may " -"look worse. If disabled, bridges look better but are reliable just for " -"shorter bridged distances." -msgstr "" -"Si están activados, los puentes son más fiables, pueden salvar distancias " -"más largas, pero pueden tener peor aspecto. Si están desactivados, los " -"puentes se ven mejor pero son fiables sólo para distancias más cortas." +msgid "If enabled, bridges are more reliable, can bridge longer distances, but may look worse. If disabled, bridges look better but are reliable just for shorter bridged distances." +msgstr "Si están activados, los puentes son más fiables, pueden salvar distancias más largas, pero pueden tener peor aspecto. Si están desactivados, los puentes se ven mejor pero son fiables sólo para distancias más cortas." msgid "Thick internal bridges" -msgstr "" +msgstr "Puentes gruesos internos" -msgid "" -"If enabled, thick internal bridges will be used. It's usually recommended to " -"have this feature turned on. However, consider turning it off if you are " -"using large nozzles." -msgstr "" +msgid "If enabled, thick internal bridges will be used. It's usually recommended to have this feature turned on. However, consider turning it off if you are using large nozzles." +msgstr "Si está activada, se utilizarán puentes internos gruesos. Normalmente se recomienda tener esta función activada. Sin embargo, considera desactivarla si utilizas boquillas grandes." msgid "Max bridge length" msgstr "Distancia máxima de puentes" -msgid "" -"Max length of bridges that don't need support. Set it to 0 if you want all " -"bridges to be supported, and set it to a very large value if you don't want " -"any bridges to be supported." -msgstr "" -"Esta es la longitud máxima de los puentes que no necesitan soporte. Ajústalo " -"a 0 si quieres que todos los puentes sean soportados, y ajústalo a un valor " -"muy grande si no quieres que ningún puente sea soportado." +msgid "Max length of bridges that don't need support. Set it to 0 if you want all bridges to be supported, and set it to a very large value if you don't want any bridges to be supported." +msgstr "Esta es la longitud máxima de los puentes que no necesitan soporte. Ajústalo a 0 si quieres que todos los puentes sean soportados, y ajústalo a un valor muy grande si no quieres que ningún puente sea soportado." msgid "End G-code" msgstr "G-Code final" @@ -8499,12 +7441,10 @@ msgid "End G-code when finish the whole printing" msgstr "Finalizar el G-Code cuando termine la impresión completa" msgid "Between Object Gcode" -msgstr "" +msgstr "Entre Objetos G-Code" -msgid "" -"Insert Gcode between objects. This parameter will only come into effect when " -"you print your models object by object" -msgstr "" +msgid "Insert Gcode between objects. This parameter will only come into effect when you print your models object by object" +msgstr "Insertar G-Code entre objetos. Este parámetro sólo tendrá efecto cuando imprima sus modelos objeto por objeto" msgid "End G-code when finish the printing of this filament" msgstr "Terminar el G-Code cuando se termine de imprimir este filamento" @@ -8512,12 +7452,8 @@ msgstr "Terminar el G-Code cuando se termine de imprimir este filamento" msgid "Ensure vertical shell thickness" msgstr "Detección de paredes delgadas" -msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)" -msgstr "" -"Añadir relleno sólido al lado de capas inclinadas para garantizar el grosor " -"de carcasa vertical (capas sólidas superior+inferior)" +msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)" +msgstr "Añadir relleno sólido al lado de capas inclinadas para garantizar el grosor de carcasa vertical (capas sólidas superior+inferior)" msgid "Top surface pattern" msgstr "Patrón de relleno superior" @@ -8553,136 +7489,87 @@ msgid "Bottom surface pattern" msgstr "Patrón de la superficie inferior" msgid "Line pattern of bottom surface infill, not bridge infill" -msgstr "" -"Patrón de líneas del relleno de la superficie inferior, no del relleno del " -"puente" +msgstr "Patrón de líneas del relleno de la superficie inferior, no del relleno del puente" msgid "Internal solid infill pattern" msgstr "Patrón de relleno sólido interno" -msgid "" -"Line pattern of internal solid infill. if the detect narrow internal solid " -"infill be enabled, the concentric pattern will be used for the small area." -msgstr "" -"Patrón lineal de relleno sólido interno, si se activa la detección de " -"relleno sólido interno nattow, se utilizará el patrón concéntrico para el " -"área pequeña." +msgid "Line pattern of internal solid infill. if the detect narrow internal solid infill be enabled, the concentric pattern will be used for the small area." +msgstr "Patrón lineal de relleno sólido interno, si se activa la detección de relleno sólido interno nattow, se utilizará el patrón concéntrico para el área pequeña." -msgid "" -"Line width of outer wall. If expressed as a %, it will be computed over the " -"nozzle diameter." -msgstr "" -"Ancho de extrusión del perímetro externo. Si se expresa cómo %, se calculará " -"sobre el diámetro de la boquilla." +msgid "Line width of outer wall. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Ancho de extrusión del perímetro externo. Si se expresa cómo %, se calculará sobre el diámetro de la boquilla." -msgid "" -"Speed of outer wall which is outermost and visible. It's used to be slower " -"than inner wall speed to get better quality." -msgstr "" -"Velocidad del perímetro exterior, que es el más externo y visible. Se " -"utiliza para ser más lento que la velocidad del perímetro interior para " -"obtener una mejor calidad." +msgid "Speed of outer wall which is outermost and visible. It's used to be slower than inner wall speed to get better quality." +msgstr "Velocidad del perímetro exterior, que es el más externo y visible. Se utiliza para ser más lento que la velocidad del perímetro interior para obtener una mejor calidad." msgid "Small perimeters" msgstr "Perímetros pequeños" -msgid "" -"This separate setting will affect the speed of perimeters having radius <= " -"small_perimeter_threshold (usually holes). If expressed as percentage (for " -"example: 80%) it will be calculated on the outer wall speed setting above. " -"Set to zero for auto." -msgstr "" -"Este ajuste independiente afectará a la velocidad de los perímetros con " -"radio <= small_perimeter_threshold (normalmente orificios). Si se expresa " -"como porcentaje (por ejemplo: 80%) se calculará sobre el ajuste de velocidad " -"del perímetro exterior anterior. Póngalo a cero para auto." +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +msgstr "Este ajuste independiente afectará a la velocidad de los perímetros con radio <= small_perimeter_threshold (normalmente orificios). Si se expresa como porcentaje (por ejemplo: 80%) se calculará sobre el ajuste de velocidad del perímetro exterior anterior. Póngalo a cero para auto." msgid "Small perimeters threshold" msgstr "Umbral Perímetral Pequeño" -msgid "" -"This sets the threshold for small perimeter length. Default threshold is 0mm" -msgstr "" -"Esto configura el umbral para longitud de perímetro pequeño. El umbral por " -"defecto es 0mm" +msgid "This sets the threshold for small perimeter length. Default threshold is 0mm" +msgstr "Esto configura el umbral para longitud de perímetro pequeño. El umbral por defecto es 0mm" msgid "Walls printing order" -msgstr "" +msgstr "Orden de impresión de paredes" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls " -"can adhere to a neighouring perimeter while printing. However, this option " -"results in slightly reduced surface quality as the external perimeter is " -"deformed by being squashed to the internal perimeter.\n" +"Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional " -"accuracy as the external wall is printed undisturbed from an internal " -"perimeter. However, overhang performance will reduce as there is no internal " -"perimeter to print the external wall against. This option requires a minimum " -"of 3 walls to be effective as it prints the internal walls from the 3rd " -"perimeter onwards first, then the external perimeter and, finally, the first " -"internal perimeter. This option is recomended against the Outer/Inner option " -"in most cases. \n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recomended against the Outer/Inner option in most cases. \n" "\n" -"Use Outer/Inner for the same external wall quality and dimensional accuracy " -"benefits of Inner/Outer/Inner option. However, the z seams will appear less " -"consistent as the first extrusion of a new layer starts on a visible " -"surface.\n" +"Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface.\n" "\n" " " msgstr "" +"Imprima la secuencia de las paredes internas (interiores) y externas (exteriores). \n" +"\n" +"Utilice Interior/Exterior para obtener los mejores voladizos. Esto se debe a que las paredes salientes pueden adherirse a un perímetro vecino durante la impresión. Sin embargo, esta opción da como resultado una calidad de superficie ligeramente reducida, ya que el perímetro externo se deforma al aplastarse contra el perímetro interno.\n" +"\n" +"Utilice Interior/Exterior/Interior para obtener el mejor acabado de superficie exterior y precisión dimensional, ya que la pared exterior se imprime sin perturbaciones desde un perímetro interior. Sin embargo, el rendimiento del voladizo se reducirá al no haber un perímetro interno contra el que imprimir la pared externa. Esta opción requiere un mínimo de 3 paredes para ser efectiva, ya que imprime primero las paredes interiores a partir del 3er perímetro, después el perímetro exterior y, finalmente, el primer perímetro interior. En la mayoría de los casos, se recomienda utilizar esta opción en lugar de la opción Exterior/Interior. \n" +"\n" +"Utilice Exterior/Interior para obtener la misma calidad en las paredes exteriores y la misma precisión dimensional que con la opción Interior/Exterior/Interior. Sin embargo, las uniones Z parecerán menos consistentes ya que la primera extrusión de una nueva capa comienza en una superficie visible.\n" +" " msgid "Inner/Outer" -msgstr "" +msgstr "Interno/Externo" msgid "Outer/Inner" -msgstr "" +msgstr "Externo/Interno" msgid "Inner/Outer/Inner" -msgstr "" +msgstr "Interno/Externo/Interno" msgid "Print infill first" -msgstr "" +msgstr "Imprimir relleno primero" msgid "" -"Order of wall/infill. When the tickbox is unchecked the walls are printed " -"first, which works best in most cases.\n" +"Order of wall/infill. When the tickbox is unchecked the walls are printed first, which works best in most cases.\n" "\n" -"Printing walls first may help with extreme overhangs as the walls have the " -"neighbouring infill to adhere to. However, the infill will slighly push out " -"the printed walls where it is attached to them, resulting in a worse " -"external surface finish. It can also cause the infill to shine through the " -"external surfaces of the part." +"Printing walls first may help with extreme overhangs as the walls have the neighbouring infill to adhere to. However, the infill will slighly push out the printed walls where it is attached to them, resulting in a worse external surface finish. It can also cause the infill to shine through the external surfaces of the part." msgstr "" msgid "Height to rod" msgstr "Altura a la barra" -msgid "" -"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " -"by-object printing." -msgstr "" -"Distancia de la punta de la boquilla hasta la varilla baja. Usado para " -"evitar colisiones en las impresiones por objeto." +msgid "Distance of the nozzle tip to the lower rod. Used for collision avoidance in by-object printing." +msgstr "Distancia de la punta de la boquilla hasta la varilla baja. Usado para evitar colisiones en las impresiones por objeto." msgid "Height to lid" msgstr "Altura hasta la tapa" -msgid "" -"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" -"object printing." -msgstr "" -"Distancia de la punta de la boquilla a la tapa. Usado para evitar la " -"colisión con la impresión por objeto." +msgid "Distance of the nozzle tip to the lid. Used for collision avoidance in by-object printing." +msgstr "Distancia de la punta de la boquilla a la tapa. Usado para evitar la colisión con la impresión por objeto." -msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." -msgstr "" -"El radio de claridad alrededor del extrusor. Se utiliza para evitar la " -"colisión con la impresión por objeto." +msgid "Clearance radius around extruder. Used for collision avoidance in by-object printing." +msgstr "El radio de claridad alrededor del extrusor. Se utiliza para evitar la colisión con la impresión por objeto." msgid "Extruder Color" msgstr "Color del extrusor" @@ -8696,62 +7583,32 @@ msgstr "Offset del extrusor" msgid "Flow ratio" msgstr "Proporción de caudal" -msgid "" -"The material may have volumetric change after switching between molten state " -"and crystalline state. This setting changes all extrusion flow of this " -"filament in gcode proportionally. Recommended value range is between 0.95 " -"and 1.05. Maybe you can tune this value to get nice flat surface when there " -"has slight overflow or underflow" -msgstr "" -"El material puede tener un cambio volumétrico después de cambiar entre " -"estado fundido y estado cristalino. Este ajuste cambia proporcionalmente " -"todo el caudal de extrusión de este filamento en G-Code. El rango de valores " -"recomendado es entre 0.95 y 1.05. Tal vez usted puede ajustar este valor " -"para obtener una superficie plana adecuada cuando hay un ligero sobre caudal " -"o infra caudal" +msgid "The material may have volumetric change after switching between molten state and crystalline state. This setting changes all extrusion flow of this filament in gcode proportionally. Recommended value range is between 0.95 and 1.05. Maybe you can tune this value to get nice flat surface when there has slight overflow or underflow" +msgstr "El material puede tener un cambio volumétrico después de cambiar entre estado fundido y estado cristalino. Este ajuste cambia proporcionalmente todo el caudal de extrusión de este filamento en G-Code. El rango de valores recomendado es entre 0.95 y 1.05. Tal vez usted puede ajustar este valor para obtener una superficie plana adecuada cuando hay un ligero sobre caudal o infra caudal" msgid "Enable pressure advance" msgstr "Activar Avance de Presión Lineal" -msgid "" -"Enable pressure advance, auto calibration result will be overwriten once " -"enabled." -msgstr "" -"Al activar Avance de Presión Lineal, el resultado de auto calibración se " -"sobrescribirá." +msgid "Enable pressure advance, auto calibration result will be overwriten once enabled." +msgstr "Al activar Avance de Presión Lineal, el resultado de auto calibración se sobrescribirá." msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Pressure Advance(Klipper) AKA Factor de avance lineal(Marlin)" -msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, " -"it will be computed over the nozzle diameter." -msgstr "" -"Ancho de extrusión por defecto si otros anchos de línea no están a 0. Si se " -"expresa cómo %, se calculará sobre el diámetro de la boquilla." +msgid "Default line width if other line widths are set to 0. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Ancho de extrusión por defecto si otros anchos de línea no están a 0. Si se expresa cómo %, se calculará sobre el diámetro de la boquilla." msgid "Keep fan always on" msgstr "Mantener el ventilador siempre encendido" -msgid "" -"If enable this setting, part cooling fan will never be stoped and will run " -"at least at minimum speed to reduce the frequency of starting and stoping" -msgstr "" -"Si se activa este ajuste, el ventilador nunca se detendrá y funcionará al " -"menos a la velocidad mínima para reducir la frecuencia de arranque y parada" +msgid "If enable this setting, part cooling fan will never be stoped and will run at least at minimum speed to reduce the frequency of starting and stoping" +msgstr "Si se activa este ajuste, el ventilador nunca se detendrá y funcionará al menos a la velocidad mínima para reducir la frecuencia de arranque y parada" msgid "Layer time" msgstr "Tiempo de capa" -msgid "" -"Part cooling fan will be enabled for layers of which estimated time is " -"shorter than this value. Fan speed is interpolated between the minimum and " -"maximum fan speeds according to layer printing time" -msgstr "" -"El ventilador de refrigeración de la pieza se activará para las capas cuyo " -"tiempo estimado sea inferior a este valor. La velocidad del ventilador se " -"interpola entre las velocidades mínima y máxima del ventilador según el " -"tiempo de impresión de las capas" +msgid "Part cooling fan will be enabled for layers of which estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time" +msgstr "El ventilador de refrigeración de la pieza se activará para las capas cuyo tiempo estimado sea inferior a este valor. La velocidad del ventilador se interpola entre las velocidades mínima y máxima del ventilador según el tiempo de impresión de las capas" msgid "Default color" msgstr "Color por defecto" @@ -8768,22 +7625,11 @@ msgstr "Puede colocar sus anotaciones acerca del filamento aquí." msgid "Required nozzle HRC" msgstr "HRC de boquilla requerido" -msgid "" -"Minimum HRC of nozzle required to print the filament. Zero means no checking " -"of nozzle's HRC." -msgstr "" -"HRC mínimo de boquilla requerido para imprimir el filamento. Cero significa " -"no comprobar el HRC de la boquilla." +msgid "Minimum HRC of nozzle required to print the filament. Zero means no checking of nozzle's HRC." +msgstr "HRC mínimo de boquilla requerido para imprimir el filamento. Cero significa no comprobar el HRC de la boquilla." -msgid "" -"This setting stands for how much volume of filament can be melted and " -"extruded per second. Printing speed is limited by max volumetric speed, in " -"case of too high and unreasonable speed setting. Can't be zero" -msgstr "" -"Este ajuste representa la cantidad de volumen de filamento puede ser " -"derretido extruido por segundo. La velocidad de impresión está limitado por " -"cuanta velocidad, en caso de velocidad demasiado alta o no razonable. No " -"puede ser cero" +msgid "This setting stands for how much volume of filament can be melted and extruded per second. Printing speed is limited by max volumetric speed, in case of too high and unreasonable speed setting. Can't be zero" +msgstr "Este ajuste representa la cantidad de volumen de filamento puede ser derretido extruido por segundo. La velocidad de impresión está limitado por cuanta velocidad, en caso de velocidad demasiado alta o no razonable. No puede ser cero" msgid "mm³/s" msgstr "mm³/s" @@ -8792,42 +7638,27 @@ msgid "Filament load time" msgstr "Tiempo de carga de filamento" msgid "Time to load new filament when switch filament. For statistics only" -msgstr "" -"Tiempo para cargar un nuevo filamento cuando se cambia de filamento. Sólo " -"para estadísticas" +msgstr "Tiempo para cargar un nuevo filamento cuando se cambia de filamento. Sólo para estadísticas" msgid "Filament unload time" msgstr "Tiempo de descarga del filamento" msgid "Time to unload old filament when switch filament. For statistics only" -msgstr "" -"Tiempo para descargar el filamento viejo cuando se cambia de filamento. Sólo " -"para las estadísticas" +msgstr "Tiempo para descargar el filamento viejo cuando se cambia de filamento. Sólo para las estadísticas" -msgid "" -"Filament diameter is used to calculate extrusion in gcode, so it's important " -"and should be accurate" -msgstr "" -"El diámetro del filamento se utiliza para calcular la extrusión en el G-" -"Code, por lo que es importante y debe ser preciso" +msgid "Filament diameter is used to calculate extrusion in gcode, so it's important and should be accurate" +msgstr "El diámetro del filamento se utiliza para calcular la extrusión en el G-Code, por lo que es importante y debe ser preciso" msgid "Shrinkage" msgstr "Contracción" #, c-format, boost-format msgid "" -"Enter the shrinkage percentage that the filament will get after cooling " -"(94% if you measure 94mm instead of 100mm). The part will be scaled in xy to " -"compensate. Only the filament used for the perimeter is taken into account.\n" -"Be sure to allow enough space between objects, as this compensation is done " -"after the checks." +"Enter the shrinkage percentage that the filament will get after cooling (94% if you measure 94mm instead of 100mm). The part will be scaled in xy to compensate. Only the filament used for the perimeter is taken into account.\n" +"Be sure to allow enough space between objects, as this compensation is done after the checks." msgstr "" -"Introduzca el porcentaje de encogimiento que tendrá el filamento después de " -"enfriarse ('94% i' si mide 94mm en lugar de 100mm). La pieza se escalará en " -"xy para compensar. Sólo se tiene en cuenta el filamento utilizado para el " -"perímetro.\n" -"Asegúrese de dejar suficiente espacio entre los objetos, ya que esta " -"compensación se realiza después de las comprobaciones." +"Introduzca el porcentaje de encogimiento que tendrá el filamento después de enfriarse ('94% i' si mide 94mm en lugar de 100mm). La pieza se escalará en xy para compensar. Sólo se tiene en cuenta el filamento utilizado para el perímetro.\n" +"Asegúrese de dejar suficiente espacio entre los objetos, ya que esta compensación se realiza después de las comprobaciones." msgid "Loading speed" msgstr "Velocidad de carga" @@ -8844,121 +7675,62 @@ msgstr "Velocidad usada en la fase de carga temprana." msgid "Unloading speed" msgstr "Velocidad de descarga" -msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming)." -msgstr "" -"Velocidad usada para descargar el filamento en la torre de purga (no afecta " -"a la parte inicial de la descarga justo después del moldeado de extremo)." +msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." +msgstr "Velocidad usada para descargar el filamento en la torre de purga (no afecta a la parte inicial de la descarga justo después del moldeado de extremo)." msgid "Unloading speed at the start" msgstr "Velocidad inicial de descarga" -msgid "" -"Speed used for unloading the tip of the filament immediately after ramming." -msgstr "" -"Velocidad empleada para descargar la punta del filamento justo después del " -"moldeado de extremo." +msgid "Speed used for unloading the tip of the filament immediately after ramming." +msgstr "Velocidad empleada para descargar la punta del filamento justo después del moldeado de extremo." msgid "Delay after unloading" msgstr "Retraso tras descarga" -msgid "" -"Time to wait after the filament is unloaded. May help to get reliable " -"toolchanges with flexible materials that may need more time to shrink to " -"original dimensions." -msgstr "" -"Tiempo de espera después de la descarga de filamento. Esto debería ayudar a " -"unos cambios de herramienta confiables con materiales flexibles que " -"necesitan más tiempo para encogerse a las dimensiones originales." +msgid "Time to wait after the filament is unloaded. May help to get reliable toolchanges with flexible materials that may need more time to shrink to original dimensions." +msgstr "Tiempo de espera después de la descarga de filamento. Esto debería ayudar a unos cambios de herramienta confiables con materiales flexibles que necesitan más tiempo para encogerse a las dimensiones originales." msgid "Number of cooling moves" msgstr "Cantidad de movimientos de refrigeración" -msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves." -msgstr "" -"El filamento se enfría moviéndose hacía atrás y hacía delante en los tubos " -"de refrigeración. Especifique la cantidad de movimientos." +msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." +msgstr "El filamento se enfría moviéndose hacía atrás y hacía delante en los tubos de refrigeración. Especifique la cantidad de movimientos." msgid "Speed of the first cooling move" msgstr "Velocidad del primer movimiento de refrigeración" msgid "Cooling moves are gradually accelerating beginning at this speed." -msgstr "" -"Los movimiento de refrigeración van acelerando gradualmente a esta velocidad." +msgstr "Los movimiento de refrigeración van acelerando gradualmente a esta velocidad." msgid "Minimal purge on wipe tower" msgstr "Purga mínima en la torre de purga" -msgid "" -"After a tool change, the exact position of the newly loaded filament inside " -"the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." -msgstr "" -"Tras un cambio de herramienta, es posible que no se conozca la posición " -"exacta del filamento recién cargado dentro de la boquilla y que la presión " -"del filamento aún no sea estable. Antes de purgar el cabezal de impresión en " -"un relleno o un objeto de sacrificio, OrcaSlicer siempre cebará esta " -"cantidad de material en la torre de purga para producir sucesivas " -"extrusiones de relleno u objetos de sacrificio de forma fiable." +msgid "After a tool change, the exact position of the newly loaded filament inside the nozzle may not be known, and the filament pressure is likely not yet stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." +msgstr "Tras un cambio de herramienta, es posible que no se conozca la posición exacta del filamento recién cargado dentro de la boquilla y que la presión del filamento aún no sea estable. Antes de purgar el cabezal de impresión en un relleno o un objeto de sacrificio, OrcaSlicer siempre cebará esta cantidad de material en la torre de purga para producir sucesivas extrusiones de relleno u objetos de sacrificio de forma fiable." msgid "Speed of the last cooling move" msgstr "La velocidad del último movimiento de refrigeración" msgid "Cooling moves are gradually accelerating towards this speed." -msgstr "" -"Los movimientos de refrigeración se aceleran gradualmente hacía esta " -"velocidad." +msgstr "Los movimientos de refrigeración se aceleran gradualmente hacía esta velocidad." -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." -msgstr "" -"Tiempo que tarda el firmware de la impresora (o la Unidad Multi Material " -"2.0) en cargar un nuevo filamento durante un cambio de herramienta (al " -"ejecutar el T-Code). El estimador de tiempo del G-Code añade este tiempo al " -"tiempo total de impresión." +msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." +msgstr "Tiempo que tarda el firmware de la impresora (o la Unidad Multi Material 2.0) en cargar un nuevo filamento durante un cambio de herramienta (al ejecutar el T-Code). El estimador de tiempo del G-Code añade este tiempo al tiempo total de impresión." msgid "Ramming parameters" msgstr "Parámetros de moldeado de extremo" -msgid "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters." -msgstr "" -"El RammingDialog edita esta cadena y contiene los parámetros específicos de " -"moldeado de extremo." +msgid "This string is edited by RammingDialog and contains ramming specific parameters." +msgstr "El RammingDialog edita esta cadena y contiene los parámetros específicos de moldeado de extremo." -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." -msgstr "" -"Tiempo que tarda el firmware (para la unidad Multi Material 2.0) en " -"descargar el filamento durante el cambio de herramienta ( cuando se ejecuta " -"el T-Code). Esta duración se añade a la duración total de impresión estimada " -"del G-Code." +msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." +msgstr "Tiempo que tarda el firmware (para la unidad Multi Material 2.0) en descargar el filamento durante el cambio de herramienta ( cuando se ejecuta el T-Code). Esta duración se añade a la duración total de impresión estimada del G-Code." msgid "Enable ramming for multitool setups" msgstr "Activar moldeado de extremo para configuraciones multiherramienta" -msgid "" -"Perform ramming when using multitool printer (i.e. when the 'Single Extruder " -"Multimaterial' in Printer Settings is unchecked). When checked, a small " -"amount of filament is rapidly extruded on the wipe tower just before the " -"toolchange. This option is only used when the wipe tower is enabled." -msgstr "" -"Llevar a cabo el moldeado de extremo cuando se usa una impresora multi " -"herramienta (es decir, cuando el 'Extrusor Único Multimaterial' en los " -"Ajustes de Impresora está desmarcado). Cuando está marcado, una pequeña " -"cantidad de filamento es extruida rápidamente en la torre de purga, justo " -"antes del cambio de herramienta. Esta opción se usa solamente cuando la " -"torre de purga está activada." +msgid "Perform ramming when using multitool printer (i.e. when the 'Single Extruder Multimaterial' in Printer Settings is unchecked). When checked, a small amount of filament is rapidly extruded on the wipe tower just before the toolchange. This option is only used when the wipe tower is enabled." +msgstr "Llevar a cabo el moldeado de extremo cuando se usa una impresora multi herramienta (es decir, cuando el 'Extrusor Único Multimaterial' en los Ajustes de Impresora está desmarcado). Cuando está marcado, una pequeña cantidad de filamento es extruida rápidamente en la torre de purga, justo antes del cambio de herramienta. Esta opción se usa solamente cuando la torre de purga está activada." msgid "Multitool ramming volume" msgstr "Volumen de Ramming multiherramienta" @@ -8970,8 +7742,7 @@ msgid "Multitool ramming flow" msgstr "Flujo de Ramming multiherramienta" msgid "Flow used for ramming the filament before the toolchange." -msgstr "" -"Flujo usado por el Ramming de filamento antes del cambio de herramienta." +msgstr "Flujo usado por el Ramming de filamento antes del cambio de herramienta." msgid "Density" msgstr "Densidad" @@ -8988,32 +7759,20 @@ msgstr "El tipo de material del filamento" msgid "Soluble material" msgstr "Material soluble" -msgid "" -"Soluble material is commonly used to print support and support interface" -msgstr "" -"El material soluble se utiliza habitualmente para imprimir el soporte y la " -"interfaz de soporte" +msgid "Soluble material is commonly used to print support and support interface" +msgstr "El material soluble se utiliza habitualmente para imprimir el soporte y la interfaz de soporte" msgid "Support material" msgstr "Material de soporte" -msgid "" -"Support material is commonly used to print support and support interface" -msgstr "" -"El material de soporte se utiliza habitualmente para imprimir el soporte e " -"interfaces de soporte" +msgid "Support material is commonly used to print support and support interface" +msgstr "El material de soporte se utiliza habitualmente para imprimir el soporte e interfaces de soporte" msgid "Softening temperature" msgstr "Temperatura de ablandado" -msgid "" -"The material softens at this temperature, so when the bed temperature is " -"equal to or greater than it, it's highly recommended to open the front door " -"and/or remove the upper glass to avoid cloggings." -msgstr "" -"El material se reblandece a esta temperatura, por lo que cuando la " -"temperatura de la cama es igual o superior a ella, es muy recomendable abrir " -"la puerta frontal y/o retirar el cristal superior para evitar atascos." +msgid "The material softens at this temperature, so when the bed temperature is equal to or greater than it, it's highly recommended to open the front door and/or remove the upper glass to avoid cloggings." +msgstr "El material se reblandece a esta temperatura, por lo que cuando la temperatura de la cama es igual o superior a ella, es muy recomendable abrir la puerta frontal y/o retirar el cristal superior para evitar atascos." msgid "Price" msgstr "Precio" @@ -9036,20 +7795,14 @@ msgstr "(No definido)" msgid "Infill direction" msgstr "Ángulo del relleno" -msgid "" -"Angle for sparse infill pattern, which controls the start or main direction " -"of line" -msgstr "" -"Ángulo para el patrón de relleno de baja densidad, que controla el inicio o " -"la dirección principal de la línea" +msgid "Angle for sparse infill pattern, which controls the start or main direction of line" +msgstr "Ángulo para el patrón de relleno de baja densidad, que controla el inicio o la dirección principal de la línea" msgid "Sparse infill density" msgstr "Densidad de relleno" #, c-format, boost-format -msgid "" -"Density of internal sparse infill, 100% turns all sparse infill into solid " -"infill and internal solid infill pattern will be used" +msgid "Density of internal sparse infill, 100% turns all sparse infill into solid infill and internal solid infill pattern will be used" msgstr "" msgid "Sparse infill pattern" @@ -9092,26 +7845,11 @@ msgid "Sparse infill anchor length" msgstr "Longitud del anclaje de relleno de baja densidad" msgid "" -"Connect an infill line to an internal perimeter with a short segment of an " -"additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" -"Set this parameter to zero to disable anchoring perimeters connected to a " -"single infill line." +"Connect an infill line to an internal perimeter with a short segment of an additional perimeter. If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Slic3r tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than infill_anchor_max is found, the infill line is connected to a perimeter segment at just one side and the length of the perimeter segment taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a single infill line." msgstr "" -"Conectar una línea de relleno a un perímetro interno con un segmento corto " -"de un perímetro adicional. Si se expresa como porcentaje (ejemplo: 15%) este " -"es calculado sobre el ancho de extrusión de relleno. OrcaSlicer intenta " -"conectar dos líneas de relleno cercanas a un segmento de perímetro corto. Si " -"no se encuentra ningún segmento más corto que relleno_anclaje_max, la línea " -"de relleno se conecta a un semento de perímetro en un solo lado y la " -"longitud del ancho de segmento de perímetro escogido se limita a este " -"parámetro, pero no más largo que anclage_longitud_max. \n" -"Configue este parámetro a cero para deshabilitar los perímetros de anclaje " -"conectados a una sola línea de relleno." +"Conectar una línea de relleno a un perímetro interno con un segmento corto de un perímetro adicional. Si se expresa como porcentaje (ejemplo: 15%) este es calculado sobre el ancho de extrusión de relleno. OrcaSlicer intenta conectar dos líneas de relleno cercanas a un segmento de perímetro corto. Si no se encuentra ningún segmento más corto que relleno_anclaje_max, la línea de relleno se conecta a un semento de perímetro en un solo lado y la longitud del ancho de segmento de perímetro escogido se limita a este parámetro, pero no más largo que anclage_longitud_max. \n" +"Configue este parámetro a cero para deshabilitar los perímetros de anclaje conectados a una sola línea de relleno." msgid "0 (no open anchors)" msgstr "0 (no abrir anclajes)" @@ -9123,26 +7861,11 @@ msgid "Maximum length of the infill anchor" msgstr "Máxima longitud del relleno del anclaje" msgid "" -"Connect an infill line to an internal perimeter with a short segment of an " -"additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" -"If set to 0, the old algorithm for infill connection will be used, it should " -"create the same result as with 1000 & 0." +"Connect an infill line to an internal perimeter with a short segment of an additional perimeter. If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Slic3r tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than this parameter is found, the infill line is connected to a perimeter segment at just one side and the length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should create the same result as with 1000 & 0." msgstr "" -"Conectar la línea de relleno a un perímetro interno con un segmento corto de " -"un perímetro adicional. Si se expresa como porcentaje (por ejemplo: 15%) " -"este se calcula sobre el ancho de relleno de extrusión. OrcaSlicer intenta " -"conectar dos líneas de relleno cercanas a un segmento de perímetro corto. Si " -"no hay ningún segmento más corto que este parámetro, esta líena de relleno " -"se conecta a un segmento de perímetro solamente a un lado y la longitud del " -"segmento de perìmetro escogida se limita a relleno_anclaje, pero no más alto " -"que este parámetro. \n" -"Si se deja a 0, el algoritmo antiguo para conexión de relleno se usará, esto " -"debería drear el mismo resultado que con 1000 y 0." +"Conectar la línea de relleno a un perímetro interno con un segmento corto de un perímetro adicional. Si se expresa como porcentaje (por ejemplo: 15%) este se calcula sobre el ancho de relleno de extrusión. OrcaSlicer intenta conectar dos líneas de relleno cercanas a un segmento de perímetro corto. Si no hay ningún segmento más corto que este parámetro, esta líena de relleno se conecta a un segmento de perímetro solamente a un lado y la longitud del segmento de perìmetro escogida se limita a relleno_anclaje, pero no más alto que este parámetro. \n" +"Si se deja a 0, el algoritmo antiguo para conexión de relleno se usará, esto debería drear el mismo resultado que con 1000 y 0." msgid "0 (Simple connect)" msgstr "0 (Conexión simple)" @@ -9156,51 +7879,26 @@ msgstr "Aceleración de los perímetros internos" msgid "Acceleration of travel moves" msgstr "Aceleración de movimiento de viaje" -msgid "" -"Acceleration of top surface infill. Using a lower value may improve top " -"surface quality" -msgstr "" -"Aceleración del relleno de la superficie superior. El uso de un valor más " -"bajo puede mejorar la calidad de la superficie superior" +msgid "Acceleration of top surface infill. Using a lower value may improve top surface quality" +msgstr "Aceleración del relleno de la superficie superior. El uso de un valor más bajo puede mejorar la calidad de la superficie superior" msgid "Acceleration of outer wall. Using a lower value can improve quality" -msgstr "" -"Aceleración del perímetro externo. Usando un valor menor puede mejorar la " -"calidad" +msgstr "Aceleración del perímetro externo. Usando un valor menor puede mejorar la calidad" -msgid "" -"Acceleration of bridges. If the value is expressed as a percentage (e.g. " -"50%), it will be calculated based on the outer wall acceleration." -msgstr "" -"Aceleración de los puentes. Si el valor es expresado como un porcentaje (por " -"ejemplo 50%), se calculará basándose en la aceleración del perímetro externo." +msgid "Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it will be calculated based on the outer wall acceleration." +msgstr "Aceleración de los puentes. Si el valor es expresado como un porcentaje (por ejemplo 50%), se calculará basándose en la aceleración del perímetro externo." msgid "mm/s² or %" msgstr "mm/s² o %" -msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." -msgstr "" -"Aceleración de relleno de baja densidad. Si el valor se expresa en " -"porcentaje (por ejemplo 100%), se calculará basándose en la aceleración por " -"defecto." +msgid "Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration." +msgstr "Aceleración de relleno de baja densidad. Si el valor se expresa en porcentaje (por ejemplo 100%), se calculará basándose en la aceleración por defecto." -msgid "" -"Acceleration of internal solid infill. If the value is expressed as a " -"percentage (e.g. 100%), it will be calculated based on the default " -"acceleration." -msgstr "" -"Aceleración de relleno sólido interno. Si el valor se expresa como " -"porcentaje (por ejemplo 100%), este se calculará basándose en la aceleración " -"por defecto." +msgid "Acceleration of internal solid infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration." +msgstr "Aceleración de relleno sólido interno. Si el valor se expresa como porcentaje (por ejemplo 100%), este se calculará basándose en la aceleración por defecto." -msgid "" -"Acceleration of initial layer. Using a lower value can improve build plate " -"adhesive" -msgstr "" -"Aceleración de la primera capa. El uso de un valor más bajo puede mejorar la " -"adherencia de la bandeja de impresión" +msgid "Acceleration of initial layer. Using a lower value can improve build plate adhesive" +msgstr "Aceleración de la primera capa. El uso de un valor más bajo puede mejorar la adherencia de la bandeja de impresión" msgid "Enable accel_to_decel" msgstr "Activar acel_a_decel" @@ -9212,8 +7910,7 @@ msgid "accel_to_decel" msgstr "accel_to_decel" #, c-format, boost-format -msgid "" -"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" msgstr "El max_accel_to_decel de Klipper se ajustará a este %% de aceleración" msgid "Jerk of outer walls" @@ -9234,22 +7931,14 @@ msgstr "Jerk de la primera capa" msgid "Jerk for travel" msgstr "Jerk de viaje" -msgid "" -"Line width of initial layer. If expressed as a %, it will be computed over " -"the nozzle diameter." -msgstr "" -"Ancho de extrusión de la primera capa. Si se expresa como %, se calculará " -"sobre el diámetro de la boquilla." +msgid "Line width of initial layer. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Ancho de extrusión de la primera capa. Si se expresa como %, se calculará sobre el diámetro de la boquilla." msgid "Initial layer height" msgstr "Altura de la primera capa" -msgid "" -"Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" -msgstr "" -"Altura de la primera capa. Hacer que la altura de la primera capa sea " -"ligeramente gruesa puede mejorar la adherencia de la bandeja de impresión" +msgid "Height of initial layer. Making initial layer height to be thick slightly can improve build plate adhension" +msgstr "Altura de la primera capa. Hacer que la altura de la primera capa sea ligeramente gruesa puede mejorar la adherencia de la bandeja de impresión" msgid "Speed of initial layer except the solid infill part" msgstr "Velocidad de la primera capa excepto la parte sólida de relleno" @@ -9269,57 +7958,32 @@ msgstr "Velocidad de viaje de primera capa" msgid "Number of slow layers" msgstr "Número de capas lentas" -msgid "" -"The first few layers are printed slower than normal. The speed is gradually " -"increased in a linear fashion over the specified number of layers." -msgstr "" -"Las primeras capas se imprimen más lentamente de lo normal. La velocidad se " -"incrementa gradualmente de una forma lineal sobre un número específico de " -"capas." +msgid "The first few layers are printed slower than normal. The speed is gradually increased in a linear fashion over the specified number of layers." +msgstr "Las primeras capas se imprimen más lentamente de lo normal. La velocidad se incrementa gradualmente de una forma lineal sobre un número específico de capas." msgid "Initial layer nozzle temperature" msgstr "Temperatura de la boquilla de la primera capa" msgid "Nozzle temperature to print initial layer when using this filament" -msgstr "" -"Temperatura de la boquilla para imprimir la primera capa cuando se utiliza " -"este filamento" +msgstr "Temperatura de la boquilla para imprimir la primera capa cuando se utiliza este filamento" msgid "Full fan speed at layer" msgstr "Velocidad máxima del ventilador en la capa" -msgid "" -"Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." -msgstr "" -"La velocidad de ventilador se incrementará linealmente de cero a " -"\"close_fan_the_first_x_layers\" al máximo de capa \"full_fan_speed_layer\". " -"\"full_fan_speed_layer\" se ignorará si es menor que " -"\"close_fan_the_first_x_layers\", en cuyo caso el ventilador funcionará al " -"máximo permitido de capa \"close_fan_the_first_x_layers\" + 1." +msgid "Fan speed will be ramped up linearly from zero at layer \"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower than \"close_fan_the_first_x_layers\", in which case the fan will be running at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +msgstr "La velocidad de ventilador se incrementará linealmente de cero a \"close_fan_the_first_x_layers\" al máximo de capa \"full_fan_speed_layer\". \"full_fan_speed_layer\" se ignorará si es menor que \"close_fan_the_first_x_layers\", en cuyo caso el ventilador funcionará al máximo permitido de capa \"close_fan_the_first_x_layers\" + 1." msgid "Support interface fan speed" msgstr "Velocidad de ventilador de interfaz de soporte" msgid "" -"This fan speed is enforced during all support interfaces, to be able to " -"weaken their bonding with a high fan speed.\n" +"This fan speed is enforced during all support interfaces, to be able to weaken their bonding with a high fan speed.\n" "Set to -1 to disable this override.\n" "Can only be overriden by disable_fan_first_layers." -msgstr "" -"La velocidad de ventilador se fuerza durante todas interfaces de soporte, " -"será capaz de debilitar sus uniones con una velocidad de ventilador más alta." -"Solo puede ser sobreescrita deshabilitando disable_fan_first_layers." +msgstr "La velocidad de ventilador se fuerza durante todas interfaces de soporte, será capaz de debilitar sus uniones con una velocidad de ventilador más alta.Solo puede ser sobreescrita deshabilitando disable_fan_first_layers." -msgid "" -"Randomly jitter while printing the wall, so that the surface has a rough " -"look. This setting controls the fuzzy position" -msgstr "" -"Se puede imprimir el perímetro de forma aleatoria, de modo que la superficie " -"tenga un aspecto rugoso. Este ajuste controla la posición difusa" +msgid "Randomly jitter while printing the wall, so that the surface has a rough look. This setting controls the fuzzy position" +msgstr "Se puede imprimir el perímetro de forma aleatoria, de modo que la superficie tenga un aspecto rugoso. Este ajuste controla la posición difusa" msgid "None" msgstr "Ninguno" @@ -9336,28 +8000,20 @@ msgstr "Todas los perímetros" msgid "Fuzzy skin thickness" msgstr "Distancia del punto de piel difusa" -msgid "" -"The width within which to jitter. It's adversed to be below outer wall line " -"width" -msgstr "" -"La anchura dentro de la cual se va a jitear. Se aconseja que esté por debajo " -"de la anchura de la línea del perímetro exterior" +msgid "The width within which to jitter. It's adversed to be below outer wall line width" +msgstr "La anchura dentro de la cual se va a jitear. Se aconseja que esté por debajo de la anchura de la línea del perímetro exterior" msgid "Fuzzy skin point distance" msgstr "Distancia al punto de superficie irregular" -msgid "" -"The average diatance between the random points introducded on each line " -"segment" -msgstr "" -"La diatancia media entre los puntos aleatorios introducidos en cada segmento " -"de línea" +msgid "The average diatance between the random points introducded on each line segment" +msgstr "La diatancia media entre los puntos aleatorios introducidos en cada segmento de línea" msgid "Apply fuzzy skin to first layer" -msgstr "" +msgstr "Aplicar piel difusa a la primera capa" msgid "Whether to apply fuzzy skin on the first layer" -msgstr "" +msgstr "Si se aplica piel difusa en la primera capa" msgid "Filter out tiny gaps" msgstr "Filtrar pequeños huecos" @@ -9366,54 +8022,34 @@ msgid "Layers and Perimeters" msgstr "Capas y Perímetros" msgid "Filter out gaps smaller than the threshold specified" -msgstr "" -"Filtra los huecos menores que el umbral especificado. Este ajuste no " -"afectará a las capas superior/inferior" +msgstr "Filtra los huecos menores que el umbral especificado. Este ajuste no afectará a las capas superior/inferior" -msgid "" -"Speed of gap infill. Gap usually has irregular line width and should be " -"printed more slowly" -msgstr "" -"Velocidad de relleno del hueco. El hueco suele tener una anchura de línea " -"irregular y debe imprimirse más lentamente" +msgid "Speed of gap infill. Gap usually has irregular line width and should be printed more slowly" +msgstr "Velocidad de relleno del hueco. El hueco suele tener una anchura de línea irregular y debe imprimirse más lentamente" msgid "Arc fitting" msgstr "Activar movimientos en arco" -msgid "" -"Enable this to get a G-code file which has G2 and G3 moves. And the fitting " -"tolerance is same with resolution" -msgstr "" -"Habilite esto para obtener un archivo de G-Code que tiene movimientos G2 y " -"G3. Y la tolerancia de ajuste es la misma con la resolución" +msgid "Enable this to get a G-code file which has G2 and G3 moves. And the fitting tolerance is same with resolution" +msgstr "Habilite esto para obtener un archivo de G-Code que tiene movimientos G2 y G3. Y la tolerancia de ajuste es la misma con la resolución" msgid "Add line number" msgstr "Añadir número de línea" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" -msgstr "" -"Active esta opción para añadir el número de línea (Nx) al principio de cada " -"línea de G-Code" +msgstr "Active esta opción para añadir el número de línea (Nx) al principio de cada línea de G-Code" msgid "Scan first layer" msgstr "Escanear la primera capa" -msgid "" -"Enable this to enable the camera on printer to check the quality of first " -"layer" -msgstr "" -"Active esta opción para que la cámara de la impresora pueda comprobar la " -"calidad de la primera capa" +msgid "Enable this to enable the camera on printer to check the quality of first layer" +msgstr "Active esta opción para que la cámara de la impresora pueda comprobar la calidad de la primera capa" msgid "Nozzle type" msgstr "Tipo de boquilla" -msgid "" -"The metallic material of nozzle. This determines the abrasive resistance of " -"nozzle, and what kind of filament can be printed" -msgstr "" -"El material metálico de la boquilla. Esto determina la resistencia a la " -"abrasión de la boquilla, y qué tipo de filamento se puede imprimir" +msgid "The metallic material of nozzle. This determines the abrasive resistance of nozzle, and what kind of filament can be printed" +msgstr "El material metálico de la boquilla. Esto determina la resistencia a la abrasión de la boquilla, y qué tipo de filamento se puede imprimir" msgid "Undefine" msgstr "Indefinido" @@ -9430,12 +8066,8 @@ msgstr "Latón" msgid "Nozzle HRC" msgstr "HRC Boquilla" -msgid "" -"The nozzle's hardness. Zero means no checking for nozzle's hardness during " -"slicing." -msgstr "" -"La dureza de la boquilla. Cero significa no comprobará la dureza de la " -"boquilla durante el laminado." +msgid "The nozzle's hardness. Zero means no checking for nozzle's hardness during slicing." +msgstr "La dureza de la boquilla. Cero significa no comprobará la dureza de la boquilla durante el laminado." msgid "HRC" msgstr "HRC" @@ -9462,71 +8094,45 @@ msgid "Best object position" msgstr "Mejor posición de los objetos" msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." -msgstr "" -"Mejor auto posicionamiento de los objetos en el intervalo [0,1] con respecto " -"a la forma de la cama." +msgstr "Mejor auto posicionamiento de los objetos en el intervalo [0,1] con respecto a la forma de la cama." + +msgid "Enable this option if machine has auxiliary part cooling fan. G-code command: M106 P2 S(0-255)." +msgstr "Activar esta opción si la máquina dispone de ventilador auxiliar de refrigeración de piezas. Comando código G: M106 P2 S(0-255)." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code " -"command: M106 P2 S(0-255)." -msgstr "" -"Activar esta opción si la máquina dispone de ventilador auxiliar de " -"refrigeración de piezas. Comando código G: M106 P2 S(0-255)." - -msgid "" -"Start the fan this number of seconds earlier than its target start time (you " -"can use fractional seconds). It assumes infinite acceleration for this time " -"estimation, and will only take into account G1 and G0 moves (arc fitting is " -"unsupported).\n" -"It won't move fan comands from custom gcodes (they act as a sort of " -"'barrier').\n" -"It won't move fan comands into the start gcode if the 'only custom start " -"gcode' is activated.\n" +"Start the fan this number of seconds earlier than its target start time (you can use fractional seconds). It assumes infinite acceleration for this time estimation, and will only take into account G1 and G0 moves (arc fitting is unsupported).\n" +"It won't move fan comands from custom gcodes (they act as a sort of 'barrier').\n" +"It won't move fan comands into the start gcode if the 'only custom start gcode' is activated.\n" "Use 0 to deactivate." msgstr "" -"Inicia el ventilador un número de segundos antes que el tiempo de inicio " -"objetivo (puede usar segundos fraccionales). Se asume aceleración infinita " -"para esta estimación de tiempo, y solo se tendrán en cuenta los movimientos " -"G1 y G0 (no soporta el ajuste de arco).\n" -"Esto no moverá comandos de ventilador desde G-Codes personalizados (estos " -"actúan como un tipo de 'barrera').\n" -"Esto no moverá comandos de ventilador en el G-Code inicial si el 'único G-" -"Code inicial personalizado' está activado\n" +"Inicia el ventilador un número de segundos antes que el tiempo de inicio objetivo (puede usar segundos fraccionales). Se asume aceleración infinita para esta estimación de tiempo, y solo se tendrán en cuenta los movimientos G1 y G0 (no soporta el ajuste de arco).\n" +"Esto no moverá comandos de ventilador desde G-Codes personalizados (estos actúan como un tipo de 'barrera').\n" +"Esto no moverá comandos de ventilador en el G-Code inicial si el 'único G-Code inicial personalizado' está activado\n" "Usar 0 para desactivar." msgid "Only overhangs" msgstr "Solo voladizos" msgid "Will only take into account the delay for the cooling of overhangs." -msgstr "" -"Solo se tomará dentro de la cuenta el retraso para enfriar los voladizos." +msgstr "Solo se tomará dentro de la cuenta el retraso para enfriar los voladizos." msgid "Fan kick-start time" msgstr "Tiempo de arranque de ventilador" msgid "" -"Emit a max fan speed command for this amount of seconds before reducing to " -"target speed to kick-start the cooling fan.\n" -"This is useful for fans where a low PWM/power may be insufficient to get the " -"fan started spinning from a stop, or to get the fan up to speed faster.\n" +"Emit a max fan speed command for this amount of seconds before reducing to target speed to kick-start the cooling fan.\n" +"This is useful for fans where a low PWM/power may be insufficient to get the fan started spinning from a stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." msgstr "" -"Emite un comando de velocidad máxima del ventilador durante esta cantidad de " -"segundos antes de reducir a la velocidad objetivo para poner en marcha el " -"ventilador de refrigeración.\n" -"Esto es útil para ventiladores donde un PWM/potencia baja puede ser " -"insuficiente para que el ventilador comience a girar desde una parada, o " -"para que el ventilador alcance la velocidad más rápido.\n" +"Emite un comando de velocidad máxima del ventilador durante esta cantidad de segundos antes de reducir a la velocidad objetivo para poner en marcha el ventilador de refrigeración.\n" +"Esto es útil para ventiladores donde un PWM/potencia baja puede ser insuficiente para que el ventilador comience a girar desde una parada, o para que el ventilador alcance la velocidad más rápido.\n" "Ajústelo a 0 para desactivarlo." msgid "Time cost" msgstr "Coste dinerario por hora" msgid "The printer cost per hour" -msgstr "" -"La cantidad de dinero que cuesta la impresión que vamos a realizar por hora. " -"Podemos calcular el coste dependiendo de la potencia de la impresora, el " -"coste del filamento, etc." +msgstr "La cantidad de dinero que cuesta la impresión que vamos a realizar por hora. Podemos calcular el coste dependiendo de la potencia de la impresora, el coste del filamento, etc." msgid "money/h" msgstr "dinero/hora" @@ -9537,9 +8143,7 @@ msgstr "Soporte de control de temperatura de cámara" msgid "" "This option is enabled if machine support controlling chamber temperature\n" "G-code command: M141 S(0-255)" -msgstr "" -"Esta opción se activa si la máquina admite el control de la temperatura de " -"la cámara" +msgstr "Esta opción se activa si la máquina admite el control de la temperatura de la cámara" msgid "Support air filtration" msgstr "Soportar filtración de aire" @@ -9563,17 +8167,8 @@ msgstr "Klipper" msgid "Label objects" msgstr "Etiquetar objetos" -msgid "" -"Enable this to add comments into the G-Code labeling print moves with what " -"object they belong to, which is useful for the Octoprint CancelObject " -"plugin. This settings is NOT compatible with Single Extruder Multi Material " -"setup and Wipe into Object / Wipe into Infill." -msgstr "" -"Habilite esta opción para añadir comentarios en el G-Code etiquetando los " -"movimientos de impresión con el objeto al que pertenecen, lo cual es útil " -"para el plugin Octoprint CancelObject. Esta configuración NO es compatible " -"con la configuración de Extrusor Único Multi Material y Limpiar en Objeto / " -"Limpiar en Relleno." +msgid "Enable this to add comments into the G-Code labeling print moves with what object they belong to, which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." +msgstr "Habilite esta opción para añadir comentarios en el G-Code etiquetando los movimientos de impresión con el objeto al que pertenecen, lo cual es útil para el plugin Octoprint CancelObject. Esta configuración NO es compatible con la configuración de Extrusor Único Multi Material y Limpiar en Objeto / Limpiar en Relleno." msgid "Exclude objects" msgstr "Excluir objetos" @@ -9584,46 +8179,26 @@ msgstr "Activar esta opción para añadir el comando EXCLUDE OBJECT en el G-Code msgid "Verbose G-code" msgstr "G-Code detallado" -msgid "" -"Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." -msgstr "" -"Activar esto para escoger un archivo de G-Code comentado, con cada línea " -"explicado por un texto descriptivo. Si imprime desde la tarjeta SD, el peso " -"adicional del archivo podría hacer que tu firmware se ralentice." +msgid "Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down." +msgstr "Activar esto para escoger un archivo de G-Code comentado, con cada línea explicado por un texto descriptivo. Si imprime desde la tarjeta SD, el peso adicional del archivo podría hacer que tu firmware se ralentice." msgid "Infill combination" msgstr "Combinación de relleno" -msgid "" -"Automatically Combine sparse infill of several layers to print together to " -"reduce time. Wall is still printed with original layer height." -msgstr "" -"Combine automáticamente el relleno de baja densidad de varias capas para " -"imprimirlas juntas y reducir el tiempo. La perímetro se sigue imprimiendo " -"con la altura original de la capa." +msgid "Automatically Combine sparse infill of several layers to print together to reduce time. Wall is still printed with original layer height." +msgstr "Combine automáticamente el relleno de baja densidad de varias capas para imprimirlas juntas y reducir el tiempo. La perímetro se sigue imprimiendo con la altura original de la capa." msgid "Filament to print internal sparse infill." msgstr "Filamento para imprimir el relleno interno de baja densidad." -msgid "" -"Line width of internal sparse infill. If expressed as a %, it will be " -"computed over the nozzle diameter." -msgstr "" -"Ancho de extrusión de la densidad de relleno interna. Si se expresa como %, " -"se calculará sobre el diámetro de la boquilla." +msgid "Line width of internal sparse infill. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Ancho de extrusión de la densidad de relleno interna. Si se expresa como %, se calculará sobre el diámetro de la boquilla." msgid "Infill/Wall overlap" msgstr "Superposición de relleno/perímetros" -msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. " -"The percentage value is relative to line width of sparse infill" -msgstr "" -"El área de relleno se amplía ligeramente para que se solape con el perímetro " -"y así mejorar la adherencia. El valor porcentual es relativo a la anchura de " -"la línea del relleno de baja densidad" +msgid "Infill area is enlarged slightly to overlap with wall for better bonding. The percentage value is relative to line width of sparse infill" +msgstr "El área de relleno se amplía ligeramente para que se solape con el perímetro y así mejorar la adherencia. El valor porcentual es relativo a la anchura de la línea del relleno de baja densidad" msgid "Speed of internal sparse infill" msgstr "Velocidad del relleno interno disperso" @@ -9631,37 +8206,26 @@ msgstr "Velocidad del relleno interno disperso" msgid "Interface shells" msgstr "Carcasas de interfaz" -msgid "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material" -msgstr "" -"Fuerza la generación de carcasas sólidas entre materiales/volúmenes " -"adyacentes. Útil para impresiones multiextrusoras con materiales " -"translúcidos o material de soporte soluble manualmente" +msgid "Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material" +msgstr "Fuerza la generación de carcasas sólidas entre materiales/volúmenes adyacentes. Útil para impresiones multiextrusoras con materiales translúcidos o material de soporte soluble manualmente" msgid "Maximum width of a segmented region" -msgstr "" +msgstr "Máximo ancho de una región segmentada" msgid "Maximum width of a segmented region. Zero disables this feature." -msgstr "" +msgstr "Máximo ancho de una región segmentada. Zero desactiva está característica." msgid "Interlocking depth of a segmented region" -msgstr "" +msgstr "Profundidad de entrelazado de una región segmentada" msgid "Interlocking depth of a segmented region. Zero disables this feature." -msgstr "" +msgstr "Profundidad de entrelazado de una región segmentada. Zero desactiva esta característica." msgid "Ironing Type" msgstr "Tipo de alisado" -msgid "" -"Ironing is using small flow to print on same height of surface again to make " -"flat surface more smooth. This setting controls which layer being ironed" -msgstr "" -"El alisado es el uso de un pequeño caudal para imprimir en la misma altura " -"de la superficie de nuevo para hacer la superficie plana más suave. Este " -"ajuste controla la capa que se alisa" +msgid "Ironing is using small flow to print on same height of surface again to make flat surface more smooth. This setting controls which layer being ironed" +msgstr "El alisado es el uso de un pequeño caudal para imprimir en la misma altura de la superficie de nuevo para hacer la superficie plana más suave. Este ajuste controla la capa que se alisa" msgid "No ironing" msgstr "Sin alisado" @@ -9684,13 +8248,8 @@ msgstr "Patrón que se usará al alisar" msgid "Ironing flow" msgstr "Flujo de alisado" -msgid "" -"The amount of material to extrude during ironing. Relative to flow of normal " -"layer height. Too high value results in overextrusion on the surface" -msgstr "" -"La cantidad de material a extruir durante el alisado. Relativo al caudal de " -"la altura de la capa normal. Un valor demasiado alto provoca una " -"sobreextrusión en la superficie" +msgid "The amount of material to extrude during ironing. Relative to flow of normal layer height. Too high value results in overextrusion on the surface" +msgstr "La cantidad de material a extruir durante el alisado. Relativo al caudal de la altura de la capa normal. Un valor demasiado alto provoca una sobreextrusión en la superficie" msgid "Ironing line spacing" msgstr "Espacio entre líneas de alisado" @@ -9707,33 +8266,20 @@ msgstr "Velocidad de impresión de las líneas de alisado" msgid "Ironing angle" msgstr "Ángulo de alisado" -msgid "" -"The angle ironing is done at. A negative number disables this function and " -"uses the default method." -msgstr "" -"El planchado en ángulo se realiza en. Un número negativo desactiva esta " -"función y utiliza el método por defecto." +msgid "The angle ironing is done at. A negative number disables this function and uses the default method." +msgstr "El planchado en ángulo se realiza en. Un número negativo desactiva esta función y utiliza el método por defecto." msgid "This gcode part is inserted at every layer change after lift z" -msgstr "" -"Esta parte de G-Code se inserta en cada cambio de capa después de levantar z" +msgstr "Esta parte de G-Code se inserta en cada cambio de capa después de levantar z" msgid "Supports silent mode" msgstr "Admite el modo silencioso" -msgid "" -"Whether the machine supports silent mode in which machine use lower " -"acceleration to print" -msgstr "" -"Si la máquina admite el modo silencioso en el que la máquina utiliza una " -"menor aceleración para imprimir" +msgid "Whether the machine supports silent mode in which machine use lower acceleration to print" +msgstr "Si la máquina admite el modo silencioso en el que la máquina utiliza una menor aceleración para imprimir" -msgid "" -"This G-code will be used as a code for the pause print. User can insert " -"pause G-code in gcode viewer" -msgstr "" -"Este G-Code se usará como código para la pausa de impresión. El usuario " -"puede insertar una pausa en el visor de G-Code" +msgid "This G-code will be used as a code for the pause print. User can insert pause G-code in gcode viewer" +msgstr "Este G-Code se usará como código para la pausa de impresión. El usuario puede insertar una pausa en el visor de G-Code" msgid "This G-code will be used as a custom code" msgstr "Este G-Code se usará para el código personalizado" @@ -9841,84 +8387,44 @@ msgid "Maximum acceleration for travel" msgstr "Aceleración máxima para el desplazamiento" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" -msgstr "" -"Aceleración máxima para el desplazamiento (M204 T), sólo se aplica en Marlin " -"2" +msgstr "Aceleración máxima para el desplazamiento (M204 T), sólo se aplica en Marlin 2" -msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This " -"is the maximum speed limitation of part cooling fan" -msgstr "" -"La velocidad del ventilador de refrigeración de la pieza puede aumentarse " -"cuando la refrigeración automática está activada. Esta es la limitación de " -"velocidad máxima del ventilador de refrigeración parcial" +msgid "Part cooling fan speed may be increased when auto cooling is enabled. This is the maximum speed limitation of part cooling fan" +msgstr "La velocidad del ventilador de refrigeración de la pieza puede aumentarse cuando la refrigeración automática está activada. Esta es la limitación de velocidad máxima del ventilador de refrigeración parcial" msgid "Max" msgstr "" -msgid "" -"The largest printable layer height for extruder. Used tp limits the maximum " -"layer hight when enable adaptive layer height" -msgstr "" -"La mayor altura de capa imprimible para el extrusor. Se utiliza para limitar " -"la altura máxima de la capa cuando se habilita la altura de capa adaptativa" +msgid "The largest printable layer height for extruder. Used tp limits the maximum layer hight when enable adaptive layer height" +msgstr "La mayor altura de capa imprimible para el extrusor. Se utiliza para limitar la altura máxima de la capa cuando se habilita la altura de capa adaptativa" msgid "Extrusion rate smoothing" msgstr "Suavizado de la tasa de extrusión" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when " -"the printer transitions from printing a high flow (high speed/larger width) " -"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " -"versa.\n" +"This parameter smooths out sudden extrusion rate changes that happen when the printer transitions from printing a high flow (high speed/larger width) extrusion to a lower flow (lower speed/smaller width) extrusion and vice versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " -"can change over time. Higher values mean higher extrusion rate changes are " -"allowed, resulting in faster speed transitions.\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec can change over time. Higher values mean higher extrusion rate changes are allowed, resulting in faster speed transitions.\n" "\n" "A value of 0 disables the feature. \n" "\n" -"For a high speed, high flow direct drive printer (like the Bambu lab or " -"Voron) this value is usually not needed. However it can provide some " -"marginal benefit in certain cases where feature speeds vary greatly. For " -"example, when there are aggressive slowdowns due to overhangs. In these " -"cases a high value of around 300-350mm3/s2 is recommended as this allows for " -"just enough smoothing to assist pressure advance achieve a smoother flow " -"transition.\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or Voron) this value is usually not needed. However it can provide some marginal benefit in certain cases where feature speeds vary greatly. For example, when there are aggressive slowdowns due to overhangs. In these cases a high value of around 300-350mm3/s2 is recommended as this allows for just enough smoothing to assist pressure advance achieve a smoother flow transition.\n" "\n" -"For slower printers without pressure advance, the value should be set much " -"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " -"extruders and 5-10mm3/s2 for Bowden style. \n" +"For slower printers without pressure advance, the value should be set much lower. A value of 10-15mm3/s2 is a good starting point for direct drive extruders and 5-10mm3/s2 for Bowden style. \n" "\n" "This feature is known as Pressure Equalizer in Prusa slicer.\n" "\n" "Note: this parameter disables arc fitting." msgstr "" -"Este parámetro suaviza los cambios bruscos de velocidad de extrusión que se " -"producen cuando la impresora pasa de imprimir una extrusión de alto caudal " -"(alta velocidad/ancho mayor) a una extrusión de menor caudal (menor " -"velocidad/ancho menor) y viceversa.\n" +"Este parámetro suaviza los cambios bruscos de velocidad de extrusión que se producen cuando la impresora pasa de imprimir una extrusión de alto caudal (alta velocidad/ancho mayor) a una extrusión de menor caudal (menor velocidad/ancho menor) y viceversa.\n" "\n" -"Define la velocidad máxima a la que el flujo volumétrico extruido en mm3/seg " -"puede cambiar con el tiempo. Valores más altos significan que se permiten " -"cambios de velocidad de extrusión más altos, lo que resulta en transiciones " -"de velocidad más rápidas.\n" +"Define la velocidad máxima a la que el flujo volumétrico extruido en mm3/seg puede cambiar con el tiempo. Valores más altos significan que se permiten cambios de velocidad de extrusión más altos, lo que resulta en transiciones de velocidad más rápidas.\n" "\n" "Un valor de 0 desactiva la función. \n" "\n" -"Para una impresora de accionamiento directo de alta velocidad y alto caudal " -"(como la Bambu lab o la Voron) este valor no suele ser necesario. Sin " -"embargo, puede proporcionar algún beneficio marginal en ciertos casos en los " -"que las velocidades de las características varían mucho. Por ejemplo, cuando " -"hay ralentizaciones agresivas debidas a salientes. En estos casos, se " -"recomienda un valor alto de alrededor de 300-350 mm3/s2, ya que esto permite " -"el suavizado suficiente para ayudar al avance de presión a lograr una " -"transición de flujo más suave.\n" +"Para una impresora de accionamiento directo de alta velocidad y alto caudal (como la Bambu lab o la Voron) este valor no suele ser necesario. Sin embargo, puede proporcionar algún beneficio marginal en ciertos casos en los que las velocidades de las características varían mucho. Por ejemplo, cuando hay ralentizaciones agresivas debidas a salientes. En estos casos, se recomienda un valor alto de alrededor de 300-350 mm3/s2, ya que esto permite el suavizado suficiente para ayudar al avance de presión a lograr una transición de flujo más suave.\n" "\n" -"Para impresoras más lentas sin avance de presión, el valor debe fijarse " -"mucho más bajo. Un valor de 10-15mm3/s2 es un buen punto de partida para " -"extrusoras de accionamiento directo y de 5-10mm3/s2 para las de estilo " -"Bowden. \n" +"Para impresoras más lentas sin avance de presión, el valor debe fijarse mucho más bajo. Un valor de 10-15mm3/s2 es un buen punto de partida para extrusoras de accionamiento directo y de 5-10mm3/s2 para las de estilo Bowden. \n" "\n" "Esta característica es conocida como Pressure Equalizer en Prusa slicer.\n" "\n" @@ -9931,22 +8437,15 @@ msgid "Smoothing segment length" msgstr "Longitud del segmento de suavizado" msgid "" -"A lower value results in smoother extrusion rate transitions. However, this " -"results in a significantly larger gcode file and more instructions for the " -"printer to process. \n" +"A lower value results in smoother extrusion rate transitions. However, this results in a significantly larger gcode file and more instructions for the printer to process. \n" "\n" -"Default value of 3 works well for most cases. If your printer is stuttering, " -"increase this value to reduce the number of adjustments made\n" +"Default value of 3 works well for most cases. If your printer is stuttering, increase this value to reduce the number of adjustments made\n" "\n" "Allowed values: 1-5" msgstr "" -"Un valor más bajo resulta en transiciones de velocidad de extrusión más " -"suaves. Sin embargo, esto resulta en un archivo gcode significativamente más " -"grande y más instrucciones para que la impresora procese. \n" +"Un valor más bajo resulta en transiciones de velocidad de extrusión más suaves. Sin embargo, esto resulta en un archivo gcode significativamente más grande y más instrucciones para que la impresora procese. \n" "\n" -"El valor por defecto de 3 funciona bien en la mayoría de los casos. Si su " -"impresora está tartamudeando, aumente este valor para reducir el número de " -"ajustes realizados.\n" +"El valor por defecto de 3 funciona bien en la mayoría de los casos. Si su impresora está tartamudeando, aumente este valor para reducir el número de ajustes realizados.\n" "\n" "Valores permitidos: 1-5" @@ -9954,40 +8453,23 @@ msgid "Minimum speed for part cooling fan" msgstr "Velocidad mínima del ventilador de refrigeración de la pieza" msgid "" -"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " -"during printing except the first several layers which is defined by no " -"cooling layers.\n" -"Please enable auxiliary_fan in printer settings to use this feature. G-code " -"command: M106 P2 S(0-255)" +"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during printing except the first several layers which is defined by no cooling layers.\n" +"Please enable auxiliary_fan in printer settings to use this feature. G-code command: M106 P2 S(0-255)" msgstr "" -"Velocidad del ventilador de enfriamiento de la parte auxiliar. El ventilador " -"auxiliar funcionará a esta velocidad durante la impresión, excepto en las " -"primeras capas, que se define como sin capas de refrigeración.\n" -"Por favor, active auxiliary_fan en la configuración de la impresora para " -"utilizar esta función. Comando G-code: M106 P2 S(0-255)" +"Velocidad del ventilador de enfriamiento de la parte auxiliar. El ventilador auxiliar funcionará a esta velocidad durante la impresión, excepto en las primeras capas, que se define como sin capas de refrigeración.\n" +"Por favor, active auxiliary_fan en la configuración de la impresora para utilizar esta función. Comando G-code: M106 P2 S(0-255)" msgid "Min" msgstr "" -msgid "" -"The lowest printable layer height for extruder. Used tp limits the minimum " -"layer hight when enable adaptive layer height" -msgstr "" -"La menor altura de capa imprimible para el extrusor. Se utiliza para limitar " -"la altura mínima de la capa cuando se activa la altura de capa adaptable" +msgid "The lowest printable layer height for extruder. Used tp limits the minimum layer hight when enable adaptive layer height" +msgstr "La menor altura de capa imprimible para el extrusor. Se utiliza para limitar la altura mínima de la capa cuando se activa la altura de capa adaptable" msgid "Min print speed" msgstr "Velocidad de impresión mínima" -msgid "" -"The minimum printing speed for the filament when slow down for better layer " -"cooling is enabled, when printing overhangs and when feature speeds are not " -"specified explicitly." -msgstr "" -"La velocidad mínima de impresión para el filamento cuando la ralentización " -"para un mejor enfriamiento de la capa está activada, cuando se imprimen " -"voladizos y cuando las velocidades de las características no se especifican " -"explícitamente." +msgid "The minimum printing speed for the filament when slow down for better layer cooling is enabled, when printing overhangs and when feature speeds are not specified explicitly." +msgstr "La velocidad mínima de impresión para el filamento cuando la ralentización para un mejor enfriamiento de la capa está activada, cuando se imprimen voladizos y cuando las velocidades de las características no se especifican explícitamente." msgid "Nozzle diameter" msgstr "Diámetro de la boquilla" @@ -9998,22 +8480,14 @@ msgstr "Diámetro de la boquilla" msgid "Configuration notes" msgstr "Anotaciones de configuración" -msgid "" -"You can put here your personal notes. This text will be added to the G-code " -"header comments." -msgstr "" -"Puede añadir sus notas personales aquí. Este texto será añadido a los " -"comentarios de G-Code de cabecera." +msgid "You can put here your personal notes. This text will be added to the G-code header comments." +msgstr "Puede añadir sus notas personales aquí. Este texto será añadido a los comentarios de G-Code de cabecera." msgid "Host Type" msgstr "Tipo de host" -msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " -"the kind of the host." -msgstr "" -"Orca Slicer puede cargar archivos G-Code a un host de impresora. Este campo " -"puede contener el tipo de host." +msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." +msgstr "Orca Slicer puede cargar archivos G-Code a un host de impresora. Este campo puede contener el tipo de host." msgid "Nozzle volume" msgstr "Volumen de la boquilla" @@ -10025,56 +8499,31 @@ msgid "Cooling tube position" msgstr "Posición del tubo de refrigeración" msgid "Distance of the center-point of the cooling tube from the extruder tip." -msgstr "" -"Distancia del punto central del tubo de refrigeración a la punta del " -"extrusor." +msgstr "Distancia del punto central del tubo de refrigeración a la punta del extrusor." msgid "Cooling tube length" msgstr "Longitud del tubo de refrigeración" msgid "Length of the cooling tube to limit space for cooling moves inside it." -msgstr "" -"Longitud del tubo de refrigeración para limitar el espacio de refrigeración " -"de los movimientos en su interior." +msgstr "Longitud del tubo de refrigeración para limitar el espacio de refrigeración de los movimientos en su interior." msgid "High extruder current on filament swap" msgstr "Alta corriente de extrusión en el cambio de filamento" -msgid "" -"It may be beneficial to increase the extruder motor current during the " -"filament exchange sequence to allow for rapid ramming feed rates and to " -"overcome resistance when loading a filament with an ugly shaped tip." -msgstr "" -"Puede ser beneficioso para incrementar la corriente de extrusión durante la " -"secuencia de intercambio de filamento, para permitir ratios rápidos de " -"moldeado de extremos y superar resistencias durante la carga de filamentos " -"con puntas deformadas." +msgid "It may be beneficial to increase the extruder motor current during the filament exchange sequence to allow for rapid ramming feed rates and to overcome resistance when loading a filament with an ugly shaped tip." +msgstr "Puede ser beneficioso para incrementar la corriente de extrusión durante la secuencia de intercambio de filamento, para permitir ratios rápidos de moldeado de extremos y superar resistencias durante la carga de filamentos con puntas deformadas." msgid "Filament parking position" msgstr "Posición de parada de filamento" -msgid "" -"Distance of the extruder tip from the position where the filament is parked " -"when unloaded. This should match the value in printer firmware." -msgstr "" -"Distancia de la punta del extrusor desde la posición donde el filamento se " -"detiene cuando se descarga. Debería coincidir con el valor del firmware de " -"la impresora." +msgid "Distance of the extruder tip from the position where the filament is parked when unloaded. This should match the value in printer firmware." +msgstr "Distancia de la punta del extrusor desde la posición donde el filamento se detiene cuando se descarga. Debería coincidir con el valor del firmware de la impresora." msgid "Extra loading distance" msgstr "Distancia extra de carga" -msgid "" -"When set to zero, the distance the filament is moved from parking position " -"during load is exactly the same as it was moved back during unload. When " -"positive, it is loaded further, if negative, the loading move is shorter " -"than unloading." -msgstr "" -"Cuando se ajusta a cero, la distancia que el filamento se mueve desde la " -"posición de estacionamiento durante la carga es exactamente la misma que se " -"movió hacia atrás durante la descarga. Cuando es positivo, se carga más " -"lejos, si es negativo, el movimiento de carga es más corto que el de " -"descarga." +msgid "When set to zero, the distance the filament is moved from parking position during load is exactly the same as it was moved back during unload. When positive, it is loaded further, if negative, the loading move is shorter than unloading." +msgstr "Cuando se ajusta a cero, la distancia que el filamento se mueve desde la posición de estacionamiento durante la carga es exactamente la misma que se movió hacia atrás durante la descarga. Cuando es positivo, se carga más lejos, si es negativo, el movimiento de carga es más corto que el de descarga." msgid "Start end points" msgstr "Puntos de inicio fin" @@ -10085,15 +8534,8 @@ msgstr "Los puntos de inicio y fin, desde la zona de corte al cubo de basura." msgid "Reduce infill retraction" msgstr "Reducir la retracción del relleno" -msgid "" -"Don't retract when the travel is in infill area absolutely. That means the " -"oozing can't been seen. This can reduce times of retraction for complex " -"model and save printing time, but make slicing and G-code generating slower" -msgstr "" -"No retrae cuando el viaje está totalmente en el área de relleno. Eso " -"significa que el rezume no se pueda ver. Puede reducir los tiempos de " -"retracción para modelos complejos y ahorrar tiempo de impresión, pero hacer " -"que el corte y la generación de G-Code sea más lento" +msgid "Don't retract when the travel is in infill area absolutely. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower" +msgstr "No retrae cuando el viaje está totalmente en el área de relleno. Eso significa que el rezume no se pueda ver. Puede reducir los tiempos de retracción para modelos complejos y ahorrar tiempo de impresión, pero hacer que el corte y la generación de G-Code sea más lento" msgid "Enable" msgstr "Habilitar" @@ -10102,9 +8544,7 @@ msgid "Filename format" msgstr "Formato de los archivos" msgid "User can self-define the project file name when export" -msgstr "" -"El usuario puede definir por sí mismo el nombre del archivo del proyecto al " -"exportarlo" +msgstr "El usuario puede definir por sí mismo el nombre del archivo del proyecto al exportarlo" msgid "Make overhangs printable" msgstr "Voladizos imprimibles sin soporte" @@ -10115,24 +8555,14 @@ msgstr "Modificar la geometría para imprimir voladizos sin soportes." msgid "Make overhangs printable - Maximum angle" msgstr "Máximo ángulo de impresión de voladizos imprimibles sin soporte" -msgid "" -"Maximum angle of overhangs to allow after making more steep overhangs " -"printable.90° will not change the model at all and allow any overhang, while " -"0 will replace all overhangs with conical material." -msgstr "" -"Máximo ángulo de voladizos para permitir voladizos más pronunciados. 90º no " -"cambiará el modelo del todo y permitirá cualquier voladizo, mientras que 0 " -"reemplazará todos lo voladizos con material cónico." +msgid "Maximum angle of overhangs to allow after making more steep overhangs printable.90° will not change the model at all and allow any overhang, while 0 will replace all overhangs with conical material." +msgstr "Máximo ángulo de voladizos para permitir voladizos más pronunciados. 90º no cambiará el modelo del todo y permitirá cualquier voladizo, mientras que 0 reemplazará todos lo voladizos con material cónico." msgid "Make overhangs printable - Hole area" msgstr "Área hueca del voladizo imprimible sin soporte" -msgid "" -"Maximum area of a hole in the base of the model before it's filled by " -"conical material.A value of 0 will fill all the holes in the model base." -msgstr "" -"Máxima área hueca en la base del modelo antes de que se lleno por material " -"cónico. El valor 0 llenará todos los huecos en la base del modelo." +msgid "Maximum area of a hole in the base of the model before it's filled by conical material.A value of 0 will fill all the holes in the model base." +msgstr "Máxima área hueca en la base del modelo antes de que se lleno por material cónico. El valor 0 llenará todos los huecos en la base del modelo." msgid "mm²" msgstr "" @@ -10141,20 +8571,11 @@ msgid "Detect overhang wall" msgstr "Detectar el voladizo del perímetro" #, c-format, boost-format -msgid "" -"Detect the overhang percentage relative to line width and use different " -"speed to print. For 100%% overhang, bridge speed is used." -msgstr "" -"Detecta el porcentaje de voladizo en relación con el ancho de la línea y " -"utiliza diferentes velocidades para imprimir. Para el 100%% de voladizo, se " -"utiliza la velocidad de puente." +msgid "Detect the overhang percentage relative to line width and use different speed to print. For 100%% overhang, bridge speed is used." +msgstr "Detecta el porcentaje de voladizo en relación con el ancho de la línea y utiliza diferentes velocidades para imprimir. Para el 100%% de voladizo, se utiliza la velocidad de puente." -msgid "" -"Line width of inner wall. If expressed as a %, it will be computed over the " -"nozzle diameter." -msgstr "" -"Ancho de extrusión del perímetro interno. Si se expresa cómo %, se calculará " -"sobre el diámetro de la boquilla." +msgid "Line width of inner wall. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Ancho de extrusión del perímetro interno. Si se expresa cómo %, se calculará sobre el diámetro de la boquilla." msgid "Speed of inner wall" msgstr "Velocidad del perímetro interior" @@ -10162,18 +8583,8 @@ msgstr "Velocidad del perímetro interior" msgid "Number of walls of every layer" msgstr "Número de perímetros de cada capa" -msgid "" -"If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " -"environment variables." -msgstr "" -"Si desea procesar el G-Code de salida a través de scripts personalizados, " -"simplemente enumere sus rutas absolutas aquí. Separe varios scripts con " -"punto y coma. A los scripts se les pasará la ruta absoluta al archivo G-Code " -"como primer argumento, y pueden acceder a los ajustes de configuración de " -"OrcaSlicer leyendo variables de entorno." +msgid "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." +msgstr "Si desea procesar el G-Code de salida a través de scripts personalizados, simplemente enumere sus rutas absolutas aquí. Separe varios scripts con punto y coma. A los scripts se les pasará la ruta absoluta al archivo G-Code como primer argumento, y pueden acceder a los ajustes de configuración de OrcaSlicer leyendo variables de entorno." msgid "Printer notes" msgstr "Anotaciones de la impresora" @@ -10185,9 +8596,7 @@ msgid "Raft contact Z distance" msgstr "Distancia Z de contacto de la base de impresión" msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "" -"Espacio Z entre el objeto y la base de impresión. Se ignora para la interfaz " -"soluble" +msgstr "Espacio Z entre el objeto y la base de impresión. Se ignora para la interfaz soluble" msgid "Raft expansion" msgstr "Expansión de la base de impresión" @@ -10205,47 +8614,28 @@ msgid "Initial layer expansion" msgstr "Expansión de la primera capa" msgid "Expand the first raft or support layer to improve bed plate adhesion" -msgstr "" -"Expandir la primera base de impresión o capa de soporte para mejorar la " -"adherencia de la cama de la bandeja" +msgstr "Expandir la primera base de impresión o capa de soporte para mejorar la adherencia de la cama de la bandeja" msgid "Raft layers" msgstr "Capas de base de impresión" -msgid "" -"Object will be raised by this number of support layers. Use this function to " -"avoid wrapping when print ABS" -msgstr "" -"El objeto será elevado por este número de capas de soporte. Utilice esta " -"función para evitar la envoltura al imprimir ABS" +msgid "Object will be raised by this number of support layers. Use this function to avoid wrapping when print ABS" +msgstr "El objeto será elevado por este número de capas de soporte. Utilice esta función para evitar la envoltura al imprimir ABS" -msgid "" -"G-code path is genereated after simplifing the contour of model to avoid too " -"much points and gcode lines in gcode file. Smaller value means higher " -"resolution and more time to slice" -msgstr "" -"La ruta del G-Code se genera después de simplificar el contorno del modelo " -"para evitar demasiados puntos y líneas de código en el archivo de G-Code. Un " -"valor más pequeño significa una mayor resolución y más tiempo para cortar" +msgid "G-code path is genereated after simplifing the contour of model to avoid too much points and gcode lines in gcode file. Smaller value means higher resolution and more time to slice" +msgstr "La ruta del G-Code se genera después de simplificar el contorno del modelo para evitar demasiados puntos y líneas de código en el archivo de G-Code. Un valor más pequeño significa una mayor resolución y más tiempo para cortar" msgid "Travel distance threshold" msgstr "Umbral de distancia de desplazamiento" -msgid "" -"Only trigger retraction when the travel distance is longer than this " -"threshold" -msgstr "" -"Sólo se activa la retracción cuando la distancia de recorrido es superior a " -"este umbral" +msgid "Only trigger retraction when the travel distance is longer than this threshold" +msgstr "Sólo se activa la retracción cuando la distancia de recorrido es superior a este umbral" msgid "Retract amount before wipe" msgstr "Retracta cantidad antes de limpiar" -msgid "" -"The length of fast retraction before wipe, relative to retraction length" -msgstr "" -"La longitud de la retracción rápida antes de la limpieza, en relación con la " -"longitud de la retracción" +msgid "The length of fast retraction before wipe, relative to retraction length" +msgstr "La longitud de la retracción rápida antes de la limpieza, en relación con la longitud de la retracción" msgid "Retract when change layer" msgstr "Retracción al cambiar de capa" @@ -10259,47 +8649,26 @@ msgstr "Largo" msgid "Retraction Length" msgstr "Longitud de retracción" -msgid "" -"Some amount of material in extruder is pulled back to avoid ooze during long " -"travel. Set zero to disable retraction" -msgstr "" -"Una cierta cantidad de material en el extrusor se extrae para evitar el " -"rezumado durante el recorrido largo. Ajustar el cero para desactivar la " -"retracción" +msgid "Some amount of material in extruder is pulled back to avoid ooze during long travel. Set zero to disable retraction" +msgstr "Una cierta cantidad de material en el extrusor se extrae para evitar el rezumado durante el recorrido largo. Ajustar el cero para desactivar la retracción" msgid "Z hop when retract" msgstr "Salto en Z al retraerse" -msgid "" -"Whenever the retraction is done, the nozzle is lifted a little to create " -"clearance between nozzle and the print. It prevents nozzle from hitting the " -"print when travel move. Using spiral line to lift z can prevent stringing" -msgstr "" -"Cada vez que se realiza la retracción, la boquilla se levanta un poco para " -"crear un espacio libre entre la boquilla y la impresión. Esto evita que la " -"boquilla golpee la impresión cuando se desplaza. El uso de la línea espiral " -"para levantar z puede evitar el encordado" +msgid "Whenever the retraction is done, the nozzle is lifted a little to create clearance between nozzle and the print. It prevents nozzle from hitting the print when travel move. Using spiral line to lift z can prevent stringing" +msgstr "Cada vez que se realiza la retracción, la boquilla se levanta un poco para crear un espacio libre entre la boquilla y la impresión. Esto evita que la boquilla golpee la impresión cuando se desplaza. El uso de la línea espiral para levantar z puede evitar el encordado" msgid "Z hop lower boundary" msgstr "Límite inferior de salto Z" -msgid "" -"Z hop will only come into effect when Z is above this value and is below the " -"parameter: \"Z hop upper boundary\"" -msgstr "" -"Z hop sólo entrará en vigor cuando Z esté por encima de este valor y se " -"encuentre por debajo del parámetro: \"Límite superior del salto Z\"" +msgid "Z hop will only come into effect when Z is above this value and is below the parameter: \"Z hop upper boundary\"" +msgstr "Z hop sólo entrará en vigor cuando Z esté por encima de este valor y se encuentre por debajo del parámetro: \"Límite superior del salto Z\"" msgid "Z hop upper boundary" msgstr "Límite superior de salto Z" -msgid "" -"If this value is positive, Z hop will only come into effect when Z is above " -"the parameter: \"Z hop lower boundary\" and is below this value" -msgstr "" -"Si este valor es positivo, Z hop sólo entrará en vigor cuando Z esté por " -"encima del parámetro \"Límite inferior de salto Z\" y esté por debajo de " -"este valor" +msgid "If this value is positive, Z hop will only come into effect when Z is above the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "Si este valor es positivo, Z hop sólo entrará en vigor cuando Z esté por encima del parámetro \"Límite inferior de salto Z\" y esté por debajo de este valor" msgid "Z hop type" msgstr "Tipo de salto Z" @@ -10313,32 +8682,20 @@ msgstr "Espiral" msgid "Only lift Z above" msgstr "Solo elevar Z por encima" -msgid "" -"If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z." -msgstr "" -"Si lo ajusta a un valor positivo, la elevación de Z sólo tendrá lugar por " -"encima de la Z absoluta especificada." +msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z." +msgstr "Si lo ajusta a un valor positivo, la elevación de Z sólo tendrá lugar por encima de la Z absoluta especificada." msgid "Only lift Z below" msgstr "Solo elevar Z por debajo" -msgid "" -"If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z." -msgstr "" -"Si se ajusta a un valor positivo, el levantamiento Z sólo tendrá lugar por " -"debajo de la Z absoluta especificada." +msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z." +msgstr "Si se ajusta a un valor positivo, el levantamiento Z sólo tendrá lugar por debajo de la Z absoluta especificada." msgid "On surfaces" msgstr "En las superficies" -msgid "" -"Enforce Z Hop behavior. This setting is impacted by the above settings (Only " -"lift Z above/below)." -msgstr "" -"Forzar el comportamiento de Salto Z. Este ajuste se ve afectado por los " -"ajustes anteriores (Sólo levantar Z arriba/abajo)." +msgid "Enforce Z Hop behavior. This setting is impacted by the above settings (Only lift Z above/below)." +msgstr "Forzar el comportamiento de Salto Z. Este ajuste se ve afectado por los ajustes anteriores (Sólo levantar Z arriba/abajo)." msgid "All Surfaces" msgstr "Todas las Superficies" @@ -10355,20 +8712,11 @@ msgstr "Superior e Inferior" msgid "Extra length on restart" msgstr "Longitud extra de reinicio" -msgid "" -"When the retraction is compensated after the travel move, the extruder will " -"push this additional amount of filament. This setting is rarely needed." -msgstr "" -"Cuando la retracción se compensa después de un movimiento de viaje, el " -"extrusor expulsará esa cantidad de filamento adicional. Este ajuste " -"raramente se necesitará." +msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." +msgstr "Cuando la retracción se compensa después de un movimiento de viaje, el extrusor expulsará esa cantidad de filamento adicional. Este ajuste raramente se necesitará." -msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." -msgstr "" -"Cuando se compensa la retracción después de cambiar de herramienta, el " -"extrusor empujará esta cantidad adicional de filamento." +msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." +msgstr "Cuando se compensa la retracción después de cambiar de herramienta, el extrusor empujará esta cantidad adicional de filamento." msgid "Retraction Speed" msgstr "Velocidad de retracción" @@ -10379,29 +8727,20 @@ msgstr "Velocidad de las retracciones" msgid "Deretraction Speed" msgstr "Velocidad de deretracción" -msgid "" -"Speed for reloading filament into extruder. Zero means same speed with " -"retraction" -msgstr "" -"Velocidad de recarga del filamento en el extrusor. Cero significa la misma " -"velocidad con la retracción" +msgid "Speed for reloading filament into extruder. Zero means same speed with retraction" +msgstr "Velocidad de recarga del filamento en el extrusor. Cero significa la misma velocidad con la retracción" msgid "Use firmware retraction" msgstr "Usar retracción de firmware" -msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." -msgstr "" -"Esta configuración experimental utiliza los comandos G10 y G11 para que el " -"firmware se encargue de la retracción. Sólo soportado en versiones recientes " -"de Marlin." +msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." +msgstr "Esta configuración experimental utiliza los comandos G10 y G11 para que el firmware se encargue de la retracción. Sólo soportado en versiones recientes de Marlin." msgid "Show auto-calibration marks" msgstr "Muestra marcas de autocalibración" msgid "Disable set remaining print time" -msgstr "" +msgstr "Desactivar tiempo de impresión restante" msgid "Seam position" msgstr "Posición de la costura" @@ -10424,64 +8763,36 @@ msgstr "Aleatorio" msgid "Staggered inner seams" msgstr "Costuras interiores escalonadas" -msgid "" -"This option causes the inner seams to be shifted backwards based on their " -"depth, forming a zigzag pattern." -msgstr "" -"Esta opción causa que las costuras internas sean desplazadas hacía detrás en " -"función de su profundidad, formando un patrón en zigzag." +msgid "This option causes the inner seams to be shifted backwards based on their depth, forming a zigzag pattern." +msgstr "Esta opción causa que las costuras internas sean desplazadas hacía detrás en función de su profundidad, formando un patrón en zigzag." msgid "Seam gap" msgstr "Separación entre costuras" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, " -"the loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current extruder diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, the loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the current extruder diameter. The default value for this parameter is 10%." msgstr "" -"Para reducir la visibilidad de la costura en una extrusión de bucle cerrado, " -"el bucle se interrumpe y se acorta en una cantidad especificada.\n" -"Esta cantidad puede especificarse en milímetros o como porcentaje del " -"diámetro actual del extrusor. El valor por defecto de este parámetro es 10%." +"Para reducir la visibilidad de la costura en una extrusión de bucle cerrado, el bucle se interrumpe y se acorta en una cantidad especificada.\n" +"Esta cantidad puede especificarse en milímetros o como porcentaje del diámetro actual del extrusor. El valor por defecto de este parámetro es 10%." msgid "Role base wipe speed" msgstr "Velocidad de limpieza según tipo de línea" -msgid "" -"The wipe speed is determined by the speed of the current extrusion role.e.g. " -"if a wipe action is executed immediately following an outer wall extrusion, " -"the speed of the outer wall extrusion will be utilized for the wipe action." -msgstr "" -"La velocidad de limpieza viene determinada por la velocidad de extrusión " -"actual. Por ejemplo, si se ejecuta una acción de limpieza inmediatamente " -"después de una extrusión del perímetro exterior, se utilizará la velocidad " -"de la extrusión del perímetro exterior para la acción de limpieza." +msgid "The wipe speed is determined by the speed of the current extrusion role.e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." +msgstr "La velocidad de limpieza viene determinada por la velocidad de extrusión actual. Por ejemplo, si se ejecuta una acción de limpieza inmediatamente después de una extrusión del perímetro exterior, se utilizará la velocidad de la extrusión del perímetro exterior para la acción de limpieza." msgid "Wipe on loops" msgstr "Limpieza en contornos curvos" -msgid "" -"To minimize the visibility of the seam in a closed loop extrusion, a small " -"inward movement is executed before the extruder leaves the loop." -msgstr "" -"Para minimizar la visibilidad de la costura en un contorno curvo cerrado, se " -"ejecuta un pequeño movimiento hacia dentro antes de que el extrusor abandone " -"la curva." +msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." +msgstr "Para minimizar la visibilidad de la costura en un contorno curvo cerrado, se ejecuta un pequeño movimiento hacia dentro antes de que el extrusor abandone la curva." msgid "Wipe speed" msgstr "Velocidad de limpieza" -msgid "" -"The wipe speed is determined by the speed setting specified in this " -"configuration.If the value is expressed as a percentage (e.g. 80%), it will " -"be calculated based on the travel speed setting above.The default value for " -"this parameter is 80%" -msgstr "" -"La velocidad de barrido viene determinada por el ajuste de velocidad " -"especificado en esta configuración. Si el valor se expresa en porcentaje " -"(por ejemplo, 80%), se calculará en función del ajuste de velocidad de " -"desplazamiento anterior. El valor por defecto de este parámetro es 80%" +msgid "The wipe speed is determined by the speed setting specified in this configuration.If the value is expressed as a percentage (e.g. 80%), it will be calculated based on the travel speed setting above.The default value for this parameter is 80%" +msgstr "La velocidad de barrido viene determinada por el ajuste de velocidad especificado en esta configuración. Si el valor se expresa en porcentaje (por ejemplo, 80%), se calculará en función del ajuste de velocidad de desplazamiento anterior. El valor por defecto de este parámetro es 80%" msgid "Skirt distance" msgstr "Distancia de la falda" @@ -10505,85 +8816,43 @@ msgid "Skirt speed" msgstr "Velocidad de falda" msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." -msgstr "" -"Velocidad de la falda, en mm/s. Cero significa utilizar la velocidad de capa " -"por defecto." +msgstr "Velocidad de la falda, en mm/s. Cero significa utilizar la velocidad de capa por defecto." -msgid "" -"The printing speed in exported gcode will be slowed down, when the estimated " -"layer time is shorter than this value, to get better cooling for these layers" -msgstr "" -"La velocidad de impresión en el G-Code exportado se ralentizará, cuando el " -"tiempo estimado de la capa sea inferior a este valor, para conseguir una " -"mejor refrigeración de estas capas" +msgid "The printing speed in exported gcode will be slowed down, when the estimated layer time is shorter than this value, to get better cooling for these layers" +msgstr "La velocidad de impresión en el G-Code exportado se ralentizará, cuando el tiempo estimado de la capa sea inferior a este valor, para conseguir una mejor refrigeración de estas capas" msgid "Minimum sparse infill threshold" msgstr "Área umbral de relleno sólido" -msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " -"internal solid infill" -msgstr "" -"El área de relleno de baja densidad que es menor que el valor del umbral se " -"sustituye por un relleno sólido interno" +msgid "Sparse infill area which is smaller than threshold value is replaced by internal solid infill" +msgstr "El área de relleno de baja densidad que es menor que el valor del umbral se sustituye por un relleno sólido interno" -msgid "" -"Line width of internal solid infill. If expressed as a %, it will be " -"computed over the nozzle diameter." -msgstr "" -"Ancho de extrusión del relleno sólido interno. Si se expresa cómo %, se " -"calculará sobre el diámetro de la boquilla." +msgid "Line width of internal solid infill. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Ancho de extrusión del relleno sólido interno. Si se expresa cómo %, se calculará sobre el diámetro de la boquilla." msgid "Speed of internal solid infill, not the top and bottom surface" -msgstr "" -"Velocidad del relleno sólido interno, no la superficie superior e inferior" +msgstr "Velocidad del relleno sólido interno, no la superficie superior e inferior" msgid "Spiral vase" msgstr "Vaso en espiral" -msgid "" -"Spiralize smooths out the z moves of the outer contour. And turns a solid " -"model into a single walled print with solid bottom layers. The final " -"generated model has no seam" -msgstr "" -"Spiralize suaviza los movimientos z del contorno exterior. Y convierte un " -"modelo sólido en una impresión de una soel perímetro con capas inferiores " -"sólidas. El modelo final generado no tiene costura" +msgid "Spiralize smooths out the z moves of the outer contour. And turns a solid model into a single walled print with solid bottom layers. The final generated model has no seam" +msgstr "Spiralize suaviza los movimientos z del contorno exterior. Y convierte un modelo sólido en una impresión de una soel perímetro con capas inferiores sólidas. El modelo final generado no tiene costura" msgid "Smooth Spiral" -msgstr "" +msgstr "Suavizar Espiral" -msgid "" -"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam " -"at all, even in the XY directions on walls that are not vertical" -msgstr "" +msgid "Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam at all, even in the XY directions on walls that are not vertical" +msgstr "Suavizar Espiral suaviza también los movimientos X e Y, con lo que no se aprecia ninguna costura, ni siquiera en las direcciones XY en paredes que no son verticales" msgid "Max XY Smoothing" -msgstr "" +msgstr "Suavizado XY Máximo" -msgid "" -"Maximum distance to move points in XY to try to achieve a smooth spiralIf " -"expressed as a %, it will be computed over nozzle diameter" -msgstr "" +msgid "Maximum distance to move points in XY to try to achieve a smooth spiralIf expressed as a %, it will be computed over nozzle diameter" +msgstr "Distancia máxima a desplazar los puntos en XY para intentar conseguir una espiral suave, si se expresa en %, se calculará sobre el diámetro de la tobera" -msgid "" -"If smooth or traditional mode is selected, a timelapse video will be " -"generated for each print. After each layer is printed, a snapshot is taken " -"with the chamber camera. All of these snapshots are composed into a " -"timelapse video when printing completes. If smooth mode is selected, the " -"toolhead will move to the excess chute after each layer is printed and then " -"take a snapshot. Since the melt filament may leak from the nozzle during the " -"process of taking a snapshot, prime tower is required for smooth mode to " -"wipe nozzle." -msgstr "" -"Sí se selecciona el modo suave o tradicional, se generará un vídeo time-" -"lapse para cada impresión. Después de imprimir cada capa, se toma una " -"instantánea con la cámara. Todas estas instantáneas se componen en un vídeo " -"time-lapse cuando finaliza la impresión. Si se selecciona el modo suave, el " -"cabezal de la herramienta se moverá a la rampa de exceso después de cada " -"capa se imprime y luego tomar una instantánea. Dado que el filamento fundido " -"puede gotear de la boquilla durante el proceso de tomar una instantánea, la " -"torre de purga es necesaria para el modo suave de limpiar la boquilla." +msgid "If smooth or traditional mode is selected, a timelapse video will be generated for each print. After each layer is printed, a snapshot is taken with the chamber camera. All of these snapshots are composed into a timelapse video when printing completes. If smooth mode is selected, the toolhead will move to the excess chute after each layer is printed and then take a snapshot. Since the melt filament may leak from the nozzle during the process of taking a snapshot, prime tower is required for smooth mode to wipe nozzle." +msgstr "Sí se selecciona el modo suave o tradicional, se generará un vídeo time-lapse para cada impresión. Después de imprimir cada capa, se toma una instantánea con la cámara. Todas estas instantáneas se componen en un vídeo time-lapse cuando finaliza la impresión. Si se selecciona el modo suave, el cabezal de la herramienta se moverá a la rampa de exceso después de cada capa se imprime y luego tomar una instantánea. Dado que el filamento fundido puede gotear de la boquilla durante el proceso de tomar una instantánea, la torre de purga es necesaria para el modo suave de limpiar la boquilla." msgid "Traditional" msgstr "Tradicional" @@ -10609,18 +8878,8 @@ msgstr "Usa una único boquilla para imprimir multifilamento" msgid "Manual Filament Change" msgstr "Cambio de Filamento Manual" -msgid "" -"Enable this option to omit the custom Change filament G-code only at the " -"beginning of the print. The tool change command (e.g., T0) will be skipped " -"throughout the entire print. This is useful for manual multi-material " -"printing, where we use M600/PAUSE to trigger the manual filament change " -"action." -msgstr "" -"Active esta opción para omitir el código G personalizado Cambiar filamento " -"sólo al principio de la impresión. El comando de cambio de herramienta (por " -"ejemplo, T0) se omitirá durante toda la impresión. Esto es útil para la " -"impresión manual multi-material, donde utilizamos M600/PAUSE para activar la " -"acción manual de cambio de filamento." +msgid "Enable this option to omit the custom Change filament G-code only at the beginning of the print. The tool change command (e.g., T0) will be skipped throughout the entire print. This is useful for manual multi-material printing, where we use M600/PAUSE to trigger the manual filament change action." +msgstr "Active esta opción para omitir el código G personalizado Cambiar filamento sólo al principio de la impresión. El comando de cambio de herramienta (por ejemplo, T0) se omitirá durante toda la impresión. Esto es útil para la impresión manual multi-material, donde utilizamos M600/PAUSE para activar la acción manual de cambio de filamento." msgid "Purge in prime tower" msgstr "Purgar en una torre" @@ -10634,49 +8893,26 @@ msgstr "Activar el moldeado de extremo del filamento" msgid "No sparse layers (EXPERIMENTAL)" msgstr "Capas de baja densidad (EXPERIMENTAL)" -msgid "" -"If enabled, the wipe tower will not be printed on layers with no " -"toolchanges. On layers with a toolchange, extruder will travel downward to " -"print the wipe tower. User is responsible for ensuring there is no collision " -"with the print." -msgstr "" -"Sí está activado, la torre de purga no se imprimirá en las capa sin cambio " -"de herramienta. En las capas con cambio de herramienta, viajará hacía abajo " -"para imprimir la torre de purga. El usuario es responsable de asegurarse que " -"no hay colisiones con la impresión." +msgid "If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +msgstr "Sí está activado, la torre de purga no se imprimirá en las capa sin cambio de herramienta. En las capas con cambio de herramienta, viajará hacía abajo para imprimir la torre de purga. El usuario es responsable de asegurarse que no hay colisiones con la impresión." msgid "Prime all printing extruders" msgstr "Purgar todos los extrusores" -msgid "" -"If enabled, all printing extruders will be primed at the front edge of the " -"print bed at the start of the print." -msgstr "" -"Sí está activada, todos los extrusores serán purgados en el lado delantero " -"de la cama de impresión al inicio de la impresión." +msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." +msgstr "Sí está activada, todos los extrusores serán purgados en el lado delantero de la cama de impresión al inicio de la impresión." msgid "Slice gap closing radius" msgstr "Radio de cierre de laminado" -msgid "" -"Cracks smaller than 2x gap closing radius are being filled during the " -"triangle mesh slicing. The gap closing operation may reduce the final print " -"resolution, therefore it is advisable to keep the value reasonably low." -msgstr "" -"Las grietas más pequeñas que el radio de cierre 2x se rellenan durante el " -"corte de la malla triangular. La operación de cierre de huecos puede reducir " -"la resolución de impresión final, por lo que es aconsejable mantener el " -"valor razonablemente bajo." +msgid "Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low." +msgstr "Las grietas más pequeñas que el radio de cierre 2x se rellenan durante el corte de la malla triangular. La operación de cierre de huecos puede reducir la resolución de impresión final, por lo que es aconsejable mantener el valor razonablemente bajo." msgid "Slicing Mode" msgstr "Modo de laminado" -msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " -"close all holes in the model." -msgstr "" -"Utilice \"Par-impar\" para los modelos de avión de 3DLabPrint. Utilice " -"\"Cerrar orificios\" para cerrar todos los orificios del modelo." +msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." +msgstr "Utilice \"Par-impar\" para los modelos de avión de 3DLabPrint. Utilice \"Cerrar orificios\" para cerrar todos los orificios del modelo." msgid "Regular" msgstr "Normal" @@ -10690,16 +8926,10 @@ msgstr "Cerrar orificios" msgid "Z offset" msgstr "Desplazamiento de Z" -msgid "" -"This value will be added (or subtracted) from all the Z coordinates in the " -"output G-code. It is used to compensate for bad Z endstop position: for " -"example, if your endstop zero actually leaves the nozzle 0.3mm far from the " -"print bed, set this to -0.3 (or fix your endstop)." +msgid "This value will be added (or subtracted) from all the Z coordinates in the output G-code. It is used to compensate for bad Z endstop position: for example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." msgstr "" -"Este valor se sumará (o restará) de todas las coordenadas Z en el G-Code de " -"salida. Se utiliza para compensar el desfase de Z del “Endstop Z”.\n" -"Por ejemplo, si tu “Endstop cero” deja la boquilla a distancia 0.3mm de la " -"cama de impresión, establecer este valor a -0,3 compensará este desfase." +"Este valor se sumará (o restará) de todas las coordenadas Z en el G-Code de salida. Se utiliza para compensar el desfase de Z del “Endstop Z”.\n" +"Por ejemplo, si tu “Endstop cero” deja la boquilla a distancia 0.3mm de la cama de impresión, establecer este valor a -0,3 compensará este desfase." msgid "Enable support" msgstr "Habilitar el soporte" @@ -10707,14 +8937,8 @@ msgstr "Habilitar el soporte" msgid "Enable support generation." msgstr "Habilitar la generación de soporte." -msgid "" -"normal(auto) and tree(auto) is used to generate support automatically. If " -"normal(manual) or tree(manual) is selected, only support enforcers are " -"generated" -msgstr "" -"normal(auto) y Árbol(auto) se utilizan para generar los soportes " -"automáticamente. Si se selecciona normal(manual) o árbol(manual), sólo se " -"generan los refuerzos de apoyo" +msgid "normal(auto) and tree(auto) is used to generate support automatically. If normal(manual) or tree(manual) is selected, only support enforcers are generated" +msgstr "normal(auto) y Árbol(auto) se utilizan para generar los soportes automáticamente. Si se selecciona normal(manual) o árbol(manual), sólo se generan los refuerzos de apoyo" msgid "normal(auto)" msgstr "Normal(auto)" @@ -10738,25 +8962,19 @@ msgid "Pattern angle" msgstr "Ángulo del patrón" msgid "Use this setting to rotate the support pattern on the horizontal plane." -msgstr "" -"Utilice este ajuste para girar el patrón de soporte en el plano horizontal." +msgstr "Utilice este ajuste para girar el patrón de soporte en el plano horizontal." msgid "On build plate only" msgstr "Sólo en la bandeja de impresión" msgid "Don't create support on model surface, only on build plate" -msgstr "" -"No crear soporte en la superficie del modelo, sólo en la bandeja de impresión" +msgstr "No crear soporte en la superficie del modelo, sólo en la bandeja de impresión" msgid "Support critical regions only" msgstr "Añadir soportes en regiones críticas solo" -msgid "" -"Only create support for critical regions including sharp tail, cantilever, " -"etc." -msgstr "" -"Cree soportes sólo para las regiones críticas, como la cola afilada, el " -"voladizo, etc." +msgid "Only create support for critical regions including sharp tail, cantilever, etc." +msgstr "Cree soportes sólo para las regiones críticas, como la cola afilada, el voladizo, etc." msgid "Remove small overhangs" msgstr "Eliminar voladizos pequeños" @@ -10779,47 +8997,29 @@ msgstr "La distancia z entre la interfaz de apoyo inferior y el objeto" msgid "Support/raft base" msgstr "Soporte/plataforma base" -msgid "" -"Filament to print support base and raft. \"Default\" means no specific " -"filament for support and current filament is used" -msgstr "" -"Filamento para imprimir la base de soporte y la base de impresión. \"Por " -"defecto\" significa que no hay filamento específico para el soporte y se " -"utiliza el filamento actual" +msgid "Filament to print support base and raft. \"Default\" means no specific filament for support and current filament is used" +msgstr "Filamento para imprimir la base de soporte y la base de impresión. \"Por defecto\" significa que no hay filamento específico para el soporte y se utiliza el filamento actual" msgid "Avoid interface filament for base" -msgstr "" +msgstr "Evitar el interfaz de filamento para la base" -msgid "" -"Avoid using support interface filament to print support base if possible." -msgstr "" +msgid "Avoid using support interface filament to print support base if possible." +msgstr "Evite utilizar filamento de interfaz de soporte para imprimir la base de soporte si es posible." -msgid "" -"Line width of support. If expressed as a %, it will be computed over the " -"nozzle diameter." -msgstr "" -"Ancho de extrusión de los soportes Si se expresa cómo %, se calculará sobre " -"el diámetro de la boquilla." +msgid "Line width of support. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Ancho de extrusión de los soportes Si se expresa cómo %, se calculará sobre el diámetro de la boquilla." msgid "Interface use loop pattern" msgstr "Uso de la interfaz en forma de bucle" -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "" -"Cubrir la capa de contacto superior de los soportes con bucles. Desactivado " -"por defecto." +msgid "Cover the top contact layer of the supports with loops. Disabled by default." +msgstr "Cubrir la capa de contacto superior de los soportes con bucles. Desactivado por defecto." msgid "Support/raft interface" msgstr "Interfaz de soporte/base de impresión" -msgid "" -"Filament to print support interface. \"Default\" means no specific filament " -"for support interface and current filament is used" -msgstr "" -"Filamento para imprimir interfaz de soporte. \"Por defecto\" significa que " -"no hay filamento específico para la interfaz de soporte y se utiliza el " -"filamento actual" +msgid "Filament to print support interface. \"Default\" means no specific filament for support interface and current filament is used" +msgstr "Filamento para imprimir interfaz de soporte. \"Por defecto\" significa que no hay filamento específico para la interfaz de soporte y se utiliza el filamento actual" msgid "Top interface layers" msgstr "Capas de la interfaz superior" @@ -10831,25 +9031,22 @@ msgid "Bottom interface layers" msgstr "Capas de la interfaz inferior" msgid "Number of bottom interface layers" -msgstr "" +msgstr "Número de capas de la interfaz inferior" msgid "Same as top" -msgstr "" +msgstr "Lo mismo que la superior" msgid "Top interface spacing" msgstr "Distancia de la interfaz superior" msgid "Spacing of interface lines. Zero means solid interface" -msgstr "" -"Espacio de las líneas de interfaz. Cero significa que la interfaz es sólida" +msgstr "Espacio de las líneas de interfaz. Cero significa que la interfaz es sólida" msgid "Bottom interface spacing" msgstr "Distancia de la interfaz inferior" msgid "Spacing of bottom interface lines. Zero means solid interface" -msgstr "" -"Espacio entre las líneas de la interfaz inferior. Cero significa interfaz " -"sólida" +msgstr "Espacio entre las líneas de la interfaz inferior. Cero significa interfaz sólida" msgid "Speed of support interface" msgstr "Velocidad de la interfaz de soporte" @@ -10869,14 +9066,8 @@ msgstr "Hueco" msgid "Interface pattern" msgstr "Patrón de interfaz" -msgid "" -"Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support " -"interface is Concentric" -msgstr "" -"Patrón de líneas de la interfaz de soporte. El patrón por defecto para la " -"interfaz de soporte no soluble es Rectilíneo, mientras que el patrón por " -"defecto para la interfaz de soporte soluble es Concéntrico" +msgid "Line pattern of support interface. Default pattern for non-soluble support interface is Rectilinear, while default pattern for soluble support interface is Concentric" +msgstr "Patrón de líneas de la interfaz de soporte. El patrón por defecto para la interfaz de soporte no soluble es Rectilíneo, mientras que el patrón por defecto para la interfaz de soporte soluble es Concéntrico" msgid "Rectilinear Interlaced" msgstr "Entrelazado rectilíneo" @@ -10897,22 +9088,11 @@ msgid "Speed of support" msgstr "Velocidad de la asistencia" msgid "" -"Style and shape of the support. For normal support, projecting the supports " -"into a regular grid will create more stable supports (default), while snug " -"support towers will save material and reduce object scarring.\n" -"For tree support, slim and organic style will merge branches more " -"aggressively and save a lot of material (default organic), while hybrid " -"style will create similar structure to normal support under large flat " -"overhangs." +"Style and shape of the support. For normal support, projecting the supports into a regular grid will create more stable supports (default), while snug support towers will save material and reduce object scarring.\n" +"For tree support, slim and organic style will merge branches more aggressively and save a lot of material (default organic), while hybrid style will create similar structure to normal support under large flat overhangs." msgstr "" -"Estilo y forma del soporte. Para el soporte normal, proyectar los soportes " -"en una cuadrícula regular creará soportes más estables (por defecto), " -"mientras que las torres de soporte ajustadas ahorrarán material y reducirán " -"las cicatrices del objeto.\n" -"Para el soporte arbóreo, el estilo esbelto y orgánico fusionará las ramas de " -"forma más agresiva y ahorrará mucho material (orgánico por defecto), " -"mientras que el estilo híbrido creará una estructura similar a la del " -"soporte normal bajo grandes voladizos planos." +"Estilo y forma del soporte. Para el soporte normal, proyectar los soportes en una cuadrícula regular creará soportes más estables (por defecto), mientras que las torres de soporte ajustadas ahorrarán material y reducirán las cicatrices del objeto.\n" +"Para el soporte arbóreo, el estilo esbelto y orgánico fusionará las ramas de forma más agresiva y ahorrará mucho material (orgánico por defecto), mientras que el estilo híbrido creará una estructura similar a la del soporte normal bajo grandes voladizos planos." msgid "Snug" msgstr "Ajustado" @@ -10932,102 +9112,58 @@ msgstr "Orgánico" msgid "Independent support layer height" msgstr "Altura de la capa de soporte independiente" -msgid "" -"Support layer uses layer height independent with object layer. This is to " -"support customizing z-gap and save print time.This option will be invalid " -"when the prime tower is enabled." -msgstr "" -"La capa de soporte utiliza una altura de capa independiente de la capa del " -"objeto. Esta opción no será válida si la torre de purga está activada." +msgid "Support layer uses layer height independent with object layer. This is to support customizing z-gap and save print time.This option will be invalid when the prime tower is enabled." +msgstr "La capa de soporte utiliza una altura de capa independiente de la capa del objeto. Esta opción no será válida si la torre de purga está activada." msgid "Threshold angle" msgstr "Pendiente máxima" -msgid "" -"Support will be generated for overhangs whose slope angle is below the " -"threshold." -msgstr "" -"Se generará un soporte para los voladizos cuyo ángulo de inclinación sea " -"inferior al umbral." +msgid "Support will be generated for overhangs whose slope angle is below the threshold." +msgstr "Se generará un soporte para los voladizos cuyo ángulo de inclinación sea inferior al umbral." msgid "Tree support branch angle" msgstr "Ángulo de la rama de soporte del árbol" -msgid "" -"This setting determines the maximum overhang angle that t he branches of " -"tree support allowed to make.If the angle is increased, the branches can be " -"printed more horizontally, allowing them to reach farther." -msgstr "" -"Este ajuste determina el ángulo máximo de voladizo que pueden hacer las " -"ramas del soporte del árbol. Si se aumenta el ángulo, las ramas pueden " -"imprimirse más horizontalmente, permitiendo que lleguen más lejos." +msgid "This setting determines the maximum overhang angle that t he branches of tree support allowed to make.If the angle is increased, the branches can be printed more horizontally, allowing them to reach farther." +msgstr "Este ajuste determina el ángulo máximo de voladizo que pueden hacer las ramas del soporte del árbol. Si se aumenta el ángulo, las ramas pueden imprimirse más horizontalmente, permitiendo que lleguen más lejos." msgid "Preferred Branch Angle" msgstr "Pendiente preferida de la rama" #. TRN PrintSettings: "Organic supports" > "Preferred Branch Angle" -msgid "" -"The preferred angle of the branches, when they do not have to avoid the " -"model. Use a lower angle to make them more vertical and more stable. Use a " -"higher angle for branches to merge faster." -msgstr "" -"El ángulo preferido de las ramas, cuando no tienen que evitar el modelo. " -"Utilice un ángulo más bajo para hacerlas más verticales y más estables. " -"Utilice un ángulo más alto para que las ramas se fusionen más rápido." +msgid "The preferred angle of the branches, when they do not have to avoid the model. Use a lower angle to make them more vertical and more stable. Use a higher angle for branches to merge faster." +msgstr "El ángulo preferido de las ramas, cuando no tienen que evitar el modelo. Utilice un ángulo más bajo para hacerlas más verticales y más estables. Utilice un ángulo más alto para que las ramas se fusionen más rápido." msgid "Tree support branch distance" msgstr "Distancia de la rama de soporte del árbol" -msgid "" -"This setting determines the distance between neighboring tree support nodes." -msgstr "" -"Este ajuste determina la distancia entre los nodos de soporte del árbol " -"vecinos." +msgid "This setting determines the distance between neighboring tree support nodes." +msgstr "Este ajuste determina la distancia entre los nodos de soporte del árbol vecinos." msgid "Branch Density" msgstr "Baja densidad de ramas" #. TRN PrintSettings: "Organic supports" > "Branch Density" -msgid "" -"Adjusts the density of the support structure used to generate the tips of " -"the branches. A higher value results in better overhangs but the supports " -"are harder to remove, thus it is recommended to enable top support " -"interfaces instead of a high branch density value if dense interfaces are " -"needed." -msgstr "" -"Ajusta la densidad de la estructura de soporte utilizada para generar las " -"puntas de las ramas. Un valor más alto da como resultado mejores voladizos, " -"pero los soportes son más difíciles de quitar, por lo que se recomienda " -"activar las interfaces de soporte superior en lugar de un valor de densidad " -"de rama alto si se necesitan interfaces densas." +msgid "Adjusts the density of the support structure used to generate the tips of the branches. A higher value results in better overhangs but the supports are harder to remove, thus it is recommended to enable top support interfaces instead of a high branch density value if dense interfaces are needed." +msgstr "Ajusta la densidad de la estructura de soporte utilizada para generar las puntas de las ramas. Un valor más alto da como resultado mejores voladizos, pero los soportes son más difíciles de quitar, por lo que se recomienda activar las interfaces de soporte superior en lugar de un valor de densidad de rama alto si se necesitan interfaces densas." msgid "Adaptive layer height" msgstr "Altura de capa adaptable" -msgid "" -"Enabling this option means the height of tree support layer except the " -"first will be automatically calculated " -msgstr "" -"Si se activa esta opción, se calculará automáticamente la altura de todas " -"las capas de soporte de los árboles excepto la primera. " +msgid "Enabling this option means the height of tree support layer except the first will be automatically calculated " +msgstr "Si se activa esta opción, se calculará automáticamente la altura de todas las capas de soporte de los árboles excepto la primera. " msgid "Auto brim width" msgstr "Ancho de borde de adherencia automático" -msgid "" -"Enabling this option means the width of the brim for tree support will be " -"automatically calculated" -msgstr "" -"Si activa esta opción, se calculará automáticamente la anchura del borde de " -"adherencia para el soporte del árbol" +msgid "Enabling this option means the width of the brim for tree support will be automatically calculated" +msgstr "Si activa esta opción, se calculará automáticamente la anchura del borde de adherencia para el soporte del árbol" msgid "Tree support brim width" msgstr "Anchura del borde de adherencia" msgid "Distance from tree branch to the outermost brim line" -msgstr "" -"Distancia desde la rama del árbol hasta la línea más externa del borde de " -"adherencia" +msgstr "Distancia desde la rama del árbol hasta la línea más externa del borde de adherencia" msgid "Tip Diameter" msgstr "Tamaño de la punta" @@ -11047,77 +9183,43 @@ msgid "Branch Diameter Angle" msgstr "Baja densidad de ramas" #. TRN PrintSettings: "Organic supports" > "Branch Diameter Angle" -msgid "" -"The angle of the branches' diameter as they gradually become thicker towards " -"the bottom. An angle of 0 will cause the branches to have uniform thickness " -"over their length. A bit of an angle can increase stability of the organic " -"support." -msgstr "" -"El ángulo del diámetro de las ramas a medida que se hacen más gruesas hacia " -"la parte inferior. Un ángulo de 0 hará que las ramas tengan un grosor " -"uniforme a lo largo de su longitud. Un poco de ángulo puede aumentar la " -"estabilidad del soporte orgánico." +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the organic support." +msgstr "El ángulo del diámetro de las ramas a medida que se hacen más gruesas hacia la parte inferior. Un ángulo de 0 hará que las ramas tengan un grosor uniforme a lo largo de su longitud. Un poco de ángulo puede aumentar la estabilidad del soporte orgánico." msgid "Branch Diameter with double walls" msgstr "Baja densidad de ramas" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" -msgid "" -"Branches with area larger than the area of a circle of this diameter will be " -"printed with double walls for stability. Set this value to zero for no " -"double walls." -msgstr "" -"Las ramas con un área mayor que el área de un círculo de este diámetro se " -"imprimirán con doble pared para mayor estabilidad. Establezca este valor en " -"cero para no tener doble pared." +msgid "Branches with area larger than the area of a circle of this diameter will be printed with double walls for stability. Set this value to zero for no double walls." +msgstr "Las ramas con un área mayor que el área de un círculo de este diámetro se imprimirán con doble pared para mayor estabilidad. Establezca este valor en cero para no tener doble pared." msgid "Support wall loops" -msgstr "" +msgstr "Bucles de pared de apoyo" msgid "This setting specify the count of walls around support" -msgstr "" +msgstr "Este ajuste especifica el número de paredes alrededor del soporte" msgid "Tree support with infill" msgstr "Soporte para árboles con relleno" -msgid "" -"This setting specifies whether to add infill inside large hollows of tree " -"support" -msgstr "" -"Este ajuste especifica si se añade relleno dentro de los grandes huecos del " -"soporte del árbol" +msgid "This setting specifies whether to add infill inside large hollows of tree support" +msgstr "Este ajuste especifica si se añade relleno dentro de los grandes huecos del soporte del árbol" msgid "Activate temperature control" msgstr "Activar control de temperatura" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" +"Enable this option for chamber temperature control. An M191 command will be added before \"machine_start_gcode\"\n" "G-code commands: M141/M191 S(0-255)" msgstr "" -"Active esta opción para controlar la temperatura de la cámara. Se añadirá un " -"comando M191 antes de \"machine_start_gcode\"\n" +"Active esta opción para controlar la temperatura de la cámara. Se añadirá un comando M191 antes de \"machine_start_gcode\"\n" "Comandos G-Code: M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "Temperatura de cámara" -msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" -msgstr "" -"Una mayor temperatura de la cámara puede ayudar a suprimir o reducir la " -"deformación y potencialmente conducir a una mayor resistencia de unión entre " -"capas para materiales de alta temperatura como ABS, ASA, PC, PA, etc. Al " -"mismo tiempo, la filtración de aire de ABS y ASA empeorará. Mientras que " -"para PLA, PETG, TPU, PVA y otros materiales de baja temperatura, la " -"temperatura real de la cámara no debe ser alta para evitar obstrucciones, " -"por lo que 0, que significa apagar, es muy recomendable" +msgid "Higher chamber temperature can help suppress or reduce warping and potentially lead to higher interlayer bonding strength for high temperature materials like ABS, ASA, PC, PA and so on.At the same time, the air filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and other low temperature materials,the actual chamber temperature should not be high to avoid cloggings, so 0 which stands for turning off is highly recommended" +msgstr "Una mayor temperatura de la cámara puede ayudar a suprimir o reducir la deformación y potencialmente conducir a una mayor resistencia de unión entre capas para materiales de alta temperatura como ABS, ASA, PC, PA, etc. Al mismo tiempo, la filtración de aire de ABS y ASA empeorará. Mientras que para PLA, PETG, TPU, PVA y otros materiales de baja temperatura, la temperatura real de la cámara no debe ser alta para evitar obstrucciones, por lo que 0, que significa apagar, es muy recomendable" msgid "Nozzle temperature for layers after the initial one" msgstr "Temperatura de la boquilla después de la primera capa" @@ -11125,30 +9227,17 @@ msgstr "Temperatura de la boquilla después de la primera capa" msgid "Detect thin wall" msgstr "Detección de perímetros delgados" -msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop" -msgstr "" -"Detectar los perímetros delgados que no puede contener dos líneas de ancho. " -"Y utilizar una sola línea para imprimir. Tal vez no se imprime muy bien, " -"porque no es de bucle cerrado" +msgid "Detect thin wall which can't contain two line width. And use single line to print. Maybe printed not very well, because it's not closed loop" +msgstr "Detectar los perímetros delgados que no puede contener dos líneas de ancho. Y utilizar una sola línea para imprimir. Tal vez no se imprime muy bien, porque no es de bucle cerrado" -msgid "" -"This gcode is inserted when change filament, including T command to trigger " -"tool change" -msgstr "" -"Este gcode se inserta al cambiar de filamento, incluyendo el comando T para " -"activar el cambio de herramienta" +msgid "This gcode is inserted when change filament, including T command to trigger tool change" +msgstr "Este gcode se inserta al cambiar de filamento, incluyendo el comando T para activar el cambio de herramienta" msgid "This gcode is inserted when the extrusion role is changed" msgstr "Este gcode se inserta cuando se cambia el rol de extrusión" -msgid "" -"Line width for top surfaces. If expressed as a %, it will be computed over " -"the nozzle diameter." -msgstr "" -"Ancho de extrusión de las capas superiores. Si se expresa cómo %, se " -"calculará sobre el diámetro de la boquilla." +msgid "Line width for top surfaces. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Ancho de extrusión de las capas superiores. Si se expresa cómo %, se calculará sobre el diámetro de la boquilla." msgid "Speed of top surface infill which is solid" msgstr "Velocidad del relleno de la superficie superior que es sólida" @@ -11156,15 +9245,8 @@ msgstr "Velocidad del relleno de la superficie superior que es sólida" msgid "Top shell layers" msgstr "Capas sólidas de la cubierta" -msgid "" -"This is the number of solid layers of top shell, including the top surface " -"layer. When the thickness calculated by this value is thinner than top shell " -"thickness, the top shell layers will be increased" -msgstr "" -"Es el número de capas sólidas de la cubierta superior, incluida la capa " -"superficial superior. Si el grosor calculado por este valor es menor que el " -"grosor de la cubierta superior, las capas de la cubierta superior se " -"incrementarán" +msgid "This is the number of solid layers of top shell, including the top surface layer. When the thickness calculated by this value is thinner than top shell thickness, the top shell layers will be increased" +msgstr "Es el número de capas sólidas de la cubierta superior, incluida la capa superficial superior. Si el grosor calculado por este valor es menor que el grosor de la cubierta superior, las capas de la cubierta superior se incrementarán" msgid "Top solid layers" msgstr "Capas solidas arriba" @@ -11172,19 +9254,8 @@ msgstr "Capas solidas arriba" msgid "Top shell thickness" msgstr "Espesor mínimo capa superior" -msgid "" -"The number of top solid layers is increased when slicing if the thickness " -"calculated by top shell layers is thinner than this value. This can avoid " -"having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of top shell is absolutely determained by top " -"shell layers" -msgstr "" -"El número de capas sólidas superiores se incrementa al laminar si el espesor " -"calculado por las capas superiores de la cáscara es más delgado que este " -"valor. Esto puede evitar tener una capa demasiado fina cuando la altura de " -"la capa es pequeña. 0 significa que este ajuste está desactivado y el grosor " -"de la capa superior está absolutamente determinado por las capas de la capa " -"superior" +msgid "The number of top solid layers is increased when slicing if the thickness calculated by top shell layers is thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that this setting is disabled and thickness of top shell is absolutely determained by top shell layers" +msgstr "El número de capas sólidas superiores se incrementa al laminar si el espesor calculado por las capas superiores de la cáscara es más delgado que este valor. Esto puede evitar tener una capa demasiado fina cuando la altura de la capa es pequeña. 0 significa que este ajuste está desactivado y el grosor de la capa superior está absolutamente determinado por las capas de la capa superior" msgid "Speed of travel which is faster and without extrusion" msgstr "Velocidad de desplazamiento más rápida y sin extrusión" @@ -11192,37 +9263,27 @@ msgstr "Velocidad de desplazamiento más rápida y sin extrusión" msgid "Wipe while retracting" msgstr "Limpiar mientras se retrae" -msgid "" -"Move nozzle along the last extrusion path when retracting to clean leaked " -"material on nozzle. This can minimize blob when print new part after travel" -msgstr "" -"Mueva la boquilla a lo largo de la última trayectoria de extrusión cuando se " -"retraiga para limpiar el material filtrado en la boquilla. Esto puede " -"minimizar las manchas cuando se imprime una nueva pieza después del recorrido" +msgid "Move nozzle along the last extrusion path when retracting to clean leaked material on nozzle. This can minimize blob when print new part after travel" +msgstr "Mueva la boquilla a lo largo de la última trayectoria de extrusión cuando se retraiga para limpiar el material filtrado en la boquilla. Esto puede minimizar las manchas cuando se imprime una nueva pieza después del recorrido" msgid "Wipe Distance" msgstr "Distancia de limpieza" msgid "" -"Discribe how long the nozzle will move along the last path when " -"retracting. \n" +"Discribe how long the nozzle will move along the last path when retracting. \n" "\n" -"Depending on how long the wipe operation lasts, how fast and long the " -"extruder/filament retraction settings are, a retraction move may be needed " -"to retract the remaining filament. \n" +"Depending on how long the wipe operation lasts, how fast and long the extruder/filament retraction settings are, a retraction move may be needed to retract the remaining filament. \n" "\n" -"Setting a value in the retract amount before wipe setting below will perform " -"any excess retraction before the wipe, else it will be performed after." +"Setting a value in the retract amount before wipe setting below will perform any excess retraction before the wipe, else it will be performed after." msgstr "" +"Describa cuánto tiempo se moverá la boquilla a lo largo de la última trayectoria al retraerse. \n" +"\n" +"Dependiendo de la duración de la operación de barrido y de la velocidad y longitud de los ajustes de retracción del extrusor/filamento, puede ser necesario un movimiento de retracción para retraer el filamento restante. \n" +"\n" +"Fijando un valor en la cantidad de retracción antes del barrido se realizará cualquier exceso de retracción antes del barrido, de lo contrario se realizará después." -msgid "" -"The wiping tower can be used to clean up the residue on the nozzle and " -"stabilize the chamber pressure inside the nozzle, in order to avoid " -"appearance defects when printing objects." -msgstr "" -"La torre de purga puede utilizarse para limpiar los residuos de la boquilla " -"y estabilizar la presión de la cámara en el interior de la boquilla, con el " -"fin de evitar defectos de aspecto al imprimir objetos." +msgid "The wiping tower can be used to clean up the residue on the nozzle and stabilize the chamber pressure inside the nozzle, in order to avoid appearance defects when printing objects." +msgstr "La torre de purga puede utilizarse para limpiar los residuos de la boquilla y estabilizar la presión de la cámara en el interior de la boquilla, con el fin de evitar defectos de aspecto al imprimir objetos." msgid "Purging volumes" msgstr "Volúmenes de purga" @@ -11230,12 +9291,8 @@ msgstr "Volúmenes de purga" msgid "Flush multiplier" msgstr "Multiplicador de caudal" -msgid "" -"The actual flushing volumes is equal to the flush multiplier multiplied by " -"the flushing volumes in the table." -msgstr "" -"El volumen de descarga real es igual al multiplicador de descarga " -"multiplicado por los volúmenes de descarga de la tabla." +msgid "The actual flushing volumes is equal to the flush multiplier multiplied by the flushing volumes in the table." +msgstr "El volumen de descarga real es igual al multiplicador de descarga multiplicado por los volúmenes de descarga de la tabla." msgid "Prime volume" msgstr "Tamaño de purga" @@ -11258,12 +9315,8 @@ msgstr "Ángulo de rotación con respecto al eje X." msgid "Stabilization cone apex angle" msgstr "Ángulo de vértice del cono de estabilización" -msgid "" -"Angle at the apex of the cone that is used to stabilize the wipe tower. " -"Larger angle means wider base." -msgstr "" -"Ángulo del vértice del cono que se usa para estabilidad la torre de purga. " -"Un angulo mayor significa una base más ancha." +msgid "Angle at the apex of the cone that is used to stabilize the wipe tower. Larger angle means wider base." +msgstr "Ángulo del vértice del cono que se usa para estabilidad la torre de purga. Un angulo mayor significa una base más ancha." msgid "Wipe tower purge lines spacing" msgstr "Espaciado de las líneas de la torre de purga" @@ -11274,104 +9327,50 @@ msgstr "Espaciado de las líneas de la torre de purga." msgid "Wipe tower extruder" msgstr "Extrusor de torre de purga" -msgid "" -"The extruder to use when printing perimeter of the wipe tower. Set to 0 to " -"use the one that is available (non-soluble would be preferred)." -msgstr "" -"Extrusor usado para imprimir el perímetro de la torre de purga. Ajuste a 0 " -"para usar el único disponible. (no soluble preferentemente)." +msgid "The extruder to use when printing perimeter of the wipe tower. Set to 0 to use the one that is available (non-soluble would be preferred)." +msgstr "Extrusor usado para imprimir el perímetro de la torre de purga. Ajuste a 0 para usar el único disponible. (no soluble preferentemente)." msgid "Purging volumes - load/unload volumes" msgstr "Volumenes de purga - carga/descarga de volúmenes" -msgid "" -"This vector saves required volumes to change from/to each tool used on the " -"wipe tower. These values are used to simplify creation of the full purging " -"volumes below." -msgstr "" -"Este vector guarda los volúmenes necesarios para cambiar de/a cada " -"herramienta utilizada en la torre de purga. Estos valores se utilizan para " -"simplificar la creación de los volúmenes de purga completos a continuación." +msgid "This vector saves required volumes to change from/to each tool used on the wipe tower. These values are used to simplify creation of the full purging volumes below." +msgstr "Este vector guarda los volúmenes necesarios para cambiar de/a cada herramienta utilizada en la torre de purga. Estos valores se utilizan para simplificar la creación de los volúmenes de purga completos a continuación." -msgid "" -"Purging after filament change will be done inside objects' infills. This may " -"lower the amount of waste and decrease the print time. If the walls are " -"printed with transparent filament, the mixed color infill will be seen " -"outside. It will not take effect, unless the prime tower is enabled." -msgstr "" -"La purga tras el cambio de filamento se realizará dentro de los rellenos de " -"los objetos. Esto puede reducir la cantidad de residuos y disminuir el " -"tiempo de impresión. Si los perímetros se imprimen con filamento " -"transparente, el relleno de color mixto se verá en el exterior. No tendrá " -"efecto, a menos que la torre de purga esté activada." +msgid "Purging after filament change will be done inside objects' infills. This may lower the amount of waste and decrease the print time. If the walls are printed with transparent filament, the mixed color infill will be seen outside. It will not take effect, unless the prime tower is enabled." +msgstr "La purga tras el cambio de filamento se realizará dentro de los rellenos de los objetos. Esto puede reducir la cantidad de residuos y disminuir el tiempo de impresión. Si los perímetros se imprimen con filamento transparente, el relleno de color mixto se verá en el exterior. No tendrá efecto, a menos que la torre de purga esté activada." -msgid "" -"Purging after filament change will be done inside objects' support. This may " -"lower the amount of waste and decrease the print time. It will not take " -"effect, unless the prime tower is enabled." -msgstr "" -"La purga tras el cambio de filamento se realizará dentro del soporte de los " -"objetos. Esto puede reducir la cantidad de residuos y disminuir el tiempo de " -"impresión. No tendrá efecto, a menos que la torre de purga esté activada." +msgid "Purging after filament change will be done inside objects' support. This may lower the amount of waste and decrease the print time. It will not take effect, unless the prime tower is enabled." +msgstr "La purga tras el cambio de filamento se realizará dentro del soporte de los objetos. Esto puede reducir la cantidad de residuos y disminuir el tiempo de impresión. No tendrá efecto, a menos que la torre de purga esté activada." -msgid "" -"This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed " -"as a result. It will not take effect, unless the prime tower is enabled." -msgstr "" -"Este objeto se utilizará para purgar la boquilla después de un cambio de " -"filamento para ahorrar filamento y disminuir el tiempo de impresión. Los " -"colores de los objetos se mezclarán como resultado. No tendrá efecto, a " -"menos que la torre de purga esté activada." +msgid "This object will be used to purge the nozzle after a filament change to save filament and decrease the print time. Colours of the objects will be mixed as a result. It will not take effect, unless the prime tower is enabled." +msgstr "Este objeto se utilizará para purgar la boquilla después de un cambio de filamento para ahorrar filamento y disminuir el tiempo de impresión. Los colores de los objetos se mezclarán como resultado. No tendrá efecto, a menos que la torre de purga esté activada." msgid "Maximal bridging distance" msgstr "Distancia máxima de puenteado" msgid "Maximal distance between supports on sparse infill sections." -msgstr "" -"Distancia máxima entre los soportes en las sección de relleno de baja " -"densidad." +msgstr "Distancia máxima entre los soportes en las sección de relleno de baja densidad." msgid "X-Y hole compensation" msgstr "Compensación de huecos X-Y" -msgid "" -"Holes of object will be grown or shrunk in XY plane by the configured value. " -"Positive value makes holes bigger. Negative value makes holes smaller. This " -"function is used to adjust size slightly when the object has assembling issue" -msgstr "" -"Los huecos del objeto crecerán o se reducirán en el plano XY según el valor " -"configurado. Un valor positivo hace que los huecos sean más grandes. Un " -"valor negativo hace que los huecos sean más pequeños. Esta función se " -"utiliza para ajustar el tamaño ligeramente cuando el objeto tiene problemas " -"de ensamblaje" +msgid "Holes of object will be grown or shrunk in XY plane by the configured value. Positive value makes holes bigger. Negative value makes holes smaller. This function is used to adjust size slightly when the object has assembling issue" +msgstr "Los huecos del objeto crecerán o se reducirán en el plano XY según el valor configurado. Un valor positivo hace que los huecos sean más grandes. Un valor negativo hace que los huecos sean más pequeños. Esta función se utiliza para ajustar el tamaño ligeramente cuando el objeto tiene problemas de ensamblaje" msgid "X-Y contour compensation" msgstr "Compensación de contornos X-Y" -msgid "" -"Contour of object will be grown or shrunk in XY plane by the configured " -"value. Positive value makes contour bigger. Negative value makes contour " -"smaller. This function is used to adjust size slightly when the object has " -"assembling issue" -msgstr "" -"El contorno del objeto crecerá o se reducirá en el plano XY según el valor " -"configurado. Un valor positivo hace que el contorno sea más grande. Un valor " -"negativo hace que el contorno sea más pequeño. Esta función se utiliza para " -"ajustar el tamaño ligeramente cuando el objeto tiene problemas de ensamblaje" +msgid "Contour of object will be grown or shrunk in XY plane by the configured value. Positive value makes contour bigger. Negative value makes contour smaller. This function is used to adjust size slightly when the object has assembling issue" +msgstr "El contorno del objeto crecerá o se reducirá en el plano XY según el valor configurado. Un valor positivo hace que el contorno sea más grande. Un valor negativo hace que el contorno sea más pequeño. Esta función se utiliza para ajustar el tamaño ligeramente cuando el objeto tiene problemas de ensamblaje" msgid "Convert holes to polyholes" msgstr "Convertir orificios en poliorificios" msgid "" -"Search for almost-circular holes that span more than one layer and convert " -"the geometry to polyholes. Use the nozzle size and the (biggest) diameter to " -"compute the polyhole.\n" +"Search for almost-circular holes that span more than one layer and convert the geometry to polyholes. Use the nozzle size and the (biggest) diameter to compute the polyhole.\n" "See http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgstr "" -"Busque orificios casi circulares que abarquen más de una capa y convierta la " -"geometría en poliorificios. Utilice el tamaño de la boquilla y el diámetro " -"(mayor) para calcular el poliorificio.\n" +"Busque orificios casi circulares que abarquen más de una capa y convierta la geometría en poliorificios. Utilice el tamaño de la boquilla y el diámetro (mayor) para calcular el poliorificio.\n" "Véase http://hydraraptor.blogspot.com/2011/02/poliorificios.html" msgid "Polyhole detection margin" @@ -11380,15 +9379,11 @@ msgstr "Margen de detección del poliorificio" #, c-format, boost-format msgid "" "Maximum defection of a point to the estimated radius of the circle.\n" -"As cylinders are often exported as triangles of varying size, points may not " -"be on the circle circumference. This setting allows you some leway to " -"broaden the detection.\n" +"As cylinders are often exported as triangles of varying size, points may not be on the circle circumference. This setting allows you some leway to broaden the detection.\n" "In mm or in % of the radius." msgstr "" "Desviación máxima de un punto respecto al radio estimado del círculo.\n" -"Como los cilindros se exportan a menudo como triángulos de tamaño variable, " -"es posible que los puntos no se encuentren en la circunferencia del círculo. " -"Este ajuste le permite cierto margen para ampliar la detección.\n" +"Como los cilindros se exportan a menudo como triángulos de tamaño variable, es posible que los puntos no se encuentren en la circunferencia del círculo. Este ajuste le permite cierto margen para ampliar la detección.\n" "En mm o en % o del radio." msgid "Polyhole twist" @@ -11400,46 +9395,23 @@ msgstr "Rotar el poliorificio en todas las capas." msgid "G-code thumbnails" msgstr "Tamaño de miniaturas de G-Code" -msgid "" -"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " -"following format: \"XxY, XxY, ...\"" -msgstr "" -"Los tamaños de las imágenes se almacenan en archivos .gcode y .sl1 / .sl1s, " -"en el siguiente formato: \"XxY, XxY, ...\"" +msgid "Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following format: \"XxY, XxY, ...\"" +msgstr "Los tamaños de las imágenes se almacenan en archivos .gcode y .sl1 / .sl1s, en el siguiente formato: \"XxY, XxY, ...\"" msgid "Format of G-code thumbnails" msgstr "Formato de las miniaturas de G-Code" -msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " -"QOI for low memory firmware" -msgstr "" -"Formato de las miniaturas de G-Code: PNG para la mejor calidad, JPG para el " -"tamaño más pequeño, QOI para firmware de baja memoria" +msgid "Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI for low memory firmware" +msgstr "Formato de las miniaturas de G-Code: PNG para la mejor calidad, JPG para el tamaño más pequeño, QOI para firmware de baja memoria" msgid "Use relative E distances" msgstr "Usar distancias relativas E" -msgid "" -"Relative extrusion is recommended when using \"label_objects\" option.Some " -"extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" -msgstr "" -"Se recomienda la extrusión relativa cuando se utiliza la opción " -"\"label_objects\". Algunos extrusores funcionan mejor con esta opción " -"desactivada (modo de extrusión absoluta). La torre de purga sólo es " -"compatible con el modo relativo. Siempre activa en las impresoras BambuLab. " -"Marcada por defecto" +msgid "Relative extrusion is recommended when using \"label_objects\" option.Some extruders work better with this option unckecked (absolute extrusion mode). Wipe tower is only compatible with relative mode. It is always enabled on BambuLab printers. Default is checked" +msgstr "Se recomienda la extrusión relativa cuando se utiliza la opción \"label_objects\". Algunos extrusores funcionan mejor con esta opción desactivada (modo de extrusión absoluta). La torre de purga sólo es compatible con el modo relativo. Siempre activa en las impresoras BambuLab. Marcada por defecto" -msgid "" -"Classic wall generator produces walls with constant extrusion width and for " -"very thin areas is used gap-fill. Arachne engine produces walls with " -"variable extrusion width" -msgstr "" -"El generador de perímetros clásico produce perímetros con anchura de " -"extrusión constante y para zonas muy finas se utiliza rellenar-espacio. El " -"motor Arachne produce perímetros con anchura de extrusión variable." +msgid "Classic wall generator produces walls with constant extrusion width and for very thin areas is used gap-fill. Arachne engine produces walls with variable extrusion width" +msgstr "El generador de perímetros clásico produce perímetros con anchura de extrusión constante y para zonas muy finas se utiliza rellenar-espacio. El motor Arachne produce perímetros con anchura de extrusión variable." msgid "Classic" msgstr "Clásico" @@ -11450,117 +9422,50 @@ msgstr "" msgid "Wall transition length" msgstr "Anchura de transición de perímetro" -msgid "" -"When transitioning between different numbers of walls as the part becomes " -"thinner, a certain amount of space is allotted to split or join the wall " -"segments. It's expressed as a percentage over nozzle diameter" -msgstr "" -"Cuando se pasa de un número de perímetros a otro a medida que la pieza se " -"vuelve más fina, se asigna una determinada cantidad de espacio para dividir " -"o unir los segmentos de perímetro. Se expresa como un porcentaje sobre el " -"diámetro de la boquilla" +msgid "When transitioning between different numbers of walls as the part becomes thinner, a certain amount of space is allotted to split or join the wall segments. It's expressed as a percentage over nozzle diameter" +msgstr "Cuando se pasa de un número de perímetros a otro a medida que la pieza se vuelve más fina, se asigna una determinada cantidad de espacio para dividir o unir los segmentos de perímetro. Se expresa como un porcentaje sobre el diámetro de la boquilla" msgid "Wall transitioning filter margin" msgstr "Margen del filtro de transición al perímetro" -msgid "" -"Prevent transitioning back and forth between one extra wall and one less. " -"This margin extends the range of extrusion widths which follow to [Minimum " -"wall width - margin, 2 * Minimum wall width + margin]. Increasing this " -"margin reduces the number of transitions, which reduces the number of " -"extrusion starts/stops and travel time. However, large extrusion width " -"variation can lead to under- or overextrusion problems. It's expressed as a " -"percentage over nozzle diameter" -msgstr "" -"Evita la transición entre un perímetro de más y uno de menos. Este margen " -"amplía el rango de anchos de extrusión que siguen a [Ancho mínimo de " -"perímetro - margen, 2 * Ancho mínimo de perímetro + margen]. Aumentando este " -"margen se reduce el número de transiciones, lo que reduce el número de " -"arranques/paradas de extrusión y el tiempo de recorrido. Sin embargo, una " -"gran variación de la anchura de extrusión puede provocar problemas de infra " -"o sobreextrusión. Se expresa en porcentaje sobre el diámetro de la boquilla" +msgid "Prevent transitioning back and forth between one extra wall and one less. This margin extends the range of extrusion widths which follow to [Minimum wall width - margin, 2 * Minimum wall width + margin]. Increasing this margin reduces the number of transitions, which reduces the number of extrusion starts/stops and travel time. However, large extrusion width variation can lead to under- or overextrusion problems. It's expressed as a percentage over nozzle diameter" +msgstr "Evita la transición entre un perímetro de más y uno de menos. Este margen amplía el rango de anchos de extrusión que siguen a [Ancho mínimo de perímetro - margen, 2 * Ancho mínimo de perímetro + margen]. Aumentando este margen se reduce el número de transiciones, lo que reduce el número de arranques/paradas de extrusión y el tiempo de recorrido. Sin embargo, una gran variación de la anchura de extrusión puede provocar problemas de infra o sobreextrusión. Se expresa en porcentaje sobre el diámetro de la boquilla" msgid "Wall transitioning threshold angle" msgstr "Ángulo del umbral de transición del perímetro" -msgid "" -"When to create transitions between even and odd numbers of walls. A wedge " -"shape with an angle greater than this setting will not have transitions and " -"no walls will be printed in the center to fill the remaining space. Reducing " -"this setting reduces the number and length of these center walls, but may " -"leave gaps or overextrude" -msgstr "" -"Cuándo crear transiciones entre números pares e impares de perímetros. Una " -"forma de cuña con un ángulo mayor que este ajuste no tendrá transiciones y " -"no se imprimirán perímetros en el centro para rellenar el espacio restante. " -"La reducción de este ajuste reduce el número y la longitud de estos " -"perímetros centrales, pero puede dejar huecos o sobresalir" +msgid "When to create transitions between even and odd numbers of walls. A wedge shape with an angle greater than this setting will not have transitions and no walls will be printed in the center to fill the remaining space. Reducing this setting reduces the number and length of these center walls, but may leave gaps or overextrude" +msgstr "Cuándo crear transiciones entre números pares e impares de perímetros. Una forma de cuña con un ángulo mayor que este ajuste no tendrá transiciones y no se imprimirán perímetros en el centro para rellenar el espacio restante. La reducción de este ajuste reduce el número y la longitud de estos perímetros centrales, pero puede dejar huecos o sobresalir" msgid "Wall distribution count" msgstr "Recuento de la distribución del perímetro" -msgid "" -"The number of walls, counted from the center, over which the variation needs " -"to be spread. Lower values mean that the outer walls don't change in width" -msgstr "" -"El número de perímetros, contados desde el centro, sobre los que debe " -"repartirse la variación. Los valores más bajos significan que los perímetros " -"exteriores no cambian de anchura" +msgid "The number of walls, counted from the center, over which the variation needs to be spread. Lower values mean that the outer walls don't change in width" +msgstr "El número de perímetros, contados desde el centro, sobre los que debe repartirse la variación. Los valores más bajos significan que los perímetros exteriores no cambian de anchura" msgid "Minimum feature size" msgstr "Tamaño mínimo del elemento" -msgid "" -"Minimum thickness of thin features. Model features that are thinner than " -"this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum wall width. It's expressed as a " -"percentage over nozzle diameter" -msgstr "" -"Espesor mínimo de los elementos finos. Las características del modelo que " -"sean más finas que este valor no se imprimirán, mientras que las " -"características más gruesas que el Tamaño mínimo del elemento se ensancharán " -"hasta el Ancho mínimo de perímetro. Se expresa en porcentaje sobre el " -"diámetro de la boquilla" +msgid "Minimum thickness of thin features. Model features that are thinner than this value will not be printed, while features thicker than the Minimum feature size will be widened to the Minimum wall width. It's expressed as a percentage over nozzle diameter" +msgstr "Espesor mínimo de los elementos finos. Las características del modelo que sean más finas que este valor no se imprimirán, mientras que las características más gruesas que el Tamaño mínimo del elemento se ensancharán hasta el Ancho mínimo de perímetro. Se expresa en porcentaje sobre el diámetro de la boquilla" msgid "First layer minimum wall width" msgstr "Ancho mínimo del perímetro de la primera capa" -msgid "" -"The minimum wall width that should be used for the first layer is " -"recommended to be set to the same size as the nozzle. This adjustment is " -"expected to enhance adhesion." -msgstr "" -"Se recomienda que el ancho mínimo del perímetro que se debe utilizar para la " -"primera capa se establezca en el mismo tamaño que la boquilla. Se espera que " -"este ajuste mejore la adherencia." +msgid "The minimum wall width that should be used for the first layer is recommended to be set to the same size as the nozzle. This adjustment is expected to enhance adhesion." +msgstr "Se recomienda que el ancho mínimo del perímetro que se debe utilizar para la primera capa se establezca en el mismo tamaño que la boquilla. Se espera que este ajuste mejore la adherencia." msgid "Minimum wall width" msgstr "Ancho mínimo del perímetro" -msgid "" -"Width of the wall that will replace thin features (according to the Minimum " -"feature size) of the model. If the Minimum wall width is thinner than the " -"thickness of the feature, the wall will become as thick as the feature " -"itself. It's expressed as a percentage over nozzle diameter" -msgstr "" -"Anchura del perímetro que sustituirá a los elementos finos (según el tamaño " -"mínimo del elemento) del modelo. Si la anchura mínima del perímetro es menor " -"que el grosor de la característica, el perímetro será tan grueso como la " -"propia característica. Se expresa en porcentaje sobre el diámetro de la " -"boquilla" +msgid "Width of the wall that will replace thin features (according to the Minimum feature size) of the model. If the Minimum wall width is thinner than the thickness of the feature, the wall will become as thick as the feature itself. It's expressed as a percentage over nozzle diameter" +msgstr "Anchura del perímetro que sustituirá a los elementos finos (según el tamaño mínimo del elemento) del modelo. Si la anchura mínima del perímetro es menor que el grosor de la característica, el perímetro será tan grueso como la propia característica. Se expresa en porcentaje sobre el diámetro de la boquilla" msgid "Detect narrow internal solid infill" msgstr "Detección de pequeños rellenos sólidos" -msgid "" -"This option will auto detect narrow internal solid infill area. If enabled, " -"concentric pattern will be used for the area to speed printing up. " -"Otherwise, rectilinear pattern is used defaultly." -msgstr "" -"Esta opción detectará automáticamente el área de relleno sólido interno " -"estrecho. Si se activa, se utilizará un patrón concéntrico para el área para " -"acelerar la impresión. De lo contrario, se utilizará por defecto un patrón " -"rectilíneo." +msgid "This option will auto detect narrow internal solid infill area. If enabled, concentric pattern will be used for the area to speed printing up. Otherwise, rectilinear pattern is used defaultly." +msgstr "Esta opción detectará automáticamente el área de relleno sólido interno estrecho. Si se activa, se utilizará un patrón concéntrico para el área para acelerar la impresión. De lo contrario, se utilizará por defecto un patrón rectilíneo." msgid "invalid value " msgstr "valor inválido " @@ -11584,21 +9489,16 @@ msgid "No check" msgstr "No comprobado" msgid "Do not run any validity checks, such as gcode path conflicts check." -msgstr "" -"No ejecute ninguna comprobación de validez, como la comprobación de " -"conflictos de ruta de G-Code." +msgstr "No ejecute ninguna comprobación de validez, como la comprobación de conflictos de ruta de G-Code." msgid "Ensure on bed" msgstr "Asegurar en la cama" -msgid "" -"Lift the object above the bed when it is partially below. Disabled by default" -msgstr "" -"Eleva el objeto sobre la cama cuando está parcialmente bajo. Deshabilitado " -"por defecto" +msgid "Lift the object above the bed when it is partially below. Disabled by default" +msgstr "Eleva el objeto sobre la cama cuando está parcialmente bajo. Deshabilitado por defecto" msgid "Orient Options" -msgstr "Opciones de Orientación" +msgstr "Opciones de orientación" msgid "Orient options: 0-disable, 1-enable, others-auto" msgstr "Opciones de orientación: 0-deshabilitar. 1-habilitar. otros-auto" @@ -11615,14 +9515,8 @@ msgstr "El ángulo de rotación alrededor del eje Y en grados." msgid "Data directory" msgstr "Directorio de datos" -msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." -msgstr "" -"Carga y almacena configuraciones en el directorio dado. Esto es útil para " -"mantener diferentes perfiles o incluir configuraciones desde un " -"almacenamiento en red." +msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." +msgstr "Carga y almacena configuraciones en el directorio dado. Esto es útil para mantener diferentes perfiles o incluir configuraciones desde un almacenamiento en red." msgid "Load custom gcode" msgstr "Cargar G-Code personalizado" @@ -11661,12 +9555,8 @@ msgid "large overhangs" msgstr "voladizos grandes" #, c-format, boost-format -msgid "" -"It seems object %s has %s. Please re-orient the object or enable support " -"generation." -msgstr "" -"Parece que el objeto %s tiene %s. Por favor, reoriente el objeto o active la " -"generación de soporte." +msgid "It seems object %s has %s. Please re-orient the object or enable support generation." +msgstr "Parece que el objeto %s tiene %s. Por favor, reoriente el objeto o active la generación de soporte." msgid "Optimizing toolpath" msgstr "Optimización de la trayectoria de la herramienta" @@ -11674,20 +9564,14 @@ msgstr "Optimización de la trayectoria de la herramienta" msgid "Slicing mesh" msgstr "Malla de corte" -msgid "" -"No layers were detected. You might want to repair your STL file(s) or check " -"their size or thickness and retry.\n" -msgstr "" -"No se han detectado capas. Es posible que desee reparar su(s) archivo(s) STL " -"o comprobar su tamaño o grosor y volver a intentarlo.\n" +msgid "No layers were detected. You might want to repair your STL file(s) or check their size or thickness and retry.\n" +msgstr "No se han detectado capas. Es posible que desee reparar su(s) archivo(s) STL o comprobar su tamaño o grosor y volver a intentarlo.\n" msgid "" -"An object's XY size compensation will not be used because it is also color-" -"painted.\n" +"An object's XY size compensation will not be used because it is also color-painted.\n" "XY Size compensation can not be combined with color-painting." msgstr "" -"An object's XY size compensation will not be used because it is also color-" -"painted.\n" +"An object's XY size compensation will not be used because it is also color-painted.\n" "XY Size compensation can not be combined with color-painting." #, c-format, boost-format @@ -11721,11 +9605,8 @@ msgstr "Soporte: arreglar huecos en la capa %d" msgid "Support: propagate branches at layer %d" msgstr "Soporte: propagar ramas en la capa %d" -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Unknown file format: input file must have .stl, .obj, or .amf(.xml) " -"extension." +msgid "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgid "Loading of a model file failed." msgstr "Loading of model file failed." @@ -11790,8 +9671,7 @@ msgstr "Finalizar" msgid "How to use calibration result?" msgstr "¿Cómo usar el resultado de la calibración?" -msgid "" -"You could change the Flow Dynamics Calibration Factor in material editing" +msgid "You could change the Flow Dynamics Calibration Factor in material editing" msgstr "Deberías cambiar el Factor de Calibración de Dinámicas de Flujo" msgid "" @@ -11844,7 +9724,7 @@ msgstr "El nombre no puede estar vacío." #, c-format, boost-format msgid "The selected preset: %s is not found." -msgstr "" +msgstr "El preajuste seleccionado: %s no encontrado." msgid "The name cannot be the same as the system preset name." msgstr "El nombre no puede ser el mismo que el nombre de ajuste del sistema." @@ -11855,11 +9735,8 @@ msgstr "El nombre coincide con el de otro ajuste" msgid "create new preset failed." msgstr "crear un nuevo ajuste fallido." -msgid "" -"Are you sure to cancel the current calibration and return to the home page?" -msgstr "" -"¿Estás seguro que quiere cancelar la calibración y volver a la página de " -"inicio?" +msgid "Are you sure to cancel the current calibration and return to the home page?" +msgstr "¿Estás seguro que quiere cancelar la calibración y volver a la página de inicio?" msgid "No Printer Connected!" msgstr "¡No hay Impresoras Conectadas!" @@ -11880,9 +9757,7 @@ msgid "The failed test result has been dropped." msgstr "El resultado del test fallido se ha descartado." msgid "Flow Dynamics Calibration result has been saved to the printer" -msgstr "" -"El resultado de la Calibración de Dinámicas de Flujo se ha salvado en la " -"impresora" +msgstr "El resultado de la Calibración de Dinámicas de Flujo se ha salvado en la impresora" msgid "Internal Error" msgstr "Error interno" @@ -11891,37 +9766,24 @@ msgid "Please select at least one filament for calibration" msgstr "Por favor, selecciona al menos un filamento por calibración" msgid "Flow rate calibration result has been saved to preset" -msgstr "" -"El resultado de la calibración del ratio de caudal se ha guardado en los " -"ajustes" +msgstr "El resultado de la calibración del ratio de caudal se ha guardado en los ajustes" msgid "Max volumetric speed calibration result has been saved to preset" -msgstr "" -"El resultado de la calibración de velocidad volumétrica máxima se ha salvado " -"en los ajustes" +msgstr "El resultado de la calibración de velocidad volumétrica máxima se ha salvado en los ajustes" msgid "When do you need Flow Dynamics Calibration" msgstr "Cuando necesita la Calibración de Dinámicas de Flujo" msgid "" -"We now have added the auto-calibration for different filaments, which is " -"fully automated and the result will be saved into the printer for future " -"use. You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the " -"filament is damp;\n" +"We now have added the auto-calibration for different filaments, which is fully automated and the result will be saved into the printer for future use. You only need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the filament is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" -"3. If the max volumetric speed or print temperature is changed in the " -"filament setting." +"3. If the max volumetric speed or print temperature is changed in the filament setting." msgstr "" -"Hemos añadido la auto-calibración para diferentes filamentos, los cuales " -"están totalmente automatizados, y los resultados se guardarán en la " -"impresora para futuros usos. Solo necesita calibrar en los siguientes " -"casos:\n" -"1. Sí introduce un nuevo filamento, o de diferentes marcas/modelos, o el " -"filamento está húmedo; \n" +"Hemos añadido la auto-calibración para diferentes filamentos, los cuales están totalmente automatizados, y los resultados se guardarán en la impresora para futuros usos. Solo necesita calibrar en los siguientes casos:\n" +"1. Sí introduce un nuevo filamento, o de diferentes marcas/modelos, o el filamento está húmedo; \n" "2. Sí la boquilla está desgastada o se sustituye por otra nueva;\n" -"3. Si la velocidad volumétrica máxima o la temperatura de impresión se " -"cambia en los ajustes de filamento." +"3. Si la velocidad volumétrica máxima o la temperatura de impresión se cambia en los ajustes de filamento." msgid "About this calibration" msgstr "Acerca de la calibración" @@ -11929,130 +9791,54 @@ msgstr "Acerca de la calibración" msgid "" "Please find the details of Flow Dynamics Calibration from our wiki.\n" "\n" -"Usually the calibration is unnecessary. When you start a single color/" -"material print, with the \"flow dynamics calibration\" option checked in the " -"print start menu, the printer will follow the old way, calibrate the " -"filament before the print; When you start a multi color/material print, the " -"printer will use the default compensation parameter for the filament during " -"every filament switch which will have a good result in most cases.\n" +"Usually the calibration is unnecessary. When you start a single color/material print, with the \"flow dynamics calibration\" option checked in the print start menu, the printer will follow the old way, calibrate the filament before the print; When you start a multi color/material print, the printer will use the default compensation parameter for the filament during every filament switch which will have a good result in most cases.\n" "\n" -"Please note there are a few cases that will make the calibration result not " -"reliable: using a texture plate to do the calibration; the build plate does " -"not have good adhesion (please wash the build plate or apply gluestick!) ..." -"You can find more from our wiki.\n" +"Please note there are a few cases that will make the calibration result not reliable: using a texture plate to do the calibration; the build plate does not have good adhesion (please wash the build plate or apply gluestick!) ...You can find more from our wiki.\n" "\n" -"The calibration results have about 10 percent jitter in our test, which may " -"cause the result not exactly the same in each calibration. We are still " -"investigating the root cause to do improvements with new updates." +"The calibration results have about 10 percent jitter in our test, which may cause the result not exactly the same in each calibration. We are still investigating the root cause to do improvements with new updates." msgstr "" -"Consulte los detalles de la Calibración de las Dinámicas de Flujo en nuestra " -"wiki.\n" +"Consulte los detalles de la Calibración de las Dinámicas de Flujo en nuestra wiki.\n" "\n" -"Normalmente la calibración es innecesaria. Cuando se inicia una impresión de " -"un solo color/material, con la opción \"Calibración de la dinámica de caudal" -"\" marcada en el menú de inicio de impresión, la impresora seguirá el método " -"antiguo, calibrar el filamento antes de la impresión; Cuando se inicia una " -"impresión de varios colores/materiales, la impresora utilizará el parámetro " -"de compensación por defecto para el filamento durante cada cambio de " -"filamento que tendrá un buen resultado en la mayoría de los casos.\n" +"Normalmente la calibración es innecesaria. Cuando se inicia una impresión de un solo color/material, con la opción \"Calibración de la dinámica de caudal\" marcada en el menú de inicio de impresión, la impresora seguirá el método antiguo, calibrar el filamento antes de la impresión; Cuando se inicia una impresión de varios colores/materiales, la impresora utilizará el parámetro de compensación por defecto para el filamento durante cada cambio de filamento que tendrá un buen resultado en la mayoría de los casos.\n" "\n" -"Tenga en cuenta que hay algunos casos en los que el resultado de la " -"calibración no es fiable: el uso de una placa de textura para hacer la " -"calibración; la bandeja no tiene buena adherencia (por favor, lave la " -"bandeja o aplique pegamento) ... Puede encontrar más información en nuestra " -"wiki.\n" +"Tenga en cuenta que hay algunos casos en los que el resultado de la calibración no es fiable: el uso de una placa de textura para hacer la calibración; la bandeja no tiene buena adherencia (por favor, lave la bandeja o aplique pegamento) ... Puede encontrar más información en nuestra wiki.\n" "\n" -"Los resultados de la calibración tienen alrededor de un 10 por ciento de " -"fluctuación en nuestra prueba, lo que puede causar que el resultado no sea " -"exactamente el mismo en cada calibración. Todavía estamos investigando la " -"causa raíz para hacer mejoras con nuevas actualizaciones." +"Los resultados de la calibración tienen alrededor de un 10 por ciento de fluctuación en nuestra prueba, lo que puede causar que el resultado no sea exactamente el mismo en cada calibración. Todavía estamos investigando la causa raíz para hacer mejoras con nuevas actualizaciones." msgid "When to use Flow Rate Calibration" msgstr "Cuando usar la Calibración de Ratio de Flujo" msgid "" -"After using Flow Dynamics Calibration, there might still be some extrusion " -"issues, such as:\n" -"1. Over-Extrusion: Excess material on your printed object, forming blobs or " -"zits, or the layers seem thicker than expected and not uniform.\n" -"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " -"top layer of the model, even when printing slowly.\n" +"After using Flow Dynamics Calibration, there might still be some extrusion issues, such as:\n" +"1. Over-Extrusion: Excess material on your printed object, forming blobs or zits, or the layers seem thicker than expected and not uniform.\n" +"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top layer of the model, even when printing slowly.\n" "3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" -"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " -"they should be." +"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they should be." msgstr "" -"Después de usar la Calibración de Dinámicas de Flujo, puede haber algunos " -"problemas de extrusión, como:\n" -"1. Sobre extrusión: Exceso de material en la impresión, formando truños o " -"capas más anchas y no uniformes.\n" -"2. Infra extrusión: Capas muy finas, relleno poco resistente, o huecos en la " -"capa superior del modelo, incluso cuando se imprime despacio.\n" -"3. Calidad pobre de Superficie: La superficie de sus impresiones parece " -"rugosa o irregular\n" -"4. Integridad Estructural Débil: Las impresiones se quiebran con facilidad y " -"no es tan resistente como suele serlo." +"Después de usar la Calibración de Dinámicas de Flujo, puede haber algunos problemas de extrusión, como:\n" +"1. Sobre extrusión: Exceso de material en la impresión, formando truños o capas más anchas y no uniformes.\n" +"2. Infra extrusión: Capas muy finas, relleno poco resistente, o huecos en la capa superior del modelo, incluso cuando se imprime despacio.\n" +"3. Calidad pobre de Superficie: La superficie de sus impresiones parece rugosa o irregular\n" +"4. Integridad Estructural Débil: Las impresiones se quiebran con facilidad y no es tan resistente como suele serlo." + +msgid "In addition, Flow Rate Calibration is crucial for foaming materials like LW-PLA used in RC planes. These materials expand greatly when heated, and calibration provides a useful reference flow rate." +msgstr "Además, la calibración del caudal es crucial para materiales espumosos como el LW-PLA utilizado en los planos RC. Estos materiales se expanden mucho cuando se calientan, y la calibración proporciona un caudal de referencia útil." + +msgid "Flow Rate Calibration measures the ratio of expected to actual extrusion volumes. The default setting works well in Bambu Lab printers and official filaments as they were pre-calibrated and fine-tuned. For a regular filament, you usually won't need to perform a Flow Rate Calibration unless you still see the listed defects after you have done other calibrations. For more details, please check out the wiki article." +msgstr "La calibración del caudal mide la relación entre los volúmenes de extrusión esperados y los reales. La configuración predeterminada funciona bien en las impresoras Bambu Lab y en los filamentos oficiales, ya que fueron precalibrados y ajustados con precisión. Para un filamento normal, normalmente no necesitarás realizar una Calibración de Caudal a menos que sigas viendo los defectos listados después de haber realizado otras calibraciones. Para más detalles, consulte el artículo de la wiki." msgid "" -"In addition, Flow Rate Calibration is crucial for foaming materials like LW-" -"PLA used in RC planes. These materials expand greatly when heated, and " -"calibration provides a useful reference flow rate." +"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, directly measuring the calibration patterns. However, please be advised that the efficacy and accuracy of this method may be compromised with specific types of materials. Particularly, filaments that are transparent or semi-transparent, sparkling-particled, or have a high-reflective finish may not be suitable for this calibration and can produce less-than-desirable results.\n" +"\n" +"The calibration results may vary between each calibration or filament. We are still improving the accuracy and compatibility of this calibration through firmware updates over time.\n" +"\n" +"Caution: Flow Rate Calibration is an advanced process, to be attempted only by those who fully understand its purpose and implications. Incorrect usage can lead to sub-par prints or printer damage. Please make sure to carefully read and understand the process before doing it." msgstr "" -"Además, la calibración del caudal es crucial para materiales espumosos como " -"el LW-PLA utilizado en los planos RC. Estos materiales se expanden mucho " -"cuando se calientan, y la calibración proporciona un caudal de referencia " -"útil." - -msgid "" -"Flow Rate Calibration measures the ratio of expected to actual extrusion " -"volumes. The default setting works well in Bambu Lab printers and official " -"filaments as they were pre-calibrated and fine-tuned. For a regular " -"filament, you usually won't need to perform a Flow Rate Calibration unless " -"you still see the listed defects after you have done other calibrations. For " -"more details, please check out the wiki article." -msgstr "" -"La calibración del caudal mide la relación entre los volúmenes de extrusión " -"esperados y los reales. La configuración predeterminada funciona bien en las " -"impresoras Bambu Lab y en los filamentos oficiales, ya que fueron " -"precalibrados y ajustados con precisión. Para un filamento normal, " -"normalmente no necesitarás realizar una Calibración de Caudal a menos que " -"sigas viendo los defectos listados después de haber realizado otras " -"calibraciones. Para más detalles, consulte el artículo de la wiki." - -msgid "" -"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, " -"directly measuring the calibration patterns. However, please be advised that " -"the efficacy and accuracy of this method may be compromised with specific " -"types of materials. Particularly, filaments that are transparent or semi-" -"transparent, sparkling-particled, or have a high-reflective finish may not " -"be suitable for this calibration and can produce less-than-desirable " -"results.\n" +"La auto Calibración de Ratio de Flujo utiliza la tecnología Micro-Lidar de Bambu Lab, midiendo directamente los patrones de calibración. Sin embargo, tenga en cuenta que la eficacia y precisión puede verse comprometida con algunos tipos de material. Particularmente, los filamentos que son transparentes o semi transparentes, o tienen un acabado altamente reflectante pueden no ser adecuados para esta calibración y producir resultados menos que deseables.\n" "\n" -"The calibration results may vary between each calibration or filament. We " -"are still improving the accuracy and compatibility of this calibration " -"through firmware updates over time.\n" +"Los resultados de la calibración pueden variar entre cada calibración o filamento. Seguimos mejorando la precisión y compatibilidad de esta calibración mediante actualizaciones de firmware a lo largo del tiempo.\n" "\n" -"Caution: Flow Rate Calibration is an advanced process, to be attempted only " -"by those who fully understand its purpose and implications. Incorrect usage " -"can lead to sub-par prints or printer damage. Please make sure to carefully " -"read and understand the process before doing it." -msgstr "" -"La auto Calibración de Ratio de Flujo utiliza la tecnología Micro-Lidar de " -"Bambu Lab, midiendo directamente los patrones de calibración. Sin embargo, " -"tenga en cuenta que la eficacia y precisión puede verse comprometida con " -"algunos tipos de material. Particularmente, los filamentos que son " -"transparentes o semi transparentes, o tienen un acabado altamente " -"reflectante pueden no ser adecuados para esta calibración y producir " -"resultados menos que deseables.\n" -"\n" -"Los resultados de la calibración pueden variar entre cada calibración o " -"filamento. Seguimos mejorando la precisión y compatibilidad de esta " -"calibración mediante actualizaciones de firmware a lo largo del tiempo.\n" -"\n" -"Precaución: La Calibración del Caudal es un proceso avanzado, que sólo debe " -"ser realizado por aquellos que entiendan completamente su propósito e " -"implicaciones. Un uso incorrecto puede dar lugar a impresiones de calidad " -"inferior o a daños en la impresora. Por favor asegúrese de leer " -"cuidadosamente y entender el proceso antes de hacerlo." +"Precaución: La Calibración del Caudal es un proceso avanzado, que sólo debe ser realizado por aquellos que entiendan completamente su propósito e implicaciones. Un uso incorrecto puede dar lugar a impresiones de calidad inferior o a daños en la impresora. Por favor asegúrese de leer cuidadosamente y entender el proceso antes de hacerlo." msgid "When you need Max Volumetric Speed Calibration" msgstr "Cuando necesite Calibrar la Velocidad Volumétrica Máxima" @@ -12061,8 +9847,7 @@ msgid "Over-extrusion or under extrusion" msgstr "Sobre extrusión o infra extrusión" msgid "Max Volumetric Speed calibration is recommended when you print with:" -msgstr "" -"Se recomienda calibrar la Velocidad Volumétrica Máxima cuando imprima con:" +msgstr "Se recomienda calibrar la Velocidad Volumétrica Máxima cuando imprima con:" msgid "material with significant thermal shrinkage/expansion, such as..." msgstr "material con importante contracción/expansión térmica, como..." @@ -12073,39 +9858,21 @@ msgstr "materiales con diámetro de filamento inpreciso" msgid "We found the best Flow Dynamics Calibration Factor" msgstr "Hemos encontrado el mejor Factor de Calibración de Dinámicas de Flujo" -msgid "" -"Part of the calibration failed! You may clean the plate and retry. The " -"failed test result would be dropped." -msgstr "" -"¡Parte de la calibración ha fallado! Debería limpiar la bandeja y " -"reintentar. El resultado de test fallido va a ser descartado." +msgid "Part of the calibration failed! You may clean the plate and retry. The failed test result would be dropped." +msgstr "¡Parte de la calibración ha fallado! Debería limpiar la bandeja y reintentar. El resultado de test fallido va a ser descartado." -msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in " -"the Name" -msgstr "" -"*Recomendamos añadir marca, material, tipo, e incluso nivel de humedad en el " -"Nombre" +msgid "*We recommend you to add brand, materia, type, and even humidity level in the Name" +msgstr "*Recomendamos añadir marca, material, tipo, e incluso nivel de humedad en el Nombre" msgid "Failed" msgstr "Error" -msgid "" -"Only one of the results with the same name will be saved. Are you sure you " -"want to overrides the other results?" -msgstr "" -"Solo se va a guardar uno de los resultados con el mismo nombre. ¿Está seguro " -"que desea sobrescribir el otro resultado?" +msgid "Only one of the results with the same name will be saved. Are you sure you want to overrides the other results?" +msgstr "Solo se va a guardar uno de los resultados con el mismo nombre. ¿Está seguro que desea sobrescribir el otro resultado?" #, c-format, boost-format -msgid "" -"There is already a historical calibration result with the same name: %s. " -"Only one of the results with the same name is saved. Are you sure you want " -"to overrides the historical result?" -msgstr "" -"Hay ya un resultado histórico de calibración con el mismo nombre: %s. Solo " -"se guardará uno de los resultados con el mismo nombre. ¿·Está seguro que " -"quiere sobrescribir el resultado histórico?" +msgid "There is already a historical calibration result with the same name: %s. Only one of the results with the same name is saved. Are you sure you want to overrides the historical result?" +msgstr "Hay ya un resultado histórico de calibración con el mismo nombre: %s. Solo se guardará uno de los resultados con el mismo nombre. ¿·Está seguro que quiere sobrescribir el resultado histórico?" msgid "Please find the best line on your plate" msgstr "Por favor encuentre la mejor línea en su bandeja" @@ -12147,8 +9914,7 @@ msgid "Please find the best object on your plate" msgstr "Por favor, busque el mejor objeto en su bandeja" msgid "Fill in the value above the block with smoothest top surface" -msgstr "" -"Rellenar el valor encima del bloque con la superficie superior más lisa" +msgstr "Rellenar el valor encima del bloque con la superficie superior más lisa" msgid "Skip Calibration2" msgstr "Saltar Calibración2" @@ -12164,9 +9930,7 @@ msgid "Please choose a block with smoothest top surface." msgstr "Por favor, escoja un bloque con la superficie superior más lisa." msgid "Please input a valid value (0 <= Max Volumetric Speed <= 60)" -msgstr "" -"Por favor, introduzca un valor válido (0 <= Velocidad Volumétrica Máxima <= " -"60)" +msgstr "Por favor, introduzca un valor válido (0 <= Velocidad Volumétrica Máxima <= 60)" msgid "Calibration Type" msgstr "Tipo de Calibración" @@ -12180,12 +9944,8 @@ msgstr "Calibración Fina basada en el ratio de caudal" msgid "Title" msgstr "Título" -msgid "" -"A test model will be printed. Please clear the build plate and place it back " -"to the hot bed before calibration." -msgstr "" -"Se imprimirá n modelo de test. Por favor limpie la bandeja y póngala de " -"nuevo en la cama caliente antes de calibrar." +msgid "A test model will be printed. Please clear the build plate and place it back to the hot bed before calibration." +msgstr "Se imprimirá n modelo de test. Por favor limpie la bandeja y póngala de nuevo en la cama caliente antes de calibrar." msgid "Printing Parameters" msgstr "Parámetros de Impresión" @@ -12215,8 +9975,7 @@ msgid "" msgstr "" "Consejos para la calibración del material:\n" "- Los materiales que pueden tener la misma temperatura de cama\n" -"- Las diferentes marcas de filamento y familias(Marca = Bambú. Familia = " -"Básica, Mate)" +"- Las diferentes marcas de filamento y familias(Marca = Bambú. Familia = Básica, Mate)" msgid "Pattern" msgstr "Patrón" @@ -12229,9 +9988,7 @@ msgid "%s is not compatible with %s" msgstr "%s no es compatible con %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." -msgstr "" -"El filamento TPU no está soportado para la Auto-Calibración de Dinámicas de " -"Flujo." +msgstr "El filamento TPU no está soportado para la Auto-Calibración de Dinámicas de Flujo." msgid "Connecting to printer" msgstr "Conectando a la impresora" @@ -12252,9 +10009,7 @@ msgid "0.005" msgstr "" msgid "The nozzle diameter has been synchronized from the printer Settings" -msgstr "" -"El diámetro de la boquilla has sido sincronizado desde los ajustes de " -"impresora" +msgstr "El diámetro de la boquilla has sido sincronizado desde los ajustes de impresora" msgid "From Volumetric Speed" msgstr "Desde Velocidad Volumétrica" @@ -12272,8 +10027,7 @@ msgid "Success to get history result" msgstr "Éxito recuperando los resultados históricos" msgid "Refreshing the historical Flow Dynamics Calibration records" -msgstr "" -"Refrescar el histórico de resultados de Calibración de Dinámicas de Flujo" +msgstr "Refrescar el histórico de resultados de Calibración de Dinámicas de Flujo" msgid "Action" msgstr "Acción" @@ -12469,8 +10223,7 @@ msgstr "Subir a almacenamiento" #, c-format, boost-format msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" -msgstr "" -"El nombre de archivo que va a cargar no acaba en \"%s\". ¿Desea continuar?" +msgstr "El nombre de archivo que va a cargar no acaba en \"%s\". ¿Desea continuar?" msgid "Upload" msgstr "Cargar" @@ -12513,8 +10266,7 @@ msgid "Error uploading to print host" msgstr "Error al subir al host de impresión" msgid "Unable to perform boolean operation on selected parts" -msgstr "" -"No es posible realizar la operación booleana en las partes selecionadas" +msgstr "No es posible realizar la operación booleana en las partes selecionadas" msgid "Mesh Boolean" msgstr "Malla Booleana" @@ -12553,79 +10305,79 @@ msgid "Delete input" msgstr "Borrado de entrada" msgid "Network Test" -msgstr "" +msgstr "Prueba de Red" msgid "Start Test Multi-Thread" -msgstr "" +msgstr "Iniciar Pruebas Multitarea" msgid "Start Test Single-Thread" -msgstr "" +msgstr "Iniciar Prueba Monotarea" msgid "Export Log" -msgstr "" +msgstr "Exportar Registro" msgid "Studio Version:" -msgstr "" +msgstr "Versión de Orca:" msgid "System Version:" -msgstr "" +msgstr "Versión de Sistema:" msgid "DNS Server:" -msgstr "" +msgstr "Servidor DNS:" msgid "Test BambuLab" -msgstr "" +msgstr "Prueba OrcaSlicer" msgid "Test BambuLab:" -msgstr "" +msgstr "Prueba OrcaSlicer:" msgid "Test Bing.com" -msgstr "" +msgstr "Prueba Bing.com" msgid "Test bing.com:" -msgstr "" +msgstr "Prueba Bing,.com:" msgid "Test HTTP" -msgstr "" +msgstr "Prueba HTTP" msgid "Test HTTP Service:" -msgstr "" +msgstr "Prueba Servicio HTTP:" msgid "Test storage" -msgstr "" +msgstr "Prueba de almacenamiento" msgid "Test Storage Upload:" -msgstr "" +msgstr "Prueba de Carga de Almacenamiento:" msgid "Test storage upgrade" -msgstr "" +msgstr "Prueba de actualización de almacenamiento" msgid "Test Storage Upgrade:" -msgstr "" +msgstr "Prueba de Actualización de Almacenamiento," msgid "Test storage download" -msgstr "" +msgstr "Prueba de descarga de almacenamiento" msgid "Test Storage Download:" -msgstr "" +msgstr "Prueba de Descarga de Almacenamiento:" msgid "Test plugin download" -msgstr "" +msgstr "Prueba de descarga de plugin" msgid "Test Plugin Download:" -msgstr "" +msgstr "Prueba de Descarga de Plugin:" msgid "Test Storage Upload" -msgstr "" +msgstr "Prueba de Carga de Almacenamiento" msgid "Log Info" -msgstr "" +msgstr "Información de Registro" msgid "Select filament preset" -msgstr "" +msgstr "Seleccionar preajuste de filamento" msgid "Create Filament" -msgstr "" +msgstr "Crear Filamento" msgid "Create Based on Current Filament" msgstr "" @@ -12675,8 +10427,7 @@ msgstr "" msgid "Custom vendor is not input, please input custom vendor." msgstr "" -msgid "" -"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgid "\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." msgstr "" msgid "Filament type is not selected, please reselect type." @@ -12685,9 +10436,7 @@ msgstr "" msgid "Filament serial is not inputed, please input serial." msgstr "" -msgid "" -"There may be escape characters in the vendor or serial input of filament. " -"Please delete and re-enter." +msgid "There may be escape characters in the vendor or serial input of filament. Please delete and re-enter." msgstr "" msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." @@ -12696,8 +10445,7 @@ msgstr "" msgid "The vendor can not be a number. Please re-enter." msgstr "" -msgid "" -"You have not selected a printer or preset yet. Please select at least one." +msgid "You have not selected a printer or preset yet. Please select at least one." msgstr "" msgid "Some existing presets have failed to be created, as follows:\n" @@ -12709,8 +10457,7 @@ msgid "" msgstr "" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected\". \n" "To add preset for more prinetrs, Please go to printer selection" msgstr "" @@ -12814,26 +10561,19 @@ msgstr "" msgid "Back Page 1" msgstr "" -msgid "" -"You have not yet chosen which printer preset to create based on. Please " -"choose the vendor and model of the printer" +msgid "You have not yet chosen which printer preset to create based on. Please choose the vendor and model of the printer" msgstr "" -msgid "" -"You have entered an illegal input in the printable area section on the first " -"page. Please check before creating it." +msgid "You have entered an illegal input in the printable area section on the first page. Please check before creating it." msgstr "" msgid "The custom printer or model is not inputed, place input." msgstr "" msgid "" -"The printer preset you created already has a preset with the same name. Do " -"you want to overwrite it?\n" -"\tYes: Overwrite the printer preset with the same name, and filament and " -"process presets with the same preset name will be recreated \n" -"and filament and process presets without the same preset name will be " -"reserve.\n" +"The printer preset you created already has a preset with the same name. Do you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be reserve.\n" "\tCancel: Do not create a preset, return to the creation interface." msgstr "" @@ -12855,25 +10595,19 @@ msgstr "" msgid "Current vendor has no models, please reselect." msgstr "" -msgid "" -"You have not selected the vendor and model or inputed the custom vendor and " -"model." +msgid "You have not selected the vendor and model or inputed the custom vendor and model." msgstr "" -msgid "" -"There may be escape characters in the custom printer vendor or model. Please " -"delete and re-enter." +msgid "There may be escape characters in the custom printer vendor or model. Please delete and re-enter." msgstr "" -msgid "" -"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgid "All inputs in the custom printer vendor or model are spaces. Please re-enter." msgstr "" msgid "Please check bed printable shape and origin input." msgstr "" -msgid "" -"You have not yet selected the printer to replace the nozzle, please choose." +msgid "You have not yet selected the printer to replace the nozzle, please choose." msgstr "" msgid "Create Printer Successful" @@ -12893,9 +10627,7 @@ msgstr "" msgid "" "Please go to filament setting to edit your presets if you need.\n" -"Please note that nozzle temperature, hot bed temperature, and maximum " -"volumetric speed have a significant impact on printing quality. Please set " -"them carefully." +"Please note that nozzle temperature, hot bed temperature, and maximum volumetric speed have a significant impact on printing quality. Please set them carefully." msgstr "" msgid "Printer Setting" @@ -12939,10 +10671,8 @@ msgstr "" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to " -"clear it and rebuild it.\n" -"If not, a time suffix will be added, and you can modify the name after " -"creation." +"The '%s' folder already exists in the current directory. Do you want to clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after creation." msgstr "" msgid "" @@ -12955,29 +10685,23 @@ msgid "" "Can be shared with others." msgstr "" -msgid "" -"Only display printer names with changes to printer, filament, and process " -"presets." +msgid "Only display printer names with changes to printer, filament, and process presets." msgstr "" msgid "Only display the filament names with changes to filament presets." msgstr "" -msgid "" -"Only printer names with user printer presets will be displayed, and each " -"preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." msgstr "" msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be " -"exported as a zip." +"and all user filament presets in each filament name you select will be exported as a zip." msgstr "" msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be " -"exported as a zip." +"and all user process presets in each printer name you select will be exported as a zip." msgstr "" msgid "Please select at least one printer or filament." @@ -12992,9 +10716,7 @@ msgstr "" msgid "Filament presets under this filament" msgstr "" -msgid "" -"Note: If the only preset under this filament is deleted, the filament will " -"be deleted after exiting the dialog." +msgid "Note: If the only preset under this filament is deleted, the filament will be deleted after exiting the dialog." msgstr "" msgid "Presets inherited by other presets can not be deleted" @@ -13022,8 +10744,7 @@ msgstr "" msgid "" "All the filament presets belong to this filament would be deleted. \n" -"If you are using this filament on your printer, please reset the filament " -"information for that slot." +"If you are using this filament on your printer, please reset the filament information for that slot." msgstr "" msgid "Delete filament" @@ -13059,12 +10780,8 @@ msgstr "Necesario seleccionar impresora" msgid "The start, end or step is not valid value." msgstr "El inicio, el final o el paso no tienen un valor válido." -msgid "" -"Unable to calibrate: maybe because the set calibration value range is too " -"large, or the step is too small" -msgstr "" -"No es posible calibrar debido a que el valor del rango de calibración es muy " -"grande, o el paso es muy pequeño" +msgid "Unable to calibrate: maybe because the set calibration value range is too large, or the step is too small" +msgstr "No es posible calibrar debido a que el valor del rango de calibración es muy grande, o el paso es muy pequeño" msgid "Physical Printer" msgstr "Impresora física" @@ -13081,39 +10798,24 @@ msgstr "¡Exitoso!" msgid "Refresh Printers" msgstr "Refrescar Impresoras" -msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." -msgstr "" -"El archivo HTTPS CA es opcional. Solo es necesario si utiliza HTTPS con un " -"certificado autofirmado." +msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." +msgstr "El archivo HTTPS CA es opcional. Solo es necesario si utiliza HTTPS con un certificado autofirmado." msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "" -"Archivos de certificado (*.crt, *.pem)|*.crt;*.pem|Todos los archivos|*.*" +msgstr "Archivos de certificado (*.crt, *.pem)|*.crt;*.pem|Todos los archivos|*.*" msgid "Open CA certificate file" msgstr "Abrir archivo de certificado CA" #, c-format, boost-format -msgid "" -"On this system, %s uses HTTPS certificates from the system Certificate Store " -"or Keychain." -msgstr "" -"En este sistema, %s utiliza certificados HTTPS del almacén de certificados o " -"llavero del sistema." +msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." +msgstr "En este sistema, %s utiliza certificados HTTPS del almacén de certificados o llavero del sistema." -msgid "" -"To use a custom CA file, please import your CA file into Certificate Store / " -"Keychain." -msgstr "" -"Para utilizar un archivo de CA personalizado, importe su archivo de CA a " -"Almacén de certificados / Llavero." +msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." +msgstr "Para utilizar un archivo de CA personalizado, importe su archivo de CA a Almacén de certificados / Llavero." msgid "Connection to printers connected via the print host failed." -msgstr "" -"Ha fallado la conexión a impresoras conectadas a través del host de " -"impresión." +msgstr "Ha fallado la conexión a impresoras conectadas a través del host de impresión." #, c-format, boost-format msgid "Mismatched type of print host: %s" @@ -13152,9 +10854,7 @@ msgstr "" msgid "Could not connect to FlashAir" msgstr "" -msgid "" -"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " -"is required." +msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." msgstr "" msgid "Connection to MKS works correctly." @@ -13240,16 +10940,13 @@ msgstr "" #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" -"Did you know that turning on precise wall can improve precision and layer " -"consistency?" +"Did you know that turning on precise wall can improve precision and layer consistency?" msgstr "" #: resources/data/hints.ini: [hint:Sandwich mode] msgid "" "Sandwich mode\n" -"Did you know that you can use sandwich mode (inner-outer-inner) to improve " -"precision and layer consistency if your model doesn't have very steep " -"overhangs?" +"Did you know that you can use sandwich mode (inner-outer-inner) to improve precision and layer consistency if your model doesn't have very steep overhangs?" msgstr "" #: resources/data/hints.ini: [hint:Chamber temperature] @@ -13261,8 +10958,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Calibration] msgid "" "Calibration\n" -"Did you know that calibrating your printer can do wonders? Check out our " -"beloved calibration solution in OrcaSlicer." +"Did you know that calibrating your printer can do wonders? Check out our beloved calibration solution in OrcaSlicer." msgstr "" #: resources/data/hints.ini: [hint:Auxiliary fan] @@ -13280,25 +10976,21 @@ msgstr "" #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" -"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " -"3D scene operations." +"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations." msgstr "" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" -"Did you know that you can cut a model at any angle and position with the " -"cutting tool?" +"Did you know that you can cut a model at any angle and position with the cutting tool?" msgstr "" "Herramienta de corte\n" -"¿Sabías que puedes cortar un modelo en cualquier ángulo y posición con la " -"herramienta de corte?" +"¿Sabías que puedes cortar un modelo en cualquier ángulo y posición con la herramienta de corte?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" "Fix Model\n" -"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " -"problems on the Windows system?" +"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing problems on the Windows system?" msgstr "" #: resources/data/hints.ini: [hint:Timelapse] @@ -13307,8 +10999,7 @@ msgid "" "Did you know that you can generate a timelapse video during each print?" msgstr "" "Intervalo\n" -"¿Sabías que puedes generar un vídeo de intervalo de trabajo durante cada " -"impresión?" +"¿Sabías que puedes generar un vídeo de intervalo de trabajo durante cada impresión?" #: resources/data/hints.ini: [hint:Auto-Arrange] msgid "" @@ -13321,194 +11012,143 @@ msgstr "" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" "Auto-Orient\n" -"Did you know that you can rotate objects to an optimal orientation for " -"printing by a simple click?" +"Did you know that you can rotate objects to an optimal orientation for printing by a simple click?" msgstr "" "Orientación automática\n" -"¿Sabía que puede girar los objetos a una orientación óptima para la " -"impresión con un simple clic?" +"¿Sabía que puede girar los objetos a una orientación óptima para la impresión con un simple clic?" #: resources/data/hints.ini: [hint:Lay on Face] msgid "" "Lay on Face\n" -"Did you know that you can quickly orient a model so that one of its faces " -"sits on the print bed? Select the \"Place on face\" function or press the " -"F key." +"Did you know that you can quickly orient a model so that one of its faces sits on the print bed? Select the \"Place on face\" function or press the F key." msgstr "" "Acostar sobre cara\n" -"¿Sabías que puedes orientar rápidamente un modelo para que una de sus caras " -"apoye en la cama de impresión? Seleccione la función 'Acostar sobre cara' o " -"presione la tecla F." +"¿Sabías que puedes orientar rápidamente un modelo para que una de sus caras apoye en la cama de impresión? Seleccione la función 'Acostar sobre cara' o presione la tecla F." #: resources/data/hints.ini: [hint:Object List] msgid "" "Object List\n" -"Did you know that you can view all objects/parts in a list and change " -"settings for each object/part?" +"Did you know that you can view all objects/parts in a list and change settings for each object/part?" msgstr "" "Lista de objetos\n" -"¿Sabías que puedes ver todos los objetos/piezas en una lista y cambiar los " -"ajustes de cada objeto/pieza?" +"¿Sabías que puedes ver todos los objetos/piezas en una lista y cambiar los ajustes de cada objeto/pieza?" #: resources/data/hints.ini: [hint:Search Functionality] msgid "" "Search Functionality\n" -"Did you know that you use the Search tool to quickly find a specific Orca " -"Slicer setting?" +"Did you know that you use the Search tool to quickly find a specific Orca Slicer setting?" msgstr "" #: resources/data/hints.ini: [hint:Simplify Model] msgid "" "Simplify Model\n" -"Did you know that you can reduce the number of triangles in a mesh using the " -"Simplify mesh feature? Right-click the model and select Simplify model." +"Did you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model." msgstr "" #: resources/data/hints.ini: [hint:Slicing Parameter Table] msgid "" "Slicing Parameter Table\n" -"Did you know that you can view all objects/parts on a table and change " -"settings for each object/part?" +"Did you know that you can view all objects/parts on a table and change settings for each object/part?" msgstr "" "Tabla de parámetros de laminado\n" -"¿Sabía que puede ver todos los objetos/partes de una tabla y cambiar los " -"parámetros de cada objeto/parte?" +"¿Sabía que puede ver todos los objetos/partes de una tabla y cambiar los parámetros de cada objeto/parte?" #: resources/data/hints.ini: [hint:Split to Objects/Parts] msgid "" "Split to Objects/Parts\n" -"Did you know that you can split a big object into small ones for easy " -"colorizing or printing?" +"Did you know that you can split a big object into small ones for easy colorizing or printing?" msgstr "" "Dividir en Objetos/Partes\n" -"¿Sabías que puedes dividir un objeto grande en pequeños para colorearlo o " -"imprimirlo fácilmente?" +"¿Sabías que puedes dividir un objeto grande en pequeños para colorearlo o imprimirlo fácilmente?" #: resources/data/hints.ini: [hint:Subtract a Part] msgid "" "Subtract a Part\n" -"Did you know that you can subtract one mesh from another using the Negative " -"part modifier? That way you can, for example, create easily resizable holes " -"directly in Orca Slicer." +"Did you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Orca Slicer." msgstr "" #: resources/data/hints.ini: [hint:STEP] msgid "" "STEP\n" -"Did you know that you can improve your print quality by slicing a STEP file " -"instead of an STL?\n" -"Orca Slicer supports slicing STEP files, providing smoother results than a " -"lower resolution STL. Give it a try!" +"Did you know that you can improve your print quality by slicing a STEP file instead of an STL?\n" +"Orca Slicer supports slicing STEP files, providing smoother results than a lower resolution STL. Give it a try!" msgstr "" "STEP\n" -"¿Sabías que puedes mejorar la calidad de impresión cortando un archivo STEP " -"en lugar de un STL?\n" -"Orca Slicer soporta el corte de archivos STEP, proporcionando resultados más " -"suaves que un STL de menor resolución. ¡Pruébalo!" +"¿Sabías que puedes mejorar la calidad de impresión cortando un archivo STEP en lugar de un STL?\n" +"Orca Slicer soporta el corte de archivos STEP, proporcionando resultados más suaves que un STL de menor resolución. ¡Pruébalo!" #: resources/data/hints.ini: [hint:Z seam location] msgid "" "Z seam location\n" -"Did you know that you can customize the location of the Z seam, and even " -"paint it on your print, to have it in a less visible location? This improves " -"the overall look of your model. Check it out!" +"Did you know that you can customize the location of the Z seam, and even paint it on your print, to have it in a less visible location? This improves the overall look of your model. Check it out!" msgstr "" "Ubicación de la costura Z\n" -"¿Sabías que puedes personalizar la ubicación de la costura Z, e incluso " -"pintarla en tu impresión, para tenerla en un lugar menos visible? Esto " -"mejora el aspecto general de tu modelo. ¡Compruébalo!" +"¿Sabías que puedes personalizar la ubicación de la costura Z, e incluso pintarla en tu impresión, para tenerla en un lugar menos visible? Esto mejora el aspecto general de tu modelo. ¡Compruébalo!" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking " -"prints? Depending on the material, you can improve the overall finish of the " -"printed model by doing some fine-tuning." +"Did you know that flow rate can be fine-tuned for even better-looking prints? Depending on the material, you can improve the overall finish of the printed model by doing some fine-tuning." msgstr "" "Ajuste fino del caudal\n" -"¿Sabías que el caudal puede ajustarse para obtener impresiones aún más " -"atractivas? Dependiendo del material, puede mejorar el acabado general del " -"modelo impreso realizando algunos ajustes." +"¿Sabías que el caudal puede ajustarse para obtener impresiones aún más atractivas? Dependiendo del material, puede mejorar el acabado general del modelo impreso realizando algunos ajustes." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" "Split your prints into plates\n" -"Did you know that you can split a model that has a lot of parts into " -"individual plates ready to print? This will simplify the process of keeping " -"track of all the parts." +"Did you know that you can split a model that has a lot of parts into individual plates ready to print? This will simplify the process of keeping track of all the parts." msgstr "" "Divide tus impresiones en planchas\n" -"¿Sabías que puedes dividir un modelo con muchas piezas en bandejas " -"individuales listas para imprimir? Esto simplificará el proceso de " -"seguimiento de todas las piezas." +"¿Sabías que puedes dividir un modelo con muchas piezas en bandejas individuales listas para imprimir? Esto simplificará el proceso de seguimiento de todas las piezas." #: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer #: Height] msgid "" "Speed up your print with Adaptive Layer Height\n" -"Did you know that you can print a model even faster, by using the Adaptive " -"Layer Height option? Check it out!" +"Did you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it out!" msgstr "" "Acelere su impresión con la altura de capa adaptable\n" -"¿Sabías que puedes imprimir un modelo aún más rápido utilizando la opción " -"Altura de capa adaptable? ¡Compruébalo!" +"¿Sabías que puedes imprimir un modelo aún más rápido utilizando la opción Altura de capa adaptable? ¡Compruébalo!" #: resources/data/hints.ini: [hint:Support painting] msgid "" "Support painting\n" -"Did you know that you can paint the location of your supports? This feature " -"makes it easy to place the support material only on the sections of the " -"model that actually need it." +"Did you know that you can paint the location of your supports? This feature makes it easy to place the support material only on the sections of the model that actually need it." msgstr "" "Pintura de soportes\n" -"¿Sabías que puedes pintar la ubicación de los soportes? Esta función " -"facilita la colocación del material de soporte sólo en las secciones del " -"modelo que realmente lo necesitan." +"¿Sabías que puedes pintar la ubicación de los soportes? Esta función facilita la colocación del material de soporte sólo en las secciones del modelo que realmente lo necesitan." #: resources/data/hints.ini: [hint:Different types of supports] msgid "" "Different types of supports\n" -"Did you know that you can choose from multiple types of supports? Tree " -"supports work great for organic models, while saving filament and improving " -"print speed. Check them out!" +"Did you know that you can choose from multiple types of supports? Tree supports work great for organic models, while saving filament and improving print speed. Check them out!" msgstr "" "Diferentes tipos de soportes\n" -"¿Sabías que puedes elegir entre varios tipos de soportes? Los soportes en " -"forma de árbol son ideales para modelos orgánicos, ahorran filamento y " -"mejoran la velocidad de impresión. ¡Compruébalos!" +"¿Sabías que puedes elegir entre varios tipos de soportes? Los soportes en forma de árbol son ideales para modelos orgánicos, ahorran filamento y mejoran la velocidad de impresión. ¡Compruébalos!" #: resources/data/hints.ini: [hint:Printing Silk Filament] msgid "" "Printing Silk Filament\n" -"Did you know that Silk filament needs special consideration to print it " -"successfully? Higher temperature and lower speed are always recommended for " -"the best results." +"Did you know that Silk filament needs special consideration to print it successfully? Higher temperature and lower speed are always recommended for the best results." msgstr "" "Impresión de filamento de seda\n" -"¿Sabías que el filamento de seda necesita una consideración especial para " -"imprimirlo con éxito? Se recomienda siempre una temperatura más alta y una " -"velocidad más baja para obtener los mejores resultados." +"¿Sabías que el filamento de seda necesita una consideración especial para imprimirlo con éxito? Se recomienda siempre una temperatura más alta y una velocidad más baja para obtener los mejores resultados." #: resources/data/hints.ini: [hint:Brim for better adhesion] msgid "" "Brim for better adhesion\n" -"Did you know that when printing models have a small contact interface with " -"the printing surface, it's recommended to use a brim?" +"Did you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?" msgstr "" "Borde de adherencia para una mejor adherencia\n" -"¿Sabía que cuando los modelos de impresión tienen una pequeña interfaz de " -"contacto con la superficie de impresión, se recomienda utilizar un borde de " -"adherencia?" +"¿Sabía que cuando los modelos de impresión tienen una pequeña interfaz de contacto con la superficie de impresión, se recomienda utilizar un borde de adherencia?" #: resources/data/hints.ini: [hint:Set parameters for multiple objects] msgid "" "Set parameters for multiple objects\n" -"Did you know that you can set slicing parameters for all selected objects at " -"one time?" +"Did you know that you can set slicing parameters for all selected objects at one time?" msgstr "" "Establecer parámetros para varios objetos\n" -"¿Sabías que puedes establecer parámetros de corte para todos los objetos " -"seleccionados a la vez?" +"¿Sabías que puedes establecer parámetros de corte para todos los objetos seleccionados a la vez?" #: resources/data/hints.ini: [hint:Stack objects] msgid "" @@ -13521,39 +11161,33 @@ msgstr "" #: resources/data/hints.ini: [hint:Flush into support/objects/infill] msgid "" "Flush into support/objects/infill\n" -"Did you know that you can save the wasted filament by flushing them into " -"support/objects/infill during filament change?" +"Did you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?" msgstr "" "Descarga en soporte/objetos/relleno\n" -"¿Sabías que puedes ahorrarte el filamento desperdiciado vertiéndolo en " -"soporte/objetos/relleno durante el cambio de filamento?" +"¿Sabías que puedes ahorrarte el filamento desperdiciado vertiéndolo en soporte/objetos/relleno durante el cambio de filamento?" #: resources/data/hints.ini: [hint:Improve strength] msgid "" "Improve strength\n" -"Did you know that you can use more wall loops and higher sparse infill " -"density to improve the strength of the model?" +"Did you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?" msgstr "" "Mejorar la resistencia\n" -"¿Sabías que puedes utilizar más bucles de perímetro y mayor densidad de " -"relleno de baja densidad para mejorar la resistencia del modelo?" +"¿Sabías que puedes utilizar más bucles de perímetro y mayor densidad de relleno de baja densidad para mejorar la resistencia del modelo?" #: resources/data/hints.ini: [hint:When need to print with the printer door #: opened] msgid "" "When need to print with the printer door opened\n" -"Did you know that opening the printer door can reduce the probability of " -"extruder/hotend clogging when printing lower temperature filament with a " -"higher enclosure temperature. More info about this in the Wiki." +"Did you know that opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature. More info about this in the Wiki." msgstr "" #: resources/data/hints.ini: [hint:Avoid warping] msgid "" "Avoid warping\n" -"Did you know that when printing materials that are prone to warping such as " -"ABS, appropriately increasing the heatbed temperature can reduce the " -"probability of warping." +"Did you know that when printing materials that are prone to warping such as ABS, appropriately increasing the heatbed temperature can reduce the probability of warping." msgstr "" +"Evite la deformación\n" +"Sabías que al imprimir materiales propensos a la deformación como el ABS, aumentar adecuadamente la temperatura del lecho térmico puede reducir la probabilidad de deformaciones." #~ msgid "Edit Text" #~ msgstr "Editar Texto" @@ -13588,9 +11222,6 @@ msgstr "" #~ msgid "Quick" #~ msgstr "Rápido" -#~ msgid "Auto-Calc" -#~ msgstr "Auto-Calc" - #~ msgid "unloaded" #~ msgstr "descargado" @@ -13600,35 +11231,22 @@ msgstr "" #~ msgid "Filament #" #~ msgstr "Filamento #" -#~ msgid "" -#~ "Discribe how long the nozzle will move along the last path when retracting" -#~ msgstr "" -#~ "Describa cuánto tiempo se moverá la boquilla a lo largo de la última " -#~ "trayectoria al retraerse" +#~ msgid "Discribe how long the nozzle will move along the last path when retracting" +#~ msgstr "Describa cuánto tiempo se moverá la boquilla a lo largo de la última trayectoria al retraerse" #~ msgid "" #~ "Simplify Model\n" -#~ "Did you know that you can reduce the number of triangles in a mesh using " -#~ "the Simplify mesh feature? Right-click the model and select Simplify " -#~ "model. Read more in the documentation." +#~ "Did you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model. Read more in the documentation." #~ msgstr "" #~ "Simplificar modelo\n" -#~ "¿Sabías que puedes reducir el número de triángulos de una malla " -#~ "utilizando la función Simplificar malla? Haga clic con el botón derecho " -#~ "del ratón en el modelo y seleccione Simplificar modelo. Más información " -#~ "en la documentación." +#~ "¿Sabías que puedes reducir el número de triángulos de una malla utilizando la función Simplificar malla? Haga clic con el botón derecho del ratón en el modelo y seleccione Simplificar modelo. Más información en la documentación." #~ msgid "" #~ "Subtract a Part\n" -#~ "Did you know that you can subtract one mesh from another using the " -#~ "Negative part modifier? That way you can, for example, create easily " -#~ "resizable holes directly in Orca Slicer. Read more in the documentation." +#~ "Did you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Orca Slicer. Read more in the documentation." #~ msgstr "" #~ "Restar una parte\n" -#~ "¿Sabías que puedes sustraer una malla de otra utilizando el modificador " -#~ "de pieza Negativa? De esta forma puedes, por ejemplo, crear orificios " -#~ "fácilmente redimensionables directamente en Orca Slicer. Más información " -#~ "en la documentación." +#~ "¿Sabías que puedes sustraer una malla de otra utilizando el modificador de pieza Negativa? De esta forma puedes, por ejemplo, crear orificios fácilmente redimensionables directamente en Orca Slicer. Más información en la documentación." #~ msgid "Filling bed " #~ msgstr "Rellenando cama " @@ -13647,11 +11265,7 @@ msgstr "" #~ "No - reiniciar a valor de densidad no 100% por defecto automáticamente" #~ msgid "Please heat the nozzle to above 170 degree before loading filament." -#~ msgstr "" -#~ "Caliente la boquilla a más de 170 grados antes de cargar el filamento." - -#~ msgid "Newer 3mf version" -#~ msgstr "Nueva versión 3mf" +#~ msgstr "Caliente la boquilla a más de 170 grados antes de cargar el filamento." #~ msgid "Show g-code window" #~ msgstr "Mostrar la ventana de G-Code" @@ -13661,17 +11275,13 @@ msgstr "" #, c-format #~ msgid "Density of internal sparse infill, 100% means solid throughout" -#~ msgstr "" -#~ "Densidad del relleno interno, el 100%% significa sólido en toda la " -#~ "superficie" +#~ msgstr "Densidad del relleno interno, el 100%% significa sólido en toda la superficie" #~ msgid "Tree support wall loops" #~ msgstr "Perímetros de las ramas" #~ msgid "This setting specify the count of walls around tree support" -#~ msgstr "" -#~ "Este ajuste especifica el número de perímetros alrededor del soporte del " -#~ "árbol" +#~ msgstr "Este ajuste especifica el número de perímetros alrededor del soporte del árbol" #, c-format, boost-format #~ msgid " doesn't work at 100%% density " @@ -13699,23 +11309,15 @@ msgstr "" #~ msgstr "Exportar todos los objetos como STL" #, c-format, boost-format -#~ msgid "" -#~ "The 3mf's version %s is newer than %s's version %s, Found following keys " -#~ "unrecognized:" -#~ msgstr "" -#~ "La versión de 3mf %s es más nueva que la versión de %s %s, encontradas " -#~ "las siguientes llaves no reconocidas:" +#~ msgid "The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:" +#~ msgstr "La versión de 3mf %s es más nueva que la versión de %s %s, encontradas las siguientes llaves no reconocidas:" #~ msgid "You'd better upgrade your software.\n" #~ msgstr "Será mejor que actualices tu software.\n" #, c-format, boost-format -#~ msgid "" -#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade " -#~ "your software." -#~ msgstr "" -#~ "La versión de 3mf %s es más nueva que la versión de %s %s, se sugiere " -#~ "actualizar su sofware." +#~ msgid "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software." +#~ msgstr "La versión de 3mf %s es más nueva que la versión de %s %s, se sugiere actualizar su sofware." #~ msgid "The 3mf is not compatible, load geometry data only!" #~ msgstr "¡El 3mf no es compatible, cargue solamente los datos de geometría!" @@ -13726,12 +11328,8 @@ msgstr "" #~ msgid "Add/Remove printers" #~ msgstr "Añadir/Borrar impresoras" -#~ msgid "" -#~ "When print by object, machines with I3 structure will not generate " -#~ "timelapse videos." -#~ msgstr "" -#~ "Cuando imprima por objeto, las máquinas con estructura I3 no generará " -#~ "videos timelapse." +#~ msgid "When print by object, machines with I3 structure will not generate timelapse videos." +#~ msgstr "Cuando imprima por objeto, las máquinas con estructura I3 no generará videos timelapse." #, c-format, boost-format #~ msgid "%s is not supported by AMS." @@ -13743,22 +11341,14 @@ msgstr "" #~ msgid "Error: IP or Access Code are not correct" #~ msgstr "Error: la IP o el Código de Acceso no son correctos" -#~ msgid "" -#~ "Extrude perimeters that have a part over an overhang in the reverse " -#~ "direction on odd layers. This alternating pattern can drastically improve " -#~ "steep overhang." -#~ msgstr "" -#~ "Extruya los perímetros que tienen una parte sobre un voladizo en sentido " -#~ "inverso en las capas impares. Este patrón alterno puede mejorar " -#~ "drásticamente los voladizos pronunciados." +#~ msgid "Extrude perimeters that have a part over an overhang in the reverse direction on odd layers. This alternating pattern can drastically improve steep overhang." +#~ msgstr "Extruya los perímetros que tienen una parte sobre un voladizo en sentido inverso en las capas impares. Este patrón alterno puede mejorar drásticamente los voladizos pronunciados." #~ msgid "Order of inner wall/outer wall/infil" #~ msgstr "Orden del perímetro interior/perímetro exterior/relleno" #~ msgid "Print sequence of inner wall, outer wall and infill. " -#~ msgstr "" -#~ "Imprimir la secuencia del perímetro interior, el perímetro exterior y el " -#~ "relleno. " +#~ msgstr "Imprimir la secuencia del perímetro interior, el perímetro exterior y el relleno. " #~ msgid "inner/outer/infill" #~ msgstr "interior/exterior/relleno" @@ -13803,8 +11393,7 @@ msgstr "" #~ msgstr "Laminar" #~ msgid "Slice the plates: 0-all plates, i-plate i, others-invalid" -#~ msgstr "" -#~ "Cortar las bandejas: 0-todas las bandejas, i-bandeja i, otras-inválidas" +#~ msgstr "Cortar las bandejas: 0-todas las bandejas, i-bandeja i, otras-inválidas" #~ msgid "Show command help." #~ msgstr "Mostrar la ayuda del comando." @@ -13888,15 +11477,13 @@ msgstr "" #~ msgstr "Cargar los ajustes generales" #~ msgid "Load process/machine settings from the specified file" -#~ msgstr "" -#~ "Cargar los ajustes del proceso/máquina desde el archivo especificado" +#~ msgstr "Cargar los ajustes del proceso/máquina desde el archivo especificado" #~ msgid "Load Filament Settings" #~ msgstr "Cargar los ajustes del filamento" #~ msgid "Load filament settings from the specified file list" -#~ msgstr "" -#~ "Cargar los ajustes del filamento desde la lista de archivos especificada" +#~ msgstr "Cargar los ajustes del filamento desde la lista de archivos especificada" #~ msgid "Skip Objects" #~ msgstr "Omitir objetos" @@ -13905,15 +11492,10 @@ msgstr "" #~ msgstr "Omitir algunos objetos en esta impresión" #~ msgid "load uptodate process/machine settings when using uptodate" -#~ msgstr "" -#~ "carga los ajustes actualizados de proceso/máquina cuando se usa actualizar" +#~ msgstr "carga los ajustes actualizados de proceso/máquina cuando se usa actualizar" -#~ msgid "" -#~ "load uptodate process/machine settings from the specified file when using " -#~ "uptodate" -#~ msgstr "" -#~ "carga los ajustes actualizados de proceso/máquina desde el archivo " -#~ "especificado cuando se usa actualizar" +#~ msgid "load uptodate process/machine settings from the specified file when using uptodate" +#~ msgstr "carga los ajustes actualizados de proceso/máquina desde el archivo especificado cuando se usa actualizar" #~ msgid "Output directory" #~ msgstr "Directorio de salida" @@ -13924,12 +11506,8 @@ msgstr "" #~ msgid "Debug level" #~ msgstr "Nivel de depuración" -#~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -#~ "trace\n" -#~ msgstr "" -#~ "Ajusta el nivel de registro de depuración. 0:fatal, 1:error, 2:" -#~ "advertencia, 3:información, 4:depuración, 5:rastreo\n" +#~ msgid "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" +#~ msgstr "Ajusta el nivel de registro de depuración. 0:fatal, 1:error, 2:advertencia, 3:información, 4:depuración, 5:rastreo\n" #, boost-format #~ msgid "The selected preset: %1% is not found." @@ -13937,54 +11515,39 @@ msgstr "" #~ msgid "" #~ "3D Scene Operations\n" -#~ "Did you know how to control view and object/part selection with mouse and " -#~ "touchpanel in the 3D scene?" +#~ "Did you know how to control view and object/part selection with mouse and touchpanel in the 3D scene?" #~ msgstr "" #~ "Operaciones de la escena 3D\n" -#~ "¿Sabías cómo controlar la vista y la selección de objetos/partes con el " -#~ "ratón y el panel táctil en la escena 3D?" +#~ "¿Sabías cómo controlar la vista y la selección de objetos/partes con el ratón y el panel táctil en la escena 3D?" #~ msgid "" #~ "Fix Model\n" -#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " -#~ "slicing problems?" +#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of slicing problems?" #~ msgstr "" #~ "Fijar modelo\n" -#~ "¿Sabías que puedes arreglar un modelo 3D dañado para evitar muchos " -#~ "problemas de corte?" +#~ "¿Sabías que puedes arreglar un modelo 3D dañado para evitar muchos problemas de corte?" #~ msgid "" #~ "When need to print with the printer door opened\n" -#~ "Opening the printer door can reduce the probability of extruder/hotend " -#~ "clogging when printing lower temperature filament with a higher enclosure " -#~ "temperature. More info about this in the Wiki." +#~ "Opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature. More info about this in the Wiki." #~ msgstr "" #~ "Cuando es necesario imprimir con la puerta de la impresora abierta\n" -#~ "Abrir la puerta de la impresora puede reducir la probabilidad de atasco " -#~ "del extrusor/hotend al imprimir filamento de baja temperatura con una " -#~ "temperatura de carcasa más alta. Más información sobre esto en la Wiki." +#~ "Abrir la puerta de la impresora puede reducir la probabilidad de atasco del extrusor/hotend al imprimir filamento de baja temperatura con una temperatura de carcasa más alta. Más información sobre esto en la Wiki." #~ msgid "The minimum printing speed when slow down for cooling" -#~ msgstr "" -#~ "La velocidad mínima de impresión cuando se ralentiza para el refrigeración" +#~ msgstr "La velocidad mínima de impresión cuando se ralentiza para el refrigeración" #~ msgid "Embeded" #~ msgstr "Integrado" -#~ msgid "" -#~ "OrcaSlicer configuration file may be corrupted and is not abled to be " -#~ "parsed.Please delete the file and try again." -#~ msgstr "" -#~ "El archivo de configuración de OrcaSlicer puede estar dañado y no puede " -#~ "ser procesado. Por favor borre el archivo e inténtelo otra vez." +#~ msgid "OrcaSlicer configuration file may be corrupted and is not abled to be parsed.Please delete the file and try again." +#~ msgstr "El archivo de configuración de OrcaSlicer puede estar dañado y no puede ser procesado. Por favor borre el archivo e inténtelo otra vez." #~ msgid "Online Models" #~ msgstr "Modelos En Línea" #~ msgid "Show online staff-picked models on the home page" -#~ msgstr "" -#~ "Mostrar modelos en línea seleccionados por el personal en la página de " -#~ "inicio" +#~ msgstr "Mostrar modelos en línea seleccionados por el personal en la página de inicio" #~ msgid "" #~ "Another virtual camera is running.\n" @@ -13998,74 +11561,45 @@ msgstr "" #~ msgid "The printer is required to be in the same LAN as Bambu Studio." #~ msgstr "La impresora debe estar en la misma LAN que Bambu Studio." -#~ msgid "" -#~ "Click OK to update the Network plug-in when Bambu Studio launches next " -#~ "time." -#~ msgstr "" -#~ "Haga clic en Aceptar para actualizar el complemento de red la próxima vez " -#~ "que se inicie Bambu Studio." +#~ msgid "Click OK to update the Network plug-in when Bambu Studio launches next time." +#~ msgstr "Haga clic en Aceptar para actualizar el complemento de red la próxima vez que se inicie Bambu Studio." #~ msgid "New version of Bambu Studio" #~ msgstr "Nueva versión de Bambu Studio" -#~ msgid "" -#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." -#~ msgstr "" -#~ "Paso 1: confirme que Bambu Studio y su impresora estén en la misma LAN." +#~ msgid "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "Paso 1: confirme que Bambu Studio y su impresora estén en la misma LAN." #~ msgid "Empty layers around bottom are replaced by nearest normal layers." -#~ msgstr "" -#~ "Las capas vacías del fondo se sustituyen por las capas normales más " -#~ "próximas." +#~ msgstr "Las capas vacías del fondo se sustituyen por las capas normales más próximas." #~ msgid "The model has too many empty layers." #~ msgstr "El modelo tiene demasiadas capas vacías." #~ msgid "" -#~ "There are currently no identical spare consumables available, and " -#~ "automatic replenishment is currently not possible. \n" -#~ "(Currently supporting automatic supply of consumables with the same " -#~ "brand, material type, and color)" +#~ "There are currently no identical spare consumables available, and automatic replenishment is currently not possible. \n" +#~ "(Currently supporting automatic supply of consumables with the same brand, material type, and color)" #~ msgstr "" -#~ "Actualmente no se dispone de consumibles de repuesto idénticos, por lo " -#~ "que la reposición automática no es posible. \n" -#~ "(Actualmente admite el suministro automático de consumibles con la misma " -#~ "marca, tipo de material y color)." +#~ "Actualmente no se dispone de consumibles de repuesto idénticos, por lo que la reposición automática no es posible. \n" +#~ "(Actualmente admite el suministro automático de consumibles con la misma marca, tipo de material y color)." #~ msgid "Invalid nozzle diameter" #~ msgstr "Diámetro de boquilla incorrecto" -#~ msgid "" -#~ "The bed temperature exceeds filament's vitrification temperature. Please " -#~ "open the front door of printer before printing to avoid nozzle clog." -#~ msgstr "" -#~ "La temperatura de la cama excede la temperatura de vitrificación del " -#~ "filamento. Por favor, abra la puerta frontal de la impresora antes de " -#~ "imprimir para evitar atascos en la boquilla." +#~ msgid "The bed temperature exceeds filament's vitrification temperature. Please open the front door of printer before printing to avoid nozzle clog." +#~ msgstr "La temperatura de la cama excede la temperatura de vitrificación del filamento. Por favor, abra la puerta frontal de la impresora antes de imprimir para evitar atascos en la boquilla." #~ msgid "Temperature of vitrificaiton" #~ msgstr "Temperatura de vitrificación" -#~ msgid "" -#~ "Material becomes soft at this temperature. Thus the heatbed cannot be " -#~ "hotter than this tempature" -#~ msgstr "" -#~ "El material se ablanda a esta temperatura. Por lo tanto, la cama caliente " -#~ "no puede estar más caliente que esta temperatura" +#~ msgid "Material becomes soft at this temperature. Thus the heatbed cannot be hotter than this tempature" +#~ msgstr "El material se ablanda a esta temperatura. Por lo tanto, la cama caliente no puede estar más caliente que esta temperatura" #~ msgid "Enable this option if machine has auxiliary part cooling fan" -#~ msgstr "" -#~ "Habilite esta opción si la máquina tiene un ventilador auxiliar de " -#~ "refrigeración de piezas" +#~ msgstr "Habilite esta opción si la máquina tiene un ventilador auxiliar de refrigeración de piezas" -#~ msgid "" -#~ "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " -#~ "during printing except the first several layers which is defined by no " -#~ "cooling layers" -#~ msgstr "" -#~ "Velocidad del ventilador de la parte auxiliar. El ventilador auxiliar " -#~ "funcionará a esta velocidad durante la impresión, excepto en las primeras " -#~ "capas, que se define por la ausencia de capas de refrigeración" +#~ msgid "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during printing except the first several layers which is defined by no cooling layers" +#~ msgstr "Velocidad del ventilador de la parte auxiliar. El ventilador auxiliar funcionará a esta velocidad durante la impresión, excepto en las primeras capas, que se define por la ausencia de capas de refrigeración" #~ msgid "Cali" #~ msgstr "Cali" @@ -14078,28 +11612,19 @@ msgstr "" #, c-format, boost-format #~ msgid "" -#~ "Bed temperature of other layer is lower than bed temperature of initial " -#~ "layer for more than %d degree centigrade.\n" +#~ "Bed temperature of other layer is lower than bed temperature of initial layer for more than %d degree centigrade.\n" #~ "This may cause model broken free from build plate during printing" #~ msgstr "" -#~ "La temperatura del lecho de la otra capa es inferior a la temperatura del " -#~ "lecho de la primera capa durante más de %d grados centígrados.\n" -#~ "Esto puede hacer que el modelo se desprenda de la bandeja durante la " -#~ "impresión" +#~ "La temperatura del lecho de la otra capa es inferior a la temperatura del lecho de la primera capa durante más de %d grados centígrados.\n" +#~ "Esto puede hacer que el modelo se desprenda de la bandeja durante la impresión" #~ msgid "" -#~ "Bed temperature is higher than vitrification temperature of this " -#~ "filament.\n" +#~ "Bed temperature is higher than vitrification temperature of this filament.\n" #~ "This may cause nozzle blocked and printing failure\n" -#~ "Please keep the printer open during the printing process to ensure air " -#~ "circulation or reduce the temperature of the hot bed" +#~ "Please keep the printer open during the printing process to ensure air circulation or reduce the temperature of the hot bed" #~ msgstr "" -#~ "La temperatura de capa es superior que la temperatura de vitrificación de " -#~ "este filamento. \n" -#~ " Esto podría causar que la boquilla se bloquee y produzca un fallo de " -#~ "impresión. Por favor, mantenga la impresora abierta durante el proceso " -#~ "para garantizar la circulación de aire o reducir la temperatura de la " -#~ "cama caliente" +#~ "La temperatura de capa es superior que la temperatura de vitrificación de este filamento. \n" +#~ " Esto podría causar que la boquilla se bloquee y produzca un fallo de impresión. Por favor, mantenga la impresora abierta durante el proceso para garantizar la circulación de aire o reducir la temperatura de la cama caliente" #~ msgid "Total Time Estimation" #~ msgstr "Tiempo Total Estimado" @@ -14128,53 +11653,25 @@ msgstr "" #~ msgid "High Temp Plate" #~ msgstr "Bandeja de Alta Temperatura" -#~ msgid "" -#~ "Bed temperature when high temperature plate is installed. Value 0 means " -#~ "the filament does not support to print on the High Temp Plate" -#~ msgstr "" -#~ "Esta es la temperatura de la cama cuando la bandeja de alta temperatura " -#~ "está instalada. Un valor de 0 significa que el filamento no admite la " -#~ "impresión en la bandeja de alta temperatura" +#~ msgid "Bed temperature when high temperature plate is installed. Value 0 means the filament does not support to print on the High Temp Plate" +#~ msgstr "Esta es la temperatura de la cama cuando la bandeja de alta temperatura está instalada. Un valor de 0 significa que el filamento no admite la impresión en la bandeja de alta temperatura" #~ msgid "Internal bridge support thickness" #~ msgstr "Altura carcasa de refuerzo interior en puentes" -#~ msgid "" -#~ "If enabled, support loops will be generated under the contours of " -#~ "internal bridges.These support loops could prevent internal bridges from " -#~ "extruding over the air and improve the top surface quality, especially " -#~ "when the sparse infill density is low.This value determines the thickness " -#~ "of the support loops. 0 means disable this feature" -#~ msgstr "" -#~ "Si está activado, los bucles de soporte generarán debajo de los contornos " -#~ "de puentes internos. Estos bucles de soporte pueden prevenir extruir " -#~ "puentes en el aire y mejorar la calidad de la superficie superior, " -#~ "especialmente cuando la densidad de relleno es baja. Este valor determina " -#~ "el grosor de los bucles de soporte. 0 significa deshabilitar esta " -#~ "característica" +#~ msgid "If enabled, support loops will be generated under the contours of internal bridges.These support loops could prevent internal bridges from extruding over the air and improve the top surface quality, especially when the sparse infill density is low.This value determines the thickness of the support loops. 0 means disable this feature" +#~ msgstr "Si está activado, los bucles de soporte generarán debajo de los contornos de puentes internos. Estos bucles de soporte pueden prevenir extruir puentes en el aire y mejorar la calidad de la superficie superior, especialmente cuando la densidad de relleno es baja. Este valor determina el grosor de los bucles de soporte. 0 significa deshabilitar esta característica" #, c-format, boost-format -#~ msgid "" -#~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" -#~ msgstr "" -#~ "El max_accel_to_decel de Klipper se ajustará a este % o de aceleración" +#~ msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +#~ msgstr "El max_accel_to_decel de Klipper se ajustará a este % o de aceleración" #~ msgid "" -#~ "Style and shape of the support. For normal support, projecting the " -#~ "supports into a regular grid will create more stable supports (default), " -#~ "while snug support towers will save material and reduce object scarring.\n" -#~ "For tree support, slim style will merge branches more aggressively and " -#~ "save a lot of material (default), while hybrid style will create similar " -#~ "structure to normal support under large flat overhangs." +#~ "Style and shape of the support. For normal support, projecting the supports into a regular grid will create more stable supports (default), while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and save a lot of material (default), while hybrid style will create similar structure to normal support under large flat overhangs." #~ msgstr "" -#~ "Estilo y forma del soporte. Para el soporte normal, proyectar los " -#~ "soportes en una cuadrícula regular creará soportes más estables (por " -#~ "defecto), mientras que las torres de soporte ajustadas ahorrarán material " -#~ "y reducirán las cicatrices del objeto.\n" -#~ "Para el soporte arbóreo, el estilo esbelto fusionará las ramas de forma " -#~ "más agresiva y ahorrará mucho material (por defecto), mientras que el " -#~ "estilo híbrido creará una estructura similar a la del soporte normal bajo " -#~ "grandes voladizos planos." +#~ "Estilo y forma del soporte. Para el soporte normal, proyectar los soportes en una cuadrícula regular creará soportes más estables (por defecto), mientras que las torres de soporte ajustadas ahorrarán material y reducirán las cicatrices del objeto.\n" +#~ "Para el soporte arbóreo, el estilo esbelto fusionará las ramas de forma más agresiva y ahorrará mucho material (por defecto), mientras que el estilo híbrido creará una estructura similar a la del soporte normal bajo grandes voladizos planos." #~ msgid "Target chamber temperature" #~ msgstr "Temperatura objetivo de la cámara" @@ -14182,15 +11679,8 @@ msgstr "" #~ msgid "Bed temperature difference" #~ msgstr "Diferencia de temperatura de la cama" -#~ msgid "" -#~ "Do not recommend bed temperature of other layer to be lower than initial " -#~ "layer for more than this threshold. Too low bed temperature of other " -#~ "layer may cause the model broken free from build plate" -#~ msgstr "" -#~ "No se recomienda que la temperatura de la otra capa sea inferior a la de " -#~ "la primera capa por encima de este umbral. Una temperatura demasiado baja " -#~ "de la otra capa puede hacer que el modelo se desprenda de la bandeja de " -#~ "impresión" +#~ msgid "Do not recommend bed temperature of other layer to be lower than initial layer for more than this threshold. Too low bed temperature of other layer may cause the model broken free from build plate" +#~ msgstr "No se recomienda que la temperatura de la otra capa sea inferior a la de la primera capa por encima de este umbral. Una temperatura demasiado baja de la otra capa puede hacer que el modelo se desprenda de la bandeja de impresión" #~ msgid "Orient the model" #~ msgstr "Orientar el modelo" @@ -14255,23 +11745,14 @@ msgstr "" #~ msgid "Failure of bind" #~ msgstr "Fallo en la vinculación" -#~ msgid "" -#~ "Upload task timed out. Please check the network problem and try again" -#~ msgstr "" -#~ "La tarea de carga ha terminado. Por favor, compruebe el problema de red e " -#~ "inténtelo de nuevo" +#~ msgid "Upload task timed out. Please check the network problem and try again" +#~ msgstr "La tarea de carga ha terminado. Por favor, compruebe el problema de red e inténtelo de nuevo" #~ msgid "Print file not found, please slice again" -#~ msgstr "" -#~ "No se ha encontrado el archivo de impresión, por favor, vuelva a " -#~ "procesarlo" +#~ msgstr "No se ha encontrado el archivo de impresión, por favor, vuelva a procesarlo" -#~ msgid "" -#~ "The print file exceeds the maximum allowable size (1GB). Please simplify " -#~ "the model and slice again" -#~ msgstr "" -#~ "El archivo de impresión supera el tamaño máximo permitido (1GB). Por " -#~ "favor, simplifique el modelo y vuelva a procesarlo" +#~ msgid "The print file exceeds the maximum allowable size (1GB). Please simplify the model and slice again" +#~ msgstr "El archivo de impresión supera el tamaño máximo permitido (1GB). Por favor, simplifique el modelo y vuelva a procesarlo" #~ msgid "Failed uploading print file" #~ msgstr "Fallo al cargar el archivo de impresión" @@ -14326,21 +11807,12 @@ msgstr "" #~ msgstr "Imprimiendo Lista" #, c-format, boost-format -#~ msgid "" -#~ "Disconnected from printer [%s] due to LAN mode disabled.Please reconnect " -#~ "the printer by logging in with your user account." -#~ msgstr "" -#~ "Desconectado de la impresora [%s] debido a modo de red deshabilitado. Por " -#~ "favor, reconéctese la impresora ingresando con su cuenta de usuario." +#~ msgid "Disconnected from printer [%s] due to LAN mode disabled.Please reconnect the printer by logging in with your user account." +#~ msgstr "Desconectado de la impresora [%s] debido a modo de red deshabilitado. Por favor, reconéctese la impresora ingresando con su cuenta de usuario." #, c-format, boost-format -#~ msgid "" -#~ "Disconnected from printer [%s] due to LAN mode enabled.Please reconnect " -#~ "the printer by inputting Access Code which can be gotten from printer " -#~ "screen." -#~ msgstr "" -#~ "Desconectado de la impresora [%s] debido a modo de red habilitado. Por " -#~ "favor, reconéctese la impresora ingresando con su cuenta de usuario." +#~ msgid "Disconnected from printer [%s] due to LAN mode enabled.Please reconnect the printer by inputting Access Code which can be gotten from printer screen." +#~ msgstr "Desconectado de la impresora [%s] debido a modo de red habilitado. Por favor, reconéctese la impresora ingresando con su cuenta de usuario." #~ msgid "Media" #~ msgstr "Medios" @@ -14354,41 +11826,24 @@ msgstr "" #~ msgid "Flow Calibration" #~ msgstr "Calibración del flujo" -#~ msgid "" -#~ "The configuration may be generated by a newer version of BambuStudio." -#~ msgstr "" -#~ "La configuración puede ser generada por una versión más reciente de " -#~ "BambuStudio." +#~ msgid "The configuration may be generated by a newer version of BambuStudio." +#~ msgstr "La configuración puede ser generada por una versión más reciente de BambuStudio." #~ msgid "Internal Version" #~ msgstr "Versión interna" -#~ msgid "" -#~ "BambuStudio will terminate because of running out of memory.It may be a " -#~ "bug. It will be appreciated if you report the issue to our team." -#~ msgstr "" -#~ "BambuStudio terminará porque se está quedando sin memoria. Le " -#~ "agradeceremos que comunique el problema a nuestro equipo." +#~ msgid "BambuStudio will terminate because of running out of memory.It may be a bug. It will be appreciated if you report the issue to our team." +#~ msgstr "BambuStudio terminará porque se está quedando sin memoria. Le agradeceremos que comunique el problema a nuestro equipo." -#~ msgid "" -#~ "BambuStudio will terminate because of a localization error. It will be " -#~ "appreciated if you report the specific scenario this issue happened." -#~ msgstr "" -#~ "BambuStudio terminará debido a un error de localización. Le agradeceremos " -#~ "que nos informe del escenario específico en el que se ha producido este " -#~ "problema." +#~ msgid "BambuStudio will terminate because of a localization error. It will be appreciated if you report the specific scenario this issue happened." +#~ msgstr "BambuStudio terminará debido a un error de localización. Le agradeceremos que nos informe del escenario específico en el que se ha producido este problema." #, boost-format #~ msgid "BambuStudio got an unhandled exception: %1%" -#~ msgstr "" -#~ "BambuStudio recibió una notificación de excepción no controlada: %1%." +#~ msgstr "BambuStudio recibió una notificación de excepción no controlada: %1%." -#~ msgid "" -#~ "BambuStudio configuration file may be corrupted and is not abled to be " -#~ "parsed.Please delete the file and try again." -#~ msgstr "" -#~ "El archivo de configuración de BambuStudio puede estar dañado y no puede " -#~ "ser procesado." +#~ msgid "BambuStudio configuration file may be corrupted and is not abled to be parsed.Please delete the file and try again." +#~ msgstr "El archivo de configuración de BambuStudio puede estar dañado y no puede ser procesado." #~ msgid "The Bambu Studio needs an upgrade" #~ msgstr "Bambu Studio necesita una actualización" @@ -14396,13 +11851,8 @@ msgstr "" #~ msgid "Choose one file (gcode/.gco/.g/.ngc/ngc):" #~ msgstr "Elija un archivo (gcode/.gco/.g/.ngc/ngc):" -#~ msgid "" -#~ "The version of Bambu studio is too low and needs to be updated to the " -#~ "latest version before it can be used normally" -#~ msgstr "" -#~ "La versión de Bambu Studio es una versión demasiado antigua y necesita " -#~ "ser actualizada a la última versión antes de poder utilizarla con " -#~ "normalidad" +#~ msgid "The version of Bambu studio is too low and needs to be updated to the latest version before it can be used normally" +#~ msgstr "La versión de Bambu Studio es una versión demasiado antigua y necesita ser actualizada a la última versión antes de poder utilizarla con normalidad" #~ msgid "Bambu Studio GUI initialization failed" #~ msgstr "Ha fallado la inicialización de la interfaz gráfica de Bambu Studio" @@ -14410,58 +11860,33 @@ msgstr "" #~ msgid "Bambu Studio is licensed under " #~ msgstr "Bambu Studio tiene licencia bajo " -#~ msgid "" -#~ "Bambu Studio is based on PrusaSlicer by Prusa Research, which is from " -#~ "Slic3r by Alessandro Ranellucci and the RepRap community" -#~ msgstr "" -#~ "Bambu Studio se basa en PrusaSlicer de Prusa Research, que proviene de " -#~ "Slic3r de Alessandro Ranellucci y la comunidad RepRap" +#~ msgid "Bambu Studio is based on PrusaSlicer by Prusa Research, which is from Slic3r by Alessandro Ranellucci and the RepRap community" +#~ msgstr "Bambu Studio se basa en PrusaSlicer de Prusa Research, que proviene de Slic3r de Alessandro Ranellucci y la comunidad RepRap" -#~ msgid "" -#~ "Bambu Studio is based on PrusaSlicer by PrusaResearch and SuperSlicer by " -#~ "Merill(supermerill)." -#~ msgstr "" -#~ "Bambu Studio está basado en PrusaSlicer de PrusaResearch y SuperSlicer de " -#~ "Merill (supermerill)." +#~ msgid "Bambu Studio is based on PrusaSlicer by PrusaResearch and SuperSlicer by Merill(supermerill)." +#~ msgstr "Bambu Studio está basado en PrusaSlicer de PrusaResearch y SuperSlicer de Merill (supermerill)." #~ msgid "Bambu Studio also referenced some ideas from Cura by Ultimaker." -#~ msgstr "" -#~ "Bambu Studio también hace referencia a algunas ideas de Cura de Ultimaker." +#~ msgstr "Bambu Studio también hace referencia a algunas ideas de Cura de Ultimaker." -#~ msgid "" -#~ "There many parts of the software that come from community contributions, " -#~ "so we're unable to list them one-by-one, and instead, they'll be " -#~ "attributed in the corresponding code comments." -#~ msgstr "" -#~ "Hay muchas partes del software que provienen de las contribuciones de la " -#~ "comunidad, por lo que no podemos enumerarlas una por una, sino que se " -#~ "atribuirán en los comentarios del código correspondientes." +#~ msgid "There many parts of the software that come from community contributions, so we're unable to list them one-by-one, and instead, they'll be attributed in the corresponding code comments." +#~ msgstr "Hay muchas partes del software que provienen de las contribuciones de la comunidad, por lo que no podemos enumerarlas una por una, sino que se atribuirán en los comentarios del código correspondientes." #~ msgid "Layer Time (s)" #~ msgstr "Layer Time (s)" #, c-format, boost-format -#~ msgid "" -#~ "Conflicts of gcode paths have been found at layer %d. Please separate the " -#~ "conflicted objects farther (%s <-> %s)." -#~ msgstr "" -#~ "Conflicts of gcode paths have been found at layer %d. Please separate the " -#~ "conflicting objects further (%s <-> %s)." +#~ msgid "Conflicts of gcode paths have been found at layer %d. Please separate the conflicted objects farther (%s <-> %s)." +#~ msgstr "Conflicts of gcode paths have been found at layer %d. Please separate the conflicting objects further (%s <-> %s)." #~ msgid "Report issue" #~ msgstr "Report issue" #~ msgid "The 3mf is generated by old Bambu Studio, load geometry data only." -#~ msgstr "" -#~ "3mf generado con versión antigua de Bambu Studio, se cargan datos de " -#~ "geometría unicamente." +#~ msgstr "3mf generado con versión antigua de Bambu Studio, se cargan datos de geometría unicamente." -#~ msgid "" -#~ "\"Fix Model\" feature is currently only on Windows. Please repair the " -#~ "model on Bambu Studio(windows) or CAD softwares." -#~ msgstr "" -#~ "Actualmente, la función «Fix Model» solo está disponible en Windows. " -#~ "Repare el modelo en Bambu Studio (Windows) o en el software CAD." +#~ msgid "\"Fix Model\" feature is currently only on Windows. Please repair the model on Bambu Studio(windows) or CAD softwares." +#~ msgstr "Actualmente, la función «Fix Model» solo está disponible en Windows. Repare el modelo en Bambu Studio (Windows) o en el software CAD." #~ msgid "Associate files to BambuStudio" #~ msgstr "Asociar archivos a BambuStudio" @@ -14469,29 +11894,20 @@ msgstr "" #~ msgid "Associate .3mf files to BambuStudio" #~ msgstr "Asociar archivos .3mf a BambuStudio" -#~ msgid "" -#~ "If enabled, sets BambuStudio as default application to open .3mf files" -#~ msgstr "" -#~ "Si se activa, ajusta BambuStudio como aplicación por defecto para abrir " -#~ "archivos .3mf" +#~ msgid "If enabled, sets BambuStudio as default application to open .3mf files" +#~ msgstr "Si se activa, ajusta BambuStudio como aplicación por defecto para abrir archivos .3mf" #~ msgid "Associate .stl files to BambuStudio" #~ msgstr "Asociar archivos .stl a BambuStudio" -#~ msgid "" -#~ "If enabled, sets BambuStudio as default application to open .stl files" -#~ msgstr "" -#~ "Si se activa, ajusta BambuStudio como aplicación por defecto para abrir " -#~ "archivos .stl" +#~ msgid "If enabled, sets BambuStudio as default application to open .stl files" +#~ msgstr "Si se activa, ajusta BambuStudio como aplicación por defecto para abrir archivos .stl" #~ msgid "Associate .step/.stp files to BambuStudio" #~ msgstr "Asociar archivos .step/.stp a BambuStudio" -#~ msgid "" -#~ "If enabled, sets BambuStudio as default application to open .step files" -#~ msgstr "" -#~ "Si se activa, ajusta BambuStudio como aplicación por defecto para abrir " -#~ "archivos .step" +#~ msgid "If enabled, sets BambuStudio as default application to open .step files" +#~ msgstr "Si se activa, ajusta BambuStudio como aplicación por defecto para abrir archivos .step" #~ msgid "Post-processing scripts" #~ msgstr "Post-processing scripts" @@ -14499,12 +11915,8 @@ msgstr "" #~ msgid "Cool Plate / PLA Plate" #~ msgstr "Cool Plate / PLA Plate" -#~ msgid "" -#~ "The following object(s) have empty initial layer and can't be printed. " -#~ "Please Cut the bottom or enable supports." -#~ msgstr "" -#~ "The following object(s) have an empty initial layer and can't be printed. " -#~ "Please cut the bottom or enable supports." +#~ msgid "The following object(s) have empty initial layer and can't be printed. Please Cut the bottom or enable supports." +#~ msgstr "The following object(s) have an empty initial layer and can't be printed. Please cut the bottom or enable supports." #~ msgid "Bridge direction" #~ msgstr "Dirección del puente" @@ -14515,79 +11927,32 @@ msgstr "" #~ msgid "Max Radius" #~ msgstr "Radio máximo" -#~ msgid "" -#~ "Max clearance radius around extruder. Used for collision avoidance in by-" -#~ "object printing." -#~ msgstr "" -#~ "Radio máximo de separación alrededor del extrusor. Se utiliza para evitar " -#~ "colisiones en la impresión por objetos." +#~ msgid "Max clearance radius around extruder. Used for collision avoidance in by-object printing." +#~ msgstr "Radio máximo de separación alrededor del extrusor. Se utiliza para evitar colisiones en la impresión por objetos." #~ msgid "Object flow ratio" #~ msgstr "Object flow ratio" #~ msgid "The flow ratio set by object, the meaning is the same as flow ratio." -#~ msgstr "" -#~ "The flow ratio set by object; the meaning is the same as flow ratio." +#~ msgstr "The flow ratio set by object; the meaning is the same as flow ratio." #~ msgid "Length of sparse infill anchor" #~ msgstr "Length of sparse infill anchor" -#~ msgid "" -#~ "Connect a sparse infill line to an internal perimeter with a short " -#~ "segment of an additional perimeter. If expressed as percentage (example: " -#~ "15%) it is calculated over sparse infill line width. Slicer tries to " -#~ "connect two close infill lines to a short perimeter segment. If no such " -#~ "perimeter segment shorter than infill_anchor_max is found, the infill " -#~ "line is connected to a perimeter segment at just one side and the length " -#~ "of the perimeter segment taken is limited to this parameter, but no " -#~ "longer than anchor_length_max. Set this parameter to zero to disable " -#~ "anchoring perimeters connected to a single infill line." -#~ msgstr "" -#~ "This connects a sparse infill line to an internal perimeter with a short " -#~ "segment of an additional perimeter. If expressed as percentage (example: " -#~ "15%) it is calculated over sparse infill line width. Bambu Studio tries " -#~ "to connect two close infill lines to a short perimeter segment. If no " -#~ "such perimeter segment shorter than infill_anchor_max is found, the " -#~ "infill line is connected to a perimeter segment at just one side and the " -#~ "length of the perimeter segment taken is limited to this parameter, but " -#~ "no longer than anchor_length_max. Set this parameter to zero to disable " -#~ "anchoring perimeters connected to a single infill line." +#~ msgid "Connect a sparse infill line to an internal perimeter with a short segment of an additional perimeter. If expressed as percentage (example: 15%) it is calculated over sparse infill line width. Slicer tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than infill_anchor_max is found, the infill line is connected to a perimeter segment at just one side and the length of the perimeter segment taken is limited to this parameter, but no longer than anchor_length_max. Set this parameter to zero to disable anchoring perimeters connected to a single infill line." +#~ msgstr "This connects a sparse infill line to an internal perimeter with a short segment of an additional perimeter. If expressed as percentage (example: 15%) it is calculated over sparse infill line width. Bambu Studio tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than infill_anchor_max is found, the infill line is connected to a perimeter segment at just one side and the length of the perimeter segment taken is limited to this parameter, but no longer than anchor_length_max. Set this parameter to zero to disable anchoring perimeters connected to a single infill line." #~ msgid "Maximum length of sparse infill anchor" #~ msgstr "Maximum length of sparse infill anchor" -#~ msgid "" -#~ "Connect a sparse infill line to an internal perimeter with a short " -#~ "segment of an additional perimeter. If expressed as percentage (example: " -#~ "15%) it is calculated over sparse infill line width. Slicer tries to " -#~ "connect two close infill lines to a short perimeter segment. If no such " -#~ "perimeter segment shorter than this parameter is found, the infill line " -#~ "is connected to a perimeter segment at just one side and the length of " -#~ "the perimeter segment taken is limited to infill_anchor, but no longer " -#~ "than this parameter. Set this parameter to zero to disable anchoring." -#~ msgstr "" -#~ "This connects a sparse infill line to an internal perimeter with a short " -#~ "segment of an additional perimeter. If expressed as percentage (example: " -#~ "15%) it is calculated over sparse infill line width. Bambu Studio tries " -#~ "to connect two close infill lines to a short perimeter segment. If no " -#~ "such perimeter segment shorter than this parameter is found, the infill " -#~ "line is connected to a perimeter segment at just one side and the length " -#~ "of the perimeter segment taken is limited to infill_anchor, but no longer " -#~ "than this parameter. Set this parameter to zero to disable anchoring." +#~ msgid "Connect a sparse infill line to an internal perimeter with a short segment of an additional perimeter. If expressed as percentage (example: 15%) it is calculated over sparse infill line width. Slicer tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than this parameter is found, the infill line is connected to a perimeter segment at just one side and the length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter. Set this parameter to zero to disable anchoring." +#~ msgstr "This connects a sparse infill line to an internal perimeter with a short segment of an additional perimeter. If expressed as percentage (example: 15%) it is calculated over sparse infill line width. Bambu Studio tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than this parameter is found, the infill line is connected to a perimeter segment at just one side and the length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter. Set this parameter to zero to disable anchoring." #~ msgid "0 (not anchored)" #~ msgstr "0 (not anchored)" -#~ msgid "" -#~ "If you want to process the output G-code through custom scripts, just " -#~ "list their absolute paths here. Separate multiple scripts with a " -#~ "semicolon. Scripts will be passed the absolute path to the G-code file as " -#~ "the first argument, and variables of settings also can be read" -#~ msgstr "" -#~ "If you want to process the output G-code through custom scripts, just " -#~ "list their absolute paths here. Separate multiple scripts with a " -#~ "semicolon. Scripts will be passed via the absolute path to the G-code " -#~ "file as the first argument, and variables of settings can also be read" +#~ msgid "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and variables of settings also can be read" +#~ msgstr "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed via the absolute path to the G-code file as the first argument, and variables of settings can also be read" #~ msgid "Z Hop Type" #~ msgstr "Tipo de salto Z" @@ -14597,42 +11962,31 @@ msgstr "" #~ msgid "" #~ "Subtract a Part\n" -#~ "Did you know that you can subtract one mesh from another using the " -#~ "Negative part modifier? That way you can, for example, create easily " -#~ "resizable holes directly in Bambu Studio. Read more in the documentation." +#~ "Did you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Bambu Studio. Read more in the documentation." #~ msgstr "" #~ "Restar una parte\n" -#~ "¿Sabías que puedes sustraer una malla de otra utilizando el modificador " -#~ "de pieza negativa? De esta forma puedes, por ejemplo, crear agujeros " -#~ "fácilmente redimensionables directamente en Bambu Studio. Más información " -#~ "en la documentación." +#~ "¿Sabías que puedes sustraer una malla de otra utilizando el modificador de pieza negativa? De esta forma puedes, por ejemplo, crear agujeros fácilmente redimensionables directamente en Bambu Studio. Más información en la documentación." #~ msgid "" #~ "STEP\n" -#~ "Did you know that you can improve your print quality by slicing a STEP " -#~ "file instead of an STL?\n" -#~ "Bambu Studio supports slicing STEP files, providing smoother results than " -#~ "a lower resolution STL. Give it a try!" +#~ "Did you know that you can improve your print quality by slicing a STEP file instead of an STL?\n" +#~ "Bambu Studio supports slicing STEP files, providing smoother results than a lower resolution STL. Give it a try!" #~ msgstr "" #~ "STEP\n" -#~ "¿Sabías que puedes mejorar la calidad de impresión cortando un archivo " -#~ "STEP en lugar de un STL?\n" -#~ "Bambu Studio admite el corte de archivos STEP, lo que proporciona " -#~ "resultados más suaves que un archivo STL de menor resolución. ¡Pruébalo!" +#~ "¿Sabías que puedes mejorar la calidad de impresión cortando un archivo STEP en lugar de un STL?\n" +#~ "Bambu Studio admite el corte de archivos STEP, lo que proporciona resultados más suaves que un archivo STL de menor resolución. ¡Pruébalo!" #~ msgid "ERROR:" #~ msgstr "ERROR:" #~ msgid "Bed temperatures for the used filaments differ significantly." -#~ msgstr "" -#~ "Las temperaturas de la cama para los filamentos usados difieren bastante." +#~ msgstr "Las temperaturas de la cama para los filamentos usados difieren bastante." #~ msgid "Line width of outer wall" #~ msgstr "Ancho de línea de la pared exterior" #~ msgid "Default line width if some line width is set to be zero" -#~ msgstr "" -#~ "Ancho de línea por defecto si se ajusta algún ancho de línea es cero" +#~ msgstr "Ancho de línea por defecto si se ajusta algún ancho de línea es cero" #~ msgid "Line width of initial layer" #~ msgstr "Ancho de línea de la capa inicial" @@ -14668,22 +12022,14 @@ msgstr "" #~ msgid "Backup interval" #~ msgstr "Intervalo de copia de seguridad" -#~ msgid "" -#~ "Print a tower to prime material in nozzle after switching to a new " -#~ "material." -#~ msgstr "" -#~ "Imprimir una torre para cebar el material en la boquilla después de " -#~ "cambiar a un nuevo material." +#~ msgid "Print a tower to prime material in nozzle after switching to a new material." +#~ msgstr "Imprimir una torre para cebar el material en la boquilla después de cambiar a un nuevo material." #~ msgid "Loading user presets..." #~ msgstr "Cargando los preajustes del usuario..." -#~ msgid "" -#~ "Orca Slicer is based on PrusaSlicer by Prusa Research, which is from " -#~ "Slic3r by Alessandro Ranellucci and the RepRap community" -#~ msgstr "" -#~ "Orca Slicer se basa en PrusaSlicer de Prusa Research, que proviene de " -#~ "Slic3r de Alessandro Ranellucci y la comunidad RepRap" +#~ msgid "Orca Slicer is based on PrusaSlicer by Prusa Research, which is from Slic3r by Alessandro Ranellucci and the RepRap community" +#~ msgstr "Orca Slicer se basa en PrusaSlicer de Prusa Research, que proviene de Slic3r de Alessandro Ranellucci y la comunidad RepRap" #~ msgid "Export G-Code." #~ msgstr "Exportar G-Code." @@ -14692,22 +12038,14 @@ msgstr "" #~ msgstr "Exportar." #~ msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files." -#~ msgstr "" -#~ "Importación de datos geométricos desde archivos STL/STEP/3MF/OBJ/AMF." +#~ msgstr "Importación de datos geométricos desde archivos STL/STEP/3MF/OBJ/AMF." #, boost-format #~ msgid "Copying directory %1% to %2% failed: %3%" #~ msgstr "La copia del directorio %1% a %2% ha fallado: %3%" -#~ msgid "" -#~ "This controls brim position including outer side of models, inner side of " -#~ "holes or both. Auto means both the brim position and brim width is " -#~ "analysed and calculated automatically" -#~ msgstr "" -#~ "Esto controla la posición del borde de adherencia, incluyendo el lado " -#~ "exterior de los modelos, el lado interior de los huecos o ambos. Auto " -#~ "significa que tanto la posición como la anchura del borde de adherencia " -#~ "se analizan y calculan automáticamente" +#~ msgid "This controls brim position including outer side of models, inner side of holes or both. Auto means both the brim position and brim width is analysed and calculated automatically" +#~ msgstr "Esto controla la posición del borde de adherencia, incluyendo el lado exterior de los modelos, el lado interior de los huecos o ambos. Auto significa que tanto la posición como la anchura del borde de adherencia se analizan y calculan automáticamente" #~ msgid "Choose one file (G-Code/.gco/.g/.ngc/ngc):" #~ msgstr "Elija un archivo (G-Code/.gco/.g/.ngc/ngc):" @@ -14721,19 +12059,13 @@ msgstr "" #~ msgid "" #~ "\n" -#~ "%1% is too close to exclusion area, there will be collisions when " -#~ "printing." +#~ "%1% is too close to exclusion area, there will be collisions when printing." #~ msgstr "" #~ "\n" -#~ "%1% está demasiado cerca del área de exclusión, habrá colisiones al " -#~ "imprimir." +#~ "%1% está demasiado cerca del área de exclusión, habrá colisiones al imprimir." -#~ msgid "" -#~ "%1% is too close to exclusion area, there will be collisions when " -#~ "printing." -#~ msgstr "" -#~ "%1% está demasiado cerca del área de exclusión, habrá colisiones al " -#~ "imprimir." +#~ msgid "%1% is too close to exclusion area, there will be collisions when printing." +#~ msgstr "%1% está demasiado cerca del área de exclusión, habrá colisiones al imprimir." #~ msgid "0%" #~ msgstr "0%" @@ -14743,26 +12075,18 @@ msgstr "" #~ "Please solve the problem by moving it totally inside or outside plate." #~ msgstr "" #~ "Un objeto está colocado sobre el límite de la bandeja.\n" -#~ "Por favor, resuelva el problema moviéndolo totalmente dentro o fuera de " -#~ "la bandeja." +#~ "Por favor, resuelva el problema moviéndolo totalmente dentro o fuera de la bandeja." #~ msgid "" #~ "Arachne engine only works when overhang slowing down is disabled.\n" -#~ "This may cause decline in the quality of overhang surface when print " -#~ "fastly\n" +#~ "This may cause decline in the quality of overhang surface when print fastly\n" #~ msgstr "\n" #~ msgid "Auto arrange" #~ msgstr "Auto posicionamiento" -#~ msgid "" -#~ "Auto orientates selected objects or all objects.If there are selected " -#~ "objects, it just orientates the selected ones.Otherwise, it will " -#~ "orientates all objects in the project." -#~ msgstr "" -#~ "Orienta automáticamente los objetos seleccionados o todos los objetos.Si " -#~ "hay objetos seleccionados, sólo orienta los seleccionados.En caso " -#~ "contrario, orienta todos los objetos del proyecto." +#~ msgid "Auto orientates selected objects or all objects.If there are selected objects, it just orientates the selected ones.Otherwise, it will orientates all objects in the project." +#~ msgstr "Orienta automáticamente los objetos seleccionados o todos los objetos.Si hay objetos seleccionados, sólo orienta los seleccionados.En caso contrario, orienta todos los objetos del proyecto." #~ msgid "Aux Cooling" #~ msgstr "Enfriamiento Auxiliar" @@ -14771,12 +12095,10 @@ msgstr "" #~ msgstr "Evitar cruzar el muro en los desplazamientos" #~ msgid "" -#~ "Bed temperature is higher than vitrification temperature of this " -#~ "filament.\n" +#~ "Bed temperature is higher than vitrification temperature of this filament.\n" #~ "This may cause nozzle blocked and printing failure" #~ msgstr "" -#~ "La temperatura del lecho es superior a la temperatura de vitrificación de " -#~ "este filamento.\n" +#~ "La temperatura del lecho es superior a la temperatura de vitrificación de este filamento.\n" #~ "Esto puede causar el bloqueo de la boquilla y el fracaso de la impresión" #~ msgid "Choose one or more files (3mf/step/stl/obj/amf):" @@ -14785,13 +12107,8 @@ msgstr "" #~ msgid "Clear all" #~ msgstr "Borrar todo" -#~ msgid "" -#~ "Clearance radius around extruder. Used as input of auto-arrange to avoid " -#~ "collision when print object by object" -#~ msgstr "" -#~ "Radio de separación alrededor del extrusor. Se utiliza como entrada de " -#~ "auto-organización para evitar la colisión cuando se imprime objeto por " -#~ "objeto" +#~ msgid "Clearance radius around extruder. Used as input of auto-arrange to avoid collision when print object by object" +#~ msgstr "Radio de separación alrededor del extrusor. Se utiliza como entrada de auto-organización para evitar la colisión cuando se imprime objeto por objeto" #~ msgid "Click the pencil icon to edit the filament." #~ msgstr "Haga clic en el icono del lápiz para editar el filamento." @@ -14829,15 +12146,8 @@ msgstr "" #~ msgid "Display triangles of models" #~ msgstr "Mostrar los triángulos de los modelos" -#~ msgid "" -#~ "Do not recommand bed temperature of other layer to be lower than initial " -#~ "layer for more than this threshold. Too low bed temperature of other " -#~ "layer may cause the model broken free from build plate" -#~ msgstr "" -#~ "No se recomienda que la temperatura de la cama de la otra capa sea " -#~ "inferior a la de la capa inicial por más de este umbral. Una temperatura " -#~ "demasiado baja de la otra capa puede hacer que el modelo se desprenda de " -#~ "la bandeja de impresión." +#~ msgid "Do not recommand bed temperature of other layer to be lower than initial layer for more than this threshold. Too low bed temperature of other layer may cause the model broken free from build plate" +#~ msgstr "No se recomienda que la temperatura de la cama de la otra capa sea inferior a la de la capa inicial por más de este umbral. Una temperatura demasiado baja de la otra capa puede hacer que el modelo se desprenda de la bandeja de impresión." #~ msgid "" #~ "Do you want to synchronize your personal data from Bambu Cloud? \n" @@ -14860,25 +12170,15 @@ msgstr "" #~ "3. The Printer presets\n" #~ msgstr "\n" -#~ msgid "" -#~ "Don't retract when the travel is in infill area absolutely. That means " -#~ "the oozing can't been seen" -#~ msgstr "" -#~ "No se repliegue cuando el recorrido esté en zona de relleno " -#~ "absolutamente. Eso significa que el rezago no puede ser visto" +#~ msgid "Don't retract when the travel is in infill area absolutely. That means the oozing can't been seen" +#~ msgstr "No se repliegue cuando el recorrido esté en zona de relleno absolutamente. Eso significa que el rezago no puede ser visto" #~ msgid "" -#~ "Enabling this option means the height of every layer except the first " -#~ "will be automatically calculated during slicing according to the slope of " -#~ "the model’s surface.\n" -#~ "Note that this option only takes effect if no prime tower is generated in " -#~ "current plate." +#~ "Enabling this option means the height of every layer except the first will be automatically calculated during slicing according to the slope of the model’s surface.\n" +#~ "Note that this option only takes effect if no prime tower is generated in current plate." #~ msgstr "" -#~ "Si se activa esta opción, la altura de cada capa, excepto la primera, se " -#~ "calculará automáticamente durante el corte en función de la pendiente de " -#~ "la superficie del modelo.\n" -#~ "Tenga en cuenta que esta opción sólo surte efecto si no se genera ninguna " -#~ "torre de purga en la bandeja actual." +#~ "Si se activa esta opción, la altura de cada capa, excepto la primera, se calculará automáticamente durante el corte en función de la pendiente de la superficie del modelo.\n" +#~ "Tenga en cuenta que esta opción sólo surte efecto si no se genera ninguna torre de purga en la bandeja actual." #~ msgid "Enter a search term" #~ msgstr "Teclea un término de búsqueda" @@ -14910,20 +12210,11 @@ msgstr "" #~ msgid "Filament N XX" #~ msgstr "Filamento N XX" -#~ msgid "" -#~ "Filament to print support and skirt. 0 means no specific filament for " -#~ "support and current filament is used" -#~ msgstr "" -#~ "Filamento para imprimir el soporte y el faldón. 0 significa que no hay " -#~ "filamento específico para el soporte y se utiliza el filamento actual" +#~ msgid "Filament to print support and skirt. 0 means no specific filament for support and current filament is used" +#~ msgstr "Filamento para imprimir el soporte y el faldón. 0 significa que no hay filamento específico para el soporte y se utiliza el filamento actual" -#~ msgid "" -#~ "Filament to print support interface. 0 means no specific filament for " -#~ "support interface and current filament is used" -#~ msgstr "" -#~ "Filamento para imprimir la interfaz de soporte. 0 significa que no hay " -#~ "filamento específico para la interfaz de soporte y se utiliza el " -#~ "filamento actual" +#~ msgid "Filament to print support interface. 0 means no specific filament for support interface and current filament is used" +#~ msgstr "Filamento para imprimir la interfaz de soporte. 0 significa que no hay filamento específico para la interfaz de soporte y se utiliza el filamento actual" #~ msgid "Filaments Selection" #~ msgstr "Selección de filamentos" @@ -14937,14 +12228,8 @@ msgstr "" #~ msgid "Flushed filament" #~ msgstr "Filamento limpiado" -#~ msgid "" -#~ "Force cooling fan to be specific speed when overhang degree of printed " -#~ "part exceeds this value. Expressed as percentage which indicides how much " -#~ "width of the line without support from lower layer" -#~ msgstr "" -#~ "Fuerza al ventilador de refrigeración a una velocidad específica cuando " -#~ "el grado de voladizo de la pieza impresa supera este valor. Expresado en " -#~ "porcentaje, indica la anchura de la línea sin apoyo de la capa inferior." +#~ msgid "Force cooling fan to be specific speed when overhang degree of printed part exceeds this value. Expressed as percentage which indicides how much width of the line without support from lower layer" +#~ msgstr "Fuerza al ventilador de refrigeración a una velocidad específica cuando el grado de voladizo de la pieza impresa supera este valor. Expresado en porcentaje, indica la anchura de la línea sin apoyo de la capa inferior." #~ msgid "Fragment Filter" #~ msgstr "Filtro de fragmentos" @@ -14965,13 +12250,8 @@ msgstr "" #~ msgid "Height:" #~ msgstr "Altura:" -#~ msgid "" -#~ "Height of the clearance cylinder around extruder. Used as input of auto-" -#~ "arrange to avoid collision when print object by object" -#~ msgstr "" -#~ "Altura del cilindro de separación alrededor del extrusor. Se utiliza como " -#~ "entrada de auto-organización para evitar la colisión cuando se imprime " -#~ "objeto por objeto." +#~ msgid "Height of the clearance cylinder around extruder. Used as input of auto-arrange to avoid collision when print object by object" +#~ msgstr "Altura del cilindro de separación alrededor del extrusor. Se utiliza como entrada de auto-organización para evitar la colisión cuando se imprime objeto por objeto." #~ msgid "Import 3MF/STL/STEP/OBJ/AMF" #~ msgstr "Importar 3MF/STL/STEP/OBJ/AMF" @@ -14988,12 +12268,8 @@ msgstr "" #~ msgid "Inner wall speed" #~ msgstr "Velocidad de la pared interior" -#~ msgid "" -#~ "It seems object %s needs support to print. Please enable support " -#~ "generation." -#~ msgstr "" -#~ "Parece que el objeto %s necesita soporte para imprimir. Por favor, active " -#~ "la generación de soporte." +#~ msgid "It seems object %s needs support to print. Please enable support generation." +#~ msgstr "Parece que el objeto %s necesita soporte para imprimir. Por favor, active la generación de soporte." #~ msgid "Line type" #~ msgstr "Tipo de línea" @@ -15004,12 +12280,8 @@ msgstr "" #~ msgid "Max travel detour distance" #~ msgstr "Distancia máxima de desvío de viaje" -#~ msgid "" -#~ "Maximum detour distance for avoiding crossing wall. Don't detour if the " -#~ "detour distance is large than this value" -#~ msgstr "" -#~ "Distancia máxima de desvío para evitar cruzar el muro. No se desvía si la " -#~ "distancia de desvío es mayor que este valor" +#~ msgid "Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is large than this value" +#~ msgstr "Distancia máxima de desvío para evitar cruzar el muro. No se desvía si la distancia de desvío es mayor que este valor" #~ msgid "Module" #~ msgstr "Módulo" @@ -15053,9 +12325,7 @@ msgstr "" #~ msgid "Plate %d: %s does not support filament %s (%s).\n" #~ msgstr "\n" -#~ msgid "" -#~ "Please check the following infomation and click Confirm to continue " -#~ "sending print:\n" +#~ msgid "Please check the following infomation and click Confirm to continue sending print:\n" #~ msgstr "\n" #~ msgid "Please fill report first." @@ -15080,24 +12350,11 @@ msgstr "" #~ msgid "Printer Selection" #~ msgstr "Selección de la impresora" -#~ msgid "" -#~ "Purging after filament change will be done inside objects' infills. This " -#~ "may lower the amount of waste and decrease the print time. If the walls " -#~ "are printed with transparent filament, the mixed color infill will be " -#~ "seen outside" -#~ msgstr "" -#~ "La purga tras el cambio de filamento se realizará dentro del relleno de " -#~ "los objetos. Esto puede reducir la cantidad de residuos y disminuir el " -#~ "tiempo de impresión. Si las paredes se imprimen con filamento " -#~ "transparente, el mezclado se podrá ver en el exterior." +#~ msgid "Purging after filament change will be done inside objects' infills. This may lower the amount of waste and decrease the print time. If the walls are printed with transparent filament, the mixed color infill will be seen outside" +#~ msgstr "La purga tras el cambio de filamento se realizará dentro del relleno de los objetos. Esto puede reducir la cantidad de residuos y disminuir el tiempo de impresión. Si las paredes se imprimen con filamento transparente, el mezclado se podrá ver en el exterior." -#~ msgid "" -#~ "Purging after filament change will be done inside objects' support. This " -#~ "may lower the amount of waste and decrease the print time" -#~ msgstr "" -#~ "La purga después del cambio de filamento se hará dentro del soporte de " -#~ "los objetos. Esto puede reducir la cantidad de residuos y disminuir el " -#~ "tiempo de impresión." +#~ msgid "Purging after filament change will be done inside objects' support. This may lower the amount of waste and decrease the print time" +#~ msgstr "La purga después del cambio de filamento se hará dentro del soporte de los objetos. Esto puede reducir la cantidad de residuos y disminuir el tiempo de impresión." #~ msgid "" #~ "Push new filament \n" @@ -15106,16 +12363,8 @@ msgstr "" #~ "Empujar el nuevo filamento \n" #~ "en el extrusor" -#~ msgid "" -#~ "Record timelapse video of printing without showing toolhead. In this mode " -#~ "the toolhead docks near the excess chute at each layer change, and then a " -#~ "snapshot is taken with the chamber camera. When printing finishes a " -#~ "timelapse video is composed of all the snapshots." -#~ msgstr "" -#~ "Record timelapse video of printing without showing the toolhead. In this " -#~ "mode the toolhead docks near the excess chute at each layer change, and " -#~ "then a snapshot is taken with the chamber camera. When printing finishes, " -#~ "a timelapse video is created from all the snapshots." +#~ msgid "Record timelapse video of printing without showing toolhead. In this mode the toolhead docks near the excess chute at each layer change, and then a snapshot is taken with the chamber camera. When printing finishes a timelapse video is composed of all the snapshots." +#~ msgstr "Record timelapse video of printing without showing the toolhead. In this mode the toolhead docks near the excess chute at each layer change, and then a snapshot is taken with the chamber camera. When printing finishes, a timelapse video is created from all the snapshots." #~ msgid "Reduce Triangles" #~ msgstr "Reducir los triángulos" @@ -15167,27 +12416,16 @@ msgstr "" #~ msgid "" #~ "Spiral mode only works when wall loops is 1, \n" -#~ "support is disabled, top shell layers is 0 and sparse infill density is " -#~ "0\n" +#~ "support is disabled, top shell layers is 0 and sparse infill density is 0\n" #~ msgstr "" #~ "El modo espiral sólo funciona cuando los bucles de pared son 1, \n" -#~ "el soporte está desactivado, las capas superiores de la cáscara es 0 y la " -#~ "densidad de relleno dispersa es 0\n" +#~ "el soporte está desactivado, las capas superiores de la cáscara es 0 y la densidad de relleno dispersa es 0\n" #~ msgid "Successfully sent.Will automatically jump to the device page in %s s" -#~ msgstr "" -#~ "Enviado con éxito. Saltará automáticamente a la página del dispositivo en " -#~ "%s s" +#~ msgstr "Enviado con éxito. Saltará automáticamente a la página del dispositivo en %s s" -#~ msgid "" -#~ "Support layer uses layer height independent with object layer. This is to " -#~ "support custom support gap,but may cause extra filament switches if " -#~ "support is specified as different extruder with object" -#~ msgstr "" -#~ "La capa de soporte utiliza la altura de la capa independientemente de la " -#~ "capa del objeto. Esto es para soportar la brecha de soporte " -#~ "personalizada, pero puede causar cambios de filamento adicionales si el " -#~ "soporte se especifica como un extrusor diferente con el objeto" +#~ msgid "Support layer uses layer height independent with object layer. This is to support custom support gap,but may cause extra filament switches if support is specified as different extruder with object" +#~ msgstr "La capa de soporte utiliza la altura de la capa independientemente de la capa del objeto. Esto es para soportar la brecha de soporte personalizada, pero puede causar cambios de filamento adicionales si el soporte se especifica como un extrusor diferente con el objeto" #~ msgid "" #~ "Switch to rectilinear pattern?\n" @@ -15202,68 +12440,34 @@ msgstr "" #~ msgstr "" #~ "¿Cambiar al patrón en zig-zag?\n" #~ "Sí - cambia automáticamente al patrón en zig-zag\n" -#~ "No - restablecer automáticamente la densidad al valor por defecto que no " -#~ "es del 100%.\n" +#~ "No - restablecer automáticamente la densidad al valor por defecto que no es del 100%.\n" #~ msgid "Swith cloud environment, Please login again!" #~ msgstr "Cambiar el entorno de la nube, ¡Por favor, inicie sesión de nuevo!" -#~ msgid "" -#~ "The 3mf's version %s is newer than %s's version %s, Found following keys " -#~ "unrecognized:\n" -#~ msgstr "" -#~ "La versión %s de 3mf es más reciente que la versión %s de %s, se han " -#~ "encontrado las siguientes claves no reconocidas:\n" +#~ msgid "The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:\n" +#~ msgstr "La versión %s de 3mf es más reciente que la versión %s de %s, se han encontrado las siguientes claves no reconocidas:\n" -#~ msgid "" -#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade " -#~ "your software.\n" +#~ msgid "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software.\n" #~ msgstr "\n" #~ msgid "The Config is not compatible and can not be loaded." #~ msgstr "La configuración no es compatible y no se puede cargar." -#~ msgid "" -#~ "The firmware versions of printer and AMS are too low.Please update to the " -#~ "latest version before sending the print job" -#~ msgstr "" -#~ "Las versiones del firmware de la impresora y del AMS son demasiado " -#~ "antiguas, por favor, actualice a la última versión antes de enviar el " -#~ "trabajo de impresión." +#~ msgid "The firmware versions of printer and AMS are too low.Please update to the latest version before sending the print job" +#~ msgstr "Las versiones del firmware de la impresora y del AMS son demasiado antiguas, por favor, actualice a la última versión antes de enviar el trabajo de impresión." -#~ msgid "" -#~ "The model has overlapping or self-intersecting facets. I tried to repair " -#~ "it, however you might want to check the results or repair the input file " -#~ "and retry." -#~ msgstr "" -#~ "El modelo tiene facetas superpuestas o auto-intersecadas. He intentado " -#~ "repararlo, sin embargo, es posible que desee comprobar los resultados o " -#~ "reparar el archivo de entrada y volver a intentarlo." +#~ msgid "The model has overlapping or self-intersecting facets. I tried to repair it, however you might want to check the results or repair the input file and retry." +#~ msgstr "El modelo tiene facetas superpuestas o auto-intersecadas. He intentado repararlo, sin embargo, es posible que desee comprobar los resultados o reparar el archivo de entrada y volver a intentarlo." -#~ msgid "" -#~ "The printer type used to generate G-code is not the same type as the " -#~ "currently selected physical printer. It is recommend to re-slice by " -#~ "selecting the same printer type.\n" +#~ msgid "The printer type used to generate G-code is not the same type as the currently selected physical printer. It is recommend to re-slice by selecting the same printer type.\n" #~ msgstr "\n" -#~ msgid "" -#~ "This object will be used to purge the nozzle after a filament change to " -#~ "save filament and decrease the print time. Colours of the objects will be " -#~ "mixed as a result" -#~ msgstr "" -#~ "Este objeto se utilizará para purgar la boquilla después de un cambio de " -#~ "filamento para ahorrar filamento y disminuir el tiempo de impresión. Los " -#~ "colores de los objetos se mezclarán como resultado" +#~ msgid "This object will be used to purge the nozzle after a filament change to save filament and decrease the print time. Colours of the objects will be mixed as a result" +#~ msgstr "Este objeto se utilizará para purgar la boquilla después de un cambio de filamento para ahorrar filamento y disminuir el tiempo de impresión. Los colores de los objetos se mezclarán como resultado" -#~ msgid "" -#~ "This setting stands for how much volume of filament can be melted and " -#~ "extruded per second. Printing speed is limited by max volumetric speed, " -#~ "in case of too high and unreasonable speed setting. Zero means no limit" -#~ msgstr "" -#~ "Este ajuste representa la cantidad de volumen de filamento que se puede " -#~ "fundir y extruir por segundo. La velocidad de impresión está limitada por " -#~ "la velocidad volumétrica máxima, en caso de ajustar una velocidad " -#~ "demasiado alta y poco razonable. Cero significa que no hay límite" +#~ msgid "This setting stands for how much volume of filament can be melted and extruded per second. Printing speed is limited by max volumetric speed, in case of too high and unreasonable speed setting. Zero means no limit" +#~ msgstr "Este ajuste representa la cantidad de volumen de filamento que se puede fundir y extruir por segundo. La velocidad de impresión está limitada por la velocidad volumétrica máxima, en caso de ajustar una velocidad demasiado alta y poco razonable. Cero significa que no hay límite" #~ msgid "Timelapse Wipe Tower" #~ msgstr "Intervalo torre de purga" @@ -15281,10 +12485,8 @@ msgstr "" #~ msgstr "Esperando" #~ msgid "" -#~ "When recording timelapse without toolhead, it is recommended to add a " -#~ "\"Timelapse Wipe Tower\" \n" -#~ "by right-click the empty position of build plate and choose \"Add " -#~ "Primitive\"->\"Timelapse Wipe Tower\".\n" +#~ "When recording timelapse without toolhead, it is recommended to add a \"Timelapse Wipe Tower\" \n" +#~ "by right-click the empty position of build plate and choose \"Add Primitive\"->\"Timelapse Wipe Tower\".\n" #~ msgstr "\n" #~ msgid "" @@ -15300,15 +12502,11 @@ msgstr "" #~ msgid " Object:" #~ msgstr "Objeto" -#~ msgid "" -#~ " is too close to exclusion area, there may be collisions when printing.\n" +#~ msgid " is too close to exclusion area, there may be collisions when printing.\n" #~ msgstr "\n" -#~ msgid "" -#~ " is too close to exclusion area, there will be collisions when printing.\n" -#~ msgstr "" -#~ " está demasiado cerca del área de exclusión, habrá colisiones al " -#~ "imprimir.\n" +#~ msgid " is too close to exclusion area, there will be collisions when printing.\n" +#~ msgstr " está demasiado cerca del área de exclusión, habrá colisiones al imprimir.\n" #~ msgid " is too close to others, there may be collisions when printing.\n" #~ msgstr "\n" @@ -15322,13 +12520,8 @@ msgstr "" #~ msgid "normal" #~ msgstr "normal" -#~ msgid "" -#~ "normal(auto) and tree(auto) is used to generate support automatically. If " -#~ "normal or tree is selected, only support enforcers are generated" -#~ msgstr "" -#~ "normal(auto) y tree(auto) se utiliza para generar soporte " -#~ "automáticamente. Si se selecciona normal o árbol, sólo se generan los " -#~ "soportes" +#~ msgid "normal(auto) and tree(auto) is used to generate support automatically. If normal or tree is selected, only support enforcers are generated" +#~ msgstr "normal(auto) y tree(auto) se utiliza para generar soporte automáticamente. Si se selecciona normal o árbol, sólo se generan los soportes" #~ msgid "the 3mf is not compatible, load geometry data only!" #~ msgstr "el 3mf no es compatible, ¡cargue sólo los datos geométricos!" @@ -15361,8 +12554,7 @@ msgstr "" #~ msgstr "Cambio automático de filamento AMS" #~ msgid "AMS settings are not supported for external spool" -#~ msgstr "" -#~ "La configuración actual de AMS no admite el uso de una bobina externa." +#~ msgstr "La configuración actual de AMS no admite el uso de una bobina externa." #~ msgid "AWS PRE host" #~ msgstr "Host de AWS PRE" @@ -15378,42 +12570,22 @@ msgstr "" #~ msgid "" #~ "Arachne engine only works when overhang slowing down is disabled.\n" -#~ "This may cause decline in the quality of overhang surface when print " -#~ "fastly" +#~ "This may cause decline in the quality of overhang surface when print fastly" #~ msgstr "" -#~ "El motor Arachne solo funciona cuando la ralentización por voladizo está " -#~ "desactivada.\n" -#~ "Esto puede provocar una disminución en la calidad de los voladizos al " -#~ "imprimir rápidamente." +#~ "El motor Arachne solo funciona cuando la ralentización por voladizo está desactivada.\n" +#~ "Esto puede provocar una disminución en la calidad de los voladizos al imprimir rápidamente." #~ msgid "Auto refill" #~ msgstr "Auto refill" -#~ msgid "" -#~ "Bed exclude area that can't used as printable area in X-Y plane. For " -#~ "example, the bottom left area which is used to cut filament in X1 when " -#~ "printing multi colors with AMS. The area is expressed as polygon by " -#~ "points in following format: \"XxY, XxY, ...\"" -#~ msgstr "" -#~ "El borde excluye el área que no se puede usar como área imprimible en el " -#~ "plano X-Y. Por ejemplo, el área inferior izquierda que se usa para cortar " -#~ "filamento en X1 cuando se imprime en varios colores con un AMS. El área " -#~ "se expresa como polígono mediante puntos en el siguiente formato: «xxY, " -#~ "xxY,...»" +#~ msgid "Bed exclude area that can't used as printable area in X-Y plane. For example, the bottom left area which is used to cut filament in X1 when printing multi colors with AMS. The area is expressed as polygon by points in following format: \"XxY, XxY, ...\"" +#~ msgstr "El borde excluye el área que no se puede usar como área imprimible en el plano X-Y. Por ejemplo, el área inferior izquierda que se usa para cortar filamento en X1 cuando se imprime en varios colores con un AMS. El área se expresa como polígono mediante puntos en el siguiente formato: «xxY, xxY,...»" -#~ msgid "" -#~ "Calibration completed. Please select the factors according to the left " -#~ "figure and fill them in the input boxes." -#~ msgstr "" -#~ "Se completó la calibración. Seleccione los factores según la figura de la " -#~ "izquierda y rellénelos en las casillas de entrada." +#~ msgid "Calibration completed. Please select the factors according to the left figure and fill them in the input boxes." +#~ msgstr "Se completó la calibración. Seleccione los factores según la figura de la izquierda y rellénelos en las casillas de entrada." -#~ msgid "" -#~ "Cannot detect the LAN IP address of %s. Are %s and Bambu Studio in the " -#~ "same LAN?" -#~ msgstr "" -#~ "No se puede detectar la dirección IP LAN de %s. ¿Están %s y Bambu Studio " -#~ "en la misma LAN?" +#~ msgid "Cannot detect the LAN IP address of %s. Are %s and Bambu Studio in the same LAN?" +#~ msgstr "No se puede detectar la dirección IP LAN de %s. ¿Están %s y Bambu Studio en la misma LAN?" #~ msgid "Choose save directory" #~ msgstr "Elija directorio de guardado" @@ -15424,13 +12596,8 @@ msgstr "" #~ msgid "Clipping of view" #~ msgstr "Recorte de vista" -#~ msgid "" -#~ "Desiccant status lower than two bars indicates that desiccant can be " -#~ "inactive. Please change the desiccant.(Higher the better)" -#~ msgstr "" -#~ "Un estado del desecante inferior a dos barras indica que el desecante " -#~ "puede estar inactivo. Cambie el desecante, por favor. (cuanto más alto, " -#~ "mejor)" +#~ msgid "Desiccant status lower than two bars indicates that desiccant can be inactive. Please change the desiccant.(Higher the better)" +#~ msgstr "Un estado del desecante inferior a dos barras indica que el desecante puede estar inactivo. Cambie el desecante, por favor. (cuanto más alto, mejor)" #~ msgid "" #~ "Disable overhang slowing down automatically? \n" @@ -15447,65 +12614,32 @@ msgstr "" #~ msgid "Edit plate setitngs" #~ msgstr "Edit plate settings" -#~ msgid "" -#~ "Extrusion compensation calibration is not supported when using Textured " -#~ "PEI Plate" -#~ msgstr "" -#~ "Extrusion compensation calibration is not supported when using the " -#~ "Textured PEI Plate." +#~ msgid "Extrusion compensation calibration is not supported when using Textured PEI Plate" +#~ msgstr "Extrusion compensation calibration is not supported when using the Textured PEI Plate." -#~ msgid "" -#~ "Failed to connect to the printer through LAN. Please enter the correct " -#~ "printer IP address and access code." -#~ msgstr "" -#~ "No se pudo conectar a la impresora a través de LAN. Introduzca la " -#~ "dirección IP de la impresora y el código de acceso correctos." +#~ msgid "Failed to connect to the printer through LAN. Please enter the correct printer IP address and access code." +#~ msgstr "No se pudo conectar a la impresora a través de LAN. Introduzca la dirección IP de la impresora y el código de acceso correctos." #~ msgid "Failed to parse login report reason111" #~ msgstr "Failed to parse login report reason" #~ msgid "Failed uploading print file. Please enter ip address again." -#~ msgstr "" -#~ "Error al cargar el archivo de impresión. Vuelva a introducir la dirección " -#~ "IP." +#~ msgstr "Error al cargar el archivo de impresión. Vuelva a introducir la dirección IP." -#~ msgid "" -#~ "Filament index %s does not match the filament in AMS slot %s. Please " -#~ "update the printer firmware to support AMS slot assignment." -#~ msgstr "" -#~ "El índice de filamentos %s no coincide con el filamento de la ranura AMS " -#~ "%s. Actualice el firmware de la impresora para admitir la asignación de " -#~ "ranuras AMS." +#~ msgid "Filament index %s does not match the filament in AMS slot %s. Please update the printer firmware to support AMS slot assignment." +#~ msgstr "El índice de filamentos %s no coincide con el filamento de la ranura AMS %s. Actualice el firmware de la impresora para admitir la asignación de ranuras AMS." -#~ msgid "" -#~ "Filament index %s exceeds the number of AMS slots. Please update the " -#~ "printer firmware to support AMS slot assignment." -#~ msgstr "" -#~ "El índice de filamentos %s supera el número de ranuras AMS. Actualice el " -#~ "firmware de la impresora para admitir la asignación de ranuras AMS." +#~ msgid "Filament index %s exceeds the number of AMS slots. Please update the printer firmware to support AMS slot assignment." +#~ msgstr "El índice de filamentos %s supera el número de ranuras AMS. Actualice el firmware de la impresora para admitir la asignación de ranuras AMS." -#~ msgid "" -#~ "Filament index does not match the filament in AMS slot. Please update the " -#~ "printer firmware to support AMS slot assignment." -#~ msgstr "" -#~ "El índice de filamento no coincide con el filamento de la ranura AMS. " -#~ "Actualice el firmware de la impresora para admitir la asignación de " -#~ "ranuras AMS." +#~ msgid "Filament index does not match the filament in AMS slot. Please update the printer firmware to support AMS slot assignment." +#~ msgstr "El índice de filamento no coincide con el filamento de la ranura AMS. Actualice el firmware de la impresora para admitir la asignación de ranuras AMS." -#~ msgid "" -#~ "Filament index exceeds the number of AMS slots. Please update the printer " -#~ "firmware to support AMS slot assignment." -#~ msgstr "" -#~ "El índice de filamentos supera el número de ranuras AMS. Actualice el " -#~ "firmware de la impresora para admitir la asignación de ranuras AMS." +#~ msgid "Filament index exceeds the number of AMS slots. Please update the printer firmware to support AMS slot assignment." +#~ msgstr "El índice de filamentos supera el número de ranuras AMS. Actualice el firmware de la impresora para admitir la asignación de ranuras AMS." -#~ msgid "" -#~ "Filament to print support and raft. \"Default\" means no specific " -#~ "filament for support and current filament is used" -#~ msgstr "" -#~ "Filamento para imprimir soportes y balsas. «Predeterminado» significa que " -#~ "no se utiliza un filamento específico como soporte y se utiliza un " -#~ "filamento actual" +#~ msgid "Filament to print support and raft. \"Default\" means no specific filament for support and current filament is used" +#~ msgstr "Filamento para imprimir soportes y balsas. «Predeterminado» significa que no se utiliza un filamento específico como soporte y se utiliza un filamento actual" #~ msgid "Filaments Auto refill" #~ msgstr "Filament Auto-refill" @@ -15513,49 +12647,23 @@ msgstr "" #~ msgid "G-code" #~ msgstr "G-code" -#~ msgid "" -#~ "Green represents that AMS humidity is normal, orange and red represent " -#~ "that humidity is too high.(Lower the better)" -#~ msgstr "" -#~ "El verde representa que la humedad del AMS es normal, y el naranja y el " -#~ "rojo representan que la humedad es demasiado alta. (cuanto más bajo, " -#~ "mejor)" +#~ msgid "Green represents that AMS humidity is normal, orange and red represent that humidity is too high.(Lower the better)" +#~ msgstr "El verde representa que la humedad del AMS es normal, y el naranja y el rojo representan que la humedad es demasiado alta. (cuanto más bajo, mejor)" #~ msgid "Heat the nozzle to target temperature" #~ msgstr "Calentar la boquilla a la temperatura deseada" -#~ msgid "" -#~ "If enabled, a timelapse video will be generated for each print. After " -#~ "each layer is printed, the toolhead will move to the excess chute, and " -#~ "then a snapshot is taken with the chamber camera. All of these snapshots " -#~ "are composed into a timelapse video when printing completes. Since the " -#~ "melt filament may leak from the nozzle during the process of taking a " -#~ "snapshot, prime tower is required for nozzle priming." -#~ msgstr "" -#~ "Si se activa, se generará un video time-lapse para cada impresión. " -#~ "Después de imprimir cada capa, el cabezal se moverá hacia el conducto de " -#~ "purga y, a continuación, se tomará una instantánea con la cámara de la " -#~ "cámara. Todas estas instantáneas se compondrán en un video cuando se " -#~ "completa la impresión. Dado que el filamento fundido puede salir de la " -#~ "boquilla durante el proceso de toma de una instantánea, se requiere una " -#~ "torre de purga para limpiar la boquilla." +#~ msgid "If enabled, a timelapse video will be generated for each print. After each layer is printed, the toolhead will move to the excess chute, and then a snapshot is taken with the chamber camera. All of these snapshots are composed into a timelapse video when printing completes. Since the melt filament may leak from the nozzle during the process of taking a snapshot, prime tower is required for nozzle priming." +#~ msgstr "Si se activa, se generará un video time-lapse para cada impresión. Después de imprimir cada capa, el cabezal se moverá hacia el conducto de purga y, a continuación, se tomará una instantánea con la cámara de la cámara. Todas estas instantáneas se compondrán en un video cuando se completa la impresión. Dado que el filamento fundido puede salir de la boquilla durante el proceso de toma de una instantánea, se requiere una torre de purga para limpiar la boquilla." #~ msgid "Initialize failed (Not supported without remote video tunnel)!" -#~ msgstr "" -#~ "Falló la inicialización (no se admite sin el túnel de vídeo remoto)." +#~ msgstr "Falló la inicialización (no se admite sin el túnel de vídeo remoto)." -#~ msgid "" -#~ "It seems object %s has completely floating regions. Please re-orient the " -#~ "object or enable support generation." -#~ msgstr "" -#~ "Parece que el objeto %s tiene regiones completamente flotantes. Reoriente " -#~ "el objeto o habilite la generación de soporte." +#~ msgid "It seems object %s has completely floating regions. Please re-orient the object or enable support generation." +#~ msgstr "Parece que el objeto %s tiene regiones completamente flotantes. Reoriente el objeto o habilite la generación de soporte." -#~ msgid "" -#~ "It seems object %s has large overhangs. Please enable support generation." -#~ msgstr "" -#~ "Parece que el objeto %s tiene grandes voladizos. Habilite la generación " -#~ "de soporte." +#~ msgid "It seems object %s has large overhangs. Please enable support generation." +#~ msgstr "Parece que el objeto %s tiene grandes voladizos. Habilite la generación de soporte." #~ msgid "Layer Time(log): " #~ msgstr "Tiempo de capa (registro): " @@ -15578,16 +12686,11 @@ msgstr "" #~ msgid "Not supported." #~ msgstr "No soportado" -#~ msgid "" -#~ "Note : The location of IP and access code on the machine is as follows :" -#~ msgstr "" -#~ "Nota: La ubicación de la IP y el código de acceso en el equipo es la " -#~ "siguiente:" +#~ msgid "Note : The location of IP and access code on the machine is as follows :" +#~ msgstr "Nota: La ubicación de la IP y el código de acceso en el equipo es la siguiente:" #~ msgid "P1P General Settings - WLAN in the sidebar of the main screen" -#~ msgstr "" -#~ "Configuración general de P1P: WLAN en la barra lateral de la pantalla " -#~ "principal" +#~ msgstr "Configuración general de P1P: WLAN en la barra lateral de la pantalla principal" #~ msgid "Plate %d: %s does not support filament %s (%s)." #~ msgstr "Placa %d: %s no admite el filamento %s (%s)." @@ -15601,12 +12704,8 @@ msgstr "" #~ msgid "Please Fill Task Report." #~ msgstr "Por favor rellene el informe de tareas." -#~ msgid "" -#~ "Please check the following infomation and click Confirm to continue " -#~ "sending print:" -#~ msgstr "" -#~ "Compruebe la siguiente información y haga clic en Confirmar para " -#~ "continuar con el envío de la impresión:" +#~ msgid "Please check the following infomation and click Confirm to continue sending print:" +#~ msgstr "Compruebe la siguiente información y haga clic en Confirmar para continuar con el envío de la impresión:" #~ msgid "" #~ "Preview only mode:\n" @@ -15618,21 +12717,14 @@ msgstr "" #~ msgid "Preview only mode for gcode file." #~ msgstr "Modo de vista previa sólo para el archivo gcode." -#~ msgid "" -#~ "Prime tower is required by timelapse. Do you want to enable both of them?" +#~ msgid "Prime tower is required by timelapse. Do you want to enable both of them?" #~ msgstr "Se requiere torre de purga para los time-lapses. ¿Quiere activarla?" -#~ msgid "" -#~ "Prime tower is required by timeplase. Are you sure you want to disable " -#~ "both of them?" -#~ msgstr "" -#~ "Se requiere torre de purga para los time-lapses. ¿Está seguro de que " -#~ "desea deshabilitarla?" +#~ msgid "Prime tower is required by timeplase. Are you sure you want to disable both of them?" +#~ msgstr "Se requiere torre de purga para los time-lapses. ¿Está seguro de que desea deshabilitarla?" #~ msgid "Printer firmware does not support material = >ams slot mapping." -#~ msgstr "" -#~ "El firmware de la impresora no soporta el material => Mapeo de ranuras " -#~ "AMS" +#~ msgstr "El firmware de la impresora no soporta el material => Mapeo de ranuras AMS" #~ msgid "Select Bed Type" #~ msgstr "Seleccione el tipo de cama" @@ -15644,35 +12736,22 @@ msgstr "" #~ msgstr "Detección de hilos" #~ msgid "Spaghetti and Excess Chute Pileup Detection" -#~ msgstr "" -#~ "Detección de hilos en la impresión y exceso de material de purga en el " -#~ "vertedero." +#~ msgstr "Detección de hilos en la impresión y exceso de material de purga en el vertedero." -#~ msgid "" -#~ "Spiral mode only works when wall loops is 1, support is disabled, top " -#~ "shell layers is 0, sparse infill density is 0 and timelapse type is " -#~ "traditional" -#~ msgstr "" -#~ "El modo espiral solo funciona cuando los bucles de pared son 1, el " -#~ "soporte está desactivado, las capas superiores son 0, la densidad de " -#~ "relleno disperso es 0 y el tipo de lapso de tiempo es tradicional" +#~ msgid "Spiral mode only works when wall loops is 1, support is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional" +#~ msgstr "El modo espiral solo funciona cuando los bucles de pared son 1, el soporte está desactivado, las capas superiores son 0, la densidad de relleno disperso es 0 y el tipo de lapso de tiempo es tradicional" #~ msgid "Start" #~ msgstr "Iniciar" #~ msgid "Stop printing when Spaghetti or Excess Chute Pileup is detected" -#~ msgstr "" -#~ "Detener la impresión cuando se detecten hilos o un exceso de material de " -#~ "purga en el vertedero." +#~ msgstr "Detener la impresión cuando se detecten hilos o un exceso de material de purga en el vertedero." #~ msgid "Stop printing when spaghetti detected" #~ msgstr "Detener la impresión cuando se detecten hilos" -#~ msgid "" -#~ "Successfully sent. Will automatically jump to the device page in %s s" -#~ msgstr "" -#~ "Enviado con éxito. Saltará automáticamente a la página del dispositivo en " -#~ "%s s" +#~ msgid "Successfully sent. Will automatically jump to the device page in %s s" +#~ msgstr "Enviado con éxito. Saltará automáticamente a la página del dispositivo en %s s" #~ msgid "Suggestion: Actual Volume in range [%d, %d]" #~ msgstr "Sugerencia: Volumen real dentro del rango [%d, %d]" @@ -15680,13 +12759,8 @@ msgstr "" #~ msgid "Support base" #~ msgstr "Base de soporte" -#~ msgid "" -#~ "Support layer uses layer height independent with object layer. This is to " -#~ "support customizing z-gap and save print time." -#~ msgstr "" -#~ "La capa de soporte utiliza la altura de la capa independientemente de la " -#~ "capa de objetos. Esto es para permitir la personalización de z-gap y " -#~ "ahorrar tiempo de impresión." +#~ msgid "Support layer uses layer height independent with object layer. This is to support customizing z-gap and save print time." +#~ msgstr "La capa de soporte utiliza la altura de la capa independientemente de la capa de objetos. Esto es para permitir la personalización de z-gap y ahorrar tiempo de impresión." #~ msgid "Sync material list from AMS" #~ msgstr "Sincronizar la lista de materiales de AMS" @@ -15697,38 +12771,17 @@ msgstr "" #~ msgid "The 3mf is not from Bambu lab, load geometry data only." #~ msgstr "El 3mf no es de Bambu lab, solo se cargaran datos de geometría." -#~ msgid "" -#~ "The P1P printer does not support smooth timelapse, use traditional " -#~ "timelapse instead." -#~ msgstr "" -#~ "La impresora P1P no admite timelapse fluido; en su lugar, utilice el " -#~ "timelapse tradicional." +#~ msgid "The P1P printer does not support smooth timelapse, use traditional timelapse instead." +#~ msgstr "La impresora P1P no admite timelapse fluido; en su lugar, utilice el timelapse tradicional." -#~ msgid "" -#~ "The flush volume is less than the minimum value and will be automatically " -#~ "set to the minimum value." -#~ msgstr "" -#~ "El volumen de purga es inferior al valor mínimo y se establecerá " -#~ "automáticamente en el valor mínimo." +#~ msgid "The flush volume is less than the minimum value and will be automatically set to the minimum value." +#~ msgstr "El volumen de purga es inferior al valor mínimo y se establecerá automáticamente en el valor mínimo." -#~ msgid "" -#~ "The printer type used to generate G-code is not the same type as the " -#~ "currently selected physical printer. It is recommend to re-slice by " -#~ "selecting the same printer type." -#~ msgstr "" -#~ "El tipo de impresora que se utiliza para generar el g-code no es el mismo " -#~ "que el de la impresora física actualmente seleccionada. Se recomienda " -#~ "volver a generar el g-code después de seleccionar el tipo de impresora " -#~ "correcto." +#~ msgid "The printer type used to generate G-code is not the same type as the currently selected physical printer. It is recommend to re-slice by selecting the same printer type." +#~ msgstr "El tipo de impresora que se utiliza para generar el g-code no es el mismo que el de la impresora física actualmente seleccionada. Se recomienda volver a generar el g-code después de seleccionar el tipo de impresora correcto." -#~ msgid "" -#~ "There are some unknown filaments mapped to generic preset. Please update " -#~ "Bambu Studio or restart Bambu Studio to check if there is an update to " -#~ "system presets." -#~ msgstr "" -#~ "Hay algunos filamentos desconocidos mapeados en ajustes preestablecidos " -#~ "genéricos. Actualice Bambu Studio o reinicie Bambu Studio para comprobar " -#~ "si hay alguna actualización en los ajustes preestablecidos del sistema." +#~ msgid "There are some unknown filaments mapped to generic preset. Please update Bambu Studio or restart Bambu Studio to check if there is an update to system presets." +#~ msgstr "Hay algunos filamentos desconocidos mapeados en ajustes preestablecidos genéricos. Actualice Bambu Studio o reinicie Bambu Studio para comprobar si hay alguna actualización en los ajustes preestablecidos del sistema." #~ msgid "Timelapse without toolhead" #~ msgstr "Timelapse sin cabezal" @@ -15736,55 +12789,29 @@ msgstr "" #~ msgid "Unable to connect printer" #~ msgstr "No se puede conectar la impresora" -#~ msgid "" -#~ "When sparse infill density is low, the internal solid infill or internal " -#~ "bridge may have no archor at the end of line. This cause falling and bad " -#~ "quality when printing internal solid infill. When enable this feature, " -#~ "loop paths will be added to the sparse fill of the lower layers for " -#~ "specific thickness, so that better archor can be provided for internal " -#~ "bridge. 0 means disable this feature" -#~ msgstr "" -#~ "Cuando la densidad del relleno disperso es baja, es posible que el " -#~ "relleno sólido interno o el puente interno no tengan anclaje al final de " -#~ "la línea. Esto provoca colapsos y mala calidad al imprimir el relleno " -#~ "sólido interno. Cuando se habilita esta función, se añadirán rutas de " -#~ "bucle al relleno disperso de las capas inferiores para espesores " -#~ "específicos, de forma que se puedan proporcionar mejores anclajes para " -#~ "los puentes internos. 0 significa desactivar esta función" +#~ msgid "When sparse infill density is low, the internal solid infill or internal bridge may have no archor at the end of line. This cause falling and bad quality when printing internal solid infill. When enable this feature, loop paths will be added to the sparse fill of the lower layers for specific thickness, so that better archor can be provided for internal bridge. 0 means disable this feature" +#~ msgstr "Cuando la densidad del relleno disperso es baja, es posible que el relleno sólido interno o el puente interno no tengan anclaje al final de la línea. Esto provoca colapsos y mala calidad al imprimir el relleno sólido interno. Cuando se habilita esta función, se añadirán rutas de bucle al relleno disperso de las capas inferiores para espesores específicos, de forma que se puedan proporcionar mejores anclajes para los puentes internos. 0 significa desactivar esta función" + +#~ msgid "When the current material run out,the printer will continue to print in the following order." +#~ msgstr "When the current material runs out, the printer will continue to print in the following order." #~ msgid "" -#~ "When the current material run out,the printer will continue to print in " -#~ "the following order." -#~ msgstr "" -#~ "When the current material runs out, the printer will continue to print in " -#~ "the following order." - -#~ msgid "" -#~ "When using support material for the support interface, We recommend the " -#~ "following settings:\n" +#~ "When using support material for the support interface, We recommend the following settings:\n" #~ "0 top z distance, 0 interface spacing, concentric pattern." #~ msgstr "" -#~ "Al utilizar material de soporte para la interfaz de soporte, recomendamos " -#~ "los siguientes ajustes:\n" +#~ "Al utilizar material de soporte para la interfaz de soporte, recomendamos los siguientes ajustes:\n" #~ "Distancia z superior a 0, espaciado de interfaz 0, patrón concéntrico." -#~ msgid "" -#~ "X1 General Settings - Network Settings in the side bar of X1 main screen" -#~ msgstr "" -#~ "Configuración general de X1: configuración de red en la barra lateral de " -#~ "la pantalla principal del X1." +#~ msgid "X1 General Settings - Network Settings in the side bar of X1 main screen" +#~ msgstr "Configuración general de X1: configuración de red en la barra lateral de la pantalla principal del X1." -#~ msgid "" -#~ "You are going to delete %u files from printer. Are you sure to continue?" -#~ msgstr "" -#~ "You are going to delete %u files from the printer. Are you sure you want " -#~ "to continue?" +#~ msgid "You are going to delete %u files from printer. Are you sure to continue?" +#~ msgstr "You are going to delete %u files from the printer. Are you sure you want to continue?" #~ msgid "(Sort)" #~ msgstr "Ordenar" -#~ msgid "" -#~ " will be closed before creating a new model. Do you want to continue?" +#~ msgid " will be closed before creating a new model. Do you want to continue?" #~ msgstr " se cerrará antes de crear un nuevo modelo. ¿Quieres continuar?" #~ msgid "default value" From f5cbe6a38b8d1d347f1eb042ec579af312c6db06 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 21 Dec 2023 09:51:18 +0100 Subject: [PATCH 09/66] New profile for Creality Ender 3 V3 KE (#3216) * Added Creality Ender 3 V3 SE. * Fixed fine profile. * Optimized first layer speed (based on Creality Print) * Brought back Ender-5 (2019) * Setting Marlin 2 as gcode flavor * Added Ender 3 V3 KE Profile * Use inheritance for Ender-3 V3 filament profiles. * Various improvements. * Temperature optimisations (less power consumption) * Added Ender 3 V3 KE Profile * Tweaks for KE integration. * Fixed some log errors. * Optimizations * Optimizations. * Reverted support_interface_top_layers * Added correct jerk and acceleration settings. * Added correct jerk and acceleration. * Added retraction speed. * Re-added missing Ender-5 references in filaments. * Inherits processes from process_common_klipper * Reverted code simplification for inherited profiles. --- resources/profiles/Creality.json | 20 +++ .../Creality/Creality Ender-3 V3 KE_cover.png | Bin 0 -> 29121 bytes .../profiles/Creality/Ender-3 V3 KE_cover.png | Bin 0 -> 29121 bytes .../creality_ender3v3ke_buildplate_model.stl | Bin 0 -> 18684 bytes ...creality_ender3v3ke_buildplate_texture.png | Bin 0 -> 6914 bytes .../Creality Generic ABS @Ender-3V3-all.json | 3 +- .../Creality Generic ASA @Ender-3V3-all.json | 3 +- .../Creality Generic PETG @Ender-3V3-all.json | 3 +- .../Creality Generic PLA @Ender-3V3-all.json | 3 +- ...Generic PLA High Speed @Ender-3V3-all.json | 7 +- ...lity Generic PLA Matte @Ender-3V3-all.json | 3 +- ...ality Generic PLA Silk @Ender-3V3-all.json | 3 +- .../Creality Generic TPU @Ender-3V3-all.json | 3 +- .../Creality Ender-3 V3 KE 0.4 nozzle.json | 123 ++++++++++++++++++ .../machine/Creality Ender-3 V3 KE.json | 12 ++ .../0.12mm Fine @Creality Ender3V3KE.json | 117 +++++++++++++++++ .../0.16mm Optimal @Creality Ender3V3KE.json | 117 +++++++++++++++++ .../0.20mm Standard @Creality Ender3V3KE.json | 117 +++++++++++++++++ .../0.20mm Standard @Creality Ender3V3SE.json | 2 +- 19 files changed, 525 insertions(+), 11 deletions(-) create mode 100644 resources/profiles/Creality/Creality Ender-3 V3 KE_cover.png create mode 100644 resources/profiles/Creality/Ender-3 V3 KE_cover.png create mode 100644 resources/profiles/Creality/creality_ender3v3ke_buildplate_model.stl create mode 100644 resources/profiles/Creality/creality_ender3v3ke_buildplate_texture.png create mode 100644 resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json create mode 100644 resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3KE.json create mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3KE.json create mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3KE.json diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index 12af5f6412..ba5216acc1 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -40,6 +40,10 @@ "name": "Creality Ender-3 V3 SE", "sub_path": "machine/Creality Ender-3 V3 SE.json" }, + { + "name": "Creality Ender-3 V3 KE", + "sub_path": "machine/Creality Ender-3 V3 KE.json" + }, { "name": "Creality Ender-5", "sub_path": "machine/Creality Ender-5.json" @@ -166,6 +170,10 @@ "name": "0.12mm Fine @Creality Ender3V3SE", "sub_path": "process/0.12mm Fine @Creality Ender3V3SE.json" }, + { + "name": "0.12mm Fine @Creality Ender3V3KE", + "sub_path": "process/0.12mm Fine @Creality Ender3V3KE.json" + }, { "name": "0.12mm Detail @Creality Ender5Pro (2019) 0.2", "sub_path": "process/0.12mm Detail @Creality Ender5Pro (2019) 0.2.json" @@ -210,6 +218,10 @@ "name": "0.16mm Optimal @Creality Ender3V3SE", "sub_path": "process/0.16mm Optimal @Creality Ender3V3SE.json" }, + { + "name": "0.16mm Optimal @Creality Ender3V3KE", + "sub_path": "process/0.16mm Optimal @Creality Ender3V3KE.json" + }, { "name": "0.16mm Optimal @Creality Ender5", "sub_path": "process/0.16mm Optimal @Creality Ender5.json" @@ -298,6 +310,10 @@ "name": "0.20mm Standard @Creality Ender3V3SE", "sub_path": "process/0.20mm Standard @Creality Ender3V3SE.json" }, + { + "name": "0.20mm Standard @Creality Ender3V3KE", + "sub_path": "process/0.20mm Standard @Creality Ender3V3KE.json" + }, { "name": "0.20mm Standard @Creality Ender5", "sub_path": "process/0.20mm Standard @Creality Ender5.json" @@ -678,6 +694,10 @@ "name": "Creality Ender-3 V3 SE 0.4 nozzle", "sub_path": "machine/Creality Ender-3 V3 SE 0.4 nozzle.json" }, + { + "name": "Creality Ender-3 V3 KE 0.4 nozzle", + "sub_path": "machine/Creality Ender-3 V3 KE 0.4 nozzle.json" + }, { "name": "Creality Ender-5 0.4 nozzle", "sub_path": "machine/Creality Ender-5 0.4 nozzle.json" diff --git a/resources/profiles/Creality/Creality Ender-3 V3 KE_cover.png b/resources/profiles/Creality/Creality Ender-3 V3 KE_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..f998ef0a0fbe4cb96d230cea478f963e67d837e2 GIT binary patch literal 29121 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 xY<b76g*`mc`fj>`tA#Y3BF4VV)B6> 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 H`7{3qdqJni literal 0 HcmV?d00001 diff --git a/resources/profiles/Creality/creality_ender3v3ke_buildplate_texture.png b/resources/profiles/Creality/creality_ender3v3ke_buildplate_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..60f628fe6d8c137806b8c295c41ab396853ac682 GIT binary patch literal 6914 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 Date: Thu, 21 Dec 2023 10:40:45 +0100 Subject: [PATCH 10/66] Fixed Ender 3 V3's default materials (#3218) --- resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json | 2 +- resources/profiles/Creality/machine/Creality Ender-3 V3 SE.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json index 7491cfe116..8650ce5129 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3v3ke_buildplate_model.stl", "bed_texture": "creality_ender3v3ke_buildplate_texture.png", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Creality Generic ABS @Ender-3V3-all;Creality Generic ASA @Ender-3V3-all;Creality Generic PETG @Ender-3V3-all;Creality Generic PLA @Ender-3V3-all;Creality Generic PLA High Speed @Ender-3V3-all;Creality Generic PLA Matte @Ender-3V3-all;Creality Generic PLA Silk @Ender-3V3-all;Creality Generic TPU @Ender-3V3-all" } \ No newline at end of file diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE.json index bca8890d30..53f04988ac 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3v3se_buildplate_model.stl", "bed_texture": "creality_ender3v3se_buildplate_texture.png", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Creality Generic ABS @Ender-3V3-all;Creality Generic ASA @Ender-3V3-all;Creality Generic PETG @Ender-3V3-all;Creality Generic PLA @Ender-3V3-all;Creality Generic PLA High Speed @Ender-3V3-all;Creality Generic PLA Matte @Ender-3V3-all;Creality Generic PLA Silk @Ender-3V3-all;Creality Generic TPU @Ender-3V3-all" } \ No newline at end of file From 22d3c713fb3a8afb3ac857807e2814d5c3e0802a Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 21 Dec 2023 17:46:25 +0800 Subject: [PATCH 11/66] Fixed an issue that Qidi ABS-GF10 is visible for all vendors --- .../profiles/Qidi/filament/QIDI ABS-GF10.json | 49 ++-- .../profiles/Qidi/filament/QIDI ABS-GF25.json | 18 +- .../Qidi/filament/Qidi Generic ABS.json | 24 +- .../Qidi/filament/Qidi Generic ASA.json | 24 +- .../Qidi/filament/Qidi Generic PA-CF.json | 66 +++--- .../Qidi/filament/Qidi Generic PA.json | 62 +++--- .../Qidi/filament/Qidi Generic PC.json | 46 ++-- .../Qidi/filament/Qidi Generic PETG-CF.json | 210 +++++++++--------- 8 files changed, 259 insertions(+), 240 deletions(-) diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10.json index 9a85b0da85..baf5860ade 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10.json @@ -6,19 +6,38 @@ "from": "system", "instantiation": "true", "inherits": "QIDI ABS-GF25", - "filament_flow_ratio": [ - "0.94" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "nozzle_temperature": [ - "280" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "pressure_advance": [ - "0.02" - ] + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "nozzle_temperature": [ + "280" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "pressure_advance": [ + "0.02" + ], + "compatible_printers": [ + "Qidi X-Plus 0.4 nozzle", + "Qidi X-Max 0.4 nozzle", + "Qidi X-CF Pro 0.4 nozzle", + "Qidi X-Smart 3 0.4 nozzle", + "Qidi X-Plus 3 0.4 nozzle", + "Qidi X-Max 3 0.4 nozzle", + "Qidi X-Max 0.6 nozzle", + "Qidi X-CF Pro 0.6 nozzle", + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle", + "Qidi X-Plus 0.8 nozzle", + "Qidi X-Max 0.8 nozzle", + "Qidi X-CF Pro 0.8 nozzle", + "Qidi X-Smart 3 0.8 nozzle", + "Qidi X-Plus 3 0.8 nozzle", + "Qidi X-Max 3 0.8 nozzle" + ] } diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25.json index 37caa1c617..ad97c0e90b 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25.json @@ -42,14 +42,14 @@ "Qidi X-Max 3 0.4 nozzle", "Qidi X-Max 0.6 nozzle", "Qidi X-CF Pro 0.6 nozzle", - "Qidi X-Smart 3 0.6 nozzle", - "Qidi X-Plus 3 0.6 nozzle", - "Qidi X-Max 3 0.6 nozzle", - "Qidi X-Plus 0.8 nozzle", - "Qidi X-Max 0.8 nozzle", - "Qidi X-CF Pro 0.8 nozzle", - "Qidi X-Smart 3 0.8 nozzle", - "Qidi X-Plus 3 0.8 nozzle", - "Qidi X-Max 3 0.8 nozzle" + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle", + "Qidi X-Plus 0.8 nozzle", + "Qidi X-Max 0.8 nozzle", + "Qidi X-CF Pro 0.8 nozzle", + "Qidi X-Smart 3 0.8 nozzle", + "Qidi X-Plus 3 0.8 nozzle", + "Qidi X-Max 3 0.8 nozzle" ] } diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS.json b/resources/profiles/Qidi/filament/Qidi Generic ABS.json index 4c403010f7..654d210039 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS.json +++ b/resources/profiles/Qidi/filament/Qidi Generic ABS.json @@ -27,17 +27,17 @@ "Qidi X-Max 3 0.4 nozzle", "Qidi X-Max 0.6 nozzle", "Qidi X-CF Pro 0.6 nozzle", - "Qidi X-Smart 3 0.6 nozzle", - "Qidi X-Plus 3 0.6 nozzle", - "Qidi X-Max 3 0.6 nozzle", - "Qidi X-Plus 0.8 nozzle", - "Qidi X-Max 0.8 nozzle", - "Qidi X-CF Pro 0.8 nozzle", - "Qidi X-Smart 3 0.8 nozzle", - "Qidi X-Plus 3 0.8 nozzle", - "Qidi X-Max 3 0.8 nozzle", - "Qidi X-Smart 3 0.2 nozzle", - "Qidi X-Plus 3 0.2 nozzle", - "Qidi X-Max 3 0.2 nozzle" + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle", + "Qidi X-Plus 0.8 nozzle", + "Qidi X-Max 0.8 nozzle", + "Qidi X-CF Pro 0.8 nozzle", + "Qidi X-Smart 3 0.8 nozzle", + "Qidi X-Plus 3 0.8 nozzle", + "Qidi X-Max 3 0.8 nozzle", + "Qidi X-Smart 3 0.2 nozzle", + "Qidi X-Plus 3 0.2 nozzle", + "Qidi X-Max 3 0.2 nozzle" ] } diff --git a/resources/profiles/Qidi/filament/Qidi Generic ASA.json b/resources/profiles/Qidi/filament/Qidi Generic ASA.json index e2829e179c..087a82c5f3 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ASA.json +++ b/resources/profiles/Qidi/filament/Qidi Generic ASA.json @@ -36,17 +36,17 @@ "Qidi X-Max 3 0.4 nozzle", "Qidi X-Max 0.6 nozzle", "Qidi X-CF Pro 0.6 nozzle", - "Qidi X-Smart 3 0.6 nozzle", - "Qidi X-Plus 3 0.6 nozzle", - "Qidi X-Max 3 0.6 nozzle", - "Qidi X-Plus 0.8 nozzle", - "Qidi X-Max 0.8 nozzle", - "Qidi X-CF Pro 0.8 nozzle", - "Qidi X-Smart 3 0.8 nozzle", - "Qidi X-Plus 3 0.8 nozzle", - "Qidi X-Max 3 0.8 nozzle", - "Qidi X-Smart 3 0.2 nozzle", - "Qidi X-Plus 3 0.2 nozzle", - "Qidi X-Max 3 0.2 nozzle" + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle", + "Qidi X-Plus 0.8 nozzle", + "Qidi X-Max 0.8 nozzle", + "Qidi X-CF Pro 0.8 nozzle", + "Qidi X-Smart 3 0.8 nozzle", + "Qidi X-Plus 3 0.8 nozzle", + "Qidi X-Max 3 0.8 nozzle", + "Qidi X-Smart 3 0.2 nozzle", + "Qidi X-Plus 3 0.2 nozzle", + "Qidi X-Max 3 0.2 nozzle" ] } diff --git a/resources/profiles/Qidi/filament/Qidi Generic PA-CF.json b/resources/profiles/Qidi/filament/Qidi Generic PA-CF.json index ae06eb1e20..5ce25897a5 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PA-CF.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PA-CF.json @@ -7,58 +7,58 @@ "instantiation": "true", "inherits": "fdm_filament_pa", "filament_type": [ - "PA-CF" + "PA-CF" ], "nozzle_temperature_initial_layer": [ - "290" + "290" ], "nozzle_temperature": [ - "290" + "290" ], "filament_max_volumetric_speed": [ - "8" + "8" ], "fan_max_speed": [ - "30" + "30" ], "fan_min_speed": [ - "10" + "10" ], "overhang_fan_threshold": [ - "0%" + "0%" ], "overhang_fan_speed": [ - "40" + "40" ], "fan_cooling_layer_time": [ - "5" + "5" ], "full_fan_speed_layer": [ - "2" + "2" ], "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.01" - ], + "1" + ], + "pressure_advance": [ + "0.01" + ], "compatible_printers": [ - "Qidi X-Plus 0.4 nozzle", - "Qidi X-Max 0.4 nozzle", - "Qidi X-CF Pro 0.4 nozzle", - "Qidi X-Smart 3 0.4 nozzle", - "Qidi X-Plus 3 0.4 nozzle", - "Qidi X-Max 3 0.4 nozzle", - "Qidi X-Max 0.6 nozzle", - "Qidi X-CF Pro 0.6 nozzle", - "Qidi X-Smart 3 0.6 nozzle", - "Qidi X-Plus 3 0.6 nozzle", - "Qidi X-Max 3 0.6 nozzle", - "Qidi X-Plus 0.8 nozzle", - "Qidi X-Max 0.8 nozzle", - "Qidi X-CF Pro 0.8 nozzle", -"Qidi X-Smart 3 0.8 nozzle", -"Qidi X-Plus 3 0.8 nozzle", -"Qidi X-Max 3 0.8 nozzle" + "Qidi X-Plus 0.4 nozzle", + "Qidi X-Max 0.4 nozzle", + "Qidi X-CF Pro 0.4 nozzle", + "Qidi X-Smart 3 0.4 nozzle", + "Qidi X-Plus 3 0.4 nozzle", + "Qidi X-Max 3 0.4 nozzle", + "Qidi X-Max 0.6 nozzle", + "Qidi X-CF Pro 0.6 nozzle", + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle", + "Qidi X-Plus 0.8 nozzle", + "Qidi X-Max 0.8 nozzle", + "Qidi X-CF Pro 0.8 nozzle", + "Qidi X-Smart 3 0.8 nozzle", + "Qidi X-Plus 3 0.8 nozzle", + "Qidi X-Max 3 0.8 nozzle" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Qidi Generic PA.json b/resources/profiles/Qidi/filament/Qidi Generic PA.json index 7f7b60568b..6addf23fd5 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PA.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PA.json @@ -7,43 +7,43 @@ "instantiation": "true", "inherits": "fdm_filament_pa", "required_nozzle_HRC": [ - "3" + "3" ], "nozzle_temperature_initial_layer": [ - "280" + "280" ], "nozzle_temperature": [ - "280" + "280" ], "filament_max_volumetric_speed": [ - "16" + "16" ], "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.03" - ], + "1" + ], + "pressure_advance": [ + "0.03" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >90)||(bed_temperature_initial_layer[current_extruder] >90)}M106 P3 S0\n{elsif(bed_temperature[current_extruder] >70)||(bed_temperature_initial_layer[current_extruder] >70)}M106 P3 S153\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{endif}" - ], - "compatible_printers": [ - "Qidi X-Plus 0.4 nozzle", - "Qidi X-Max 0.4 nozzle", - "Qidi X-CF Pro 0.4 nozzle", -"Qidi X-Smart 3 0.4 nozzle", -"Qidi X-Plus 3 0.4 nozzle", -"Qidi X-Max 3 0.4 nozzle", - "Qidi X-Max 0.6 nozzle", - "Qidi X-CF Pro 0.6 nozzle", -"Qidi X-Smart 3 0.6 nozzle", -"Qidi X-Plus 3 0.6 nozzle", -"Qidi X-Max 3 0.6 nozzle", -"Qidi X-Plus 0.8 nozzle", -"Qidi X-Max 0.8 nozzle", -"Qidi X-CF Pro 0.8 nozzle", -"Qidi X-Smart 3 0.8 nozzle", -"Qidi X-Plus 3 0.8 nozzle", -"Qidi X-Max 3 0.8 nozzle" - ] -} + "; filament start gcode\n{if (bed_temperature[current_extruder] >90)||(bed_temperature_initial_layer[current_extruder] >90)}M106 P3 S0\n{elsif(bed_temperature[current_extruder] >70)||(bed_temperature_initial_layer[current_extruder] >70)}M106 P3 S153\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{endif}" + ], + "compatible_printers": [ + "Qidi X-Plus 0.4 nozzle", + "Qidi X-Max 0.4 nozzle", + "Qidi X-CF Pro 0.4 nozzle", + "Qidi X-Smart 3 0.4 nozzle", + "Qidi X-Plus 3 0.4 nozzle", + "Qidi X-Max 3 0.4 nozzle", + "Qidi X-Max 0.6 nozzle", + "Qidi X-CF Pro 0.6 nozzle", + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle", + "Qidi X-Plus 0.8 nozzle", + "Qidi X-Max 0.8 nozzle", + "Qidi X-CF Pro 0.8 nozzle", + "Qidi X-Smart 3 0.8 nozzle", + "Qidi X-Plus 3 0.8 nozzle", + "Qidi X-Max 3 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Qidi Generic PC.json b/resources/profiles/Qidi/filament/Qidi Generic PC.json index 7fbf2480c6..b2a129e2bd 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PC.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PC.json @@ -1,12 +1,12 @@ { - "type": "filament", - "filament_id": "GFC99", - "setting_id": "GFSC99", - "name": "Qidi Generic PC", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pc", - "filament_max_volumetric_speed": [ + "type": "filament", + "filament_id": "GFC99", + "setting_id": "GFSC99", + "name": "Qidi Generic PC", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pc", + "filament_max_volumetric_speed": [ "5" ], "filament_flow_ratio": [ @@ -21,23 +21,23 @@ "pressure_advance": [ "0.04" ], - "compatible_printers": [ + "compatible_printers": [ "Qidi X-Plus 0.4 nozzle", "Qidi X-Max 0.4 nozzle", "Qidi X-CF Pro 0.4 nozzle", - "Qidi X-Smart 3 0.4 nozzle", - "Qidi X-Plus 3 0.4 nozzle", - "Qidi X-Max 3 0.4 nozzle", + "Qidi X-Smart 3 0.4 nozzle", + "Qidi X-Plus 3 0.4 nozzle", + "Qidi X-Max 3 0.4 nozzle", "Qidi X-Max 0.6 nozzle", "Qidi X-CF Pro 0.6 nozzle", - "Qidi X-Smart 3 0.6 nozzle", - "Qidi X-Plus 3 0.6 nozzle", - "Qidi X-Max 3 0.6 nozzle", - "Qidi X-Plus 0.8 nozzle", - "Qidi X-Max 0.8 nozzle", - "Qidi X-CF Pro 0.8 nozzle", - "Qidi X-Smart 3 0.8 nozzle", - "Qidi X-Plus 3 0.8 nozzle", - "Qidi X-Max 3 0.8 nozzle" - ] -} + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle", + "Qidi X-Plus 0.8 nozzle", + "Qidi X-Max 0.8 nozzle", + "Qidi X-CF Pro 0.8 nozzle", + "Qidi X-Smart 3 0.8 nozzle", + "Qidi X-Plus 3 0.8 nozzle", + "Qidi X-Max 3 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG-CF.json b/resources/profiles/Qidi/filament/Qidi Generic PETG-CF.json index 6bdeba6607..87612bdc00 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG-CF.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PETG-CF.json @@ -1,112 +1,112 @@ { - "type": "filament", - "filament_id": "GFG98", - "setting_id": "GFSG50", - "name": "Qidi Generic PETG-CF", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pet", - "temperature_vitrification": [ - "75" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "90" - ], - "cool_plate_temp": [ - "0" - ], - "eng_plate_temp": [ - "70" - ], - "hot_plate_temp": [ - "70" - ], - "textured_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "required_nozzle_HRC": [ - "40" - ], - "filament_vendor": [ - "Other brand" - ], - "filament_type": [ - "PETG-CF" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature": [ - "280" - ], - "filament_cost": [ - "34.99" - ], - "filament_density": [ - "1.25" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "slow_down_layer_time": [ - "6" - ], - "enable_pressure_advance": [ - "1" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_flow_ratio": [ - "0.95" - ], - "pressure_advance": [ - "0.05" - ], - "compatible_printers": [ + "type": "filament", + "filament_id": "GFG98", + "setting_id": "GFSG50", + "name": "Qidi Generic PETG-CF", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "temperature_vitrification": [ + "75" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "90" + ], + "cool_plate_temp": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "hot_plate_temp": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "required_nozzle_HRC": [ + "40" + ], + "filament_vendor": [ + "Other brand" + ], + "filament_type": [ + "PETG-CF" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "nozzle_temperature": [ + "280" + ], + "filament_cost": [ + "34.99" + ], + "filament_density": [ + "1.25" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "slow_down_layer_time": [ + "6" + ], + "enable_pressure_advance": [ + "1" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "filament_flow_ratio": [ + "0.95" + ], + "pressure_advance": [ + "0.05" + ], + "compatible_printers": [ "Qidi X-Plus 0.4 nozzle", "Qidi X-Max 0.4 nozzle", "Qidi X-CF Pro 0.4 nozzle", - "Qidi X-Smart 3 0.4 nozzle", - "Qidi X-Plus 3 0.4 nozzle", - "Qidi X-Max 3 0.4 nozzle", + "Qidi X-Smart 3 0.4 nozzle", + "Qidi X-Plus 3 0.4 nozzle", + "Qidi X-Max 3 0.4 nozzle", "Qidi X-Max 0.6 nozzle", "Qidi X-CF Pro 0.6 nozzle", - "Qidi X-Smart 3 0.6 nozzle", - "Qidi X-Plus 3 0.6 nozzle", - "Qidi X-Max 3 0.6 nozzle", - "Qidi X-Plus 0.8 nozzle", - "Qidi X-Max 0.8 nozzle", - "Qidi X-CF Pro 0.8 nozzle", - "Qidi X-Smart 3 0.8 nozzle", - "Qidi X-Plus 3 0.8 nozzle", - "Qidi X-Max 3 0.8 nozzle" - ] + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle", + "Qidi X-Plus 0.8 nozzle", + "Qidi X-Max 0.8 nozzle", + "Qidi X-CF Pro 0.8 nozzle", + "Qidi X-Smart 3 0.8 nozzle", + "Qidi X-Plus 3 0.8 nozzle", + "Qidi X-Max 3 0.8 nozzle" + ] } \ No newline at end of file From e187ada1e9857b18c9a0df74f08dcb89e4d12d68 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 21 Dec 2023 22:36:43 +0800 Subject: [PATCH 12/66] write Orca version into 3mf project file --- src/libslic3r/Format/bbs_3mf.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 17bb4972d1..15aabd5f8a 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -1720,7 +1720,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) //BBS: version check bool dont_load_config = !m_load_config; if (m_bambuslicer_generator_version) { - Semver app_version = *(Semver::parse(SLIC3R_VERSION)); + Semver app_version = *(Semver::parse(SoftFever_VERSION)); Semver file_version = *m_bambuslicer_generator_version; if (file_version.maj() != app_version.maj()) dont_load_config = true; @@ -3638,7 +3638,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) }*/ } else if (m_curr_metadata_name == BBL_APPLICATION_TAG) { // Generator application of the 3MF. - // SLIC3R_APP_KEY - SLIC3R_VERSION + // SLIC3R_APP_KEY - SoftFever_VERSION if (boost::starts_with(m_curr_characters, "BambuStudio-")) { m_is_bbl_3mf = true; m_bambuslicer_generator_version = Semver::parse(m_curr_characters.substr(12)); @@ -6380,7 +6380,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) metadata_item_map[BBL_CREATION_DATE_TAG] = date; metadata_item_map[BBL_MODIFICATION_TAG] = date; //SoftFever: write BambuStudio tag to keep it compatible - metadata_item_map[BBL_APPLICATION_TAG] = (boost::format("%1%-%2%") % "BambuStudio" % SLIC3R_VERSION).str(); + metadata_item_map[BBL_APPLICATION_TAG] = (boost::format("%1%-%2%") % "BambuStudio" % SoftFever_VERSION).str(); } metadata_item_map[BBS_3MF_VERSION] = std::to_string(VERSION_BBS_3MF); @@ -7197,7 +7197,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) { const std::string& temp_path = model.get_backup_path(); std::string temp_file = temp_path + std::string("/") + "_temp_1.config"; - config.save_to_json(temp_file, std::string("project_settings"), std::string("project"), std::string(SLIC3R_VERSION)); + config.save_to_json(temp_file, std::string("project_settings"), std::string("project"), std::string(SoftFever_VERSION)); return _add_file_to_archive(archive, BBS_PROJECT_CONFIG_FILE, temp_file); } @@ -7538,7 +7538,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // save slice header for debug stream << " <" << SLICE_HEADER_TAG << ">\n"; stream << " <" << SLICE_HEADER_ITEM_TAG << " " << KEY_ATTR << "=\"" << "X-BBL-Client-Type" << "\" " << VALUE_ATTR << "=\"" << "slicer" << "\"/>\n"; - stream << " <" << SLICE_HEADER_ITEM_TAG << " " << KEY_ATTR << "=\"" << "X-BBL-Client-Version" << "\" " << VALUE_ATTR << "=\"" << convert_to_full_version(SLIC3R_VERSION) << "\"/>\n"; + stream << " <" << SLICE_HEADER_ITEM_TAG << " " << KEY_ATTR << "=\"" << "X-BBL-Client-Version" << "\" " << VALUE_ATTR << "=\"" << convert_to_full_version(SoftFever_VERSION) << "\"/>\n"; stream << " \n"; for (unsigned int i = 0; i < (unsigned int)plate_data_list.size(); ++i) From 90097a19266401b38d52142cac055489038cbe36 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Fri, 22 Dec 2023 00:54:03 +0000 Subject: [PATCH 13/66] ENH: PR: Alternate extra wall (#3196) * ENH: PR: Alternate extra wall * Updated tooltip * Tooltip spelling correction * Introduce dialog box to disable ensure vertical shell thickness * Alternate Extra Wall - automatically disable for Vase mode and revert vase mode toggles * Corrected invalid push --------- Co-authored-by: SoftFever --- src/libslic3r/PerimeterGenerator.cpp | 4 ++++ src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 9 +++++++++ src/libslic3r/PrintConfig.hpp | 1 + src/libslic3r/PrintObject.cpp | 1 + src/slic3r/GUI/ConfigManipulation.cpp | 26 ++++++++++++++++++++++++-- src/slic3r/GUI/Plater.cpp | 6 ++++++ src/slic3r/GUI/Tab.cpp | 1 + src/slic3r/Utils/CalibUtils.cpp | 5 ++++- 9 files changed, 51 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 4adf705665..4774d5fae2 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -1505,6 +1505,8 @@ void PerimeterGenerator::process_classic() const Surface &surface = this->slices->surfaces[surface_order[order_idx]]; // detect how many perimeters must be generated for this island int loop_number = this->config->wall_loops + surface.extra_perimeters - 1; // 0-indexed loops + if (this->config->alternate_extra_wall && this->layer_id % 2 == 1 && !m_spiral_vase) // add alternating extra wall + loop_number++; if (this->layer_id == 0 && this->config->only_one_wall_first_layer) loop_number = 0; // Set the topmost layer to be one wall @@ -1937,6 +1939,8 @@ void PerimeterGenerator::process_arachne() coord_t bead_width_0 = ext_perimeter_spacing; // detect how many perimeters must be generated for this island int loop_number = this->config->wall_loops + surface.extra_perimeters - 1; // 0-indexed loops + if (this->config->alternate_extra_wall && this->layer_id % 2 == 1 && !m_spiral_vase) // add alternating extra wall + loop_number++; if (this->layer_id == 0 && this->config->only_one_wall_first_layer) loop_number = 0; // Orca: set the topmost layer to be one wall according to the config diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 3f18aa8443..127dc7aa57 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -766,7 +766,7 @@ bool Preset::has_cali_lines(PresetBundle* preset_bundle) } static std::vector s_Preset_print_options { - "layer_height", "initial_layer_print_height", "wall_loops", "slice_closing_radius", "spiral_mode", "spiral_mode_smooth", "spiral_mode_max_xy_smoothing", "slicing_mode", + "layer_height", "initial_layer_print_height", "wall_loops", "alternate_extra_wall", "slice_closing_radius", "spiral_mode", "spiral_mode_smooth", "spiral_mode_max_xy_smoothing", "slicing_mode", "top_shell_layers", "top_shell_thickness", "bottom_shell_layers", "bottom_shell_thickness", "extra_perimeters_on_overhangs", "ensure_vertical_shell_thickness", "reduce_crossing_wall", "detect_thin_wall", "detect_overhang_wall", "overhang_reverse", "overhang_reverse_threshold","overhang_reverse_internal_only", "seam_position", "staggered_inner_seams", "wall_sequence", "is_infill_first", "sparse_infill_density", "sparse_infill_pattern", "top_surface_pattern", "bottom_surface_pattern", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index f31620f17e..c3fafc6cb8 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3001,6 +3001,13 @@ def = this->add("filament_loading_speed", coFloats); def->max = 1000; def->set_default_value(new ConfigOptionInt(2)); + def = this->add("alternate_extra_wall", coBool); + def->label = L("Alternate extra wall"); + def->category = L("Strength"); + def->tooltip = L("This setting adds an extra wall to every other layer. This way the infill gets wedged vertically between the walls, resulting in stronger prints. \n\nWhen this option is enabled, the ensure vertical shell thickness option needs to be disabled. \n\nUsing lightning infill together with this option is not recommended as there is limited infill to anchor the extra perimeters to."); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBool(false)); + def = this->add("post_process", coStrings); def->label = L("Post-processing Scripts"); def->tooltip = L("If you want to process the output G-code through custom scripts, " @@ -5494,6 +5501,7 @@ void DynamicPrintConfig::normalize_fdm(int used_filaments) } { this->opt("wall_loops", true)->value = 1; + this->opt("alternate_extra_wall", true)->value = false; this->opt("top_shell_layers", true)->value = 0; this->opt("sparse_infill_density", true)->value = 0; } @@ -5566,6 +5574,7 @@ void DynamicPrintConfig::normalize_fdm_1() } { this->opt("wall_loops", true)->value = 1; + this->opt("alternate_extra_wall", true)->value = false; this->opt("top_shell_layers", true)->value = 0; this->opt("sparse_infill_density", true)->value = 0; } diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 8738d13247..91993d3180 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -853,6 +853,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, inner_wall_speed)) // Total number of perimeters. ((ConfigOptionInt, wall_loops)) + ((ConfigOptionBool, alternate_extra_wall)) ((ConfigOptionFloat, minimum_sparse_infill_area)) ((ConfigOptionInt, solid_infill_filament)) ((ConfigOptionFloatOrPercent, internal_solid_infill_line_width)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index a7ebfdc7f9..866d9224a8 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -911,6 +911,7 @@ bool PrintObject::invalidate_state_by_config_options( } } else if ( opt_key == "wall_loops" + || opt_key == "alternate_extra_wall" || opt_key == "top_one_wall_type" || opt_key == "min_width_top_surface" || opt_key == "only_one_wall_first_layer" diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index bb0ced4406..947a6a09d1 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -277,7 +277,6 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con sparse_infill_density == 0 && ! config->opt_bool("enable_support") && config->opt_int("enforce_support_layers") == 0 && - config->opt_bool("ensure_vertical_shell_thickness") && ! config->opt_bool("detect_thin_wall") && ! config->opt_bool("overhang_reverse") && config->opt_enum("timelapse_type") == TimelapseType::tlTraditional)) @@ -305,7 +304,6 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con new_conf.set_key_value("sparse_infill_density", new ConfigOptionPercent(0)); new_conf.set_key_value("enable_support", new ConfigOptionBool(false)); new_conf.set_key_value("enforce_support_layers", new ConfigOptionInt(0)); - new_conf.set_key_value("ensure_vertical_shell_thickness", new ConfigOptionBool(true)); new_conf.set_key_value("detect_thin_wall", new ConfigOptionBool(false)); new_conf.set_key_value("overhang_reverse", new ConfigOptionBool(false)); new_conf.set_key_value("timelapse_type", new ConfigOptionEnum(tlTraditional)); @@ -326,6 +324,30 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con } is_msg_dlg_already_exist = false; } + + if (config->opt_bool("alternate_extra_wall") && config->opt_bool("ensure_vertical_shell_thickness")) + { + wxString msg_text = _(L("Alternate extra wall only works with ensure vertical shell thickness disabled. ")); + + if (is_global_config) + msg_text += "\n\n" + _(L("Change these settings automatically? \n" + "Yes - Disable ensure vertical shell thickness and enable alternate extra wall\n" + "No - Dont use alternate extra wall")); + + MessageDialog dialog(m_msg_dlg_parent, msg_text, "", + wxICON_WARNING | (is_global_config ? wxYES | wxNO : wxOK)); + DynamicPrintConfig new_conf = *config; + auto answer = dialog.ShowModal(); + if (!is_global_config || answer == wxID_YES) { + new_conf.set_key_value("ensure_vertical_shell_thickness", new ConfigOptionBool(false)); + new_conf.set_key_value("alternate_extra_wall", new ConfigOptionBool(true)); + } + else { + new_conf.set_key_value("ensure_vertical_shell_thickness", new ConfigOptionBool(true)); + new_conf.set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); + } + apply(config, &new_conf); + } // BBS int filament_cnt = wxGetApp().preset_bundle->filament_presets.size(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 030231efb4..cc393f86c1 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -8968,6 +8968,7 @@ void Plater::_calib_pa_tower(const Calib_Params& params) { const double nozzle_diameter = printer_config->option("nozzle_diameter")->get_at(0); filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats{ 1.0f }); + print_config->set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); print_config->set_key_value("default_jerk", new ConfigOptionFloat(1.0f)); print_config->set_key_value("outer_wall_jerk", new ConfigOptionFloat(1.0f)); print_config->set_key_value("inner_wall_jerk", new ConfigOptionFloat(1.0f)); @@ -9096,6 +9097,7 @@ void Plater::calib_flowrate(int pass) { } print_config->set_key_value("layer_height", new ConfigOptionFloat(layer_height)); + print_config->set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); print_config->set_key_value("initial_layer_print_height", new ConfigOptionFloat(first_layer_height)); print_config->set_key_value("reduce_crossing_wall", new ConfigOptionBool(true)); //filament_config->set_key_value("filament_max_volumetric_speed", new ConfigOptionFloats{ 9. }); @@ -9123,6 +9125,7 @@ void Plater::calib_temp(const Calib_Params& params) { model().objects[0]->config.set_key_value("brim_type", new ConfigOptionEnum(btOuterOnly)); model().objects[0]->config.set_key_value("brim_width", new ConfigOptionFloat(5.0)); model().objects[0]->config.set_key_value("brim_object_gap", new ConfigOptionFloat(0.0)); + model().objects[0]->config.set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); changed_objects({ 0 }); wxGetApp().get_tab(Preset::TYPE_PRINT)->update_dirty(); @@ -9191,6 +9194,7 @@ void Plater::calib_max_vol_speed(const Calib_Params& params) print_config->set_key_value("enable_overhang_speed", new ConfigOptionBool { false }); print_config->set_key_value("timelapse_type", new ConfigOptionEnum(tlTraditional)); print_config->set_key_value("wall_loops", new ConfigOptionInt(1)); + print_config->set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); print_config->set_key_value("top_shell_layers", new ConfigOptionInt(0)); print_config->set_key_value("bottom_shell_layers", new ConfigOptionInt(0)); print_config->set_key_value("sparse_infill_density", new ConfigOptionPercent(0)); @@ -9256,6 +9260,7 @@ void Plater::calib_retraction(const Calib_Params& params) obj->config.set_key_value("sparse_infill_density", new ConfigOptionPercent(0)); obj->config.set_key_value("initial_layer_print_height", new ConfigOptionFloat(layer_height)); obj->config.set_key_value("layer_height", new ConfigOptionFloat(layer_height)); + obj->config.set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); changed_objects({ 0 }); @@ -9285,6 +9290,7 @@ void Plater::calib_VFA(const Calib_Params& params) print_config->set_key_value("enable_overhang_speed", new ConfigOptionBool { false }); print_config->set_key_value("timelapse_type", new ConfigOptionEnum(tlTraditional)); print_config->set_key_value("wall_loops", new ConfigOptionInt(1)); + print_config->set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); print_config->set_key_value("top_shell_layers", new ConfigOptionInt(0)); print_config->set_key_value("bottom_shell_layers", new ConfigOptionInt(1)); print_config->set_key_value("sparse_infill_density", new ConfigOptionPercent(0)); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 8ede9c756a..402a7ebeda 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1973,6 +1973,7 @@ void TabPrint::build() page = add_options_page(L("Strength"), "empty"); optgroup = page->new_optgroup(L("Walls"), L"param_wall"); optgroup->append_single_option_line("wall_loops"); + optgroup->append_single_option_line("alternate_extra_wall"); optgroup->append_single_option_line("detect_thin_wall"); optgroup = page->new_optgroup(L("Top/bottom shells"), L"param_shell"); diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index 95dae8aef9..2e16aba025 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -539,7 +539,7 @@ void CalibUtils::calib_flowrate(int pass, const CalibInfo &calib_info, wxString auto modifier = stof(obj_name); _obj->config.set_key_value("print_flow_ratio", new ConfigOptionFloat(1.0f + modifier / 100.f)); } - + print_config.set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); print_config.set_key_value("layer_height", new ConfigOptionFloat(layer_height)); print_config.set_key_value("initial_layer_print_height", new ConfigOptionFloat(first_layer_height)); print_config.set_key_value("reduce_crossing_wall", new ConfigOptionBool(true)); @@ -748,6 +748,7 @@ void CalibUtils::calib_max_vol_speed(const CalibInfo &calib_info, wxString &erro print_config.set_key_value("enable_overhang_speed", new ConfigOptionBool{false}); print_config.set_key_value("timelapse_type", new ConfigOptionEnum(tlTraditional)); print_config.set_key_value("wall_loops", new ConfigOptionInt(1)); + print_config.set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); print_config.set_key_value("top_shell_layers", new ConfigOptionInt(0)); print_config.set_key_value("bottom_shell_layers", new ConfigOptionInt(1)); print_config.set_key_value("sparse_infill_density", new ConfigOptionPercent(0)); @@ -807,6 +808,7 @@ void CalibUtils::calib_VFA(const CalibInfo &calib_info, wxString &error_message) print_config.set_key_value("enable_overhang_speed", new ConfigOptionBool{false}); print_config.set_key_value("timelapse_type", new ConfigOptionEnum(tlTraditional)); print_config.set_key_value("wall_loops", new ConfigOptionInt(1)); + print_config.set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); print_config.set_key_value("top_shell_layers", new ConfigOptionInt(0)); print_config.set_key_value("bottom_shell_layers", new ConfigOptionInt(1)); print_config.set_key_value("sparse_infill_density", new ConfigOptionPercent(0)); @@ -864,6 +866,7 @@ void CalibUtils::calib_retraction(const CalibInfo &calib_info, wxString &error_m filament_config.set_key_value("curr_bed_type", new ConfigOptionEnum(calib_info.bed_type)); obj->config.set_key_value("wall_loops", new ConfigOptionInt(2)); + obj->config.set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); obj->config.set_key_value("top_shell_layers", new ConfigOptionInt(0)); obj->config.set_key_value("bottom_shell_layers", new ConfigOptionInt(3)); obj->config.set_key_value("sparse_infill_density", new ConfigOptionPercent(0)); From ba09fa386604ae0549b76dea8d878bd612e5ca2b Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Fri, 22 Dec 2023 13:09:42 +0000 Subject: [PATCH 14/66] Bug Fix: Fix crash when printing by object after 1.8.2 code merge. Fixed tool ordering not done based on flush volume on BBL printers (#3223) * PR: Fix crash when printing by object after 1.8.2 code merge * PR: Revert change in tool ordering - reorder_extruders_for_minimum_flush_volume to enable tool sequencing based on projected flush volumes * Bumping up reordering to up to 12 different colors on same layer. * Updated tool ordering to distinguish between bbl printers when reordering tools * Update to code comment * Updated population handling of is_bbl_printer variable --- src/libslic3r/GCode/ToolOrdering.cpp | 19 ++++++++++--------- src/libslic3r/GCode/ToolOrdering.hpp | 1 + 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index f5680decef..c6e81e994f 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -123,6 +123,7 @@ static double calc_max_layer_height(const PrintConfig &config, double max_object // (print->config().print_sequence == PrintSequence::ByObject is true). ToolOrdering::ToolOrdering(const PrintObject &object, unsigned int first_extruder, bool prime_multi_material) { + m_is_BBL_printer = object.print()->is_BBL_printer(); m_print_object_ptr = &object; if (object.layers().empty()) return; @@ -162,6 +163,7 @@ ToolOrdering::ToolOrdering(const PrintObject &object, unsigned int first_extrude // (print->config().print_sequence == PrintSequence::ByObject is false). ToolOrdering::ToolOrdering(const Print &print, unsigned int first_extruder, bool prime_multi_material) { + m_is_BBL_printer = print.is_BBL_printer(); m_print_config_ptr = &print.config(); // Initialize the print layers for all objects and all layers. @@ -757,24 +759,23 @@ void ToolOrdering::reorder_extruders_for_minimum_flush_volume() const unsigned int number_of_extruders = (unsigned int) (sqrt(flush_matrix.size()) + EPSILON); // Extract purging volumes for each extruder pair: std::vector> wipe_volumes; - if (m_print_config_ptr->purge_in_prime_tower) { + if (print_config->purge_in_prime_tower || m_is_BBL_printer) { for (unsigned int i = 0; i < number_of_extruders; ++i) - wipe_volumes.push_back( - std::vector(flush_matrix.begin() + i * number_of_extruders, flush_matrix.begin() + (i + 1) * number_of_extruders)); + wipe_volumes.push_back( std::vector(flush_matrix.begin() + i * number_of_extruders, + flush_matrix.begin() + (i + 1) * number_of_extruders)); } else { // populate wipe_volumes with prime_volume - for (unsigned int i = 0; i < number_of_extruders; ++i) { - wipe_volumes.push_back(std::vector(number_of_extruders, m_print_config_ptr->prime_volume)); - } + for (unsigned int i = 0; i < number_of_extruders; ++i) + wipe_volumes.push_back(std::vector(number_of_extruders, print_config->prime_volume)); } - + unsigned int current_extruder_id = -1; for (int i = 0; i < m_layer_tools.size(); ++i) { LayerTools& lt = m_layer_tools[i]; if (lt.extruders.empty()) continue; - // todo: The algorithm complexity is too high(o(n2)), currently only 8 colors are supported - if (i != 0 && lt.extruders.size() <= 8) { + // todo: The algorithm complexity is too high(o(n2)), currently only 12 colors are supported + if (i != 0 && lt.extruders.size() <= 12) { lt.extruders = get_extruders_order(wipe_volumes, lt.extruders, current_extruder_id); } current_extruder_id = lt.extruders.back(); diff --git a/src/libslic3r/GCode/ToolOrdering.hpp b/src/libslic3r/GCode/ToolOrdering.hpp index 728fa4e74b..1cc6f74c8a 100644 --- a/src/libslic3r/GCode/ToolOrdering.hpp +++ b/src/libslic3r/GCode/ToolOrdering.hpp @@ -210,6 +210,7 @@ private: const PrintConfig* m_print_config_ptr = nullptr; const PrintObject* m_print_object_ptr = nullptr; + bool m_is_BBL_printer = false; }; } // namespace SLic3r From 951f9e9aef2974ec07a573ddd23dce5f179b2685 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Fri, 22 Dec 2023 13:10:36 +0000 Subject: [PATCH 15/66] Bug fix: VFA Test fix (#3230) VFA Test fix --- src/slic3r/GUI/Plater.cpp | 1 + src/slic3r/Utils/CalibUtils.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index cc393f86c1..025c622866 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -9295,6 +9295,7 @@ void Plater::calib_VFA(const Calib_Params& params) print_config->set_key_value("bottom_shell_layers", new ConfigOptionInt(1)); print_config->set_key_value("sparse_infill_density", new ConfigOptionPercent(0)); print_config->set_key_value("overhang_reverse", new ConfigOptionBool(false)); + print_config->set_key_value("detect_thin_wall", new ConfigOptionBool(false)); print_config->set_key_value("spiral_mode", new ConfigOptionBool(true)); model().objects[0]->config.set_key_value("brim_type", new ConfigOptionEnum(btOuterOnly)); model().objects[0]->config.set_key_value("brim_width", new ConfigOptionFloat(3.0)); diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index 2e16aba025..9c61742bc8 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -808,6 +808,7 @@ void CalibUtils::calib_VFA(const CalibInfo &calib_info, wxString &error_message) print_config.set_key_value("enable_overhang_speed", new ConfigOptionBool{false}); print_config.set_key_value("timelapse_type", new ConfigOptionEnum(tlTraditional)); print_config.set_key_value("wall_loops", new ConfigOptionInt(1)); + print_config.set_key_value("detect_thin_wall", new ConfigOptionBool(false)); print_config.set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); print_config.set_key_value("top_shell_layers", new ConfigOptionInt(0)); print_config.set_key_value("bottom_shell_layers", new ConfigOptionInt(1)); From 0f2a223abd67c7f301192c4ce0e157a3cb922d84 Mon Sep 17 00:00:00 2001 From: Carlos Caruncho Date: Fri, 22 Dec 2023 14:11:07 +0100 Subject: [PATCH 16/66] Update Spanish translation (#3231) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Revert "Merge remote-tracking branch 'upstream/main' into spanish_translation" This reverts commit 694a900845c56ea364cf21aa2a0f65a98bb68539, reversing changes made to 4f53ce4f88a435d2d0305743f42329730406a48d. * Revert "Update OrcaSlicer_es.po" This reverts commit 4f53ce4f88a435d2d0305743f42329730406a48d. * Revert "Revert "Update OrcaSlicer_es.po"" This reverts commit 53bd15617c81dabd6180875ced03826e9c08a972. * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Revert "Update OrcaSlicer_es.po" This reverts commit b21aad079fd6fde7fbfa3dcfbe214d1054c569f1. * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_en.po * Update OrcaSlicer_es.po * Traduccion de OrcaSlicer al español * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po --------- Co-authored-by: SoftFever --- localization/i18n/es/OrcaSlicer_es.po | 473 ++++++++++++++------------ 1 file changed, 263 insertions(+), 210 deletions(-) diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index e615537d45..1aa6f87bd0 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -290,7 +290,7 @@ msgid "Cut" msgstr "Cortar" msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" -msgstr "" +msgstr "Los bordes con pliegues pueden ser causados por la herramienta de corte, ¿quieres arreglarlo ahora?" msgid "Repairing model object" msgstr "Reparación de un objeto modelo" @@ -332,10 +332,10 @@ msgid "After cut" msgstr "Después del corte" msgid "Cut to parts" -msgstr "Cortar en piezas" +msgstr "Separar en piezas" msgid "Auto Segment" -msgstr "Auto Segmentar" +msgstr "Auto Despiece" msgid "Perform cut" msgstr "Realizar corte" @@ -666,7 +666,7 @@ msgid "Rebuild" msgstr "Reconstruir" msgid "Loading current presets" -msgstr "Carga de los preajustes actuales" +msgstr "Carga de los perfiles actuales" msgid "Loading a mode view" msgstr "Cargar un modo de vista" @@ -684,10 +684,10 @@ msgid "Choose one file (gcode/3mf):" msgstr "Elegir un archivo (gcode/3mf):" msgid "Some presets are modified." -msgstr "Algunos preajustes se modificaron." +msgstr "Algunos perfiles se modificaron." msgid "You can keep the modifield presets to the new project, discard or save changes as new presets." -msgstr "Puede mantener los preajustes modificados en el nuevo proyecto, descartar o guardar los cambios como nuevos preajustes." +msgstr "Puede mantener los perfiles modificados en el nuevo proyecto, descartar o guardar los cambios como nuevos perfiles." msgid "User logged out" msgstr "Usuario desconectado" @@ -705,10 +705,10 @@ msgid "Privacy Policy Update" msgstr "Actualización de política de privacidad" msgid "The number of user presets cached in the cloud has exceeded the upper limit, newly created user presets can only be used locally." -msgstr "El número de preajustes de usuario almacenados en caché en la nube ha superado el límite superior, los preajustes de usuario recién creados sólo pueden utilizarse localmente." +msgstr "El número de perfiles de usuario almacenados en caché en la nube ha superado el límite superior, los perfiles de usuario recién creados sólo pueden utilizarse localmente." msgid "Sync user presets" -msgstr "Sincronizar preajustes de usuario" +msgstr "Sincronizar perfiles de usuario" msgid "Loading" msgstr "Cargando" @@ -1808,7 +1808,7 @@ msgid "Importing SLA archive" msgstr "Importando archivo SLA" msgid "The SLA archive doesn't contain any presets. Please activate some SLA printer preset first before importing that SLA archive." -msgstr "El SLA importado no contiene ningún preajuste. Por favor active algunos preajustes de la impresora primero antes de importar ese archivo SLA." +msgstr "El SLA importado no contiene ningún perfil. Por favor active algunos perfiles de la impresora primero antes de importar ese archivo SLA." msgid "Importing canceled." msgstr "Importación cancelada." @@ -1817,13 +1817,13 @@ msgid "Importing done." msgstr "Importación realizada." msgid "The imported SLA archive did not contain any presets. The current SLA presets were used as fallback." -msgstr "El SLA importado no contiene ningún preajuste. Los preajustes de SLA actuales serán usados como alternativa." +msgstr "El SLA importado no contiene ningún perfil. Los perfiles de SLA actuales serán usados como alternativa." msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "No puedes cargar un proyecto SLA con objetos multi-pieza en la cama" msgid "Please check your object list before preset changing." -msgstr "Por favor comprueba tu lista de objectos antes de cambiar el preajuste." +msgstr "Por favor comprueba tu lista de objectos antes de cambiar el perfil." msgid "Attention!" msgstr "¡Atención!" @@ -1964,7 +1964,7 @@ msgid "Dynamic flow calibration" msgstr "Calibración de caudal dinámico" msgid "The nozzle temp and max volumetric speed will affect the calibration results. Please fill in the same values as the actual printing. They can be auto-filled by selecting a filament preset." -msgstr "La temperatura y la velocidad volumétrica máxima de la boquilla afectará a los resultados de los ajustes. Por favor, rellena los mismos valores de la actual impresión. Ellos pueden ser auto-rellenados seleccionando un preajuste de filamento." +msgstr "La temperatura y la velocidad volumétrica máxima de la boquilla afectará a los resultados de los ajustes. Por favor, rellena los mismos valores de la actual impresión. Ellos pueden ser auto-rellenados seleccionando un perfil de filamento." msgid "Nozzle Diameter" msgstr "Diámetro" @@ -3071,7 +3071,7 @@ msgid "Application is closing" msgstr "La aplicación se está cerrando" msgid "Closing Application while some presets are modified." -msgstr "Cerrando la aplicación mientras se modifican algunos preajustes." +msgstr "Cerrando la aplicación mientras se modifican algunos perfiles." msgid "Logging" msgstr "Registrando" @@ -3511,8 +3511,8 @@ msgid "" msgstr "" "¿Quieres sincronizar tus datos personales desde la Bambú Cloud? \n" "Esta contiene la siguiente información:\n" -"1. Los Preajustes de Proceso\n" -"2. Los Preajustes de Filamento3. Los preajustes de la Impressora" +"1. Los Perfiles de Proceso\n" +"2. Los Perfiles de Filamento3. Los perfiles de la Impressora" msgid "Synchronization" msgstr "Sincronización" @@ -4318,7 +4318,7 @@ msgid "Sync filaments with AMS" msgstr "Sincronizar filamentos con AMS" msgid "Sync filaments with AMS will drop all current selected filament presets and colors. Do you want to continue?" -msgstr "Sincronizar filamentos con AMS descartará todos los preajustes de filamento y colores. ¿Desea continuar?" +msgstr "Sincronizar filamentos con AMS descartará todos los perfiles de filamento y colores. ¿Desea continuar?" msgid "Already did a synchronization, do you want to sync only changes or resync all?" msgstr "Se realizó la sincronización, ¿Desea sincronizar solo los cambios o resincronizar todo?" @@ -4333,7 +4333,7 @@ msgid "There are no compatible filaments, and sync is not performed." msgstr "No hay filamentos compatible, y no se ha realizado la sincronización." msgid "There are some unknown filaments mapped to generic preset. Please update Orca Slicer or restart Orca Slicer to check if there is an update to system presets." -msgstr "Hay algunos filamentos desconocidos mapeados en el preajuste genérico. Por favor actualice o reinicie Orca Slicer para comprobar si hay una actualización de preajustes del sistema." +msgstr "Hay algunos filamentos desconocidos mapeados en el perfil genérico. Por favor actualice o reinicie Orca Slicer para comprobar si hay una actualización de perfiles del sistema." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -4422,13 +4422,13 @@ msgid "Modified G-codes" msgstr "G-Code modificado" msgid "The 3mf has following customized filament or printer presets:" -msgstr "El archivo 3mf tiene los siguientes preajustes personalizados de filamento o impresora:" +msgstr "El archivo 3mf tiene los siguientes perfiles personalizados de filamento o impresora:" msgid "Please confirm that the G-codes within these presets are safe to prevent any damage to the machine!" -msgstr "¡Por favor, confirme que el G-Code dentro de los preajustes son seguros para evitar cualquier daño a la máquina!" +msgstr "¡Por favor, confirme que el G-Code dentro de los perfiles son seguros para evitar cualquier daño a la máquina!" msgid "Customized Preset" -msgstr "Preajuste Personalizado" +msgstr "Perfil Personalizado" msgid "Name of components inside step file is not UTF8 format!" msgstr "¡El nombre de los componentes dentro del archivo de pasos no tiene formato UTF8!" @@ -4591,7 +4591,7 @@ msgstr "" "El archivo cargado contiene solo G-Code, no puedo entrar a la página de Preparación" msgid "You can keep the modified presets to the new project or discard them" -msgstr "Puedes mantener los preajustes modificados en el nuevo proyecto o descartarlos" +msgstr "Puedes mantener los perfiles modificados en el nuevo proyecto o descartarlos" msgid "Creating a new project" msgstr "Creando un nuevo proyecto" @@ -4893,22 +4893,22 @@ msgid "If enabled, auto-calculate everytime the color changed." msgstr "Si está activado, auto calcula en cada cambio de color." msgid "Presets" -msgstr "Preajustes" +msgstr "Perfiles" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "Sincronización automática de los preajustes del usuario (Impresora/Filamento/Proceso)" +msgstr "Sincronización automática de los perfiles del usuario (Impresora/Filamento/Proceso)" msgid "User Sync" msgstr "Sincronización de usuario" msgid "Update built-in Presets automatically." -msgstr "Actualizar preajustes integrados automaticamente." +msgstr "Actualizar perfiles integrados automáticamente." msgid "System Sync" msgstr "Sincronizar sistema" msgid "Clear my choice on the unsaved presets." -msgstr "Limpiar mi selección de preajustes no guardados." +msgstr "Limpiar mi selección de perfiles no guardados." msgid "Associate files to OrcaSlicer" msgstr "Asociar archivos a OrcaSlicer" @@ -5085,7 +5085,7 @@ msgid "Edit preset" msgstr "Editar ajuste preestablecido" msgid "Project-inside presets" -msgstr "Preajustes internos del proyecto" +msgstr "Perfiles internos del proyecto" msgid "Add/Remove filaments" msgstr "Añadir/Borrar filamentos" @@ -5094,7 +5094,7 @@ msgid "Add/Remove materials" msgstr "Añadir/Borrar materiales" msgid "Select/Remove printers(system presets)" -msgstr "Seleccionar/Borrar impresoras (preajustes del sistema)" +msgstr "Seleccionar/Borrar impresoras (perfiles del sistema)" msgid "Create printer" msgstr "Crear impresora" @@ -5173,10 +5173,10 @@ msgid "Save %s as" msgstr "Guardar %s como" msgid "User Preset" -msgstr "Preajuste de usuario" +msgstr "Perfil de usuario" msgid "Preset Inside Project" -msgstr "Preajuste interno del proyecto" +msgstr "Perfil interno del proyecto" msgid "Name is invalid;" msgstr "El nombre no es válido;" @@ -5195,14 +5195,14 @@ msgstr "No se permite sobrescribir un perfil del sistema" #, boost-format msgid "Preset \"%1%\" already exists." -msgstr "El preajuste \"%1%\" ya existe." +msgstr "El perfil \"%1%\" ya existe." #, boost-format msgid "Preset \"%1%\" already exists and is incompatible with current printer." -msgstr "El preajuste \"%1%\" ya existe y es incompatible con la impresora actual." +msgstr "El perfil \"%1%\" ya existe y es incompatible con la impresora actual." msgid "Please note that saving action will replace this preset" -msgstr "Tenga en cuenta que la acción de guardar reemplazará este preajuste" +msgstr "Tenga en cuenta que la acción de guardar reemplazará este perfil" msgid "The name is not allowed to be empty." msgstr "No se permite que el nombre esté vacío." @@ -5225,7 +5225,7 @@ msgstr "Copiar" #, boost-format msgid "Printer \"%1%\" is selected with preset \"%2%\"" -msgstr "La impresora \"%1%\" está seleccionada con el preajuste \"%2%\"" +msgstr "La impresora \"%1%\" está seleccionada con el perfil \"%2%\"" #, boost-format msgid "Please choose an action with \"%1%\" preset after saving." @@ -5237,7 +5237,7 @@ msgstr "Para \"%1%\", cambia \"%2%\" por \"%3%\" " #, boost-format msgid "For \"%1%\", add \"%2%\" as a new preset" -msgstr "Para \"%1%\", añada \"%2%\" como un nuevo preajuste" +msgstr "Para \"%1%\", añada \"%2%\" como un nuevo perfil" #, boost-format msgid "Simply switch to \"%1%\"" @@ -5400,11 +5400,11 @@ msgstr "Hay algunos filamentos desconocidos en los mapeados AMS. Por favor, comp #, c-format, boost-format msgid "nozzle in preset: %s %s" -msgstr "Boquilla en preajuste: %s %s" +msgstr "Boquilla preestablecida: %s %s" #, c-format, boost-format msgid "nozzle memorized: %.1f %s" -msgstr "Boquilla memorizada: %1f %s" +msgstr "Boquilla memorizada: %.1f %s" msgid "Your nozzle diameter in preset is not consistent with memorized nozzle diameter. Did you change your nozzle lately?" msgstr "¿El diámetro de la boquilla en su configuración no corresponde con el diámetro memorizado? ¿Hizo un cambio de boquilla?" @@ -5918,15 +5918,15 @@ msgstr "Separado" #, c-format, boost-format msgid "%d Filament Preset and %d Process Preset is attached to this printer. Those presets would be deleted if the printer is deleted." -msgstr "El preajuste de Filamento %d y el preajuste de Proceso %d están adjuntos a esta impresora." +msgstr "El perfil de Filamento %d y el perfil de Proceso %d están adjuntos a esta impresora." msgid "Presets inherited by other presets can not be deleted!" -msgstr "¡Los preajustes heredados de otros preajustes no pueden borrarse!" +msgstr "¡Los perfiles heredados de otros perfiles no pueden borrarse!" msgid "The following presets inherit this preset." msgid_plural "The following preset inherits this preset." -msgstr[0] "El siguiente preajuste hereda de este otro." -msgstr[1] "Los siguientes preajustes heredan de este otro." +msgstr[0] "El siguiente perfil hereda de este otro." +msgstr[1] "Los siguientes perfiles heredan de este otro." #. TRN Remove/Delete #, boost-format @@ -5935,19 +5935,19 @@ msgstr "%1% Preestablecido" msgid "Following preset will be deleted too." msgid_plural "Following presets will be deleted too." -msgstr[0] "El siguiente preajuste también se eliminará." -msgstr[1] "Los siguientes preajustes también se eliminarán." +msgstr[0] "El siguiente perfil también se eliminará." +msgstr[1] "Los siguientes perfiles también se eliminarán." msgid "" "Are you sure to delete the selected preset? \n" "If the preset corresponds to a filament currently in use on your printer, please reset the filament information for that slot." msgstr "" -"¿Está seguro de que desea eliminar el preajuste seleccionado? \n" -"Si el preajuste corresponde a un filamento actualmente en uso en su impresora, restablezca la información del filamento para esa ranura." +"¿Está seguro de que desea eliminar el perfil seleccionado? \n" +"Si el perfil corresponde a un filamento actualmente en uso en su impresora, restablezca la información del filamento para esa ranura." #, boost-format msgid "Are you sure to %1% the selected preset?" -msgstr "¿Está seguro de %1% el preajuste seleccionado?" +msgstr "¿Está seguro de %1% el perfil seleccionado?" msgid "All" msgstr "Todo" @@ -6011,7 +6011,7 @@ msgid "" "Save the selected options to preset \n" "\"%1%\"." msgstr "" -"Guardar las opciones seleccionadas en el preajuste \n" +"Guardar las opciones seleccionadas en el perfil \n" "\"%1%\"." #, boost-format @@ -6019,7 +6019,7 @@ msgid "" "Transfer the selected options to the newly selected preset \n" "\"%1%\"." msgstr "" -"Transfiere las opciones seleccionadas al nuevo preajuste seleccionado \n" +"Transfiere las opciones seleccionadas al nuevo perfil seleccionado \n" "\"%1%\"." #, boost-format @@ -6028,11 +6028,11 @@ msgstr "La preselección \"%1%\" contiene los siguientes cambios no guardados:" #, boost-format msgid "Preset \"%1%\" is not compatible with the new printer profile and it contains the following unsaved changes:" -msgstr "El preajuste \"%1%\" no es compatible con el nuevo perfil de la impresora y contiene los siguientes cambios no guardados:" +msgstr "El perfil \"%1%\" no es compatible con el nuevo perfil de la impresora y contiene los siguientes cambios no guardados:" #, boost-format msgid "Preset \"%1%\" is not compatible with the new process profile and it contains the following unsaved changes:" -msgstr "El preajuste \"%1%\" no es compatible con el nuevo perfil de proceso y contiene los siguientes cambios no guardados:" +msgstr "El perfil \"%1%\" no es compatible con el nuevo perfil de proceso y contiene los siguientes cambios no guardados:" #, boost-format msgid "" @@ -6198,7 +6198,7 @@ msgid "To" msgstr "A" msgid "Bambu Network plug-in not detected." -msgstr "Plugin Red Bambú no detectado," +msgstr "Plugin Red Bambú no detectado." msgid "Click here to download it." msgstr "Presione aquí para descargarlo." @@ -6990,7 +6990,7 @@ msgid "Automatically orient stls on the Z-axis upon initial import" msgstr "Orientar automáticamente los stls en el eje Z en la importación inicial" msgid "Printer preset names" -msgstr "Nombres de ajustes de la impresora" +msgstr "Nombres de perfiles de la impresora" msgid "Hostname, IP or URL" msgstr "Nombre de host, IP o URL" @@ -7032,7 +7032,7 @@ msgid "Ignore HTTPS certificate revocation checks in case of missing or offline msgstr "Ignorar comprobaciones de certificado de revocación HTTPS en caso de perder o puntos de distribución sin conexión. Se debería activar esta opción de certificados autofirmados si la conexión falla." msgid "Names of presets related to the physical printer" -msgstr "Nombres de preajustes relacionados por la impresora física" +msgstr "Nombres de perfiles relacionados por la impresora física" msgid "Authorization Type" msgstr "Tipo de autorización" @@ -7555,6 +7555,9 @@ msgid "" "\n" "Printing walls first may help with extreme overhangs as the walls have the neighbouring infill to adhere to. However, the infill will slighly push out the printed walls where it is attached to them, resulting in a worse external surface finish. It can also cause the infill to shine through the external surfaces of the part." msgstr "" +"Orden de las paredes/relleno. Cuando la casilla no está marcada, los muros se imprimen primero, lo que funciona mejor en la mayoría de los casos.\n" +"\n" +"Imprimir primero los muros puede ayudar con salientes extremos ya que los muros tienen el relleno vecino al que adherirse. Sin embargo, el relleno empujará ligeramente hacia fuera las paredes impresas donde se une a ellos, lo que resulta en un peor acabado de la superficie exterior. También puede hacer que el relleno brille a través de las superficies externas de la pieza." msgid "Height to rod" msgstr "Altura a la barra" @@ -7803,7 +7806,7 @@ msgstr "Densidad de relleno" #, c-format, boost-format msgid "Density of internal sparse infill, 100% turns all sparse infill into solid infill and internal solid infill pattern will be used" -msgstr "" +msgstr "Densidad del relleno de baja densidad interno, convierte el 100%tu relleno de baja densidad en relleno sólido y se utilizará el patrón de relleno sólido interno." msgid "Sparse infill pattern" msgstr "Patrón de relleno de baja densidad" @@ -9724,16 +9727,16 @@ msgstr "El nombre no puede estar vacío." #, c-format, boost-format msgid "The selected preset: %s is not found." -msgstr "El preajuste seleccionado: %s no encontrado." +msgstr "El perfil seleccionado: %s no encontrado." msgid "The name cannot be the same as the system preset name." -msgstr "El nombre no puede ser el mismo que el nombre de ajuste del sistema." +msgstr "El nombre no puede ser el mismo que el nombre de perfil del sistema." msgid "The name is the same as another existing preset name" -msgstr "El nombre coincide con el de otro ajuste" +msgstr "El nombre coincide con el de otro perfil" msgid "create new preset failed." -msgstr "crear un nuevo ajuste fallido." +msgstr "crear un nuevo perfil fallido." msgid "Are you sure to cancel the current calibration and return to the home page?" msgstr "¿Estás seguro que quiere cancelar la calibración y volver a la página de inicio?" @@ -9766,10 +9769,10 @@ msgid "Please select at least one filament for calibration" msgstr "Por favor, selecciona al menos un filamento por calibración" msgid "Flow rate calibration result has been saved to preset" -msgstr "El resultado de la calibración del ratio de caudal se ha guardado en los ajustes" +msgstr "El resultado de la calibración del ratio de caudal se ha guardado en los perfiles" msgid "Max volumetric speed calibration result has been saved to preset" -msgstr "El resultado de la calibración de velocidad volumétrica máxima se ha salvado en los ajustes" +msgstr "El resultado de la calibración de velocidad volumétrica máxima se ha salvado en los perfiles" msgid "When do you need Flow Dynamics Calibration" msgstr "Cuando necesita la Calibración de Dinámicas de Flujo" @@ -9884,10 +9887,10 @@ msgid "Input Value" msgstr "Valor de entrada" msgid "Save to Filament Preset" -msgstr "Salvar en Ajustes de Filamento" +msgstr "Salvar Perfil de Filamento" msgid "Preset" -msgstr "Preajuste" +msgstr "Perfil" msgid "Record Factor" msgstr "Factor de guardado" @@ -9902,7 +9905,7 @@ msgid "Please input a valid value (0.0 < flow ratio < 2.0)" msgstr "Por favor, introduzca un valor válido (0.0 < ratio de caudal <2.0)" msgid "Please enter the name of the preset you want to save." -msgstr "Por favor, introduzca el nombre del preajuste que quiera guardar." +msgstr "Por favor, introduzca el nombre del perfil que quiera guardar." msgid "Calibration1" msgstr "Calibración1" @@ -10353,7 +10356,7 @@ msgid "Test storage upgrade" msgstr "Prueba de actualización de almacenamiento" msgid "Test Storage Upgrade:" -msgstr "Prueba de Actualización de Almacenamiento," +msgstr "Prueba de Actualización de Almacenamiento:" msgid "Test storage download" msgstr "Prueba de descarga de almacenamiento" @@ -10374,137 +10377,141 @@ msgid "Log Info" msgstr "Información de Registro" msgid "Select filament preset" -msgstr "Seleccionar preajuste de filamento" +msgstr "Seleccionar Filamento Preestablecido" msgid "Create Filament" msgstr "Crear Filamento" msgid "Create Based on Current Filament" -msgstr "" +msgstr "Crear basándose en e Filamento Actual" msgid "Copy Current Filament Preset " -msgstr "" +msgstr "Copiar Perfil Actual de Filamento " msgid "Basic Information" -msgstr "" +msgstr "Información básica" msgid "Add Filament Preset under this filament" -msgstr "" +msgstr "Añadir Perfil de Filamento debajo de este filamento" msgid "We could create the filament presets for your following printer:" -msgstr "" +msgstr "Somos capaces de crear los perfiles de filamento para la siguiente impresora:" msgid "Select Vendor" -msgstr "" +msgstr "Seleccionar Proveedor" msgid "Input Custom Vendor" -msgstr "" +msgstr "Introducor Proveedor Personalizado" msgid "Can't find vendor I want" -msgstr "" +msgstr "No es posible encontrar el proveedor que deseamos" msgid "Select Type" -msgstr "" +msgstr "Seleccionar Tipo" msgid "Select Filament Preset" -msgstr "" +msgstr "Seleccionar Perfil de Filamento" msgid "Serial" msgstr "" msgid "e.g. Basic, Matte, Silk, Marble" -msgstr "" +msgstr "Por ejemplo, Básico, Mate, Seda, Mármol" msgid "Filament Preset" -msgstr "" +msgstr "Perfil de Filamento" msgid "Create" -msgstr "" +msgstr "Crear" msgid "Vendor is not selected, please reselect vendor." -msgstr "" +msgstr "El proveedor no ha sido seleccionado, por favor, seleccione el proveedor." msgid "Custom vendor is not input, please input custom vendor." -msgstr "" +msgstr "El proveedor personalizado no ha sido introducido, vuelva a seleccionarlo." msgid "\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." -msgstr "" +msgstr "\"Bambu\" o \"Genérico\" no pueden ser usados como Proveedor para filamentos personalizados." msgid "Filament type is not selected, please reselect type." -msgstr "" +msgstr "No se ha seleccionado el tipo de filamento, vuelva a seleccionarlo." msgid "Filament serial is not inputed, please input serial." -msgstr "" +msgstr "No se ha seleccionado el número de serie de filamento, vuelva a seleccionarlo." msgid "There may be escape characters in the vendor or serial input of filament. Please delete and re-enter." -msgstr "" +msgstr "Puede haber caracteres de escape en la entrada del proveedor o de la serie del filamento. Por favor, elimínelos y vuelva a introducirlos." msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." -msgstr "" +msgstr "Todas las entradas en el proveedor personalizado o serie son espacios. Vuelva a introducirlos." msgid "The vendor can not be a number. Please re-enter." -msgstr "" +msgstr "El proveedor no puede ser un número. Vuelva a introducirlos." msgid "You have not selected a printer or preset yet. Please select at least one." -msgstr "" +msgstr "Aún no ha seleccionado una impresora o un perfil. Por favor, seleccione al menos uno." msgid "Some existing presets have failed to be created, as follows:\n" -msgstr "" +msgstr "Algunos perfiles existentes no se han podido crear, como se indica a continuación:\n" msgid "" "\n" "Do you want to rewrite it?" msgstr "" +"\n" +"¿Quieres reescribirlo?" msgid "" "We would rename the presets as \"Vendor Type Serial @printer you selected\". \n" "To add preset for more prinetrs, Please go to printer selection" msgstr "" +"Cambiaremos el nombre de los perfiles a \"Tipo Número de Serie @impresora seleccionados\". \n" +"Para añadir perfiles para más impresoras, vaya a la selección de impresoras" msgid "Create Printer/Nozzle" -msgstr "" +msgstr "Crear Impresora/Boquilla" msgid "Create Printer" -msgstr "" +msgstr "Crear Impresora" msgid "Create Nozzle for Existing Printer" -msgstr "" +msgstr "Crear Boquilla para una Impresora Existente" msgid "Create from Template" -msgstr "" +msgstr "Crear desde Plantilla" msgid "Create Based on Current Printer" -msgstr "" +msgstr "Crear basándose en la Impresora Actual" msgid "wiki" msgstr "" msgid "Import Preset" -msgstr "" +msgstr "Importar Perfil" msgid "Create Type" -msgstr "" +msgstr "Crear Tipo" msgid "The model is not fond, place reselect vendor." -msgstr "" +msgstr "No se encuentra el modelo, vuelva a seleccionar proveedor." msgid "Select Model" -msgstr "" +msgstr "Seleccionar Modelo" msgid "Select Printer" -msgstr "" +msgstr "Seleccionar Impresora" msgid "Input Custom Model" -msgstr "" +msgstr "Introducir Modelo Personalizado" msgid "Can't find my printer model" -msgstr "" +msgstr "No se puede encontrar el modelo de la impresora" msgid "Rectangle" -msgstr "" +msgstr "Rectángulo" msgid "Printable Space" -msgstr "" +msgstr "Espacio Imprimible" msgid "X" msgstr "" @@ -10513,62 +10520,62 @@ msgid "Y" msgstr "" msgid "Hot Bed STL" -msgstr "" +msgstr "Cama Caliente STL" msgid "Load stl" -msgstr "" +msgstr "Cargar stl" msgid "Hot Bed SVG" -msgstr "" +msgstr "Cama Caliente SVG" msgid "Load svg" -msgstr "" +msgstr "Cargar svg" msgid "Max Print Height" -msgstr "" +msgstr "Altura Máxima de Impresión" #, c-format, boost-format msgid "The file exceeds %d MB, please import again." -msgstr "" +msgstr "El archivo excede %d MB, por favor impórtelo de nuevo." msgid "Exception in obtaining file size, please import again." -msgstr "" +msgstr "Se ha producido una excepción obteniendo el tamaño de archivo, por favor, impórtelo de nuevo." msgid "Preset path is not find, please reselect vendor." -msgstr "" +msgstr "No se encuentra la ruta preestablecida, vuelva a seleccionar el proveedor." msgid "The printer model was not found, please reselect." -msgstr "" +msgstr "No se ha encontrado el modelo de impresora, vuelva a seleccionarlo." msgid "The nozzle diameter is not fond, place reselect." -msgstr "" +msgstr "El diámetro de la boquilla no es adecuado, vuelva a seleccionar el lugar." msgid "The printer preset is not fond, place reselect." -msgstr "" +msgstr "El perfil de impresora se ha encontrado, por favor, vuelva a seleccionarlo." msgid "Printer Preset" -msgstr "" +msgstr "Perfil de Impresora" msgid "Filament Preset Template" -msgstr "" +msgstr "Plantilla de Perfil de Filamento" msgid "Deselect All" -msgstr "" +msgstr "Deseleccionar Todo" msgid "Process Preset Template" -msgstr "" +msgstr "Plantilla de Perfil de Proceso" msgid "Back Page 1" -msgstr "" +msgstr "Volver a la Página 1" msgid "You have not yet chosen which printer preset to create based on. Please choose the vendor and model of the printer" -msgstr "" +msgstr "Aún no ha elegido el perfil de impresora que desea crear. Por favor, elija el proveedor y el modelo de la impresora" msgid "You have entered an illegal input in the printable area section on the first page. Please check before creating it." -msgstr "" +msgstr "Ha introducido una entrada ilegal en la sección de área imprimible de la primera página. Por favor, compruébelo antes de crearla." msgid "The custom printer or model is not inputed, place input." -msgstr "" +msgstr "No se ha introducido la impresora personalizada o el modelo, por favor, introdúzcalo." msgid "" "The printer preset you created already has a preset with the same name. Do you want to overwrite it?\n" @@ -10576,203 +10583,219 @@ msgid "" "and filament and process presets without the same preset name will be reserve.\n" "\tCancel: Do not create a preset, return to the creation interface." msgstr "" +"El perfil de impresora que ha creado ya tiene un perfil con el mismo nombre. ¿Desea sobrescribirlo?\n" +"\tSí: sobrescriba el perfil de impresora con el mismo nombre, y los perfiles de filamento y proceso con el mismo nombre de perfil se volverán a crear \n" +"y los perfiles de filamento y proceso sin el mismo nombre de perfil se reservarán.\n" +"\tCancelar: No crear perfil y volver a la interfaz de creación." msgid "You need to select at least one filament preset." -msgstr "" +msgstr "Necesita seleccionar al menos un perfil de filamento." msgid "You need to select at least one process preset." -msgstr "" +msgstr "Necesita seleccionar al menos un perfil de proceso." msgid "Create filament presets failed. As follows:\n" -msgstr "" +msgstr "Fallo crenado perfiles de filamento de la siguiente manera:\n" msgid "Create process presets failed. As follows:\n" -msgstr "" +msgstr "Fallo crenado perfiles de proceso de la siguiente manera:\n" msgid "Vendor is not find, please reselect." -msgstr "" +msgstr "Proveedor no encontrado, por favor seleccione uno." msgid "Current vendor has no models, please reselect." -msgstr "" +msgstr "El proveedor actual no tiene modelos, seleccionar otro." msgid "You have not selected the vendor and model or inputed the custom vendor and model." -msgstr "" +msgstr "No ha seleccionado el proveedor y el modelo o no ha introducido el proveedor y el modelo personalizados." msgid "There may be escape characters in the custom printer vendor or model. Please delete and re-enter." -msgstr "" +msgstr "Puede haber caracteres de escape en el proveedor o modelo de impresora personalizado. Por favor, elimínelos y vuelva a introducirlos." msgid "All inputs in the custom printer vendor or model are spaces. Please re-enter." -msgstr "" +msgstr "Todas las entradas en el proveedor o modelo de impresora personalizado son espacios. Vuelva a introducirlos." msgid "Please check bed printable shape and origin input." -msgstr "" +msgstr "Por favor, compruebe la forma imprimible de la cama y la entrada de origen." msgid "You have not yet selected the printer to replace the nozzle, please choose." -msgstr "" +msgstr "Todavía no ha seleccionado impresora para sustituir la boquilla, por favor, selecciónela." msgid "Create Printer Successful" -msgstr "" +msgstr "Éxito Creando la Impresora" msgid "Create Filament Successful" -msgstr "" +msgstr "Éxito Creando el Filamento" msgid "Printer Created" -msgstr "" +msgstr "Impresora Creada" msgid "Please go to printer settings to edit your presets" -msgstr "" +msgstr "Vaya a la configuración de la impresora para editar los perfiles" msgid "Filament Created" -msgstr "" +msgstr "Filamento Creado" msgid "" "Please go to filament setting to edit your presets if you need.\n" "Please note that nozzle temperature, hot bed temperature, and maximum volumetric speed have a significant impact on printing quality. Please set them carefully." msgstr "" +"Por favor, vaya a la configuración de filamento para editar sus perfiles si lo necesita.\n" +"Tenga en cuenta que la temperatura de la boquilla, la temperatura de la cama caliente, y la velocidad volumétrica máxima tienen un impacto significativo en la calidad de impresión. Por favor, ajústelas con cuidado." msgid "Printer Setting" -msgstr "" +msgstr "Ajustes de Impresora" msgid "Export Configs" -msgstr "" +msgstr "Configuración de Exportación" msgid "Printer config bundle(.bbscfg)" -msgstr "" +msgstr "Paquete de configuración de impresora(.bbscfg)" msgid "Filament bundle(.bbsflmt)" -msgstr "" +msgstr "Paquete de filamento(.bbsflmt)" msgid "Printer presets(.zip)" -msgstr "" +msgstr "Perfiles de Impresora(.zip)" msgid "Filament presets(.zip)" -msgstr "" +msgstr "Perfiles de Filamento(.zip)" msgid "Process presets(.zip)" -msgstr "" +msgstr "Perfiles de Proceso(.zip)" msgid "initialize fail" -msgstr "" +msgstr "fallo inicializando" msgid "add file fail" -msgstr "" +msgstr "fallo añadiendo el archivo" msgid "add bundle structure file fail" -msgstr "" +msgstr "fallo añadiendo paquete de estructura de archivo" msgid "finalize fail" -msgstr "" +msgstr "fallo finalizando" msgid "open zip written fail" -msgstr "" +msgstr "fallo escritura zip" msgid "Export successful" -msgstr "" +msgstr "Éxito de exportación" #, c-format, boost-format msgid "" "The '%s' folder already exists in the current directory. Do you want to clear it and rebuild it.\n" "If not, a time suffix will be added, and you can modify the name after creation." msgstr "" +"La carpeta '%s' ya existe en el directorio actual. ¿Desea borrarla y reescribirla?\n" +"Si no es así, se añadirá un sufijo de tiempo y podrá modificar el nombre después de la creación." msgid "" "Printer and all the filament&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" +"Impresora y todos los perfiles de filamento&proceso que pertenecen a la impresora. \n" +"Se puede compartir con otros." msgid "" "User's fillment preset set. \n" "Can be shared with others." msgstr "" +"Conjunto de perfiles de relleno del usuario. \n" +"Se puede compartir con otros." msgid "Only display printer names with changes to printer, filament, and process presets." -msgstr "" +msgstr "Mostrar sólo los nombres de impresora con cambios en los perfiles de impresora, filamento y proceso." msgid "Only display the filament names with changes to filament presets." -msgstr "" +msgstr "Mostrar sólo los nombres de impresora con cambios en los perfiles de impresora, filamento y proceso." msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." -msgstr "" +msgstr "Sólo se mostrarán los nombres de impresoras con perfiles de impresora de usuario, y cada perfil que elija se exportará como un archivo zip." msgid "" "Only the filament names with user filament presets will be displayed, \n" "and all user filament presets in each filament name you select will be exported as a zip." -msgstr "" +msgstr "Sólo se mostrarán los nombres de filamento con perfiles de filamento de usuario, y todos los perfiles de filamento de usuario de cada nombre de filamento que seleccione se exportarán como un archivo zip." msgid "" "Only printer names with changed process presets will be displayed, \n" "and all user process presets in each printer name you select will be exported as a zip." msgstr "" +"Sólo se mostrarán los nombres de impresoras con perfiles de procesos modificados, \n" +"y todos los perfiles de procesos de usuario de cada nombre de impresora que seleccione se exportarán como un archivo zip." msgid "Please select at least one printer or filament." -msgstr "" +msgstr "Seleccione al menos una impresora o filamento." msgid "Please select a type you want to export" -msgstr "" +msgstr "Seleccione el tipo que desea exportar" msgid "Edit Filament" -msgstr "" +msgstr "Editar Filamento" msgid "Filament presets under this filament" -msgstr "" +msgstr "Perfiles de filamento bajo este filamento" msgid "Note: If the only preset under this filament is deleted, the filament will be deleted after exiting the dialog." -msgstr "" +msgstr "Nota: Si el único perfil bajo este filamento es borrado, el filamento se borrará después de salir del diálogo." msgid "Presets inherited by other presets can not be deleted" -msgstr "" +msgstr "Los perfiles heredados de otros perfiles no pueden borrarse" msgid "The following presets inherits this preset." msgid_plural "The following preset inherits this preset." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "El siguiente perfil hereda de este perfil." +msgstr[1] "Los siguientes perfiles heredan de este perfil." msgid "Delete Preset" -msgstr "" +msgstr "Borrar Perfil" msgid "Are you sure to delete the selected preset?" -msgstr "" +msgstr "¿Está seguro de borrar el perfil seleccionado?" msgid "Delete preset" -msgstr "" +msgstr "Borrar perfil" msgid "+ Add Preset" -msgstr "" +msgstr "+ Añadir Perfil" msgid "Delete Filament" -msgstr "" +msgstr "Borrar Filamento" msgid "" "All the filament presets belong to this filament would be deleted. \n" "If you are using this filament on your printer, please reset the filament information for that slot." msgstr "" +"Se eliminarán todos los perfiles de filamento que pertenezcan a este filamento. \n" +"Si está utilizando este filamento en su impresora, restablezca la información del filamento para esa ranura." msgid "Delete filament" -msgstr "" +msgstr "Borrar filamento" msgid "Add Preset" -msgstr "" +msgstr "Añadir Perfil" msgid "Add preset for new printer" -msgstr "" +msgstr "Añadir perfil para nueva impresora" msgid "Copy preset from filament" -msgstr "" +msgstr "Copiar perfil desde filamento" msgid "The filament choice not find filament preset, please reselect it" -msgstr "" +msgstr "Perfil de filamento no encontrado, por favor, seleccione otro" msgid "Edit Preset" -msgstr "" +msgstr "Editar Perfil" msgid "For more information, please check out Wiki" -msgstr "" +msgstr "Para más información, consulte la Wiki" msgid "Collapse" -msgstr "" +msgstr "Colapsar" msgid "Daily Tips" -msgstr "" +msgstr "Consejos Diarios" msgid "Need select printer" msgstr "Necesario seleccionar impresora" @@ -10819,109 +10842,111 @@ msgstr "Ha fallado la conexión a impresoras conectadas a través del host de im #, c-format, boost-format msgid "Mismatched type of print host: %s" -msgstr "" +msgstr "Tipo de host de impresión no coincidente: %s" msgid "Connection to AstroBox works correctly." -msgstr "" +msgstr "La conexión a AstroBox funciona correctamente." msgid "Could not connect to AstroBox" -msgstr "" +msgstr "No se ha podido conectar con AstroBox" msgid "Note: AstroBox version at least 1.1.0 is required." -msgstr "" +msgstr "Nota: Se requiere la versión 1.1.0 de AstroBox como mínimo." msgid "Connection to Duet works correctly." -msgstr "" +msgstr "La conexión con Duet funciona correctamente." msgid "Could not connect to Duet" -msgstr "" +msgstr "No se puede conectar a Duet" msgid "Unknown error occured" -msgstr "" +msgstr "Se ha producido un error desconocido" msgid "Wrong password" -msgstr "" +msgstr "Contraseña incorrecta" msgid "Could not get resources to create a new connection" -msgstr "" +msgstr "No se han podido obtener recursos para crear una nueva conexión" msgid "Upload not enabled on FlashAir card." -msgstr "" +msgstr "La carga no está activada en la tarjeta FlashAir." msgid "Connection to FlashAir works correctly and upload is enabled." -msgstr "" +msgstr "La conexión a FlashAir funciona correctamente y la carga está activada." msgid "Could not connect to FlashAir" -msgstr "" +msgstr "No se ha podido conectar a FlashAir" msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." -msgstr "" +msgstr "Nota: Se requiere FlashAir con firmware 2.00.02 o más reciente y función de carga activada." msgid "Connection to MKS works correctly." -msgstr "" +msgstr "La conexión con MKS funciona correctamente." msgid "Could not connect to MKS" -msgstr "" +msgstr "No se ha podido conectar con MKS" msgid "Connection to OctoPrint works correctly." -msgstr "" +msgstr "La conexión con OctoPrint funciona correctamente." msgid "Could not connect to OctoPrint" -msgstr "" +msgstr "No se ha podido conectar con OctoPrint" msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "" +msgstr "Nota: Se requiere una versión de OctoPrint al menos 1.1.0." msgid "Connection to Prusa SL1 / SL1S works correctly." -msgstr "" +msgstr "La conexión a Prusa SL1 / SL1S funciona correctamente." msgid "Could not connect to Prusa SLA" -msgstr "" +msgstr "No se ha podido conectar con Prusa SLA" msgid "Connection to PrusaLink works correctly." -msgstr "" +msgstr "La conexión a PrusaLink funciona correctamente." msgid "Could not connect to PrusaLink" -msgstr "" +msgstr "No se pudo conectar a PrusaLink" msgid "Storages found" -msgstr "" +msgstr "Almacenes encontrados" #. TRN %1% = storage path #, boost-format msgid "%1% : read only" -msgstr "" +msgstr "%1% : sólo lectura" #. TRN %1% = storage path #, boost-format msgid "%1% : no free space" -msgstr "" +msgstr "%1% : no hay espacio libre" #. TRN %1% = host #, boost-format msgid "Upload has failed. There is no suitable storage found at %1%." -msgstr "" +msgstr "La carga ha fallado. No se ha encontrado almacenamiento adecuado en %1%." msgid "Connection to Prusa Connect works correctly." -msgstr "" +msgstr "La conexión a Prusa Connect funciona correctamente." msgid "Could not connect to Prusa Connect" -msgstr "" +msgstr "No se pudo conectar a Prusa Connect" msgid "Connection to Repetier works correctly." -msgstr "" +msgstr "La conexión con Repetier funciona correctamente." msgid "Could not connect to Repetier" -msgstr "" +msgstr "No se ha podido conectar con Repetier" msgid "Note: Repetier version at least 0.90.0 is required." -msgstr "" +msgstr "Nota: Se requiere la versión 0.90.0 de Repetier como mínimo." #, boost-format msgid "" "HTTP status: %1%\n" "Message body: \"%2%\"" msgstr "" +"Estado HTTP: %1% \n" +"Cuerpo del mensaje: \"%2%\"" #, boost-format msgid "" @@ -10929,6 +10954,9 @@ msgid "" "Message body: \"%1%\"\n" "Error: \"%2%\"" msgstr "" +"Falló el análisis de la respuesta del host. \n" +"Cuerpo del mensaje: \"%1%\" \n" +"Error: \"%2%\"" #, boost-format msgid "" @@ -10936,48 +10964,65 @@ msgid "" "Message body: \"%1%\"\n" "Error: \"%2%\"" msgstr "" +"Fallo en la enumeración de impresoras host. \n" +"Cuerpo del mensaje: \"%1%\" \n" +"Error: \"%2%\"" #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" "Did you know that turning on precise wall can improve precision and layer consistency?" msgstr "" +"Pared precisa \n" +"¿Sabía que activar la pared precisa puede mejorar la precisión y la uniformidad de las capas?" #: resources/data/hints.ini: [hint:Sandwich mode] msgid "" "Sandwich mode\n" "Did you know that you can use sandwich mode (inner-outer-inner) to improve precision and layer consistency if your model doesn't have very steep overhangs?" msgstr "" +"Modo sándwich \n" +"¿Sabías que puedes utilizar el modo sándwich (interior-exterior-interior) para mejorar la precisión y la consistencia de las capas si tu modelo no tiene voladizos muy pronunciados?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" "Chamber temperature\n" "Did you know that OrcaSlicer supports chamber temperature?" msgstr "" +"Temperatura de la cámara \n" +"¿Sabía que OrcaSlicer admite la temperatura de la cámara?" #: resources/data/hints.ini: [hint:Calibration] msgid "" "Calibration\n" "Did you know that calibrating your printer can do wonders? Check out our beloved calibration solution in OrcaSlicer." msgstr "" +"Calibración \n" +"¿Sabías que calibrar tu impresora puede hacer maravillas? Echa un vistazo a nuestra querida solución de calibración en OrcaSlicer." #: resources/data/hints.ini: [hint:Auxiliary fan] msgid "" "Auxiliary fan\n" "Did you know that OrcaSlicer supports Auxiliary part cooling fan?" msgstr "" +"Ventilador auxiliar\n" +"¿Sabía que OrcaSlicer admite un ventilador auxiliar de refrigeración de piezas?" #: resources/data/hints.ini: [hint:Air filtration] msgid "" "Air filtration/Exhuast Fan\n" "Did you know that OrcaSlicer can support Air filtration/Exhuast Fan?" msgstr "" +"Filtración de aire/ventilador Exhuast \n" +"¿Sabías que OrcaSlicer admite filtración de aire/ventilador Exhuast?" #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" "Did you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations." msgstr "" +"Cómo utilizar los atajos de teclado \n" +"¿Sabías que Orca Slicer ofrece una amplia gama de atajos de teclado y operaciones de escenas 3D." #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -10992,6 +11037,8 @@ msgid "" "Fix Model\n" "Did you know that you can fix a corrupted 3D model to avoid a lot of slicing problems on the Windows system?" msgstr "" +"Arreglar modelo \n" +"¿Sabías que puedes arreglar un modelo 3D dañado para evitar muchos problemas de corte en el sistema Windows?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -11038,12 +11085,16 @@ msgid "" "Search Functionality\n" "Did you know that you use the Search tool to quickly find a specific Orca Slicer setting?" msgstr "" +"Funcionalidad de búsqueda \n" +"¿Sabía que puede utilizar la herramienta de búsqueda para encontrar rápidamente un ajuste específico de Orca Slicer?" #: resources/data/hints.ini: [hint:Simplify Model] msgid "" "Simplify Model\n" "Did you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model." msgstr "" +"Simplificar modelo \n" +"¿Sabía que puede reducir el número de triángulos de una malla utilizando la función Simplificar malla? Haga clic con el botón derecho del ratón en el modelo y seleccione Simplificar modelo." #: resources/data/hints.ini: [hint:Slicing Parameter Table] msgid "" @@ -11066,6 +11117,8 @@ msgid "" "Subtract a Part\n" "Did you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Orca Slicer." msgstr "" +"Sustraer una parte \n" +"¿Sabías que puedes sustraer una malla de otra utilizando el modificador Parte negativa? De esta forma puedes, por ejemplo, crear agujeros fácilmente redimensionables directamente en Orca Slicer." #: resources/data/hints.ini: [hint:STEP] msgid "" @@ -11101,8 +11154,7 @@ msgstr "" "Divide tus impresiones en planchas\n" "¿Sabías que puedes dividir un modelo con muchas piezas en bandejas individuales listas para imprimir? Esto simplificará el proceso de seguimiento de todas las piezas." -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer -#: Height] +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] msgid "" "Speed up your print with Adaptive Layer Height\n" "Did you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it out!" @@ -11174,12 +11226,13 @@ msgstr "" "Mejorar la resistencia\n" "¿Sabías que puedes utilizar más bucles de perímetro y mayor densidad de relleno de baja densidad para mejorar la resistencia del modelo?" -#: resources/data/hints.ini: [hint:When need to print with the printer door -#: opened] +#: resources/data/hints.ini: [hint:When need to print with the printer door opened] msgid "" "When need to print with the printer door opened\n" "Did you know that opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature. More info about this in the Wiki." msgstr "" +"Cuando es necesario imprimir con la puerta de la impresora abierta \n" +"¿Sabía usted que la apertura de la puerta de la impresora puede reducir la probabilidad de obstrucción del extrusor / hotend al imprimir filamento de baja temperatura con una temperatura más alta de la carcasa. Más información sobre esto en la Wiki." #: resources/data/hints.ini: [hint:Avoid warping] msgid "" From 01706eff847154a69504e00540ee50884e56acf2 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sat, 23 Dec 2023 15:02:06 +0800 Subject: [PATCH 17/66] Fix tutk logs location (#3209) (#3248) --- src/slic3r/GUI/GUI_App.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 0d4c1bcda7..7a6c7e3101 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -2107,6 +2107,9 @@ void GUI_App::init_app_config() if (!boost::filesystem::exists(data_dir_path)){ boost::filesystem::create_directory(data_dir_path); } + + // Change current dirtory of application + chdir(encode_path((Slic3r::data_dir() + "/log").c_str()).c_str()); } else { m_datadir_redefined = true; } From cc23ec66262f58405421c90d900e139d5b39c39b Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 23 Dec 2023 15:02:27 +0800 Subject: [PATCH 18/66] Add a new option "emit_machine_limits_to_gcode" (#3236) --- src/libslic3r/GCode.cpp | 4 ++-- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 8 ++++++++ src/libslic3r/PrintConfig.hpp | 2 ++ src/slic3r/GUI/Tab.cpp | 4 +++- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 8c0e8bb4f5..3b5034bdad 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -3026,7 +3026,8 @@ static bool custom_gcode_sets_temperature(const std::string &gcode, const int mc void GCode::print_machine_envelope(GCodeOutputStream &file, Print &print) { const auto flavor = print.config().gcode_flavor.value; - if (flavor == gcfMarlinLegacy || flavor == gcfMarlinFirmware) { + if ((flavor == gcfMarlinLegacy || flavor == gcfMarlinFirmware || flavor == gcfRepRapFirmware) && + print.config().emit_machine_limits_to_gcode.value == true) { int factor = flavor == gcfRepRapFirmware ? 60 : 1; // RRF M203 and M566 are in mm/min file.write_format("M201 X%d Y%d Z%d E%d\n", int(print.config().machine_max_acceleration_x.values.front() + 0.5), @@ -3069,7 +3070,6 @@ void GCode::print_machine_envelope(GCodeOutputStream &file, Print &print) print.config().machine_max_jerk_y.values.front() * factor, print.config().machine_max_jerk_z.values.front() * factor, print.config().machine_max_jerk_e.values.front() * factor); - } } diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 127dc7aa57..89f1f49812 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -878,7 +878,7 @@ static std::vector s_Preset_printer_options { "cooling_tube_retraction", "cooling_tube_length", "high_current_on_filament_swap", "parking_pos_retraction", "extra_loading_move", "purge_in_prime_tower", "enable_filament_ramming", "z_offset", - "disable_m73", "preferred_orientation" + "disable_m73", "preferred_orientation", "emit_machine_limits_to_gcode" }; static std::vector s_Preset_sla_print_options { diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index c3fafc6cb8..ae3df21c86 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2564,6 +2564,14 @@ def = this->add("filament_loading_speed", coFloats); def->mode = comDevelop; def->set_default_value(new ConfigOptionBool(false)); + def = this->add("emit_machine_limits_to_gcode", coBool); + def->label = L("Emit limits to G-code"); + def->category = L("Machine limits"); + def->tooltip = L("If enabled, the machine limits will be emitted to G-code file.\nThis option will be ignored if the g-code flavor is " + "set to Klipper."); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBool(true)); + def = this->add("machine_pause_gcode", coString); def->label = L("Pause G-code"); def->tooltip = L("This G-code will be used as a code for the pause print. User can insert pause G-code in gcode viewer"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 91993d3180..56fafb8b6e 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -907,6 +907,8 @@ PRINT_CONFIG_CLASS_DEFINE( PRINT_CONFIG_CLASS_DEFINE( MachineEnvelopeConfig, + // Orca: whether emit machine limits into the beginning of the G-code. + ((ConfigOptionBool, emit_machine_limits_to_gcode)) // M201 X... Y... Z... E... [mm/sec^2] ((ConfigOptionFloats, machine_max_acceleration_x)) ((ConfigOptionFloats, machine_max_acceleration_y)) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 402a7ebeda..c94c8771cb 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3684,6 +3684,8 @@ PageShp TabPrinter::build_kinematics_page() optgroup->append_line(line); } + auto optgroup = page->new_optgroup(L("Advanced"), "param_advanced"); + optgroup->append_single_option_line("emit_machine_limits_to_gcode"); const std::vector speed_axes{ "machine_max_speed_x", @@ -3691,7 +3693,7 @@ PageShp TabPrinter::build_kinematics_page() "machine_max_speed_z", "machine_max_speed_e" }; - auto optgroup = page->new_optgroup(L("Speed limitation"), "param_speed"); + optgroup = page->new_optgroup(L("Speed limitation"), "param_speed"); for (const std::string &speed_axis : speed_axes) { append_option_line(optgroup, speed_axis); } From 374f78c7689b375c9fe842a2d4b8807eab70f176 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 23 Dec 2023 17:44:09 +0800 Subject: [PATCH 19/66] Revert to WxWidgets 3.1.5 (#3249) * revert to WxWidgets 3.1.5 * update nanosvg unicode path --- deps/CMakeLists.txt | 1 - deps/wxWidgets/0001-wxWidget-fix.patch | 667 ++++ deps/wxWidgets/wxWidgets.cmake | 15 +- src/CMakeLists.txt | 5 +- src/nanosvg/README.txt | 1 + src/nanosvg/nanosvg.h | 3120 +++++++++++++++++ src/nanosvg/nanosvgrast.h | 1483 ++++++++ src/slic3r/CMakeLists.txt | 4 +- src/slic3r/GUI/AMSMaterialsSetting.cpp | 2 +- src/slic3r/GUI/AboutDialog.cpp | 12 +- src/slic3r/GUI/AmsMappingPopup.cpp | 14 +- src/slic3r/GUI/Auxiliary.cpp | 20 +- src/slic3r/GUI/BBLTopbar.cpp | 93 +- src/slic3r/GUI/BBLTopbar.hpp | 8 +- src/slic3r/GUI/BitmapCache.cpp | 463 +-- src/slic3r/GUI/BitmapCache.hpp | 38 +- src/slic3r/GUI/BitmapComboBox.cpp | 90 +- src/slic3r/GUI/BitmapComboBox.hpp | 17 +- src/slic3r/GUI/CalibrationPanel.cpp | 4 +- src/slic3r/GUI/CalibrationWizardPage.cpp | 14 +- .../GUI/CalibrationWizardPresetPage.cpp | 6 +- src/slic3r/GUI/CameraPopup.cpp | 8 +- src/slic3r/GUI/ConfigWizard.cpp | 28 +- src/slic3r/GUI/ConfigWizard_private.hpp | 2 +- src/slic3r/GUI/DragCanvas.cpp | 4 +- src/slic3r/GUI/ExtraRenderers.cpp | 24 +- src/slic3r/GUI/Field.cpp | 4 +- src/slic3r/GUI/GLTexture.cpp | 4 +- src/slic3r/GUI/GUI_App.cpp | 2 +- src/slic3r/GUI/GUI_Factories.cpp | 54 +- src/slic3r/GUI/GUI_Factories.hpp | 9 +- src/slic3r/GUI/GUI_ObjectLayers.cpp | 41 +- src/slic3r/GUI/GUI_ObjectList.cpp | 45 +- src/slic3r/GUI/GUI_ObjectList.hpp | 2 +- src/slic3r/GUI/GUI_ObjectSettings.cpp | 20 +- src/slic3r/GUI/GUI_ObjectSettings.hpp | 1 + src/slic3r/GUI/GUI_ObjectTable.cpp | 37 +- src/slic3r/GUI/GUI_ObjectTable.hpp | 18 +- src/slic3r/GUI/GUI_ObjectTableSettings.cpp | 4 +- src/slic3r/GUI/ImageGrid.cpp | 12 +- src/slic3r/GUI/KBShortcutsDialog.cpp | 2 +- src/slic3r/GUI/MainFrame.cpp | 7 +- src/slic3r/GUI/MediaFilePanel.cpp | 6 +- src/slic3r/GUI/ModelMall.cpp | 6 +- src/slic3r/GUI/MsgDialog.cpp | 6 +- src/slic3r/GUI/Notebook.cpp | 10 - src/slic3r/GUI/Notebook.hpp | 6 - src/slic3r/GUI/OG_CustomCtrl.cpp | 46 +- src/slic3r/GUI/OG_CustomCtrl.hpp | 2 +- src/slic3r/GUI/ObjectDataViewModel.cpp | 126 +- src/slic3r/GUI/ObjectDataViewModel.hpp | 41 +- src/slic3r/GUI/OptionsGroup.cpp | 3 +- src/slic3r/GUI/ParamsPanel.cpp | 14 +- src/slic3r/GUI/PhysicalPrinterDialog.cpp | 14 +- src/slic3r/GUI/PhysicalPrinterDialog.hpp | 2 +- src/slic3r/GUI/Plater.cpp | 51 +- src/slic3r/GUI/PresetComboBoxes.cpp | 205 +- src/slic3r/GUI/PresetComboBoxes.hpp | 22 +- src/slic3r/GUI/RecenterDialog.cpp | 6 +- src/slic3r/GUI/SavePresetDialog.cpp | 4 +- src/slic3r/GUI/Search.cpp | 12 +- src/slic3r/GUI/Search.hpp | 2 +- src/slic3r/GUI/SelectMachine.cpp | 78 +- src/slic3r/GUI/StatusPanel.cpp | 62 +- src/slic3r/GUI/SysInfoDialog.cpp | 4 +- src/slic3r/GUI/Tab.cpp | 118 +- src/slic3r/GUI/Tab.hpp | 6 + src/slic3r/GUI/TabButton.cpp | 10 +- src/slic3r/GUI/UnsavedChangesDialog.cpp | 54 +- src/slic3r/GUI/UpgradePanel.cpp | 20 +- src/slic3r/GUI/Widgets/AMSControl.cpp | 51 +- src/slic3r/GUI/Widgets/AxisCtrlButton.cpp | 3 +- src/slic3r/GUI/Widgets/Button.cpp | 10 +- src/slic3r/GUI/Widgets/CheckBox.cpp | 24 +- src/slic3r/GUI/Widgets/ComboBox.cpp | 39 +- src/slic3r/GUI/Widgets/ComboBox.hpp | 15 +- src/slic3r/GUI/Widgets/DropDown.cpp | 27 +- src/slic3r/GUI/Widgets/DropDown.hpp | 6 +- src/slic3r/GUI/Widgets/FanControl.cpp | 17 +- src/slic3r/GUI/Widgets/ImageSwitchButton.cpp | 16 +- src/slic3r/GUI/Widgets/RadioBox.cpp | 10 +- src/slic3r/GUI/Widgets/SideButton.cpp | 8 +- src/slic3r/GUI/Widgets/SideTools.cpp | 36 +- src/slic3r/GUI/Widgets/StaticLine.cpp | 12 +- src/slic3r/GUI/Widgets/StepCtrl.cpp | 30 +- src/slic3r/GUI/Widgets/SwitchButton.cpp | 14 +- src/slic3r/GUI/Widgets/TabCtrl.cpp | 11 +- src/slic3r/GUI/Widgets/TabCtrl.hpp | 3 + src/slic3r/GUI/Widgets/TempInput.cpp | 28 +- src/slic3r/GUI/Widgets/TextInput.cpp | 45 +- src/slic3r/GUI/Widgets/TextInput.hpp | 7 +- src/slic3r/GUI/WipeTowerDialog.cpp | 310 +- src/slic3r/GUI/WipeTowerDialog.hpp | 20 +- src/slic3r/GUI/wxExtensions.cpp | 281 +- src/slic3r/GUI/wxExtensions.hpp | 95 +- 95 files changed, 6841 insertions(+), 1618 deletions(-) create mode 100644 deps/wxWidgets/0001-wxWidget-fix.patch create mode 100644 src/nanosvg/README.txt create mode 100644 src/nanosvg/nanosvg.h create mode 100644 src/nanosvg/nanosvgrast.h diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 192552a6a3..66a858cf6f 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -236,7 +236,6 @@ endif () include(JPEG/JPEG.cmake) include(TIFF/TIFF.cmake) -include(NanoSVG/NanoSVG.cmake) include(wxWidgets/wxWidgets.cmake) include(OCCT/OCCT.cmake) include(FREETYPE/FREETYPE.cmake) diff --git a/deps/wxWidgets/0001-wxWidget-fix.patch b/deps/wxWidgets/0001-wxWidget-fix.patch new file mode 100644 index 0000000000..6bf276b7c0 --- /dev/null +++ b/deps/wxWidgets/0001-wxWidget-fix.patch @@ -0,0 +1,667 @@ +diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake +index 0bc4f934b9..479431a69c 100644 +--- a/build/cmake/init.cmake ++++ b/build/cmake/init.cmake +@@ -413,7 +413,11 @@ if(wxUSE_GUI) + else() + find_package(OpenGL) + if(WXGTK3 AND OpenGL_EGL_FOUND AND wxUSE_GLCANVAS_EGL) ++ if(UNIX AND NOT APPLE) ++ set(OPENGL_LIBRARIES OpenGL EGL) ++ else() + set(OPENGL_LIBRARIES OpenGL::OpenGL OpenGL::EGL) ++ endif() + find_package(WAYLANDEGL) + if(WAYLANDEGL_FOUND AND wxHAVE_GDK_WAYLAND) + list(APPEND OPENGL_LIBRARIES ${WAYLANDEGL_LIBRARIES}) +diff --git a/build/cmake/lib/webview/CMakeLists.txt b/build/cmake/lib/webview/CMakeLists.txt +index cc3298ff33..8adbeaea4f 100644 +--- a/build/cmake/lib/webview/CMakeLists.txt ++++ b/build/cmake/lib/webview/CMakeLists.txt +@@ -56,7 +56,7 @@ if(APPLE) + elseif(WXMSW) + if(wxUSE_WEBVIEW_EDGE) + # Update the following variables if updating WebView2 SDK +- set(WEBVIEW2_VERSION "1.0.705.50") ++ set(WEBVIEW2_VERSION "1.0.1418.22") + set(WEBVIEW2_URL "https://www.nuget.org/api/v2/package/Microsoft.Web.WebView2/${WEBVIEW2_VERSION}") +- set(WEBVIEW2_SHA256 "6a34bb553e18cfac7297b4031f3eac2558e439f8d16a45945c22945ac404105d") ++ set(WEBVIEW2_SHA256 "51d2ef56196e2a9d768a6843385bcb9c6baf9ed34b2603ddb074fb4995543a99") + +diff --git a/include/wx/fontutil.h b/include/wx/fontutil.h +index 09ad8c8ef3..3c0c2d8f7e 100644 +--- a/include/wx/fontutil.h ++++ b/include/wx/fontutil.h +@@ -294,7 +294,11 @@ public: + wxFontEncoding GetEncoding() const; + + void SetPointSize(int pointsize); +- void SetFractionalPointSize(double pointsize); ++ void SetFractionalPointSize(double pointsize ++#if defined(__WXMSW__) ++ , const wxWindow *window = nullptr ++#endif ++ ); + void SetPixelSize(const wxSize& pixelSize); + void SetStyle(wxFontStyle style); + void SetNumericWeight(int weight); +@@ -307,12 +311,19 @@ public: + + // Helper used in many ports: use the normal font size if the input is + // negative, as we handle -1 as meaning this for compatibility. +- void SetSizeOrDefault(double size) ++ void SetSizeOrDefault(double size ++#if defined(__WXMSW__) ++ , const wxWindow *window = nullptr ++#endif ++ ) + { + SetFractionalPointSize + ( + size < 0 ? wxNORMAL_FONT->GetFractionalPointSize() + : size ++#if defined(__WXMSW__) ++ ,window ++#endif + ); + } + +diff --git a/include/wx/gdicmn.h b/include/wx/gdicmn.h +index e29a77627c..dc48cf9451 100644 +--- a/include/wx/gdicmn.h ++++ b/include/wx/gdicmn.h +@@ -38,6 +38,7 @@ class WXDLLIMPEXP_FWD_CORE wxRegion; + class WXDLLIMPEXP_FWD_BASE wxString; + class WXDLLIMPEXP_FWD_CORE wxIconBundle; + class WXDLLIMPEXP_FWD_CORE wxPoint; ++class WXDLLIMPEXP_FWD_CORE wxWindow; + + // --------------------------------------------------------------------------- + // constants +@@ -1092,7 +1093,9 @@ extern int WXDLLIMPEXP_CORE wxDisplayDepth(); + + // get the display size + extern void WXDLLIMPEXP_CORE wxDisplaySize(int *width, int *height); ++extern void WXDLLIMPEXP_CORE wxDisplaySize(const wxWindow *window, int *width, int *height); + extern wxSize WXDLLIMPEXP_CORE wxGetDisplaySize(); ++extern wxSize WXDLLIMPEXP_CORE wxGetDisplaySize(const wxWindow *window); + extern void WXDLLIMPEXP_CORE wxDisplaySizeMM(int *width, int *height); + extern wxSize WXDLLIMPEXP_CORE wxGetDisplaySizeMM(); + extern wxSize WXDLLIMPEXP_CORE wxGetDisplayPPI(); +diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h +index d7a3890764..e4dee51d5a 100644 +--- a/include/wx/generic/grid.h ++++ b/include/wx/generic/grid.h +@@ -2951,9 +2951,11 @@ private: + wxGridWindow* gridWindow); + + // Update the width/height of the column/row being drag-resized. ++ //BBS: add cursor mode for DoGridDragResize's paremeters + void DoGridDragResize(const wxPoint& position, + const wxGridOperations& oper, +- wxGridWindow* gridWindow); ++ wxGridWindow* gridWindow, ++ CursorMode mode); + + // process different clicks on grid cells + void DoGridCellLeftDown(wxMouseEvent& event, +diff --git a/include/wx/msw/font.h b/include/wx/msw/font.h +index 0f9768b44e..094d774918 100644 +--- a/include/wx/msw/font.h ++++ b/include/wx/msw/font.h +@@ -23,7 +23,7 @@ public: + // ctors and such + wxFont() { } + +- wxFont(const wxFontInfo& info); ++ wxFont(const wxFontInfo& info, const wxWindow *window = nullptr); + + wxFont(int size, + wxFontFamily family, +diff --git a/include/wx/msw/tooltip.h b/include/wx/msw/tooltip.h +index 4c3be08cec..96fb378d01 100644 +--- a/include/wx/msw/tooltip.h ++++ b/include/wx/msw/tooltip.h +@@ -91,10 +91,10 @@ private: + // the one and only one tooltip control we use - never access it directly + // but use GetToolTipCtrl() which will create it when needed + static WXHWND ms_hwndTT; +- ++public: + // create the tooltip ctrl if it doesn't exist yet and return its HWND + static WXHWND GetToolTipCtrl(); +- ++private: + // to be used in wxModule for deleting tooltip ctrl window when exiting mainloop + static void DeleteToolTipCtrl(); + +diff --git a/include/wx/osx/app.h b/include/wx/osx/app.h +index 317a0ca96f..58014ec1d4 100644 +--- a/include/wx/osx/app.h ++++ b/include/wx/osx/app.h +@@ -161,7 +161,7 @@ private: + + public: + bool OSXInitWasCalled() { return m_inited; } +- void OSXStoreOpenFiles(const wxArrayString &files ) { m_openFiles = files ; } ++ virtual void OSXStoreOpenFiles(const wxArrayString &files ) { m_openFiles = files ; } + void OSXStorePrintFiles(const wxArrayString &files ) { m_printFiles = files ; } + void OSXStoreOpenURL(const wxString &url ) { m_getURL = url ; } + #endif +diff --git a/src/common/combocmn.cpp b/src/common/combocmn.cpp +index b61aac35bf..d12b745e8c 100644 +--- a/src/common/combocmn.cpp ++++ b/src/common/combocmn.cpp +@@ -2141,7 +2141,7 @@ void wxComboCtrlBase::CreatePopup() + #if !USES_GENERICTLW + m_winPopup = new wxComboPopupWindowBase2( this, wxNO_BORDER ); + #else +- int tlwFlags = wxNO_BORDER; ++ int tlwFlags = wxNO_BORDER | wxSTAY_ON_TOP; + #ifdef wxCC_GENERIC_TLW_IS_FRAME + tlwFlags |= wxFRAME_NO_TASKBAR; + #endif +@@ -2285,6 +2285,9 @@ void wxComboCtrlBase::ShowPopup() + + SetFocus(); + ++ //int displayIdx = wxDisplay::GetFromWindow(this); ++ //wxRect displayRect = wxDisplay(displayIdx != wxNOT_FOUND ? displayIdx : 0u).GetGeometry(); ++ + // Space above and below + int screenHeight; + wxPoint scrPos; +@@ -2407,9 +2410,13 @@ void wxComboCtrlBase::ShowPopup() + + int showFlags = CanDeferShow; + +- if ( spaceBelow < szp.y ) ++ int anchorSideVertical = m_anchorSide & (wxUP | wxDOWN); ++ if (// Pop up as asked for by the library user. ++ (anchorSideVertical & wxUP) || ++ // Automatic: Pop up if it does not fit down. ++ (anchorSideVertical == 0 && spaceBelow < szp.y )) + { +- popupY = scrPos.y - szp.y; ++ popupY = scrPos.y - szp.y + displayRect.GetTop(); + showFlags |= ShowAbove; + } + +diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp +index 1f5fd4d66b..14ea2f8ef1 100644 +--- a/src/common/datavcmn.cpp ++++ b/src/common/datavcmn.cpp +@@ -1322,7 +1322,11 @@ wxDataViewItem wxDataViewCtrlBase::GetSelection() const + + wxDataViewItemArray selections; + GetSelections(selections); +- return selections[0]; ++ // BBS ++ if (!selections.empty()) ++ return selections[0]; ++ else ++ return wxDataViewItem(0); + } + + namespace +diff --git a/src/common/dcbufcmn.cpp b/src/common/dcbufcmn.cpp +index 74958fce10..59844f4526 100644 +--- a/src/common/dcbufcmn.cpp ++++ b/src/common/dcbufcmn.cpp +@@ -82,9 +82,15 @@ private: + const double scale = dc ? dc->GetContentScaleFactor() : 1.0; + wxBitmap* const buffer = new wxBitmap; + ++#if __WXMSW__ + // we must always return a valid bitmap but creating a bitmap of + // size 0 would fail, so create a 1*1 bitmap in this case +- buffer->CreateScaled(wxMax(w, 1), wxMax(h, 1), -1, scale); ++ buffer->Create(wxMax(w, 1), wxMax(h, 1), 24); ++#else ++ // we must always return a valid bitmap but creating a bitmap of ++ // size 0 would fail, so create a 1*1 bitmap in this case ++ buffer->CreateScaled(wxMax(w, 1), wxMax(h, 1), -1, scale); ++#endif + + return buffer; + } +diff --git a/src/common/gdicmn.cpp b/src/common/gdicmn.cpp +index 20442bbc73..9a24951ec7 100644 +--- a/src/common/gdicmn.cpp ++++ b/src/common/gdicmn.cpp +@@ -863,11 +863,25 @@ void wxDisplaySize(int *width, int *height) + *height = size.y; + } + ++void wxDisplaySize(const wxWindow *window, int *width, int *height) ++{ ++ const wxSize size = wxGetDisplaySize(window); ++ if ( width ) ++ *width = size.x; ++ if ( height ) ++ *height = size.y; ++} ++ + wxSize wxGetDisplaySize() + { + return wxDisplay().GetGeometry().GetSize(); + } + ++wxSize wxGetDisplaySize(const wxWindow *window) ++{ ++ return window ? wxDisplay(window).GetGeometry().GetSize() : wxDisplay().GetGeometry().GetSize(); ++} ++ + void wxClientDisplayRect(int *x, int *y, int *width, int *height) + { + const wxRect rect = wxGetClientDisplayRect(); +diff --git a/src/common/intl.cpp b/src/common/intl.cpp +index 0b0d8798f4..7072fab18a 100644 +--- a/src/common/intl.cpp ++++ b/src/common/intl.cpp +@@ -1628,6 +1628,12 @@ GetInfoFromLCID(LCID lcid, + { + str = buf; + ++//FIXME Vojtech: We forcefully set the locales for a decimal point to "C", but this ++// is not possible for the Win32 locales, therefore there is a discrepancy. ++// It looks like we live with the discrepancy for at least half a year, so we will ++// suppress the assert until we fix Slic3r to properly switch to "C" locales just ++// for file import / export. ++#if 0 + // As we get our decimal point separator from Win32 and not the + // CRT there is a possibility of mismatch between them and this + // can easily happen if the user code called setlocale() +@@ -1641,6 +1647,7 @@ GetInfoFromLCID(LCID lcid, + "Decimal separator mismatch -- did you use setlocale()?" + "If so, use wxLocale to change the locale instead." + ); ++#endif + } + break; + +diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp +index 41fd4524cf..f4a15cb839 100644 +--- a/src/generic/grid.cpp ++++ b/src/generic/grid.cpp +@@ -3824,7 +3824,8 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event, wxGridRowLabelWindo + { + case WXGRID_CURSOR_RESIZE_ROW: + { +- DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow); ++ //BBS: add cursor mode for DoGridDragResize's paremeters ++ DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow, WXGRID_CURSOR_RESIZE_ROW); + } + break; + +@@ -4166,7 +4167,8 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event, wxGridColLabelWindo + switch ( m_cursorMode ) + { + case WXGRID_CURSOR_RESIZE_COL: +- DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow); ++ //BBS: add cursor mode for DoGridDragResize's paremeters ++ DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow, WXGRID_CURSOR_RESIZE_COL); + break; + + case WXGRID_CURSOR_SELECT_COL: +@@ -4708,11 +4710,13 @@ bool wxGrid::DoGridDragEvent(wxMouseEvent& event, + return DoGridCellDrag(event, coords, isFirstDrag); + + case WXGRID_CURSOR_RESIZE_ROW: +- DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow); ++ //BBS: add cursor mode for DoGridDragResize's paremeters ++ DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow, WXGRID_CURSOR_RESIZE_ROW); + break; + + case WXGRID_CURSOR_RESIZE_COL: +- DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow); ++ //BBS: add cursor mode for DoGridDragResize's paremeters ++ DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow, WXGRID_CURSOR_RESIZE_COL); + break; + + default: +@@ -4803,6 +4807,8 @@ wxGrid::DoGridCellLeftDown(wxMouseEvent& event, + case wxGridSelectCells: + case wxGridSelectRowsOrColumns: + // nothing to do in these cases ++ //BBS: select this cell when first click ++ m_selection->SelectBlock(coords.GetRow(), coords.GetCol(), coords.GetRow(), coords.GetCol(), event); + break; + + case wxGridSelectRows: +@@ -5044,9 +5050,11 @@ void wxGrid::ProcessGridCellMouseEvent(wxMouseEvent& event, wxGridWindow *eventG + } + } + ++//BBS: add cursor mode for DoGridDragResize's paremeters + void wxGrid::DoGridDragResize(const wxPoint& position, + const wxGridOperations& oper, +- wxGridWindow* gridWindow) ++ wxGridWindow* gridWindow, ++ CursorMode mode) + { + // Get the logical position from the physical one we're passed. + const wxPoint +@@ -5056,10 +5064,28 @@ void wxGrid::DoGridDragResize(const wxPoint& position, + // orthogonal direction. + const int linePos = oper.Dual().Select(logicalPos); + +- const int lineStart = oper.GetLineStartPos(this, m_dragRowOrCol); +- oper.SetLineSize(this, m_dragRowOrCol, ++ //BBS: add logic for resize multiplexed cols ++ if (mode == WXGRID_CURSOR_RESIZE_COL) { ++ int col_to_resize = m_dragRowOrCol; ++ int num_rows, num_cols; ++ this->GetCellSize(0, m_dragRowOrCol, &num_rows, &num_cols); ++ if (num_cols < 1) ++ col_to_resize = m_dragRowOrCol - 1; ++ ++ const int lineEnd = oper.GetLineEndPos(this, m_dragRowOrCol); ++ const int lineSize = oper.GetLineSize(this, col_to_resize); ++ int size = linePos - lineEnd + lineSize; ++ oper.SetLineSize(this, col_to_resize, ++ wxMax(size, ++ oper.GetMinimalLineSize(this, col_to_resize))); ++ } ++ else { ++ const int lineStart = oper.GetLineStartPos(this, m_dragRowOrCol); ++ ++ oper.SetLineSize(this, m_dragRowOrCol, + wxMax(linePos - lineStart, + oper.GetMinimalLineSize(this, m_dragRowOrCol))); ++ } + + // TODO: generate RESIZING event, see #10754, if the size has changed. + } +@@ -5082,7 +5108,8 @@ wxPoint wxGrid::GetPositionForResizeEvent(int width) const + + void wxGrid::DoEndDragResizeRow(const wxMouseEvent& event, wxGridWindow* gridWindow) + { +- DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow); ++ //BBS: add cursor mode for DoGridDragResize's paremeters ++ DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow, WXGRID_CURSOR_RESIZE_ROW); + + SendGridSizeEvent(wxEVT_GRID_ROW_SIZE, m_dragRowOrCol, -1, event); + +@@ -5091,7 +5118,8 @@ void wxGrid::DoEndDragResizeRow(const wxMouseEvent& event, wxGridWindow* gridWin + + void wxGrid::DoEndDragResizeCol(const wxMouseEvent& event, wxGridWindow* gridWindow) + { +- DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow); ++ //BBS: add cursor mode for DoGridDragResize's paremeters ++ DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow, WXGRID_CURSOR_RESIZE_COL); + + SendGridSizeEvent(wxEVT_GRID_COL_SIZE, -1, m_dragRowOrCol, event); + +@@ -5105,9 +5133,10 @@ void wxGrid::DoHeaderStartDragResizeCol(int col) + + void wxGrid::DoHeaderDragResizeCol(int width) + { ++ //BBS: add cursor mode for DoGridDragResize's paremeters + DoGridDragResize(GetPositionForResizeEvent(width), + wxGridColumnOperations(), +- m_gridWin); ++ m_gridWin, WXGRID_CURSOR_RESIZE_COL); + } + + void wxGrid::DoHeaderEndDragResizeCol(int width) +@@ -5891,6 +5920,10 @@ void wxGrid::OnKeyDown( wxKeyEvent& event ) + DisableCellEditControl(); + + MoveCursorDown( event.ShiftDown() ); ++ //BBS: select this cell when first click ++ m_selection->SelectBlock(m_currentCellCoords.GetRow(), m_currentCellCoords.GetCol(), ++ m_currentCellCoords.GetRow(), m_currentCellCoords.GetCol(), ++ event); + } + break; + +diff --git a/src/msw/bmpcbox.cpp b/src/msw/bmpcbox.cpp +index 0a2d167ad7..0aeba45ea9 100644 +--- a/src/msw/bmpcbox.cpp ++++ b/src/msw/bmpcbox.cpp +@@ -156,13 +156,20 @@ void wxBitmapComboBox::RecreateControl() + + wxComboBox::DoClear(); + +- HWND hwnd = GetHwnd(); ++ WNDPROC wndproc_edit = nullptr; ++ WinStruct combobox_info; ++ HWND hwnd = GetHwnd(); ++if (::GetComboBoxInfo(hwnd, &combobox_info)) ++ wndproc_edit = (WNDPROC)wxGetWindowProc(combobox_info.hwndItem); + DissociateHandle(); + ::DestroyWindow(hwnd); + + if ( !MSWCreateControl(wxT("COMBOBOX"), wxEmptyString, pos, size) ) + return; + ++if (::GetComboBoxInfo(GetHwnd(), &combobox_info)) ++ wxSetWindowProc(combobox_info.hwndItem, wndproc_edit); ++ + // initialize the controls contents + for ( i = 0; i < numItems; i++ ) + { +diff --git a/src/msw/font.cpp b/src/msw/font.cpp +index 0bd240d79f..d38b1b00f5 100644 +--- a/src/msw/font.cpp ++++ b/src/msw/font.cpp +@@ -54,7 +54,7 @@ static const int PITCH_MASK = FIXED_PITCH | VARIABLE_PITCH; + class WXDLLEXPORT wxFontRefData: public wxGDIRefData + { + public: +- wxFontRefData(const wxFontInfo& info = wxFontInfo()); ++ wxFontRefData(const wxFontInfo& info = wxFontInfo(), const wxWindow* window = nullptr); + + wxFontRefData(const wxNativeFontInfo& info, WXHFONT hFont = 0) + { +@@ -324,7 +324,7 @@ protected: + // wxFontRefData + // ---------------------------------------------------------------------------- + +-wxFontRefData::wxFontRefData(const wxFontInfo& info) ++wxFontRefData::wxFontRefData(const wxFontInfo& info, const wxWindow *window) + { + m_hFont = NULL; + +@@ -335,7 +335,7 @@ wxFontRefData::wxFontRefData(const wxFontInfo& info) + } + else + { +- m_nativeFontInfo.SetSizeOrDefault(info.GetFractionalPointSize()); ++ m_nativeFontInfo.SetSizeOrDefault(info.GetFractionalPointSize(), window); + } + + SetStyle(info.GetStyle()); +@@ -518,12 +518,12 @@ wxFontEncoding wxNativeFontInfo::GetEncoding() const + return wxGetFontEncFromCharSet(lf.lfCharSet); + } + +-void wxNativeFontInfo::SetFractionalPointSize(double pointSizeNew) ++void wxNativeFontInfo::SetFractionalPointSize(double pointSizeNew, const wxWindow *window) + { + // We don't have the correct DPI to use here, so use that of the + // primary screen and rely on WXAdjustToPPI() changing it later if + // necessary. +- const int ppi = ::GetDeviceCaps(ScreenHDC(), LOGPIXELSY); ++ const int ppi = window ? window->GetDPI().GetY() : ::GetDeviceCaps(ScreenHDC(), LOGPIXELSY); + lf.lfHeight = GetLogFontHeightAtPPI(pointSizeNew, ppi); + + pointSize = pointSizeNew; +@@ -812,9 +812,9 @@ wxFont::wxFont(const wxString& fontdesc) + (void)Create(info); + } + +-wxFont::wxFont(const wxFontInfo& info) ++wxFont::wxFont(const wxFontInfo& info, const wxWindow *window) + { +- m_refData = new wxFontRefData(info); ++ m_refData = new wxFontRefData(info, window); + } + + bool wxFont::Create(const wxNativeFontInfo& info, WXHFONT hFont) +diff --git a/src/msw/menuitem.cpp b/src/msw/menuitem.cpp +index 9bb397d472..30af7154a7 100644 +--- a/src/msw/menuitem.cpp ++++ b/src/msw/menuitem.cpp +@@ -368,6 +368,8 @@ void MenuDrawData::Init(wxWindow const* window) + // native menu uses small top margin for separator + if ( SeparatorMargin.cyTopHeight >= 2 ) + SeparatorMargin.cyTopHeight -= 2; ++ ++ SeparatorSize.cy = 0; + } + else + #endif // wxUSE_UXTHEME +diff --git a/src/msw/window.cpp b/src/msw/window.cpp +index eadc2f5700..f64fea4446 100644 +--- a/src/msw/window.cpp ++++ b/src/msw/window.cpp +@@ -4773,33 +4773,49 @@ static wxSize GetWindowDPI(HWND hwnd) + } + + /*extern*/ +-int wxGetSystemMetrics(int nIndex, const wxWindow* window) ++int wxGetSystemMetrics(int nIndex, const wxWindow* win) + { + #if wxUSE_DYNLIB_CLASS +- if ( !window ) +- window = wxApp::GetMainTopWindow(); ++ const wxWindow* window = (!win && wxTheApp) ? wxTheApp->GetTopWindow() : win; + +- if ( window ) ++ if (window) + { +- typedef int (WINAPI * GetSystemMetricsForDpi_t)(int nIndex, UINT dpi); +- static GetSystemMetricsForDpi_t s_pfnGetSystemMetricsForDpi = NULL; +- static bool s_initDone = false; +- +- if ( !s_initDone ) +- { +- wxLoadedDLL dllUser32("user32.dll"); +- wxDL_INIT_FUNC(s_pfn, GetSystemMetricsForDpi, dllUser32); +- s_initDone = true; ++#if 1 ++ if (window->GetHWND() && (nIndex == SM_CXSCREEN || nIndex == SM_CYSCREEN)) { ++ HDC hdc = GetDC(window->GetHWND()); ++#if 0 ++ double dim = GetDeviceCaps(hdc, nIndex == SM_CXSCREEN ? HORZRES : VERTRES); ++ ReleaseDC(window->GetHWND(), hdc); ++ wxSize dpi = window->GetDPI(); ++ dim *= 96.0 / (nIndex == SM_CXSCREEN ? dpi.x : dpi.y); ++ return int(dim + 0.5); ++#else ++ return int(GetDeviceCaps(hdc, nIndex == SM_CXSCREEN ? HORZRES : VERTRES)); ++#endif + } +- +- if ( s_pfnGetSystemMetricsForDpi ) ++ else ++#endif + { +- const int dpi = window->GetDPI().y; +- return s_pfnGetSystemMetricsForDpi(nIndex, (UINT)dpi); ++ typedef int (WINAPI * GetSystemMetricsForDpi_t)(int nIndex, UINT dpi); ++ static GetSystemMetricsForDpi_t s_pfnGetSystemMetricsForDpi = NULL; ++ static bool s_initDone = false; ++ ++ if ( !s_initDone ) ++ { ++ wxLoadedDLL dllUser32("user32.dll"); ++ wxDL_INIT_FUNC(s_pfn, GetSystemMetricsForDpi, dllUser32); ++ s_initDone = true; ++ } ++ ++ if ( s_pfnGetSystemMetricsForDpi ) ++ { ++ const int dpi = window->GetDPI().y; ++ return s_pfnGetSystemMetricsForDpi(nIndex, (UINT)dpi); ++ } + } + } + #else +- wxUnusedVar(window); ++ wxUnusedVar(win); + #endif // wxUSE_DYNLIB_CLASS + + return ::GetSystemMetrics(nIndex); +diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm +index 6ff0cc3088..4943f3ea38 100644 +--- a/src/osx/cocoa/dataview.mm ++++ b/src/osx/cocoa/dataview.mm +@@ -1734,12 +1734,22 @@ outlineView:(NSOutlineView*)outlineView + if ( !dvc->GetEventHandler()->ProcessEvent(eventDV) ) + [super keyDown:event]; + } +- else ++ //FIXME Vojtech's hack to get the accelerators assigned to the wxDataViewControl working. ++ else if (! implementation->DoHandleKeyEvent(event)) + { + [super keyDown:event]; // all other keys + } + } + ++//FIXME Vojtech: This is a workaround to get at least the "mouse move" events at the wxDataViewControl, ++// so we can show the tooltips. The "mouse move" events are being send only if the wxDataViewControl ++// has focus, which is a limitation of wxWidgets. We may grab focus on "mouse entry" though. ++- (void)mouseMoved:(NSEvent *)event ++{ ++if (! implementation->DoHandleMouseEvent(event)) ++ [super mouseMoved:event]; ++} ++ + // + // contextual menus + // +@@ -2672,12 +2682,22 @@ void wxCocoaDataViewControl::DoSetIndent(int indent) + + void wxCocoaDataViewControl::HitTest(const wxPoint& point, wxDataViewItem& item, wxDataViewColumn*& columnPtr) const + { +- NSPoint const nativePoint = wxToNSPoint((NSScrollView*) GetWXWidget(),point); ++ NSTableHeaderView *headerView = [m_OutlineView headerView]; ++ if (headerView && point.y < headerView.visibleRect.size.height) { ++ // The point is inside the header area. ++ columnPtr = NULL; ++ item = wxDataViewItem(); ++ return; ++ } ++ // Convert from the window coordinates to the virtual scrolled view coordinates. ++ NSScrollView *scrollView = [m_OutlineView enclosingScrollView]; ++ const NSRect &visibleRect = scrollView.contentView.visibleRect; ++ NSPoint const nativePoint = wxToNSPoint((NSScrollView*) GetWXWidget(), ++ wxPoint(point.x + visibleRect.origin.x, point.y + visibleRect.origin.y)); + + int indexColumn; + int indexRow; + +- + indexColumn = [m_OutlineView columnAtPoint:nativePoint]; + indexRow = [m_OutlineView rowAtPoint: nativePoint]; + if ((indexColumn >= 0) && (indexRow >= 0)) +diff --git a/src/osx/cocoa/settings.mm b/src/osx/cocoa/settings.mm +index de5f52860c..a9581174a4 100644 +--- a/src/osx/cocoa/settings.mm ++++ b/src/osx/cocoa/settings.mm +@@ -224,7 +224,7 @@ wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) + // ---------------------------------------------------------------------------- + + // Get a system metric, e.g. scrollbar size +-int wxSystemSettingsNative::GetMetric(wxSystemMetric index, const wxWindow* WXUNUSED(win)) ++int wxSystemSettingsNative::GetMetric(wxSystemMetric index, const wxWindow* win) + { + int value; + +@@ -259,11 +259,11 @@ int wxSystemSettingsNative::GetMetric(wxSystemMetric index, const wxWindow* WXUN + // TODO case wxSYS_WINDOWMIN_Y: + + case wxSYS_SCREEN_X: +- wxDisplaySize(&value, NULL); ++ wxDisplaySize(win, &value, NULL); + return value; + + case wxSYS_SCREEN_Y: +- wxDisplaySize(NULL, &value); ++ wxDisplaySize(win, NULL, &value); + return value; + + // TODO case wxSYS_FRAMESIZE_X: diff --git a/deps/wxWidgets/wxWidgets.cmake b/deps/wxWidgets/wxWidgets.cmake index 65aacfaad5..82c0f9f865 100644 --- a/deps/wxWidgets/wxWidgets.cmake +++ b/deps/wxWidgets/wxWidgets.cmake @@ -1,5 +1,4 @@ -set(_wx_git_tag v3.2.1) -set(_wx_patch_name 0001-patch-v3.2.1-for-OrcaSlicer.patch) +set(_wx_git_tag v3.1.5) set(_wx_toolkit "") set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=1") @@ -18,13 +17,13 @@ else () endif () if (MSVC) - set(_patch_cmd if not exist WXWIDGETS_PATCHED ( "${GIT_EXECUTABLE}" apply --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/${_wx_patch_name} && type nul > WXWIDGETS_PATCHED ) ) + set(_patch_cmd if not exist WXWIDGETS_PATCHED ( "${GIT_EXECUTABLE}" apply --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-wxWidget-fix.patch && type nul > WXWIDGETS_PATCHED ) ) else () - set(_patch_cmd test -f WXWIDGETS_PATCHED || ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/${_wx_patch_name} && touch WXWIDGETS_PATCHED) + set(_patch_cmd test -f WXWIDGETS_PATCHED || ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-wxWidget-fix.patch && touch WXWIDGETS_PATCHED) endif () if (CMAKE_SYSTEM_NAME STREQUAL "Linux") - set(_patch_cmd ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/${_wx_patch_name}) + set(_patch_cmd ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-wxWidget-fix.patch) endif () orcaslicer_add_cmake_project( @@ -32,7 +31,7 @@ orcaslicer_add_cmake_project( GIT_REPOSITORY "https://github.com/wxWidgets/wxWidgets" GIT_TAG ${_wx_git_tag} PATCH_COMMAND ${_patch_cmd} - DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG dep_NanoSVG + DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG CMAKE_ARGS -DwxBUILD_PRECOMP=ON ${_wx_toolkit} @@ -48,9 +47,7 @@ orcaslicer_add_cmake_project( -DwxUSE_WEBVIEW=ON ${_wx_edge} -DwxUSE_WEBVIEW_IE=OFF - -DwxUSE_NANOSVG=sys - -DwxUSE_NANOSVG_EXTERNAL=ON - -DwxUSE_REGEX=OFF + -DwxUSE_REGEX=builtin -DwxUSE_LIBXPM=builtin -DwxUSE_LIBSDL=OFF -DwxUSE_XTEST=OFF diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8c9ccc1309..71f6fe1f5f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -94,10 +94,7 @@ if (SLIC3R_GUI) # wrong libs for opengl in the link line and it does not link to it by himself. # libslic3r_gui will link to opengl anyway, so lets override wx list(FILTER wxWidgets_LIBRARIES EXCLUDE REGEX OpenGL) - - if (UNIX AND NOT APPLE) - list(APPEND wxWidgets_LIBRARIES X11 wayland-client wayland-egl EGL) - endif () + # list(REMOVE_ITEM wxWidgets_LIBRARIES oleacc) message(STATUS "wx libs: ${wxWidgets_LIBRARIES}") diff --git a/src/nanosvg/README.txt b/src/nanosvg/README.txt new file mode 100644 index 0000000000..290bf594a4 --- /dev/null +++ b/src/nanosvg/README.txt @@ -0,0 +1 @@ +Upstream source: https://github.com/SoftFever/nanosvg \ No newline at end of file diff --git a/src/nanosvg/nanosvg.h b/src/nanosvg/nanosvg.h new file mode 100644 index 0000000000..32b6bbbe9a --- /dev/null +++ b/src/nanosvg/nanosvg.h @@ -0,0 +1,3120 @@ +/* + * Copyright (c) 2013-14 Mikko Mononen memon@inside.org + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * The SVG parser is based on Anti-Grain Geometry 2.4 SVG example + * Copyright (C) 2002-2004 Maxim Shemanarev (McSeem) (http://www.antigrain.com/) + * + * Arc calculation code based on canvg (https://code.google.com/p/canvg/) + * + * Bounding box calculation based on http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html + * + */ + +#ifndef NANOSVG_H +#define NANOSVG_H + +#ifndef NANOSVG_CPLUSPLUS +#ifdef __cplusplus +extern "C" { +#endif +#endif + +// NanoSVG is a simple stupid single-header-file SVG parse. The output of the parser is a list of cubic bezier shapes. +// +// The library suits well for anything from rendering scalable icons in your editor application to prototyping a game. +// +// NanoSVG supports a wide range of SVG features, but something may be missing, feel free to create a pull request! +// +// The shapes in the SVG images are transformed by the viewBox and converted to specified units. +// That is, you should get the same looking data as your designed in your favorite app. +// +// NanoSVG can return the paths in few different units. For example if you want to render an image, you may choose +// to get the paths in pixels, or if you are feeding the data into a CNC-cutter, you may want to use millimeters. +// +// The units passed to NanoSVG should be one of: 'px', 'pt', 'pc' 'mm', 'cm', or 'in'. +// DPI (dots-per-inch) controls how the unit conversion is done. +// +// If you don't know or care about the units stuff, "px" and 96 should get you going. + + +/* Example Usage: + // Load SVG + NSVGimage* image; + image = nsvgParseFromFile("test.svg", "px", 96); + printf("size: %f x %f\n", image->width, image->height); + // Use... + for (NSVGshape *shape = image->shapes; shape != NULL; shape = shape->next) { + for (NSVGpath *path = shape->paths; path != NULL; path = path->next) { + for (int i = 0; i < path->npts-1; i += 3) { + float* p = &path->pts[i*2]; + drawCubicBez(p[0],p[1], p[2],p[3], p[4],p[5], p[6],p[7]); + } + } + } + // Delete + nsvgDelete(image); +*/ + +enum NSVGpaintType { + NSVG_PAINT_UNDEF = -1, + NSVG_PAINT_NONE = 0, + NSVG_PAINT_COLOR = 1, + NSVG_PAINT_LINEAR_GRADIENT = 2, + NSVG_PAINT_RADIAL_GRADIENT = 3 +}; + +enum NSVGspreadType { + NSVG_SPREAD_PAD = 0, + NSVG_SPREAD_REFLECT = 1, + NSVG_SPREAD_REPEAT = 2 +}; + +enum NSVGlineJoin { + NSVG_JOIN_MITER = 0, + NSVG_JOIN_ROUND = 1, + NSVG_JOIN_BEVEL = 2 +}; + +enum NSVGlineCap { + NSVG_CAP_BUTT = 0, + NSVG_CAP_ROUND = 1, + NSVG_CAP_SQUARE = 2 +}; + +enum NSVGfillRule { + NSVG_FILLRULE_NONZERO = 0, + NSVG_FILLRULE_EVENODD = 1 +}; + +enum NSVGflags { + NSVG_FLAGS_VISIBLE = 0x01 +}; + +typedef struct NSVGgradientStop { + unsigned int color; + float offset; +} NSVGgradientStop; + +typedef struct NSVGgradient { + float xform[6]; + char spread; + float fx, fy; + int nstops; + NSVGgradientStop stops[1]; +} NSVGgradient; + +typedef struct NSVGpaint { + signed char type; + union { + unsigned int color; + NSVGgradient* gradient; + }; +} NSVGpaint; + +typedef struct NSVGpath +{ + float* pts; // Cubic bezier points: x0,y0, [cpx1,cpx1,cpx2,cpy2,x1,y1], ... + int npts; // Total number of bezier points. + char closed; // Flag indicating if shapes should be treated as closed. + float bounds[4]; // Tight bounding box of the shape [minx,miny,maxx,maxy]. + struct NSVGpath* next; // Pointer to next path, or NULL if last element. +} NSVGpath; + +typedef struct NSVGshape +{ + char id[64]; // Optional 'id' attr of the shape or its group + NSVGpaint fill; // Fill paint + NSVGpaint stroke; // Stroke paint + float opacity; // Opacity of the shape. + float strokeWidth; // Stroke width (scaled). + float strokeDashOffset; // Stroke dash offset (scaled). + float strokeDashArray[8]; // Stroke dash array (scaled). + char strokeDashCount; // Number of dash values in dash array. + char strokeLineJoin; // Stroke join type. + char strokeLineCap; // Stroke cap type. + float miterLimit; // Miter limit + char fillRule; // Fill rule, see NSVGfillRule. + unsigned char flags; // Logical or of NSVG_FLAGS_* flags + float bounds[4]; // Tight bounding box of the shape [minx,miny,maxx,maxy]. + char fillGradient[64]; // Optional 'id' of fill gradient + char strokeGradient[64]; // Optional 'id' of stroke gradient + float xform[6]; // Root transformation for fill/stroke gradient + NSVGpath* paths; // Linked list of paths in the image. + struct NSVGshape* next; // Pointer to next shape, or NULL if last element. +} NSVGshape; + +typedef struct NSVGimage +{ + float width; // Width of the image. + float height; // Height of the image. + NSVGshape* shapes; // Linked list of shapes in the image. +} NSVGimage; + +// Parses SVG file from a file, returns SVG image as paths. +NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi); + +// Parses SVG file from a null terminated string, returns SVG image as paths. +// Important note: changes the string. +NSVGimage* nsvgParse(char* input, const char* units, float dpi); + +// Duplicates a path. +NSVGpath* nsvgDuplicatePath(NSVGpath* p); + +// Deletes an image. +void nsvgDelete(NSVGimage* image); + +#ifndef NANOSVG_CPLUSPLUS +#ifdef __cplusplus +} +#endif +#endif + +#ifdef NANOSVG_IMPLEMENTATION + +#include +#include +#include +#include + +#define NSVG_PI (3.14159265358979323846264338327f) +#define NSVG_KAPPA90 (0.5522847493f) // Length proportional to radius of a cubic bezier handle for 90deg arcs. + +#define NSVG_ALIGN_MIN 0 +#define NSVG_ALIGN_MID 1 +#define NSVG_ALIGN_MAX 2 +#define NSVG_ALIGN_NONE 0 +#define NSVG_ALIGN_MEET 1 +#define NSVG_ALIGN_SLICE 2 + +#define NSVG_NOTUSED(v) do { (void)(1 ? (void)0 : ( (void)(v) ) ); } while(0) +#define NSVG_RGB(r, g, b) (((unsigned int)r) | ((unsigned int)g << 8) | ((unsigned int)b << 16)) + +#ifdef _MSC_VER + #pragma warning (disable: 4996) // Switch off security warnings + #pragma warning (disable: 4100) // Switch off unreferenced formal parameter warnings + #ifdef __cplusplus + #define NSVG_INLINE inline + #else + #define NSVG_INLINE + #endif +#else + #define NSVG_INLINE inline +#endif + + +static int nsvg__isspace(char c) +{ + return strchr(" \t\n\v\f\r", c) != 0; +} + +static int nsvg__isdigit(char c) +{ + return c >= '0' && c <= '9'; +} + +static NSVG_INLINE float nsvg__minf(float a, float b) { return a < b ? a : b; } +static NSVG_INLINE float nsvg__maxf(float a, float b) { return a > b ? a : b; } + + +// Simple XML parser + +#define NSVG_XML_TAG 1 +#define NSVG_XML_CONTENT 2 +#define NSVG_XML_MAX_ATTRIBS 256 + +static void nsvg__parseContent(char* s, + void (*contentCb)(void* ud, const char* s), + void* ud) +{ + // Trim start white spaces + while (*s && nsvg__isspace(*s)) s++; + if (!*s) return; + + if (contentCb) + (*contentCb)(ud, s); +} + +static void nsvg__parseElement(char* s, + void (*startelCb)(void* ud, const char* el, const char** attr), + void (*endelCb)(void* ud, const char* el), + void* ud) +{ + const char* attr[NSVG_XML_MAX_ATTRIBS]; + int nattr = 0; + char* name; + int start = 0; + int end = 0; + char quote; + + // Skip white space after the '<' + while (*s && nsvg__isspace(*s)) s++; + + // Check if the tag is end tag + if (*s == '/') { + s++; + end = 1; + } else { + start = 1; + } + + // Skip comments, data and preprocessor stuff. + if (!*s || *s == '?' || *s == '!') + return; + + // Get tag name + name = s; + while (*s && !nsvg__isspace(*s)) s++; + if (*s) { *s++ = '\0'; } + + // Get attribs + while (!end && *s && nattr < NSVG_XML_MAX_ATTRIBS-3) { + char* name = NULL; + char* value = NULL; + + // Skip white space before the attrib name + while (*s && nsvg__isspace(*s)) s++; + if (!*s) break; + if (*s == '/') { + end = 1; + break; + } + name = s; + // Find end of the attrib name. + while (*s && !nsvg__isspace(*s) && *s != '=') s++; + if (*s) { *s++ = '\0'; } + // Skip until the beginning of the value. + while (*s && *s != '\"' && *s != '\'') s++; + if (!*s) break; + quote = *s; + s++; + // Store value and find the end of it. + value = s; + while (*s && *s != quote) s++; + if (*s) { *s++ = '\0'; } + + // Store only well formed attributes + if (name && value) { + attr[nattr++] = name; + attr[nattr++] = value; + } + } + + // List terminator + attr[nattr++] = 0; + attr[nattr++] = 0; + + // Call callbacks. + if (start && startelCb) + (*startelCb)(ud, name, attr); + if (end && endelCb) + (*endelCb)(ud, name); +} + +int nsvg__parseXML(char* input, + void (*startelCb)(void* ud, const char* el, const char** attr), + void (*endelCb)(void* ud, const char* el), + void (*contentCb)(void* ud, const char* s), + void* ud) +{ + char* s = input; + char* mark = s; + int state = NSVG_XML_CONTENT; + while (*s) { + if (*s == '<' && state == NSVG_XML_CONTENT) { + // Start of a tag + *s++ = '\0'; + nsvg__parseContent(mark, contentCb, ud); + mark = s; + state = NSVG_XML_TAG; + } else if (*s == '>' && state == NSVG_XML_TAG) { + // Start of a content or new tag. + *s++ = '\0'; + nsvg__parseElement(mark, startelCb, endelCb, ud); + mark = s; + state = NSVG_XML_CONTENT; + } else { + s++; + } + } + + return 1; +} + + +/* Simple SVG parser. */ + +#define NSVG_MAX_ATTR 128 + +enum NSVGgradientUnits { + NSVG_USER_SPACE = 0, + NSVG_OBJECT_SPACE = 1 +}; + +#define NSVG_MAX_DASHES 8 + +enum NSVGunits { + NSVG_UNITS_USER, + NSVG_UNITS_PX, + NSVG_UNITS_PT, + NSVG_UNITS_PC, + NSVG_UNITS_MM, + NSVG_UNITS_CM, + NSVG_UNITS_IN, + NSVG_UNITS_PERCENT, + NSVG_UNITS_EM, + NSVG_UNITS_EX +}; + +typedef struct NSVGcoordinate { + float value; + int units; +} NSVGcoordinate; + +typedef struct NSVGlinearData { + NSVGcoordinate x1, y1, x2, y2; +} NSVGlinearData; + +typedef struct NSVGradialData { + NSVGcoordinate cx, cy, r, fx, fy; +} NSVGradialData; + +typedef struct NSVGgradientData +{ + char id[64]; + char ref[64]; + signed char type; + union { + NSVGlinearData linear; + NSVGradialData radial; + }; + char spread; + char units; + float xform[6]; + int nstops; + NSVGgradientStop* stops; + struct NSVGgradientData* next; +} NSVGgradientData; + +typedef struct NSVGattrib +{ + char id[64]; + float xform[6]; + unsigned int fillColor; + unsigned int strokeColor; + float opacity; + float fillOpacity; + float strokeOpacity; + char fillGradient[64]; + char strokeGradient[64]; + float strokeWidth; + float strokeDashOffset; + float strokeDashArray[NSVG_MAX_DASHES]; + int strokeDashCount; + char strokeLineJoin; + char strokeLineCap; + float miterLimit; + char fillRule; + float fontSize; + unsigned int stopColor; + float stopOpacity; + float stopOffset; + char hasFill; + char hasStroke; + char visible; +} NSVGattrib; + +typedef struct NSVGparser +{ + NSVGattrib attr[NSVG_MAX_ATTR]; + int attrHead; + float* pts; + int npts; + int cpts; + NSVGpath* plist; + NSVGimage* image; + NSVGgradientData* gradients; + NSVGshape* shapesTail; + float viewMinx, viewMiny, viewWidth, viewHeight; + int alignX, alignY, alignType; + float dpi; + char pathFlag; + char defsFlag; +} NSVGparser; + +static void nsvg__xformIdentity(float* t) +{ + t[0] = 1.0f; t[1] = 0.0f; + t[2] = 0.0f; t[3] = 1.0f; + t[4] = 0.0f; t[5] = 0.0f; +} + +static void nsvg__xformSetTranslation(float* t, float tx, float ty) +{ + t[0] = 1.0f; t[1] = 0.0f; + t[2] = 0.0f; t[3] = 1.0f; + t[4] = tx; t[5] = ty; +} + +static void nsvg__xformSetScale(float* t, float sx, float sy) +{ + t[0] = sx; t[1] = 0.0f; + t[2] = 0.0f; t[3] = sy; + t[4] = 0.0f; t[5] = 0.0f; +} + +static void nsvg__xformSetSkewX(float* t, float a) +{ + t[0] = 1.0f; t[1] = 0.0f; + t[2] = tanf(a); t[3] = 1.0f; + t[4] = 0.0f; t[5] = 0.0f; +} + +static void nsvg__xformSetSkewY(float* t, float a) +{ + t[0] = 1.0f; t[1] = tanf(a); + t[2] = 0.0f; t[3] = 1.0f; + t[4] = 0.0f; t[5] = 0.0f; +} + +static void nsvg__xformSetRotation(float* t, float a) +{ + float cs = cosf(a), sn = sinf(a); + t[0] = cs; t[1] = sn; + t[2] = -sn; t[3] = cs; + t[4] = 0.0f; t[5] = 0.0f; +} + +static void nsvg__xformMultiply(float* t, float* s) +{ + float t0 = t[0] * s[0] + t[1] * s[2]; + float t2 = t[2] * s[0] + t[3] * s[2]; + float t4 = t[4] * s[0] + t[5] * s[2] + s[4]; + t[1] = t[0] * s[1] + t[1] * s[3]; + t[3] = t[2] * s[1] + t[3] * s[3]; + t[5] = t[4] * s[1] + t[5] * s[3] + s[5]; + t[0] = t0; + t[2] = t2; + t[4] = t4; +} + +static void nsvg__xformInverse(float* inv, float* t) +{ + double invdet, det = (double)t[0] * t[3] - (double)t[2] * t[1]; + if (det > -1e-6 && det < 1e-6) { + nsvg__xformIdentity(t); + return; + } + invdet = 1.0 / det; + inv[0] = (float)(t[3] * invdet); + inv[2] = (float)(-t[2] * invdet); + inv[4] = (float)(((double)t[2] * t[5] - (double)t[3] * t[4]) * invdet); + inv[1] = (float)(-t[1] * invdet); + inv[3] = (float)(t[0] * invdet); + inv[5] = (float)(((double)t[1] * t[4] - (double)t[0] * t[5]) * invdet); +} + +static void nsvg__xformPremultiply(float* t, float* s) +{ + float s2[6]; + memcpy(s2, s, sizeof(float)*6); + nsvg__xformMultiply(s2, t); + memcpy(t, s2, sizeof(float)*6); +} + +static void nsvg__xformPoint(float* dx, float* dy, float x, float y, float* t) +{ + *dx = x*t[0] + y*t[2] + t[4]; + *dy = x*t[1] + y*t[3] + t[5]; +} + +static void nsvg__xformVec(float* dx, float* dy, float x, float y, float* t) +{ + *dx = x*t[0] + y*t[2]; + *dy = x*t[1] + y*t[3]; +} + +#define NSVG_EPSILON (1e-12) + +static int nsvg__ptInBounds(float* pt, float* bounds) +{ + return pt[0] >= bounds[0] && pt[0] <= bounds[2] && pt[1] >= bounds[1] && pt[1] <= bounds[3]; +} + + +static double nsvg__evalBezier(double t, double p0, double p1, double p2, double p3) +{ + double it = 1.0-t; + return it*it*it*p0 + 3.0*it*it*t*p1 + 3.0*it*t*t*p2 + t*t*t*p3; +} + +static void nsvg__curveBounds(float* bounds, float* curve) +{ + int i, j, count; + double roots[2], a, b, c, b2ac, t, v; + float* v0 = &curve[0]; + float* v1 = &curve[2]; + float* v2 = &curve[4]; + float* v3 = &curve[6]; + + // Start the bounding box by end points + bounds[0] = nsvg__minf(v0[0], v3[0]); + bounds[1] = nsvg__minf(v0[1], v3[1]); + bounds[2] = nsvg__maxf(v0[0], v3[0]); + bounds[3] = nsvg__maxf(v0[1], v3[1]); + + // Bezier curve fits inside the convex hull of it's control points. + // If control points are inside the bounds, we're done. + if (nsvg__ptInBounds(v1, bounds) && nsvg__ptInBounds(v2, bounds)) + return; + + // Add bezier curve inflection points in X and Y. + for (i = 0; i < 2; i++) { + a = -3.0 * v0[i] + 9.0 * v1[i] - 9.0 * v2[i] + 3.0 * v3[i]; + b = 6.0 * v0[i] - 12.0 * v1[i] + 6.0 * v2[i]; + c = 3.0 * v1[i] - 3.0 * v0[i]; + count = 0; + if (fabs(a) < NSVG_EPSILON) { + if (fabs(b) > NSVG_EPSILON) { + t = -c / b; + if (t > NSVG_EPSILON && t < 1.0-NSVG_EPSILON) + roots[count++] = t; + } + } else { + b2ac = b*b - 4.0*c*a; + if (b2ac > NSVG_EPSILON) { + t = (-b + sqrt(b2ac)) / (2.0 * a); + if (t > NSVG_EPSILON && t < 1.0-NSVG_EPSILON) + roots[count++] = t; + t = (-b - sqrt(b2ac)) / (2.0 * a); + if (t > NSVG_EPSILON && t < 1.0-NSVG_EPSILON) + roots[count++] = t; + } + } + for (j = 0; j < count; j++) { + v = nsvg__evalBezier(roots[j], v0[i], v1[i], v2[i], v3[i]); + bounds[0+i] = nsvg__minf(bounds[0+i], (float)v); + bounds[2+i] = nsvg__maxf(bounds[2+i], (float)v); + } + } +} + +static NSVGparser* nsvg__createParser(void) +{ + NSVGparser* p; + p = (NSVGparser*)malloc(sizeof(NSVGparser)); + if (p == NULL) goto error; + memset(p, 0, sizeof(NSVGparser)); + + p->image = (NSVGimage*)malloc(sizeof(NSVGimage)); + if (p->image == NULL) goto error; + memset(p->image, 0, sizeof(NSVGimage)); + + // Init style + nsvg__xformIdentity(p->attr[0].xform); + memset(p->attr[0].id, 0, sizeof p->attr[0].id); + p->attr[0].fillColor = NSVG_RGB(0,0,0); + p->attr[0].strokeColor = NSVG_RGB(0,0,0); + p->attr[0].opacity = 1; + p->attr[0].fillOpacity = 1; + p->attr[0].strokeOpacity = 1; + p->attr[0].stopOpacity = 1; + p->attr[0].strokeWidth = 1; + p->attr[0].strokeLineJoin = NSVG_JOIN_MITER; + p->attr[0].strokeLineCap = NSVG_CAP_BUTT; + p->attr[0].miterLimit = 4; + p->attr[0].fillRule = NSVG_FILLRULE_NONZERO; + p->attr[0].hasFill = 1; + p->attr[0].visible = 1; + + return p; + +error: + if (p) { + if (p->image) free(p->image); + free(p); + } + return NULL; +} + +static void nsvg__deletePaths(NSVGpath* path) +{ + while (path) { + NSVGpath *next = path->next; + if (path->pts != NULL) + free(path->pts); + free(path); + path = next; + } +} + +static void nsvg__deletePaint(NSVGpaint* paint) +{ + if (paint->type == NSVG_PAINT_LINEAR_GRADIENT || paint->type == NSVG_PAINT_RADIAL_GRADIENT) + free(paint->gradient); +} + +static void nsvg__deleteGradientData(NSVGgradientData* grad) +{ + NSVGgradientData* next; + while (grad != NULL) { + next = grad->next; + free(grad->stops); + free(grad); + grad = next; + } +} + +static void nsvg__deleteParser(NSVGparser* p) +{ + if (p != NULL) { + nsvg__deletePaths(p->plist); + nsvg__deleteGradientData(p->gradients); + nsvgDelete(p->image); + free(p->pts); + free(p); + } +} + +static void nsvg__resetPath(NSVGparser* p) +{ + p->npts = 0; +} + +static void nsvg__addPoint(NSVGparser* p, float x, float y) +{ + if (p->npts+1 > p->cpts) { + p->cpts = p->cpts ? p->cpts*2 : 8; + p->pts = (float*)realloc(p->pts, p->cpts*2*sizeof(float)); + if (!p->pts) return; + } + p->pts[p->npts*2+0] = x; + p->pts[p->npts*2+1] = y; + p->npts++; +} + +static void nsvg__moveTo(NSVGparser* p, float x, float y) +{ + if (p->npts > 0) { + p->pts[(p->npts-1)*2+0] = x; + p->pts[(p->npts-1)*2+1] = y; + } else { + nsvg__addPoint(p, x, y); + } +} + +static void nsvg__lineTo(NSVGparser* p, float x, float y) +{ + float px,py, dx,dy; + if (p->npts > 0) { + px = p->pts[(p->npts-1)*2+0]; + py = p->pts[(p->npts-1)*2+1]; + dx = x - px; + dy = y - py; + nsvg__addPoint(p, px + dx/3.0f, py + dy/3.0f); + nsvg__addPoint(p, x - dx/3.0f, y - dy/3.0f); + nsvg__addPoint(p, x, y); + } +} + +static void nsvg__cubicBezTo(NSVGparser* p, float cpx1, float cpy1, float cpx2, float cpy2, float x, float y) +{ + if (p->npts > 0) { + nsvg__addPoint(p, cpx1, cpy1); + nsvg__addPoint(p, cpx2, cpy2); + nsvg__addPoint(p, x, y); + } +} + +static NSVGattrib* nsvg__getAttr(NSVGparser* p) +{ + return &p->attr[p->attrHead]; +} + +static void nsvg__pushAttr(NSVGparser* p) +{ + if (p->attrHead < NSVG_MAX_ATTR-1) { + p->attrHead++; + memcpy(&p->attr[p->attrHead], &p->attr[p->attrHead-1], sizeof(NSVGattrib)); + } +} + +static void nsvg__popAttr(NSVGparser* p) +{ + if (p->attrHead > 0) + p->attrHead--; +} + +static float nsvg__actualOrigX(NSVGparser* p) +{ + return p->viewMinx; +} + +static float nsvg__actualOrigY(NSVGparser* p) +{ + return p->viewMiny; +} + +static float nsvg__actualWidth(NSVGparser* p) +{ + return p->viewWidth; +} + +static float nsvg__actualHeight(NSVGparser* p) +{ + return p->viewHeight; +} + +static float nsvg__actualLength(NSVGparser* p) +{ + float w = nsvg__actualWidth(p), h = nsvg__actualHeight(p); + return sqrtf(w*w + h*h) / sqrtf(2.0f); +} + +static float nsvg__convertToPixels(NSVGparser* p, NSVGcoordinate c, float orig, float length) +{ + NSVGattrib* attr = nsvg__getAttr(p); + switch (c.units) { + case NSVG_UNITS_USER: return c.value; + case NSVG_UNITS_PX: return c.value; + case NSVG_UNITS_PT: return c.value / 72.0f * p->dpi; + case NSVG_UNITS_PC: return c.value / 6.0f * p->dpi; + case NSVG_UNITS_MM: return c.value / 25.4f * p->dpi; + case NSVG_UNITS_CM: return c.value / 2.54f * p->dpi; + case NSVG_UNITS_IN: return c.value * p->dpi; + case NSVG_UNITS_EM: return c.value * attr->fontSize; + case NSVG_UNITS_EX: return c.value * attr->fontSize * 0.52f; // x-height of Helvetica. + case NSVG_UNITS_PERCENT: return orig + c.value / 100.0f * length; + default: return c.value; + } + return c.value; +} + +static NSVGgradientData* nsvg__findGradientData(NSVGparser* p, const char* id) +{ + NSVGgradientData* grad = p->gradients; + if (id == NULL || *id == '\0') + return NULL; + while (grad != NULL) { + if (strcmp(grad->id, id) == 0) + return grad; + grad = grad->next; + } + return NULL; +} + +static NSVGgradient* nsvg__createGradient(NSVGparser* p, const char* id, const float* localBounds, float *xform, signed char* paintType) +{ + NSVGgradientData* data = NULL; + NSVGgradientData* ref = NULL; + NSVGgradientStop* stops = NULL; + NSVGgradient* grad; + float ox, oy, sw, sh, sl; + int nstops = 0; + int refIter; + + data = nsvg__findGradientData(p, id); + if (data == NULL) return NULL; + + // TODO: use ref to fill in all unset values too. + ref = data; + refIter = 0; + while (ref != NULL) { + NSVGgradientData* nextRef = NULL; + if (stops == NULL && ref->stops != NULL) { + stops = ref->stops; + nstops = ref->nstops; + break; + } + nextRef = nsvg__findGradientData(p, ref->ref); + if (nextRef == ref) break; // prevent infite loops on malformed data + ref = nextRef; + refIter++; + if (refIter > 32) break; // prevent infite loops on malformed data + } + if (stops == NULL) return NULL; + + grad = (NSVGgradient*)malloc(sizeof(NSVGgradient) + sizeof(NSVGgradientStop)*(nstops-1)); + if (grad == NULL) return NULL; + + // The shape width and height. + if (data->units == NSVG_OBJECT_SPACE) { + ox = localBounds[0]; + oy = localBounds[1]; + sw = localBounds[2] - localBounds[0]; + sh = localBounds[3] - localBounds[1]; + } else { + ox = nsvg__actualOrigX(p); + oy = nsvg__actualOrigY(p); + sw = nsvg__actualWidth(p); + sh = nsvg__actualHeight(p); + } + sl = sqrtf(sw*sw + sh*sh) / sqrtf(2.0f); + + if (data->type == NSVG_PAINT_LINEAR_GRADIENT) { + float x1, y1, x2, y2, dx, dy; + x1 = nsvg__convertToPixels(p, data->linear.x1, ox, sw); + y1 = nsvg__convertToPixels(p, data->linear.y1, oy, sh); + x2 = nsvg__convertToPixels(p, data->linear.x2, ox, sw); + y2 = nsvg__convertToPixels(p, data->linear.y2, oy, sh); + // Calculate transform aligned to the line + dx = x2 - x1; + dy = y2 - y1; + grad->xform[0] = dy; grad->xform[1] = -dx; + grad->xform[2] = dx; grad->xform[3] = dy; + grad->xform[4] = x1; grad->xform[5] = y1; + } else { + float cx, cy, fx, fy, r; + cx = nsvg__convertToPixels(p, data->radial.cx, ox, sw); + cy = nsvg__convertToPixels(p, data->radial.cy, oy, sh); + fx = nsvg__convertToPixels(p, data->radial.fx, ox, sw); + fy = nsvg__convertToPixels(p, data->radial.fy, oy, sh); + r = nsvg__convertToPixels(p, data->radial.r, 0, sl); + // Calculate transform aligned to the circle + grad->xform[0] = r; grad->xform[1] = 0; + grad->xform[2] = 0; grad->xform[3] = r; + grad->xform[4] = cx; grad->xform[5] = cy; + grad->fx = fx / r; + grad->fy = fy / r; + } + + nsvg__xformMultiply(grad->xform, data->xform); + nsvg__xformMultiply(grad->xform, xform); + + grad->spread = data->spread; + memcpy(grad->stops, stops, nstops*sizeof(NSVGgradientStop)); + grad->nstops = nstops; + + *paintType = data->type; + + return grad; +} + +static float nsvg__getAverageScale(float* t) +{ + float sx = sqrtf(t[0]*t[0] + t[2]*t[2]); + float sy = sqrtf(t[1]*t[1] + t[3]*t[3]); + return (sx + sy) * 0.5f; +} + +static void nsvg__getLocalBounds(float* bounds, NSVGshape *shape, float* xform) +{ + NSVGpath* path; + float curve[4*2], curveBounds[4]; + int i, first = 1; + for (path = shape->paths; path != NULL; path = path->next) { + nsvg__xformPoint(&curve[0], &curve[1], path->pts[0], path->pts[1], xform); + for (i = 0; i < path->npts-1; i += 3) { + nsvg__xformPoint(&curve[2], &curve[3], path->pts[(i+1)*2], path->pts[(i+1)*2+1], xform); + nsvg__xformPoint(&curve[4], &curve[5], path->pts[(i+2)*2], path->pts[(i+2)*2+1], xform); + nsvg__xformPoint(&curve[6], &curve[7], path->pts[(i+3)*2], path->pts[(i+3)*2+1], xform); + nsvg__curveBounds(curveBounds, curve); + if (first) { + bounds[0] = curveBounds[0]; + bounds[1] = curveBounds[1]; + bounds[2] = curveBounds[2]; + bounds[3] = curveBounds[3]; + first = 0; + } else { + bounds[0] = nsvg__minf(bounds[0], curveBounds[0]); + bounds[1] = nsvg__minf(bounds[1], curveBounds[1]); + bounds[2] = nsvg__maxf(bounds[2], curveBounds[2]); + bounds[3] = nsvg__maxf(bounds[3], curveBounds[3]); + } + curve[0] = curve[6]; + curve[1] = curve[7]; + } + } +} + +static void nsvg__addShape(NSVGparser* p) +{ + NSVGattrib* attr = nsvg__getAttr(p); + float scale = 1.0f; + NSVGshape* shape; + NSVGpath* path; + int i; + + if (p->plist == NULL) + return; + + shape = (NSVGshape*)malloc(sizeof(NSVGshape)); + if (shape == NULL) goto error; + memset(shape, 0, sizeof(NSVGshape)); + + memcpy(shape->id, attr->id, sizeof shape->id); + memcpy(shape->fillGradient, attr->fillGradient, sizeof shape->fillGradient); + memcpy(shape->strokeGradient, attr->strokeGradient, sizeof shape->strokeGradient); + memcpy(shape->xform, attr->xform, sizeof shape->xform); + scale = nsvg__getAverageScale(attr->xform); + shape->strokeWidth = attr->strokeWidth * scale; + shape->strokeDashOffset = attr->strokeDashOffset * scale; + shape->strokeDashCount = (char)attr->strokeDashCount; + for (i = 0; i < attr->strokeDashCount; i++) + shape->strokeDashArray[i] = attr->strokeDashArray[i] * scale; + shape->strokeLineJoin = attr->strokeLineJoin; + shape->strokeLineCap = attr->strokeLineCap; + shape->miterLimit = attr->miterLimit; + shape->fillRule = attr->fillRule; + shape->opacity = attr->opacity; + + shape->paths = p->plist; + p->plist = NULL; + + // Calculate shape bounds + shape->bounds[0] = shape->paths->bounds[0]; + shape->bounds[1] = shape->paths->bounds[1]; + shape->bounds[2] = shape->paths->bounds[2]; + shape->bounds[3] = shape->paths->bounds[3]; + for (path = shape->paths->next; path != NULL; path = path->next) { + shape->bounds[0] = nsvg__minf(shape->bounds[0], path->bounds[0]); + shape->bounds[1] = nsvg__minf(shape->bounds[1], path->bounds[1]); + shape->bounds[2] = nsvg__maxf(shape->bounds[2], path->bounds[2]); + shape->bounds[3] = nsvg__maxf(shape->bounds[3], path->bounds[3]); + } + + // Set fill + if (attr->hasFill == 0) { + shape->fill.type = NSVG_PAINT_NONE; + } else if (attr->hasFill == 1) { + shape->fill.type = NSVG_PAINT_COLOR; + shape->fill.color = attr->fillColor; + shape->fill.color |= (unsigned int)(attr->fillOpacity*255) << 24; + } else if (attr->hasFill == 2) { + shape->fill.type = NSVG_PAINT_UNDEF; + } + + // Set stroke + if (attr->hasStroke == 0) { + shape->stroke.type = NSVG_PAINT_NONE; + } else if (attr->hasStroke == 1) { + shape->stroke.type = NSVG_PAINT_COLOR; + shape->stroke.color = attr->strokeColor; + shape->stroke.color |= (unsigned int)(attr->strokeOpacity*255) << 24; + } else if (attr->hasStroke == 2) { + shape->stroke.type = NSVG_PAINT_UNDEF; + } + + // Set flags + shape->flags = (attr->visible ? NSVG_FLAGS_VISIBLE : 0x00); + + // Add to tail + if (p->image->shapes == NULL) + p->image->shapes = shape; + else + p->shapesTail->next = shape; + p->shapesTail = shape; + + return; + +error: + if (shape) free(shape); +} + +static void nsvg__addPath(NSVGparser* p, char closed) +{ + NSVGattrib* attr = nsvg__getAttr(p); + NSVGpath* path = NULL; + float bounds[4]; + float* curve; + int i; + + if (p->npts < 4) + return; + + if (closed) + nsvg__lineTo(p, p->pts[0], p->pts[1]); + + // Expect 1 + N*3 points (N = number of cubic bezier segments). + if ((p->npts % 3) != 1) + return; + + path = (NSVGpath*)malloc(sizeof(NSVGpath)); + if (path == NULL) goto error; + memset(path, 0, sizeof(NSVGpath)); + + path->pts = (float*)malloc(p->npts*2*sizeof(float)); + if (path->pts == NULL) goto error; + path->closed = closed; + path->npts = p->npts; + + // Transform path. + for (i = 0; i < p->npts; ++i) + nsvg__xformPoint(&path->pts[i*2], &path->pts[i*2+1], p->pts[i*2], p->pts[i*2+1], attr->xform); + + // Find bounds + for (i = 0; i < path->npts-1; i += 3) { + curve = &path->pts[i*2]; + nsvg__curveBounds(bounds, curve); + if (i == 0) { + path->bounds[0] = bounds[0]; + path->bounds[1] = bounds[1]; + path->bounds[2] = bounds[2]; + path->bounds[3] = bounds[3]; + } else { + path->bounds[0] = nsvg__minf(path->bounds[0], bounds[0]); + path->bounds[1] = nsvg__minf(path->bounds[1], bounds[1]); + path->bounds[2] = nsvg__maxf(path->bounds[2], bounds[2]); + path->bounds[3] = nsvg__maxf(path->bounds[3], bounds[3]); + } + } + + path->next = p->plist; + p->plist = path; + + return; + +error: + if (path != NULL) { + if (path->pts != NULL) free(path->pts); + free(path); + } +} + +// We roll our own string to float because the std library one uses locale and messes things up. +static double nsvg__atof(const char* s) +{ + char* cur = (char*)s; + char* end = NULL; + double res = 0.0, sign = 1.0; + double intPart = 0.0, fracPart = 0.0; + char hasIntPart = 0, hasFracPart = 0; + + // Parse optional sign + if (*cur == '+') { + cur++; + } else if (*cur == '-') { + sign = -1; + cur++; + } + + // Parse integer part + if (nsvg__isdigit(*cur)) { + // Parse digit sequence +#ifdef _MSC_VER + intPart = (double)_strtoi64(cur, &end, 10); +#else + intPart = (double)strtoll(cur, &end, 10); +#endif + if (cur != end) { + res = intPart; + hasIntPart = 1; + cur = end; + } + } + + // Parse fractional part. + if (*cur == '.') { + cur++; // Skip '.' + if (nsvg__isdigit(*cur)) { + // Parse digit sequence +#ifdef _MSC_VER + fracPart = (double)_strtoi64(cur, &end, 10); +#else + fracPart = (double)strtoll(cur, &end, 10); +#endif + if (cur != end) { + res += fracPart / pow(10.0, (double)(end - cur)); + hasFracPart = 1; + cur = end; + } + } + } + + // A valid number should have integer or fractional part. + if (!hasIntPart && !hasFracPart) + return 0.0; + + // Parse optional exponent + if (*cur == 'e' || *cur == 'E') { + double expPart = 0.0; + cur++; // skip 'E' + expPart = (double)strtol(cur, &end, 10); // Parse digit sequence with sign + if (cur != end) { + res *= pow(10.0, expPart); + } + } + + return res * sign; +} + + +static const char* nsvg__parseNumber(const char* s, char* it, const int size) +{ + const int last = size-1; + int i = 0; + + // sign + if (*s == '-' || *s == '+') { + if (i < last) it[i++] = *s; + s++; + } + // integer part + while (*s && nsvg__isdigit(*s)) { + if (i < last) it[i++] = *s; + s++; + } + if (*s == '.') { + // decimal point + if (i < last) it[i++] = *s; + s++; + // fraction part + while (*s && nsvg__isdigit(*s)) { + if (i < last) it[i++] = *s; + s++; + } + } + // exponent + if ((*s == 'e' || *s == 'E') && (s[1] != 'm' && s[1] != 'x')) { + if (i < last) it[i++] = *s; + s++; + if (*s == '-' || *s == '+') { + if (i < last) it[i++] = *s; + s++; + } + while (*s && nsvg__isdigit(*s)) { + if (i < last) it[i++] = *s; + s++; + } + } + it[i] = '\0'; + + return s; +} + +static const char* nsvg__getNextPathItemWhenArcFlag(const char* s, char* it) +{ + it[0] = '\0'; + while (*s && (nsvg__isspace(*s) || *s == ',')) s++; + if (!*s) return s; + if (*s == '0' || *s == '1') { + it[0] = *s++; + it[1] = '\0'; + return s; + } + return s; +} + +static const char* nsvg__getNextPathItem(const char* s, char* it) +{ + it[0] = '\0'; + // Skip white spaces and commas + while (*s && (nsvg__isspace(*s) || *s == ',')) s++; + if (!*s) return s; + if (*s == '-' || *s == '+' || *s == '.' || nsvg__isdigit(*s)) { + s = nsvg__parseNumber(s, it, 64); + } else { + // Parse command + it[0] = *s++; + it[1] = '\0'; + return s; + } + + return s; +} + +static unsigned int nsvg__parseColorHex(const char* str) +{ + unsigned int r=0, g=0, b=0; + if (sscanf(str, "#%2x%2x%2x", &r, &g, &b) == 3 ) // 2 digit hex + return NSVG_RGB(r, g, b); + if (sscanf(str, "#%1x%1x%1x", &r, &g, &b) == 3 ) // 1 digit hex, e.g. #abc -> 0xccbbaa + return NSVG_RGB(r*17, g*17, b*17); // same effect as (r<<4|r), (g<<4|g), .. + return NSVG_RGB(128, 128, 128); +} + +// Parse rgb color. The pointer 'str' must point at "rgb(" (4+ characters). +// This function returns gray (rgb(128, 128, 128) == '#808080') on parse errors +// for backwards compatibility. Note: other image viewers return black instead. + +static unsigned int nsvg__parseColorRGB(const char* str) +{ + int i; + unsigned int rgbi[3]; + float rgbf[3]; + // try decimal integers first + if (sscanf(str, "rgb(%u, %u, %u)", &rgbi[0], &rgbi[1], &rgbi[2]) != 3) { + // integers failed, try percent values (float, locale independent) + const char delimiter[3] = {',', ',', ')'}; + str += 4; // skip "rgb(" + for (i = 0; i < 3; i++) { + while (*str && (nsvg__isspace(*str))) str++; // skip leading spaces + if (*str == '+') str++; // skip '+' (don't allow '-') + if (!*str) break; + rgbf[i] = nsvg__atof(str); + + // Note 1: it would be great if nsvg__atof() returned how many + // bytes it consumed but it doesn't. We need to skip the number, + // the '%' character, spaces, and the delimiter ',' or ')'. + + // Note 2: The following code does not allow values like "33.%", + // i.e. a decimal point w/o fractional part, but this is consistent + // with other image viewers, e.g. firefox, chrome, eog, gimp. + + while (*str && nsvg__isdigit(*str)) str++; // skip integer part + if (*str == '.') { + str++; + if (!nsvg__isdigit(*str)) break; // error: no digit after '.' + while (*str && nsvg__isdigit(*str)) str++; // skip fractional part + } + if (*str == '%') str++; else break; + while (nsvg__isspace(*str)) str++; + if (*str == delimiter[i]) str++; + else break; + } + if (i == 3) { + rgbi[0] = roundf(rgbf[0] * 2.55f); + rgbi[1] = roundf(rgbf[1] * 2.55f); + rgbi[2] = roundf(rgbf[2] * 2.55f); + } else { + rgbi[0] = rgbi[1] = rgbi[2] = 128; + } + } + // clip values as the CSS spec requires + for (i = 0; i < 3; i++) { + if (rgbi[i] > 255) rgbi[i] = 255; + } + return NSVG_RGB(rgbi[0], rgbi[1], rgbi[2]); +} + +typedef struct NSVGNamedColor { + const char* name; + unsigned int color; +} NSVGNamedColor; + +NSVGNamedColor nsvg__colors[] = { + + { "red", NSVG_RGB(255, 0, 0) }, + { "green", NSVG_RGB( 0, 128, 0) }, + { "blue", NSVG_RGB( 0, 0, 255) }, + { "yellow", NSVG_RGB(255, 255, 0) }, + { "cyan", NSVG_RGB( 0, 255, 255) }, + { "magenta", NSVG_RGB(255, 0, 255) }, + { "black", NSVG_RGB( 0, 0, 0) }, + { "grey", NSVG_RGB(128, 128, 128) }, + { "gray", NSVG_RGB(128, 128, 128) }, + { "white", NSVG_RGB(255, 255, 255) }, + +#ifdef NANOSVG_ALL_COLOR_KEYWORDS + { "aliceblue", NSVG_RGB(240, 248, 255) }, + { "antiquewhite", NSVG_RGB(250, 235, 215) }, + { "aqua", NSVG_RGB( 0, 255, 255) }, + { "aquamarine", NSVG_RGB(127, 255, 212) }, + { "azure", NSVG_RGB(240, 255, 255) }, + { "beige", NSVG_RGB(245, 245, 220) }, + { "bisque", NSVG_RGB(255, 228, 196) }, + { "blanchedalmond", NSVG_RGB(255, 235, 205) }, + { "blueviolet", NSVG_RGB(138, 43, 226) }, + { "brown", NSVG_RGB(165, 42, 42) }, + { "burlywood", NSVG_RGB(222, 184, 135) }, + { "cadetblue", NSVG_RGB( 95, 158, 160) }, + { "chartreuse", NSVG_RGB(127, 255, 0) }, + { "chocolate", NSVG_RGB(210, 105, 30) }, + { "coral", NSVG_RGB(255, 127, 80) }, + { "cornflowerblue", NSVG_RGB(100, 149, 237) }, + { "cornsilk", NSVG_RGB(255, 248, 220) }, + { "crimson", NSVG_RGB(220, 20, 60) }, + { "darkblue", NSVG_RGB( 0, 0, 139) }, + { "darkcyan", NSVG_RGB( 0, 139, 139) }, + { "darkgoldenrod", NSVG_RGB(184, 134, 11) }, + { "darkgray", NSVG_RGB(169, 169, 169) }, + { "darkgreen", NSVG_RGB( 0, 100, 0) }, + { "darkgrey", NSVG_RGB(169, 169, 169) }, + { "darkkhaki", NSVG_RGB(189, 183, 107) }, + { "darkmagenta", NSVG_RGB(139, 0, 139) }, + { "darkolivegreen", NSVG_RGB( 85, 107, 47) }, + { "darkorange", NSVG_RGB(255, 140, 0) }, + { "darkorchid", NSVG_RGB(153, 50, 204) }, + { "darkred", NSVG_RGB(139, 0, 0) }, + { "darksalmon", NSVG_RGB(233, 150, 122) }, + { "darkseagreen", NSVG_RGB(143, 188, 143) }, + { "darkslateblue", NSVG_RGB( 72, 61, 139) }, + { "darkslategray", NSVG_RGB( 47, 79, 79) }, + { "darkslategrey", NSVG_RGB( 47, 79, 79) }, + { "darkturquoise", NSVG_RGB( 0, 206, 209) }, + { "darkviolet", NSVG_RGB(148, 0, 211) }, + { "deeppink", NSVG_RGB(255, 20, 147) }, + { "deepskyblue", NSVG_RGB( 0, 191, 255) }, + { "dimgray", NSVG_RGB(105, 105, 105) }, + { "dimgrey", NSVG_RGB(105, 105, 105) }, + { "dodgerblue", NSVG_RGB( 30, 144, 255) }, + { "firebrick", NSVG_RGB(178, 34, 34) }, + { "floralwhite", NSVG_RGB(255, 250, 240) }, + { "forestgreen", NSVG_RGB( 34, 139, 34) }, + { "fuchsia", NSVG_RGB(255, 0, 255) }, + { "gainsboro", NSVG_RGB(220, 220, 220) }, + { "ghostwhite", NSVG_RGB(248, 248, 255) }, + { "gold", NSVG_RGB(255, 215, 0) }, + { "goldenrod", NSVG_RGB(218, 165, 32) }, + { "greenyellow", NSVG_RGB(173, 255, 47) }, + { "honeydew", NSVG_RGB(240, 255, 240) }, + { "hotpink", NSVG_RGB(255, 105, 180) }, + { "indianred", NSVG_RGB(205, 92, 92) }, + { "indigo", NSVG_RGB( 75, 0, 130) }, + { "ivory", NSVG_RGB(255, 255, 240) }, + { "khaki", NSVG_RGB(240, 230, 140) }, + { "lavender", NSVG_RGB(230, 230, 250) }, + { "lavenderblush", NSVG_RGB(255, 240, 245) }, + { "lawngreen", NSVG_RGB(124, 252, 0) }, + { "lemonchiffon", NSVG_RGB(255, 250, 205) }, + { "lightblue", NSVG_RGB(173, 216, 230) }, + { "lightcoral", NSVG_RGB(240, 128, 128) }, + { "lightcyan", NSVG_RGB(224, 255, 255) }, + { "lightgoldenrodyellow", NSVG_RGB(250, 250, 210) }, + { "lightgray", NSVG_RGB(211, 211, 211) }, + { "lightgreen", NSVG_RGB(144, 238, 144) }, + { "lightgrey", NSVG_RGB(211, 211, 211) }, + { "lightpink", NSVG_RGB(255, 182, 193) }, + { "lightsalmon", NSVG_RGB(255, 160, 122) }, + { "lightseagreen", NSVG_RGB( 32, 178, 170) }, + { "lightskyblue", NSVG_RGB(135, 206, 250) }, + { "lightslategray", NSVG_RGB(119, 136, 153) }, + { "lightslategrey", NSVG_RGB(119, 136, 153) }, + { "lightsteelblue", NSVG_RGB(176, 196, 222) }, + { "lightyellow", NSVG_RGB(255, 255, 224) }, + { "lime", NSVG_RGB( 0, 255, 0) }, + { "limegreen", NSVG_RGB( 50, 205, 50) }, + { "linen", NSVG_RGB(250, 240, 230) }, + { "maroon", NSVG_RGB(128, 0, 0) }, + { "mediumaquamarine", NSVG_RGB(102, 205, 170) }, + { "mediumblue", NSVG_RGB( 0, 0, 205) }, + { "mediumorchid", NSVG_RGB(186, 85, 211) }, + { "mediumpurple", NSVG_RGB(147, 112, 219) }, + { "mediumseagreen", NSVG_RGB( 60, 179, 113) }, + { "mediumslateblue", NSVG_RGB(123, 104, 238) }, + { "mediumspringgreen", NSVG_RGB( 0, 250, 154) }, + { "mediumturquoise", NSVG_RGB( 72, 209, 204) }, + { "mediumvioletred", NSVG_RGB(199, 21, 133) }, + { "midnightblue", NSVG_RGB( 25, 25, 112) }, + { "mintcream", NSVG_RGB(245, 255, 250) }, + { "mistyrose", NSVG_RGB(255, 228, 225) }, + { "moccasin", NSVG_RGB(255, 228, 181) }, + { "navajowhite", NSVG_RGB(255, 222, 173) }, + { "navy", NSVG_RGB( 0, 0, 128) }, + { "oldlace", NSVG_RGB(253, 245, 230) }, + { "olive", NSVG_RGB(128, 128, 0) }, + { "olivedrab", NSVG_RGB(107, 142, 35) }, + { "orange", NSVG_RGB(255, 165, 0) }, + { "orangered", NSVG_RGB(255, 69, 0) }, + { "orchid", NSVG_RGB(218, 112, 214) }, + { "palegoldenrod", NSVG_RGB(238, 232, 170) }, + { "palegreen", NSVG_RGB(152, 251, 152) }, + { "paleturquoise", NSVG_RGB(175, 238, 238) }, + { "palevioletred", NSVG_RGB(219, 112, 147) }, + { "papayawhip", NSVG_RGB(255, 239, 213) }, + { "peachpuff", NSVG_RGB(255, 218, 185) }, + { "peru", NSVG_RGB(205, 133, 63) }, + { "pink", NSVG_RGB(255, 192, 203) }, + { "plum", NSVG_RGB(221, 160, 221) }, + { "powderblue", NSVG_RGB(176, 224, 230) }, + { "purple", NSVG_RGB(128, 0, 128) }, + { "rosybrown", NSVG_RGB(188, 143, 143) }, + { "royalblue", NSVG_RGB( 65, 105, 225) }, + { "saddlebrown", NSVG_RGB(139, 69, 19) }, + { "salmon", NSVG_RGB(250, 128, 114) }, + { "sandybrown", NSVG_RGB(244, 164, 96) }, + { "seagreen", NSVG_RGB( 46, 139, 87) }, + { "seashell", NSVG_RGB(255, 245, 238) }, + { "sienna", NSVG_RGB(160, 82, 45) }, + { "silver", NSVG_RGB(192, 192, 192) }, + { "skyblue", NSVG_RGB(135, 206, 235) }, + { "slateblue", NSVG_RGB(106, 90, 205) }, + { "slategray", NSVG_RGB(112, 128, 144) }, + { "slategrey", NSVG_RGB(112, 128, 144) }, + { "snow", NSVG_RGB(255, 250, 250) }, + { "springgreen", NSVG_RGB( 0, 255, 127) }, + { "steelblue", NSVG_RGB( 70, 130, 180) }, + { "tan", NSVG_RGB(210, 180, 140) }, + { "teal", NSVG_RGB( 0, 128, 128) }, + { "thistle", NSVG_RGB(216, 191, 216) }, + { "tomato", NSVG_RGB(255, 99, 71) }, + { "turquoise", NSVG_RGB( 64, 224, 208) }, + { "violet", NSVG_RGB(238, 130, 238) }, + { "wheat", NSVG_RGB(245, 222, 179) }, + { "whitesmoke", NSVG_RGB(245, 245, 245) }, + { "yellowgreen", NSVG_RGB(154, 205, 50) }, +#endif +}; + +static unsigned int nsvg__parseColorName(const char* str) +{ + int i, ncolors = sizeof(nsvg__colors) / sizeof(NSVGNamedColor); + + for (i = 0; i < ncolors; i++) { + if (strcmp(nsvg__colors[i].name, str) == 0) { + return nsvg__colors[i].color; + } + } + + return NSVG_RGB(128, 128, 128); +} + +static unsigned int nsvg__parseColor(const char* str) +{ + size_t len = 0; + while(*str == ' ') ++str; + len = strlen(str); + if (len >= 1 && *str == '#') + return nsvg__parseColorHex(str); + else if (len >= 4 && str[0] == 'r' && str[1] == 'g' && str[2] == 'b' && str[3] == '(') + return nsvg__parseColorRGB(str); + return nsvg__parseColorName(str); +} + +static float nsvg__parseOpacity(const char* str) +{ + float val = nsvg__atof(str); + if (val < 0.0f) val = 0.0f; + if (val > 1.0f) val = 1.0f; + return val; +} + +static float nsvg__parseMiterLimit(const char* str) +{ + float val = nsvg__atof(str); + if (val < 0.0f) val = 0.0f; + return val; +} + +static int nsvg__parseUnits(const char* units) +{ + if (units[0] == 'p' && units[1] == 'x') + return NSVG_UNITS_PX; + else if (units[0] == 'p' && units[1] == 't') + return NSVG_UNITS_PT; + else if (units[0] == 'p' && units[1] == 'c') + return NSVG_UNITS_PC; + else if (units[0] == 'm' && units[1] == 'm') + return NSVG_UNITS_MM; + else if (units[0] == 'c' && units[1] == 'm') + return NSVG_UNITS_CM; + else if (units[0] == 'i' && units[1] == 'n') + return NSVG_UNITS_IN; + else if (units[0] == '%') + return NSVG_UNITS_PERCENT; + else if (units[0] == 'e' && units[1] == 'm') + return NSVG_UNITS_EM; + else if (units[0] == 'e' && units[1] == 'x') + return NSVG_UNITS_EX; + return NSVG_UNITS_USER; +} + +static int nsvg__isCoordinate(const char* s) +{ + // optional sign + if (*s == '-' || *s == '+') + s++; + // must have at least one digit, or start by a dot + return (nsvg__isdigit(*s) || *s == '.'); +} + +static NSVGcoordinate nsvg__parseCoordinateRaw(const char* str) +{ + NSVGcoordinate coord = {0, NSVG_UNITS_USER}; + char buf[64]; + coord.units = nsvg__parseUnits(nsvg__parseNumber(str, buf, 64)); + coord.value = nsvg__atof(buf); + return coord; +} + +static NSVGcoordinate nsvg__coord(float v, int units) +{ + NSVGcoordinate coord = {v, units}; + return coord; +} + +static float nsvg__parseCoordinate(NSVGparser* p, const char* str, float orig, float length) +{ + NSVGcoordinate coord = nsvg__parseCoordinateRaw(str); + return nsvg__convertToPixels(p, coord, orig, length); +} + +static int nsvg__parseTransformArgs(const char* str, float* args, int maxNa, int* na) +{ + const char* end; + const char* ptr; + char it[64]; + + *na = 0; + ptr = str; + while (*ptr && *ptr != '(') ++ptr; + if (*ptr == 0) + return 1; + end = ptr; + while (*end && *end != ')') ++end; + if (*end == 0) + return 1; + + while (ptr < end) { + if (*ptr == '-' || *ptr == '+' || *ptr == '.' || nsvg__isdigit(*ptr)) { + if (*na >= maxNa) return 0; + ptr = nsvg__parseNumber(ptr, it, 64); + args[(*na)++] = (float)nsvg__atof(it); + } else { + ++ptr; + } + } + return (int)(end - str); +} + + +static int nsvg__parseMatrix(float* xform, const char* str) +{ + float t[6]; + int na = 0; + int len = nsvg__parseTransformArgs(str, t, 6, &na); + if (na != 6) return len; + memcpy(xform, t, sizeof(float)*6); + return len; +} + +static int nsvg__parseTranslate(float* xform, const char* str) +{ + float args[2]; + float t[6]; + int na = 0; + int len = nsvg__parseTransformArgs(str, args, 2, &na); + if (na == 1) args[1] = 0.0; + + nsvg__xformSetTranslation(t, args[0], args[1]); + memcpy(xform, t, sizeof(float)*6); + return len; +} + +static int nsvg__parseScale(float* xform, const char* str) +{ + float args[2]; + int na = 0; + float t[6]; + int len = nsvg__parseTransformArgs(str, args, 2, &na); + if (na == 1) args[1] = args[0]; + nsvg__xformSetScale(t, args[0], args[1]); + memcpy(xform, t, sizeof(float)*6); + return len; +} + +static int nsvg__parseSkewX(float* xform, const char* str) +{ + float args[1]; + int na = 0; + float t[6]; + int len = nsvg__parseTransformArgs(str, args, 1, &na); + nsvg__xformSetSkewX(t, args[0]/180.0f*NSVG_PI); + memcpy(xform, t, sizeof(float)*6); + return len; +} + +static int nsvg__parseSkewY(float* xform, const char* str) +{ + float args[1]; + int na = 0; + float t[6]; + int len = nsvg__parseTransformArgs(str, args, 1, &na); + nsvg__xformSetSkewY(t, args[0]/180.0f*NSVG_PI); + memcpy(xform, t, sizeof(float)*6); + return len; +} + +static int nsvg__parseRotate(float* xform, const char* str) +{ + float args[3]; + int na = 0; + float m[6]; + float t[6]; + int len = nsvg__parseTransformArgs(str, args, 3, &na); + if (na == 1) + args[1] = args[2] = 0.0f; + nsvg__xformIdentity(m); + + if (na > 1) { + nsvg__xformSetTranslation(t, -args[1], -args[2]); + nsvg__xformMultiply(m, t); + } + + nsvg__xformSetRotation(t, args[0]/180.0f*NSVG_PI); + nsvg__xformMultiply(m, t); + + if (na > 1) { + nsvg__xformSetTranslation(t, args[1], args[2]); + nsvg__xformMultiply(m, t); + } + + memcpy(xform, m, sizeof(float)*6); + + return len; +} + +static void nsvg__parseTransform(float* xform, const char* str) +{ + float t[6]; + int len; + nsvg__xformIdentity(xform); + while (*str) + { + if (strncmp(str, "matrix", 6) == 0) + len = nsvg__parseMatrix(t, str); + else if (strncmp(str, "translate", 9) == 0) + len = nsvg__parseTranslate(t, str); + else if (strncmp(str, "scale", 5) == 0) + len = nsvg__parseScale(t, str); + else if (strncmp(str, "rotate", 6) == 0) + len = nsvg__parseRotate(t, str); + else if (strncmp(str, "skewX", 5) == 0) + len = nsvg__parseSkewX(t, str); + else if (strncmp(str, "skewY", 5) == 0) + len = nsvg__parseSkewY(t, str); + else{ + ++str; + continue; + } + if (len != 0) { + str += len; + } else { + ++str; + continue; + } + + nsvg__xformPremultiply(xform, t); + } +} + +static void nsvg__parseUrl(char* id, const char* str) +{ + int i = 0; + str += 4; // "url("; + if (*str && *str == '#') + str++; + while (i < 63 && *str && *str != ')') { + id[i] = *str++; + i++; + } + id[i] = '\0'; +} + +static char nsvg__parseLineCap(const char* str) +{ + if (strcmp(str, "butt") == 0) + return NSVG_CAP_BUTT; + else if (strcmp(str, "round") == 0) + return NSVG_CAP_ROUND; + else if (strcmp(str, "square") == 0) + return NSVG_CAP_SQUARE; + // TODO: handle inherit. + return NSVG_CAP_BUTT; +} + +static char nsvg__parseLineJoin(const char* str) +{ + if (strcmp(str, "miter") == 0) + return NSVG_JOIN_MITER; + else if (strcmp(str, "round") == 0) + return NSVG_JOIN_ROUND; + else if (strcmp(str, "bevel") == 0) + return NSVG_JOIN_BEVEL; + // TODO: handle inherit. + return NSVG_JOIN_MITER; +} + +static char nsvg__parseFillRule(const char* str) +{ + if (strcmp(str, "nonzero") == 0) + return NSVG_FILLRULE_NONZERO; + else if (strcmp(str, "evenodd") == 0) + return NSVG_FILLRULE_EVENODD; + // TODO: handle inherit. + return NSVG_FILLRULE_NONZERO; +} + +static const char* nsvg__getNextDashItem(const char* s, char* it) +{ + int n = 0; + it[0] = '\0'; + // Skip white spaces and commas + while (*s && (nsvg__isspace(*s) || *s == ',')) s++; + // Advance until whitespace, comma or end. + while (*s && (!nsvg__isspace(*s) && *s != ',')) { + if (n < 63) + it[n++] = *s; + s++; + } + it[n++] = '\0'; + return s; +} + +static int nsvg__parseStrokeDashArray(NSVGparser* p, const char* str, float* strokeDashArray) +{ + char item[64]; + int count = 0, i; + float sum = 0.0f; + + // Handle "none" + if (str[0] == 'n') + return 0; + + // Parse dashes + while (*str) { + str = nsvg__getNextDashItem(str, item); + if (!*item) break; + if (count < NSVG_MAX_DASHES) + strokeDashArray[count++] = fabsf(nsvg__parseCoordinate(p, item, 0.0f, nsvg__actualLength(p))); + } + + for (i = 0; i < count; i++) + sum += strokeDashArray[i]; + if (sum <= 1e-6f) + count = 0; + + return count; +} + +static void nsvg__parseStyle(NSVGparser* p, const char* str); + +static int nsvg__parseAttr(NSVGparser* p, const char* name, const char* value) +{ + float xform[6]; + NSVGattrib* attr = nsvg__getAttr(p); + if (!attr) return 0; + + if (strcmp(name, "style") == 0) { + nsvg__parseStyle(p, value); + } else if (strcmp(name, "display") == 0) { + if (strcmp(value, "none") == 0) + attr->visible = 0; + // Don't reset ->visible on display:inline, one display:none hides the whole subtree + + } else if (strcmp(name, "fill") == 0) { + if (strcmp(value, "none") == 0) { + attr->hasFill = 0; + } else if (strncmp(value, "url(", 4) == 0) { + attr->hasFill = 2; + nsvg__parseUrl(attr->fillGradient, value); + } else { + attr->hasFill = 1; + attr->fillColor = nsvg__parseColor(value); + } + } else if (strcmp(name, "opacity") == 0) { + attr->opacity = nsvg__parseOpacity(value); + } else if (strcmp(name, "fill-opacity") == 0) { + attr->fillOpacity = nsvg__parseOpacity(value); + } else if (strcmp(name, "stroke") == 0) { + if (strcmp(value, "none") == 0) { + attr->hasStroke = 0; + } else if (strncmp(value, "url(", 4) == 0) { + attr->hasStroke = 2; + nsvg__parseUrl(attr->strokeGradient, value); + } else { + attr->hasStroke = 1; + attr->strokeColor = nsvg__parseColor(value); + } + } else if (strcmp(name, "stroke-width") == 0) { + attr->strokeWidth = nsvg__parseCoordinate(p, value, 0.0f, nsvg__actualLength(p)); + } else if (strcmp(name, "stroke-dasharray") == 0) { + attr->strokeDashCount = nsvg__parseStrokeDashArray(p, value, attr->strokeDashArray); + } else if (strcmp(name, "stroke-dashoffset") == 0) { + attr->strokeDashOffset = nsvg__parseCoordinate(p, value, 0.0f, nsvg__actualLength(p)); + } else if (strcmp(name, "stroke-opacity") == 0) { + attr->strokeOpacity = nsvg__parseOpacity(value); + } else if (strcmp(name, "stroke-linecap") == 0) { + attr->strokeLineCap = nsvg__parseLineCap(value); + } else if (strcmp(name, "stroke-linejoin") == 0) { + attr->strokeLineJoin = nsvg__parseLineJoin(value); + } else if (strcmp(name, "stroke-miterlimit") == 0) { + attr->miterLimit = nsvg__parseMiterLimit(value); + } else if (strcmp(name, "fill-rule") == 0) { + attr->fillRule = nsvg__parseFillRule(value); + } else if (strcmp(name, "font-size") == 0) { + attr->fontSize = nsvg__parseCoordinate(p, value, 0.0f, nsvg__actualLength(p)); + } else if (strcmp(name, "transform") == 0) { + nsvg__parseTransform(xform, value); + nsvg__xformPremultiply(attr->xform, xform); + } else if (strcmp(name, "stop-color") == 0) { + attr->stopColor = nsvg__parseColor(value); + } else if (strcmp(name, "stop-opacity") == 0) { + attr->stopOpacity = nsvg__parseOpacity(value); + } else if (strcmp(name, "offset") == 0) { + attr->stopOffset = nsvg__parseCoordinate(p, value, 0.0f, 1.0f); + } else if (strcmp(name, "id") == 0) { + strncpy(attr->id, value, 63); + attr->id[63] = '\0'; + } else { + return 0; + } + return 1; +} + +static int nsvg__parseNameValue(NSVGparser* p, const char* start, const char* end) +{ + const char* str; + const char* val; + char name[512]; + char value[512]; + int n; + + str = start; + while (str < end && *str != ':') ++str; + + val = str; + + // Right Trim + while (str > start && (*str == ':' || nsvg__isspace(*str))) --str; + ++str; + + n = (int)(str - start); + if (n > 511) n = 511; + if (n) memcpy(name, start, n); + name[n] = 0; + + while (val < end && (*val == ':' || nsvg__isspace(*val))) ++val; + + n = (int)(end - val); + if (n > 511) n = 511; + if (n) memcpy(value, val, n); + value[n] = 0; + + return nsvg__parseAttr(p, name, value); +} + +static void nsvg__parseStyle(NSVGparser* p, const char* str) +{ + const char* start; + const char* end; + + while (*str) { + // Left Trim + while(*str && nsvg__isspace(*str)) ++str; + start = str; + while(*str && *str != ';') ++str; + end = str; + + // Right Trim + while (end > start && (*end == ';' || nsvg__isspace(*end))) --end; + ++end; + + nsvg__parseNameValue(p, start, end); + if (*str) ++str; + } +} + +static void nsvg__parseAttribs(NSVGparser* p, const char** attr) +{ + int i; + for (i = 0; attr[i]; i += 2) + { + if (strcmp(attr[i], "style") == 0) + nsvg__parseStyle(p, attr[i + 1]); + else + nsvg__parseAttr(p, attr[i], attr[i + 1]); + } +} + +static int nsvg__getArgsPerElement(char cmd) +{ + switch (cmd) { + case 'v': + case 'V': + case 'h': + case 'H': + return 1; + case 'm': + case 'M': + case 'l': + case 'L': + case 't': + case 'T': + return 2; + case 'q': + case 'Q': + case 's': + case 'S': + return 4; + case 'c': + case 'C': + return 6; + case 'a': + case 'A': + return 7; + case 'z': + case 'Z': + return 0; + } + return -1; +} + +static void nsvg__pathMoveTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) +{ + if (rel) { + *cpx += args[0]; + *cpy += args[1]; + } else { + *cpx = args[0]; + *cpy = args[1]; + } + nsvg__moveTo(p, *cpx, *cpy); +} + +static void nsvg__pathLineTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) +{ + if (rel) { + *cpx += args[0]; + *cpy += args[1]; + } else { + *cpx = args[0]; + *cpy = args[1]; + } + nsvg__lineTo(p, *cpx, *cpy); +} + +static void nsvg__pathHLineTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) +{ + if (rel) + *cpx += args[0]; + else + *cpx = args[0]; + nsvg__lineTo(p, *cpx, *cpy); +} + +static void nsvg__pathVLineTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) +{ + if (rel) + *cpy += args[0]; + else + *cpy = args[0]; + nsvg__lineTo(p, *cpx, *cpy); +} + +static void nsvg__pathCubicBezTo(NSVGparser* p, float* cpx, float* cpy, + float* cpx2, float* cpy2, float* args, int rel) +{ + float x2, y2, cx1, cy1, cx2, cy2; + + if (rel) { + cx1 = *cpx + args[0]; + cy1 = *cpy + args[1]; + cx2 = *cpx + args[2]; + cy2 = *cpy + args[3]; + x2 = *cpx + args[4]; + y2 = *cpy + args[5]; + } else { + cx1 = args[0]; + cy1 = args[1]; + cx2 = args[2]; + cy2 = args[3]; + x2 = args[4]; + y2 = args[5]; + } + + nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2); + + *cpx2 = cx2; + *cpy2 = cy2; + *cpx = x2; + *cpy = y2; +} + +static void nsvg__pathCubicBezShortTo(NSVGparser* p, float* cpx, float* cpy, + float* cpx2, float* cpy2, float* args, int rel) +{ + float x1, y1, x2, y2, cx1, cy1, cx2, cy2; + + x1 = *cpx; + y1 = *cpy; + if (rel) { + cx2 = *cpx + args[0]; + cy2 = *cpy + args[1]; + x2 = *cpx + args[2]; + y2 = *cpy + args[3]; + } else { + cx2 = args[0]; + cy2 = args[1]; + x2 = args[2]; + y2 = args[3]; + } + + cx1 = 2*x1 - *cpx2; + cy1 = 2*y1 - *cpy2; + + nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2); + + *cpx2 = cx2; + *cpy2 = cy2; + *cpx = x2; + *cpy = y2; +} + +static void nsvg__pathQuadBezTo(NSVGparser* p, float* cpx, float* cpy, + float* cpx2, float* cpy2, float* args, int rel) +{ + float x1, y1, x2, y2, cx, cy; + float cx1, cy1, cx2, cy2; + + x1 = *cpx; + y1 = *cpy; + if (rel) { + cx = *cpx + args[0]; + cy = *cpy + args[1]; + x2 = *cpx + args[2]; + y2 = *cpy + args[3]; + } else { + cx = args[0]; + cy = args[1]; + x2 = args[2]; + y2 = args[3]; + } + + // Convert to cubic bezier + cx1 = x1 + 2.0f/3.0f*(cx - x1); + cy1 = y1 + 2.0f/3.0f*(cy - y1); + cx2 = x2 + 2.0f/3.0f*(cx - x2); + cy2 = y2 + 2.0f/3.0f*(cy - y2); + + nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2); + + *cpx2 = cx; + *cpy2 = cy; + *cpx = x2; + *cpy = y2; +} + +static void nsvg__pathQuadBezShortTo(NSVGparser* p, float* cpx, float* cpy, + float* cpx2, float* cpy2, float* args, int rel) +{ + float x1, y1, x2, y2, cx, cy; + float cx1, cy1, cx2, cy2; + + x1 = *cpx; + y1 = *cpy; + if (rel) { + x2 = *cpx + args[0]; + y2 = *cpy + args[1]; + } else { + x2 = args[0]; + y2 = args[1]; + } + + cx = 2*x1 - *cpx2; + cy = 2*y1 - *cpy2; + + // Convert to cubix bezier + cx1 = x1 + 2.0f/3.0f*(cx - x1); + cy1 = y1 + 2.0f/3.0f*(cy - y1); + cx2 = x2 + 2.0f/3.0f*(cx - x2); + cy2 = y2 + 2.0f/3.0f*(cy - y2); + + nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2); + + *cpx2 = cx; + *cpy2 = cy; + *cpx = x2; + *cpy = y2; +} + +static float nsvg__sqr(float x) { return x*x; } +static float nsvg__vmag(float x, float y) { return sqrtf(x*x + y*y); } + +static float nsvg__vecrat(float ux, float uy, float vx, float vy) +{ + return (ux*vx + uy*vy) / (nsvg__vmag(ux,uy) * nsvg__vmag(vx,vy)); +} + +static float nsvg__vecang(float ux, float uy, float vx, float vy) +{ + float r = nsvg__vecrat(ux,uy, vx,vy); + if (r < -1.0f) r = -1.0f; + if (r > 1.0f) r = 1.0f; + return ((ux*vy < uy*vx) ? -1.0f : 1.0f) * acosf(r); +} + +static void nsvg__pathArcTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) +{ + // Ported from canvg (https://code.google.com/p/canvg/) + float rx, ry, rotx; + float x1, y1, x2, y2, cx, cy, dx, dy, d; + float x1p, y1p, cxp, cyp, s, sa, sb; + float ux, uy, vx, vy, a1, da; + float x, y, tanx, tany, a, px = 0, py = 0, ptanx = 0, ptany = 0, t[6]; + float sinrx, cosrx; + int fa, fs; + int i, ndivs; + float hda, kappa; + + rx = fabsf(args[0]); // y radius + ry = fabsf(args[1]); // x radius + rotx = args[2] / 180.0f * NSVG_PI; // x rotation angle + fa = fabsf(args[3]) > 1e-6 ? 1 : 0; // Large arc + fs = fabsf(args[4]) > 1e-6 ? 1 : 0; // Sweep direction + x1 = *cpx; // start point + y1 = *cpy; + if (rel) { // end point + x2 = *cpx + args[5]; + y2 = *cpy + args[6]; + } else { + x2 = args[5]; + y2 = args[6]; + } + + dx = x1 - x2; + dy = y1 - y2; + d = sqrtf(dx*dx + dy*dy); + if (d < 1e-6f || rx < 1e-6f || ry < 1e-6f) { + // The arc degenerates to a line + nsvg__lineTo(p, x2, y2); + *cpx = x2; + *cpy = y2; + return; + } + + sinrx = sinf(rotx); + cosrx = cosf(rotx); + + // Convert to center point parameterization. + // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes + // 1) Compute x1', y1' + x1p = cosrx * dx / 2.0f + sinrx * dy / 2.0f; + y1p = -sinrx * dx / 2.0f + cosrx * dy / 2.0f; + d = nsvg__sqr(x1p)/nsvg__sqr(rx) + nsvg__sqr(y1p)/nsvg__sqr(ry); + if (d > 1) { + d = sqrtf(d); + rx *= d; + ry *= d; + } + // 2) Compute cx', cy' + s = 0.0f; + sa = nsvg__sqr(rx)*nsvg__sqr(ry) - nsvg__sqr(rx)*nsvg__sqr(y1p) - nsvg__sqr(ry)*nsvg__sqr(x1p); + sb = nsvg__sqr(rx)*nsvg__sqr(y1p) + nsvg__sqr(ry)*nsvg__sqr(x1p); + if (sa < 0.0f) sa = 0.0f; + if (sb > 0.0f) + s = sqrtf(sa / sb); + if (fa == fs) + s = -s; + cxp = s * rx * y1p / ry; + cyp = s * -ry * x1p / rx; + + // 3) Compute cx,cy from cx',cy' + cx = (x1 + x2)/2.0f + cosrx*cxp - sinrx*cyp; + cy = (y1 + y2)/2.0f + sinrx*cxp + cosrx*cyp; + + // 4) Calculate theta1, and delta theta. + ux = (x1p - cxp) / rx; + uy = (y1p - cyp) / ry; + vx = (-x1p - cxp) / rx; + vy = (-y1p - cyp) / ry; + a1 = nsvg__vecang(1.0f,0.0f, ux,uy); // Initial angle + da = nsvg__vecang(ux,uy, vx,vy); // Delta angle + +// if (vecrat(ux,uy,vx,vy) <= -1.0f) da = NSVG_PI; +// if (vecrat(ux,uy,vx,vy) >= 1.0f) da = 0; + + if (fs == 0 && da > 0) + da -= 2 * NSVG_PI; + else if (fs == 1 && da < 0) + da += 2 * NSVG_PI; + + // Approximate the arc using cubic spline segments. + t[0] = cosrx; t[1] = sinrx; + t[2] = -sinrx; t[3] = cosrx; + t[4] = cx; t[5] = cy; + + // Split arc into max 90 degree segments. + // The loop assumes an iteration per end point (including start and end), this +1. + ndivs = (int)(fabsf(da) / (NSVG_PI*0.5f) + 1.0f); + hda = (da / (float)ndivs) / 2.0f; + // Fix for ticket #179: division by 0: avoid cotangens around 0 (infinite) + if ((hda < 1e-3f) && (hda > -1e-3f)) + hda *= 0.5f; + else + hda = (1.0f - cosf(hda)) / sinf(hda); + kappa = fabsf(4.0f / 3.0f * hda); + if (da < 0.0f) + kappa = -kappa; + + for (i = 0; i <= ndivs; i++) { + a = a1 + da * ((float)i/(float)ndivs); + dx = cosf(a); + dy = sinf(a); + nsvg__xformPoint(&x, &y, dx*rx, dy*ry, t); // position + nsvg__xformVec(&tanx, &tany, -dy*rx * kappa, dx*ry * kappa, t); // tangent + if (i > 0) + nsvg__cubicBezTo(p, px+ptanx,py+ptany, x-tanx, y-tany, x, y); + px = x; + py = y; + ptanx = tanx; + ptany = tany; + } + + *cpx = x2; + *cpy = y2; +} + +static void nsvg__parsePath(NSVGparser* p, const char** attr) +{ + const char* s = NULL; + char cmd = '\0'; + float args[10]; + int nargs; + int rargs = 0; + char initPoint; + float cpx, cpy, cpx2, cpy2; + const char* tmp[4]; + char closedFlag; + int i; + char item[64]; + + for (i = 0; attr[i]; i += 2) { + if (strcmp(attr[i], "d") == 0) { + s = attr[i + 1]; + } else { + tmp[0] = attr[i]; + tmp[1] = attr[i + 1]; + tmp[2] = 0; + tmp[3] = 0; + nsvg__parseAttribs(p, tmp); + } + } + + if (s) { + nsvg__resetPath(p); + cpx = 0; cpy = 0; + cpx2 = 0; cpy2 = 0; + initPoint = 0; + closedFlag = 0; + nargs = 0; + + while (*s) { + item[0] = '\0'; + if ((cmd == 'A' || cmd == 'a') && (nargs == 3 || nargs == 4)) + s = nsvg__getNextPathItemWhenArcFlag(s, item); + if (!*item) + s = nsvg__getNextPathItem(s, item); + if (!*item) break; + if (cmd != '\0' && nsvg__isCoordinate(item)) { + if (nargs < 10) + args[nargs++] = (float)nsvg__atof(item); + if (nargs >= rargs) { + switch (cmd) { + case 'm': + case 'M': + nsvg__pathMoveTo(p, &cpx, &cpy, args, cmd == 'm' ? 1 : 0); + // Moveto can be followed by multiple coordinate pairs, + // which should be treated as linetos. + cmd = (cmd == 'm') ? 'l' : 'L'; + rargs = nsvg__getArgsPerElement(cmd); + cpx2 = cpx; cpy2 = cpy; + initPoint = 1; + break; + case 'l': + case 'L': + nsvg__pathLineTo(p, &cpx, &cpy, args, cmd == 'l' ? 1 : 0); + cpx2 = cpx; cpy2 = cpy; + break; + case 'H': + case 'h': + nsvg__pathHLineTo(p, &cpx, &cpy, args, cmd == 'h' ? 1 : 0); + cpx2 = cpx; cpy2 = cpy; + break; + case 'V': + case 'v': + nsvg__pathVLineTo(p, &cpx, &cpy, args, cmd == 'v' ? 1 : 0); + cpx2 = cpx; cpy2 = cpy; + break; + case 'C': + case 'c': + nsvg__pathCubicBezTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 'c' ? 1 : 0); + break; + case 'S': + case 's': + nsvg__pathCubicBezShortTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 's' ? 1 : 0); + break; + case 'Q': + case 'q': + nsvg__pathQuadBezTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 'q' ? 1 : 0); + break; + case 'T': + case 't': + nsvg__pathQuadBezShortTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 't' ? 1 : 0); + break; + case 'A': + case 'a': + nsvg__pathArcTo(p, &cpx, &cpy, args, cmd == 'a' ? 1 : 0); + cpx2 = cpx; cpy2 = cpy; + break; + default: + if (nargs >= 2) { + cpx = args[nargs-2]; + cpy = args[nargs-1]; + cpx2 = cpx; cpy2 = cpy; + } + break; + } + nargs = 0; + } + } else { + cmd = item[0]; + if (cmd == 'M' || cmd == 'm') { + // Commit path. + if (p->npts > 0) + nsvg__addPath(p, closedFlag); + // Start new subpath. + nsvg__resetPath(p); + closedFlag = 0; + nargs = 0; + } else if (initPoint == 0) { + // Do not allow other commands until initial point has been set (moveTo called once). + cmd = '\0'; + } + if (cmd == 'Z' || cmd == 'z') { + closedFlag = 1; + // Commit path. + if (p->npts > 0) { + // Move current point to first point + cpx = p->pts[0]; + cpy = p->pts[1]; + cpx2 = cpx; cpy2 = cpy; + nsvg__addPath(p, closedFlag); + } + // Start new subpath. + nsvg__resetPath(p); + nsvg__moveTo(p, cpx, cpy); + closedFlag = 0; + nargs = 0; + } + rargs = nsvg__getArgsPerElement(cmd); + if (rargs == -1) { + // Command not recognized + cmd = '\0'; + rargs = 0; + } + } + } + // Commit path. + if (p->npts) + nsvg__addPath(p, closedFlag); + } + + nsvg__addShape(p); +} + +static void nsvg__parseRect(NSVGparser* p, const char** attr) +{ + float x = 0.0f; + float y = 0.0f; + float w = 0.0f; + float h = 0.0f; + float rx = -1.0f; // marks not set + float ry = -1.0f; + int i; + + for (i = 0; attr[i]; i += 2) { + if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { + if (strcmp(attr[i], "x") == 0) x = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); + if (strcmp(attr[i], "y") == 0) y = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); + if (strcmp(attr[i], "width") == 0) w = nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualWidth(p)); + if (strcmp(attr[i], "height") == 0) h = nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualHeight(p)); + if (strcmp(attr[i], "rx") == 0) rx = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualWidth(p))); + if (strcmp(attr[i], "ry") == 0) ry = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualHeight(p))); + } + } + + if (rx < 0.0f && ry > 0.0f) rx = ry; + if (ry < 0.0f && rx > 0.0f) ry = rx; + if (rx < 0.0f) rx = 0.0f; + if (ry < 0.0f) ry = 0.0f; + if (rx > w/2.0f) rx = w/2.0f; + if (ry > h/2.0f) ry = h/2.0f; + + if (w != 0.0f && h != 0.0f) { + nsvg__resetPath(p); + + if (rx < 0.00001f || ry < 0.0001f) { + nsvg__moveTo(p, x, y); + nsvg__lineTo(p, x+w, y); + nsvg__lineTo(p, x+w, y+h); + nsvg__lineTo(p, x, y+h); + } else { + // Rounded rectangle + nsvg__moveTo(p, x+rx, y); + nsvg__lineTo(p, x+w-rx, y); + nsvg__cubicBezTo(p, x+w-rx*(1-NSVG_KAPPA90), y, x+w, y+ry*(1-NSVG_KAPPA90), x+w, y+ry); + nsvg__lineTo(p, x+w, y+h-ry); + nsvg__cubicBezTo(p, x+w, y+h-ry*(1-NSVG_KAPPA90), x+w-rx*(1-NSVG_KAPPA90), y+h, x+w-rx, y+h); + nsvg__lineTo(p, x+rx, y+h); + nsvg__cubicBezTo(p, x+rx*(1-NSVG_KAPPA90), y+h, x, y+h-ry*(1-NSVG_KAPPA90), x, y+h-ry); + nsvg__lineTo(p, x, y+ry); + nsvg__cubicBezTo(p, x, y+ry*(1-NSVG_KAPPA90), x+rx*(1-NSVG_KAPPA90), y, x+rx, y); + } + + nsvg__addPath(p, 1); + + nsvg__addShape(p); + } +} + +static void nsvg__parseCircle(NSVGparser* p, const char** attr) +{ + float cx = 0.0f; + float cy = 0.0f; + float r = 0.0f; + int i; + + for (i = 0; attr[i]; i += 2) { + if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { + if (strcmp(attr[i], "cx") == 0) cx = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); + if (strcmp(attr[i], "cy") == 0) cy = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); + if (strcmp(attr[i], "r") == 0) r = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualLength(p))); + } + } + + if (r > 0.0f) { + nsvg__resetPath(p); + + nsvg__moveTo(p, cx+r, cy); + nsvg__cubicBezTo(p, cx+r, cy+r*NSVG_KAPPA90, cx+r*NSVG_KAPPA90, cy+r, cx, cy+r); + nsvg__cubicBezTo(p, cx-r*NSVG_KAPPA90, cy+r, cx-r, cy+r*NSVG_KAPPA90, cx-r, cy); + nsvg__cubicBezTo(p, cx-r, cy-r*NSVG_KAPPA90, cx-r*NSVG_KAPPA90, cy-r, cx, cy-r); + nsvg__cubicBezTo(p, cx+r*NSVG_KAPPA90, cy-r, cx+r, cy-r*NSVG_KAPPA90, cx+r, cy); + + nsvg__addPath(p, 1); + + nsvg__addShape(p); + } +} + +static void nsvg__parseEllipse(NSVGparser* p, const char** attr) +{ + float cx = 0.0f; + float cy = 0.0f; + float rx = 0.0f; + float ry = 0.0f; + int i; + + for (i = 0; attr[i]; i += 2) { + if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { + if (strcmp(attr[i], "cx") == 0) cx = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); + if (strcmp(attr[i], "cy") == 0) cy = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); + if (strcmp(attr[i], "rx") == 0) rx = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualWidth(p))); + if (strcmp(attr[i], "ry") == 0) ry = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualHeight(p))); + } + } + + if (rx > 0.0f && ry > 0.0f) { + + nsvg__resetPath(p); + + nsvg__moveTo(p, cx+rx, cy); + nsvg__cubicBezTo(p, cx+rx, cy+ry*NSVG_KAPPA90, cx+rx*NSVG_KAPPA90, cy+ry, cx, cy+ry); + nsvg__cubicBezTo(p, cx-rx*NSVG_KAPPA90, cy+ry, cx-rx, cy+ry*NSVG_KAPPA90, cx-rx, cy); + nsvg__cubicBezTo(p, cx-rx, cy-ry*NSVG_KAPPA90, cx-rx*NSVG_KAPPA90, cy-ry, cx, cy-ry); + nsvg__cubicBezTo(p, cx+rx*NSVG_KAPPA90, cy-ry, cx+rx, cy-ry*NSVG_KAPPA90, cx+rx, cy); + + nsvg__addPath(p, 1); + + nsvg__addShape(p); + } +} + +static void nsvg__parseLine(NSVGparser* p, const char** attr) +{ + float x1 = 0.0; + float y1 = 0.0; + float x2 = 0.0; + float y2 = 0.0; + int i; + + for (i = 0; attr[i]; i += 2) { + if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { + if (strcmp(attr[i], "x1") == 0) x1 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); + if (strcmp(attr[i], "y1") == 0) y1 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); + if (strcmp(attr[i], "x2") == 0) x2 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); + if (strcmp(attr[i], "y2") == 0) y2 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); + } + } + + nsvg__resetPath(p); + + nsvg__moveTo(p, x1, y1); + nsvg__lineTo(p, x2, y2); + + nsvg__addPath(p, 0); + + nsvg__addShape(p); +} + +static void nsvg__parsePoly(NSVGparser* p, const char** attr, int closeFlag) +{ + int i; + const char* s; + float args[2]; + int nargs, npts = 0; + char item[64]; + + nsvg__resetPath(p); + + for (i = 0; attr[i]; i += 2) { + if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { + if (strcmp(attr[i], "points") == 0) { + s = attr[i + 1]; + nargs = 0; + while (*s) { + s = nsvg__getNextPathItem(s, item); + args[nargs++] = (float)nsvg__atof(item); + if (nargs >= 2) { + if (npts == 0) + nsvg__moveTo(p, args[0], args[1]); + else + nsvg__lineTo(p, args[0], args[1]); + nargs = 0; + npts++; + } + } + } + } + } + + nsvg__addPath(p, (char)closeFlag); + + nsvg__addShape(p); +} + +static void nsvg__parseSVG(NSVGparser* p, const char** attr) +{ + int i; + for (i = 0; attr[i]; i += 2) { + if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { + if (strcmp(attr[i], "width") == 0) { + p->image->width = nsvg__parseCoordinate(p, attr[i + 1], 0.0f, 0.0f); + } else if (strcmp(attr[i], "height") == 0) { + p->image->height = nsvg__parseCoordinate(p, attr[i + 1], 0.0f, 0.0f); + } else if (strcmp(attr[i], "viewBox") == 0) { + const char *s = attr[i + 1]; + char buf[64]; + s = nsvg__parseNumber(s, buf, 64); + p->viewMinx = nsvg__atof(buf); + while (*s && (nsvg__isspace(*s) || *s == '%' || *s == ',')) s++; + if (!*s) return; + s = nsvg__parseNumber(s, buf, 64); + p->viewMiny = nsvg__atof(buf); + while (*s && (nsvg__isspace(*s) || *s == '%' || *s == ',')) s++; + if (!*s) return; + s = nsvg__parseNumber(s, buf, 64); + p->viewWidth = nsvg__atof(buf); + while (*s && (nsvg__isspace(*s) || *s == '%' || *s == ',')) s++; + if (!*s) return; + s = nsvg__parseNumber(s, buf, 64); + p->viewHeight = nsvg__atof(buf); + } else if (strcmp(attr[i], "preserveAspectRatio") == 0) { + if (strstr(attr[i + 1], "none") != 0) { + // No uniform scaling + p->alignType = NSVG_ALIGN_NONE; + } else { + // Parse X align + if (strstr(attr[i + 1], "xMin") != 0) + p->alignX = NSVG_ALIGN_MIN; + else if (strstr(attr[i + 1], "xMid") != 0) + p->alignX = NSVG_ALIGN_MID; + else if (strstr(attr[i + 1], "xMax") != 0) + p->alignX = NSVG_ALIGN_MAX; + // Parse X align + if (strstr(attr[i + 1], "yMin") != 0) + p->alignY = NSVG_ALIGN_MIN; + else if (strstr(attr[i + 1], "yMid") != 0) + p->alignY = NSVG_ALIGN_MID; + else if (strstr(attr[i + 1], "yMax") != 0) + p->alignY = NSVG_ALIGN_MAX; + // Parse meet/slice + p->alignType = NSVG_ALIGN_MEET; + if (strstr(attr[i + 1], "slice") != 0) + p->alignType = NSVG_ALIGN_SLICE; + } + } + } + } +} + +static void nsvg__parseGradient(NSVGparser* p, const char** attr, signed char type) +{ + int i; + NSVGgradientData* grad = (NSVGgradientData*)malloc(sizeof(NSVGgradientData)); + if (grad == NULL) return; + memset(grad, 0, sizeof(NSVGgradientData)); + grad->units = NSVG_OBJECT_SPACE; + grad->type = type; + if (grad->type == NSVG_PAINT_LINEAR_GRADIENT) { + grad->linear.x1 = nsvg__coord(0.0f, NSVG_UNITS_PERCENT); + grad->linear.y1 = nsvg__coord(0.0f, NSVG_UNITS_PERCENT); + grad->linear.x2 = nsvg__coord(100.0f, NSVG_UNITS_PERCENT); + grad->linear.y2 = nsvg__coord(0.0f, NSVG_UNITS_PERCENT); + } else if (grad->type == NSVG_PAINT_RADIAL_GRADIENT) { + grad->radial.cx = nsvg__coord(50.0f, NSVG_UNITS_PERCENT); + grad->radial.cy = nsvg__coord(50.0f, NSVG_UNITS_PERCENT); + grad->radial.r = nsvg__coord(50.0f, NSVG_UNITS_PERCENT); + } + + nsvg__xformIdentity(grad->xform); + + for (i = 0; attr[i]; i += 2) { + if (strcmp(attr[i], "id") == 0) { + strncpy(grad->id, attr[i+1], 63); + grad->id[63] = '\0'; + } else if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { + if (strcmp(attr[i], "gradientUnits") == 0) { + if (strcmp(attr[i+1], "objectBoundingBox") == 0) + grad->units = NSVG_OBJECT_SPACE; + else + grad->units = NSVG_USER_SPACE; + } else if (strcmp(attr[i], "gradientTransform") == 0) { + nsvg__parseTransform(grad->xform, attr[i + 1]); + } else if (strcmp(attr[i], "cx") == 0) { + grad->radial.cx = nsvg__parseCoordinateRaw(attr[i + 1]); + } else if (strcmp(attr[i], "cy") == 0) { + grad->radial.cy = nsvg__parseCoordinateRaw(attr[i + 1]); + } else if (strcmp(attr[i], "r") == 0) { + grad->radial.r = nsvg__parseCoordinateRaw(attr[i + 1]); + } else if (strcmp(attr[i], "fx") == 0) { + grad->radial.fx = nsvg__parseCoordinateRaw(attr[i + 1]); + } else if (strcmp(attr[i], "fy") == 0) { + grad->radial.fy = nsvg__parseCoordinateRaw(attr[i + 1]); + } else if (strcmp(attr[i], "x1") == 0) { + grad->linear.x1 = nsvg__parseCoordinateRaw(attr[i + 1]); + } else if (strcmp(attr[i], "y1") == 0) { + grad->linear.y1 = nsvg__parseCoordinateRaw(attr[i + 1]); + } else if (strcmp(attr[i], "x2") == 0) { + grad->linear.x2 = nsvg__parseCoordinateRaw(attr[i + 1]); + } else if (strcmp(attr[i], "y2") == 0) { + grad->linear.y2 = nsvg__parseCoordinateRaw(attr[i + 1]); + } else if (strcmp(attr[i], "spreadMethod") == 0) { + if (strcmp(attr[i+1], "pad") == 0) + grad->spread = NSVG_SPREAD_PAD; + else if (strcmp(attr[i+1], "reflect") == 0) + grad->spread = NSVG_SPREAD_REFLECT; + else if (strcmp(attr[i+1], "repeat") == 0) + grad->spread = NSVG_SPREAD_REPEAT; + } else if (strcmp(attr[i], "xlink:href") == 0) { + const char *href = attr[i+1]; + strncpy(grad->ref, href+1, 62); + grad->ref[62] = '\0'; + } + } + } + + grad->next = p->gradients; + p->gradients = grad; +} + +static void nsvg__parseGradientStop(NSVGparser* p, const char** attr) +{ + NSVGattrib* curAttr = nsvg__getAttr(p); + NSVGgradientData* grad; + NSVGgradientStop* stop; + int i, idx; + + curAttr->stopOffset = 0; + curAttr->stopColor = 0; + curAttr->stopOpacity = 1.0f; + + for (i = 0; attr[i]; i += 2) { + nsvg__parseAttr(p, attr[i], attr[i + 1]); + } + + // Add stop to the last gradient. + grad = p->gradients; + if (grad == NULL) return; + + grad->nstops++; + grad->stops = (NSVGgradientStop*)realloc(grad->stops, sizeof(NSVGgradientStop)*grad->nstops); + if (grad->stops == NULL) return; + + // Insert + idx = grad->nstops-1; + for (i = 0; i < grad->nstops-1; i++) { + if (curAttr->stopOffset < grad->stops[i].offset) { + idx = i; + break; + } + } + if (idx != grad->nstops-1) { + for (i = grad->nstops-1; i > idx; i--) + grad->stops[i] = grad->stops[i-1]; + } + + stop = &grad->stops[idx]; + stop->color = curAttr->stopColor; + stop->color |= (unsigned int)(curAttr->stopOpacity*255) << 24; + stop->offset = curAttr->stopOffset; +} + +static void nsvg__startElement(void* ud, const char* el, const char** attr) +{ + NSVGparser* p = (NSVGparser*)ud; + + if (p->defsFlag) { + // Skip everything but gradients in defs + if (strcmp(el, "linearGradient") == 0) { + nsvg__parseGradient(p, attr, NSVG_PAINT_LINEAR_GRADIENT); + } else if (strcmp(el, "radialGradient") == 0) { + nsvg__parseGradient(p, attr, NSVG_PAINT_RADIAL_GRADIENT); + } else if (strcmp(el, "stop") == 0) { + nsvg__parseGradientStop(p, attr); + } + return; + } + + if (strcmp(el, "g") == 0) { + nsvg__pushAttr(p); + nsvg__parseAttribs(p, attr); + } else if (strcmp(el, "path") == 0) { + if (p->pathFlag) // Do not allow nested paths. + return; + nsvg__pushAttr(p); + nsvg__parsePath(p, attr); + nsvg__popAttr(p); + } else if (strcmp(el, "rect") == 0) { + nsvg__pushAttr(p); + nsvg__parseRect(p, attr); + nsvg__popAttr(p); + } else if (strcmp(el, "circle") == 0) { + nsvg__pushAttr(p); + nsvg__parseCircle(p, attr); + nsvg__popAttr(p); + } else if (strcmp(el, "ellipse") == 0) { + nsvg__pushAttr(p); + nsvg__parseEllipse(p, attr); + nsvg__popAttr(p); + } else if (strcmp(el, "line") == 0) { + nsvg__pushAttr(p); + nsvg__parseLine(p, attr); + nsvg__popAttr(p); + } else if (strcmp(el, "polyline") == 0) { + nsvg__pushAttr(p); + nsvg__parsePoly(p, attr, 0); + nsvg__popAttr(p); + } else if (strcmp(el, "polygon") == 0) { + nsvg__pushAttr(p); + nsvg__parsePoly(p, attr, 1); + nsvg__popAttr(p); + } else if (strcmp(el, "linearGradient") == 0) { + nsvg__parseGradient(p, attr, NSVG_PAINT_LINEAR_GRADIENT); + } else if (strcmp(el, "radialGradient") == 0) { + nsvg__parseGradient(p, attr, NSVG_PAINT_RADIAL_GRADIENT); + } else if (strcmp(el, "stop") == 0) { + nsvg__parseGradientStop(p, attr); + } else if (strcmp(el, "defs") == 0) { + p->defsFlag = 1; + } else if (strcmp(el, "svg") == 0) { + nsvg__parseSVG(p, attr); + } +} + +static void nsvg__endElement(void* ud, const char* el) +{ + NSVGparser* p = (NSVGparser*)ud; + + if (strcmp(el, "g") == 0) { + nsvg__popAttr(p); + } else if (strcmp(el, "path") == 0) { + p->pathFlag = 0; + } else if (strcmp(el, "defs") == 0) { + p->defsFlag = 0; + } +} + +static void nsvg__content(void* ud, const char* s) +{ + NSVG_NOTUSED(ud); + NSVG_NOTUSED(s); + // empty +} + +static void nsvg__imageBounds(NSVGparser* p, float* bounds) +{ + NSVGshape* shape; + shape = p->image->shapes; + if (shape == NULL) { + bounds[0] = bounds[1] = bounds[2] = bounds[3] = 0.0; + return; + } + bounds[0] = shape->bounds[0]; + bounds[1] = shape->bounds[1]; + bounds[2] = shape->bounds[2]; + bounds[3] = shape->bounds[3]; + for (shape = shape->next; shape != NULL; shape = shape->next) { + bounds[0] = nsvg__minf(bounds[0], shape->bounds[0]); + bounds[1] = nsvg__minf(bounds[1], shape->bounds[1]); + bounds[2] = nsvg__maxf(bounds[2], shape->bounds[2]); + bounds[3] = nsvg__maxf(bounds[3], shape->bounds[3]); + } +} + +static float nsvg__viewAlign(float content, float container, int type) +{ + if (type == NSVG_ALIGN_MIN) + return 0; + else if (type == NSVG_ALIGN_MAX) + return container - content; + // mid + return (container - content) * 0.5f; +} + +static void nsvg__scaleGradient(NSVGgradient* grad, float tx, float ty, float sx, float sy) +{ + float t[6]; + nsvg__xformSetTranslation(t, tx, ty); + nsvg__xformMultiply (grad->xform, t); + + nsvg__xformSetScale(t, sx, sy); + nsvg__xformMultiply (grad->xform, t); +} + +static void nsvg__scaleToViewbox(NSVGparser* p, const char* units) +{ + NSVGshape* shape; + NSVGpath* path; + float tx, ty, sx, sy, us, bounds[4], t[6], avgs; + int i; + float* pt; + + // Guess image size if not set completely. + nsvg__imageBounds(p, bounds); + + if (p->viewWidth == 0) { + if (p->image->width > 0) { + p->viewWidth = p->image->width; + } else { + p->viewMinx = bounds[0]; + p->viewWidth = bounds[2] - bounds[0]; + } + } + if (p->viewHeight == 0) { + if (p->image->height > 0) { + p->viewHeight = p->image->height; + } else { + p->viewMiny = bounds[1]; + p->viewHeight = bounds[3] - bounds[1]; + } + } + if (p->image->width == 0) + p->image->width = p->viewWidth; + if (p->image->height == 0) + p->image->height = p->viewHeight; + + tx = -p->viewMinx; + ty = -p->viewMiny; + sx = p->viewWidth > 0 ? p->image->width / p->viewWidth : 0; + sy = p->viewHeight > 0 ? p->image->height / p->viewHeight : 0; + // Unit scaling + us = 1.0f / nsvg__convertToPixels(p, nsvg__coord(1.0f, nsvg__parseUnits(units)), 0.0f, 1.0f); + + // Fix aspect ratio + if (p->alignType == NSVG_ALIGN_MEET) { + // fit whole image into viewbox + sx = sy = nsvg__minf(sx, sy); + tx += nsvg__viewAlign(p->viewWidth*sx, p->image->width, p->alignX) / sx; + ty += nsvg__viewAlign(p->viewHeight*sy, p->image->height, p->alignY) / sy; + } else if (p->alignType == NSVG_ALIGN_SLICE) { + // fill whole viewbox with image + sx = sy = nsvg__maxf(sx, sy); + tx += nsvg__viewAlign(p->viewWidth*sx, p->image->width, p->alignX) / sx; + ty += nsvg__viewAlign(p->viewHeight*sy, p->image->height, p->alignY) / sy; + } + + // Transform + sx *= us; + sy *= us; + avgs = (sx+sy) / 2.0f; + for (shape = p->image->shapes; shape != NULL; shape = shape->next) { + shape->bounds[0] = (shape->bounds[0] + tx) * sx; + shape->bounds[1] = (shape->bounds[1] + ty) * sy; + shape->bounds[2] = (shape->bounds[2] + tx) * sx; + shape->bounds[3] = (shape->bounds[3] + ty) * sy; + for (path = shape->paths; path != NULL; path = path->next) { + path->bounds[0] = (path->bounds[0] + tx) * sx; + path->bounds[1] = (path->bounds[1] + ty) * sy; + path->bounds[2] = (path->bounds[2] + tx) * sx; + path->bounds[3] = (path->bounds[3] + ty) * sy; + for (i =0; i < path->npts; i++) { + pt = &path->pts[i*2]; + pt[0] = (pt[0] + tx) * sx; + pt[1] = (pt[1] + ty) * sy; + } + } + + if (shape->fill.type == NSVG_PAINT_LINEAR_GRADIENT || shape->fill.type == NSVG_PAINT_RADIAL_GRADIENT) { + nsvg__scaleGradient(shape->fill.gradient, tx,ty, sx,sy); + memcpy(t, shape->fill.gradient->xform, sizeof(float)*6); + nsvg__xformInverse(shape->fill.gradient->xform, t); + } + if (shape->stroke.type == NSVG_PAINT_LINEAR_GRADIENT || shape->stroke.type == NSVG_PAINT_RADIAL_GRADIENT) { + nsvg__scaleGradient(shape->stroke.gradient, tx,ty, sx,sy); + memcpy(t, shape->stroke.gradient->xform, sizeof(float)*6); + nsvg__xformInverse(shape->stroke.gradient->xform, t); + } + + shape->strokeWidth *= avgs; + shape->strokeDashOffset *= avgs; + for (i = 0; i < shape->strokeDashCount; i++) + shape->strokeDashArray[i] *= avgs; + } +} + +static void nsvg__createGradients(NSVGparser* p) +{ + NSVGshape* shape; + + for (shape = p->image->shapes; shape != NULL; shape = shape->next) { + if (shape->fill.type == NSVG_PAINT_UNDEF) { + if (shape->fillGradient[0] != '\0') { + float inv[6], localBounds[4]; + nsvg__xformInverse(inv, shape->xform); + nsvg__getLocalBounds(localBounds, shape, inv); + shape->fill.gradient = nsvg__createGradient(p, shape->fillGradient, localBounds, shape->xform, &shape->fill.type); + } + if (shape->fill.type == NSVG_PAINT_UNDEF) { + shape->fill.type = NSVG_PAINT_NONE; + } + } + if (shape->stroke.type == NSVG_PAINT_UNDEF) { + if (shape->strokeGradient[0] != '\0') { + float inv[6], localBounds[4]; + nsvg__xformInverse(inv, shape->xform); + nsvg__getLocalBounds(localBounds, shape, inv); + shape->stroke.gradient = nsvg__createGradient(p, shape->strokeGradient, localBounds, shape->xform, &shape->stroke.type); + } + if (shape->stroke.type == NSVG_PAINT_UNDEF) { + shape->stroke.type = NSVG_PAINT_NONE; + } + } + } +} + +NSVGimage* nsvgParse(char* input, const char* units, float dpi) +{ + NSVGparser* p; + NSVGimage* ret = 0; + + p = nsvg__createParser(); + if (p == NULL) { + return NULL; + } + p->dpi = dpi; + + nsvg__parseXML(input, nsvg__startElement, nsvg__endElement, nsvg__content, p); + + // Create gradients after all definitions have been parsed + nsvg__createGradients(p); + + // Scale to viewBox + nsvg__scaleToViewbox(p, units); + + ret = p->image; + p->image = NULL; + + nsvg__deleteParser(p); + + return ret; +} + +#if WIN32 +#define WIN32_LEAN_AND_MEAN +#include "windows.h" +#endif + +NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi) +{ + FILE* fp = NULL; + size_t size; + char* data = NULL; + NSVGimage* image = NULL; + +#if WIN32 + int name_len = MultiByteToWideChar(CP_UTF8, NULL, filename, strlen(filename), NULL, 0); + wchar_t w_fname[512]; + memset(w_fname, 0, sizeof(w_fname)); + MultiByteToWideChar(CP_UTF8, NULL, filename, strlen(filename), w_fname, name_len); + w_fname[name_len] = '\0'; + fp = _wfopen(w_fname, L"rb"); +#else + fp = fopen(filename, "rb"); +#endif + if (!fp) goto error; + fseek(fp, 0, SEEK_END); + size = ftell(fp); + fseek(fp, 0, SEEK_SET); + data = (char*)malloc(size+1); + if (data == NULL) goto error; + if (fread(data, 1, size, fp) != size) goto error; + data[size] = '\0'; // Must be null terminated. + fclose(fp); + image = nsvgParse(data, units, dpi); + free(data); + + return image; + +error: + if (fp) fclose(fp); + if (data) free(data); + if (image) nsvgDelete(image); + return NULL; +} + +NSVGpath* nsvgDuplicatePath(NSVGpath* p) +{ + NSVGpath* res = NULL; + + if (p == NULL) + return NULL; + + res = (NSVGpath*)malloc(sizeof(NSVGpath)); + if (res == NULL) goto error; + memset(res, 0, sizeof(NSVGpath)); + + res->pts = (float*)malloc(p->npts*2*sizeof(float)); + if (res->pts == NULL) goto error; + memcpy(res->pts, p->pts, p->npts * sizeof(float) * 2); + res->npts = p->npts; + + memcpy(res->bounds, p->bounds, sizeof(p->bounds)); + + res->closed = p->closed; + + return res; + +error: + if (res != NULL) { + free(res->pts); + free(res); + } + return NULL; +} + +void nsvgDelete(NSVGimage* image) +{ + NSVGshape *snext, *shape; + if (image == NULL) return; + shape = image->shapes; + while (shape != NULL) { + snext = shape->next; + nsvg__deletePaths(shape->paths); + nsvg__deletePaint(&shape->fill); + nsvg__deletePaint(&shape->stroke); + free(shape); + shape = snext; + } + free(image); +} + +#endif // NANOSVG_IMPLEMENTATION + +#endif // NANOSVG_H diff --git a/src/nanosvg/nanosvgrast.h b/src/nanosvg/nanosvgrast.h new file mode 100644 index 0000000000..a4b866beba --- /dev/null +++ b/src/nanosvg/nanosvgrast.h @@ -0,0 +1,1483 @@ +/* + * Copyright (c) 2013-14 Mikko Mononen memon@inside.org + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * The polygon rasterization is heavily based on stb_truetype rasterizer + * by Sean Barrett - http://nothings.org/ + * + */ + +/* Modified by FLTK to support non-square X,Y axes scaling. + * + * Added: nsvgRasterizeXY() +*/ + + +#ifndef NANOSVGRAST_H +#define NANOSVGRAST_H + +#include "nanosvg.h" + +#ifndef NANOSVGRAST_CPLUSPLUS +#ifdef __cplusplus +extern "C" { +#endif +#endif + +typedef struct NSVGrasterizer NSVGrasterizer; + +/* Example Usage: + // Load SVG + NSVGimage* image; + image = nsvgParseFromFile("test.svg", "px", 96); + + // Create rasterizer (can be used to render multiple images). + struct NSVGrasterizer* rast = nsvgCreateRasterizer(); + // Allocate memory for image + unsigned char* img = malloc(w*h*4); + // Rasterize + nsvgRasterize(rast, image, 0,0,1, img, w, h, w*4); + + // For non-square X,Y scaling, use + nsvgRasterizeXY(rast, image, 0,0,1,1, img, w, h, w*4); +*/ + +// Allocated rasterizer context. +NSVGrasterizer* nsvgCreateRasterizer(void); + +// Rasterizes SVG image, returns RGBA image (non-premultiplied alpha) +// r - pointer to rasterizer context +// image - pointer to image to rasterize +// tx,ty - image offset (applied after scaling) +// scale - image scale (assumes square aspect ratio) +// dst - pointer to destination image data, 4 bytes per pixel (RGBA) +// w - width of the image to render +// h - height of the image to render +// stride - number of bytes per scaleline in the destination buffer +void nsvgRasterize(NSVGrasterizer* r, + NSVGimage* image, float tx, float ty, float scale, + unsigned char* dst, int w, int h, int stride); + +// As above, but allow X and Y axes to scale independently for non-square aspects +void nsvgRasterizeXY(NSVGrasterizer* r, + NSVGimage* image, float tx, float ty, + float sx, float sy, + unsigned char* dst, int w, int h, int stride); + +// Deletes rasterizer context. +void nsvgDeleteRasterizer(NSVGrasterizer*); + + +#ifndef NANOSVGRAST_CPLUSPLUS +#ifdef __cplusplus +} +#endif +#endif + +#ifdef NANOSVGRAST_IMPLEMENTATION + +#include +#include +#include + +#define NSVG__SUBSAMPLES 5 +#define NSVG__FIXSHIFT 10 +#define NSVG__FIX (1 << NSVG__FIXSHIFT) +#define NSVG__FIXMASK (NSVG__FIX-1) +#define NSVG__MEMPAGE_SIZE 1024 + +typedef struct NSVGedge { + float x0,y0, x1,y1; + int dir; + struct NSVGedge* next; +} NSVGedge; + +typedef struct NSVGpoint { + float x, y; + float dx, dy; + float len; + float dmx, dmy; + unsigned char flags; +} NSVGpoint; + +typedef struct NSVGactiveEdge { + int x,dx; + float ey; + int dir; + struct NSVGactiveEdge *next; +} NSVGactiveEdge; + +typedef struct NSVGmemPage { + unsigned char mem[NSVG__MEMPAGE_SIZE]; + int size; + struct NSVGmemPage* next; +} NSVGmemPage; + +typedef struct NSVGcachedPaint { + signed char type; + char spread; + float xform[6]; + unsigned int colors[256]; +} NSVGcachedPaint; + +struct NSVGrasterizer +{ + float px, py; + + float tessTol; + float distTol; + + NSVGedge* edges; + int nedges; + int cedges; + + NSVGpoint* points; + int npoints; + int cpoints; + + NSVGpoint* points2; + int npoints2; + int cpoints2; + + NSVGactiveEdge* freelist; + NSVGmemPage* pages; + NSVGmemPage* curpage; + + unsigned char* scanline; + int cscanline; + + unsigned char* bitmap; + int width, height, stride; +}; + +NSVGrasterizer* nsvgCreateRasterizer(void) +{ + NSVGrasterizer* r = (NSVGrasterizer*)malloc(sizeof(NSVGrasterizer)); + if (r == NULL) goto error; + memset(r, 0, sizeof(NSVGrasterizer)); + + r->tessTol = 0.25f; + r->distTol = 0.01f; + + return r; + +error: + nsvgDeleteRasterizer(r); + return NULL; +} + +void nsvgDeleteRasterizer(NSVGrasterizer* r) +{ + NSVGmemPage* p; + + if (r == NULL) return; + + p = r->pages; + while (p != NULL) { + NSVGmemPage* next = p->next; + free(p); + p = next; + } + + if (r->edges) free(r->edges); + if (r->points) free(r->points); + if (r->points2) free(r->points2); + if (r->scanline) free(r->scanline); + + free(r); +} + +static NSVGmemPage* nsvg__nextPage(NSVGrasterizer* r, NSVGmemPage* cur) +{ + NSVGmemPage *newp; + + // If using existing chain, return the next page in chain + if (cur != NULL && cur->next != NULL) { + return cur->next; + } + + // Alloc new page + newp = (NSVGmemPage*)malloc(sizeof(NSVGmemPage)); + if (newp == NULL) return NULL; + memset(newp, 0, sizeof(NSVGmemPage)); + + // Add to linked list + if (cur != NULL) + cur->next = newp; + else + r->pages = newp; + + return newp; +} + +static void nsvg__resetPool(NSVGrasterizer* r) +{ + NSVGmemPage* p = r->pages; + while (p != NULL) { + p->size = 0; + p = p->next; + } + r->curpage = r->pages; +} + +static unsigned char* nsvg__alloc(NSVGrasterizer* r, int size) +{ + unsigned char* buf; + if (size > NSVG__MEMPAGE_SIZE) return NULL; + if (r->curpage == NULL || r->curpage->size+size > NSVG__MEMPAGE_SIZE) { + r->curpage = nsvg__nextPage(r, r->curpage); + } + buf = &r->curpage->mem[r->curpage->size]; + r->curpage->size += size; + return buf; +} + +static int nsvg__ptEquals(float x1, float y1, float x2, float y2, float tol) +{ + float dx = x2 - x1; + float dy = y2 - y1; + return dx*dx + dy*dy < tol*tol; +} + +static void nsvg__addPathPoint(NSVGrasterizer* r, float x, float y, int flags) +{ + NSVGpoint* pt; + + if (r->npoints > 0) { + pt = &r->points[r->npoints-1]; + if (nsvg__ptEquals(pt->x,pt->y, x,y, r->distTol)) { + pt->flags = (unsigned char)(pt->flags | flags); + return; + } + } + + if (r->npoints+1 > r->cpoints) { + r->cpoints = r->cpoints > 0 ? r->cpoints * 2 : 64; + r->points = (NSVGpoint*)realloc(r->points, sizeof(NSVGpoint) * r->cpoints); + if (r->points == NULL) return; + } + + pt = &r->points[r->npoints]; + pt->x = x; + pt->y = y; + pt->flags = (unsigned char)flags; + r->npoints++; +} + +static void nsvg__appendPathPoint(NSVGrasterizer* r, NSVGpoint pt) +{ + if (r->npoints+1 > r->cpoints) { + r->cpoints = r->cpoints > 0 ? r->cpoints * 2 : 64; + r->points = (NSVGpoint*)realloc(r->points, sizeof(NSVGpoint) * r->cpoints); + if (r->points == NULL) return; + } + r->points[r->npoints] = pt; + r->npoints++; +} + +static void nsvg__duplicatePoints(NSVGrasterizer* r) +{ + if (r->npoints > r->cpoints2) { + r->cpoints2 = r->npoints; + r->points2 = (NSVGpoint*)realloc(r->points2, sizeof(NSVGpoint) * r->cpoints2); + if (r->points2 == NULL) return; + } + + memcpy(r->points2, r->points, sizeof(NSVGpoint) * r->npoints); + r->npoints2 = r->npoints; +} + +static void nsvg__addEdge(NSVGrasterizer* r, float x0, float y0, float x1, float y1) +{ + NSVGedge* e; + + // Skip horizontal edges + if (y0 == y1) + return; + + if (r->nedges+1 > r->cedges) { + r->cedges = r->cedges > 0 ? r->cedges * 2 : 64; + r->edges = (NSVGedge*)realloc(r->edges, sizeof(NSVGedge) * r->cedges); + if (r->edges == NULL) return; + } + + e = &r->edges[r->nedges]; + r->nedges++; + + if (y0 < y1) { + e->x0 = x0; + e->y0 = y0; + e->x1 = x1; + e->y1 = y1; + e->dir = 1; + } else { + e->x0 = x1; + e->y0 = y1; + e->x1 = x0; + e->y1 = y0; + e->dir = -1; + } +} + +static float nsvg__normalize(float *x, float* y) +{ + float d = sqrtf((*x)*(*x) + (*y)*(*y)); + if (d > 1e-6f) { + float id = 1.0f / d; + *x *= id; + *y *= id; + } + return d; +} + +static float nsvg__absf(float x) { return x < 0 ? -x : x; } +static float nsvg__roundf(float x) { return (x >= 0) ? floorf(x + 0.5) : ceilf(x - 0.5); } + +static void nsvg__flattenCubicBez(NSVGrasterizer* r, + float x1, float y1, float x2, float y2, + float x3, float y3, float x4, float y4, + int level, int type) +{ + float x12,y12,x23,y23,x34,y34,x123,y123,x234,y234,x1234,y1234; + float dx,dy,d2,d3; + + if (level > 10) return; + + x12 = (x1+x2)*0.5f; + y12 = (y1+y2)*0.5f; + x23 = (x2+x3)*0.5f; + y23 = (y2+y3)*0.5f; + x34 = (x3+x4)*0.5f; + y34 = (y3+y4)*0.5f; + x123 = (x12+x23)*0.5f; + y123 = (y12+y23)*0.5f; + + dx = x4 - x1; + dy = y4 - y1; + d2 = nsvg__absf(((x2 - x4) * dy - (y2 - y4) * dx)); + d3 = nsvg__absf(((x3 - x4) * dy - (y3 - y4) * dx)); + + if ((d2 + d3)*(d2 + d3) < r->tessTol * (dx*dx + dy*dy)) { + nsvg__addPathPoint(r, x4, y4, type); + return; + } + + x234 = (x23+x34)*0.5f; + y234 = (y23+y34)*0.5f; + x1234 = (x123+x234)*0.5f; + y1234 = (y123+y234)*0.5f; + + nsvg__flattenCubicBez(r, x1,y1, x12,y12, x123,y123, x1234,y1234, level+1, 0); + nsvg__flattenCubicBez(r, x1234,y1234, x234,y234, x34,y34, x4,y4, level+1, type); +} + +static void nsvg__flattenShape(NSVGrasterizer* r, NSVGshape* shape, float sx, float sy) +{ + int i, j; + NSVGpath* path; + + for (path = shape->paths; path != NULL; path = path->next) { + r->npoints = 0; + // Flatten path + nsvg__addPathPoint(r, path->pts[0]*sx, path->pts[1]*sy, 0); + for (i = 0; i < path->npts-1; i += 3) { + float* p = &path->pts[i*2]; + nsvg__flattenCubicBez(r, p[0]*sx,p[1]*sy, p[2]*sx,p[3]*sy, p[4]*sx,p[5]*sy, p[6]*sx,p[7]*sy, 0, 0); + } + // Close path + nsvg__addPathPoint(r, path->pts[0]*sx, path->pts[1]*sy, 0); + // Build edges + for (i = 0, j = r->npoints-1; i < r->npoints; j = i++) + nsvg__addEdge(r, r->points[j].x, r->points[j].y, r->points[i].x, r->points[i].y); + } +} + +enum NSVGpointFlags +{ + NSVG_PT_CORNER = 0x01, + NSVG_PT_BEVEL = 0x02, + NSVG_PT_LEFT = 0x04 +}; + +static void nsvg__initClosed(NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth) +{ + float w = lineWidth * 0.5f; + float dx = p1->x - p0->x; + float dy = p1->y - p0->y; + float len = nsvg__normalize(&dx, &dy); + float px = p0->x + dx*len*0.5f, py = p0->y + dy*len*0.5f; + float dlx = dy, dly = -dx; + float lx = px - dlx*w, ly = py - dly*w; + float rx = px + dlx*w, ry = py + dly*w; + left->x = lx; left->y = ly; + right->x = rx; right->y = ry; +} + +static void nsvg__buttCap(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p, float dx, float dy, float lineWidth, int connect) +{ + float w = lineWidth * 0.5f; + float px = p->x, py = p->y; + float dlx = dy, dly = -dx; + float lx = px - dlx*w, ly = py - dly*w; + float rx = px + dlx*w, ry = py + dly*w; + + nsvg__addEdge(r, lx, ly, rx, ry); + + if (connect) { + nsvg__addEdge(r, left->x, left->y, lx, ly); + nsvg__addEdge(r, rx, ry, right->x, right->y); + } + left->x = lx; left->y = ly; + right->x = rx; right->y = ry; +} + +static void nsvg__squareCap(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p, float dx, float dy, float lineWidth, int connect) +{ + float w = lineWidth * 0.5f; + float px = p->x - dx*w, py = p->y - dy*w; + float dlx = dy, dly = -dx; + float lx = px - dlx*w, ly = py - dly*w; + float rx = px + dlx*w, ry = py + dly*w; + + nsvg__addEdge(r, lx, ly, rx, ry); + + if (connect) { + nsvg__addEdge(r, left->x, left->y, lx, ly); + nsvg__addEdge(r, rx, ry, right->x, right->y); + } + left->x = lx; left->y = ly; + right->x = rx; right->y = ry; +} + +#ifndef NSVG_PI +#define NSVG_PI (3.14159265358979323846264338327f) +#endif + +static void nsvg__roundCap(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p, float dx, float dy, float lineWidth, int ncap, int connect) +{ + int i; + float w = lineWidth * 0.5f; + float px = p->x, py = p->y; + float dlx = dy, dly = -dx; + float lx = 0, ly = 0, rx = 0, ry = 0, prevx = 0, prevy = 0; + + for (i = 0; i < ncap; i++) { + float a = (float)i/(float)(ncap-1)*NSVG_PI; + float ax = cosf(a) * w, ay = sinf(a) * w; + float x = px - dlx*ax - dx*ay; + float y = py - dly*ax - dy*ay; + + if (i > 0) + nsvg__addEdge(r, prevx, prevy, x, y); + + prevx = x; + prevy = y; + + if (i == 0) { + lx = x; ly = y; + } else if (i == ncap-1) { + rx = x; ry = y; + } + } + + if (connect) { + nsvg__addEdge(r, left->x, left->y, lx, ly); + nsvg__addEdge(r, rx, ry, right->x, right->y); + } + + left->x = lx; left->y = ly; + right->x = rx; right->y = ry; +} + +static void nsvg__bevelJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth) +{ + float w = lineWidth * 0.5f; + float dlx0 = p0->dy, dly0 = -p0->dx; + float dlx1 = p1->dy, dly1 = -p1->dx; + float lx0 = p1->x - (dlx0 * w), ly0 = p1->y - (dly0 * w); + float rx0 = p1->x + (dlx0 * w), ry0 = p1->y + (dly0 * w); + float lx1 = p1->x - (dlx1 * w), ly1 = p1->y - (dly1 * w); + float rx1 = p1->x + (dlx1 * w), ry1 = p1->y + (dly1 * w); + + nsvg__addEdge(r, lx0, ly0, left->x, left->y); + nsvg__addEdge(r, lx1, ly1, lx0, ly0); + + nsvg__addEdge(r, right->x, right->y, rx0, ry0); + nsvg__addEdge(r, rx0, ry0, rx1, ry1); + + left->x = lx1; left->y = ly1; + right->x = rx1; right->y = ry1; +} + +static void nsvg__miterJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth) +{ + float w = lineWidth * 0.5f; + float dlx0 = p0->dy, dly0 = -p0->dx; + float dlx1 = p1->dy, dly1 = -p1->dx; + float lx0, rx0, lx1, rx1; + float ly0, ry0, ly1, ry1; + + if (p1->flags & NSVG_PT_LEFT) { + lx0 = lx1 = p1->x - p1->dmx * w; + ly0 = ly1 = p1->y - p1->dmy * w; + nsvg__addEdge(r, lx1, ly1, left->x, left->y); + + rx0 = p1->x + (dlx0 * w); + ry0 = p1->y + (dly0 * w); + rx1 = p1->x + (dlx1 * w); + ry1 = p1->y + (dly1 * w); + nsvg__addEdge(r, right->x, right->y, rx0, ry0); + nsvg__addEdge(r, rx0, ry0, rx1, ry1); + } else { + lx0 = p1->x - (dlx0 * w); + ly0 = p1->y - (dly0 * w); + lx1 = p1->x - (dlx1 * w); + ly1 = p1->y - (dly1 * w); + nsvg__addEdge(r, lx0, ly0, left->x, left->y); + nsvg__addEdge(r, lx1, ly1, lx0, ly0); + + rx0 = rx1 = p1->x + p1->dmx * w; + ry0 = ry1 = p1->y + p1->dmy * w; + nsvg__addEdge(r, right->x, right->y, rx1, ry1); + } + + left->x = lx1; left->y = ly1; + right->x = rx1; right->y = ry1; +} + +static void nsvg__roundJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth, int ncap) +{ + int i, n; + float w = lineWidth * 0.5f; + float dlx0 = p0->dy, dly0 = -p0->dx; + float dlx1 = p1->dy, dly1 = -p1->dx; + float a0 = atan2f(dly0, dlx0); + float a1 = atan2f(dly1, dlx1); + float da = a1 - a0; + float lx, ly, rx, ry; + + if (da < NSVG_PI) da += NSVG_PI*2; + if (da > NSVG_PI) da -= NSVG_PI*2; + + n = (int)ceilf((nsvg__absf(da) / NSVG_PI) * (float)ncap); + if (n < 2) n = 2; + if (n > ncap) n = ncap; + + lx = left->x; + ly = left->y; + rx = right->x; + ry = right->y; + + for (i = 0; i < n; i++) { + float u = (float)i/(float)(n-1); + float a = a0 + u*da; + float ax = cosf(a) * w, ay = sinf(a) * w; + float lx1 = p1->x - ax, ly1 = p1->y - ay; + float rx1 = p1->x + ax, ry1 = p1->y + ay; + + nsvg__addEdge(r, lx1, ly1, lx, ly); + nsvg__addEdge(r, rx, ry, rx1, ry1); + + lx = lx1; ly = ly1; + rx = rx1; ry = ry1; + } + + left->x = lx; left->y = ly; + right->x = rx; right->y = ry; +} + +static void nsvg__straightJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p1, float lineWidth) +{ + float w = lineWidth * 0.5f; + float lx = p1->x - (p1->dmx * w), ly = p1->y - (p1->dmy * w); + float rx = p1->x + (p1->dmx * w), ry = p1->y + (p1->dmy * w); + + nsvg__addEdge(r, lx, ly, left->x, left->y); + nsvg__addEdge(r, right->x, right->y, rx, ry); + + left->x = lx; left->y = ly; + right->x = rx; right->y = ry; +} + +static int nsvg__curveDivs(float r, float arc, float tol) +{ + float da = acosf(r / (r + tol)) * 2.0f; + int divs = (int)ceilf(arc / da); + if (divs < 2) divs = 2; + return divs; +} + +static void nsvg__expandStroke(NSVGrasterizer* r, NSVGpoint* points, int npoints, int closed, int lineJoin, int lineCap, float lineWidth) +{ + int ncap = nsvg__curveDivs(lineWidth*0.5f, NSVG_PI, r->tessTol); // Calculate divisions per half circle. + NSVGpoint left = {0,0,0,0,0,0,0,0}, right = {0,0,0,0,0,0,0,0}, firstLeft = {0,0,0,0,0,0,0,0}, firstRight = {0,0,0,0,0,0,0,0}; + NSVGpoint* p0, *p1; + int j, s, e; + + // Build stroke edges + if (closed) { + // Looping + p0 = &points[npoints-1]; + p1 = &points[0]; + s = 0; + e = npoints; + } else { + // Add cap + p0 = &points[0]; + p1 = &points[1]; + s = 1; + e = npoints-1; + } + + if (closed) { + nsvg__initClosed(&left, &right, p0, p1, lineWidth); + firstLeft = left; + firstRight = right; + } else { + // Add cap + float dx = p1->x - p0->x; + float dy = p1->y - p0->y; + nsvg__normalize(&dx, &dy); + if (lineCap == NSVG_CAP_BUTT) + nsvg__buttCap(r, &left, &right, p0, dx, dy, lineWidth, 0); + else if (lineCap == NSVG_CAP_SQUARE) + nsvg__squareCap(r, &left, &right, p0, dx, dy, lineWidth, 0); + else if (lineCap == NSVG_CAP_ROUND) + nsvg__roundCap(r, &left, &right, p0, dx, dy, lineWidth, ncap, 0); + } + + for (j = s; j < e; ++j) { + if (p1->flags & NSVG_PT_CORNER) { + if (lineJoin == NSVG_JOIN_ROUND) + nsvg__roundJoin(r, &left, &right, p0, p1, lineWidth, ncap); + else if (lineJoin == NSVG_JOIN_BEVEL || (p1->flags & NSVG_PT_BEVEL)) + nsvg__bevelJoin(r, &left, &right, p0, p1, lineWidth); + else + nsvg__miterJoin(r, &left, &right, p0, p1, lineWidth); + } else { + nsvg__straightJoin(r, &left, &right, p1, lineWidth); + } + p0 = p1++; + } + + if (closed) { + // Loop it + nsvg__addEdge(r, firstLeft.x, firstLeft.y, left.x, left.y); + nsvg__addEdge(r, right.x, right.y, firstRight.x, firstRight.y); + } else { + // Add cap + float dx = p1->x - p0->x; + float dy = p1->y - p0->y; + nsvg__normalize(&dx, &dy); + if (lineCap == NSVG_CAP_BUTT) + nsvg__buttCap(r, &right, &left, p1, -dx, -dy, lineWidth, 1); + else if (lineCap == NSVG_CAP_SQUARE) + nsvg__squareCap(r, &right, &left, p1, -dx, -dy, lineWidth, 1); + else if (lineCap == NSVG_CAP_ROUND) + nsvg__roundCap(r, &right, &left, p1, -dx, -dy, lineWidth, ncap, 1); + } +} + +static void nsvg__prepareStroke(NSVGrasterizer* r, float miterLimit, int lineJoin) +{ + int i, j; + NSVGpoint* p0, *p1; + + p0 = &r->points[r->npoints-1]; + p1 = &r->points[0]; + for (i = 0; i < r->npoints; i++) { + // Calculate segment direction and length + p0->dx = p1->x - p0->x; + p0->dy = p1->y - p0->y; + p0->len = nsvg__normalize(&p0->dx, &p0->dy); + // Advance + p0 = p1++; + } + + // calculate joins + p0 = &r->points[r->npoints-1]; + p1 = &r->points[0]; + for (j = 0; j < r->npoints; j++) { + float dlx0, dly0, dlx1, dly1, dmr2, cross; + dlx0 = p0->dy; + dly0 = -p0->dx; + dlx1 = p1->dy; + dly1 = -p1->dx; + // Calculate extrusions + p1->dmx = (dlx0 + dlx1) * 0.5f; + p1->dmy = (dly0 + dly1) * 0.5f; + dmr2 = p1->dmx*p1->dmx + p1->dmy*p1->dmy; + if (dmr2 > 0.000001f) { + float s2 = 1.0f / dmr2; + if (s2 > 600.0f) { + s2 = 600.0f; + } + p1->dmx *= s2; + p1->dmy *= s2; + } + + // Clear flags, but keep the corner. + p1->flags = (p1->flags & NSVG_PT_CORNER) ? NSVG_PT_CORNER : 0; + + // Keep track of left turns. + cross = p1->dx * p0->dy - p0->dx * p1->dy; + if (cross > 0.0f) + p1->flags |= NSVG_PT_LEFT; + + // Check to see if the corner needs to be beveled. + if (p1->flags & NSVG_PT_CORNER) { + if ((dmr2 * miterLimit*miterLimit) < 1.0f || lineJoin == NSVG_JOIN_BEVEL || lineJoin == NSVG_JOIN_ROUND) { + p1->flags |= NSVG_PT_BEVEL; + } + } + + p0 = p1++; + } +} + +static void nsvg__flattenShapeStroke(NSVGrasterizer* r, NSVGshape* shape, float sx, float sy) +{ + int i, j, closed; + NSVGpath* path; + NSVGpoint* p0, *p1; + float miterLimit = shape->miterLimit; + int lineJoin = shape->strokeLineJoin; + int lineCap = shape->strokeLineCap; + const float sw = (sx + sy) / 2; // average scaling factor + const float lineWidth = shape->strokeWidth * sw; // FIXME (?) + + for (path = shape->paths; path != NULL; path = path->next) { + // Flatten path + r->npoints = 0; + nsvg__addPathPoint(r, path->pts[0]*sx, path->pts[1]*sy, NSVG_PT_CORNER); + for (i = 0; i < path->npts-1; i += 3) { + float* p = &path->pts[i*2]; + nsvg__flattenCubicBez(r, p[0]*sx,p[1]*sy, p[2]*sx,p[3]*sy, p[4]*sx,p[5]*sy, p[6]*sx,p[7]*sy, 0, NSVG_PT_CORNER); + } + if (r->npoints < 2) + continue; + + closed = path->closed; + + // If the first and last points are the same, remove the last, mark as closed path. + p0 = &r->points[r->npoints-1]; + p1 = &r->points[0]; + if (nsvg__ptEquals(p0->x,p0->y, p1->x,p1->y, r->distTol)) { + r->npoints--; + p0 = &r->points[r->npoints-1]; + closed = 1; + } + + if (shape->strokeDashCount > 0) { + int idash = 0, dashState = 1; + float totalDist = 0, dashLen, allDashLen, dashOffset; + NSVGpoint cur; + + if (closed) + nsvg__appendPathPoint(r, r->points[0]); + + // Duplicate points -> points2. + nsvg__duplicatePoints(r); + + r->npoints = 0; + cur = r->points2[0]; + nsvg__appendPathPoint(r, cur); + + // Figure out dash offset. + allDashLen = 0; + for (j = 0; j < shape->strokeDashCount; j++) + allDashLen += shape->strokeDashArray[j]; + if (shape->strokeDashCount & 1) + allDashLen *= 2.0f; + // Find location inside pattern + dashOffset = fmodf(shape->strokeDashOffset, allDashLen); + if (dashOffset < 0.0f) + dashOffset += allDashLen; + + while (dashOffset > shape->strokeDashArray[idash]) { + dashOffset -= shape->strokeDashArray[idash]; + idash = (idash + 1) % shape->strokeDashCount; + } + dashLen = (shape->strokeDashArray[idash] - dashOffset) * sw; + + for (j = 1; j < r->npoints2; ) { + float dx = r->points2[j].x - cur.x; + float dy = r->points2[j].y - cur.y; + float dist = sqrtf(dx*dx + dy*dy); + + if ((totalDist + dist) > dashLen) { + // Calculate intermediate point + float d = (dashLen - totalDist) / dist; + float x = cur.x + dx * d; + float y = cur.y + dy * d; + nsvg__addPathPoint(r, x, y, NSVG_PT_CORNER); + + // Stroke + if (r->npoints > 1 && dashState) { + nsvg__prepareStroke(r, miterLimit, lineJoin); + nsvg__expandStroke(r, r->points, r->npoints, 0, lineJoin, lineCap, lineWidth); + } + // Advance dash pattern + dashState = !dashState; + idash = (idash+1) % shape->strokeDashCount; + dashLen = shape->strokeDashArray[idash] * sw; + // Restart + cur.x = x; + cur.y = y; + cur.flags = NSVG_PT_CORNER; + totalDist = 0.0f; + r->npoints = 0; + nsvg__appendPathPoint(r, cur); + } else { + totalDist += dist; + cur = r->points2[j]; + nsvg__appendPathPoint(r, cur); + j++; + } + } + // Stroke any leftover path + if (r->npoints > 1 && dashState) + nsvg__expandStroke(r, r->points, r->npoints, 0, lineJoin, lineCap, lineWidth); + } else { + nsvg__prepareStroke(r, miterLimit, lineJoin); + nsvg__expandStroke(r, r->points, r->npoints, closed, lineJoin, lineCap, lineWidth); + } + } +} + +static int nsvg__cmpEdge(const void *p, const void *q) +{ + const NSVGedge* a = (const NSVGedge*)p; + const NSVGedge* b = (const NSVGedge*)q; + + if (a->y0 < b->y0) return -1; + if (a->y0 > b->y0) return 1; + return 0; +} + + +static NSVGactiveEdge* nsvg__addActive(NSVGrasterizer* r, NSVGedge* e, float startPoint) +{ + NSVGactiveEdge* z; + + if (r->freelist != NULL) { + // Restore from freelist. + z = r->freelist; + r->freelist = z->next; + } else { + // Alloc new edge. + z = (NSVGactiveEdge*)nsvg__alloc(r, sizeof(NSVGactiveEdge)); + if (z == NULL) return NULL; + } + + float dxdy = (e->x1 - e->x0) / (e->y1 - e->y0); +// STBTT_assert(e->y0 <= start_point); + // round dx down to avoid going too far + if (dxdy < 0) + z->dx = (int)(-nsvg__roundf(NSVG__FIX * -dxdy)); + else + z->dx = (int)nsvg__roundf(NSVG__FIX * dxdy); + z->x = (int)nsvg__roundf(NSVG__FIX * (e->x0 + dxdy * (startPoint - e->y0))); +// z->x -= off_x * FIX; + z->ey = e->y1; + z->next = 0; + z->dir = e->dir; + + return z; +} + +static void nsvg__freeActive(NSVGrasterizer* r, NSVGactiveEdge* z) +{ + z->next = r->freelist; + r->freelist = z; +} + +static void nsvg__fillScanline(unsigned char* scanline, int len, int x0, int x1, int maxWeight, int* xmin, int* xmax) +{ + int i = x0 >> NSVG__FIXSHIFT; + int j = x1 >> NSVG__FIXSHIFT; + if (i < *xmin) *xmin = i; + if (j > *xmax) *xmax = j; + if (i < len && j >= 0) { + if (i == j) { + // x0,x1 are the same pixel, so compute combined coverage + scanline[i] = (unsigned char)(scanline[i] + ((x1 - x0) * maxWeight >> NSVG__FIXSHIFT)); + } else { + if (i >= 0) // add antialiasing for x0 + scanline[i] = (unsigned char)(scanline[i] + (((NSVG__FIX - (x0 & NSVG__FIXMASK)) * maxWeight) >> NSVG__FIXSHIFT)); + else + i = -1; // clip + + if (j < len) // add antialiasing for x1 + scanline[j] = (unsigned char)(scanline[j] + (((x1 & NSVG__FIXMASK) * maxWeight) >> NSVG__FIXSHIFT)); + else + j = len; // clip + + for (++i; i < j; ++i) // fill pixels between x0 and x1 + scanline[i] = (unsigned char)(scanline[i] + maxWeight); + } + } +} + +// note: this routine clips fills that extend off the edges... ideally this +// wouldn't happen, but it could happen if the truetype glyph bounding boxes +// are wrong, or if the user supplies a too-small bitmap +static void nsvg__fillActiveEdges(unsigned char* scanline, int len, NSVGactiveEdge* e, int maxWeight, int* xmin, int* xmax, char fillRule) +{ + // non-zero winding fill + int x0 = 0, w = 0; + + if (fillRule == NSVG_FILLRULE_NONZERO) { + // Non-zero + while (e != NULL) { + if (w == 0) { + // if we're currently at zero, we need to record the edge start point + x0 = e->x; w += e->dir; + } else { + int x1 = e->x; w += e->dir; + // if we went to zero, we need to draw + if (w == 0) + nsvg__fillScanline(scanline, len, x0, x1, maxWeight, xmin, xmax); + } + e = e->next; + } + } else if (fillRule == NSVG_FILLRULE_EVENODD) { + // Even-odd + while (e != NULL) { + if (w == 0) { + // if we're currently at zero, we need to record the edge start point + x0 = e->x; w = 1; + } else { + int x1 = e->x; w = 0; + nsvg__fillScanline(scanline, len, x0, x1, maxWeight, xmin, xmax); + } + e = e->next; + } + } +} + +static float nsvg__clampf(float a, float mn, float mx) { return a < mn ? mn : (a > mx ? mx : a); } + +static unsigned int nsvg__RGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a) +{ + return ((unsigned int)r) | ((unsigned int)g << 8) | ((unsigned int)b << 16) | ((unsigned int)a << 24); +} + +static unsigned int nsvg__lerpRGBA(unsigned int c0, unsigned int c1, float u) +{ + int iu = (int)(nsvg__clampf(u, 0.0f, 1.0f) * 256.0f); + int r = (((c0) & 0xff)*(256-iu) + (((c1) & 0xff)*iu)) >> 8; + int g = (((c0>>8) & 0xff)*(256-iu) + (((c1>>8) & 0xff)*iu)) >> 8; + int b = (((c0>>16) & 0xff)*(256-iu) + (((c1>>16) & 0xff)*iu)) >> 8; + int a = (((c0>>24) & 0xff)*(256-iu) + (((c1>>24) & 0xff)*iu)) >> 8; + return nsvg__RGBA((unsigned char)r, (unsigned char)g, (unsigned char)b, (unsigned char)a); +} + +static unsigned int nsvg__applyOpacity(unsigned int c, float u) +{ + int iu = (int)(nsvg__clampf(u, 0.0f, 1.0f) * 256.0f); + int r = (c) & 0xff; + int g = (c>>8) & 0xff; + int b = (c>>16) & 0xff; + int a = (((c>>24) & 0xff)*iu) >> 8; + return nsvg__RGBA((unsigned char)r, (unsigned char)g, (unsigned char)b, (unsigned char)a); +} + +static inline int nsvg__div255(int x) +{ + return ((x+1) * 257) >> 16; +} + +static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* cover, int x, int y, + float tx, float ty, float sx, float sy, NSVGcachedPaint* cache) +{ + + if (cache->type == NSVG_PAINT_COLOR) { + int i, cr, cg, cb, ca; + cr = cache->colors[0] & 0xff; + cg = (cache->colors[0] >> 8) & 0xff; + cb = (cache->colors[0] >> 16) & 0xff; + ca = (cache->colors[0] >> 24) & 0xff; + + for (i = 0; i < count; i++) { + int r,g,b; + int a = nsvg__div255((int)cover[0] * ca); + int ia = 255 - a; + // Premultiply + r = nsvg__div255(cr * a); + g = nsvg__div255(cg * a); + b = nsvg__div255(cb * a); + + // Blend over + r += nsvg__div255(ia * (int)dst[0]); + g += nsvg__div255(ia * (int)dst[1]); + b += nsvg__div255(ia * (int)dst[2]); + a += nsvg__div255(ia * (int)dst[3]); + + dst[0] = (unsigned char)r; + dst[1] = (unsigned char)g; + dst[2] = (unsigned char)b; + dst[3] = (unsigned char)a; + + cover++; + dst += 4; + } + } else if (cache->type == NSVG_PAINT_LINEAR_GRADIENT) { + // TODO: spread modes. + // TODO: plenty of opportunities to optimize. + float fx, fy, dx, gy; + float* t = cache->xform; + int i, cr, cg, cb, ca; + unsigned int c; + + fx = ((float)x - tx) / sx; + fy = ((float)y - ty) / sy; + dx = 1.0f / sx; + + for (i = 0; i < count; i++) { + int r,g,b,a,ia; + gy = fx*t[1] + fy*t[3] + t[5]; + c = cache->colors[(int)nsvg__clampf(gy*255.0f, 0, 255.0f)]; + cr = (c) & 0xff; + cg = (c >> 8) & 0xff; + cb = (c >> 16) & 0xff; + ca = (c >> 24) & 0xff; + + a = nsvg__div255((int)cover[0] * ca); + ia = 255 - a; + + // Premultiply + r = nsvg__div255(cr * a); + g = nsvg__div255(cg * a); + b = nsvg__div255(cb * a); + + // Blend over + r += nsvg__div255(ia * (int)dst[0]); + g += nsvg__div255(ia * (int)dst[1]); + b += nsvg__div255(ia * (int)dst[2]); + a += nsvg__div255(ia * (int)dst[3]); + + dst[0] = (unsigned char)r; + dst[1] = (unsigned char)g; + dst[2] = (unsigned char)b; + dst[3] = (unsigned char)a; + + cover++; + dst += 4; + fx += dx; + } + } else if (cache->type == NSVG_PAINT_RADIAL_GRADIENT) { + // TODO: spread modes. + // TODO: plenty of opportunities to optimize. + // TODO: focus (fx,fy) + float fx, fy, dx, gx, gy, gd; + float* t = cache->xform; + int i, cr, cg, cb, ca; + unsigned int c; + + fx = ((float)x - tx) / sx; + fy = ((float)y - ty) / sy; + dx = 1.0f / sx; + + for (i = 0; i < count; i++) { + int r,g,b,a,ia; + gx = fx*t[0] + fy*t[2] + t[4]; + gy = fx*t[1] + fy*t[3] + t[5]; + gd = sqrtf(gx*gx + gy*gy); + c = cache->colors[(int)nsvg__clampf(gd*255.0f, 0, 255.0f)]; + cr = (c) & 0xff; + cg = (c >> 8) & 0xff; + cb = (c >> 16) & 0xff; + ca = (c >> 24) & 0xff; + + a = nsvg__div255((int)cover[0] * ca); + ia = 255 - a; + + // Premultiply + r = nsvg__div255(cr * a); + g = nsvg__div255(cg * a); + b = nsvg__div255(cb * a); + + // Blend over + r += nsvg__div255(ia * (int)dst[0]); + g += nsvg__div255(ia * (int)dst[1]); + b += nsvg__div255(ia * (int)dst[2]); + a += nsvg__div255(ia * (int)dst[3]); + + dst[0] = (unsigned char)r; + dst[1] = (unsigned char)g; + dst[2] = (unsigned char)b; + dst[3] = (unsigned char)a; + + cover++; + dst += 4; + fx += dx; + } + } +} + +static void nsvg__rasterizeSortedEdges(NSVGrasterizer *r, float tx, float ty, float sx, float sy, NSVGcachedPaint* cache, char fillRule) +{ + NSVGactiveEdge *active = NULL; + int y, s; + int e = 0; + int maxWeight = (255 / NSVG__SUBSAMPLES); // weight per vertical scanline + int xmin, xmax; + + for (y = 0; y < r->height; y++) { + memset(r->scanline, 0, r->width); + xmin = r->width; + xmax = 0; + for (s = 0; s < NSVG__SUBSAMPLES; ++s) { + // find center of pixel for this scanline + float scany = (float)(y*NSVG__SUBSAMPLES + s) + 0.5f; + NSVGactiveEdge **step = &active; + + // update all active edges; + // remove all active edges that terminate before the center of this scanline + while (*step) { + NSVGactiveEdge *z = *step; + if (z->ey <= scany) { + *step = z->next; // delete from list +// NSVG__assert(z->valid); + nsvg__freeActive(r, z); + } else { + z->x += z->dx; // advance to position for current scanline + step = &((*step)->next); // advance through list + } + } + + // resort the list if needed + for (;;) { + int changed = 0; + step = &active; + while (*step && (*step)->next) { + if ((*step)->x > (*step)->next->x) { + NSVGactiveEdge* t = *step; + NSVGactiveEdge* q = t->next; + t->next = q->next; + q->next = t; + *step = q; + changed = 1; + } + step = &(*step)->next; + } + if (!changed) break; + } + + // insert all edges that start before the center of this scanline -- omit ones that also end on this scanline + while (e < r->nedges && r->edges[e].y0 <= scany) { + if (r->edges[e].y1 > scany) { + NSVGactiveEdge* z = nsvg__addActive(r, &r->edges[e], scany); + if (z == NULL) break; + // find insertion point + if (active == NULL) { + active = z; + } else if (z->x < active->x) { + // insert at front + z->next = active; + active = z; + } else { + // find thing to insert AFTER + NSVGactiveEdge* p = active; + while (p->next && p->next->x < z->x) + p = p->next; + // at this point, p->next->x is NOT < z->x + z->next = p->next; + p->next = z; + } + } + e++; + } + + // now process all active edges in non-zero fashion + if (active != NULL) + nsvg__fillActiveEdges(r->scanline, r->width, active, maxWeight, &xmin, &xmax, fillRule); + } + // Blit + if (xmin < 0) xmin = 0; + if (xmax > r->width-1) xmax = r->width-1; + if (xmin <= xmax) { + nsvg__scanlineSolid(&r->bitmap[y * r->stride] + xmin*4, xmax-xmin+1, &r->scanline[xmin], xmin, y, tx,ty, sx, sy, cache); + } + } + +} + +static void nsvg__unpremultiplyAlpha(unsigned char* image, int w, int h, int stride) +{ + int x,y; + + // Unpremultiply + for (y = 0; y < h; y++) { + unsigned char *row = &image[y*stride]; + for (x = 0; x < w; x++) { + int r = row[0], g = row[1], b = row[2], a = row[3]; + if (a != 0) { + row[0] = (unsigned char)(r*255/a); + row[1] = (unsigned char)(g*255/a); + row[2] = (unsigned char)(b*255/a); + } + row += 4; + } + } + + // Defringe + for (y = 0; y < h; y++) { + unsigned char *row = &image[y*stride]; + for (x = 0; x < w; x++) { + int r = 0, g = 0, b = 0, a = row[3], n = 0; + if (a == 0) { + if (x-1 > 0 && row[-1] != 0) { + r += row[-4]; + g += row[-3]; + b += row[-2]; + n++; + } + if (x+1 < w && row[7] != 0) { + r += row[4]; + g += row[5]; + b += row[6]; + n++; + } + if (y-1 > 0 && row[-stride+3] != 0) { + r += row[-stride]; + g += row[-stride+1]; + b += row[-stride+2]; + n++; + } + if (y+1 < h && row[stride+3] != 0) { + r += row[stride]; + g += row[stride+1]; + b += row[stride+2]; + n++; + } + if (n > 0) { + row[0] = (unsigned char)(r/n); + row[1] = (unsigned char)(g/n); + row[2] = (unsigned char)(b/n); + } + } + row += 4; + } + } +} + + +static void nsvg__initPaint(NSVGcachedPaint* cache, NSVGpaint* paint, float opacity) +{ + int i, j; + NSVGgradient* grad; + + cache->type = paint->type; + + if (paint->type == NSVG_PAINT_COLOR) { + cache->colors[0] = nsvg__applyOpacity(paint->color, opacity); + return; + } + + grad = paint->gradient; + + cache->spread = grad->spread; + memcpy(cache->xform, grad->xform, sizeof(float)*6); + + if (grad->nstops == 0) { + for (i = 0; i < 256; i++) + cache->colors[i] = 0; + } else if (grad->nstops == 1) { + for (i = 0; i < 256; i++) + cache->colors[i] = nsvg__applyOpacity(grad->stops[i].color, opacity); + } else { + unsigned int ca, cb = 0; + float ua, ub, du, u; + int ia, ib, count; + + ca = nsvg__applyOpacity(grad->stops[0].color, opacity); + ua = nsvg__clampf(grad->stops[0].offset, 0, 1); + ub = nsvg__clampf(grad->stops[grad->nstops-1].offset, ua, 1); + ia = (int)(ua * 255.0f); + ib = (int)(ub * 255.0f); + for (i = 0; i < ia; i++) { + cache->colors[i] = ca; + } + + for (i = 0; i < grad->nstops-1; i++) { + ca = nsvg__applyOpacity(grad->stops[i].color, opacity); + cb = nsvg__applyOpacity(grad->stops[i+1].color, opacity); + ua = nsvg__clampf(grad->stops[i].offset, 0, 1); + ub = nsvg__clampf(grad->stops[i+1].offset, 0, 1); + ia = (int)(ua * 255.0f); + ib = (int)(ub * 255.0f); + count = ib - ia; + if (count <= 0) continue; + u = 0; + du = 1.0f / (float)count; + for (j = 0; j < count; j++) { + cache->colors[ia+j] = nsvg__lerpRGBA(ca,cb,u); + u += du; + } + } + + for (i = ib; i < 256; i++) + cache->colors[i] = cb; + } + +} + +/* +static void dumpEdges(NSVGrasterizer* r, const char* name) +{ + float xmin = 0, xmax = 0, ymin = 0, ymax = 0; + NSVGedge *e = NULL; + int i; + if (r->nedges == 0) return; + FILE* fp = fopen(name, "w"); + if (fp == NULL) return; + + xmin = xmax = r->edges[0].x0; + ymin = ymax = r->edges[0].y0; + for (i = 0; i < r->nedges; i++) { + e = &r->edges[i]; + xmin = nsvg__minf(xmin, e->x0); + xmin = nsvg__minf(xmin, e->x1); + xmax = nsvg__maxf(xmax, e->x0); + xmax = nsvg__maxf(xmax, e->x1); + ymin = nsvg__minf(ymin, e->y0); + ymin = nsvg__minf(ymin, e->y1); + ymax = nsvg__maxf(ymax, e->y0); + ymax = nsvg__maxf(ymax, e->y1); + } + + fprintf(fp, "", xmin, ymin, (xmax - xmin), (ymax - ymin)); + + for (i = 0; i < r->nedges; i++) { + e = &r->edges[i]; + fprintf(fp ,"", e->x0,e->y0, e->x1,e->y1); + } + + for (i = 0; i < r->npoints; i++) { + if (i+1 < r->npoints) + fprintf(fp ,"", r->points[i].x, r->points[i].y, r->points[i+1].x, r->points[i+1].y); + fprintf(fp ,"", r->points[i].x, r->points[i].y, r->points[i].flags == 0 ? "#f00" : "#0f0"); + } + + fprintf(fp, ""); + fclose(fp); +} +*/ + +void nsvgRasterizeXY(NSVGrasterizer* r, + NSVGimage* image, float tx, float ty, + float sx, float sy, + unsigned char* dst, int w, int h, int stride) +{ + NSVGshape *shape = NULL; + NSVGedge *e = NULL; + NSVGcachedPaint cache; + int i; + + r->bitmap = dst; + r->width = w; + r->height = h; + r->stride = stride; + + if (w > r->cscanline) { + r->cscanline = w; + r->scanline = (unsigned char*)realloc(r->scanline, w); + if (r->scanline == NULL) return; + } + + for (i = 0; i < h; i++) + memset(&dst[i*stride], 0, w*4); + + for (shape = image->shapes; shape != NULL; shape = shape->next) { + if (!(shape->flags & NSVG_FLAGS_VISIBLE)) + continue; + + if (shape->fill.type != NSVG_PAINT_NONE) { + nsvg__resetPool(r); + r->freelist = NULL; + r->nedges = 0; + + nsvg__flattenShape(r, shape, sx, sy); + + // Scale and translate edges + for (i = 0; i < r->nedges; i++) { + e = &r->edges[i]; + e->x0 = tx + e->x0; + e->y0 = (ty + e->y0) * NSVG__SUBSAMPLES; + e->x1 = tx + e->x1; + e->y1 = (ty + e->y1) * NSVG__SUBSAMPLES; + } + + // Rasterize edges + if (r->nedges != 0) + qsort(r->edges, r->nedges, sizeof(NSVGedge), nsvg__cmpEdge); + + // now, traverse the scanlines and find the intersections on each scanline, use non-zero rule + nsvg__initPaint(&cache, &shape->fill, shape->opacity); + + nsvg__rasterizeSortedEdges(r, tx,ty, sx, sy, &cache, shape->fillRule); + } + if (shape->stroke.type != NSVG_PAINT_NONE && (shape->strokeWidth * sx) > 0.01f) { + nsvg__resetPool(r); + r->freelist = NULL; + r->nedges = 0; + + nsvg__flattenShapeStroke(r, shape, sx, sy); + +// dumpEdges(r, "edge.svg"); + + // Scale and translate edges + for (i = 0; i < r->nedges; i++) { + e = &r->edges[i]; + e->x0 = tx + e->x0; + e->y0 = (ty + e->y0) * NSVG__SUBSAMPLES; + e->x1 = tx + e->x1; + e->y1 = (ty + e->y1) * NSVG__SUBSAMPLES; + } + + // Rasterize edges + if (r->nedges != 0) + qsort(r->edges, r->nedges, sizeof(NSVGedge), nsvg__cmpEdge); + + // now, traverse the scanlines and find the intersections on each scanline, use non-zero rule + nsvg__initPaint(&cache, &shape->stroke, shape->opacity); + + nsvg__rasterizeSortedEdges(r, tx,ty,sx, sy, &cache, NSVG_FILLRULE_NONZERO); + } + } + + nsvg__unpremultiplyAlpha(dst, w, h, stride); + + r->bitmap = NULL; + r->width = 0; + r->height = 0; + r->stride = 0; +} + +void nsvgRasterize(NSVGrasterizer* r, + NSVGimage* image, float tx, float ty, float scale, + unsigned char* dst, int w, int h, int stride) +{ + nsvgRasterizeXY(r,image, tx, ty, scale, scale, dst, w, h, stride); +} + +#endif // NANOSVGRAST_IMPLEMENTATION + +#endif // NANOSVGRAST_H diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 7d8e060ea7..c55ff32741 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -524,8 +524,6 @@ set(SLIC3R_GUI_SOURCES Utils/CalibUtils.hpp ) -find_package(NanoSVG REQUIRED) - if (WIN32) list(APPEND SLIC3R_GUI_SOURCES GUI/dark_mode/dark_mode.hpp @@ -573,7 +571,7 @@ source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${SLIC3R_GUI_SOURCES}) encoding_check(libslic3r_gui) -target_link_libraries(libslic3r_gui libslic3r cereal::cereal imgui minilzo GLEW::GLEW OpenGL::GL hidapi ${wxWidgets_LIBRARIES} glfw libcurl OpenSSL::SSL OpenSSL::Crypto NanoSVG::nanosvg NanoSVG::nanosvgrast) +target_link_libraries(libslic3r_gui libslic3r cereal::cereal imgui minilzo GLEW::GLEW OpenGL::GL hidapi ${wxWidgets_LIBRARIES} glfw libcurl OpenSSL::SSL OpenSSL::Crypto) #target_link_libraries(libslic3r_gui libslic3r cereal imgui minilzo GLEW::GLEW OpenGL::GL hidapi libcurl OpenSSL::SSL OpenSSL::Crypto ${wxWidgets_LIBRARIES} glfw) if (MSVC) diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 9fa8383d18..6e89a04d46 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -1084,7 +1084,7 @@ void AMSMaterialsSetting::on_dpi_changed(const wxRect &suggested_rect) m_input_nozzle_max->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20))); m_input_nozzle_min->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20))); //m_clr_picker->msw_rescale(); - degree->sys_color_changed(); + degree->msw_rescale(); bitmap_max_degree->SetBitmap(degree->bmp()); bitmap_min_degree->SetBitmap(degree->bmp()); m_button_reset->SetMinSize(AMS_MATERIALS_SETTING_BUTTON_SIZE); diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index 0b3b360861..e8f21416af 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -19,7 +19,7 @@ AboutDialogLogo::AboutDialogLogo(wxWindow* parent) { this->SetBackgroundColour(*wxWHITE); this->logo = ScalableBitmap(this, Slic3r::var("OrcaSlicer_192px.png"), wxBITMAP_TYPE_PNG); - this->SetMinSize(this->logo.GetSize()); + this->SetMinSize(this->logo.GetBmpSize()); this->Bind(wxEVT_PAINT, &AboutDialogLogo::onRepaint, this); } @@ -30,9 +30,9 @@ void AboutDialogLogo::onRepaint(wxEvent &event) dc.SetBackgroundMode(wxTRANSPARENT); wxSize size = this->GetSize(); - int logo_w = this->logo.GetWidth(); - int logo_h = this->logo.GetHeight(); - dc.DrawBitmap(this->logo.get_bitmap(), (size.GetWidth() - logo_w)/2, (size.GetHeight() - logo_h)/2, true); + int logo_w = this->logo.GetBmpWidth(); + int logo_h = this->logo.GetBmpHeight(); + dc.DrawBitmap(this->logo.bmp(), (size.GetWidth() - logo_w)/2, (size.GetHeight() - logo_h)/2, true); event.Skip(); } @@ -232,7 +232,7 @@ AboutDialog::AboutDialog() main_sizer->Add(ver_sizer, 0, wxEXPAND | wxALL, 0); // logo - m_logo_bitmap = ScalableBitmap(this, "OrcaSlicer_about", {562,250}); + m_logo_bitmap = ScalableBitmap(this, "OrcaSlicer_about", 250); m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bitmap.bmp(), wxDefaultPosition,wxDefaultSize, 0); m_logo->SetSizer(vesizer); @@ -380,7 +380,7 @@ AboutDialog::AboutDialog() void AboutDialog::on_dpi_changed(const wxRect &suggested_rect) { - m_logo_bitmap.sys_color_changed(); + m_logo_bitmap.msw_rescale(); m_logo->SetBitmap(m_logo_bitmap.bmp()); const wxFont& font = GetFont(); diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp index 900316609c..1c4c186816 100644 --- a/src/slic3r/GUI/AmsMappingPopup.cpp +++ b/src/slic3r/GUI/AmsMappingPopup.cpp @@ -187,7 +187,7 @@ void MaterialItem::doRender(wxDC &dc) auto acolor = m_ams_coloul; if (mcolor.Alpha() == 0 || acolor.Alpha() == 0) { - dc.DrawBitmap(m_transparent_mitem.get_bitmap(), FromDIP(1), FromDIP(1)); + dc.DrawBitmap(m_transparent_mitem.bmp(), FromDIP(1), FromDIP(1)); } if (!IsEnabled()) { @@ -247,10 +247,10 @@ void MaterialItem::doRender(wxDC &dc) //arrow if ( (acolor.Red() > 160 && acolor.Green() > 160 && acolor.Blue() > 160) && (acolor.Red() < 180 && acolor.Green() < 180 && acolor.Blue() < 180)) { - dc.DrawBitmap(m_arraw_bitmap_white.get_bitmap(), GetSize().x - m_arraw_bitmap_white.GetSize().x - FromDIP(7), GetSize().y - m_arraw_bitmap_white.GetSize().y); + dc.DrawBitmap(m_arraw_bitmap_white.bmp(), GetSize().x - m_arraw_bitmap_white.GetBmpSize().x - FromDIP(7), GetSize().y - m_arraw_bitmap_white.GetBmpSize().y); } else { - dc.DrawBitmap(m_arraw_bitmap_gray.get_bitmap(), GetSize().x - m_arraw_bitmap_gray.GetSize().x - FromDIP(7), GetSize().y - m_arraw_bitmap_gray.GetSize().y); + dc.DrawBitmap(m_arraw_bitmap_gray.bmp(), GetSize().x - m_arraw_bitmap_gray.GetBmpSize().x - FromDIP(7), GetSize().y - m_arraw_bitmap_gray.GetBmpSize().y); } @@ -677,7 +677,7 @@ void MappingItem::doRender(wxDC &dc) dc.SetBrush(wxBrush(m_coloul)); if (m_coloul.Alpha() == 0) { - dc.DrawBitmap( m_transparent_mapping_item.get_bitmap(), 0, (GetSize().y - MAPPING_ITEM_REAL_SIZE.y) / 2); + dc.DrawBitmap( m_transparent_mapping_item.bmp(), 0, (GetSize().y - MAPPING_ITEM_REAL_SIZE.y) / 2); } else { dc.DrawRectangle(0, (GetSize().y - MAPPING_ITEM_REAL_SIZE.y) / 2, MAPPING_ITEM_REAL_SIZE.x, MAPPING_ITEM_REAL_SIZE.y); @@ -1340,7 +1340,7 @@ void AmsReplaceMaterialDialog::update_machine_obj(MachineObject* obj) } else { label_txt->SetLabelText(_L("If there are two identical filaments in AMS, AMS filament backup will be enabled. \n(Currently supporting automatic supply of consumables with the same brand, material type, and color)")); - } + } label_txt->SetMinSize(wxSize(FromDIP(380), -1)); label_txt->SetMaxSize(wxSize(FromDIP(380), -1)); @@ -1494,7 +1494,7 @@ void AmsRMGroup::doRender(wxDC& dc) float startAngle = 0.0; float endAngle = 0.0; - dc.DrawBitmap(bitmap_bg.get_bitmap(), wxPoint((size.x - bitmap_bg.GetSize().x) / 2, (size.y - bitmap_bg.GetSize().y) / 2)); + dc.DrawBitmap(bitmap_bg.bmp(), wxPoint((size.x - bitmap_bg.GetBmpSize().x) / 2, (size.y - bitmap_bg.GetBmpSize().y) / 2)); for (auto iter = m_group_info.rbegin(); iter != m_group_info.rend(); ++iter) { std::string tray_name = iter->first; @@ -1575,7 +1575,7 @@ void AmsRMGroup::doRender(wxDC& dc) dc.DrawEllipticArc(x - center_mask_radius, y - center_mask_radius, center_mask_radius * 2, center_mask_radius * 2, 0, 360); //draw center icon - dc.DrawBitmap(bitmap_backup_tips_0.get_bitmap(), wxPoint((size.x - bitmap_backup_tips_0.GetSize().x) / 2, (size.y - bitmap_backup_tips_0.GetSize().y) / 2)); + dc.DrawBitmap(bitmap_backup_tips_0.bmp(), wxPoint((size.x - bitmap_backup_tips_0.GetBmpSize().x) / 2, (size.y - bitmap_backup_tips_0.GetBmpSize().y) / 2)); //dc.DrawBitmap(bitmap_backup_tips_1.bmp(), wxPoint((size.x - bitmap_backup_tips_1.GetBmpSize().x) / 2, (size.y - bitmap_backup_tips_1.GetBmpSize().y) / 2)); //draw material diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index 2049fa88de..c3554bfe5f 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -226,7 +226,7 @@ void AuFile::PaintBackground(wxDC &dc) dc.SetPen(AUFILE_GREY200); dc.SetBrush(AUFILE_GREY200); dc.DrawRoundedRectangle(0, 0, size.x, size.y, AUFILE_ROUNDING); - dc.DrawBitmap(m_file_bitmap.get_bitmap(), (size.x - m_file_bitmap.GetWidth()) / 2, (size.y - m_file_bitmap.GetHeight()) / 2); + dc.DrawBitmap(m_file_bitmap.bmp(), (size.x - m_file_bitmap.GetBmpWidth()) / 2, (size.y - m_file_bitmap.GetBmpHeight()) / 2); } } @@ -257,7 +257,7 @@ void AuFile::PaintForeground(wxDC &dc) } if (m_type == MODEL_PICTURE) { - dc.DrawBitmap(m_file_edit_mask.get_bitmap(), 0, size.y - m_file_edit_mask.GetSize().y); + dc.DrawBitmap(m_file_edit_mask.bmp(), 0, size.y - m_file_edit_mask.GetBmpSize().y); } @@ -268,14 +268,14 @@ void AuFile::PaintForeground(wxDC &dc) auto sizet = dc.GetTextExtent(cover_text_left); auto pos = wxPoint(0, 0); pos.x = (size.x / 2 - sizet.x) / 2; - pos.y = (size.y - (m_file_edit_mask.GetSize().y + sizet.y) / 2); + pos.y = (size.y - (m_file_edit_mask.GetBmpSize().y + sizet.y) / 2); dc.DrawText(cover_text_left, pos); // right text sizet = dc.GetTextExtent(cover_text_right); pos = wxPoint(0, 0); pos.x = size.x / 2 + (size.x / 2 - sizet.x) / 2; - pos.y = (size.y - (m_file_edit_mask.GetSize().y + sizet.y) / 2); + pos.y = (size.y - (m_file_edit_mask.GetBmpSize().y + sizet.y) / 2); dc.DrawText(cover_text_right, pos); // Split @@ -283,7 +283,7 @@ void AuFile::PaintForeground(wxDC &dc) dc.SetBrush(*wxWHITE); pos = wxPoint(0, 0); pos.x = size.x / 2 - 1; - pos.y = size.y - FromDIP(24) - (m_file_edit_mask.GetSize().y - FromDIP(24)) / 2; + pos.y = size.y - FromDIP(24) - (m_file_edit_mask.GetBmpSize().y - FromDIP(24)) / 2; dc.DrawRectangle(pos.x, pos.y, 2, FromDIP(24)); } else { // right text @@ -297,7 +297,7 @@ void AuFile::PaintForeground(wxDC &dc) if (m_cover) { dc.SetTextForeground(*wxWHITE); - dc.DrawBitmap(m_file_cover.get_bitmap(), size.x - m_file_cover.GetSize().x, 0); + dc.DrawBitmap(m_file_cover.bmp(), size.x - m_file_cover.GetBmpSize().x, 0); dc.SetFont(Label::Body_12); auto sizet = dc.GetTextExtent(cover_text_cover); auto pos = wxPoint(0, 0); @@ -306,7 +306,7 @@ void AuFile::PaintForeground(wxDC &dc) dc.DrawText(cover_text_cover, pos); } - if (m_hover) { dc.DrawBitmap(m_file_delete.get_bitmap(), size.x - m_file_delete.GetSize().x - FromDIP(10), FromDIP(10)); } + if (m_hover) { dc.DrawBitmap(m_file_delete.bmp(), size.x - m_file_delete.GetBmpSize().x - FromDIP(10), FromDIP(10)); } } void AuFile::on_mouse_enter(wxMouseEvent &evt) @@ -421,7 +421,7 @@ void AuFile::on_mouse_left_up(wxMouseEvent &evt) auto pos = evt.GetPosition(); // set cover - auto mask_size = wxSize(GetSize().x, m_file_edit_mask.GetSize().y); + auto mask_size = wxSize(GetSize().x, m_file_edit_mask.GetBmpSize().y); auto cover_left = 0; auto cover_top = size.y - mask_size.y; auto cover_right = mask_size.x / 2; @@ -443,10 +443,10 @@ void AuFile::on_mouse_left_up(wxMouseEvent &evt) if (pos.x > rename_left && pos.x < rename_right && pos.y > rename_top && pos.y < rename_bottom) { on_set_rename(); return; } // close - auto close_left = size.x - m_file_delete.GetSize().x - FromDIP(10); + auto close_left = size.x - m_file_delete.GetBmpSize().x - FromDIP(10); auto close_top = FromDIP(10); auto close_right = size.x - FromDIP(10); - auto close_bottom = m_file_delete.GetSize().y + FromDIP(10); + auto close_bottom = m_file_delete.GetBmpSize().y + FromDIP(10); if (pos.x > close_left && pos.x < close_right && pos.y > close_top && pos.y < close_bottom) { on_set_delete(); return; } exit_rename_mode(); diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index 654cdca15a..7e33b8cd8f 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -29,11 +29,6 @@ enum CUSTOM_ID ID_AMS_NOTEBOOK, }; -static bool IsThemeDark() -{ - return wxSystemSettings::GetAppearance().IsDark(); -} - class BBLTopbarArt : public wxAuiDefaultToolBarArt { public: @@ -98,7 +93,9 @@ void BBLTopbarArt::DrawButton(wxDC& dc, wxWindow* wnd, const wxAuiToolBarItem& i int bmpX = 0, bmpY = 0; int textX = 0, textY = 0; - const wxBitmap &bmp = item.GetCurrentBitmapFor(wnd); + const wxBitmap& bmp = item.GetState() & wxAUI_BUTTON_STATE_DISABLED + ? item.GetDisabledBitmap() + : item.GetBitmap(); const wxSize bmpSize = bmp.IsOk() ? bmp.GetScaledSize() : wxSize(0, 0); @@ -135,18 +132,18 @@ void BBLTopbarArt::DrawButton(wxDC& dc, wxWindow* wnd, const wxAuiToolBarItem& i if (item.GetState() & wxAUI_BUTTON_STATE_PRESSED) { dc.SetPen(wxPen(m_highlightColour)); - dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(IsThemeDark() ? 20 : 150))); + dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(20))); dc.DrawRectangle(rect); } else if ((item.GetState() & wxAUI_BUTTON_STATE_HOVER) || item.IsSticky()) { dc.SetPen(wxPen(m_highlightColour)); - dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(IsThemeDark() ? 40 : 170))); + dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(40))); // draw an even lighter background for checked item hovers (since // the hover background is the same color as the check background) if (item.GetState() & wxAUI_BUTTON_STATE_CHECKED) - dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(IsThemeDark() ? 50 : 180))); + dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(50))); dc.DrawRectangle(rect); } @@ -155,7 +152,7 @@ void BBLTopbarArt::DrawButton(wxDC& dc, wxWindow* wnd, const wxAuiToolBarItem& i // it's important to put this code in an else statement after the // hover, otherwise hovers won't draw properly for checked items dc.SetPen(wxPen(m_highlightColour)); - dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(IsThemeDark() ? 40 : 170))); + dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(40))); dc.DrawRectangle(rect); } } @@ -200,25 +197,23 @@ void BBLTopbar::Init(wxFrame* parent) m_skip_popup_dropdown_menu = false; m_skip_popup_calib_menu = false; - m_font.Scale(parent->GetDPIScaleFactor()); - wxInitAllImageHandlers(); this->AddSpacer(5); - /*wxBitmap logo_bitmap = *get_bmp_bundle("topbar_logo", TOPBAR_ICON_SIZE); + /*wxBitmap logo_bitmap = create_scaled_bitmap("topbar_logo", nullptr, TOPBAR_ICON_SIZE); wxAuiToolBarItem* logo_item = this->AddTool(ID_LOGO, "", logo_bitmap); logo_item->SetHoverBitmap(logo_bitmap); logo_item->SetActive(false);*/ - wxBitmapBundle file_bitmap = *get_bmp_bundle("topbar_file", TOPBAR_ICON_SIZE); + wxBitmap file_bitmap = create_scaled_bitmap("topbar_file", nullptr, TOPBAR_ICON_SIZE); m_file_menu_item = this->AddTool(ID_TOP_FILE_MENU, _L("File"), file_bitmap, wxEmptyString, wxITEM_NORMAL); this->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT)); this->AddSpacer(FromDIP(5)); - wxBitmapBundle dropdown_bitmap = *get_bmp_bundle("topbar_dropdown", TOPBAR_ICON_SIZE); + wxBitmap dropdown_bitmap = create_scaled_bitmap("topbar_dropdown", nullptr, TOPBAR_ICON_SIZE); m_dropdown_menu_item = this->AddTool(ID_TOP_DROPDOWN_MENU, "", dropdown_bitmap, wxEmptyString); @@ -226,32 +221,32 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSeparator(); this->AddSpacer(FromDIP(5)); - //wxBitmap open_bitmap = *get_bmp_bundle("topbar_open", TOPBAR_ICON_SIZE); + //wxBitmap open_bitmap = create_scaled_bitmap("topbar_open", nullptr, TOPBAR_ICON_SIZE); //wxAuiToolBarItem* tool_item = this->AddTool(wxID_OPEN, "", open_bitmap); this->AddSpacer(FromDIP(10)); - wxBitmapBundle save_bitmap = *get_bmp_bundle("topbar_save", TOPBAR_ICON_SIZE); + wxBitmap save_bitmap = create_scaled_bitmap("topbar_save", nullptr, TOPBAR_ICON_SIZE); wxAuiToolBarItem* save_btn = this->AddTool(wxID_SAVE, "", save_bitmap); this->AddSpacer(FromDIP(10)); - wxBitmapBundle undo_bitmap = *get_bmp_bundle("topbar_undo", TOPBAR_ICON_SIZE); + wxBitmap undo_bitmap = create_scaled_bitmap("topbar_undo", nullptr, TOPBAR_ICON_SIZE); m_undo_item = this->AddTool(wxID_UNDO, "", undo_bitmap); - wxBitmapBundle undo_inactive_bitmap = *get_bmp_bundle("topbar_undo_inactive", TOPBAR_ICON_SIZE); + wxBitmap undo_inactive_bitmap = create_scaled_bitmap("topbar_undo_inactive", nullptr, TOPBAR_ICON_SIZE); m_undo_item->SetDisabledBitmap(undo_inactive_bitmap); this->AddSpacer(FromDIP(10)); - wxBitmapBundle redo_bitmap = *get_bmp_bundle("topbar_redo", TOPBAR_ICON_SIZE); + wxBitmap redo_bitmap = create_scaled_bitmap("topbar_redo", nullptr, TOPBAR_ICON_SIZE); m_redo_item = this->AddTool(wxID_REDO, "", redo_bitmap); - wxBitmapBundle redo_inactive_bitmap = *get_bmp_bundle("topbar_redo_inactive", TOPBAR_ICON_SIZE); + wxBitmap redo_inactive_bitmap = create_scaled_bitmap("topbar_redo_inactive", nullptr, TOPBAR_ICON_SIZE); m_redo_item->SetDisabledBitmap(redo_inactive_bitmap); this->AddSpacer(FromDIP(10)); - wxBitmapBundle calib_bitmap = *get_bmp_bundle("calib_sf", TOPBAR_ICON_SIZE); - wxBitmapBundle calib_bitmap_inactive = *get_bmp_bundle("calib_sf_inactive", TOPBAR_ICON_SIZE); + wxBitmap calib_bitmap = create_scaled_bitmap("calib_sf", nullptr, TOPBAR_ICON_SIZE); + wxBitmap calib_bitmap_inactive = create_scaled_bitmap("calib_sf_inactive", nullptr, TOPBAR_ICON_SIZE); m_calib_item = this->AddTool(ID_CALIB, _L("Calibration"), calib_bitmap); m_calib_item->SetDisabledBitmap(calib_bitmap_inactive); @@ -264,14 +259,14 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSpacer(FromDIP(10)); this->AddStretchSpacer(1); - m_publish_bitmap = *get_bmp_bundle("topbar_publish", TOPBAR_ICON_SIZE); + m_publish_bitmap = create_scaled_bitmap("topbar_publish", nullptr, TOPBAR_ICON_SIZE); m_publish_item = this->AddTool(ID_PUBLISH, "", m_publish_bitmap); - m_publish_disable_bitmap = *get_bmp_bundle("topbar_publish_disable", TOPBAR_ICON_SIZE); + m_publish_disable_bitmap = create_scaled_bitmap("topbar_publish_disable", nullptr, TOPBAR_ICON_SIZE); m_publish_item->SetDisabledBitmap(m_publish_disable_bitmap); this->EnableTool(m_publish_item->GetId(), false); this->AddSpacer(FromDIP(4)); - /*wxBitmap model_store_bitmap = *get_bmp_bundle("topbar_store", TOPBAR_ICON_SIZE); + /*wxBitmap model_store_bitmap = create_scaled_bitmap("topbar_store", nullptr, TOPBAR_ICON_SIZE); m_model_store_item = this->AddTool(ID_MODEL_STORE, "", model_store_bitmap); this->AddSpacer(12); */ @@ -279,13 +274,13 @@ void BBLTopbar::Init(wxFrame* parent) //this->AddSeparator(); this->AddSpacer(FromDIP(4)); - wxBitmapBundle iconize_bitmap = *get_bmp_bundle("topbar_min", TOPBAR_ICON_SIZE); + wxBitmap iconize_bitmap = create_scaled_bitmap("topbar_min", nullptr, TOPBAR_ICON_SIZE); wxAuiToolBarItem* iconize_btn = this->AddTool(wxID_ICONIZE_FRAME, "", iconize_bitmap); this->AddSpacer(FromDIP(4)); - maximize_bitmap = *get_bmp_bundle("topbar_max", TOPBAR_ICON_SIZE); - window_bitmap = *get_bmp_bundle("topbar_win", TOPBAR_ICON_SIZE); + maximize_bitmap = create_scaled_bitmap("topbar_max", nullptr, TOPBAR_ICON_SIZE); + window_bitmap = create_scaled_bitmap("topbar_win", nullptr, TOPBAR_ICON_SIZE); if (m_frame->IsMaximized()) { maximize_btn = this->AddTool(wxID_MAXIMIZE_FRAME, "", window_bitmap); } @@ -295,7 +290,7 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSpacer(FromDIP(4)); - wxBitmapBundle close_bitmap = *get_bmp_bundle("topbar_close", TOPBAR_ICON_SIZE); + wxBitmap close_bitmap = create_scaled_bitmap("topbar_close", nullptr, TOPBAR_ICON_SIZE); wxAuiToolBarItem* close_btn = this->AddTool(wxID_CLOSE_FRAME, "", close_bitmap); Realize(); @@ -471,51 +466,49 @@ void BBLTopbar::Rescale() { int em = em_unit(this); wxAuiToolBarItem* item; - m_font.Scale(m_frame->GetDPIScaleFactor()); - /*item = this->FindTool(ID_LOGO); - item->SetBitmap(*get_bmp_bundle("topbar_logo", TOPBAR_ICON_SIZE));*/ + item->SetBitmap(create_scaled_bitmap("topbar_logo", nullptr, TOPBAR_ICON_SIZE));*/ item = this->FindTool(ID_TOP_FILE_MENU); - item->SetBitmap(*get_bmp_bundle("topbar_file", TOPBAR_ICON_SIZE)); + item->SetBitmap(create_scaled_bitmap("topbar_file", this, TOPBAR_ICON_SIZE)); item = this->FindTool(ID_TOP_DROPDOWN_MENU); - item->SetBitmap(*get_bmp_bundle("topbar_dropdown", TOPBAR_ICON_SIZE)); + item->SetBitmap(create_scaled_bitmap("topbar_dropdown", this, TOPBAR_ICON_SIZE)); //item = this->FindTool(wxID_OPEN); - //item->SetBitmap(*get_bmp_bundle("topbar_open", nullptr, TOPBAR_ICON_SIZE)); + //item->SetBitmap(create_scaled_bitmap("topbar_open", nullptr, TOPBAR_ICON_SIZE)); item = this->FindTool(wxID_SAVE); - item->SetBitmap(*get_bmp_bundle("topbar_save", TOPBAR_ICON_SIZE)); + item->SetBitmap(create_scaled_bitmap("topbar_save", this, TOPBAR_ICON_SIZE)); item = this->FindTool(wxID_UNDO); - item->SetBitmap(*get_bmp_bundle("topbar_undo", TOPBAR_ICON_SIZE)); - item->SetDisabledBitmap(*get_bmp_bundle("topbar_undo_inactive", TOPBAR_ICON_SIZE)); + item->SetBitmap(create_scaled_bitmap("topbar_undo", this, TOPBAR_ICON_SIZE)); + item->SetDisabledBitmap(create_scaled_bitmap("topbar_undo_inactive", nullptr, TOPBAR_ICON_SIZE)); item = this->FindTool(wxID_REDO); - item->SetBitmap(*get_bmp_bundle("topbar_redo", TOPBAR_ICON_SIZE)); - item->SetDisabledBitmap(*get_bmp_bundle("topbar_redo_inactive", TOPBAR_ICON_SIZE)); + item->SetBitmap(create_scaled_bitmap("topbar_redo", this, TOPBAR_ICON_SIZE)); + item->SetDisabledBitmap(create_scaled_bitmap("topbar_redo_inactive", nullptr, TOPBAR_ICON_SIZE)); item = this->FindTool(ID_CALIB); - item->SetBitmap(*get_bmp_bundle("calib_sf", TOPBAR_ICON_SIZE)); - item->SetDisabledBitmap(*get_bmp_bundle("calib_sf_inactive", TOPBAR_ICON_SIZE)); + item->SetBitmap(create_scaled_bitmap("calib_sf", nullptr, TOPBAR_ICON_SIZE)); + item->SetDisabledBitmap(create_scaled_bitmap("calib_sf_inactive", nullptr, TOPBAR_ICON_SIZE)); item = this->FindTool(ID_TITLE); /*item = this->FindTool(ID_PUBLISH); - item->SetBitmap(*get_bmp_bundle("topbar_publish", TOPBAR_ICON_SIZE)); - item->SetDisabledBitmap(*get_bmp_bundle("topbar_publish_disable", TOPBAR_ICON_SIZE));*/ + item->SetBitmap(create_scaled_bitmap("topbar_publish", this, TOPBAR_ICON_SIZE)); + item->SetDisabledBitmap(create_scaled_bitmap("topbar_publish_disable", nullptr, TOPBAR_ICON_SIZE));*/ /*item = this->FindTool(ID_MODEL_STORE); - item->SetBitmap(*get_bmp_bundle("topbar_store", TOPBAR_ICON_SIZE)); + item->SetBitmap(create_scaled_bitmap("topbar_store", this, TOPBAR_ICON_SIZE)); */ item = this->FindTool(wxID_ICONIZE_FRAME); - item->SetBitmap(*get_bmp_bundle("topbar_min", TOPBAR_ICON_SIZE)); + item->SetBitmap(create_scaled_bitmap("topbar_min", this, TOPBAR_ICON_SIZE)); item = this->FindTool(wxID_MAXIMIZE_FRAME); - maximize_bitmap = *get_bmp_bundle("topbar_max", TOPBAR_ICON_SIZE); - window_bitmap = *get_bmp_bundle("topbar_win", TOPBAR_ICON_SIZE); + maximize_bitmap = create_scaled_bitmap("topbar_max", this, TOPBAR_ICON_SIZE); + window_bitmap = create_scaled_bitmap("topbar_win", this, TOPBAR_ICON_SIZE); if (m_frame->IsMaximized()) { item->SetBitmap(window_bitmap); } @@ -524,7 +517,7 @@ void BBLTopbar::Rescale() { } item = this->FindTool(wxID_CLOSE_FRAME); - item->SetBitmap(*get_bmp_bundle("topbar_close", TOPBAR_ICON_SIZE)); + item->SetBitmap(create_scaled_bitmap("topbar_close", this, TOPBAR_ICON_SIZE)); Realize(); } diff --git a/src/slic3r/GUI/BBLTopbar.hpp b/src/slic3r/GUI/BBLTopbar.hpp index 3311c0011a..78820813a7 100644 --- a/src/slic3r/GUI/BBLTopbar.hpp +++ b/src/slic3r/GUI/BBLTopbar.hpp @@ -75,11 +75,11 @@ private: wxAuiToolBarItem* m_calib_item; wxAuiToolBarItem* maximize_btn; - wxBitmapBundle m_publish_bitmap; - wxBitmapBundle m_publish_disable_bitmap; + wxBitmap m_publish_bitmap; + wxBitmap m_publish_disable_bitmap; - wxBitmapBundle maximize_bitmap; - wxBitmapBundle window_bitmap; + wxBitmap maximize_bitmap; + wxBitmap window_bitmap; int m_toolbar_h; bool m_skip_popup_file_menu; diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index 9eab03ddf9..080a0f7db6 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -13,8 +13,10 @@ #include #endif /* __WXGTK2__ */ -#include -#include +#define NANOSVG_IMPLEMENTATION +#include "nanosvg/nanosvg.h" +#define NANOSVGRAST_IMPLEMENTATION +#include "nanosvg/nanosvgrast.h" namespace Slic3r { namespace GUI { @@ -58,168 +60,7 @@ static wxBitmap wxImage_to_wxBitmap_with_alpha(wxImage &&image, float scale = 1. #endif } -wxBitmapBundle* BitmapCache::insert_bndl(const std::string& name, const std::vector& bmps) -{ - wxVector bitmaps; - - std::set scales = {1.0}; -#ifndef __linux__ - -#ifdef __APPLE__ - scales.emplace(m_scale); -#else - size_t disp_cnt = wxDisplay::GetCount(); - for (size_t disp = 0; disp < disp_cnt; ++disp) - scales.emplace(wxDisplay(disp).GetScaleFactor()); -#endif - -#endif // !__linux__ - - for (double scale : scales) { - size_t width = 0; - size_t height = 0; - for (const wxBitmapBundle* bmp_bndl : bmps) { -#ifdef __APPLE__ - wxSize size = bmp_bndl->GetDefaultSize(); -#else - wxSize size = bmp_bndl->GetPreferredBitmapSizeAtScale(scale); -#endif - width += size.GetWidth(); - height = std::max(height, size.GetHeight()); - } - - std::string bitmap_key = name + "," +float_to_string_decimal_point(scale); - -#ifdef __WXGTK2__ - // Broken alpha workaround - wxImage image(width, height); - image.InitAlpha(); - // Fill in with a white color. - memset(image.GetData(), 0x0ff, width * height * 3); - // Fill in with full transparency. - memset(image.GetAlpha(), 0, width * height); - size_t x = 0; - for (const wxBitmapBundle* bmp_bndl : bmps) { - wxBitmap bmp = bmp_bndl->GetBitmap(bmp_bndl->GetDefaultSize()); - if (bmp.GetWidth() > 0) { - if (bmp.GetDepth() == 32) { - wxAlphaPixelData data(bmp); - //FIXME The following method is missing from wxWidgets 3.1.1. - // It looks like the wxWidgets 3.0.3 called the wrapped bitmap's UseAlpha(). - //data.UseAlpha(); - if (data) { - for (int r = 0; r < bmp.GetHeight(); ++r) { - wxAlphaPixelData::Iterator src(data); - src.Offset(data, 0, r); - unsigned char* dst_pixels = image.GetData() + (x + r * width) * 3; - unsigned char* dst_alpha = image.GetAlpha() + x + r * width; - for (int c = 0; c < bmp.GetWidth(); ++c, ++src) { - *dst_pixels++ = src.Red(); - *dst_pixels++ = src.Green(); - *dst_pixels++ = src.Blue(); - *dst_alpha++ = src.Alpha(); - } - } - } - } - else if (bmp.GetDepth() == 24) { - wxNativePixelData data(bmp); - if (data) { - for (int r = 0; r < bmp.GetHeight(); ++r) { - wxNativePixelData::Iterator src(data); - src.Offset(data, 0, r); - unsigned char* dst_pixels = image.GetData() + (x + r * width) * 3; - unsigned char* dst_alpha = image.GetAlpha() + x + r * width; - for (int c = 0; c < bmp.GetWidth(); ++c, ++src) { - *dst_pixels++ = src.Red(); - *dst_pixels++ = src.Green(); - *dst_pixels++ = src.Blue(); - *dst_alpha++ = wxALPHA_OPAQUE; - } - } - } - } - } - x += bmp.GetScaledWidth(); - } - - bitmaps.push_back(* this->insert(bitmap_key, wxImage_to_wxBitmap_with_alpha(std::move(image)))); - -#else - - wxBitmap* bitmap = this->insert(bitmap_key, width, height, scale); - wxMemoryDC memDC; - memDC.SelectObject(*bitmap); - memDC.SetBackground(*wxTRANSPARENT_BRUSH); - memDC.Clear(); - size_t x = 0; - for (const wxBitmapBundle* bmp_bndl : bmps) { - wxBitmap bmp = bmp_bndl->GetBitmap(bmp_bndl->GetPreferredBitmapSizeAtScale(scale)); - - if (bmp.GetWidth() > 0) - memDC.DrawBitmap(bmp, x, 0, true); - // we should "move" with step equal to non-scaled width -#ifdef __APPLE__ - x += bmp.GetScaledWidth(); -#else - x += bmp.GetWidth(); -#endif - } - memDC.SelectObject(wxNullBitmap); - bitmaps.push_back(*bitmap); - -#endif - } - - return insert_bndl(name, bitmaps); -} - -wxBitmapBundle* BitmapCache::insert_bndl(const std::string &bitmap_key, const char* data, size_t width, size_t height) -{ - wxBitmapBundle* bndl = nullptr; - auto it = m_bndl_map.find(bitmap_key); - if (it == m_bndl_map.end()) { - bndl = new wxBitmapBundle(wxBitmapBundle::FromSVG(data, wxSize(width, height))); - m_bndl_map[bitmap_key] = bndl; - } - else { - bndl = it->second; - *bndl = wxBitmapBundle::FromSVG(data, wxSize(width, height)); - } - return bndl; -} - -wxBitmapBundle* BitmapCache::insert_bndl(const std::string& bitmap_key, const wxBitmapBundle& bmp) -{ - wxBitmapBundle* bndl = nullptr; - auto it = m_bndl_map.find(bitmap_key); - if (it == m_bndl_map.end()) { - bndl = new wxBitmapBundle(bmp); - m_bndl_map[bitmap_key] = bndl; - } - else { - bndl = it->second; - *bndl = wxBitmapBundle(bmp); - } - return bndl; -} - -wxBitmapBundle* BitmapCache::insert_bndl(const std::string& bitmap_key, const wxVector& bmps) -{ - wxBitmapBundle* bndl = nullptr; - auto it = m_bndl_map.find(bitmap_key); - if (it == m_bndl_map.end()) { - bndl = new wxBitmapBundle(wxBitmapBundle::FromBitmaps(bmps)); - m_bndl_map[bitmap_key] = bndl; - } - else { - bndl = it->second; - *bndl = wxBitmapBundle::FromBitmaps(bmps); - } - return bndl; -} - -wxBitmap* BitmapCache::insert(const std::string &bitmap_key, size_t width, size_t height, double scale/* = -1.0*/) +wxBitmap* BitmapCache::insert(const std::string &bitmap_key, size_t width, size_t height) { wxBitmap *bitmap = nullptr; auto it = m_map.find(bitmap_key); @@ -235,7 +76,7 @@ wxBitmap* BitmapCache::insert(const std::string &bitmap_key, size_t width, size_ // So, We need to let the Mac OS wxBitmap implementation // know that the image may already be scaled appropriately for Retina, // and thereby that it's not supposed to upscale it. - bitmap->CreateScaled(width, height, -1, scale < 0.0 ? m_scale : scale); + bitmap->CreateScaled(width, height, -1, m_scale); #endif m_map[bitmap_key] = bitmap; } else { @@ -264,6 +105,110 @@ wxBitmap* BitmapCache::insert(const std::string &bitmap_key, const wxBitmap &bmp return bitmap; } +wxBitmap* BitmapCache::insert(const std::string &bitmap_key, const wxBitmap &bmp, const wxBitmap &bmp2) +{ + // Copying the wxBitmaps is cheap as the bitmap's content is reference counted. + const wxBitmap bmps[2] = { bmp, bmp2 }; + return this->insert(bitmap_key, bmps, bmps + 2); +} + +wxBitmap* BitmapCache::insert(const std::string &bitmap_key, const wxBitmap &bmp, const wxBitmap &bmp2, const wxBitmap &bmp3) +{ + // Copying the wxBitmaps is cheap as the bitmap's content is reference counted. + const wxBitmap bmps[3] = { bmp, bmp2, bmp3 }; + return this->insert(bitmap_key, bmps, bmps + 3); +} + +wxBitmap* BitmapCache::insert(const std::string &bitmap_key, const wxBitmap *begin, const wxBitmap *end) +{ + size_t width = 0; + size_t height = 0; + for (const wxBitmap *bmp = begin; bmp != end; ++ bmp) { +#ifdef __APPLE__ + width += bmp->GetScaledWidth(); + height = std::max(height, bmp->GetScaledHeight()); +#else + width += bmp->GetWidth(); + height = std::max(height, bmp->GetHeight()); +#endif + } + +#ifdef __WXGTK2__ + // Broken alpha workaround + wxImage image(width, height); + image.InitAlpha(); + // Fill in with a white color. + memset(image.GetData(), 0x0ff, width * height * 3); + // Fill in with full transparency. + memset(image.GetAlpha(), 0, width * height); + size_t x = 0; + for (const wxBitmap *bmp = begin; bmp != end; ++ bmp) { + if (bmp->GetWidth() > 0) { + if (bmp->GetDepth() == 32) { + wxAlphaPixelData data(*const_cast(bmp)); + //FIXME The following method is missing from wxWidgets 3.1.1. + // It looks like the wxWidgets 3.0.3 called the wrapped bitmap's UseAlpha(). + //data.UseAlpha(); + if (data) { + for (int r = 0; r < bmp->GetHeight(); ++ r) { + wxAlphaPixelData::Iterator src(data); + src.Offset(data, 0, r); + unsigned char *dst_pixels = image.GetData() + (x + r * width) * 3; + unsigned char *dst_alpha = image.GetAlpha() + x + r * width; + for (int c = 0; c < bmp->GetWidth(); ++ c, ++ src) { + *dst_pixels ++ = src.Red(); + *dst_pixels ++ = src.Green(); + *dst_pixels ++ = src.Blue(); + *dst_alpha ++ = src.Alpha(); + } + } + } + } else if (bmp->GetDepth() == 24) { + wxNativePixelData data(*const_cast(bmp)); + if (data) { + for (int r = 0; r < bmp->GetHeight(); ++ r) { + wxNativePixelData::Iterator src(data); + src.Offset(data, 0, r); + unsigned char *dst_pixels = image.GetData() + (x + r * width) * 3; + unsigned char *dst_alpha = image.GetAlpha() + x + r * width; + for (int c = 0; c < bmp->GetWidth(); ++ c, ++ src) { + *dst_pixels ++ = src.Red(); + *dst_pixels ++ = src.Green(); + *dst_pixels ++ = src.Blue(); + *dst_alpha ++ = wxALPHA_OPAQUE; + } + } + } + } + } + x += bmp->GetWidth(); + } + return this->insert(bitmap_key, wxImage_to_wxBitmap_with_alpha(std::move(image))); + +#else + + wxBitmap *bitmap = this->insert(bitmap_key, width, height); + wxMemoryDC memDC; + memDC.SelectObject(*bitmap); + memDC.SetBackground(*wxTRANSPARENT_BRUSH); + memDC.Clear(); + size_t x = 0; + for (const wxBitmap *bmp = begin; bmp != end; ++ bmp) { + if (bmp->GetWidth() > 0) + memDC.DrawBitmap(*bmp, x, 0, true); +#ifdef __APPLE__ + // we should "move" with step equal to non-scaled width + x += bmp->GetScaledWidth(); +#else + x += bmp->GetWidth(); +#endif + } + memDC.SelectObject(wxNullBitmap); + return bitmap; + +#endif +} + wxBitmap* BitmapCache::insert_raw_rgba(const std::string &bitmap_key, unsigned width, unsigned height, const unsigned char *raw_data, const bool grayscale/* = false*/) { wxImage image(width, height); @@ -360,102 +305,7 @@ error: return NULL; } -void BitmapCache::nsvgGetDataFromFileWithReplace(const char* filename, std::string& data_str, const std::map& replaces) -{ - FILE* fp = NULL; - size_t size; - char* data = NULL; - - fp = boost::nowide::fopen(filename, "rb"); - if (!fp) goto error; - fseek(fp, 0, SEEK_END); - size = ftell(fp); - fseek(fp, 0, SEEK_SET); - data = (char*)malloc(size + 1); - if (data == NULL) goto error; - if (fread(data, 1, size, fp) != size) goto error; - data[size] = '\0'; // Must be null terminated. - fclose(fp); - - data_str.assign(data); - for (auto val : replaces) - boost::replace_all(data_str, val.first, val.second); - - free(data); - return; - -error: - if (fp) fclose(fp); - if (data) free(data); - return; -} - -wxBitmapBundle* BitmapCache::from_svg(const std::string& bitmap_name, unsigned target_width, unsigned target_height, - const bool dark_mode, const std::string& new_color /*= ""*/) -{ - if (target_width == 0) - target_width = target_height; - std::string bitmap_key = bitmap_name + (target_height != 0 ? - "-h" + std::to_string(target_height) : - "-w" + std::to_string(target_width)) - + (dark_mode ? "-dm" : "") - + new_color; - - auto it = m_bndl_map.find(bitmap_key); - if (it != m_bndl_map.end()) - return it->second; - - // map of color replaces - //Orca: use replaces from load_svg function - std::map replaces; - replaces["\"#0x00AE42\""] = "\"#009688\""; - replaces["\"#00FF00\""] = "\"#52c7b8\""; - if (dark_mode) { - replaces["\"#262E30\""] = "\"#EFEFF0\""; - replaces["\"#323A3D\""] = "\"#B3B3B5\""; - replaces["\"#808080\""] = "\"#818183\""; - replaces["\"#CECECE\""] = "\"#54545B\""; - replaces["\"#6B6B6B\""] = "\"#818182\""; - replaces["\"#909090\""] = "\"#FFFFFF\""; - replaces["\"#00FF00\""] = "\"#FF0000\""; - replaces["\"#009688\""] = "\"#00675b\""; - } - - std::string str; - nsvgGetDataFromFileWithReplace(Slic3r::var(bitmap_name + ".svg").c_str(), str, replaces); - if (str.empty()) - return nullptr; - - return insert_bndl(bitmap_key, str.data(), target_width, target_height); -} - -wxBitmapBundle* BitmapCache::from_png(const std::string& bitmap_name, unsigned width, unsigned height) -{ - std::string bitmap_key = bitmap_name + (height != 0 ? - "-h" + std::to_string(height) : - "-w" + std::to_string(width)); - - auto it = m_bndl_map.find(bitmap_key); - if (it != m_bndl_map.end()) - return it->second; - - wxImage image; - if (!image.LoadFile(Slic3r::GUI::from_u8(Slic3r::var(bitmap_name + ".png")), wxBITMAP_TYPE_PNG) || - image.GetWidth() == 0 || image.GetHeight() == 0) - return nullptr; - - if (height != 0 && unsigned(image.GetHeight()) != height) - width = unsigned(0.5f + float(image.GetWidth()) * height / image.GetHeight()); - else if (width != 0 && unsigned(image.GetWidth()) != width) - height = unsigned(0.5f + float(image.GetHeight()) * width / image.GetWidth()); - - if (height != 0 && width != 0) - image.Rescale(width, height, wxIMAGE_QUALITY_BILINEAR); - - return this->insert_bndl(bitmap_key, wxImage_to_wxBitmap_with_alpha(std::move(image))); -} - -wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_width, unsigned target_height, +wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_width, unsigned target_height, const bool grayscale/* = false*/, const bool dark_mode/* = false*/, const std::string& new_color /*= ""*/, const float scale_in_center/* = 0*/) { std::string bitmap_key = bitmap_name + ( target_height !=0 ? @@ -472,7 +322,7 @@ wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_ // map of color replaces std::map replaces; - replaces["\"#0x00AE42\""] = "\"#009688\""; +replaces["\"#0x00AE42\""] = "\"#009688\""; replaces["\"#00FF00\""] = "\"#52c7b8\""; if (dark_mode) { replaces["\"#262E30\""] = "\"#EFEFF0\""; @@ -483,7 +333,7 @@ wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_ replaces["\"#6B6B6B\""] = "\"#818182\""; replaces["\"#909090\""] = "\"#FFFFFF\""; replaces["\"#00FF00\""] = "\"#FF0000\""; - replaces["\"#009688\""] = "\"#00675b\""; +replaces["\"#009688\""] = "\"#00675b\""; } //if (!new_color.empty()) // replaces["\"#ED6B21\""] = "\"" + new_color + "\""; @@ -536,9 +386,9 @@ wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_ return this->insert_raw_rgba(bitmap_key, width, height, data.data(), grayscale); } -/* + //we make scaled solid bitmaps only for the cases, when its will be used with scaled SVG icon in one output bitmap -wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, bool suppress_scaling/* = false* /, size_t border_width /*= 0* /, bool dark_mode/* = false* /) +wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, bool suppress_scaling/* = false*/, size_t border_width /*= 0*/, bool dark_mode/* = false*/) { double scale = suppress_scaling ? 1.0f : m_scale; width *= scale; @@ -580,89 +430,6 @@ wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsi return wxImage_to_wxBitmap_with_alpha(std::move(image), scale); } -*/ -//we make scaled solid bitmaps only for the cases, when its will be used with scaled SVG icon in one output bitmap -wxBitmapBundle BitmapCache::mksolid(size_t width_in, size_t height_in, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, size_t border_width /*= 0*/, bool dark_mode/* = false*/) -{ - wxVector bitmaps; - - std::set scales = { 1.0 }; -#ifndef __linux__ - -#ifdef __APPLE__ - scales.emplace(m_scale); -#else - size_t disp_cnt = wxDisplay::GetCount(); - for (size_t disp = 0; disp < disp_cnt; ++disp) - scales.emplace(wxDisplay(disp).GetScaleFactor()); -#endif - -#endif // !__linux__ - - for (double scale : scales) { - size_t width = width_in * scale; - size_t height = height_in * scale; - - wxImage image(width, height); - image.InitAlpha(); - unsigned char* imgdata = image.GetData(); - unsigned char* imgalpha = image.GetAlpha(); - for (size_t i = 0; i < width * height; ++i) { - *imgdata++ = r; - *imgdata++ = g; - *imgdata++ = b; - *imgalpha++ = transparency; - } - - // Add border, make white/light spools easier to see - if (border_width > 0) { - - // Restrict to width of image - if (border_width > height) border_width = height - 1; - if (border_width > width) border_width = width - 1; - - auto px_data = (uint8_t*)image.GetData(); - auto a_data = (uint8_t*)image.GetAlpha(); - - for (size_t x = 0; x < width; ++x) { - for (size_t y = 0; y < height; ++y) { - if (x < border_width || y < border_width || - x >= (width - border_width) || y >= (height - border_width)) { - const size_t idx = (x + y * width); - const size_t idx_rgb = (x + y * width) * 3; - px_data[idx_rgb] = px_data[idx_rgb + 1] = px_data[idx_rgb + 2] = dark_mode ? 245u : 110u; - a_data[idx] = 255u; - } - } - } - } - - bitmaps.push_back(wxImage_to_wxBitmap_with_alpha(std::move(image), scale)); - } - return wxBitmapBundle::FromBitmaps(bitmaps); -} - -wxBitmapBundle* BitmapCache::mksolid_bndl(size_t width, size_t height, const std::string& color, size_t border_width, bool dark_mode) -{ - std::string bitmap_key = (color.empty() ? "empty" : color) + "-h" + std::to_string(height) + "-w" + std::to_string(width) + (dark_mode ? "-dm" : ""); - - wxBitmapBundle* bndl = nullptr; - auto it = m_bndl_map.find(bitmap_key); - if (it == m_bndl_map.end()) { - if (color.empty()) - bndl = new wxBitmapBundle(mksolid(width, height, 0, 0, 0, wxALPHA_TRANSPARENT, size_t(0))); - else { - ColorRGB rgb;// [3] - decode_color(color, rgb); - bndl = new wxBitmapBundle(mksolid(width, height, rgb.r_uchar(), rgb.g_uchar(), rgb.b_uchar(), wxALPHA_OPAQUE, border_width, dark_mode)); - } - m_bndl_map[bitmap_key] = bndl; - } - else - return it->second; - - return bndl; -} bool BitmapCache::parse_color(const std::string& scolor, unsigned char* rgb_out) { diff --git a/src/slic3r/GUI/BitmapCache.hpp b/src/slic3r/GUI/BitmapCache.hpp index 54062777b4..ab9e457240 100644 --- a/src/slic3r/GUI/BitmapCache.hpp +++ b/src/slic3r/GUI/BitmapCache.hpp @@ -12,8 +12,7 @@ #include "libslic3r/Color.hpp" struct NSVGimage; -namespace Slic3r { -namespace GUI { +namespace Slic3r { namespace GUI { class BitmapCache { @@ -23,23 +22,15 @@ public: void clear(); double scale() { return m_scale; } - wxBitmapBundle* find_bndl(const std::string &name) { auto it = m_bndl_map.find(name); return (it == m_bndl_map.end()) ? nullptr : it->second; } - const wxBitmapBundle* find_bndl(const std::string &name) const { return const_cast(this)->find_bndl(name); } wxBitmap* find(const std::string &name) { auto it = m_map.find(name); return (it == m_map.end()) ? nullptr : it->second; } const wxBitmap* find(const std::string &name) const { return const_cast(this)->find(name); } - wxBitmapBundle* insert_bndl(const std::string& bitmap_key, const char* data, size_t width, size_t height); - wxBitmapBundle* insert_bndl(const std::string& bitmap_key, const wxBitmapBundle &bmp); - wxBitmapBundle* insert_bndl(const std::string& bitmap_key, const wxVector& bmps); - wxBitmapBundle* insert_bndl(const std::string& name, const std::vector& bmps); - wxBitmapBundle* insert_raw_rgba_bndl(const std::string &bitmap_key, unsigned width, unsigned height, const unsigned char *raw_data, const bool grayscale = false); - - wxBitmap* insert(const std::string &name, size_t width, size_t height, double scale = -1.0); + wxBitmap* insert(const std::string &name, size_t width, size_t height); wxBitmap* insert(const std::string &name, const wxBitmap &bmp); -// wxBitmap* insert(const std::string &name, const wxBitmap &bmp, const wxBitmap &bmp2); -// wxBitmap* insert(const std::string &name, const wxBitmap &bmp, const wxBitmap &bmp2, const wxBitmap &bmp3); -// wxBitmap* insert(const std::string &name, const std::vector &bmps) { return this->insert(name, &bmps.front(), &bmps.front() + bmps.size()); } -// wxBitmap* insert(const std::string &name, const wxBitmap *begin, const wxBitmap *end); + wxBitmap* insert(const std::string &name, const wxBitmap &bmp, const wxBitmap &bmp2); + wxBitmap* insert(const std::string &name, const wxBitmap &bmp, const wxBitmap &bmp2, const wxBitmap &bmp3); + wxBitmap* insert(const std::string &name, const std::vector &bmps) { return this->insert(name, &bmps.front(), &bmps.front() + bmps.size()); } + wxBitmap* insert(const std::string &name, const wxBitmap *begin, const wxBitmap *end); wxBitmap* insert_raw_rgba(const std::string &bitmap_key, unsigned width, unsigned height, const unsigned char *raw_data, const bool grayscale = false); // BBS: support resize by fill border (scale_in_center) @@ -50,28 +41,19 @@ public: // And makes replases befor parsing // replace_map containes old_value->new_value static NSVGimage* nsvgParseFromFileWithReplace(const char* filename, const char* units, float dpi, const std::map& replaces); - // Gets a data from SVG file and makes replases - // replace_map containes old_value->new_value - static void nsvgGetDataFromFileWithReplace(const char* filename, std::string& data_str, const std::map& replaces); - wxBitmapBundle* from_svg(const std::string& bitmap_name, unsigned target_width, unsigned target_height, const bool dark_mode, const std::string& new_color = ""); - wxBitmapBundle* from_png(const std::string& bitmap_name, unsigned width, unsigned height); // Load svg from resources/icons. bitmap_key is given without the .svg suffix. SVG will be rasterized to provided height/width. wxBitmap* load_svg(const std::string &bitmap_key, unsigned width = 0, unsigned height = 0, const bool grayscale = false, const bool dark_mode = false, const std::string& new_color = "", const float scale_in_center = 0.f); -// wxBitmap mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false); -// wxBitmap mksolid(size_t width, size_t height, const unsigned char rgb[3], bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false) { return mksolid(width, height, rgb[0], rgb[1], rgb[2], wxALPHA_OPAQUE, suppress_scaling, border_width, dark_mode); } -// wxBitmap mksolid(size_t width, size_t height, const ColorRGB& rgb, bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false) { return mksolid(width, height, rgb.r_uchar(), rgb.g_uchar(), rgb.b_uchar(), wxALPHA_OPAQUE, suppress_scaling, border_width, dark_mode); } -// wxBitmap mkclear(size_t width, size_t height) { return mksolid(width, height, 0, 0, 0, wxALPHA_TRANSPARENT, true, 0); } - wxBitmapBundle mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, size_t border_width = 0, bool dark_mode = false); - wxBitmapBundle* mksolid_bndl(size_t width, size_t height, const std::string& color = std::string(), size_t border_width = 0, bool dark_mode = false); - wxBitmapBundle* mkclear_bndl(size_t width, size_t height) { return mksolid_bndl(width, height); } + wxBitmap mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false); + wxBitmap mksolid(size_t width, size_t height, const unsigned char rgb[3], bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false) { return mksolid(width, height, rgb[0], rgb[1], rgb[2], wxALPHA_OPAQUE, suppress_scaling, border_width, dark_mode); } + wxBitmap mksolid(size_t width, size_t height, const ColorRGB& rgb, bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false) { return mksolid(width, height, rgb.r_uchar(), rgb.g_uchar(), rgb.b_uchar(), wxALPHA_OPAQUE, suppress_scaling, border_width, dark_mode); } + wxBitmap mkclear(size_t width, size_t height) { return mksolid(width, height, 0, 0, 0, wxALPHA_TRANSPARENT); } static bool parse_color(const std::string& scolor, unsigned char* rgb_out); static bool parse_color4(const std::string& scolor, unsigned char* rgba_out); private: std::map m_map; - std::map m_bndl_map; double m_gs = 0.2; // value, used for image.ConvertToGreyscale(m_gs, m_gs, m_gs) double m_scale = 1.0; // value, used for correct scaling of SVG icons on Retina display }; diff --git a/src/slic3r/GUI/BitmapComboBox.cpp b/src/slic3r/GUI/BitmapComboBox.cpp index 24a971eb88..36c15343d3 100644 --- a/src/slic3r/GUI/BitmapComboBox.cpp +++ b/src/slic3r/GUI/BitmapComboBox.cpp @@ -54,6 +54,17 @@ using Slic3r::GUI::format_wxstr; namespace Slic3r { namespace GUI { +/* For PresetComboBox we use bitmaps that are created from images that are already scaled appropriately for Retina + * (Contrary to the intuition, the `scale` argument for Bitmap's constructor doesn't mean + * "please scale this to such and such" but rather + * "the wxImage is already sized for backing scale such and such". ) + * Unfortunately, the constructor changes the size of wxBitmap too. + * Thus We need to use unscaled size value for bitmaps that we use + * to avoid scaled size of control items. + * For this purpose control drawing methods and + * control size calculation methods (virtual) are overridden. + **/ + BitmapComboBox::BitmapComboBox(wxWindow* parent, wxWindowID id/* = wxID_ANY*/, const wxString& value/* = wxEmptyString*/, @@ -79,6 +90,72 @@ BitmapComboBox::~BitmapComboBox() { } +#ifdef __APPLE__ +bool BitmapComboBox::OnAddBitmap(const wxBitmap& bitmap) +{ + if (bitmap.IsOk()) + { + // we should use scaled! size values of bitmap + int width = (int)bitmap.GetScaledWidth(); + int height = (int)bitmap.GetScaledHeight(); + + if (m_usedImgSize.x < 0) + { + // If size not yet determined, get it from this image. + m_usedImgSize.x = width; + m_usedImgSize.y = height; + + // Adjust control size to vertically fit the bitmap + wxWindow* ctrl = GetControl(); + ctrl->InvalidateBestSize(); + wxSize newSz = ctrl->GetBestSize(); + wxSize sz = ctrl->GetSize(); + if (newSz.y > sz.y) + ctrl->SetSize(sz.x, newSz.y); + else + DetermineIndent(); + } + + wxCHECK_MSG(width == m_usedImgSize.x && height == m_usedImgSize.y, + false, + "you can only add images of same size"); + + return true; + } + + return false; +} + +void BitmapComboBox::OnDrawItem(wxDC& dc, + const wxRect& rect, + int item, + int flags) const +{ + const wxBitmap& bmp = *(static_cast(m_bitmaps[item])); + if (bmp.IsOk()) + { + // we should use scaled! size values of bitmap + wxCoord w = bmp.GetScaledWidth(); + wxCoord h = bmp.GetScaledHeight(); + + const int imgSpacingLeft = 4; + + // Draw the image centered + dc.DrawBitmap(bmp, + rect.x + (m_usedImgSize.x - w) / 2 + imgSpacingLeft, + rect.y + (rect.height - h) / 2, + true); + } + + wxString text = GetString(item); + if (!text.empty()) + dc.DrawText(text, + rect.x + m_imgAreaWidth + 1, + rect.y + (rect.height - dc.GetCharHeight()) / 2); +} +#endif + + #ifdef _WIN32 int BitmapComboBox::Append(const wxString& item) @@ -89,11 +166,18 @@ int BitmapComboBox::Append(const wxString& item) //2. But then set width to 0 value for no using of bitmap left and right spacing //3. Set this empty bitmap to the at list one item and BitmapCombobox will be recreated correct - wxBitmapBundle bitmap = *get_empty_bmp_bundle(1, 16); + wxBitmap bitmap(1, int(1.6 * wxGetApp().em_unit() + 1)); + { + // bitmap.SetWidth(0); is depricated now + // so, use next code + bitmap.UnShare();// AllocExclusive(); + bitmap.GetGDIImageData()->m_width = 0; + } + OnAddBitmap(bitmap); - const int n = wxComboBox::Append(item); - + if (n != wxNOT_FOUND) + DoSetItemBitmap(n, bitmap); return n; } diff --git a/src/slic3r/GUI/BitmapComboBox.hpp b/src/slic3r/GUI/BitmapComboBox.hpp index 545213fc3c..a77bf401d6 100644 --- a/src/slic3r/GUI/BitmapComboBox.hpp +++ b/src/slic3r/GUI/BitmapComboBox.hpp @@ -29,13 +29,28 @@ BitmapComboBox(wxWindow* parent, #ifdef _WIN32 int Append(const wxString& item); #endif - int Append(const wxString& item, const wxBitmapBundle& bitmap) + int Append(const wxString& item, const wxBitmap& bitmap) { return wxBitmapComboBox::Append(item, bitmap); } protected: +#ifdef __APPLE__ +/* For PresetComboBox we use bitmaps that are created from images that are already scaled appropriately for Retina + * (Contrary to the intuition, the `scale` argument for Bitmap's constructor doesn't mean + * "please scale this to such and such" but rather + * "the wxImage is already sized for backing scale such and such". ) + * Unfortunately, the constructor changes the size of wxBitmap too. + * Thus We need to use unscaled size value for bitmaps that we use + * to avoid scaled size of control items. + * For this purpose control drawing methods and + * control size calculation methods (virtual) are overridden. + **/ +bool OnAddBitmap(const wxBitmap& bitmap) override; +void OnDrawItem(wxDC& dc, const wxRect& rect, int item, int flags) const override; +#endif + #ifdef _WIN32 bool MSWOnDraw(WXDRAWITEMSTRUCT* item) override; void DrawBackground_(wxDC& dc, const wxRect& rect, int WXUNUSED(item), int flags) const; diff --git a/src/slic3r/GUI/CalibrationPanel.cpp b/src/slic3r/GUI/CalibrationPanel.cpp index 465fc95e6f..88e107da84 100644 --- a/src/slic3r/GUI/CalibrationPanel.cpp +++ b/src/slic3r/GUI/CalibrationPanel.cpp @@ -102,9 +102,9 @@ void MObjectPanel::doRender(wxDC& dc) if (m_state == PrinterState::IN_LAN) { dwbitmap = m_printer_in_lan; } // dc.DrawCircle(left, size.y / 2, 3); - dc.DrawBitmap(dwbitmap.get_bitmap(), wxPoint(left, (size.y - dwbitmap.GetSize().y) / 2)); + dc.DrawBitmap(dwbitmap.bmp(), wxPoint(left, (size.y - dwbitmap.GetBmpSize().y) / 2)); - left += dwbitmap.GetSize().x + 8; + left += dwbitmap.GetBmpSize().x + 8; dc.SetFont(Label::Body_13); dc.SetBackgroundMode(wxTRANSPARENT); dc.SetTextForeground(StateColor::darkModeColorFor(SELECT_MACHINE_GREY900)); diff --git a/src/slic3r/GUI/CalibrationWizardPage.cpp b/src/slic3r/GUI/CalibrationWizardPage.cpp index 648ce0871c..f3ff77313b 100644 --- a/src/slic3r/GUI/CalibrationWizardPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPage.cpp @@ -371,7 +371,7 @@ CaliPageCaption::CaliPageCaption(wxWindow* parent, CalibMode cali_mode, auto top_sizer = new wxBoxSizer(wxVERTICAL); auto caption_sizer = new wxBoxSizer(wxHORIZONTAL); m_prev_btn = new ScalableButton(this, wxID_ANY, "cali_page_caption_prev", - wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, 30); + wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true, 30); m_prev_btn->SetBackgroundColour(*wxWHITE); caption_sizer->Add(m_prev_btn, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(10)); @@ -382,7 +382,7 @@ CaliPageCaption::CaliPageCaption(wxWindow* parent, CalibMode cali_mode, caption_sizer->Add(title_text, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(10)); m_help_btn = new ScalableButton(this, wxID_ANY, "cali_page_caption_help", - wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, 30); + wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true, 30); m_help_btn->Hide(); m_help_btn->SetBackgroundColour(*wxWHITE); caption_sizer->Add(m_help_btn, 0, wxALIGN_CENTER); @@ -472,12 +472,12 @@ void CaliPageCaption::show_help_icon(bool show) void CaliPageCaption::on_sys_color_changed() { - m_prev_btn->sys_color_changed(); + m_prev_btn->msw_rescale(); } void CaliPageCaption::msw_rescale() { - m_prev_btn->sys_color_changed(); + m_prev_btn->msw_rescale(); } CaliPageStepGuide::CaliPageStepGuide(wxWindow* parent, wxArrayString steps, @@ -593,7 +593,7 @@ PAPageHelpPanel::PAPageHelpPanel(wxWindow* parent, bool ground_panel, wxWindowID wxBoxSizer* help_text_sizer = new wxBoxSizer(wxHORIZONTAL); auto help_text = new Label(this, _L("You could change the Flow Dynamics Calibration Factor in material editing")); help_text->SetFont(Label::Body_14); - m_help_btn = new ScalableButton(this, wxID_ANY, "cali_page_caption_help", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, 24); + m_help_btn = new ScalableButton(this, wxID_ANY, "cali_page_caption_help", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 24); m_help_btn->SetBackgroundColour(m_help_btn->GetParent()->GetBackgroundColour()); help_text_sizer->Add(help_text, 0, wxALIGN_CENTER | wxLEFT, left_align_padding); help_text_sizer->Add(m_help_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(8)); @@ -611,8 +611,8 @@ PAPageHelpPanel::PAPageHelpPanel(wxWindow* parent, bool ground_panel, wxWindowID void PAPageHelpPanel::msw_rescale() { - m_help_btn->sys_color_changed(); - m_bmp.sys_color_changed(); + m_help_btn->msw_rescale(); + m_bmp.msw_rescale(); m_img->SetBitmap(m_bmp.bmp()); } diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 23e611f43b..83f385365c 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -448,7 +448,7 @@ CalibrationPresetPage::CalibrationPresetPage( void CalibrationPresetPage::msw_rescale() { CalibrationWizardPage::msw_rescale(); - m_ams_sync_button->sys_color_changed(); + m_ams_sync_button->msw_rescale(); m_virtual_tray_comboBox->msw_rescale(); for (auto& comboBox : m_filament_comboBox_list) { comboBox->msw_rescale(); @@ -458,7 +458,7 @@ void CalibrationPresetPage::msw_rescale() void CalibrationPresetPage::on_sys_color_changed() { CalibrationWizardPage::on_sys_color_changed(); - m_ams_sync_button->sys_color_changed(); + m_ams_sync_button->msw_rescale(); } void CalibrationPresetPage::create_selection_panel(wxWindow* parent) @@ -507,7 +507,7 @@ void CalibrationPresetPage::create_selection_panel(wxWindow* parent) filament_for_text->SetFont(Label::Head_14); filament_for_title_sizer->Add(filament_for_text, 0, wxALIGN_CENTER); filament_for_title_sizer->AddSpacer(FromDIP(25)); - m_ams_sync_button = new ScalableButton(parent, wxID_ANY, "ams_fila_sync", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, 18); + m_ams_sync_button = new ScalableButton(parent, wxID_ANY, "ams_fila_sync", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 18); m_ams_sync_button->SetBackgroundColour(*wxWHITE); m_ams_sync_button->SetToolTip(_L("Synchronize filament list from AMS")); filament_for_title_sizer->Add(m_ams_sync_button, 0, wxALIGN_CENTER); diff --git a/src/slic3r/GUI/CameraPopup.cpp b/src/slic3r/GUI/CameraPopup.cpp index be63c1706a..e7b5cf68dd 100644 --- a/src/slic3r/GUI/CameraPopup.cpp +++ b/src/slic3r/GUI/CameraPopup.cpp @@ -470,8 +470,8 @@ CameraItem::CameraItem(wxWindow *parent, std::string normal, std::string hover) CameraItem::~CameraItem() {} void CameraItem::msw_rescale() { - m_bitmap_normal.sys_color_changed(); - m_bitmap_hover.sys_color_changed(); + m_bitmap_normal.msw_rescale(); + m_bitmap_hover.msw_rescale(); } void CameraItem::on_enter_win(wxMouseEvent &evt) @@ -519,9 +519,9 @@ void CameraItem::render(wxDC &dc) void CameraItem::doRender(wxDC &dc) { if (m_hover) { - dc.DrawBitmap(m_bitmap_hover.get_bitmap(), wxPoint((GetSize().x - m_bitmap_hover.GetSize().x) / 2, (GetSize().y - m_bitmap_hover.GetSize().y) / 2)); + dc.DrawBitmap(m_bitmap_hover.bmp(), wxPoint((GetSize().x - m_bitmap_hover.GetBmpSize().x) / 2, (GetSize().y - m_bitmap_hover.GetBmpSize().y) / 2)); } else { - dc.DrawBitmap(m_bitmap_normal.get_bitmap(), wxPoint((GetSize().x - m_bitmap_normal.GetSize().x) / 2, (GetSize().y - m_bitmap_normal.GetSize().y) / 2)); + dc.DrawBitmap(m_bitmap_normal.bmp(), wxPoint((GetSize().x - m_bitmap_normal.GetBmpSize().x) / 2, (GetSize().y - m_bitmap_normal.GetBmpSize().y) / 2)); } } diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index f59530ed0d..a34a7cd46e 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -1499,7 +1499,7 @@ ConfigWizardIndex::ConfigWizardIndex(wxWindow *parent) #ifndef __WXOSX__ SetDoubleBuffered(true);// SetDoubleBuffered exists on Win and Linux/GTK, but is missing on OSX #endif //__WXOSX__ - SetMinSize(bg.GetSize()); + SetMinSize(bg.bmp().GetSize()); const wxSize size = GetTextExtent("m"); em_w = size.x; @@ -1626,8 +1626,8 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt) wxPaintDC dc(this); - const auto bullet_w = bullet_black.GetWidth(); - const auto bullet_h = bullet_black.GetHeight(); + const auto bullet_w = bullet_black.bmp().GetSize().GetWidth(); + const auto bullet_h = bullet_black.bmp().GetSize().GetHeight(); const int yoff_icon = bullet_h < em_h ? (em_h - bullet_h) / 2 : 0; const int yoff_text = bullet_h > em_h ? (bullet_h - em_h) / 2 : 0; const int yinc = item_height(); @@ -1640,10 +1640,10 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt) unsigned x = em_w/2 + item.indent * em_w; if (i == item_active || (item_hover >= 0 && i == (size_t)item_hover)) { - dc.DrawBitmap(bullet_blue.get_bitmap(), x, y + yoff_icon, false); + dc.DrawBitmap(bullet_blue.bmp(), x, y + yoff_icon, false); } - else if (i < item_active) { dc.DrawBitmap(bullet_black.get_bitmap(), x, y + yoff_icon, false); } - else if (i > item_active) { dc.DrawBitmap(bullet_white.get_bitmap(), x, y + yoff_icon, false); } + else if (i < item_active) { dc.DrawBitmap(bullet_black.bmp(), x, y + yoff_icon, false); } + else if (i > item_active) { dc.DrawBitmap(bullet_white.bmp(), x, y + yoff_icon, false); } x += + bullet_w + em_w/2; const auto text_size = dc.GetTextExtent(item.label); @@ -1655,9 +1655,9 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt) } //draw logo - if (int y = size.y - bg.GetHeight(); y>=0) { - dc.DrawBitmap(bg.get_bitmap(), 0, y, false); - index_width = std::max(index_width, bg.GetWidth() + em_w / 2); + if (int y = size.y - bg.GetBmpHeight(); y>=0) { + dc.DrawBitmap(bg.bmp(), 0, y, false); + index_width = std::max(index_width, bg.GetBmpWidth() + em_w / 2); } if (GetMinSize().x < index_width) { @@ -1689,12 +1689,12 @@ void ConfigWizardIndex::msw_rescale() em_w = size.x; em_h = size.y; - bg.sys_color_changed(); - SetMinSize(bg.GetSize()); + bg.msw_rescale(); + SetMinSize(bg.bmp().GetSize()); - bullet_black.sys_color_changed(); - bullet_blue.sys_color_changed(); - bullet_white.sys_color_changed(); + bullet_black.msw_rescale(); + bullet_blue.msw_rescale(); + bullet_white.msw_rescale(); Refresh(); } diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp index 4b0a86703f..364d378b42 100644 --- a/src/slic3r/GUI/ConfigWizard_private.hpp +++ b/src/slic3r/GUI/ConfigWizard_private.hpp @@ -510,7 +510,7 @@ private: ssize_t item_hover; size_t last_page; - int item_height() const { return std::max(bullet_black.GetHeight(), em_w) + em_w; } + int item_height() const { return std::max(bullet_black.bmp().GetSize().GetHeight(), em_w) + em_w; } void on_paint(wxPaintEvent &evt); void on_mouse_move(wxMouseEvent &evt); diff --git a/src/slic3r/GUI/DragCanvas.cpp b/src/slic3r/GUI/DragCanvas.cpp index 60e1da3bcd..38a827dca8 100644 --- a/src/slic3r/GUI/DragCanvas.cpp +++ b/src/slic3r/GUI/DragCanvas.cpp @@ -46,8 +46,8 @@ void DragCanvas::set_shape_list(const std::vector& colors, const st m_dragshape_list.clear(); for (int i = 0; i < order.size(); i++) { - wxBitmap bmp = get_extruder_color_icon(colors[order[i] - 1], std::to_string(order[i]), SHAPE_SIZE, SHAPE_SIZE)->GetBitmapFor(m_parent); - DragShape* shape = new DragShape(bmp, order[i]); + wxBitmap* bmp = get_extruder_color_icon(colors[order[i] - 1], std::to_string(order[i]), SHAPE_SIZE, SHAPE_SIZE); + DragShape* shape = new DragShape(*bmp, order[i]); m_dragshape_list.push_back(shape); } diff --git a/src/slic3r/GUI/ExtraRenderers.cpp b/src/slic3r/GUI/ExtraRenderers.cpp index 5c74a5e0ad..068a463246 100644 --- a/src/slic3r/GUI/ExtraRenderers.cpp +++ b/src/slic3r/GUI/ExtraRenderers.cpp @@ -33,15 +33,6 @@ wxIMPLEMENT_DYNAMIC_CLASS(DataViewBitmapText, wxObject) IMPLEMENT_VARIANT_OBJECT(DataViewBitmapText) -static wxSize get_size(const wxBitmap& icon) -{ -#ifdef __WIN32__ - return icon.GetSize(); -#else - return icon.GetScaledSize(); -#endif -} - // --------------------------------------------------------- // BitmapTextRenderer // --------------------------------------------------------- @@ -133,7 +124,11 @@ bool BitmapTextRenderer::Render(wxRect rect, wxDC *dc, int state) const wxBitmap& icon = m_value.GetBitmap(); if (icon.IsOk()) { - wxSize icon_sz = get_size(icon); +#ifdef __APPLE__ + wxSize icon_sz = icon.GetScaledSize(); +#else + wxSize icon_sz = icon.GetSize(); +#endif dc->DrawBitmap(icon, rect.x, rect.y + (rect.height - icon_sz.y) / 2); xoffset = icon_sz.x + 4; } @@ -275,12 +270,11 @@ bool BitmapChoiceRenderer::Render(wxRect rect, wxDC* dc, int state) const wxBitmap& icon = m_value.GetBitmap(); if (icon.IsOk()) { - wxSize icon_sz = get_size(icon); - dc->DrawBitmap(icon, rect.x, rect.y + (rect.height - icon_sz.GetHeight()) / 2); -// xoffset = icon_sz.GetWidth() + 4; + dc->DrawBitmap(icon, rect.x, rect.y + (rect.height - icon.GetHeight()) / 2); +// xoffset = icon.GetWidth() + 4; if (rect.height == 0) - rect.height = icon_sz.GetHeight(); + rect.height = icon.GetHeight(); } #ifdef _WIN32 @@ -311,7 +305,7 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelR if (can_create_editor_ctrl && !can_create_editor_ctrl()) return nullptr; - std::vector icons = get_extruder_color_icons(); + std::vector icons = get_extruder_color_icons(); if (icons.empty()) return nullptr; diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 7939bb9acd..235ba99509 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -1127,7 +1127,7 @@ void Choice::BUILD() auto icon_name = "param_" + m_opt.enum_values[i]; if (boost::filesystem::exists(image_path / (icon_name + ".svg"))) { ScalableBitmap bm(temp, icon_name, 24); - temp->Append(_(el), bm.get_bitmap()); + temp->Append(_(el), bm.bmp()); } else { temp->Append(_(el)); } @@ -1529,7 +1529,7 @@ void Choice::msw_rescale() auto icon_name = "param_" + m_opt.enum_values[i]; if (boost::filesystem::exists(image_path / (icon_name + ".svg"))) { ScalableBitmap bm(window, icon_name, 24); - temp->SetItemBitmap(i, bm.get_bitmap()); + temp->SetItemBitmap(i, bm.bmp()); } ++i; } diff --git a/src/slic3r/GUI/GLTexture.cpp b/src/slic3r/GUI/GLTexture.cpp index c1137487e1..dba3523491 100644 --- a/src/slic3r/GUI/GLTexture.cpp +++ b/src/slic3r/GUI/GLTexture.cpp @@ -28,8 +28,8 @@ #define STB_DXT_IMPLEMENTATION #include "stb_dxt/stb_dxt.h" -#include -#include +#include "nanosvg/nanosvg.h" +#include "nanosvg/nanosvgrast.h" #include "libslic3r/Utils.hpp" #include "GUI_App.hpp" diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 7a6c7e3101..1f1efd0862 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -369,7 +369,7 @@ public: // See https://github.com/wxWidgets/wxWidgets/blob/master/src/msw/font.cpp // void wxNativeFontInfo::SetFractionalPointSize(float pointSizeNew) wxNativeFontInfo nfi= *font.GetNativeFontInfo(); - float pointSizeNew = wxDisplay(this).GetScaleFactor() * scale * font.GetPointSize(); + float pointSizeNew = scale * font.GetPointSize(); nfi.lf.lfHeight = nfi.GetLogFontHeightAtPPI(pointSizeNew, get_dpi_for_window(this)); nfi.pointSize = pointSizeNew; font = wxFont(nfi); diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 73b4e774a5..9ea5aa5c2b 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -267,13 +267,14 @@ std::map SettingsFactory::CATEGORY_ICON = // BBS: remove SLA categories }; -wxBitmapBundle* SettingsFactory::get_category_bitmap(const std::string& category_name) +wxBitmap SettingsFactory::get_category_bitmap(const std::string& category_name, bool menu_bmp) { if (CATEGORY_ICON.find(category_name) == CATEGORY_ICON.end()) - return get_bmp_bundle("empty"); - return get_bmp_bundle(CATEGORY_ICON.at(category_name)); + return wxNullBitmap; + return create_scaled_bitmap(CATEGORY_ICON.at(category_name)); } + //------------------------------------- // MenuFactory //------------------------------------- @@ -434,30 +435,31 @@ static void create_freq_settings_popupmenu(wxMenu* menu, const bool is_object_se } } -std::vector MenuFactory::get_volume_bitmaps() +std::vector MenuFactory::get_volume_bitmaps() { - std::vector volume_bmps; + std::vector volume_bmps; volume_bmps.reserve(ADD_VOLUME_MENU_ITEMS.size()); - for (const auto& item : ADD_VOLUME_MENU_ITEMS) - volume_bmps.push_back(get_bmp_bundle(item.second)); + for (const auto& item : ADD_VOLUME_MENU_ITEMS) { + volume_bmps.push_back(create_scaled_bitmap(item.second)); + } return volume_bmps; } -std::vector MenuFactory::get_text_volume_bitmaps() +std::vector MenuFactory::get_text_volume_bitmaps() { - std::vector volume_bmps; + std::vector volume_bmps; volume_bmps.reserve(TEXT_VOLUME_ICONS.size()); for (const auto& item : TEXT_VOLUME_ICONS) - volume_bmps.push_back(get_bmp_bundle(item.second)); + volume_bmps.push_back(create_scaled_bitmap(item.second)); return volume_bmps; } -std::vector MenuFactory::get_svg_volume_bitmaps() +std::vector MenuFactory::get_svg_volume_bitmaps() { - std::vector volume_bmps; + std::vector volume_bmps; volume_bmps.reserve(SVG_VOLUME_ICONS.size()); for (const auto &item : SVG_VOLUME_ICONS) - volume_bmps.push_back(get_bmp_bundle(item.second)); + volume_bmps.push_back(create_scaled_bitmap(item.second)); return volume_bmps; } @@ -698,7 +700,7 @@ wxMenuItem* MenuFactory::append_menu_item_settings(wxMenu* menu_) // Add full settings list auto menu_item = new wxMenuItem(menu, wxID_ANY, menu_name); - menu_item->SetBitmap(*get_bmp_bundle("cog")); + menu_item->SetBitmap(create_scaled_bitmap("cog")); menu_item->SetSubMenu(create_settings_popupmenu(menu, is_object_settings, item)); return menu->Append(menu_item); @@ -847,7 +849,7 @@ void MenuFactory::append_menu_item_change_extruder(wxMenu* menu) if (sels.IsEmpty()) return; - std::vector icons = get_extruder_color_icons(true); + std::vector icons = get_extruder_color_icons(true); wxMenu* extruder_selection_menu = new wxMenu(); const wxString& name = sels.Count() == 1 ? names[0] : names[1]; @@ -868,7 +870,7 @@ void MenuFactory::append_menu_item_change_extruder(wxMenu* menu) if (icon_idx >= 0 && icon_idx < icons.size()) { append_menu_item( - extruder_selection_menu, wxID_ANY, item_name, "", [i](wxCommandEvent &) { obj_list()->set_extruder_for_selected_items(i); }, icons[icon_idx], menu, + extruder_selection_menu, wxID_ANY, item_name, "", [i](wxCommandEvent &) { obj_list()->set_extruder_for_selected_items(i); }, *icons[icon_idx], menu, [is_active_extruder]() { return !is_active_extruder; }, m_parent); } else { append_menu_item( @@ -1806,7 +1808,7 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu) return; } - std::vector icons = get_extruder_color_icons(true); + std::vector icons = get_extruder_color_icons(true); if (icons.size() < filaments_cnt) { BOOST_LOG_TRIVIAL(warning) << boost::format("Warning: icons size %1%, filaments_cnt=%2%")%icons.size()%filaments_cnt; if (icons.size() <= 1) @@ -1846,9 +1848,8 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu) const wxString& item_name = (i == 0 ? _L("Default") : wxString::Format(_L("Filament %d"), i)) + (is_active_extruder ? " (" + _L("current") + ")" : ""); - //OcraftyoneTODO: determine if nullptr in place of icon causes issues append_menu_item(extruder_selection_menu, wxID_ANY, item_name, "", - [i](wxCommandEvent&) { obj_list()->set_extruder_for_selected_items(i); }, i == 0 ? nullptr : icons[i - 1], menu, + [i](wxCommandEvent&) { obj_list()->set_extruder_for_selected_items(i); }, i == 0 ? wxNullBitmap : *icons[i - 1], menu, [is_active_extruder]() { return !is_active_extruder; }, m_parent); } menu->Append(wxID_ANY, name, extruder_selection_menu, _L("Change Filament")); @@ -1966,6 +1967,12 @@ void MenuFactory::update_default_menu() create_default_menu(); } +void MenuFactory::msw_rescale() +{ + for (MenuWithSeparators* menu : { &m_object_menu, &m_sla_object_menu, &m_part_menu, &m_default_menu }) + msw_rescale_menu(dynamic_cast(menu)); +} + #ifdef _WIN32 // For this class is used code from stackoverflow: // https://stackoverflow.com/questions/257288/is-it-possible-to-write-a-template-to-check-for-a-functions-existence @@ -1995,7 +2002,7 @@ static void update_menu_item_def_colors(T* item) void MenuFactory::sys_color_changed() { for (MenuWithSeparators* menu : { &m_object_menu, &m_sla_object_menu, &m_part_menu, &m_default_menu }) { - sys_color_changed_menu(dynamic_cast(menu));// msw_rescale_menu updates just icons, so use it + msw_rescale_menu(dynamic_cast(menu));// msw_rescale_menu updates just icons, so use it #ifdef _WIN32 // but under MSW we have to update item's bachground color for (wxMenuItem* item : menu->GetMenuItems()) @@ -2010,17 +2017,14 @@ void MenuFactory::sys_color_changed(wxMenuBar* menubar) #if 0 for (size_t id = 0; id < menubar->GetMenuCount(); id++) { wxMenu* menu = menubar->GetMenu(id); - sys_color_changed_menu(menu); -#ifndef __linux__ - menu->SetupBitmaps(); + msw_rescale_menu(menu); #ifdef _WIN32 // but under MSW we have to update item's bachground color for (wxMenuItem* item : menu->GetMenuItems()) update_menu_item_def_colors(item); #endif } -// menubar->Refresh(); -#endif + menubar->Refresh(); #endif } diff --git a/src/slic3r/GUI/GUI_Factories.hpp b/src/slic3r/GUI/GUI_Factories.hpp index abb5525a04..16e25533fa 100644 --- a/src/slic3r/GUI/GUI_Factories.hpp +++ b/src/slic3r/GUI/GUI_Factories.hpp @@ -40,7 +40,7 @@ struct SettingsFactory static std::map> OBJECT_CATEGORY_SETTINGS; static std::map> PART_CATEGORY_SETTINGS; - static wxBitmapBundle* get_category_bitmap(const std::string& category_name); + static wxBitmap get_category_bitmap(const std::string& category_name, bool menu_bmp = true); static Bundle get_bundle(const DynamicPrintConfig* config, bool is_object_settings, bool is_layer_settings = false); static std::vector get_options(bool is_part); //BBS: add api to get options for catogary @@ -51,9 +51,9 @@ struct SettingsFactory class MenuFactory { public: - static std::vector get_volume_bitmaps(); - static std::vector get_text_volume_bitmaps(); - static std::vector get_svg_volume_bitmaps(); + static std::vector get_volume_bitmaps(); + static std::vector get_text_volume_bitmaps(); + static std::vector get_svg_volume_bitmaps(); MenuFactory(); ~MenuFactory() = default; @@ -62,6 +62,7 @@ public: void update(); void update_object_menu(); void update_default_menu(); + void msw_rescale(); void sys_color_changed(); static void sys_color_changed(wxMenuBar* menu_bar); diff --git a/src/slic3r/GUI/GUI_ObjectLayers.cpp b/src/slic3r/GUI/GUI_ObjectLayers.cpp index cd1ff8ca28..76dd268633 100644 --- a/src/slic3r/GUI/GUI_ObjectLayers.cpp +++ b/src/slic3r/GUI/GUI_ObjectLayers.cpp @@ -248,14 +248,47 @@ void ObjectLayers::UpdateAndShow(const bool show) void ObjectLayers::msw_rescale() { - //Orca: deleted what PS commented out + m_bmp_delete.msw_rescale(); + m_bmp_add.msw_rescale(); + + m_grid_sizer->SetHGap(wxGetApp().em_unit()); + + // rescale edit-boxes + const int cells_cnt = m_grid_sizer->GetCols() * m_grid_sizer->GetEffectiveRowsCount(); + for (int i = 0; i < cells_cnt; ++i) { + const wxSizerItem* item = m_grid_sizer->GetItem(i); + if (item->IsWindow()) { + LayerRangeEditor* editor = dynamic_cast(item->GetWindow()); + if (editor != nullptr) + editor->msw_rescale(); + } + else if (item->IsSizer()) // case when we have editor with buttons + { + wxSizerItem* e_item = item->GetSizer()->GetItem(size_t(0)); // editor + if (e_item->IsWindow()) { + LayerRangeEditor* editor = dynamic_cast(e_item->GetWindow()); + if (editor != nullptr) + editor->msw_rescale(); + } + + if (item->GetSizer()->GetItemCount() > 2) // if there are Add/Del buttons + for (size_t btn : {2, 3}) { // del_btn, add_btn + wxSizerItem* b_item = item->GetSizer()->GetItem(btn); + if (b_item->IsWindow()) { + auto button = dynamic_cast(b_item->GetWindow()); + if (button != nullptr) + button->msw_rescale(); + } + } + } + } m_grid_sizer->Layout(); } void ObjectLayers::sys_color_changed() { - m_bmp_delete.sys_color_changed(); - m_bmp_add.sys_color_changed(); + m_bmp_delete.msw_rescale(); + m_bmp_add.msw_rescale(); // rescale edit-boxes const int cells_cnt = m_grid_sizer->GetCols() * m_grid_sizer->GetEffectiveRowsCount(); @@ -267,7 +300,7 @@ void ObjectLayers::sys_color_changed() if (b_item && b_item->IsWindow()) { auto button = dynamic_cast(b_item->GetWindow()); if (button != nullptr) - button->sys_color_changed(); + button->msw_rescale(); } } } diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index e7f06a1c74..1ec93489e9 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1368,11 +1368,12 @@ void ObjectList::extruder_editing() if (!item || !(m_objects_model->GetItemType(item) & (itVolume | itObject))) return; - wxRect rect = this->GetItemRect(item, GetColumn(colFilament)); - wxPoint pos = rect.GetPosition(); - pos.y -= 4; - wxSize size = rect.GetSize(); - size.SetWidth(size.GetWidth() + 8); + const int column_width = GetColumn(colFilament)->GetWidth() + wxSystemSettings::GetMetric(wxSYS_VSCROLL_X) + 5; + + wxPoint pos = this->get_mouse_position_in_control(); + wxSize size = wxSize(column_width, -1); + pos.x = GetColumn(colName)->GetWidth() + GetColumn(colPrint)->GetWidth() + 5; + pos.y -= GetTextExtent("m").y; apply_extruder_selector(&m_extruder_editor, this, "1", pos, size); @@ -3160,21 +3161,6 @@ bool ObjectList::can_merge_to_single_object() const return (*m_objects)[obj_idx]->volumes.size() > 1; } -wxPoint ObjectList::get_mouse_position_in_control() const -{ - wxPoint pt = wxGetMousePosition() - this->GetScreenPosition(); - -#ifdef __APPLE__ - // Workaround for OSX. From wxWidgets 3.1.6 Hittest doesn't respect to the header of wxDataViewCtrl - if (wxDataViewItem top_item = this->GetTopItem(); top_item.IsOk()) { - auto rect = this->GetItemRect(top_item, this->GetColumn(0)); - pt.y -= rect.y; - } -#endif // __APPLE__ - - return pt; -} - bool ObjectList::can_mesh_boolean() const { int obj_idx = get_selected_obj_idx(); @@ -5486,17 +5472,17 @@ void ObjectList::msw_rescale() GetColumn(colSinking)->SetWidth(3 * em); GetColumn(colEditing )->SetWidth( 3 * em); + // rescale/update existing items with bitmaps + m_objects_model->Rescale(); + Layout(); } void ObjectList::sys_color_changed() { wxGetApp().UpdateDVCDarkUI(this, true); - - // rescale/update existing items with bitmaps - m_objects_model->UpdateBitmaps(); - - Layout(); + + msw_rescale(); if (m_objects_model) { m_objects_model->sys_color_changed(); } } @@ -5597,15 +5583,6 @@ void ObjectList::OnEditingStarted(wxDataViewEvent &event) SetCustomRendererPtr(dynamic_cast(renderer)); #endif #endif //__WXMSW__ - - // Orca: Automatically show drop down on editing start and finish editing when the combobox is closed - // Note: this must placed AFTER the above `renderer->StartEditing` call, otherwise `c` will be nullptr on MacOS, - // due to the code in MacDarkMode.mm - if (event.GetColumn() == colFilament) { - ::ComboBox*c = static_cast<::ComboBox *>(event.GetDataViewColumn()->GetRenderer()->GetEditorCtrl()); - c->ToggleDropDown(); - c->Bind(wxEVT_COMBOBOX_CLOSEUP, [event](wxCommandEvent& evt){ event.GetDataViewColumn()->GetRenderer()->FinishEditing(); }); - } } void ObjectList::OnEditingDone(wxDataViewEvent &event) diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index 1c96e3e5a3..ef503251f6 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -319,7 +319,7 @@ public: void delete_all_connectors_for_selection(); void delete_all_connectors_for_object(int obj_idx); - wxPoint get_mouse_position_in_control() const; + wxPoint get_mouse_position_in_control() const { return wxGetMousePosition() - this->GetScreenPosition(); } int get_selected_obj_idx() const; ModelConfig& get_item_config(const wxDataViewItem& item) const; diff --git a/src/slic3r/GUI/GUI_ObjectSettings.cpp b/src/slic3r/GUI/GUI_ObjectSettings.cpp index b0b59a1ac2..ff9521b584 100644 --- a/src/slic3r/GUI/GUI_ObjectSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectSettings.cpp @@ -112,7 +112,7 @@ bool ObjectSettings::update_settings_list() btn->SetToolTip(_(L("Remove parameter"))); btn->SetBitmapFocus(m_bmp_delete_focus.bmp()); - btn->SetBitmapCurrent(m_bmp_delete_focus.bmp()); + btn->SetBitmapHover(m_bmp_delete_focus.bmp()); btn->Bind(wxEVT_BUTTON, [opt_key, config, this](wxEvent &event) { wxGetApp().plater()->take_snapshot(from_u8((boost::format("Delete Option %s") % opt_key).str()).ToStdString()); @@ -146,7 +146,7 @@ bool ObjectSettings::update_settings_list() return; ctrl->SetBitmap_(m_bmp_delete); ctrl->SetBitmapFocus(m_bmp_delete_focus.bmp()); - ctrl->SetBitmapCurrent(m_bmp_delete_focus.bmp()); + ctrl->SetBitmapHover(m_bmp_delete_focus.bmp()); }; const bool is_extruders_cat = cat.first == "Extruders"; @@ -415,13 +415,21 @@ void ObjectSettings::UpdateAndShow(const bool show) #endif } +void ObjectSettings::msw_rescale() +{ +#if !NEW_OBJECT_SETTING + m_bmp_delete.msw_rescale(); + m_bmp_delete_focus.msw_rescale(); + + for (auto group : m_og_settings) + group->msw_rescale(); +#endif +} + void ObjectSettings::sys_color_changed() { #if !NEW_OBJECT_SETTING - m_og->sys_color_changed(); // not in old msw_rescale. is it needed? - // moved from old msw_rescale - m_bmp_delete.sys_color_changed(); - m_bmp_delete_focus.sys_color_changed(); + m_og->sys_color_changed(); for (auto group : m_og_settings) group->sys_color_changed(); diff --git a/src/slic3r/GUI/GUI_ObjectSettings.hpp b/src/slic3r/GUI/GUI_ObjectSettings.hpp index 0e50901b2d..8903f8748b 100644 --- a/src/slic3r/GUI/GUI_ObjectSettings.hpp +++ b/src/slic3r/GUI/GUI_ObjectSettings.hpp @@ -68,6 +68,7 @@ public: bool add_missed_options(ModelConfig *config_to, const DynamicPrintConfig &config_from); void update_config_values(ModelConfig *config); void UpdateAndShow(const bool show); + void msw_rescale(); void sys_color_changed(); }; diff --git a/src/slic3r/GUI/GUI_ObjectTable.cpp b/src/slic3r/GUI/GUI_ObjectTable.cpp index c23c871395..eda7c15b71 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.cpp +++ b/src/slic3r/GUI/GUI_ObjectTable.cpp @@ -77,7 +77,7 @@ void GridCellIconRenderer::Draw(wxGrid& grid, table->m_icon_row_height = grid.GetRowSize(row); table->m_icon_col_width = grid.GetColSize(col); //} - wxBitmap bitmap = table->get_undo_bitmap().GetBitmapFor(dc.GetWindow()); + wxBitmap& bitmap = table->get_undo_bitmap(); int bitmap_width = bitmap.GetWidth(); int bitmap_height = bitmap.GetHeight(); int offset_x = (table->m_icon_col_width - bitmap_width)/2; @@ -125,7 +125,7 @@ GridCellIconRenderer *GridCellIconRenderer::Clone() const GridCellFilamentsEditor::GridCellFilamentsEditor(const wxArrayString& choices, bool allowOthers, - std::vector* bitmaps) + std::vector* bitmaps) : wxGridCellChoiceEditor(choices, allowOthers), m_icons(bitmaps) { } @@ -133,7 +133,7 @@ GridCellFilamentsEditor::GridCellFilamentsEditor(const wxArrayString& choices, GridCellFilamentsEditor::GridCellFilamentsEditor(size_t count, const wxString choices[], bool allowOthers, - std::vector* bitmaps) + std::vector* bitmaps) : wxGridCellChoiceEditor(count, choices, allowOthers), m_icons(bitmaps) { } @@ -159,14 +159,13 @@ void GridCellFilamentsEditor::Create(wxWindow* parent, if ( !m_allowOthers ) style |= wxCB_READONLY; ::ComboBox *bitmap_combo = new ComboBox(parent, id, wxEmptyString, - wxDefaultPosition, wxSize(get_preferred_size(*((*m_icons)[0]), wxGetApp().mainframe).GetWidth() + 10, -1), - 0, nullptr, CB_NO_DROP_ICON | CB_NO_TEXT | wxCB_READONLY); //Unsure + wxDefaultPosition, wxSize(((*m_icons)[0])->GetWidth() + 10, -1), 0, nullptr, CB_NO_DROP_ICON | CB_NO_TEXT | wxCB_READONLY); if (m_icons) { int array_count = m_choices.GetCount(); int icon_count = m_icons->size(); for (int i = 0; i < array_count; i++) { - wxBitmapBundle* bitmap = (i < icon_count) ? (*m_icons)[i] : (*m_icons)[0]; + wxBitmap* bitmap = (i < icon_count) ? (*m_icons)[i] : (*m_icons)[0]; bitmap_combo->Append(m_choices[i], *bitmap); } } @@ -240,9 +239,6 @@ void GridCellFilamentsEditor::BeginEdit(int row, int col, wxGrid* grid) Combo()->SetFocus(); - // Orca: Show dropdown on editing start - Combo()->ToggleDropDown(); - #ifdef __WXOSX_COCOA__ // This is a work around for the combobox being simply dismissed when a // choice is made in it under OS X. The bug is almost certainly due to a @@ -339,9 +335,9 @@ void GridCellFilamentsRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &d ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ConfigOptionInt & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); - wxBitmapBundle *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value); - int bitmap_width = bitmap->GetBitmapFor(dc.GetWindow()).GetWidth(); - int bitmap_height = bitmap->GetBitmapFor(dc.GetWindow()).GetHeight(); + wxBitmap *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value); + int bitmap_width = bitmap->GetWidth(); + int bitmap_height = bitmap->GetHeight(); int offset_x = grid_cell_border_width; int offset_y = (rect.height > bitmap_height) ? (rect.height - bitmap_height) / 2 : grid_cell_border_height; @@ -349,7 +345,7 @@ void GridCellFilamentsRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &d dc.SetBrush(wxBrush(attr.GetBackgroundColour())); dc.DrawRectangle(rect); if ( grid_row->model_volume_type != ModelVolumeType::NEGATIVE_VOLUME) { - dc.DrawBitmap(bitmap->GetBitmapFor(dc.GetWindow()), wxPoint(rect.x + offset_x, rect.y + offset_y));//TODO: determine if this way of getting bitmap works well + dc.DrawBitmap(*bitmap, wxPoint(rect.x + offset_x, rect.y + offset_y)); } text_rect.x += bitmap_width + grid_cell_border_width * 2; @@ -435,9 +431,6 @@ void GridCellChoiceEditor::BeginEdit(int row, int col, wxGrid *grid) Combo()->SetFocus(); - // Orca: Show dropdown on editing start - Combo()->ToggleDropDown(); - #ifdef __WXOSX_COCOA__ // This is a work around for the combobox being simply dismissed when a // choice is made in it under OS X. The bug is almost certainly due to a @@ -525,16 +518,16 @@ void GridCellComboBoxRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &dc ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ConfigOptionInt & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); - wxBitmapBundle *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value); - int bitmap_width = bitmap->GetBitmapFor(dc.GetWindow()).GetWidth(); - int bitmap_height = bitmap->GetBitmapFor(dc.GetWindow()).GetHeight(); + wxBitmap *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value); + int bitmap_width = bitmap->GetWidth(); + int bitmap_height = bitmap->GetHeight(); int offset_x = grid_cell_border_width; int offset_y = (rect.height > bitmap_height) ? (rect.height - bitmap_height) / 2 : grid_cell_border_height; dc.SetPen(*wxTRANSPARENT_PEN); dc.SetBrush(wxBrush(attr.GetBackgroundColour())); dc.DrawRectangle(rect); - dc.DrawBitmap(bitmap->GetBitmapFor(dc.GetWindow()), wxPoint(rect.x + offset_x, rect.y + offset_y)); + dc.DrawBitmap(*bitmap, wxPoint(rect.x + offset_x, rect.y + offset_y)); text_rect.x += bitmap_width + grid_cell_border_width * 2; text_rect.width -= (bitmap_width + grid_cell_border_width * 2); } @@ -2648,12 +2641,12 @@ void ObjectGridTable::OnCellValueChanged(int row, int col) } } -wxBitmapBundle& ObjectGridTable::get_undo_bitmap(bool selected) +wxBitmap& ObjectGridTable::get_undo_bitmap(bool selected) { return m_panel->m_undo_bitmap; } -wxBitmapBundle* ObjectGridTable::get_color_bitmap(int color_index) +wxBitmap* ObjectGridTable::get_color_bitmap(int color_index) { if (color_index < m_panel->m_color_bitmaps.size()) return m_panel->m_color_bitmaps[color_index]; diff --git a/src/slic3r/GUI/GUI_ObjectTable.hpp b/src/slic3r/GUI/GUI_ObjectTable.hpp index 6aca182533..a21436fe0e 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.hpp +++ b/src/slic3r/GUI/GUI_ObjectTable.hpp @@ -82,10 +82,10 @@ public: GridCellFilamentsEditor(size_t count = 0, const wxString choices[] = NULL, bool allowOthers = false, - std::vector* bitmaps = NULL); + std::vector* bitmaps = NULL); GridCellFilamentsEditor(const wxArrayString& choices, bool allowOthers = false, - std::vector* bitmaps = NULL); + std::vector* bitmaps = NULL); virtual void Create(wxWindow* parent, wxWindowID id, @@ -105,7 +105,7 @@ protected: ::ComboBox *Combo() const { return (::ComboBox *)m_control; } void OnComboCloseUp(wxCommandEvent& evt); - std::vector* m_icons; + std::vector* m_icons; wxDECLARE_NO_COPY_CLASS(GridCellFilamentsEditor); private: @@ -498,8 +498,8 @@ public: void update_filament_to_config(ModelConfig* config, std::string& key, ConfigOption& new_value, ConfigOption& ori_value, bool is_object); void update_volume_values_from_object(int row, int col); void update_value_to_object(Model* model, ObjectGridRow* grid_row, int col); - wxBitmapBundle& get_undo_bitmap(bool selected = false); - wxBitmapBundle* get_color_bitmap(int color_index); + wxBitmap& get_undo_bitmap(bool selected = false); + wxBitmap* get_color_bitmap(int color_index); bool OnCellLeftClick(int row, int col, ConfigOptionType &type); void OnSelectCell(int row, int col); void OnRangeSelected(int row, int col, int row_count, int col_count); @@ -610,10 +610,10 @@ private: int init_filaments_and_colors(); wxFloatingPointValidator m_float_validator; - wxBitmapBundle m_undo_bitmap; - std::vector m_color_bitmaps; - wxBitmapBundle m_bmp_reset; - wxBitmapBundle m_bmp_reset_disable; + wxBitmap m_undo_bitmap; + std::vector m_color_bitmaps; + ScalableBitmap m_bmp_reset; + ScalableBitmap m_bmp_reset_disable; private: wxDECLARE_ABSTRACT_CLASS(ObjectGrid); wxDECLARE_EVENT_TABLE(); diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp index b3508c5aaa..7468d9c1b4 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp @@ -173,7 +173,7 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ btn->SetBitmapFocus(m_bmp_reset_focus.bmp()); - btn->SetBitmapHover(m_bmp_reset_focus.get_bitmap()); + btn->SetBitmapHover(m_bmp_reset_focus.bmp()); #ifdef __WINDOWS__ btn->SetBitmapDisabled(m_bmp_reset_disable.bmp()); @@ -236,7 +236,7 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ return; ctrl->SetBitmap_(m_bmp_reset); ctrl->SetBitmapFocus(m_bmp_reset_focus.bmp()); - ctrl->SetBitmapHover(m_bmp_reset_focus.get_bitmap()); + ctrl->SetBitmapHover(m_bmp_reset_focus.bmp()); #ifdef __WINDOWS__ ctrl->SetBitmapDisabled(m_bmp_reset_disable.bmp()); #endif diff --git a/src/slic3r/GUI/ImageGrid.cpp b/src/slic3r/GUI/ImageGrid.cpp index 9fef6720ce..2ab6748f4e 100644 --- a/src/slic3r/GUI/ImageGrid.cpp +++ b/src/slic3r/GUI/ImageGrid.cpp @@ -508,10 +508,10 @@ void ImageGrid::render(wxDC& dc) if (!m_file_sys || m_file_sys->GetCount() == 0) { dc.DrawRectangle({ 0, 0, size.x, size.y }); if (!m_status_msg.IsEmpty()) { - auto si = m_status_icon.GetSize(); + auto si = m_status_icon.GetBmpSize(); auto st = dc.GetTextExtent(m_status_msg); auto rect = wxRect{0, 0, max(st.x, si.x), si.y + 26 + st.y}.CenterIn(wxRect({0, 0}, size)); - dc.DrawBitmap(m_status_icon.get_bitmap(), rect.x + (rect.width - si.x) / 2, rect.y); + dc.DrawBitmap(m_status_icon.bmp(), rect.x + (rect.width - si.x) / 2, rect.y); dc.SetTextForeground(wxColor(0x909090)); dc.DrawText(m_status_msg, rect.x + (rect.width - st.x) / 2, rect.GetBottom() - st.y); } @@ -602,7 +602,7 @@ void Slic3r::GUI::ImageGrid::renderContent1(wxDC &dc, wxPoint const &pt, int ind bool show_download_state_always = true; // Draw checked icon if (m_selecting && !show_download_state_always) - dc.DrawBitmap(selected ? m_checked_icon.get_bitmap() : m_unchecked_icon.get_bitmap(), pt + wxPoint{10, m_content_rect.GetHeight() - m_checked_icon.GetHeight() - 10}); + dc.DrawBitmap(selected ? m_checked_icon.bmp() : m_unchecked_icon.bmp(), pt + wxPoint{10, 10}); // can't handle alpha // dc.GradientFillLinear({pt.x, pt.y, m_border_size.GetWidth(), 60}, wxColour(0x6F, 0x6F, 0x6F, 0x99), wxColour(0x6F, 0x6F, 0x6F, 0), wxBOTTOM); else if (m_file_sys->GetGroupMode() == PrinterFileSystem::G_NONE) { @@ -653,7 +653,7 @@ void Slic3r::GUI::ImageGrid::renderContent1(wxDC &dc, wxPoint const &pt, int ind dc.DrawText(date, pt + wxPoint{24, 16}); } if (m_selecting && show_download_state_always) - dc.DrawBitmap(selected ? m_checked_icon.get_bitmap() : m_unchecked_icon.get_bitmap(), pt + wxPoint{10, m_content_rect.GetHeight() - m_checked_icon.GetHeight() - 10}); + dc.DrawBitmap(selected ? m_checked_icon.bmp() : m_unchecked_icon.bmp(), pt + wxPoint{10, 10}); } void Slic3r::GUI::ImageGrid::renderContent2(wxDC &dc, wxPoint const &pt, int index, bool hit) @@ -745,8 +745,8 @@ void Slic3r::GUI::ImageGrid::renderText2(wxDC &dc, wxString text, wxRect const & void Slic3r::GUI::ImageGrid::renderIconText(wxDC & dc, ScalableBitmap const & icon, wxString text, wxRect const & rect) { - dc.DrawBitmap(icon.get_bitmap(), rect.x, rect.y + (rect.height - icon.GetHeight()) / 2); - renderText2(dc, text, {rect.x + icon.GetWidth() + 4, rect.y, rect.width - icon.GetWidth() - 4, rect.height}); + dc.DrawBitmap(icon.bmp(), rect.x, rect.y + (rect.height - icon.GetBmpHeight()) / 2); + renderText2(dc, text, {rect.x + icon.GetBmpWidth() + 4, rect.y, rect.width - icon.GetBmpWidth() - 4, rect.height}); } }} diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index fcd7e5e9fb..0f065ff28f 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -155,7 +155,7 @@ wxWindow *KBShortcutsDialog::create_button(int id, wxString text) void KBShortcutsDialog::on_dpi_changed(const wxRect& suggested_rect) { - m_logo_bmp.sys_color_changed(); + m_logo_bmp.msw_rescale(); m_header_bitmap->SetBitmap(m_logo_bmp.bmp()); msw_buttons_rescale(this, em_unit(), { wxID_OK }); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 8be514ecf7..ac0e8e1a71 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1970,6 +1970,11 @@ void MainFrame::on_dpi_changed(const wxRect& suggested_rect) m_monitor->msw_rescale(); m_calibration->msw_rescale(); + // BBS +#if 0 + for (size_t id = 0; id < m_menubar->GetMenuCount(); id++) + msw_rescale_menu(m_menubar->GetMenu(id)); +#endif // Workarounds for correct Window rendering after rescale @@ -2011,7 +2016,7 @@ void MainFrame::on_sys_color_changed() #ifdef _MSW_DARK_MODE // update common mode sizer if (!wxGetApp().tabs_as_menu()) - dynamic_cast(m_tabpanel)->OnColorsChanged(); + dynamic_cast(m_tabpanel)->Rescale(); #endif #endif diff --git a/src/slic3r/GUI/MediaFilePanel.cpp b/src/slic3r/GUI/MediaFilePanel.cpp index 4c85725d3f..dded21372b 100644 --- a/src/slic3r/GUI/MediaFilePanel.cpp +++ b/src/slic3r/GUI/MediaFilePanel.cpp @@ -354,9 +354,9 @@ void MediaFilePanel::SwitchStorage(bool external) void MediaFilePanel::Rescale() { - m_bmp_loading.sys_color_changed(); - m_bmp_failed.sys_color_changed(); - m_bmp_empty.sys_color_changed(); + m_bmp_loading.msw_rescale(); + m_bmp_failed.msw_rescale(); + m_bmp_empty.msw_rescale(); auto top_sizer = GetSizer()->GetItem((size_t) 0)->GetSizer(); top_sizer->SetMinSize({-1, 75 * em_unit(this) / 10}); diff --git a/src/slic3r/GUI/ModelMall.cpp b/src/slic3r/GUI/ModelMall.cpp index 83c05bf544..f14de1ebf0 100644 --- a/src/slic3r/GUI/ModelMall.cpp +++ b/src/slic3r/GUI/ModelMall.cpp @@ -36,7 +36,7 @@ namespace GUI { wxBoxSizer* m_sizer_web_control = new wxBoxSizer(wxHORIZONTAL); - auto m_control_back = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_back", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER); + auto m_control_back = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_back", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); m_control_back->SetBackgroundColour(*wxWHITE); m_control_back->SetSize(wxSize(FromDIP(25), FromDIP(30))); m_control_back->SetMinSize(wxSize(FromDIP(25), FromDIP(30))); @@ -47,7 +47,7 @@ namespace GUI { m_control_back->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCursor(wxCURSOR_ARROW));}); - auto m_control_forward = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_forward", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER); + auto m_control_forward = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_forward", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); m_control_forward->SetBackgroundColour(*wxWHITE); m_control_forward->SetSize(wxSize(FromDIP(25), FromDIP(30))); m_control_forward->SetMinSize(wxSize(FromDIP(25), FromDIP(30))); @@ -57,7 +57,7 @@ namespace GUI { m_control_forward->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCursor(wxCURSOR_HAND)); }); m_control_forward->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCursor(wxCURSOR_ARROW)); }); - auto m_control_refresh = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_refresh", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER); + auto m_control_refresh = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_refresh", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); m_control_refresh->SetBackgroundColour(*wxWHITE); m_control_refresh->SetSize(wxSize(FromDIP(25), FromDIP(30))); m_control_refresh->SetMinSize(wxSize(FromDIP(25), FromDIP(30))); diff --git a/src/slic3r/GUI/MsgDialog.cpp b/src/slic3r/GUI/MsgDialog.cpp index d685ad3a81..ed323417aa 100644 --- a/src/slic3r/GUI/MsgDialog.cpp +++ b/src/slic3r/GUI/MsgDialog.cpp @@ -227,10 +227,10 @@ void MsgDialog::apply_style(long style) if (style & wxNO) add_button(wxID_NO, false,_L("No")); if (style & wxCANCEL) add_button(wxID_CANCEL, false, _L("Cancel")); - logo->SetBitmap( *get_bmp_bundle(style & wxAPPLY ? "completed" : + logo->SetBitmap( create_scaled_bitmap(style & wxAPPLY ? "completed" : style & wxICON_WARNING ? "obj_warning" : style & wxICON_INFORMATION ? "info" : - style & wxICON_QUESTION ? "question" : "OrcaSlicer", 64)); + style & wxICON_QUESTION ? "question" : "OrcaSlicer", this, 64, style & wxICON_ERROR)); } void MsgDialog::finalize() @@ -339,7 +339,7 @@ ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &msg, bool monospaced_ add_msg_content(this, content_sizer, msg, monospaced_font); // Use a small bitmap with monospaced font, as the error text will not be wrapped. - logo->SetBitmap(*get_bmp_bundle("OrcaSlicer_192px_grayscale.png", monospaced_font ? 48 : /*1*/84)); + logo->SetBitmap(create_scaled_bitmap("OrcaSlicer_192px_grayscale.png", this, monospaced_font ? 48 : /*1*/84)); SetMaxSize(wxSize(-1, CONTENT_MAX_HEIGHT*wxGetApp().em_unit())); diff --git a/src/slic3r/GUI/Notebook.cpp b/src/slic3r/GUI/Notebook.cpp index aac7ee5af3..84bbf9950a 100644 --- a/src/slic3r/GUI/Notebook.cpp +++ b/src/slic3r/GUI/Notebook.cpp @@ -122,8 +122,6 @@ void ButtonsListCtrl::Rescale() { //m_mode_sizer->msw_rescale(); int em = em_unit(this); - // Orca: following is removed by PS in wx 3.16 refactor. - // doesn't seem to be doing anything rn so leaving it alone for (Button* btn : m_pageButtons) { //BBS btn->SetMinSize({(btn->GetLabel().empty() ? 40 : 132) * em / 10, 36 * em / 10}); @@ -139,14 +137,6 @@ void ButtonsListCtrl::Rescale() m_sizer->Layout(); } -void ButtonsListCtrl::OnColorsChanged() -{ - for (Button* btn : m_pageButtons) - btn->Rescale(); - - m_sizer->Layout(); -} - void ButtonsListCtrl::SetSelection(int sel) { if (m_selection == sel) diff --git a/src/slic3r/GUI/Notebook.hpp b/src/slic3r/GUI/Notebook.hpp index 482a909fe1..d75898a7cd 100644 --- a/src/slic3r/GUI/Notebook.hpp +++ b/src/slic3r/GUI/Notebook.hpp @@ -23,7 +23,6 @@ public: void SetSelection(int sel); void UpdateMode(); void Rescale(); - void OnColorsChanged(); bool InsertPage(size_t n, const wxString &text, bool bSelect = false, const std::string &bmp_name = "", const std::string &inactive_bmp_name = ""); void RemovePage(size_t n); bool SetPageImage(size_t n, const std::string& bmp_name) const; @@ -262,11 +261,6 @@ public: GetBtnsListCtrl()->Rescale(); } - void OnColorsChanged() - { - GetBtnsListCtrl()->OnColorsChanged(); - } - void OnNavigationKey(wxNavigationKeyEvent& event) { if (event.IsWindowChange()) { diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index 26349192d1..2aef316b48 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -28,12 +28,12 @@ static bool is_point_in_rect(const wxPoint& pt, const wxRect& rect) rect.GetTop() <= pt.y && pt.y <= rect.GetBottom(); } -static wxSize get_bitmap_size(const wxBitmapBundle* bmp, wxWindow* parent) +static wxSize get_bitmap_size(const wxBitmap& bmp) { -#ifndef __WIN32__ - return bmp->GetBitmapFor(parent).GetSize(); +#ifdef __APPLE__ + return bmp.GetScaledSize(); #else - return bmp->GetDefaultSize(); + return bmp.GetSize(); #endif } @@ -58,8 +58,8 @@ OG_CustomCtrl::OG_CustomCtrl( wxWindow* parent, m_v_gap2 = lround(0.8 * m_em_unit); m_h_gap = lround(0.2 * m_em_unit); - //m_bmp_mode_sz = get_bitmap_size(get_bmp_bundle("mode_simple", wxOSX ? 10 : 12), this); - m_bmp_blinking_sz = get_bitmap_size(get_bmp_bundle("blank_16"), this); + //m_bmp_mode_sz = get_bitmap_size(create_scaled_bitmap("mode_simple", this, wxOSX ? 10 : 12)); + m_bmp_blinking_sz = get_bitmap_size(create_scaled_bitmap("blank_16", this)); init_ctrl_lines();// from og.lines() @@ -572,8 +572,8 @@ void OG_CustomCtrl::msw_rescale() m_v_gap2 = lround(0.8 * m_em_unit); m_h_gap = lround(0.2 * m_em_unit); - //m_bmp_mode_sz = get_bitmap_size(get_bmp_bundle("mode_simple", wxOSX ? 10 : 12), this); - m_bmp_blinking_sz = get_bitmap_size(get_bmp_bundle("blank_16"), this); + //m_bmp_mode_sz = create_scaled_bitmap("mode_simple", this, wxOSX ? 10 : 12).GetSize(); + m_bmp_blinking_sz = create_scaled_bitmap("blank_16", this).GetSize(); m_max_win_width = 0; @@ -666,7 +666,7 @@ void OG_CustomCtrl::CtrlLine::msw_rescale() { // if we have a single option with no label, no sidetext if (draw_just_act_buttons) - height = get_bitmap_size(get_bmp_bundle("empty"), ctrl).GetHeight(); + height = get_bitmap_size(create_scaled_bitmap("empty")).GetHeight(); if (ctrl->opt_group->label_width != 0 && !og_line.label.IsEmpty()) { wxSize label_sz = ctrl->GetTextExtent(og_line.label); @@ -748,7 +748,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord h_pos, wxCoord v_pos) if (field && field->undo_bitmap()) //if (field) // BBS: new layout - draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap()->get_bitmap(), field->undo_bitmap()->get_bitmap(), field->blink()); + draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap()->bmp(), field->undo_bitmap()->bmp(), field->blink()); return; } @@ -802,7 +802,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord h_pos, wxCoord v_pos) auto draw_buttons = [&h_pos, &dc, &v_pos, this](Field* field, size_t bmp_rect_id = 0) { if (field && field->undo_to_sys_bitmap()) { - h_pos = draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap()->get_bitmap(), field->undo_bitmap()->get_bitmap(), field->blink(), bmp_rect_id); + h_pos = draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap()->bmp(), field->undo_bitmap()->bmp(), field->blink(), bmp_rect_id); } #ifndef DISABLE_BLINKING else if (field && !field->undo_to_sys_bitmap() && field->blink()) @@ -933,19 +933,19 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_text(wxDC &dc, wxPoint pos, const wxString wxPoint OG_CustomCtrl::CtrlLine::draw_blinking_bmp(wxDC& dc, wxPoint pos, bool is_blinking) { - wxBitmapBundle* bmp_blinking = get_bmp_bundle(is_blinking ? "blank_16" : "empty"); + wxBitmap bmp_blinking = create_scaled_bitmap(is_blinking ? "blank_16" : "empty", ctrl); wxCoord h_pos = pos.x; - wxCoord v_pos = pos.y + lround((height - get_bitmap_size(bmp_blinking, ctrl).GetHeight()) / 2); + wxCoord v_pos = pos.y + lround((height - get_bitmap_size(bmp_blinking).GetHeight()) / 2); - dc.DrawBitmap(bmp_blinking->GetBitmapFor(ctrl), h_pos, v_pos); + dc.DrawBitmap(bmp_blinking, h_pos, v_pos); - int bmp_dim = get_bitmap_size(bmp_blinking, ctrl).GetWidth(); + int bmp_dim = get_bitmap_size(bmp_blinking).GetWidth(); h_pos += bmp_dim + ctrl->m_h_gap; return wxPoint(h_pos, v_pos); } -wxCoord OG_CustomCtrl::CtrlLine::draw_act_bmps(wxDC& dc, wxPoint pos, const wxBitmapBundle& bmp_undo_to_sys, const wxBitmapBundle& bmp_undo, bool is_blinking, size_t rect_id) +wxCoord OG_CustomCtrl::CtrlLine::draw_act_bmps(wxDC& dc, wxPoint pos, const wxBitmap& bmp_undo_to_sys, const wxBitmap& bmp_undo, bool is_blinking, size_t rect_id) { #ifndef DISABLE_BLINKING pos = draw_blinking_bmp(dc, pos, is_blinking); @@ -953,11 +953,11 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_act_bmps(wxDC& dc, wxPoint pos, const wxBi if (ctrl->opt_group->split_multi_line) { // BBS const std::vector

- Option 1 (You only need to do this once. After that the app can be opened normally.): - Step 1: Hold _cmd_ and right click the app, from the context menu choose **Open**. From 9416af22470061ac0fccc67f29dc6219b38a06b6 Mon Sep 17 00:00:00 2001 From: Lee Jong Mun <43285072+crwusiz@users.noreply.github.com> Date: Tue, 26 Dec 2023 22:00:10 +0900 Subject: [PATCH 34/66] kor translation update (#3288) fix typo --- localization/i18n/ko/OrcaSlicer_ko.po | 216 +++++++++++++------------- 1 file changed, 108 insertions(+), 108 deletions(-) diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 7835794ac7..0eb74d19fb 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -62,7 +62,7 @@ msgid "Highlight overhang areas" msgstr "돌출부 영역 강조" msgid "Gap fill" -msgstr "간격 채움" +msgstr "간격 채우기" msgid "Perform" msgstr "수행" @@ -74,7 +74,7 @@ msgid "Tool type" msgstr "도구 유형" msgid "Smart fill angle" -msgstr "스마트 채움 각도" +msgstr "스마트 채우기 각도" msgid "On overhangs only" msgstr "돌출부에만 칠하기" @@ -89,10 +89,10 @@ msgid "Sphere" msgstr "구체" msgid "Fill" -msgstr "채움" +msgstr "채우기" msgid "Gap Fill" -msgstr "간격 채움" +msgstr "간격 채우기" #, boost-format msgid "Allows painting only on facets selected by: \"%1%\"" @@ -149,10 +149,10 @@ msgid "Brush" msgstr "붓" msgid "Smart fill" -msgstr "스마트 채움" +msgstr "스마트 채우기" msgid "Bucket fill" -msgstr "버킷 채움" +msgstr "버킷 채우기" msgid "Height range" msgstr "높이 범위" @@ -807,7 +807,7 @@ msgid "Shell" msgstr "쉘" msgid "Infill" -msgstr "채움" +msgstr "채우기" msgid "Support" msgstr "지지대" @@ -958,7 +958,7 @@ msgid "Set as individual objects" msgstr "개별 개체로 설정" msgid "Fill bed with copies" -msgstr "베드에 복사본으로 채움" +msgstr "베드에 복사본으로 채우기" msgid "Fill the remaining area of bed with copies of the selected object" msgstr "베드의 나머지 영역을 선택한 개체의 복사본으로 채웁니다" @@ -1013,7 +1013,7 @@ msgid "Flush Options" msgstr "버리기 옵션" msgid "Flush into objects' infill" -msgstr "개체의 채움에서 버리기" +msgstr "개체의 채우기에서 버리기" msgid "Flush into this object" msgstr "개체에서 버리기" @@ -1432,7 +1432,7 @@ msgid "Wall loops" msgstr "벽 루프" msgid "Infill density(%)" -msgstr "채움 밀도(%)" +msgstr "채우기 밀도(%)" msgid "Auto Brim" msgstr "자동 브림" @@ -1759,13 +1759,13 @@ msgid "Orienting canceled." msgstr "방향지정이 취소되었습니다." msgid "Filling" -msgstr "채움" +msgstr "채우기" msgid "Bed filling canceled." -msgstr "베드 채움 취소됨." +msgstr "베드 채우기 취소됨." msgid "Bed filling done." -msgstr "베드 채움 완료." +msgstr "베드 채우기 완료." msgid "Searching for optimal orientation" msgstr "최적의 방향 검색" @@ -2547,7 +2547,7 @@ msgid "" "Spiral mode only works when wall loops is 1, support is disabled, top shell " "layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" -"나선형 모드는 벽 루프 1, 지지대 비활성화, 상단 셸 레이어 0, 드문 채움 밀도 " +"나선형 모드는 벽 루프 1, 지지대 비활성화, 상단 셸 레이어 0, 드문 채우기 밀도 " "0, 타임랩스 유형이 기존인 경우에만 작동합니다." msgid " But machines with I3 structure will not generate timelapse videos." @@ -4348,7 +4348,7 @@ msgstr "하드웨어를 안전하게 제거합니다." #, c-format, boost-format msgid "%1$d Object has custom supports." msgid_plural "%1$d Objects have custom supports." -msgstr[0] "%1$d 개체에 사용자 설정 지지대가 있습니다." +msgstr[0] "%1$d 개체에 사용자 정의 지지대가 있습니다." #, c-format, boost-format msgid "%1$d Object has color painting." @@ -7217,13 +7217,13 @@ msgid "Outer wall" msgstr "외벽" msgid "Overhang wall" -msgstr "돌출벽" +msgstr "돌출부 벽" msgid "Sparse infill" -msgstr "드문 채움" +msgstr "드문 채우기" msgid "Internal solid infill" -msgstr "꽉찬 내부 채움" +msgstr "꽉찬 내부 채우기" msgid "Top surface" msgstr "상단 표면" @@ -7235,7 +7235,7 @@ msgid "Internal Bridge" msgstr "내부 브릿지" msgid "Gap infill" -msgstr "간격 채움" +msgstr "간격 채우기" msgid "Skirt" msgstr "스커트" @@ -7583,10 +7583,10 @@ msgstr "" "\"XxY, XxY...\" 형식의 점으로 다각형으로 표시됩니다" msgid "Bed custom texture" -msgstr "베드 사용자 설정 텍스처" +msgstr "사용자 정의 베드 텍스처" msgid "Bed custom model" -msgstr "베드 사용자 설정 모델" +msgstr "사용자 정의 베드 모델" msgid "Elephant foot compensation" msgstr "코끼리 발 보정" @@ -7861,7 +7861,7 @@ msgid "" "wall which has large overhang degree. Forcing cooling for overhang and " "bridge can get better quality for these part" msgstr "" -"돌출부 정도가 큰 브릿지나 돌출벽을 출력할 때 출력물 냉각 팬을 이 속도로 강제" +"돌출부 정도가 큰 브릿지나 돌출부 벽을 출력할 때 출력물 냉각 팬을 이 속도로 강제" "합니다. 돌출부와 브릿지를 강제 냉각하면 이러한 부품의 품질이 향상될 수 있습니" "다" @@ -7880,7 +7880,7 @@ msgstr "" "에 관계없이 모든 외벽을 강제 냉각한다는 의미입니다" msgid "Bridge infill direction" -msgstr "브릿지 채움 방향" +msgstr "브릿지 채우기 방향" msgid "" "Bridging angle override. If left to zero, the bridging angle will be " @@ -7914,8 +7914,8 @@ msgid "" "first layer over sparse infill. Decrease this value slightly (for example " "0.9) to improve surface quality over sparse infill." msgstr "" -"이 값은 내부 브릿지 레이어의 두께를 결정합니다. 이것은 드문 채움 위의 첫 번" -"째 레이어입니다. 드문 채움보다 표면 품질을 향상시키려면 이 값을 약간(예: " +"이 값은 내부 브릿지 레이어의 두께를 결정합니다. 이것은 드문 채우기 위의 첫 번" +"째 레이어입니다. 드문 채우기보다 표면 품질을 향상시키려면 이 값을 약간(예: " "0.9) 줄입니다." msgid "Top surface flow ratio" @@ -7925,14 +7925,14 @@ msgid "" "This factor affects the amount of material for top solid infill. You can " "decrease it slightly to have smooth surface finish" msgstr "" -"이 값은 상단 꽉찬 내부 채움의 재료의 양에 영향을 미칩니다. 부드러운 표면 마감" +"이 값은 상단 꽉찬 내부 채우기의 재료의 양에 영향을 미칩니다. 부드러운 표면 마감" "을 위해 약간 줄여도 됩니다" msgid "Bottom surface flow ratio" msgstr "하단 표면 유량 비율" msgid "This factor affects the amount of material for bottom solid infill" -msgstr "이 값은 하단 꽉찬 내부 채움의 재료의 양에 영향을 미칩니다" +msgstr "이 값은 하단 꽉찬 내부 채우기의 재료의 양에 영향을 미칩니다" msgid "Precise wall(experimental)" msgstr "정밀한 벽(실험적)" @@ -8088,7 +8088,7 @@ msgid "External" msgstr "외부" msgid "Speed of bridge and completely overhang wall" -msgstr "브릿지와 돌출벽의 속도" +msgstr "브릿지와 돌출부 벽의 속도" msgid "mm/s" msgstr "mm/s" @@ -8249,13 +8249,13 @@ msgstr "" "팬을 정지합니다" msgid "Don't support bridges" -msgstr "브릿지를 지원하지 않음" +msgstr "브릿지에서 지지대 사용안함" msgid "" "Don't support the whole bridge area which make support very large. Bridge " "usually can be printing directly without support if not very long" msgstr "" -"지지대를 크게 만드는 전체 브릿지 영역에 지지대 미생성. 브릿지는 일반적으로 매" +"지지대를 크게 만드는 전체 브릿지 영역에 지지대를 사용하지 않습니다. 브릿지는 일반적으로 매" "우 길지 않은 경우 지지대 없이 직접 출력할 수 있습니다" msgid "Thick bridges" @@ -8319,14 +8319,14 @@ msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)" msgstr "" -"경사진 표면 근처에 꽉찬 내부 채움을 추가하여 수직 쉘 두께를 보장합니다 (상단" +"경사진 표면 근처에 꽉찬 내부 채우기를 추가하여 수직 쉘 두께를 보장합니다 (상단" "+하단 꽉찬 레이어)" msgid "Top surface pattern" msgstr "상단 표면 패턴" msgid "Line pattern of top surface infill" -msgstr "상단 표면 채움의 선 패턴" +msgstr "상단 표면 채우기의 선 패턴" msgid "Concentric" msgstr "동심" @@ -8356,16 +8356,16 @@ msgid "Bottom surface pattern" msgstr "하단 표면 패턴" msgid "Line pattern of bottom surface infill, not bridge infill" -msgstr "브릿지 채움이 아닌 바닥면 채움의 선 패턴" +msgstr "브릿지 채우기가 아닌 바닥면 채우기의 선 패턴" msgid "Internal solid infill pattern" -msgstr "꽉찬 내부 채움 패턴" +msgstr "꽉찬 내부 채우기 패턴" msgid "" "Line pattern of internal solid infill. if the detect narrow internal solid " "infill be enabled, the concentric pattern will be used for the small area." msgstr "" -"꽉찬 내부 채움의 선 패턴. 좁은 꽉찬 내부 채움 감지가 활성화된 경우 작은 영역" +"꽉찬 내부 채우기의 선 패턴. 좁은 꽉찬 내부 채우기 감지가 활성화된 경우 작은 영역" "에 동심원 패턴이 사용됩니다." msgid "" @@ -8456,7 +8456,7 @@ msgid "Inner/Outer/Inner" msgstr "내벽/외벽/내벽" msgid "Print infill first" -msgstr "채움 먼저 출력" +msgstr "채우기 먼저 출력" msgid "" "Order of wall/infill. When the tickbox is unchecked the walls are printed " @@ -8468,7 +8468,7 @@ msgid "" "external surface finish. It can also cause the infill to shine through the " "external surfaces of the part." msgstr "" -"벽/채움 순서. 확인란을 선택 취소하면 벽이 먼저 출력되며 이는 대부분의 경우 가" +"벽/채우기 순서. 확인란을 선택 취소하면 벽이 먼저 출력되며 이는 대부분의 경우 가" "장 잘 작동합니다.\n" "\n" "벽에 접착할 이웃 충전재가 있으므로 벽을 먼저 출력하면 과도한 돌출부에 도움이 " @@ -8698,9 +8698,9 @@ msgid "" "to produce successive infill or sacrificial object extrusions reliably." msgstr "" "툴 교환 후 노즐 내부에 새로 로드된 필라멘트의 정확한 위치를 알 수 없으며 필라" -"멘트 압력이 아직 안정적이지 않을 수 있습니다. 프린트 헤드를 채움 또는 희생 개" +"멘트 압력이 아직 안정적이지 않을 수 있습니다. 프린트 헤드를 채우기 또는 희생 개" "체로 청소하기 전에 Slic3r은 항상 이 양의 재료를 닦기 타워로 프라이밍하여 연속" -"적인 채움 또는 희생 물체 압출을 안정적으로 생성합니다." +"적인 채우기 또는 희생 물체 압출을 안정적으로 생성합니다." msgid "Speed of the last cooling move" msgstr "마지막 냉각 이동 속도" @@ -8819,28 +8819,28 @@ msgid "(Undefined)" msgstr "(정의되지 않음)" msgid "Infill direction" -msgstr "채움 방향" +msgstr "채우기 방향" msgid "" "Angle for sparse infill pattern, which controls the start or main direction " "of line" -msgstr "선의 시작 또는 주 방향을 제어하는 드문 채움 패턴에 대한 각도" +msgstr "선의 시작 또는 주 방향을 제어하는 드문 채우기 패턴에 대한 각도" msgid "Sparse infill density" -msgstr "드문 채움 밀도" +msgstr "드문 채우기 밀도" msgid "" "Density of internal sparse infill, 100% turns all sparse infill into solid " "infill and internal solid infill pattern will be used" msgstr "" -"내부 드문 채움의 밀도, 100%는 모든 드문 채움을 꽉찬 내부 채움으로 변경하고 채" -"움에는 패턴이 사용됩니다" +"내부 드문 채우기의 밀도, 100%는 모든 드문 채우기를 꽉찬 내부 채우기로 변경하고 채" +"우기에는 패턴이 사용됩니다" msgid "Sparse infill pattern" -msgstr "드문 채움 패턴" +msgstr "드문 채우기 패턴" msgid "Line pattern for internal sparse infill" -msgstr "드문 내부 채움의 선 패턴" +msgstr "드문 내부 채우기의 선 패턴" msgid "Grid" msgstr "격자" @@ -8873,7 +8873,7 @@ msgid "Lightning" msgstr "번개" msgid "Sparse infill anchor length" -msgstr "드문 채움 고정점 길이" +msgstr "드문 채우기 고정점 길이" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " @@ -8886,14 +8886,14 @@ msgid "" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" -"사용하여 채움 선을 내부 둘레에 연결합니다. 백분율(예: 15%)로 표시되는 경우 채" -"우기 돌출 너비에 대해 계산됩니다. Slic3r은 두 개의 가까운 채움 선을 짧은 주" -"변 세그먼트에 연결하려고 합니다. 내부 채움 고정점 (infill_anchor_max) 최대 길" +"사용하여 채우기 선을 내부 둘레에 연결합니다. 백분율(예: 15%)로 표시되는 경우 채" +"우기 돌출 너비에 대해 계산됩니다. Slic3r은 두 개의 가까운 채우기 선을 짧은 주" +"변 세그먼트에 연결하려고 합니다. 내부 채우기 고정점 (infill_anchor_max) 최대 길" "이보다 짧은 경계 세그먼트가 발견되지 않으면 \n" "채우기 선은 한쪽에서 경계 세그먼트에 연결되고 취해진 경계 세그먼트의 길이는 " "이 매개변수로 제한되지만 최대 고정점 길이(anchor_length_max) 보다 길지 않습니" "다.\n" -"단일 채움 선에 연결된 고정 둘레를 비활성화하려면 이 매개변수를 0으로 설정합니" +"단일 채우기 선에 연결된 고정 둘레를 비활성화하려면 이 매개변수를 0으로 설정합니" "다." msgid "0 (no open anchors)" @@ -8903,7 +8903,7 @@ msgid "1000 (unlimited)" msgstr "1000 (무제한)" msgid "Maximum length of the infill anchor" -msgstr "채움 고정점 최대 길이" +msgstr "채우기 고정점 최대 길이" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " @@ -8916,11 +8916,11 @@ msgid "" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" -"추가 둘레의 짧은 세그먼트를 사용하여 채움 선을 내부 둘레에 연결합니다. 백분율" +"추가 둘레의 짧은 세그먼트를 사용하여 채우기 선을 내부 둘레에 연결합니다. 백분율" "(예: 15%)로 표시되는 경우 채우기 돌출 너비에 대해 계산됩니다. Slic3r은 두 개" -"의 가까운 채움 선을 짧은 주변 세그먼트에 연결하려고 합니다. 이 매개변수보다 " -"짧은 주변 세그먼트가 발견되지 않으면 채움 선은 한쪽 측면의 주변 세그먼트에 연" -"결되고 사용된 주변 세그먼트의 길이는 앵커 채움(infill_anchor)로 제한되지만 " +"의 가까운 채우기 선을 짧은 주변 세그먼트에 연결하려고 합니다. 이 매개변수보다 " +"짧은 주변 세그먼트가 발견되지 않으면 채우기 선은 한쪽 측면의 주변 세그먼트에 연" +"결되고 사용된 주변 세그먼트의 길이는 앵커 채우기(infill_anchor)로 제한되지만 " "이 매개변수보다 길지 않습니다.\n" "0으로 설정하면 채우기 연결에 대한 이전 알고리즘이 사용되며 1000 & 0과 동일한 " "결과를 생성해야 합니다." @@ -8960,7 +8960,7 @@ msgid "" "Acceleration of sparse infill. If the value is expressed as a percentage (e." "g. 100%), it will be calculated based on the default acceleration." msgstr "" -"드문 채움 가속도. 값이 백분율 (예. 100%)로 표시되면 기본 가속도를 기준으로 계" +"드문 채우기 가속도. 값이 백분율 (예. 100%)로 표시되면 기본 가속도를 기준으로 계" "산됩니다." msgid "" @@ -8968,7 +8968,7 @@ msgid "" "percentage (e.g. 100%), it will be calculated based on the default " "acceleration." msgstr "" -"꽉찬 내부 채움 가속도. 값이 백분율 (예. 100%)로 표시되면 기본 가속도를 기준으" +"꽉찬 내부 채우기 가속도. 값이 백분율 (예. 100%)로 표시되면 기본 가속도를 기준으" "로 계산됩니다." msgid "" @@ -9002,7 +9002,7 @@ msgid "Jerk for top surface" msgstr "상단 표면 저크" msgid "Jerk for infill" -msgstr "채움 저크" +msgstr "채우기 저크" msgid "Jerk for initial layer" msgstr "초기 레이어 저크" @@ -9026,13 +9026,13 @@ msgstr "" "접착력을 향상시킬 수 있습니다" msgid "Speed of initial layer except the solid infill part" -msgstr "꽉찬 채움 부분을 제외한 초기 레이어 속도" +msgstr "꽉찬 채우기 부분을 제외한 초기 레이어 속도" msgid "Initial layer infill" -msgstr "초기 레이어 채움" +msgstr "초기 레이어 채우기" msgid "Speed of solid infill part of initial layer" -msgstr "초기 레이어의 꽉찬 채움 속도" +msgstr "초기 레이어의 꽉찬 채우기 속도" msgid "Initial layer travel speed" msgstr "초기 레이어 이동 속도" @@ -9139,7 +9139,7 @@ msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " "printed more slowly" msgstr "" -"간격 채움 속도. 간격은 일반적으로 선 너비가 불규칙하므로 더 천천히 출력해야 " +"간격 채우기 속도. 간격은 일반적으로 선 너비가 불규칙하므로 더 천천히 출력해야 " "합니다" msgid "Arc fitting" @@ -9325,7 +9325,7 @@ msgid "" msgstr "" "이 옵션을 선택하면 G코드 출력시 이동에 설명을 추가할 수 있습니다. 이는 " "Octoprint CancelObject 플러그인에 유용합니다. \n" -"이 설정은 단일 압출기 다중 재료 설정 및 개체에서 닦기 / 채움에서 닦기와 호환" +"이 설정은 단일 압출기 다중 재료 설정 및 개체에서 닦기 / 채우기에서 닦기와 호환" "되지 않습니다." msgid "Exclude objects" @@ -9347,36 +9347,36 @@ msgstr "" "속도가 느려질 수 있습니다." msgid "Infill combination" -msgstr "채움 결합" +msgstr "채우기 결합" msgid "" "Automatically Combine sparse infill of several layers to print together to " "reduce time. Wall is still printed with original layer height." msgstr "" -"여러 레이어의 드문 채움을 자동으로 결합 후 함께 출력하여 시간을 단축합니다. " +"여러 레이어의 드문 채우기를 자동으로 결합 후 함께 출력하여 시간을 단축합니다. " "벽은 여전히 설정된 레이어 높이로 출력됩니다." msgid "Filament to print internal sparse infill." -msgstr "내부 드문 채움을 출력할 필라멘트." +msgstr "내부 드문 채우기를 출력할 필라멘트." msgid "" "Line width of internal sparse infill. If expressed as a %, it will be " "computed over the nozzle diameter." msgstr "" -"드문 내부 채움의 선 너비. %로 입력 시 노즐 직경에 대한 비율로 계산됩니다." +"드문 내부 채우기의 선 너비. %로 입력 시 노즐 직경에 대한 비율로 계산됩니다." msgid "Infill/Wall overlap" -msgstr "채움/벽 겹치기" +msgstr "채우기/벽 겹치기" msgid "" "Infill area is enlarged slightly to overlap with wall for better bonding. " "The percentage value is relative to line width of sparse infill" msgstr "" -"채움 영역이 벽과 겹치도록 약간 확장되어 접착력이 향상됩니다. 드문 채움 선 너" +"채우기 영역이 벽과 겹치도록 약간 확장되어 접착력이 향상됩니다. 드문 채우기 선 너" "비의 백분율 값입니다" msgid "Speed of internal sparse infill" -msgstr "내부 드문 채움 속도" +msgstr "내부 드문 채우기 속도" msgid "Interface shells" msgstr "접점 쉘" @@ -9817,14 +9817,14 @@ msgid "The start and end points which is from cutter area to garbage can." msgstr "절단 영역에서 버릴 영역까지의 시작점과 끝점." msgid "Reduce infill retraction" -msgstr "채움 후퇴 감소" +msgstr "채우기 후퇴 감소" msgid "" "Don't retract when the travel is in infill area absolutely. That means the " "oozing can't been seen. This can reduce times of retraction for complex " "model and save printing time, but make slicing and G-code generating slower" msgstr "" -"이동 구간이 채움 영역에 있을 때 수축하지 마십시오. 즉, 스며드는 것을 볼 수 없" +"이동 구간이 채우기 영역에 있을 때 수축하지 마십시오. 즉, 스며드는 것을 볼 수 없" "습니다. 이는 복잡한 모델의 후퇴 시간을 줄이고 출력 시간을 절약할 수 있지만 슬" "라이싱 및 G 코드 생성 속도를 느리게 만듭니다" @@ -9869,7 +9869,7 @@ msgid "mm²" msgstr "mm²" msgid "Detect overhang wall" -msgstr "돌출벽 감지" +msgstr "돌출부 벽 감지" #, c-format, boost-format msgid "" @@ -9908,7 +9908,7 @@ msgstr "" "\n" "이 옵션이 활성화되면 수직 쉘 두께 확인 옵션을 비활성화해야 합니다.\n" "\n" -"추가 경계를 고정할 채움이 제한되어 있으므로 이 옵션과 함께 번개 채움을 사용하" +"추가 경계를 고정할 채우기가 제한되어 있으므로 이 옵션과 함께 번개 채우기를 사용하" "는 것은 권장되지 않습니다." msgid "" @@ -10250,21 +10250,21 @@ msgstr "" "선하기 위해 느려집니다" msgid "Minimum sparse infill threshold" -msgstr "최소 드문 채움 임계값" +msgstr "최소 드문 채우기 임계값" msgid "" "Sparse infill area which is smaller than threshold value is replaced by " "internal solid infill" -msgstr "임계값보다 작은 드문 채움 영역은 꽉찬 내부 채움으로 대체됩니다" +msgstr "임계값보다 작은 드문 채우기 영역은 꽉찬 내부 채우기로 대체됩니다" msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." msgstr "" -"꽉찬 내부 채움 선 너비. %로 입력 시 노즐 직경에 대한 비율로 계산됩니다." +"꽉찬 내부 채우기 선 너비. %로 입력 시 노즐 직경에 대한 비율로 계산됩니다." msgid "Speed of internal solid infill, not the top and bottom surface" -msgstr "상단 및 하단 표면을 제외한 꽉찬 내부 채움 속도" +msgstr "상단 및 하단 표면을 제외한 꽉찬 내부 채우기 속도" msgid "Spiral vase" msgstr "나선형 꽃병 모드" @@ -10391,7 +10391,7 @@ msgid "" "resolution, therefore it is advisable to keep the value reasonably low." msgstr "" "간격 폐쇄 반경의 2배보다 작은 균열은 삼각형 메쉬 슬라이싱 중에 채워집니다. 간" -"격 채움 작업은 최종 출력 해상도를 감소시킬 수 있으므로 값을 합리적으로 낮게 " +"격 채우기 작업은 최종 출력 해상도를 감소시킬 수 있으므로 값을 합리적으로 낮게 " "유지하는 것이 좋습니다." msgid "Slicing Mode" @@ -10515,7 +10515,7 @@ msgstr "베이스용 인터페이스 필라멘트 줄이기" msgid "" "Avoid using support interface filament to print support base if possible." msgstr "" -"서포트 베이스를 프린트하기 위해 서포트 인터페이스 필라멘트를 사용하지 마세요." +"지지대 베이스를 프린트하기 위해 지지대 인터페이스 필라멘트를 사용하지 마세요." msgid "" "Line width of support. If expressed as a %, it will be computed over the " @@ -10780,13 +10780,13 @@ msgid "This setting specify the count of walls around support" msgstr "이 설정은 지지대 주변의 벽 수를 지정합니다" msgid "Tree support with infill" -msgstr "채움이 있는 나무 지지대" +msgstr "채우기가 있는 나무 지지대" msgid "" "This setting specifies whether to add infill inside large hollows of tree " "support" msgstr "" -"이 설정은 나무 지지대의 큰 공동 내부에 채움을 추가할지 여부를 지정합니다" +"이 설정은 나무 지지대의 큰 공동 내부에 채우기를 추가할지 여부를 지정합니다" msgid "Activate temperature control" msgstr "온도 제어 활성화" @@ -10847,7 +10847,7 @@ msgid "" msgstr "상단 표면의 선 너비. %로 입력 시 노즐 직경에 대한 비율로 계산됩니다." msgid "Speed of top surface infill which is solid" -msgstr "꽉찬 상단 표면 채움 속도" +msgstr "꽉찬 상단 표면 채우기 속도" msgid "Top shell layers" msgstr "상단 쉘 레이어" @@ -10994,7 +10994,7 @@ msgid "" "printed with transparent filament, the mixed color infill will be seen " "outside. It will not take effect, unless the prime tower is enabled." msgstr "" -"필라멘트 교체 후 버리기는 개체의 채움 내부에서 수행됩니다. 이렇게 하면 낭비되" +"필라멘트 교체 후 버리기는 개체의 채우기 내부에서 수행됩니다. 이렇게 하면 낭비되" "는 양이 줄어들고 출력 시간이 단축될 수 있습니다. 벽이 투명 필라멘트로 출력된 " "경우 혼합 색상 충전재가 외부에 보입니다. 프라임 타워가 활성화되지 않으면 적용" "되지 않습니다." @@ -11021,7 +11021,7 @@ msgid "Maximal bridging distance" msgstr "최대 브릿지 거리" msgid "Maximal distance between supports on sparse infill sections." -msgstr "드문 채움 부분의 지지대 사이의 최대 거리." +msgstr "드문 채우기 부분의 지지대 사이의 최대 거리." msgid "X-Y hole compensation" msgstr "X-Y 구멍 보정" @@ -11173,7 +11173,7 @@ msgid "" "leave gaps or overextrude" msgstr "" "벽의 짝수와 홀수 사이에 변환을 만드는 시기. 이 설정보다 큰 각도의 쐐기 모양" -"은 변환되지 않으며 나머지 공간 채움을 위해 중앙에 벽이 출력되지 않습니다. 이 " +"은 변환되지 않으며 나머지 공간 채우기를 위해 중앙에 벽이 출력되지 않습니다. 이 " "설정을 줄이면 중앙 벽의 수와 길이가 줄어들지만 간격이 남거나 과도하게 돌출될 " "수 있습니다" @@ -11225,14 +11225,14 @@ msgstr "" "대한 백분율로 표시됩니다" msgid "Detect narrow internal solid infill" -msgstr "좁은 꽉찬 내부 채움 감지" +msgstr "좁은 꽉찬 내부 채우기 감지" msgid "" "This option will auto detect narrow internal solid infill area. If enabled, " "concentric pattern will be used for the area to speed printing up. " "Otherwise, rectilinear pattern is used defaultly." msgstr "" -"이 옵션은 좁은 꽉찬 내부 채움 영역을 자동으로 감지합니다. 활성화하면 출력 속" +"이 옵션은 좁은 꽉찬 내부 채우기 영역을 자동으로 감지합니다. 활성화하면 출력 속" "도를 높이기 위해 해당 영역에 동심 패턴이 사용됩니다. 그렇지 않으면 기본적으" "로 직선 패턴이 사용됩니다." @@ -11296,10 +11296,10 @@ msgstr "" "유지하거나 네트워크 스토리지의 구성을 포함하는 데 유용합니다." msgid "Load custom gcode" -msgstr "사용자 설정 G코드 불러오기" +msgstr "사용자 정의 G코드 불러오기" msgid "Load custom gcode from json" -msgstr "사용자 설정 G코드를 json에서 불러오기" +msgstr "사용자 정의 G코드를 json에서 불러오기" msgid "Error in zip archive" msgstr "zip 압축파일 오류" @@ -11308,10 +11308,10 @@ msgid "Generating walls" msgstr "벽 생성 중" msgid "Generating infill regions" -msgstr "채움 영역 생성 중" +msgstr "채우기 영역 생성 중" msgid "Generating infill toolpath" -msgstr "채움 툴 경로 생성 중" +msgstr "채우기 툴 경로 생성 중" msgid "Detect overhangs for auto-lift" msgstr "Z 올리기를 위한 돌출부 감지" @@ -12618,7 +12618,7 @@ msgid "" "User's fillment preset set. \n" "Can be shared with others." msgstr "" -"사용자 채움 사전 설정입니다.\n" +"사용자 채우기 사전 설정입니다.\n" "다른 사람과 공유할 수 있습니다." msgid "" @@ -13174,7 +13174,7 @@ msgid "" msgstr "" "지지대 칠하기\n" "지지대의 위치를 칠할 수 있다는 것을 알고 있습니까? 이 기능을 사용하면 실제로 " -"필요한 모델 부위에만 서포트 재료를 쉽게 배치할 수 있습니다." +"필요한 모델 부위에만 지지대 재료를 쉽게 배치할 수 있습니다." #: resources/data/hints.ini: [hint:Different types of supports] msgid "" @@ -13234,8 +13234,8 @@ msgid "" "Did you know that you can save the wasted filament by flushing them into " "support/objects/infill during filament change?" msgstr "" -"지지대/개체/채움에 버리기\n" -"필라멘트를 교체하는 동안 낭비되는 필라멘트를 지지대/개체/채움에 버리기하여 절" +"지지대/개체/채우기에 버리기\n" +"필라멘트를 교체하는 동안 낭비되는 필라멘트를 지지대/개체/채우기에 버리기하여 절" "약할 수 있다는 사실을 알고 있습니까?" #: resources/data/hints.ini: [hint:Improve strength] @@ -13245,7 +13245,7 @@ msgid "" "density to improve the strength of the model?" msgstr "" "강도 향상\n" -"모델의 강도를 개선하기 위해 더 많은 벽 루프와 더 높은 드문 채움 밀도를 사용" +"모델의 강도를 개선하기 위해 더 많은 벽 루프와 더 높은 드문 채우기 밀도를 사용" "할 수 있다는 것을 알고 있습니까?" #: resources/data/hints.ini: [hint:When need to print with the printer door @@ -13359,11 +13359,11 @@ msgstr "" #~ "세요." #~ msgid "Filling bed " -#~ msgstr "베드 채움 " +#~ msgstr "베드 채우기 " #, boost-format #~ msgid "%1% infill pattern doesn't support 100%% density." -#~ msgstr "%1% 내부 채움 패턴은 100%% 밀도를 지원하지 않습니다." +#~ msgstr "%1% 내부 채우기 패턴은 100%% 밀도를 지원하지 않습니다." #~ msgid "" #~ "Switch to rectilinear pattern?\n" @@ -13389,7 +13389,7 @@ msgstr "" #, c-format #~ msgid "Density of internal sparse infill, 100% means solid throughout" #~ msgstr "" -#~ "내부 드문 내부 채움 밀도, 100은 전체가 꽉찬 내부 채움임을 의미합니다" +#~ "내부 드문 내부 채우기 밀도, 100은 전체가 꽉찬 내부 채우기임을 의미합니다" #~ msgid "Tree support wall loops" #~ msgstr "나무 지지대 벽 루프" @@ -13475,25 +13475,25 @@ msgstr "" #~ "패턴은 가파른 돌출부를 대폭 개선할 수 있습니다." #~ msgid "Order of inner wall/outer wall/infil" -#~ msgstr "내벽/외벽/내부 채움 순서" +#~ msgstr "내벽/외벽/내부 채우기 순서" #~ msgid "Print sequence of inner wall, outer wall and infill. " -#~ msgstr "내벽, 외벽 및 내부 채움 출력 순서 " +#~ msgstr "내벽, 외벽 및 내부 채우기 출력 순서 " #~ msgid "inner/outer/infill" -#~ msgstr "내벽/외벽/내부 채움" +#~ msgstr "내벽/외벽/내부 채우기" #~ msgid "outer/inner/infill" -#~ msgstr "외벽/내벽/내부 채움" +#~ msgstr "외벽/내벽/내부 채우기" #~ msgid "infill/inner/outer" -#~ msgstr "내부 채움/내벽/외벽" +#~ msgstr "내부 채우기/내벽/외벽" #~ msgid "infill/outer/inner" -#~ msgstr "내부 채움/외벽/내벽" +#~ msgstr "내부 채우기/외벽/내벽" #~ msgid "inner-outer-inner/infill" -#~ msgstr "내벽-외벽-내벽/내부 채움" +#~ msgstr "내벽-외벽-내벽/내부 채우기" #, c-format, boost-format #~ msgid "%%" From 0325e28b501285cf7e839e5721a58215176f8f97 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 26 Dec 2023 23:14:53 +0800 Subject: [PATCH 35/66] Layer height can't be zero. Fixed #3268 --- src/slic3r/GUI/Tab.cpp | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 8f0c7034dd..8659d2db6b 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -26,6 +26,7 @@ #include #include +#include "libslic3r/libslic3r.h" #include "wxExtensions.hpp" #include "PresetComboBoxes.hpp" #include @@ -1518,23 +1519,35 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) auto max_layer_height_from_nozzle=wxGetApp().preset_bundle->full_config().option("max_layer_height")->values; auto layer_height_floor = *std::min_element(min_layer_height_from_nozzle.begin(), min_layer_height_from_nozzle.end()); auto layer_height_ceil = *std::max_element(max_layer_height_from_nozzle.begin(), max_layer_height_from_nozzle.end()); - bool exceed_minimum_flag = m_config->opt_float("layer_height") < layer_height_floor; - bool exceed_maximum_flag = m_config->opt_float("layer_height") > layer_height_ceil; + const auto lh = m_config->opt_float("layer_height"); + bool exceed_minimum_flag = lh < layer_height_floor; + bool exceed_maximum_flag = lh > layer_height_ceil; if (exceed_maximum_flag || exceed_minimum_flag) { - wxString msg_text = _(L("Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits ,this may cause printing quality issues.")); - msg_text += "\n\n" + _(L("Adjust to the set range automatically? \n")); - MessageDialog dialog(wxGetApp().plater(), msg_text, "", wxICON_WARNING | wxYES | wxNO); - dialog.SetButtonLabel(wxID_YES, _L("Adjust")); - dialog.SetButtonLabel(wxID_NO, _L("Ignore")); - auto answer = dialog.ShowModal(); - auto new_conf = *m_config; - if (answer == wxID_YES) { - if (exceed_maximum_flag) - new_conf.set_key_value("layer_height", new ConfigOptionFloat(layer_height_ceil)); - if (exceed_minimum_flag) - new_conf.set_key_value("layer_height",new ConfigOptionFloat(layer_height_floor)); + if (lh < EPSILON) { + auto msg_text = _(L("Layer height is too small.\nIt will set to min_layer_height\n")); + MessageDialog dialog(wxGetApp().plater(), msg_text, "", wxICON_WARNING | wxOK); + dialog.SetButtonLabel(wxID_OK, _L("OK")); + dialog.ShowModal(); + auto new_conf = *m_config; + new_conf.set_key_value("layer_height", new ConfigOptionFloat(layer_height_floor)); m_config_manipulation.apply(m_config, &new_conf); + } else { + wxString msg_text = _(L("Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits ,this may " + "cause printing quality issues.")); + msg_text += "\n\n" + _(L("Adjust to the set range automatically? \n")); + MessageDialog dialog(wxGetApp().plater(), msg_text, "", wxICON_WARNING | wxYES | wxNO); + dialog.SetButtonLabel(wxID_YES, _L("Adjust")); + dialog.SetButtonLabel(wxID_NO, _L("Ignore")); + auto answer = dialog.ShowModal(); + auto new_conf = *m_config; + if (answer == wxID_YES) { + if (exceed_maximum_flag) + new_conf.set_key_value("layer_height", new ConfigOptionFloat(layer_height_ceil)); + if (exceed_minimum_flag) + new_conf.set_key_value("layer_height", new ConfigOptionFloat(layer_height_floor)); + m_config_manipulation.apply(m_config, &new_conf); + } } wxGetApp().plater()->update(); } From 2f17c1915d323bbdc2936d8c33d9746df2126068 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 26 Dec 2023 23:37:50 +0800 Subject: [PATCH 36/66] Fixed a regression that Turkish lang option was missing Fixed #3278 --- src/slic3r/GUI/Preferences.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index f28d13dbef..e722d90858 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -159,19 +159,16 @@ wxBoxSizer *PreferencesDialog::create_item_language_combobox( language_name = wxString::FromUTF8("\xED\x95\x9C\xEA\xB5\xAD\xEC\x96\xB4"); } else if (vlist[i] == wxLocale::GetLanguageInfo(wxLANGUAGE_RUSSIAN)) { - language_name = wxString::FromUTF8("\xD0\xA0\xD1\x83\xD1\x81\xD1\x81\xD0\xBA\xD0\xB8\xD0\xB9"); - } - else if (vlist[i] == wxLocale::GetLanguageInfo(wxLANGUAGE_CZECH)) { - language_name = wxString::FromUTF8("\xC4\x8D\x65\xC5\xA1\x74\x69\x6E\x61"); + language_name = wxString::FromUTF8("\xd0\xa0\xd1\x83\xd1\x81\xd1\x81\xd0\xba\xd0\xb8\xd0\xb9"); } else if (vlist[i] == wxLocale::GetLanguageInfo(wxLANGUAGE_UKRAINIAN)) { - language_name = wxString::FromUTF8("\xC4\x8D\x65\xC5\xA1\x74\x69\x6E\x61"); + language_name = wxString::FromUTF8("Ukrainian"); } else if (vlist[i] == wxLocale::GetLanguageInfo(wxLANGUAGE_TURKISH)) { - language_name = wxString::FromUTF8("\xD1\x83\xD0\xBA\xD1\x80\xD0\xB0\xD1\x97\xD1\x9D\xD1\x81\xD1\x8C\xD0\xBA\xD0\xB0"); + language_name = wxString::FromUTF8("Turkish"); } - if (language == vlist[i]->CanonicalName) { + if (app_config->get(param) == vlist[i]->CanonicalName) { m_current_language_selected = i; } combobox->Append(language_name); From 3086875c510292199bf82f9282126121dd6e99c2 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 26 Dec 2023 23:41:32 +0800 Subject: [PATCH 37/66] Fixed a bug that spiral_mode_max_xy_smoothing was not hiden when vase is not enabled --- src/slic3r/GUI/ConfigManipulation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 3d9d8c8939..79ba0dc7b7 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -528,7 +528,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool has_spiral_vase = config->opt_bool("spiral_mode"); toggle_line("spiral_mode_smooth", has_spiral_vase); - toggle_line("spiral_mode_max_xy_smoothing", config->opt_bool("spiral_mode_smooth")); + toggle_line("spiral_mode_max_xy_smoothing", has_spiral_vase && config->opt_bool("spiral_mode_smooth")); bool has_top_solid_infill = config->opt_int("top_shell_layers") > 0; bool has_bottom_solid_infill = config->opt_int("bottom_shell_layers") > 0; bool has_solid_infill = has_top_solid_infill || has_bottom_solid_infill; From 9127bed11fddfb142f4296fe3c6a61200f95f94f Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 25 Dec 2023 18:29:18 +0800 Subject: [PATCH 38/66] Move DL_CACHE into deps folder. Make cross compile easier --- .gitignore | 1 + deps/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index a4a9356f3e..764f60d71e 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ src/OrcaSlicer-doc/ **/process_full/ **/machine_full/ **/filament_full/ +/deps/DL_CACHE/ \ No newline at end of file diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 66a858cf6f..1f0c8e5bc1 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -32,7 +32,7 @@ if (NPROC EQUAL 0) endif () set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory") -set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/DL_CACHE CACHE PATH "Path for downloaded source packages.") +set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/../DL_CACHE CACHE PATH "Path for downloaded source packages.") option(DEP_DEBUG "Build debug variants (only applicable on Windows)" OFF) From 20dab5d99606807ecc33db6027125ff8e3d9fc56 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 25 Dec 2023 18:30:30 +0800 Subject: [PATCH 39/66] force to use own glew even if the system has installed one(brew) --- CMakeLists.txt | 2 ++ cmake/modules/FindGLEW.cmake | 10 ---------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d9ad7861c..3cda64ffd5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -509,6 +509,8 @@ find_package(PNG REQUIRED) set(OpenGL_GL_PREFERENCE "LEGACY") find_package(OpenGL REQUIRED) +set(GLEW_ROOT "${CMAKE_PREFIX_PATH}") +message("GLEW_ROOT: ${GLEW_ROOT}") # Find glew or use bundled version if (SLIC3R_STATIC AND NOT SLIC3R_STATIC_EXCLUDE_GLEW) set(GLEW_USE_STATIC_LIBS ON) diff --git a/cmake/modules/FindGLEW.cmake b/cmake/modules/FindGLEW.cmake index dc1faeca14..432d731d28 100644 --- a/cmake/modules/FindGLEW.cmake +++ b/cmake/modules/FindGLEW.cmake @@ -64,16 +64,6 @@ This module defines the following variables: include(FindPackageHandleStandardArgs) -find_package(GLEW CONFIG QUIET) - -if(GLEW_FOUND) - find_package_handle_standard_args(GLEW DEFAULT_MSG GLEW_CONFIG) - return() -endif() - -if(GLEW_VERBOSE) - message(STATUS "FindGLEW: did not find GLEW CMake config file. Searching for libraries.") -endif() if(APPLE) find_package(OpenGL QUIET) From de8013f2119772ffcf57e67afd6edeea3ec7b7f2 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 25 Dec 2023 18:31:12 +0800 Subject: [PATCH 40/66] upgrade libjpeg-turbo to 3.0.1 to properly suppor cross compile --- deps/JPEG/JPEG.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deps/JPEG/JPEG.cmake b/deps/JPEG/JPEG.cmake index 6fe081b565..82b0ca5565 100644 --- a/deps/JPEG/JPEG.cmake +++ b/deps/JPEG/JPEG.cmake @@ -12,8 +12,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") endif() orcaslicer_add_cmake_project(JPEG - URL https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/2.0.6.zip - URL_HASH SHA256=017bdc33ff3a72e11301c0feb4657cb27719d7f97fa67a78ed506c594218bbf1 + URL https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/3.0.1.zip + URL_HASH SHA256=d6d99e693366bc03897677650e8b2dfa76b5d6c54e2c9e70c03f0af821b0a52f DEPENDS ${ZLIB_PKG} CMAKE_ARGS -DENABLE_SHARED=OFF From 63351c01da8e4eb962653f9248e33502a4b0222b Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 26 Dec 2023 19:39:24 +0800 Subject: [PATCH 41/66] upgrade to macos 13 (#3289) brew uninstall --ignore-dependencies zstd Use local curl remove brew/macport dependency --- .github/workflows/build_all.yml | 4 ++-- .github/workflows/build_check_cache.yml | 6 +++--- .github/workflows/build_deps.yml | 5 +++-- .github/workflows/build_orca.yml | 15 +++++++++------ CMakeLists.txt | 5 +---- build_release_macos.sh | 25 +++++++++++++------------ 6 files changed, 31 insertions(+), 29 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index a45d336f86..a6141efff7 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -46,9 +46,9 @@ jobs: include: - os: ubuntu-20.04 - os: windows-latest - - os: macos-12 + - os: macos-13 arch: x86_64 - - os: macos-12 + - os: macos-13 arch: arm64 uses: ./.github/workflows/build_check_cache.yml with: diff --git a/.github/workflows/build_check_cache.yml b/.github/workflows/build_check_cache.yml index cccc084944..b8013a5eaf 100644 --- a/.github/workflows/build_check_cache.yml +++ b/.github/workflows/build_check_cache.yml @@ -28,9 +28,9 @@ jobs: - name: set outputs id: set_outputs env: - underscore-arch: ${{ inputs.os == 'macos-12' && '_' || ''}}${{ inputs.os == 'macos-12' && inputs.arch || '' }} # if is macos, make a string that does "_{arch}", else output nothing - dash-arch: ${{ inputs.os == 'macos-12' && '-' || ''}}${{ inputs.os == 'macos-12' && inputs.arch || '' }} # if is macos, make a string that does "-{arch}", else output nothing - dep-folder-name: ${{ (inputs.os == 'windows-latest' || inputs.os == 'macos-12') && 'OrcaSlicer_dep' || 'destdir' }} + underscore-arch: ${{ inputs.os == 'macos-13' && '_' || ''}}${{ inputs.os == 'macos-13' && inputs.arch || '' }} # if is macos, make a string that does "_{arch}", else output nothing + dash-arch: ${{ inputs.os == 'macos-13' && '-' || ''}}${{ inputs.os == 'macos-13' && inputs.arch || '' }} # if is macos, make a string that does "-{arch}", else output nothing + dep-folder-name: ${{ (inputs.os == 'windows-latest' || inputs.os == 'macos-13') && 'OrcaSlicer_dep' || 'destdir' }} output-cmd: ${{ inputs.os == 'windows-latest' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}} run: | echo cache-key=${{ runner.os }}${{ env.dash-arch }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }} diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index e6a61029d5..0357d1c543 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -67,10 +67,11 @@ jobs: cd ${{ github.workspace }}/deps/build - name: Build on Mac ${{ inputs.arch }} - if: inputs.os == 'macos-12' + if: inputs.os == 'macos-13' working-directory: ${{ github.workspace }} run: | brew install cmake git gettext automake + brew uninstall --ignore-dependencies zstd brew list mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }} mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }}/OrcaSlicer_dep_${{ inputs.arch }} @@ -97,7 +98,7 @@ jobs: # Upload Artifacts - name: Upload Mac ${{ inputs.arch }} artifacts - if: inputs.os == 'macos-12' + if: inputs.os == 'macos-13' uses: actions/upload-artifact@v3 with: name: OrcaSlicer_dep_mac_${{ inputs.arch }}_${{ env.date }} diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index 3091966e97..ac558acefd 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -74,21 +74,24 @@ jobs: # Mac - name: Install tools mac - if: inputs.os == 'macos-12' + if: inputs.os == 'macos-13' run: | - brew install cmake git gettext zstd tree + brew install cmake git gettext tree + brew uninstall --ignore-dependencies zstd + brew list mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}} mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}}/OrcaSlicer_dep_${{inputs.arch}} + tree ${{ github.workspace }}/deps/build_${{inputs.arch}}/OrcaSlicer_dep_${{inputs.arch}} - name: Build slicer mac - if: inputs.os == 'macos-12' + if: inputs.os == 'macos-13' working-directory: ${{ github.workspace }} run: | ./build_release_macos.sh -s -n -a ${{inputs.arch}} # Thanks to RaySajuuk, it's working now - name: Sign app and notary - if: (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) && inputs.os == 'macos-12' + if: (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) && inputs.os == 'macos-13' working-directory: ${{ github.workspace }} env: BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} @@ -114,14 +117,14 @@ jobs: xcrun stapler staple OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg - name: Create DMG without notary - if: github.ref != 'refs/heads/main' && inputs.os == 'macos-12' + if: github.ref != 'refs/heads/main' && inputs.os == 'macos-13' working-directory: ${{ github.workspace }} run: | ln -s /Applications ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/Applications hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg - name: Upload artifacts mac - if: inputs.os == 'macos-12' + if: inputs.os == 'macos-13' uses: actions/upload-artifact@v3 with: name: OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 3cda64ffd5..a29560220e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -436,11 +436,8 @@ find_package(TBB REQUIRED) # add_definitions(-DTBB_USE_CAPTURED_EXCEPTION=0) find_package(OpenSSL REQUIRED) -if (APPLE) -find_package(CURL CONFIG REQUIRED) -else() find_package(CURL REQUIRED) -endif() + add_library(libcurl INTERFACE) target_link_libraries(libcurl INTERFACE CURL::libcurl) diff --git a/build_release_macos.sh b/build_release_macos.sh index a9defeaf24..b7cac93c18 100755 --- a/build_release_macos.sh +++ b/build_release_macos.sh @@ -35,18 +35,19 @@ fi echo "Arch: $ARCH" echo "BUILD_TARGET: $BUILD_TARGET" -if which -s brew; then - brew --prefix libiconv - brew --prefix zstd - export LIBRARY_PATH=$LIBRARY_PATH:$(brew --prefix zstd)/lib/ -elif which -s port; then - port install libiconv - port install zstd - export LIBRARY_PATH=$LIBRARY_PATH:/opt/local/lib -else - echo "Need either brew or macports to successfully build deps" - exit 1 -fi +# if which -s brew; then +# brew --prefix libiconv +# brew --prefix zstd +# export LIBRARY_PATH=$LIBRARY_PATH:$(brew --prefix zstd)/lib/ +# elif which -s port; then +# port install libiconv +# port install zstd +# export LIBRARY_PATH=$LIBRARY_PATH:/opt/local/lib +# else +# echo "Need either brew or macports to successfully build deps" +# exit 1 +# fi + WD="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd $WD/deps From 98d8b010c477efee3c54651f0700ad6a4e6a4d09 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 26 Dec 2023 21:09:58 +0800 Subject: [PATCH 42/66] downgrade to macos-12 as there are not many macos-13 runner instances availble yet --- .github/workflows/build_all.yml | 4 ++-- .github/workflows/build_check_cache.yml | 6 +++--- .github/workflows/build_deps.yml | 4 ++-- .github/workflows/build_orca.yml | 10 +++++----- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index a6141efff7..a45d336f86 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -46,9 +46,9 @@ jobs: include: - os: ubuntu-20.04 - os: windows-latest - - os: macos-13 + - os: macos-12 arch: x86_64 - - os: macos-13 + - os: macos-12 arch: arm64 uses: ./.github/workflows/build_check_cache.yml with: diff --git a/.github/workflows/build_check_cache.yml b/.github/workflows/build_check_cache.yml index b8013a5eaf..cccc084944 100644 --- a/.github/workflows/build_check_cache.yml +++ b/.github/workflows/build_check_cache.yml @@ -28,9 +28,9 @@ jobs: - name: set outputs id: set_outputs env: - underscore-arch: ${{ inputs.os == 'macos-13' && '_' || ''}}${{ inputs.os == 'macos-13' && inputs.arch || '' }} # if is macos, make a string that does "_{arch}", else output nothing - dash-arch: ${{ inputs.os == 'macos-13' && '-' || ''}}${{ inputs.os == 'macos-13' && inputs.arch || '' }} # if is macos, make a string that does "-{arch}", else output nothing - dep-folder-name: ${{ (inputs.os == 'windows-latest' || inputs.os == 'macos-13') && 'OrcaSlicer_dep' || 'destdir' }} + underscore-arch: ${{ inputs.os == 'macos-12' && '_' || ''}}${{ inputs.os == 'macos-12' && inputs.arch || '' }} # if is macos, make a string that does "_{arch}", else output nothing + dash-arch: ${{ inputs.os == 'macos-12' && '-' || ''}}${{ inputs.os == 'macos-12' && inputs.arch || '' }} # if is macos, make a string that does "-{arch}", else output nothing + dep-folder-name: ${{ (inputs.os == 'windows-latest' || inputs.os == 'macos-12') && 'OrcaSlicer_dep' || 'destdir' }} output-cmd: ${{ inputs.os == 'windows-latest' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}} run: | echo cache-key=${{ runner.os }}${{ env.dash-arch }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }} diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index 0357d1c543..f7a16b7b61 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -67,7 +67,7 @@ jobs: cd ${{ github.workspace }}/deps/build - name: Build on Mac ${{ inputs.arch }} - if: inputs.os == 'macos-13' + if: inputs.os == 'macos-12' working-directory: ${{ github.workspace }} run: | brew install cmake git gettext automake @@ -98,7 +98,7 @@ jobs: # Upload Artifacts - name: Upload Mac ${{ inputs.arch }} artifacts - if: inputs.os == 'macos-13' + if: inputs.os == 'macos-12' uses: actions/upload-artifact@v3 with: name: OrcaSlicer_dep_mac_${{ inputs.arch }}_${{ env.date }} diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index ac558acefd..b629f27de2 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -74,7 +74,7 @@ jobs: # Mac - name: Install tools mac - if: inputs.os == 'macos-13' + if: inputs.os == 'macos-12' run: | brew install cmake git gettext tree brew uninstall --ignore-dependencies zstd @@ -84,14 +84,14 @@ jobs: tree ${{ github.workspace }}/deps/build_${{inputs.arch}}/OrcaSlicer_dep_${{inputs.arch}} - name: Build slicer mac - if: inputs.os == 'macos-13' + if: inputs.os == 'macos-12' working-directory: ${{ github.workspace }} run: | ./build_release_macos.sh -s -n -a ${{inputs.arch}} # Thanks to RaySajuuk, it's working now - name: Sign app and notary - if: (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) && inputs.os == 'macos-13' + if: (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) && inputs.os == 'macos-12' working-directory: ${{ github.workspace }} env: BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} @@ -117,14 +117,14 @@ jobs: xcrun stapler staple OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg - name: Create DMG without notary - if: github.ref != 'refs/heads/main' && inputs.os == 'macos-13' + if: github.ref != 'refs/heads/main' && inputs.os == 'macos-12' working-directory: ${{ github.workspace }} run: | ln -s /Applications ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/Applications hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg - name: Upload artifacts mac - if: inputs.os == 'macos-13' + if: inputs.os == 'macos-12' uses: actions/upload-artifact@v3 with: name: OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }} From 78c7abe4c251fc033edc49b5a673c0ccdfa6e974 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 27 Dec 2023 15:43:05 +0800 Subject: [PATCH 43/66] workaround to solve unwanted zstd dependency on runner (#3298) * trigger build * Remove zstd only for dep build * reinstall zstd after building completed --- .github/workflows/build_deps.yml | 4 +++- .github/workflows/build_orca.yml | 1 - CMakeLists.txt | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index f7a16b7b61..c9e6d36c52 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -71,11 +71,13 @@ jobs: working-directory: ${{ github.workspace }} run: | brew install cmake git gettext automake - brew uninstall --ignore-dependencies zstd brew list mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }} mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }}/OrcaSlicer_dep_${{ inputs.arch }} + brew uninstall --ignore-dependencies zstd ./build_release_macos.sh -dp -a ${{ inputs.arch }} + brew install zstd + - name: Build on Ubuntu if: inputs.os == 'ubuntu-20.04' diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index b629f27de2..58bd3e1b84 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -77,7 +77,6 @@ jobs: if: inputs.os == 'macos-12' run: | brew install cmake git gettext tree - brew uninstall --ignore-dependencies zstd brew list mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}} mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}}/OrcaSlicer_dep_${{inputs.arch}} diff --git a/CMakeLists.txt b/CMakeLists.txt index a29560220e..dffd6807d9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,6 +55,7 @@ if (APPLE) set(CMAKE_OSX_DEPLOYMENT_TARGET "11.3" CACHE STRING "Minimum OS X deployment version" FORCE) SET(CMAKE_XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "com.softfever3d.orca-slicer") + message(STATUS "Orca: IS_CROSS_COMPILE: ${IS_CROSS_COMPILE}") endif () # Proposal for C++ unit tests and sandboxes From 309979eaffaf4b48baabb013929f4fc7ac5d7bc5 Mon Sep 17 00:00:00 2001 From: Hukete <100949318+Hukete@users.noreply.github.com> Date: Wed, 27 Dec 2023 17:16:45 +0800 Subject: [PATCH 44/66] QIDI: Add two new filaments (#3304) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 10-25 Add TPU-95A HF * 1030 Adding Introduction of Chamber Temperature Control Macros(M191) to Notes * 1102 Add ABS-GF10 profile, Remove a extra "s" from the "0.36mm Standard @Qidi XPlus3 0.6 nozzle.json" file * 1106 Add the PA value to some genetic filament profiles * Add new filaments profiles Add new filaments profiles * 1 1 * Add two new filaments Add two new filaments --- resources/profiles/Qidi.json | 8 ++ .../profiles/Qidi/filament/QIDI ABS-GF25.json | 2 +- .../profiles/Qidi/filament/Qidi ASA-Aero.json | 76 +++++++++++++++++++ .../Qidi/filament/Qidi PC-ABS-FR.json | 46 +++++++++++ .../Qidi/filament/fdm_filament_pla.json | 2 +- 5 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 resources/profiles/Qidi/filament/Qidi ASA-Aero.json create mode 100644 resources/profiles/Qidi/filament/Qidi PC-ABS-FR.json diff --git a/resources/profiles/Qidi.json b/resources/profiles/Qidi.json index b4f3c7dc49..0526426595 100644 --- a/resources/profiles/Qidi.json +++ b/resources/profiles/Qidi.json @@ -579,6 +579,14 @@ { "name": "QIDI ABS-GF10", "sub_path": "filament/QIDI ABS-GF10.json" + }, + { + "name": "Qidi PC-ABS-FR", + "sub_path": "filament/Qidi PC-ABS-FR.json" + }, + { + "name": "Qidi ASA-Aero", + "sub_path": "filament/Qidi ASA-Aero.json" } ], "machine_list": [ diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25.json index ad97c0e90b..3c5b8af588 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25.json @@ -7,7 +7,7 @@ "instantiation": "true", "inherits": "fdm_filament_abs", "filament_flow_ratio": [ - "0.8" + "0.9" ], "filament_max_volumetric_speed": [ "15" diff --git a/resources/profiles/Qidi/filament/Qidi ASA-Aero.json b/resources/profiles/Qidi/filament/Qidi ASA-Aero.json new file mode 100644 index 0000000000..b787a87052 --- /dev/null +++ b/resources/profiles/Qidi/filament/Qidi ASA-Aero.json @@ -0,0 +1,76 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "Qidi ASA-Aero", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_asa", + "filament_max_volumetric_speed": [ + "16" + ], + "filament_flow_ratio": [ + "0.7" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature": [ + "270" + ], + "cool_plate_temp" : [ + "90" + ], + "eng_plate_temp" : [ + "90" + ], + "hot_plate_temp" : [ + "90" + ], + "textured_plate_temp" : [ + "90" + ], + "cool_plate_temp_initial_layer" : [ + "90" + ], + "eng_plate_temp_initial_layer" : [ + "90" + ], + "hot_plate_temp_initial_layer" : [ + "90" + ], + "textured_plate_temp_initial_layer" : [ + "90" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.021" + ], + "filament_retraction_length": [ + "0" + ], + "filament_start_gcode": [ + "; filament start gcode\nM141 S60\n{if (bed_temperature[current_extruder] >90)||(bed_temperature_initial_layer[current_extruder] >90)}M106 P3 S0\n{elsif(bed_temperature[current_extruder] >70)||(bed_temperature_initial_layer[current_extruder] >70)}M106 P3 S153\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{endif}" + ], + "compatible_printers": [ + "Qidi X-Plus 0.4 nozzle", + "Qidi X-Max 0.4 nozzle", + "Qidi X-CF Pro 0.4 nozzle", + "Qidi X-Smart 3 0.4 nozzle", + "Qidi X-Plus 3 0.4 nozzle", + "Qidi X-Max 3 0.4 nozzle", + "Qidi X-Max 0.6 nozzle", + "Qidi X-CF Pro 0.6 nozzle", + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle", + "Qidi X-Plus 0.8 nozzle", + "Qidi X-Max 0.8 nozzle", + "Qidi X-CF Pro 0.8 nozzle", + "Qidi X-Smart 3 0.8 nozzle", + "Qidi X-Plus 3 0.8 nozzle", + "Qidi X-Max 3 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR.json new file mode 100644 index 0000000000..4098bb90e2 --- /dev/null +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "Qidi PC-ABS-FR", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs", + "filament_flow_ratio": [ + "0.92" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.04" + ], + "overhang_fan_speed": [ + "60" + ], + "filament_start_gcode": [ + "; filament start gcode\nM141 S55\n{if (bed_temperature[current_extruder] >90)||(bed_temperature_initial_layer[current_extruder] >90)}M106 P3 S0\n{elsif(bed_temperature[current_extruder] >70)||(bed_temperature_initial_layer[current_extruder] >70)}M106 P3 S153\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{endif}" + ], + "compatible_printers": [ + "Qidi X-Plus 0.4 nozzle", + "Qidi X-Max 0.4 nozzle", + "Qidi X-CF Pro 0.4 nozzle", + "Qidi X-Smart 3 0.4 nozzle", + "Qidi X-Plus 3 0.4 nozzle", + "Qidi X-Max 3 0.4 nozzle", + "Qidi X-Max 0.6 nozzle", + "Qidi X-CF Pro 0.6 nozzle", + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle", + "Qidi X-Plus 0.8 nozzle", + "Qidi X-Max 0.8 nozzle", + "Qidi X-CF Pro 0.8 nozzle", + "Qidi X-Smart 3 0.8 nozzle", + "Qidi X-Plus 3 0.8 nozzle", + "Qidi X-Max 3 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/fdm_filament_pla.json b/resources/profiles/Qidi/filament/fdm_filament_pla.json index 8a82c3711e..6e162b00f9 100644 --- a/resources/profiles/Qidi/filament/fdm_filament_pla.json +++ b/resources/profiles/Qidi/filament/fdm_filament_pla.json @@ -89,6 +89,6 @@ "4" ], "additional_cooling_fan_speed": [ - "100" + "0" ] } From 90dd67e4e44dae0084c4dfd7123a72043844c07a Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 27 Dec 2023 10:31:19 +0100 Subject: [PATCH 45/66] Update OrcaSlicer_fr.po (#3295) * Update OrcaSlicer_fr.po Added missing translations. * Update OrcaSlicer_fr.po * Update OrcaSlicer_fr.po * Update OrcaSlicer_fr.po * Update OrcaSlicer_fr.po --- localization/i18n/fr/OrcaSlicer_fr.po | 546 ++++++++++++++------------ 1 file changed, 287 insertions(+), 259 deletions(-) diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index cf95845f6d..a8bda45da7 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-27 13:03+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -15,13 +15,13 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n==0 || n==1) ? 0 : 1;\n" -"X-Generator: Poedit 3.4.1\n" +"X-Generator: Poedit 3.4.2\n" msgid "Supports Painting" -msgstr "Prend en charge la peinture" +msgstr "Peindre les supports" msgid "Alt + Mouse wheel" -msgstr "Alt + molette de la souris" +msgstr "Alt + Molette de la souris" msgid "Section view" msgstr "Vue en coupe" @@ -30,7 +30,7 @@ msgid "Reset direction" msgstr "Réinitialiser la direction" msgid "Ctrl + Mouse wheel" -msgstr "Ctrl + molette de la souris" +msgstr "Ctrl + Molette de la souris" msgid "Pen size" msgstr "Taille du stylo" @@ -48,16 +48,16 @@ msgid "Block supports" msgstr "Bloquer les supports" msgid "Shift + Left mouse button" -msgstr "Maj + bouton gauche de la souris" +msgstr "Maj + Bouton gauche de la souris" msgid "Erase" msgstr "Effacer" msgid "Erase all painting" -msgstr "Effacer toute la peinture" +msgstr "Effacer toute peinture" msgid "Highlight overhang areas" -msgstr "Mettez en surbrillance les zones en surplomb" +msgstr "Mettre en surbrillance les zones en surplomb" msgid "Gap fill" msgstr "Remplir les trous" @@ -98,7 +98,7 @@ msgstr "" "Permet de peindre uniquement sur les facettes sélectionnées par : \"%1%\"" msgid "Highlight faces according to overhang angle." -msgstr "Mettez en surbrillance les faces en fonction de l'angle de surplomb." +msgstr "Mettre en surbrillance les faces en fonction de l'angle de surplomb." msgid "No auto support" msgstr "Pas de support auto" @@ -122,7 +122,7 @@ msgstr "" "l'outil de peinture." msgid "Color Painting" -msgstr "Couleur Peinture" +msgstr "Mettre en couleur" msgid "Pen shape" msgstr "Forme de stylo" @@ -131,7 +131,7 @@ msgid "Paint" msgstr "Peindre" msgid "Key 1~9" -msgstr "Clé 1 ~ 9" +msgstr "Touche 1 ~ 9" msgid "Choose filament" msgstr "Choisissez le filament" @@ -161,7 +161,7 @@ msgid "Alt + Shift + Enter" msgstr "" msgid "Toggle Wireframe" -msgstr "Activer Filaire" +msgstr "Activer Maillage" msgid "Shortcut Key " msgstr "Touche de raccourci " @@ -249,13 +249,13 @@ msgid "Set Scale" msgstr "Définir l'Échelle" msgid "Reset Position" -msgstr "Position de réinitialisation" +msgstr "Réinitialiser la position" msgid "Reset Rotation" msgstr "Réinitialiser la Rotation" msgid "World coordinates" -msgstr "Les coordonnées mondiales" +msgstr "Coordonnées" msgid "°" msgstr "°" @@ -301,6 +301,8 @@ msgstr "Couper" msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" msgstr "" +"les bords non pliables sont dus à l’outil de coupe, voulez-vous les corriger " +"maintenant ?" msgid "Repairing model object" msgstr "Réparer l'objet modèle" @@ -330,7 +332,7 @@ msgid "Lower part" msgstr "Partie inférieure" msgid "Keep" -msgstr "Garder" +msgstr "Conserver" msgid "Place on cut" msgstr "Placer sur la coupe" @@ -396,16 +398,16 @@ msgid "Invalid connectors detected" msgstr "Connecteurs invalides détectés" msgid "connector is out of cut contour" -msgstr "le connecteur est hors du contour de la coupe" +msgstr "connecteur est hors du contour de la coupe" msgid "connectors are out of cut contour" -msgstr "les connecteurs sont hors du contour de la coupe" +msgstr "connecteurs sont hors du contour de la coupe" msgid "connector is out of object" -msgstr "le connecteur est hors de l'objet" +msgstr "connecteur est hors de l'objet" msgid "connectors is out of object" -msgstr "les connecteurs sont hors de l'objet" +msgstr "connecteurs sont hors de l'objet" msgid "Some connectors are overlapped" msgstr "Certains connecteurs se chevauchent" @@ -477,7 +479,7 @@ msgid "%d triangles" msgstr "%d triangles" msgid "Show wireframe" -msgstr "Afficher la vue filaire" +msgstr "Afficher le maillage" #, boost-format msgid "%1%" @@ -579,7 +581,7 @@ msgid "Some values have been replaced. Please check them:" msgstr "Certaines valeurs ont été remplacées. Veuillez les vérifier :" msgid "Process" -msgstr "Traiter" +msgstr "Traitement" msgid "Filament" msgstr "Filament" @@ -700,7 +702,7 @@ msgid "Loading current presets" msgstr "Chargement des préréglages actuels" msgid "Loading a mode view" -msgstr "Chargement d'une vue de mode" +msgstr "Chargement d'un mode de vue" msgid "Choose one file (3mf):" msgstr "Choisissez un fichier (3mf):" @@ -734,7 +736,7 @@ msgstr "" "pendant le processus de tranchage !" msgid "Open Project" -msgstr "Ouvrir Projet" +msgstr "Ouvrir un Projet" msgid "" "The version of Orca Slicer is too low and needs to be updated to the latest " @@ -744,7 +746,7 @@ msgstr "" "dernière version afin qu’il puisse être utilisé normalement" msgid "Privacy Policy Update" -msgstr "Mise à jour de politique de confidentialité" +msgstr "Mise à jour de la politique de confidentialité" msgid "" "The number of user presets cached in the cloud has exceeded the upper limit, " @@ -816,7 +818,7 @@ msgid "Quality" msgstr "Qualité" msgid "Shell" -msgstr "Coquille" +msgstr "Coque" msgid "Infill" msgstr "Remplissage" @@ -834,10 +836,10 @@ msgid "Strength" msgstr "Résistance" msgid "Top Solid Layers" -msgstr "Couches supérieures solides" +msgstr "Couches solides supérieures" msgid "Top Minimum Shell Thickness" -msgstr "Épaisseur minimale de la coque" +msgstr "Épaisseur minimale de la coque supérieure" msgid "Bottom Solid Layers" msgstr "Couches solides inférieures" @@ -861,7 +863,7 @@ msgid "Wipe options" msgstr "Options de nettoyage" msgid "Bed adhension" -msgstr "Adhérence au lit" +msgstr "Adhérence au plateau" msgid "Advanced" msgstr "Avancé" @@ -927,10 +929,10 @@ msgid "Cone" msgstr "Cône" msgid "Disc" -msgstr "" +msgstr "Disque" msgid "Torus" -msgstr "" +msgstr "Tore" msgid "Orca Cube" msgstr "Cube Orca" @@ -945,7 +947,7 @@ msgid "Voron Cube" msgstr "Cube Voron" msgid "Stanford Bunny" -msgstr "" +msgstr "Lapin de Stanford" msgid "Text" msgstr "Texte" @@ -1107,7 +1109,7 @@ msgid "Add Primitive" msgstr "Ajouter une primitive" msgid "Add Handy models" -msgstr "" +msgstr "Ajouter des modèles pratiques" msgid "Show Labels" msgstr "Afficher les étiquettes" @@ -1156,7 +1158,7 @@ msgid "delete all objects on current plate" msgstr "supprimer tous les objets sur la plaque actuelle" msgid "Arrange" -msgstr "Agencer" +msgstr "Organiser" msgid "arrange current plate" msgstr "organiser la plaque actuelle" @@ -1489,7 +1491,7 @@ msgid "No-brim" msgstr "Sans bord" msgid "Outer wall speed" -msgstr "Vitesse du mur extérieur" +msgstr "Vitesse de paroi extérieure" msgid "Plate" msgstr "Plaque" @@ -2128,7 +2130,7 @@ msgid "Nozzle temperature" msgstr "Température de la buse" msgid "Bed Temperature" -msgstr "Température du lit" +msgstr "Température du plateau" msgid "Max volumetric speed" msgstr "Vitesse volumétrique maximale" @@ -2542,7 +2544,8 @@ msgstr "" "Choisir un fichier à partir duquel importer la texture du plateau (PNG/SVG) :" msgid "Choose an STL file to import bed model from:" -msgstr "Choisissez un fichier STL à partir duquel importer le modèle de lit :" +msgstr "" +"Choisissez un fichier STL à partir duquel importer le modèle de plateau :" msgid "Bed Shape" msgstr "Forme du plateau" @@ -2589,7 +2592,7 @@ msgstr "Hauteur de couche trop petite. Réinitialiser à 0,2" msgid "" "Too small ironing spacing.\n" "Reset to 0.1" -msgstr "Espacement de repassage trop petit. Réinitialiser à 0.1" +msgstr "Espacement de lissage trop petit. Réinitialiser à 0.1" msgid "" "Zero initial layer height is invalid.\n" @@ -2622,16 +2625,16 @@ msgid "" msgstr "" "Une trop grande compensation du pied d'éléphant est déraisonnable. Si vous " "avez vraiment un effet de pied d'éléphant sérieux, veuillez vérifier " -"d'autres paramètres. Par exemple, si la température du lit est trop élevée. " -"La valeur sera remise à 0." +"d'autres paramètres. Par exemple, si la température du plateau est trop " +"élevée. La valeur sera remise à 0." msgid "" "Spiral mode only works when wall loops is 1, support is disabled, top shell " "layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" -"Le mode spirale ne fonctionne que lorsque qu'il n'y a qu'un seul mur, les " -"supports sont désactivés, que les couches supérieures de la coque sont à 0, " -"qu'il n'y a pas de remplissage et que le type timelapse est traditionnel." +"Le mode spirale ne fonctionne que lorsque qu'il n'y a qu'une seule paroi, " +"les supports sont désactivés, que les couches supérieures de la coque sont à " +"0, qu'il n'y a pas de remplissage et que le type timelapse est traditionnel." msgid " But machines with I3 structure will not generate timelapse videos." msgstr "" @@ -2652,6 +2655,8 @@ msgid "" "Alternate extra wall only works with ensure vertical shell thickness " "disabled. " msgstr "" +"La paroi supplémentaire alternée ne fonctionne que si « Assurer l’épaisseur " +"verticale de la coque » est désactivé. " msgid "" "Change these settings automatically? \n" @@ -2659,6 +2664,10 @@ msgid "" "wall\n" "No - Dont use alternate extra wall" msgstr "" +"Modifier ces paramètres automatiquement ? \n" +"Oui - Désactiver « Assurer l’épaisseur verticale de la coque » et activer " +"« Paroi supplémentaire alternée »\n" +"Non - Ne pas utiliser « Paroi supplémentaire alternée »" msgid "" "Prime tower does not work when Adaptive Layer Height or Independent Support " @@ -2798,7 +2807,7 @@ msgid "Cooling chamber" msgstr "Refroidissement de la chambre" msgid "Paused by the Gcode inserted by user" -msgstr "Mise en pause par le Gcode inséré par l’utilisateur" +msgstr "Mise en pause par le G-code inséré par l’utilisateur" msgid "Motor noise showoff" msgstr "Démonstration du bruit du moteur" @@ -3171,13 +3180,13 @@ msgid "Remove detail" msgstr "Supprimer détail" msgid "Shift + Left mouse button:" -msgstr "Maj + bouton gauche de la souris :" +msgstr "Maj + Bouton gauche de la souris :" msgid "Reset to base" msgstr "Revenir de base" msgid "Shift + Right mouse button:" -msgstr "Maj + bouton droit de la souris:" +msgstr "Maj + Bouton droit de la souris:" msgid "Smoothing" msgstr "Lissage" @@ -3243,10 +3252,10 @@ msgid "Auto orient" msgstr "Orientation automatique" msgid "Arrange all objects" -msgstr "Disposer tous les objets" +msgstr "Organiser tous les objets" msgid "Arrange objects on selected plates" -msgstr "Disposer les objets sur les plaques sélectionnées" +msgstr "Organiser les objets sur les plaques sélectionnées" msgid "Split to objects" msgstr "Diviser en objets individuels" @@ -3305,7 +3314,7 @@ msgid "A G-code path goes beyond the max print height." msgstr "Un chemin du G-code dépasse la hauteur d’impression maximale." msgid "A G-code path goes beyond the boundary of plate." -msgstr "Un chemin de code G va au-delà de la limite de la plaque." +msgstr "Un chemin du G-code va au-delà de la limite de la plaque." msgid "Only the object being edit is visible." msgstr "Seul l'objet en cours d'édition est visible." @@ -3327,7 +3336,7 @@ msgid "Micro lidar calibration" msgstr "Calibration du Micro-Lidar" msgid "Bed leveling" -msgstr "Mise à niveau du lit" +msgstr "Mise à niveau du plateau" msgid "Vibration compensation" msgstr "Compensation des vibrations" @@ -3675,7 +3684,7 @@ msgid "Show &G-code Window" msgstr "Afficher la fenêtre du &G-code" msgid "Show g-code window in Previce scene" -msgstr "Afficher la fenêtre du code g dans la scène précédente" +msgstr "Afficher la fenêtre du G-code dans la scène précédente" msgid "Reset Window Layout" msgstr "Réinitialiser la présentation de la fenêtre" @@ -3941,7 +3950,7 @@ msgid "Information" msgstr "Information" msgid "Playing..." -msgstr "En jouant..." +msgstr "En cours…" #, c-format, boost-format msgid "Load failed [%d]!" @@ -4536,7 +4545,7 @@ msgstr "" "Votre modèle a besoin de supports ! Veuillez activer le matériau de support." msgid "Gcode path overlap" -msgstr "Chevauchement de chemin Gcode" +msgstr "Chevauchement de chemin G-code" msgid "Support painting" msgstr "Soutenir la peinture" @@ -5082,7 +5091,7 @@ msgid "The selected file" msgstr "Le fichier sélectionné" msgid "does not contain valid gcode." -msgstr "ne contient pas de gcode valide." +msgstr "ne contient pas de G-code valide." msgid "Error occurs while loading G-code file" msgstr "Une erreur se produit lors du chargement du fichier G-code" @@ -5103,7 +5112,7 @@ msgid "Only one G-code file can be opened at the same time." msgstr "Un seul fichier G-code peut être ouvert à la fois." msgid "G-code loading" -msgstr "Chargement du code G" +msgstr "Chargement du G-code" msgid "G-code files can not be loaded with models together!" msgstr "" @@ -5396,7 +5405,7 @@ msgid "User Sync" msgstr "Synchronisation utilisateur" msgid "Update built-in Presets automatically." -msgstr "Mettez à jour automatiquement les préréglages intégrés." +msgstr "Mettre à jour automatiquement les préréglages intégrés." msgid "System Sync" msgstr "Synchronisation du système" @@ -5812,7 +5821,7 @@ msgid "Refresh" msgstr "Actualiser" msgid "Bed Leveling" -msgstr "Mise à niveau du lit" +msgstr "Mise à niveau du plateau" msgid "Flow Dynamics Calibration" msgstr "Calibration du débit" @@ -5861,17 +5870,17 @@ msgid "" "Filament %s exceeds the number of AMS slots. Please update the printer " "firmware to support AMS slot assignment." msgstr "" -"Le filament %s dépasse le nombre d'emplacements AMS. Mettez à jour le " -"firmware de l'imprimante pour qu'il prenne en charge l'attribution des " +"Le filament %s dépasse le nombre d'emplacements AMS. Veuillez mettre à jour " +"le firmware de l'imprimante pour qu'il prenne en charge l'attribution des " "emplacements AMS." msgid "" "Filament exceeds the number of AMS slots. Please update the printer firmware " "to support AMS slot assignment." msgstr "" -"Le nombre de filaments dépasse le nombre d'emplacements AMS. Mettez à jour " -"le firmware de l'imprimante pour qu'il prenne en charge l'attribution des " -"emplacements AMS." +"Le nombre de filaments dépasse le nombre d'emplacements AMS. Veuillez mettre " +"à jour le firmware de l'imprimante pour qu'il prenne en charge l'attribution " +"des emplacements AMS." msgid "" "Filaments to AMS slots mappings have been established. You can click a " @@ -5901,9 +5910,9 @@ msgid "" "Filament does not match the filament in AMS slot. Please update the printer " "firmware to support AMS slot assignment." msgstr "" -"Le filament ne correspond pas au filament du slot AMS. Mettez à jour le " -"firmware de l'imprimante pour qu'il prenne en charge l'attribution des " -"emplacements AMS." +"Le filament ne correspond pas au filament du slot AMS. Veuillez mettre à " +"jour le firmware de l'imprimante pour qu'il prenne en charge l'attribution " +"des emplacements AMS." msgid "" "The printer firmware only supports sequential mapping of filament => AMS " @@ -6226,7 +6235,7 @@ msgstr "" "Nous avons ajouté un style expérimental « Arborescent Fin » qui offre un " "volume de support plus petit mais également une résistance plus faible.\n" "Nous recommandons de l'utiliser avec : 0 couches d'interface, 0 distance " -"supérieure, 2 murs." +"supérieure, 2 parois." msgid "" "Change these settings automatically? \n" @@ -6278,8 +6287,8 @@ msgstr "Ignorer" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Lorsque vous enregistrez un timelapse sans tête d’outil, il est recommandé " "d’ajouter une \"Tour de nettoyage timelapse\".\n" @@ -6296,10 +6305,10 @@ msgid "Precision" msgstr "Précision" msgid "Wall generator" -msgstr "Générateur de mur" +msgstr "Générateur de paroi" msgid "Walls and surfaces" -msgstr "Murs et surfaces" +msgstr "Parois et surfaces" msgid "Bridging" msgstr "Ponts" @@ -6311,7 +6320,7 @@ msgid "Walls" msgstr "Parois" msgid "Top/bottom shells" -msgstr "Coquilles supérieures/inférieures" +msgstr "Coques supérieures/inférieures" msgid "Initial layer speed" msgstr "Vitesse de couche initiale" @@ -6385,11 +6394,11 @@ msgid_plural "" "estimation." msgstr[0] "" "La ligne suivante %s contient des mots clés réservés. Veuillez le supprimer, " -"ou il battra la visualisation du code G et l'estimation du temps " +"ou il battra la visualisation du G-code et l'estimation du temps " "d'impression." msgstr[1] "" "La ligne suivante %s contient des mots clés réservés. Veuillez le supprimer, " -"ou il battra la visualisation du code G et l'estimation du temps " +"ou il battra la visualisation du G-code et l'estimation du temps " "d'impression." msgid "Reserved keywords found" @@ -6431,9 +6440,9 @@ msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate" msgstr "" -"Il s'agit de la température du plateau lorsque le plateau froid (\"Cool plate" -"\") est installé. Une valeur à 0 signifie que ce filament ne peut pas être " -"imprimé sur le plateau froid." +"Il s'agit de la température du plateau lorsque le plateau froid (\"Cool " +"plate\") est installé. Une valeur à 0 signifie que ce filament ne peut pas " +"être imprimé sur le plateau froid." msgid "Engineering plate" msgstr "Plaque Engineering" @@ -6466,8 +6475,9 @@ msgid "" "Bed temperature when Textured PEI Plate is installed. Value 0 means the " "filament does not support to print on the Textured PEI Plate" msgstr "" -"Température du lit lorsque la plaque PEI texturée est installée. La valeur 0 " -"signifie que le filament n'est pas supporté par la plaque PEI texturée" +"Température du plateau lorsque la plaque PEI texturée est installée. La " +"valeur 0 signifie que le filament n'est pas supporté par la plaque PEI " +"texturée" msgid "Volumetric speed limitation" msgstr "Limitation de vitesse volumétrique" @@ -6520,10 +6530,10 @@ msgid "Complete print" msgstr "Après l’impression" msgid "Filament start G-code" -msgstr "Code G de démarrage du filament" +msgstr "G-code de démarrage du filament" msgid "Filament end G-code" -msgstr "Code G de fin de filament" +msgstr "G-code de fin de filament" msgid "Multimaterial" msgstr "Multi-matériaux" @@ -6562,10 +6572,10 @@ msgid "Machine gcode" msgstr "G-code de la machine" msgid "Machine start G-code" -msgstr "Code G de démarrage de la machine" +msgstr "G-code de démarrage de la machine" msgid "Machine end G-code" -msgstr "Code G de fin de machine" +msgstr "G-code de fin de machine" msgid "Printing by object G-code" msgstr "Impression par objet G-code" @@ -6574,19 +6584,19 @@ msgid "Before layer change G-code" msgstr "G-Code avant changement de couche" msgid "Layer change G-code" -msgstr "Code G de changement de couche" +msgstr "G-code de changement de couche" msgid "Time lapse G-code" msgstr "G-code de Timelapse" msgid "Change filament G-code" -msgstr "Changer le code G du filament" +msgstr "Changer le G-code du filament" msgid "Change extrusion role G-code" msgstr "G-code de changement du rôle de l’extrusion" msgid "Pause G-code" -msgstr "Mettre le code G en pause" +msgstr "Mettre le G-code en pause" msgid "Template Custom G-code" msgstr "Modèle G-code personnalisé" @@ -6940,7 +6950,7 @@ msgid "Auto-Calc" msgstr "Auto-Calc" msgid "Re-calculate" -msgstr "" +msgstr "Re-calculer" msgid "Flushing volumes for filament change" msgstr "Volumes de rinçage pour le changement de filament" @@ -7190,7 +7200,7 @@ msgid "Move: press to snap by 1mm" msgstr "Déplacer : appuyez pour aligner de 1 mm" msgid "⌘+Mouse wheel" -msgstr "⌘+molette de la souris" +msgstr "⌘+Molette de la souris" msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Peinture couleur : ajustez le rayon du stylet" @@ -7202,10 +7212,10 @@ msgid "Support/Color Painting: adjust section position" msgstr "Support/Peinture couleur : ajuster la position de la section" msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+molette de la souris" +msgstr "Ctrl+Molette de la souris" msgid "Alt+Mouse wheel" -msgstr "Alt+molette de la souris" +msgstr "Alt+Molette de la souris" msgid "Gizmo" msgstr "Bidule" @@ -7357,7 +7367,7 @@ msgid "Idle" msgstr "Inactif" msgid "Beta version" -msgstr "" +msgstr "Version Beta" msgid "Latest version" msgstr "Dernière version" @@ -7495,11 +7505,11 @@ msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" msgstr "" -"Échec de la génération du gcode pour un G-code personnalisé non valide.\n" +"Échec de la génération du G-code pour un G-code personnalisé non valide.\n" msgid "Please check the custom G-code or use the default custom G-code." msgstr "" -"Veuillez vérifier le code G personnalisé ou utiliser le code G personnalisé " +"Veuillez vérifier le G-code personnalisé ou utiliser le G-code personnalisé " "par défaut." #, boost-format @@ -7507,13 +7517,13 @@ msgid "Generating G-code: layer %1%" msgstr "Génération du G-code : couche %1%" msgid "Inner wall" -msgstr "Mur intérieur" +msgstr "Paroi intérieure" msgid "Outer wall" -msgstr "Mur extérieur" +msgstr "Paroi extérieure" msgid "Overhang wall" -msgstr "Mur en surplomb" +msgstr "Paroi en surplomb" msgid "Sparse infill" msgstr "Remplissage" @@ -7774,8 +7784,8 @@ msgstr "" msgid "The prime tower is not supported in \"By object\" print." msgstr "" -"La tour de nettoyage n'est pas prise en charge dans l'impression \"Par objet" -"\"." +"La tour de nettoyage n'est pas prise en charge dans l'impression \"Par " +"objet\"." msgid "" "The prime tower is not supported when adaptive layer height is on. It " @@ -7865,20 +7875,20 @@ msgid "" msgstr "" "L'extrusion relative de l'extrudeur nécessite de réinitialiser la position " "de celui-ci à chaque couche pour éviter la perte de précision de la virgule " -"flottante. Ajouter \"G92 E0\" au Gcode de changement de couche." +"flottante. Ajouter \"G92 E0\" au G-code de changement de couche." msgid "" "\"G92 E0\" was found in before_layer_gcode, which is incompatible with " "absolute extruder addressing." msgstr "" -"\"G92 E0\" a été trouvé dans le Gcode avant le changement de couche, ce qui " +"\"G92 E0\" a été trouvé dans le G-code avant le changement de couche, ce qui " "est incompatible avec l’extrusion absolue de l’extrudeur." msgid "" "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " "extruder addressing." msgstr "" -"\"G92 E0\" a été trouvé dans le Gcode de changement de couche, ce qui est " +"\"G92 E0\" a été trouvé dans le G-code de changement de couche, ce qui est " "incompatible avec l’extrusion absolue de l’extrudeur." #, c-format, boost-format @@ -7901,7 +7911,7 @@ msgid "Printable area" msgstr "Zone imprimable" msgid "Bed exclude area" -msgstr "Zone d'exclusion de lit" +msgstr "Zone d'exclusion de plateau" msgid "" "Unprintable area in XY plane. For example, X1 Series printers use the front " @@ -7914,7 +7924,7 @@ msgstr "" "points au format suivant : \"XxY, XxY,... \"" msgid "Bed custom texture" -msgstr "Texture personnalisée du lit" +msgstr "Texture personnalisée du plateau" msgid "Bed custom model" msgstr "Modèle de plateau personnalisé" @@ -8051,15 +8061,15 @@ msgid "HTTP digest" msgstr "Résumé HTTP" msgid "Avoid crossing wall" -msgstr "Évitez de traverser les murs" +msgstr "Évitez de traverser les parois" msgid "Detour and avoid to travel across wall which may cause blob on surface" msgstr "" -"Faites un détour et évitez de traverser le mur, ce qui pourrait causer des " -"taches sur la surface" +"Faire un détour et éviter de traverser la paroi, ce qui pourrait causer des " +"dépôts sur la surface" msgid "Avoid crossing wall - Max detour length" -msgstr "Évitez de traverser les murs - Longueur maximale du détour" +msgstr "Évitez de traverser les parois - Longueur maximale du détour" msgid "" "Maximum detour distance for avoiding crossing wall. Don't detour if the " @@ -8067,11 +8077,11 @@ msgid "" "either as an absolute value or as percentage (for example 50%) of a direct " "travel path. Zero to disable" msgstr "" -"Distance de détour maximale pour éviter de traverser un mur: l'imprimante ne " -"fera pas de détour si la distance de détour est supérieure à cette valeur. " -"La longueur du détour peut être spécifiée sous forme de valeur absolue ou de " -"pourcentage (par exemple 50 %) d'un trajet direct. Une valeur de 0 " -"désactivera cette option." +"Distance de détour maximale pour éviter de traverser une paroi: l'imprimante " +"ne fera pas de détour si la distance de détour est supérieure à cette " +"valeur. La longueur du détour peut être spécifiée sous forme de valeur " +"absolue ou de pourcentage (par exemple 50 %) d'un trajet direct. Une valeur " +"de 0 désactivera cette option." msgid "mm or %" msgstr "mm ou %" @@ -8110,14 +8120,14 @@ msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Textured PEI Plate" msgstr "" -"Température du lit après la première couche. 0 signifie que le filament " +"Température du plateau après la première couche. 0 signifie que le filament " "n'est pas supporté par la plaque PEI texturée." msgid "Initial layer" msgstr "Couche initiale" msgid "Initial layer bed temperature" -msgstr "Température initiale du lit de couche" +msgstr "Température du plateau lors de la couche initiale" msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -8147,11 +8157,11 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Textured PEI Plate" msgstr "" -"La température du lit à la première couche. La valeur 0 signifie que le " +"La température du plateau à la première couche. La valeur 0 signifie que le " "filament n'est pas supporté sur la plaque PEI texturée." msgid "Bed types supported by the printer" -msgstr "Types de lit pris en charge par l'imprimante" +msgstr "Types de plateaux pris en charge par l'imprimante" msgid "Cool Plate" msgstr "Cool Plate/Plaque PLA" @@ -8163,7 +8173,8 @@ msgid "First layer print sequence" msgstr "Séquence d’impression de la première couche" msgid "This G-code is inserted at every layer change before lifting z" -msgstr "Ce G-code est inséré à chaque changement de couche avant de soulever z" +msgstr "" +"Ce G-code est inséré à chaque changement de couche avant le levage du Z" msgid "Bottom shell layers" msgstr "Couches inférieures de la coque" @@ -8215,7 +8226,7 @@ msgid "" "bridge can get better quality for these part" msgstr "" "Forcez le ventilateur de refroidissement de la pièce à être à cette vitesse " -"lors de l'impression d'un pont ou d'un mur en surplomb qui a un degré de " +"lors de l'impression d'un pont ou d'une paroi en surplomb qui a un degré de " "surplomb important. Forcer le refroidissement pour les surplombs et le pont " "pour obtenir une meilleure qualité pour ces pièces." @@ -8304,17 +8315,17 @@ msgid "" "Improve shell precision by adjusting outer wall spacing. This also improves " "layer consistency." msgstr "" -"Améliorer la précision de la coque en ajustant l’espacement des murs " -"extérieurs. Cela améliore également la consistance des couches." +"Améliorer la précision de la coque en ajustant l’espacement des parois " +"extérieures. Cela améliore également la consistance des couches." msgid "Only one wall on top surfaces" -msgstr "Un seul mur sur les surfaces supérieures" +msgstr "Une seule paroi sur les surfaces supérieures" msgid "" "Use only one wall on flat top surface, to give more space to the top infill " "pattern" msgstr "" -"N'utilisez qu'un seul mur sur les surfaces supérieures planes, afin de " +"N'utilisez qu'une seule paroi sur les surfaces supérieures planes, afin de " "donner plus d'espace au motif de remplissage supérieur." msgid "One wall threshold" @@ -8463,7 +8474,7 @@ msgstr "Externe" msgid "Speed of bridge and completely overhang wall" msgstr "" -"Il s'agit de la vitesse pour les ponts et les murs en surplomb à 100 %." +"Il s'agit de la vitesse pour les ponts et les parois en surplomb à 100 %." msgid "mm/s" msgstr "mm/s" @@ -8684,7 +8695,7 @@ msgid "End G-code" msgstr "G-code de fin" msgid "End G-code when finish the whole printing" -msgstr "Terminer le code G lorsque vous avez terminé toute l'impression" +msgstr "G-code de fin lorsque vous avez terminé toute l'impression" msgid "Between Object Gcode" msgstr "G-code entre objet" @@ -8697,7 +8708,7 @@ msgstr "" "lorsque vous imprimerez vos modèles objet par objet." msgid "End G-code when finish the printing of this filament" -msgstr "Fin du code G lorsque l'impression de ce filament est terminée" +msgstr "G-code de fin lorsque l'impression de ce filament est terminée" msgid "Ensure vertical shell thickness" msgstr "Assurer l'épaisseur verticale de la coque" @@ -8707,8 +8718,8 @@ msgid "" "thickness (top+bottom solid layers)" msgstr "" "Ajoutez du remplissage solide à proximité des surfaces inclinées pour " -"garantir l'épaisseur verticale de la coque (couches solides supérieure" -"+inférieure)." +"garantir l'épaisseur verticale de la coque (couches solides " +"supérieure+inférieure)." msgid "Top surface pattern" msgstr "Motif de surface supérieure" @@ -8770,8 +8781,8 @@ msgid "" "Speed of outer wall which is outermost and visible. It's used to be slower " "than inner wall speed to get better quality." msgstr "" -"Vitesse du mur extérieur qui est le plus à l'extérieur et visible. Il est " -"utilisé pour être plus lent que la vitesse de la paroi interne pour obtenir " +"Vitesse de paroi extérieure qui est la plus à l'extérieur et visible. Elle " +"est généralement plus lente que la vitesse de la paroi interne pour obtenir " "une meilleure qualité." msgid "Small perimeters" @@ -8785,8 +8796,8 @@ msgid "" msgstr "" "Ce paramètre séparé affectera la vitesse des périmètres ayant un rayon <= " "petite longueur de périmètre (généralement des trous). S’il est exprimé en " -"pourcentage (par exemple : 80%), il sera calculé sur la vitesse du mur " -"extérieur ci-dessus. Mettre à zéro pour automatique." +"pourcentage (par exemple : 80%), il sera calculé sur la vitesse de la paroi " +"extérieure ci-dessus. Mettre à zéro pour automatique." msgid "Small perimeters threshold" msgstr "Seuil des petits périmètres" @@ -8827,22 +8838,22 @@ msgstr "" "Séquence d'impression des parois internes (intérieures) et externes " "(extérieures). \n" "\n" -"Utilisez Inner/Outer pour obtenir les meilleurs surplombs. En effet, les " -"parois en surplomb peuvent adhérer à un périmètre voisin lors de " +"Utilisez Intérieur/Extérieur pour obtenir les meilleurs surplombs. En effet, " +"les parois en surplomb peuvent adhérer à un périmètre voisin lors de " "l'impression. Toutefois, cette option entraîne une légère diminution de la " "qualité de la surface, car le périmètre externe est déformé par l'écrasement " "du périmètre interne.\n" "\n" -"Utilisez l’option Inner/Outer/Inner pour obtenir la meilleure finition de " -"surface externe et la meilleure précision dimensionnelle, car la paroi " -"externe est imprimée sans être dérangée par un périmètre interne. Cependant, " -"les performances de la paroi en surplomb seront réduites car il n’y a pas de " -"périmètre interne contre lequel imprimer la paroi externe. Cette option " -"nécessite un minimum de trois parois pour être efficace, car elle imprime " -"d’abord les parois internes à partir du troisième périmètre, puis le " -"périmètre externe et, enfin, le premier périmètre interne. Cette option est " -"recommandée par rapport à l’option Extérieur/intérieur dans la plupart des " -"cas. \n" +"Utilisez l’option Intérieur/Extérieur/Intérieur pour obtenir la meilleure " +"finition de surface externe et la meilleure précision dimensionnelle, car la " +"paroi externe est imprimée sans être dérangée par un périmètre interne. " +"Cependant, les performances de la paroi en surplomb seront réduites car il " +"n’y a pas de périmètre interne contre lequel imprimer la paroi externe. " +"Cette option nécessite un minimum de trois parois pour être efficace, car " +"elle imprime d’abord les parois internes à partir du troisième périmètre, " +"puis le périmètre externe et, enfin, le premier périmètre interne. Cette " +"option est recommandée par rapport à l’option Extérieur/intérieur dans la " +"plupart des cas. \n" "\n" "Utilisez l’option Extérieur/intérieur pour bénéficier de la même qualité de " "paroi externe et de la même précision dimensionnelle que l’option Intérieur/" @@ -8853,13 +8864,13 @@ msgstr "" " " msgid "Inner/Outer" -msgstr "Intérieur/extérieur" +msgstr "Intérieur/Extérieur" msgid "Outer/Inner" msgstr "Extérieur/intérieur" msgid "Inner/Outer/Inner" -msgstr "Intérieur/extérieur/intérieur" +msgstr "Intérieur/Extérieur/Intérieur" msgid "Print infill first" msgstr "Imprimer d’abord le remplissage" @@ -8886,7 +8897,7 @@ msgstr "" "travers les surfaces externes de la pièce." msgid "Height to rod" -msgstr "Hauteur à la tige" +msgstr "Hauteur jusqu’à la tige" msgid "" "Distance of the nozzle tip to the lower rod. Used for collision avoidance in " @@ -8933,7 +8944,7 @@ msgid "" msgstr "" "Le matériau peut avoir un changement volumétrique après avoir basculé entre " "l'état fondu et l'état cristallin. Ce paramètre modifie proportionnellement " -"tout le flux d'extrusion de ce filament dans le gcode. La plage de valeurs " +"tout le flux d'extrusion de ce filament dans le G-code. La plage de valeurs " "recommandée est comprise entre 0,95 et 1,05. Vous pouvez peut-être ajuster " "cette valeur pour obtenir une belle surface plane en cas de léger " "débordement ou sous-dépassement" @@ -9398,8 +9409,8 @@ msgstr "" msgid "Acceleration of outer wall. Using a lower value can improve quality" msgstr "" -"Accélération du mur extérieur : l'utilisation d'une valeur inférieure peut " -"améliorer la qualité." +"Accélération de la paroi extérieur : l'utilisation d'une valeur inférieure " +"peut améliorer la qualité." msgid "" "Acceleration of bridges. If the value is expressed as a percentage (e.g. " @@ -9523,14 +9534,14 @@ msgstr "" "l'utilisation de ce filament" msgid "Full fan speed at layer" -msgstr "Ventilateur à pleine vitesse pour la couche" +msgstr "Ventilateur à pleine vitesse à la couche" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La vitesse du ventilateur augmentera de manière linéaire à partir de zéro à " "la couche \"close_fan_the_first_x_layers\" jusqu’au maximum à la couche " @@ -9558,8 +9569,8 @@ msgid "" "Randomly jitter while printing the wall, so that the surface has a rough " "look. This setting controls the fuzzy position" msgstr "" -"Gigue aléatoire lors de l'impression du mur, de sorte que la surface ait un " -"aspect rugueux. Ce réglage contrôle la position irrégulière" +"Gigue aléatoire lors de l'impression de la paroi, de sorte que la surface " +"ait un aspect rugueux. Ce réglage contrôle la position irrégulière" msgid "None" msgstr "Aucun" @@ -9581,7 +9592,7 @@ msgid "" "width" msgstr "" "La largeur à l'intérieur de laquelle jitter. Il est déconseillé d'être en " -"dessous de la largeur de la ligne du mur extérieur" +"dessous de la largeur de la ligne de la paroi extérieure" msgid "Fuzzy skin point distance" msgstr "Distance de point de la surface irrégulière" @@ -9634,7 +9645,7 @@ msgstr "" "ligne G-Code" msgid "Scan first layer" -msgstr "Numériser la première couche" +msgstr "Analyser la première couche" msgid "" "Enable this to enable the camera on printer to check the quality of first " @@ -9791,7 +9802,7 @@ msgid "G-code flavor" msgstr "Version du G-code" msgid "What kind of gcode the printer is compatible with" -msgstr "Avec quel type de gcode l'imprimante est-elle compatible" +msgstr "Avec quel type de G-code l'imprimante est-elle compatible" msgid "Klipper" msgstr "Klipper" @@ -9838,7 +9849,7 @@ msgid "" "reduce time. Wall is still printed with original layer height." msgstr "" "Combinez automatiquement le remplissage de plusieurs couches pour imprimer " -"ensemble afin de réduire le temps. Le mur est toujours imprimé avec la " +"ensemble afin de réduire le temps. La paroi est toujours imprimée avec la " "hauteur de couche d'origine." msgid "Filament to print internal sparse infill." @@ -9852,13 +9863,13 @@ msgstr "" "%, elle sera calculée sur le diamètre de la buse." msgid "Infill/Wall overlap" -msgstr "Chevauchement de remplissage/mur" +msgstr "Chevauchement de remplissage/paroi" msgid "" "Infill area is enlarged slightly to overlap with wall for better bonding. " "The percentage value is relative to line width of sparse infill" msgstr "" -"La zone de remplissage est légèrement agrandie pour chevaucher le mur pour " +"La zone de remplissage est légèrement agrandie pour chevaucher la paroi pour " "une meilleure adhérence. La valeur en pourcentage est relative à la largeur " "de ligne du remplissage." @@ -9899,12 +9910,12 @@ msgid "" "Ironing is using small flow to print on same height of surface again to make " "flat surface more smooth. This setting controls which layer being ironed" msgstr "" -"Le repassage utilise un petit débit pour imprimer à nouveau sur la même " +"Le lissage utilise un petit débit pour imprimer à nouveau sur la même " "hauteur de surface pour rendre la surface plane plus lisse. Ce paramètre " "contrôle quelle couche est repassée" msgid "No ironing" -msgstr "Pas de repassage" +msgstr "Pas de lissage" msgid "Top surfaces" msgstr "Surfaces supérieures" @@ -9916,33 +9927,33 @@ msgid "All solid layer" msgstr "Toutes les couches solides" msgid "Ironing Pattern" -msgstr "Modèle de repassage" +msgstr "Modèle de lissage" msgid "The pattern that will be used when ironing" msgstr "Motif qui sera utilisé lors du lissage" msgid "Ironing flow" -msgstr "Flux de repassage" +msgstr "Flux de lissage" msgid "" "The amount of material to extrude during ironing. Relative to flow of normal " "layer height. Too high value results in overextrusion on the surface" msgstr "" -"La quantité de matière à extruder lors du repassage. Relatif au débit de la " +"La quantité de matière à extruder lors du lissage. Relatif au débit de la " "hauteur de couche normale. Une valeur trop élevée entraîne une surextrusion " "en surface" msgid "Ironing line spacing" -msgstr "Espacement des lignes de repassage" +msgstr "Espacement des lignes de lissage" msgid "The distance between the lines of ironing" -msgstr "La distance entre les lignes de repassage" +msgstr "La distance entre les lignes de lissage" msgid "Ironing speed" -msgstr "Vitesse de repassage" +msgstr "Vitesse de lissage" msgid "Print speed of ironing lines" -msgstr "Vitesse d'impression des lignes de repassage" +msgstr "Vitesse d'impression des lignes de lissage" msgid "Ironing angle" msgstr "Angle de lissage" @@ -9956,7 +9967,8 @@ msgstr "" msgid "This gcode part is inserted at every layer change after lift z" msgstr "" -"Cette partie gcode est insérée à chaque changement de couche après lift z" +"Cette partie G-code est insérée à chaque changement de couche après le " +"levage du Z" msgid "Supports silent mode" msgstr "Prend en charge le mode silencieux" @@ -9969,7 +9981,7 @@ msgstr "" "utilise une accélération plus faible pour imprimer" msgid "Emit limits to G-code" -msgstr "" +msgstr "Emission des limites vers le G-code" msgid "Machine limits" msgstr "Limites de la machine" @@ -9978,6 +9990,9 @@ msgid "" "If enabled, the machine limits will be emitted to G-code file.\n" "This option will be ignored if the g-code flavor is set to Klipper." msgstr "" +"Si cette option est activée, les limites de la machine seront émises dans un " +"fichier G-code.\n" +"Cette option sera ignorée si la version du G-code est définie sur Klipper." msgid "" "This G-code will be used as a code for the pause print. User can insert " @@ -10003,16 +10018,16 @@ msgid "Maximum speed E" msgstr "Vitesse maximale E" msgid "Maximum X speed" -msgstr "Vitesse maximale X" +msgstr "Vitesse en X maximale" msgid "Maximum Y speed" -msgstr "Vitesse Y maximale" +msgstr "Vitesse en Y maximale" msgid "Maximum Z speed" -msgstr "Vitesse Z maximale" +msgstr "Vitesse en Z maximale" msgid "Maximum E speed" -msgstr "Vitesse E maximale" +msgstr "Vitesse en E maximale" msgid "Maximum acceleration X" msgstr "Accélérations maximum X" @@ -10039,28 +10054,28 @@ msgid "Maximum acceleration of the E axis" msgstr "Accélération maximum de l'axe E" msgid "Maximum jerk X" -msgstr "Mouvement brusque maximum X" +msgstr "Jerk maximum en X" msgid "Maximum jerk Y" -msgstr "Mouvement brusque maximum Y" +msgstr "Jerk maximum en Y" msgid "Maximum jerk Z" -msgstr "Mouvement brusque maximum Z" +msgstr "Jerk maximum en Z" msgid "Maximum jerk E" -msgstr "Mouvement brusque maximum E" +msgstr "Jerk maximum en E" msgid "Maximum jerk of the X axis" -msgstr "Mouvement brusque maximum de l'axe X" +msgstr "Jerk maximum de l'axe X" msgid "Maximum jerk of the Y axis" -msgstr "Mouvement brusque maximum de l'axe Y" +msgstr "Jerk maximum de l'axe Y" msgid "Maximum jerk of the Z axis" -msgstr "Mouvement brusque maximum de l'axe Z" +msgstr "Jerk maximum de l'axe Z" msgid "Maximum jerk of the E axis" -msgstr "Mouvement brusque maximum de l'axe E" +msgstr "Jerk maximum de l'axe E" msgid "Minimum speed for extruding" msgstr "Vitesse minimale d'extrusion" @@ -10191,7 +10206,7 @@ msgid "" "Allowed values: 1-5" msgstr "" "Une valeur inférieure entraîne des transitions du taux d’extrusion plus " -"douces. Cependant, cela entraîne un fichier gcode beaucoup plus volumineux " +"douces. Cependant, cela entraîne un fichier G-code beaucoup plus volumineux " "et davantage d’instructions à traiter par l’imprimante.\n" "\n" "La valeur 3 par défaut fonctionne bien dans la plupart des cas. Si votre " @@ -10244,7 +10259,7 @@ msgid "Nozzle diameter" msgstr "Diamètre de la buse" msgid "Diameter of nozzle" -msgstr "Diamètre de buse" +msgstr "Diamètre de la buse" msgid "Configuration notes" msgstr "Notes de la configuration" @@ -10344,9 +10359,9 @@ msgid "" "oozing can't been seen. This can reduce times of retraction for complex " "model and save printing time, but make slicing and G-code generating slower" msgstr "" -"Ne pas effectuer de rétractation lors de déplacement en zone de remplissage " +"Ne pas effectuer de rétraction lors de déplacement en zone de remplissage " "car même si l’extrudeur suinte, les coulures ne seraient pas visibles. Cela " -"peut réduire les rétractations pour les modèles complexes et économiser du " +"peut réduire les rétractions pour les modèles complexes et économiser du " "temps d’impression, mais ralentit le tranchage et la génération du G-code." msgid "Enable" @@ -10394,7 +10409,7 @@ msgid "mm²" msgstr "mm²" msgid "Detect overhang wall" -msgstr "Détecter un mur en surplomb" +msgstr "Détecter une paroi en surplomb" #, c-format, boost-format msgid "" @@ -10416,10 +10431,10 @@ msgid "Speed of inner wall" msgstr "Vitesse de la paroi intérieure" msgid "Number of walls of every layer" -msgstr "Nombre de murs de chaque couche" +msgstr "Nombre de parois de chaque couche" msgid "Alternate extra wall" -msgstr "" +msgstr "Paroi supplémentaire alternée" msgid "" "This setting adds an extra wall to every other layer. This way the infill " @@ -10431,6 +10446,16 @@ msgid "" "Using lightning infill together with this option is not recommended as there " "is limited infill to anchor the extra perimeters to." msgstr "" +"Ce paramètre ajoute une paroi supplémentaire à chaque couche. De cette " +"manière, le remplissage est coincé verticalement entre les parois, ce qui " +"permet d’obtenir des impressions plus solides. \n" +"\n" +"Lorsque cette option est activée, l’option « assurer l’épaisseur verticale " +"de la coque » doit être désactivée. \n" +"\n" +"Il n’est pas recommandé d’utiliser le remplissage par éclairs avec cette " +"option, car il y a peu de remplissage pour ancrer les périmètres " +"supplémentaires." msgid "" "If you want to process the output G-code through custom scripts, just list " @@ -10439,7 +10464,7 @@ msgid "" "argument, and they can access the Slic3r config settings by reading " "environment variables." msgstr "" -"Si vous souhaitez traiter le code G de sortie via des scripts personnalisés, " +"Si vous souhaitez traiter le G-code de sortie via des scripts personnalisés, " "indiquez simplement leurs chemins absolus ici. Séparez plusieurs scripts par " "un point-virgule. Les scripts recevront le chemin absolu vers le fichier G-" "code comme premier argument, et ils peuvent accéder aux paramètres de " @@ -10452,13 +10477,13 @@ msgid "You can put your notes regarding the printer here." msgstr "Vous pouvez mettre vos notes concernant l’imprimante ici." msgid "Raft contact Z distance" -msgstr "Distance Z de contact du raft" +msgstr "Distance Z de contact du radeau" msgid "Z gap between object and raft. Ignored for soluble interface" msgstr "Écart en Z entre l'objet et le radeau. Ignoré pour l'interface soluble" msgid "Raft expansion" -msgstr "Agrandissement du raft" +msgstr "Agrandissement du radeau" msgid "Expand all raft layers in XY plane" msgstr "Développer toutes les couches de radeau dans le plan XY" @@ -10467,7 +10492,7 @@ msgid "Initial layer density" msgstr "Densité de couche initiale" msgid "Density of the first raft or support layer" -msgstr "Densité du premier radier ou couche de support" +msgstr "Densité du premier radeau ou couche de support" msgid "Initial layer expansion" msgstr "Extension de la couche initiale" @@ -10475,7 +10500,7 @@ msgstr "Extension de la couche initiale" msgid "Expand the first raft or support layer to improve bed plate adhesion" msgstr "" "Développez le premier radeau ou couche de support pour améliorer l'adhérence " -"de la plaque d'assise" +"du plateau" msgid "Raft layers" msgstr "Couches du radeau" @@ -10492,8 +10517,8 @@ msgid "" "much points and gcode lines in gcode file. Smaller value means higher " "resolution and more time to slice" msgstr "" -"Le chemin du code G est généré après avoir simplifié le contour du modèle " -"pour éviter trop de points et de lignes gcode dans le fichier gcode. Une " +"Le chemin du G-code est généré après avoir simplifié le contour du modèle " +"pour éviter trop de points et de lignes G-code dans le fichier G-code. Une " "valeur plus petite signifie une résolution plus élevée et plus de temps pour " "trancher" @@ -10508,7 +10533,7 @@ msgstr "" "à ce seuil" msgid "Retract amount before wipe" -msgstr "Quantité de rétractation avant essuyage" +msgstr "Quantité de rétraction avant essuyage" msgid "" "The length of fast retraction before wipe, relative to retraction length" @@ -10520,13 +10545,13 @@ msgid "Retract when change layer" msgstr "Rétracter lors de changement de couche" msgid "Force a retraction when changes layer" -msgstr "Cela force une rétractation sur les changements de couche." +msgstr "Cela force une rétraction sur les changements de couche." msgid "Length" msgstr "Longueur" msgid "Retraction Length" -msgstr "Longueur de Rétractation" +msgstr "Longueur de Rétraction" msgid "" "Some amount of material in extruder is pulled back to avoid ooze during long " @@ -10537,7 +10562,7 @@ msgstr "" "rétraction" msgid "Z hop when retract" -msgstr "Z saut lors de la rétraction" +msgstr "Décalage du Z lors de la rétraction" msgid "" "Whenever the retraction is done, the nozzle is lifted a little to create " @@ -10640,10 +10665,10 @@ msgstr "" "poussera cette quantité supplémentaire de filament." msgid "Retraction Speed" -msgstr "Vitesse de Rétractation" +msgstr "Vitesse de Rétraction" msgid "Speed of retractions" -msgstr "Vitesse de rétractation" +msgstr "Vitesse de rétraction" msgid "Deretraction Speed" msgstr "Vitesse de réinsertion" @@ -10676,7 +10701,8 @@ msgid "Seam position" msgstr "Position de la couture" msgid "The start position to print each part of outer wall" -msgstr "La position de départ pour imprimer chaque partie du mur extérieur" +msgstr "" +"La position de départ pour imprimer chaque partie de la paroi extérieure" msgid "Nearest" msgstr "La plus proche" @@ -10753,7 +10779,7 @@ msgstr "" "déplacement ci-dessus. La valeur par défaut de ce paramètre est 80%" msgid "Skirt distance" -msgstr "Distance jupe" +msgstr "Distance de la jupe" msgid "Distance from skirt to brim or object" msgstr "Distance de la jupe au bord ou à l'objet" @@ -10765,7 +10791,7 @@ msgid "How many layers of skirt. Usually only one layer" msgstr "Nombre de couches de jupe, généralement une seule." msgid "Skirt loops" -msgstr "Boucles de jupe" +msgstr "Boucles de la jupe" msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "Nombre de boucles pour la jupe. Zéro signifie désactiver la jupe" @@ -10782,7 +10808,7 @@ msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " "layer time is shorter than this value, to get better cooling for these layers" msgstr "" -"La vitesse d'impression dans le gcode exporté sera ralentie, lorsque le " +"La vitesse d'impression dans le G-code exporté sera ralentie, lorsque le " "temps de couche estimé est plus court que cette valeur, pour obtenir un " "meilleur refroidissement pour ces couches" @@ -10868,13 +10894,13 @@ msgid "Temperature variation" msgstr "Variation de température" msgid "Start G-code" -msgstr "G-code de début" +msgstr "G-code de démarrage" msgid "Start G-code when start the whole printing" -msgstr "Démarrer le code G lors du démarrage de l'ensemble de l'impression" +msgstr "G-code de démarrage lors du démarrage de l'ensemble de l'impression" msgid "Start G-code when start the printing of this filament" -msgstr "Démarrer le code G au démarrage de l'impression de ce filament" +msgstr "G-code de démarrage au démarrage de l'impression de ce filament" msgid "Single Extruder Multi Material" msgstr "Multi-matériaux pour extrudeur unique" @@ -10962,7 +10988,7 @@ msgid "Even-odd" msgstr "Pair-impair" msgid "Close holes" -msgstr "Fermez les trous" +msgstr "Combler les trous" msgid "Z offset" msgstr "Décalage Z" @@ -11306,7 +11332,7 @@ msgstr "" "supports arborescents sera automatiquement calculée" msgid "Tree support brim width" -msgstr "Largeur de bordure du support de l'arbre" +msgstr "Largeur de bordure du support arborescent" msgid "Distance from tree branch to the outermost brim line" msgstr "" @@ -11343,7 +11369,7 @@ msgstr "" "stabilité des supports organiques." msgid "Branch Diameter with double walls" -msgstr "Diamètre des branches à double paroi" +msgstr "Diamètre des branches à double parois" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" msgid "" @@ -11356,7 +11382,7 @@ msgstr "" "stabilité. Définissez cette valeur sur zéro pour éviter la double paroi." msgid "Support wall loops" -msgstr "Boucles de support de paroi" +msgstr "Boucles de paroi de support" msgid "This setting specify the count of walls around support" msgstr "Ce paramètre spécifie le nombre de parois autour du support" @@ -11408,21 +11434,21 @@ msgid "Nozzle temperature for layers after the initial one" msgstr "Température de la buse pour les couches après la première" msgid "Detect thin wall" -msgstr "Détecter les parois minces" +msgstr "Détecter les parois fines" msgid "" "Detect thin wall which can't contain two line width. And use single line to " "print. Maybe printed not very well, because it's not closed loop" msgstr "" -"Détecte les parois minces qui ne peuvent pas contenir deux largeurs de " -"ligne. Et utilisez une seule ligne pour imprimer. Peut-être pas très bien " +"Détecte les parois fines qui ne peuvent pas contenir deux largeurs de ligne. " +"Et utilisez une seule ligne pour imprimer. Peut ne pas être très bien " "imprimé, car ce n'est pas en boucle fermée" msgid "" "This gcode is inserted when change filament, including T command to trigger " "tool change" msgstr "" -"Ce gcode est inséré lors du changement de filament, y compris la commande T " +"Ce G-code est inséré lors du changement de filament, y compris la commande T " "pour déclencher le changement d'outil" msgid "This gcode is inserted when the extrusion role is changed" @@ -11452,7 +11478,7 @@ msgstr "" "coque supérieure seront augmentées" msgid "Top solid layers" -msgstr "Couches supérieures solides" +msgstr "Couches solides supérieures" msgid "Top shell thickness" msgstr "Épaisseur de la coque supérieure" @@ -11500,7 +11526,7 @@ msgid "" "any excess retraction before the wipe, else it will be performed after." msgstr "" "Décrire la durée pendant laquelle la buse se déplacera le long de la " -"dernière trajectoire lors de la rétractation. \n" +"dernière trajectoire lors de la rétraction. \n" "\n" "En fonction de la durée de l’opération de nettoyage, de la vitesse et de la " "longueur des réglages de rétraction de l’extrudeuse/filament, un mouvement " @@ -11597,9 +11623,9 @@ msgid "" msgstr "" "La purge après le changement de filament sera effectuée à l'intérieur des " "matériaux de remplissage des objets. Cela peut réduire la quantité de " -"déchets et le temps d'impression. Si les murs sont imprimés avec un filament " -"transparent, le remplissage de couleurs mélangées sera visible. Cela ne " -"prendra effet que si la tour de nettoyage est activée." +"déchets et le temps d'impression. Si les parois sont imprimées avec un " +"filament transparent, le remplissage de couleurs mélangées sera visible. " +"Cela ne prendra effet que si la tour de nettoyage est activée." msgid "" "Purging after filament change will be done inside objects' support. This may " @@ -11690,7 +11716,7 @@ msgid "Polyhole twist" msgstr "Torsion des trous polygones" msgid "Rotate the polyhole every layer." -msgstr "Faites pivoter le polyhole à chaque couche." +msgstr "Faites pivoter le trou polygone à chaque couche." msgid "G-code thumbnails" msgstr "Vignette G-code" @@ -11732,9 +11758,9 @@ msgid "" "very thin areas is used gap-fill. Arachne engine produces walls with " "variable extrusion width" msgstr "" -"Le générateur de murs classique produit des murs avec une largeur " +"Le générateur de parois classique produit des parois avec une largeur " "d'extrusion constante, les zones très fines seront remplies. Le générateur " -"Arachne produit des murs avec une largeur d'extrusion variable." +"Arachne produit des parois avec une largeur d'extrusion variable." msgid "Classic" msgstr "Classique" @@ -11743,20 +11769,20 @@ msgid "Arachne" msgstr "Arachné" msgid "Wall transition length" -msgstr "Longueur de la transition murale" +msgstr "Longueur de la paroi de transition" msgid "" "When transitioning between different numbers of walls as the part becomes " "thinner, a certain amount of space is allotted to split or join the wall " "segments. It's expressed as a percentage over nozzle diameter" msgstr "" -"Lorsque vous passez d'un nombre différent de murs à un autre lorsque la " +"Lorsque vous passez d'un nombre différent de parois à un autre lorsque la " "pièce s'amincit, un certain espace est alloué pour séparer ou joindre les " -"segments du mur. Il est exprimé en pourcentage par rapport au diamètre de la " +"segments de la paroi. Exprimé en pourcentage par rapport au diamètre de la " "buse." msgid "Wall transitioning filter margin" -msgstr "Marge du filtre de transition de mur" +msgstr "Marge du filtre de transition de paroi" msgid "" "Prevent transitioning back and forth between one extra wall and one less. " @@ -11767,9 +11793,9 @@ msgid "" "variation can lead to under- or overextrusion problems. It's expressed as a " "percentage over nozzle diameter" msgstr "" -"Empêchez les allers-retours entre un mur supplémentaire et un mur de moins. " -"Cette marge étend la plage de largeurs d'extrusion qui suit jusqu'à [Largeur " -"de paroi minimale - marge, 2* Largeur de paroi minimale + marge]. " +"Empêchez les allers-retours entre une paroi supplémentaire et une paroi de " +"moins. Cette marge étend la plage de largeurs d'extrusion qui suit jusqu'à " +"[Largeur de paroi minimale - marge, 2* Largeur de paroi minimale + marge]. " "L'augmentation de cette marge réduit le nombre de transitions, ce qui réduit " "le nombre de démarrages/arrêts d'extrusion et le temps de trajet. Cependant, " "une variation importante de la largeur d'extrusion peut entraîner des " @@ -11777,7 +11803,7 @@ msgstr "" "pourcentage par rapport au diamètre de la buse" msgid "Wall transitioning threshold angle" -msgstr "Angle du seuil de transition du mur" +msgstr "Angle du seuil de transition de la paroi" msgid "" "When to create transitions between even and odd numbers of walls. A wedge " @@ -11786,23 +11812,23 @@ msgid "" "this setting reduces the number and length of these center walls, but may " "leave gaps or overextrude" msgstr "" -"Quand créer des transitions entre les nombres pairs et impairs de murs. Une " -"forme cunéiforme dont l'angle est supérieur à ce paramètre n'aura pas de " -"transitions et aucun mur ne sera imprimé au centre pour remplir l'espace " +"Quand créer des transitions entre les nombres pairs et impairs de parois. " +"Une forme cunéiforme dont l'angle est supérieur à ce paramètre n'aura pas de " +"transitions et aucune paroi ne sera imprimé au centre pour remplir l'espace " "restant. En réduisant ce paramètre, vous réduisez le nombre et la longueur " -"de ces murs centraux, mais vous risquez de laisser des vides ou de " -"surextruder les murs." +"de ces parois centrales, mais vous risquez de laisser des vides ou de " +"surextruder les parois." msgid "Wall distribution count" -msgstr "Nombre de distributions murales" +msgstr "Nombre de parois distribuées" msgid "" "The number of walls, counted from the center, over which the variation needs " "to be spread. Lower values mean that the outer walls don't change in width" msgstr "" -"Nombre de murs, comptés à partir du centre, sur lesquels la variation doit " -"être répartie. Des valeurs plus faibles signifient que la largeur des parois " -"extérieures ne change pas" +"Nombre de parois, comptées à partir du centre, sur lesquelles la variation " +"doit être répartie. Des valeurs plus faibles signifient que la largeur des " +"parois extérieures ne change pas" msgid "Minimum feature size" msgstr "Taille minimale de l'élément" @@ -11816,8 +11842,8 @@ msgstr "" "Épaisseur minimale des éléments fins. Les caractéristiques du modèle qui " "sont plus fines que cette valeur ne seront pas imprimées, tandis que les " "entités plus épaisses que la taille minimale seront élargies jusqu'à la " -"largeur de paroi minimale. Il est exprimé en pourcentage par rapport au " -"diamètre de la buse" +"largeur de paroi minimale. Exprimée en pourcentage par rapport au diamètre " +"de la buse" msgid "First layer minimum wall width" msgstr "Largeur minimale de la paroi de la première couche" @@ -11832,7 +11858,7 @@ msgstr "" "améliorer l’adhérence." msgid "Minimum wall width" -msgstr "Largeur minimale du mur" +msgstr "Largeur minimale de la paroi" msgid "" "Width of the wall that will replace thin features (according to the Minimum " @@ -11840,10 +11866,11 @@ msgid "" "thickness of the feature, the wall will become as thick as the feature " "itself. It's expressed as a percentage over nozzle diameter" msgstr "" -"Largeur du mur qui remplacera les éléments fins (selon la taille minimale " -"des éléments) du modèle. Si la largeur minimale du mur est inférieure à " -"l'épaisseur de l'élément, le mur deviendra aussi épais que l'élément lui-" -"même. Il est exprimé en pourcentage par rapport au diamètre de la buse" +"Largeur de la paroi qui remplacera les éléments fins (selon la taille " +"minimale des éléments) du modèle. Si la largeur minimale de la paroi est " +"inférieure à l'épaisseur de l'élément, la paroi deviendra aussi épaisse que " +"l'élément lui-même. Elle est exprimée en pourcentage par rapport au diamètre " +"de la buse" msgid "Detect narrow internal solid infill" msgstr "Détecter un remplissage solide interne étroit" @@ -11930,7 +11957,7 @@ msgid "Error in zip archive" msgstr "Erreur dans l'archive zip" msgid "Generating walls" -msgstr "Génération de murs" +msgstr "Génération de parois" msgid "Generating infill regions" msgstr "Génération de régions de remplissage" @@ -12251,9 +12278,9 @@ msgstr "" "Wiki.\n" "\n" "Habituellement, la calibration est inutile. Lorsque vous démarrez une " -"impression d'une seule couleur/matériau, avec l'option \"Calibration du débit" -"\" cochée dans le menu de démarrage de l'impression, l'imprimante suivra " -"l'ancienne méthode de calibration du filament avant l'impression.\n" +"impression d'une seule couleur/matériau, avec l'option \"Calibration du " +"débit\" cochée dans le menu de démarrage de l'impression, l'imprimante " +"suivra l'ancienne méthode de calibration du filament avant l'impression.\n" "Lorsque vous démarrez une impression multi-couleurs/matériaux, l'imprimante " "utilise le paramètre de compensation par défaut pour le filament lors de " "chaque changement de filament, ce qui donne un bon résultat dans la plupart " @@ -13015,7 +13042,7 @@ msgstr "" "des espaces. Veuillez les saisir à nouveau." msgid "The vendor can not be a number. Please re-enter." -msgstr "" +msgstr "Le vendeur ne peut pas être un numéro. Veuillez le saisir à nouveau." msgid "" "You have not selected a printer or preset yet. Please select at least one." @@ -13034,8 +13061,8 @@ msgstr "" "Voulez-vous le réécrire ?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more prinetrs, Please go to printer selection" msgstr "" "Nous renommerions les préréglages en « Fournisseur Type Série @imprimante " @@ -13223,7 +13250,8 @@ msgstr "" "personnalisée sont des espaces. Veuillez les saisir à nouveau." msgid "Please check bed printable shape and origin input." -msgstr "Veuillez vérifier la forme imprimable du lit et l’entrée de l’origine." +msgstr "" +"Veuillez vérifier la forme imprimable du plateau et l’entrée de l’origine." msgid "" "You have not yet selected the printer to replace the nozzle, please choose." @@ -14009,7 +14037,7 @@ msgstr "" "Éviter la déformation\n" "Saviez-vous que lors de l’impression de matériaux susceptibles de se " "déformer, tels que l’ABS, une augmentation appropriée de la température du " -"lit chauffant peut réduire la probabilité de déformation." +"plateau chauffant peut réduire la probabilité de déformation." #~ msgid "Recalculate" #~ msgstr "Recalculer" From 7ab2fabe6a8b314facb05a0cea372f5b304dc63a Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Wed, 27 Dec 2023 11:21:33 +0000 Subject: [PATCH 46/66] ENH: Port of "wipe inside before extruding an external perimeter" feature from super slicer (#3287) * Wipe Inside at Start of perimeter Co-Authored-By: Merill <6536403+supermerill@users.noreply.github.com> * Cleaned up code and linked it to the wipe on loop parameter * Trigger build * Introduced wipe before external loop parameter. * Removed redundant functions --------- Co-authored-by: Merill <6536403+supermerill@users.noreply.github.com> Co-authored-by: SoftFever --- src/libslic3r/GCode.cpp | 52 +++++++++++++++++++++++++++++++++++ src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 6 ++++ src/libslic3r/PrintConfig.hpp | 1 + src/slic3r/GUI/Tab.cpp | 1 + 5 files changed, 61 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 3b5034bdad..cfadc49041 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -4437,6 +4437,58 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou // extrude along the path std::string gcode; + + // Port of "wipe inside before extruding an external perimeter" feature from super slicer + if (m_config.wipe_before_external_loop.value && !paths.empty() && paths.front().size() > 1 && paths.back().size() > 1 && paths.front().role() == erExternalPerimeter) { + const bool is_full_loop_ccw = loop.polygon().is_counter_clockwise(); + bool is_hole_loop = (loop.loop_role() & ExtrusionLoopRole::elrHole) != 0; // loop.make_counter_clockwise(); + const double nozzle_diam = EXTRUDER_CONFIG(nozzle_diameter); + + // note: previous & next are inverted to extrude "in the opposite direction, and we are "rewinding" + Point previous_point = paths.front().polyline.points[1]; + Point current_point = paths.front().polyline.points.front(); + Point next_point = paths.back().polyline.points.back(); + + // can happen if seam_gap is null + if (next_point == current_point) { + next_point = paths.back().polyline.points[paths.back().polyline.points.size() - 2]; + } + + Point a = next_point; // second point + Point b = previous_point; // second to last point + if ((is_hole_loop ? !is_full_loop_ccw : is_full_loop_ccw)) { + // swap points + std::swap(a, b); + } + + double angle = current_point.ccw_angle(a, b) / 3; + + // turn outwards if contour, turn inwwards if hole + if (is_hole_loop ? !is_full_loop_ccw : is_full_loop_ccw) angle *= -1; + + Vec2d current_pos = current_point.cast(); + Vec2d next_pos = next_point.cast(); + Vec2d vec_dist = next_pos - current_pos; + double vec_norm = vec_dist.norm(); + // Offset distance is the minimum between half the nozzle diameter or half the line width for the upcomming perimeter + // This is to mimimize potential instances where the de-retraction is performed on top of a neighbouring + // thin perimeter due to arachne reducing line width. + coordf_t dist = std::min(scaled(nozzle_diam) * 0.5, scaled(paths.front().width) * 0.5); + + // FIXME Hiding the seams will not work nicely for very densely discretized contours! + Point pt = (current_pos + vec_dist * (2 * dist / vec_norm)).cast(); + pt.rotate(angle, current_point); + pt = (current_pos + vec_dist * (2 * dist / vec_norm)).cast(); + pt.rotate(angle, current_point); + + // use extrude instead of travel_to_xy to trigger the unretract + ExtrusionPath fake_path_wipe(Polyline{pt, current_point}, paths.front()); + fake_path_wipe.mm3_per_mm = 0; + gcode += extrude_path(fake_path_wipe, "move inwards before retraction/seam", speed); + } + + + bool is_small_peri = false; for (ExtrusionPaths::iterator path = paths.begin(); path != paths.end(); ++path) { // description += ExtrusionLoop::role_to_string(loop.loop_role()); diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 89f1f49812..dba5cf05e5 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -808,7 +808,7 @@ static std::vector s_Preset_print_options { "small_perimeter_speed", "small_perimeter_threshold","bridge_angle", "filter_out_gap_fill", "travel_acceleration","inner_wall_acceleration", "min_width_top_surface", "default_jerk", "outer_wall_jerk", "inner_wall_jerk", "infill_jerk", "top_surface_jerk", "initial_layer_jerk","travel_jerk", "top_solid_infill_flow_ratio","bottom_solid_infill_flow_ratio","only_one_wall_first_layer", "print_flow_ratio", "seam_gap", - "role_based_wipe_speed", "wipe_speed", "accel_to_decel_enable", "accel_to_decel_factor", "wipe_on_loops", + "role_based_wipe_speed", "wipe_speed", "accel_to_decel_enable", "accel_to_decel_factor", "wipe_on_loops", "wipe_before_external_loop", "bridge_density", "precise_outer_wall", "overhang_speed_classic", "bridge_acceleration", "sparse_infill_acceleration", "internal_solid_infill_acceleration", "tree_support_adaptive_layer_height", "tree_support_auto_brim", "tree_support_brim_width", "gcode_comments", "gcode_label_objects", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index ae3df21c86..98d089e1c0 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3327,6 +3327,12 @@ def = this->add("filament_loading_speed", coFloats); def->tooltip = L("To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop."); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); + + def = this->add("wipe_before_external_loop", coBool); + def->label = L("Wipe before external loop"); + def->tooltip = L("To minimise visibility of potential overextrusion at the start of an external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print order, the deretraction is performed slightly on the inside from the start of the external perimeter. Thatway any potential over extrusion is hidden from the outside surface. \n\nThis is useful when printing with Outer/Inner or Inner/Outer/Inner wall print order as in these modes it is more likely an external perimeter is printed immediately after a deretraction move."); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBool(false)); def = this->add("wipe_speed", coFloatOrPercent); def->label = L("Wipe speed"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 56fafb8b6e..0af03128d8 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -880,6 +880,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionBool, role_based_wipe_speed)) ((ConfigOptionFloatOrPercent, wipe_speed)) ((ConfigOptionBool, wipe_on_loops)) + ((ConfigOptionBool, wipe_before_external_loop)) ((ConfigOptionEnum, wall_infill_order)) ((ConfigOptionBool, precise_outer_wall)) ((ConfigOptionBool, overhang_speed_classic)) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 8659d2db6b..bdff812112 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1924,6 +1924,7 @@ void TabPrint::build() optgroup->append_single_option_line("role_based_wipe_speed","seam"); optgroup->append_single_option_line("wipe_speed", "seam"); optgroup->append_single_option_line("wipe_on_loops","seam"); + optgroup->append_single_option_line("wipe_before_external_loop","seam"); optgroup = page->new_optgroup(L("Precision"), L"param_precision"); From bab1a79511199dfa28b901c1f12e257503f20152 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 27 Dec 2023 20:13:33 +0800 Subject: [PATCH 47/66] Fixed a regression bug that --datadir was broken fixed #3191 --- src/OrcaSlicer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 81ad60d418..9bf81790e4 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -5355,7 +5355,7 @@ bool CLI::setup(int argc, char **argv) for (const t_optiondef_map::value_type &optdef : *options) m_config.option(optdef.first, true); - //set_data_dir(m_config.opt_string("datadir")); + set_data_dir(m_config.opt_string("datadir")); //FIXME Validating at this stage most likely does not make sense, as the config is not fully initialized yet. if (!validity.empty()) { From 87830fdb9d8d25f3aec03638740f1e37773e8d14 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 27 Dec 2023 21:38:48 +0800 Subject: [PATCH 48/66] add more hints --- resources/data/hints.ini | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/resources/data/hints.ini b/resources/data/hints.ini index 79cf15785a..d2f424ec8b 100644 --- a/resources/data/hints.ini +++ b/resources/data/hints.ini @@ -85,9 +85,18 @@ documentation_link = https://github.com/SoftFever/OrcaSlicer/wiki/Auxiliary-fan text = Air filtration/Exhuast Fan\nDid you know that OrcaSlicer can support Air filtration/Exhuast Fan? documentation_link = https://github.com/SoftFever/OrcaSlicer/wiki/air-filtration +[hint:G-code window] +text = G-code window\nYou can turn on/off the G-code window by pressing the C key. + +[hint:Switch workspaces] +text = Switch workspaces\nYou can swtich between Prepare and Preview workspaces by pressing the Tab key. + [hint:How to use keyboard shortcuts] text = How to use keyboard shortcuts\nDid you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations. +[hint:Reverse on odd] +text = Reverse on odd\nDid you know that Reverse on odd feature can significantly improve the surface quality of your overhangs? + [hint:Cut Tool] text = Cut Tool\nDid you know that you can cut a model at any angle and position with the cutting tool? From b51856faff1c97be0e48ed2d5a83b69a65098556 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 28 Dec 2023 00:21:18 +0800 Subject: [PATCH 49/66] fix/update locale --- localization/i18n/OrcaSlicer.pot | 1010 +++++++++-- localization/i18n/cs/OrcaSlicer_cs.po | 1087 ++++++++++-- localization/i18n/de/OrcaSlicer_de.po | 1094 ++++++++++-- localization/i18n/en/OrcaSlicer_en.po | 1134 ++++++++++-- localization/i18n/es/OrcaSlicer_es.po | 1124 ++++++++++-- localization/i18n/fr/OrcaSlicer_fr.po | 1125 ++++++++++-- localization/i18n/hu/OrcaSlicer_hu.po | 1070 +++++++++-- localization/i18n/it/OrcaSlicer_it.po | 1096 ++++++++++-- localization/i18n/ja/OrcaSlicer_ja.po | 1068 +++++++++-- localization/i18n/ko/OrcaSlicer_ko.po | 1227 ++++++++++--- localization/i18n/list.txt | 5 +- localization/i18n/nl/OrcaSlicer_nl.po | 1072 ++++++++++-- localization/i18n/ru/OrcaSlicer_ru.po | 1093 ++++++++++-- localization/i18n/sv/OrcaSlicer_sv.po | 1068 +++++++++-- localization/i18n/tr/OrcaSlicer_tr.po | 1120 ++++++++++-- localization/i18n/uk/OrcaSlicer_uk.po | 1086 ++++++++++-- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 1754 ++++++++++++++----- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 1070 +++++++++-- src/libslic3r/PrintConfig.cpp | 10 +- src/slic3r/GUI/CreatePresetsDialog.cpp | 6 +- src/slic3r/GUI/MediaPlayCtrl.cpp | 8 +- src/slic3r/GUI/Plater.cpp | 3 - src/slic3r/GUI/Widgets/SideTools.cpp | 6 +- src/slic3r/GUI/WipeTowerDialog.cpp | 2 +- 24 files changed, 16404 insertions(+), 2934 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 713bff202c..5790129f67 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -218,6 +218,9 @@ msgstr "" msgid "Position" msgstr "" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "" @@ -257,6 +260,7 @@ msgstr "" msgid "°" msgstr "" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "" @@ -266,6 +270,113 @@ msgstr "" msgid "uniform scale" msgstr "" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "" + +msgid "Dowel" +msgstr "" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "" + +msgid "Square" +msgstr "" + +msgid "Hexagon" +msgstr "" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "" + +msgid "Type" +msgstr "" + +msgid "Style" +msgstr "" + +msgid "Shape" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "" + +msgid "Object" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "" + +msgid "Drag" +msgstr "" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "" @@ -278,9 +389,6 @@ msgstr "" msgid "Remove connector" msgstr "" -msgid "Drag" -msgstr "" - msgid "Move connector" msgstr "" @@ -296,22 +404,50 @@ msgstr "" msgid "Cut" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -msgid "Repairing model object" +msgid "Remove connectors" msgstr "" -msgid "Connector" +msgid "Bulge" msgstr "" -msgid "Movement:" +msgid "Bulge proportion related to radius" msgstr "" -msgid "Movement" +msgid "Space" msgstr "" -msgid "Height" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" msgstr "" msgid "Edit connectors" @@ -320,6 +456,12 @@ msgstr "" msgid "Add connectors" msgstr "" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "" @@ -329,9 +471,6 @@ msgstr "" msgid "Keep" msgstr "" -msgid "Place on cut" -msgstr "" - msgid "Flip" msgstr "" @@ -341,84 +480,55 @@ msgstr "" msgid "Cut to parts" msgstr "" -msgid "Auto Segment" -msgstr "" - msgid "Perform cut" msgstr "" -msgid "Reset" -msgstr "" - -msgid "Connectors" -msgstr "" - -msgid "Type" -msgstr "" - -msgid "Style" -msgstr "" - -msgid "Shape" -msgstr "" - -msgid "Depth ratio" -msgstr "" - -msgid "Remove connectors" -msgstr "" - -msgid "Prizm" -msgstr "" - -msgid "Frustum" -msgstr "" - -msgid "Square" -msgstr "" - -msgid "Hexagon" -msgstr "" - -msgid "Confirm connectors" -msgstr "" - -msgid "Cancel" -msgstr "" - msgid "Warning" msgstr "" msgid "Invalid connectors detected" msgstr "" -msgid "connector is out of cut contour" -msgstr "" +#, possible-c-format, possible-boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" +msgstr[1] "" -msgid "connectors are out of cut contour" -msgstr "" - -msgid "connector is out of object" -msgstr "" - -msgid "connectors is out of object" -msgstr "" +#, possible-c-format, possible-boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" +msgstr[1] "" msgid "Some connectors are overlapped" msgstr "" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -msgid "Plug" +msgid "Cut plane is placed out of object" msgstr "" -msgid "Dowel" +msgid "Cut plane with groove is invalid" msgstr "" -msgid "Tolerance" +msgid "Connector" +msgstr "" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" + +msgid "Repairing model object" +msgstr "" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" msgstr "" msgid "Mesh name" @@ -513,6 +623,8 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "" @@ -548,6 +660,655 @@ msgstr "" msgid "Text shape" msgstr "" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, possible-boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, possible-boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, possible-boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, possible-boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, possible-boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, possible-boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, possible-boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, possible-boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, possible-boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, possible-boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, possible-boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, possible-boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, possible-boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, possible-boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, possible-boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, possible-boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, possible-boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, possible-boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, possible-boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, possible-boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, possible-boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, possible-boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, possible-boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, possible-boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "" + +msgid "Diameter" +msgstr "" + +msgid "Length" +msgstr "" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "" @@ -715,9 +1476,6 @@ msgstr "" msgid "Sync user presets" msgstr "" -msgid "Loading" -msgstr "" - msgid "Loading user preset" msgstr "" @@ -748,9 +1506,6 @@ msgstr "" msgid "Import File" msgstr "" -msgid "Delete" -msgstr "" - msgid "Choose files" msgstr "" @@ -821,9 +1576,6 @@ msgstr "" msgid "Bed adhension" msgstr "" -msgid "Advanced" -msgstr "" - msgid "Add part" msgstr "" @@ -908,9 +1660,6 @@ msgstr "" msgid "Text" msgstr "" -msgid "SVG" -msgstr "" - msgid "Height range Modifier" msgstr "" @@ -1038,9 +1787,6 @@ msgstr "" msgid "Mirror along the Z axis" msgstr "" -msgid "Mirror" -msgstr "" - msgid "Mirror object" msgstr "" @@ -1299,12 +2045,6 @@ msgstr "" msgid "Settings for height range" msgstr "" -msgid "Object" -msgstr "" - -msgid "Part" -msgstr "" - msgid "Layer" msgstr "" @@ -1326,9 +2066,6 @@ msgstr "" msgid "Negative Part" msgstr "" -msgid "Modifier" -msgstr "" - msgid "Support Blocker" msgstr "" @@ -1402,9 +2139,6 @@ msgstr "" msgid "Auto Brim" msgstr "" -msgid "Auto" -msgstr "" - msgid "Mouse ear" msgstr "" @@ -1480,9 +2214,6 @@ msgstr "" msgid "Enter Custom G-code used on current layer:" msgstr "" -msgid "OK" -msgstr "" - msgid "Jump to Layer" msgstr "" @@ -1537,15 +2268,15 @@ msgstr "" msgid "..." msgstr "" -msgid "Failed to connect to the server" -msgstr "" - msgid "Check the status of current system services" msgstr "" msgid "code" msgstr "" +msgid "Failed to connect to the server" +msgstr "" + msgid "Failed to connect to cloud service" msgstr "" @@ -2291,9 +3022,6 @@ msgstr "" msgid "Origin" msgstr "" -msgid "Diameter" -msgstr "" - msgid "Size in X and Y of the rectangular plate." msgstr "" @@ -2790,6 +3518,9 @@ msgstr "" msgid "Percent" msgstr "" +msgid "Used filament" +msgstr "" + msgid "Layer Height (mm)" msgstr "" @@ -2808,9 +3539,6 @@ msgstr "" msgid "Volumetric flow rate (mm³/s)" msgstr "" -msgid "Used filament" -msgstr "" - msgid "Travel" msgstr "" @@ -5706,6 +6434,11 @@ msgid "" "independent support layer height" msgstr "" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6304,9 +7037,8 @@ msgid "Flushing volumes for filament change" msgstr "" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -6368,9 +7100,6 @@ msgstr "" msgid "Ctrl+Shift+G" msgstr "" -msgid "Copy to clipboard" -msgstr "" - msgid "Paste from clipboard" msgstr "" @@ -6479,9 +7208,6 @@ msgstr "" msgid "Movement step set to 1 mm" msgstr "" -msgid "Esc" -msgstr "" - msgid "keyboard 1-9: set filament for object/part" msgstr "" @@ -6566,9 +7292,6 @@ msgstr "" msgid "Delete objects, parts, modifiers " msgstr "" -msgid "Space" -msgstr "" - msgid "Select the object/part and press space to change the name" msgstr "" @@ -8417,9 +9140,6 @@ msgid "" "look. This setting controls the fuzzy position" msgstr "" -msgid "None" -msgstr "" - msgid "Contour" msgstr "" @@ -9183,9 +9903,6 @@ msgstr "" msgid "Force a retraction when changes layer" msgstr "" -msgid "Length" -msgstr "" - msgid "Retraction Length" msgstr "" @@ -9358,6 +10075,21 @@ msgid "" "inward movement is executed before the extruder leaves the loop." msgstr "" +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "" @@ -9988,9 +10720,6 @@ msgstr "" msgid "The volume of material to prime extruder on tower." msgstr "" -msgid "Width" -msgstr "" - msgid "Width of prime tower" msgstr "" @@ -10125,8 +10854,8 @@ msgstr "" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" msgid "" @@ -11242,9 +11971,6 @@ msgstr "" msgid "Create Based on Current Printer" msgstr "" -msgid "wiki" -msgstr "" - msgid "Import Preset" msgstr "" @@ -11763,10 +12489,22 @@ msgstr "" msgid "Air filtration/Exhuast Fan\nDid you know that OrcaSlicer can support Air filtration/Exhuast Fan?" msgstr "" +#: resources/data/hints.ini: [hint:G-code window] +msgid "G-code window\nYou can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "Switch workspaces\nYou can swtich between Prepare and Preview workspaces by pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "How to use keyboard shortcuts\nDid you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations." msgstr "" +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "Reverse on odd\nDid you know that Reverse on odd feature can significantly improve the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "Cut Tool\nDid you know that you can cut a model at any angle and position with the cutting tool?" msgstr "" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 73dce7cfb4..26242ec5bd 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: 2023-09-30 15:15+0200\n" "Last-Translator: René Mošner \n" "Language-Team: \n" @@ -221,6 +221,9 @@ msgstr "mm" msgid "Position" msgstr "Pozice" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "Otáčení" @@ -260,6 +263,7 @@ msgstr "Světové souřadnice" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "Rozměr" @@ -269,6 +273,113 @@ msgstr "%" msgid "uniform scale" msgstr "jednotné měřítko" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "Automaticky" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "Čep" + +msgid "Dowel" +msgstr "Kolík" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "Středový jehlan" + +msgid "Square" +msgstr "Čtverec" + +msgid "Hexagon" +msgstr "Šestiúhelník" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "Umístit řezem na podložku" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "Spojky" + +msgid "Type" +msgstr "Typ" + +msgid "Style" +msgstr "Styl" + +msgid "Shape" +msgstr "Tvar" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "Šířka" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "Dílů" + +msgid "Object" +msgstr "Objekt" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "Tolerance" + +msgid "Drag" +msgstr "Táhnutí" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "Levý klik" @@ -281,9 +392,6 @@ msgstr "Pravý klik" msgid "Remove connector" msgstr "Odstranit spojku" -msgid "Drag" -msgstr "Táhnutí" - msgid "Move connector" msgstr "Přesunout spojku" @@ -299,23 +407,51 @@ msgstr "Vybrat všechny spojky" msgid "Cut" msgstr "Řezat" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -msgid "Repairing model object" -msgstr "Oprava objektu modelu" +msgid "Remove connectors" +msgstr "Odstranit spojky" -msgid "Connector" -msgstr "Spojka" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "Přejezd:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "Přejezd" +msgid "Space" +msgstr "Mezerník" -msgid "Height" -msgstr "Výška" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "Potvrzení spojek" + +msgid "Cancel" +msgstr "Zrušit" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "Výchozí" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "Upravit spojky" @@ -323,6 +459,12 @@ msgstr "Upravit spojky" msgid "Add connectors" msgstr "Přidat spojky" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "Horní část" @@ -332,9 +474,6 @@ msgstr "Spodní část" msgid "Keep" msgstr "Ponechat" -msgid "Place on cut" -msgstr "Umístit řezem na podložku" - msgid "Flip" msgstr "Otočit" @@ -344,87 +483,58 @@ msgstr "Po řezu" msgid "Cut to parts" msgstr "Rozřezat na díly" -msgid "Auto Segment" -msgstr "Automatický segment" - msgid "Perform cut" msgstr "Provést řez" -msgid "Reset" -msgstr "Výchozí" - -msgid "Connectors" -msgstr "Spojky" - -msgid "Type" -msgstr "Typ" - -msgid "Style" -msgstr "Styl" - -msgid "Shape" -msgstr "Tvar" - -msgid "Depth ratio" -msgstr "Poměr hloubky" - -msgid "Remove connectors" -msgstr "Odstranit spojky" - -msgid "Prizm" -msgstr "Hranol" - -msgid "Frustum" -msgstr "Středový jehlan" - -msgid "Square" -msgstr "Čtverec" - -msgid "Hexagon" -msgstr "Šestiúhelník" - -msgid "Confirm connectors" -msgstr "Potvrzení spojek" - -msgid "Cancel" -msgstr "Zrušit" - msgid "Warning" msgstr "Varování" msgid "Invalid connectors detected" msgstr "Byly zjištěny neplatné spojky" -msgid "connector is out of cut contour" -msgstr "spojka je mimo obrys řezu" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -msgid "connectors are out of cut contour" -msgstr "spojky jsou mimo obrys řezu" - -msgid "connector is out of object" -msgstr "spojka je mimo objekt" - -msgid "connectors is out of object" -msgstr "spojky jsou mimo objekt" +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" msgid "Some connectors are overlapped" msgstr "Některé spojky se překrývají" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"Neplatný stav. \n" -"Není vybrána žádná část pro zachování po řezu" -msgid "Plug" -msgstr "Čep" +msgid "Cut plane is placed out of object" +msgstr "" -msgid "Dowel" -msgstr "Kolík" +msgid "Cut plane with groove is invalid" +msgstr "" -msgid "Tolerance" -msgstr "Tolerance" +msgid "Connector" +msgstr "Spojka" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" + +msgid "Repairing model object" +msgstr "Oprava objektu modelu" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Název sítě" @@ -521,6 +631,8 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "Písmo" @@ -558,6 +670,655 @@ msgstr "Otočit text" msgid "Text shape" msgstr "Tvar textu" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "Pokročilé" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "Modifikátor" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "OK" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "Načítání" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "Výška" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "Zrcadlit" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "Smazat" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Esc" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "Žádné" + +msgid "Diameter" +msgstr "Průměr" + +msgid "Length" +msgstr "Vzdálenost" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "Kopírovat do schránky" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -748,9 +1509,6 @@ msgstr "" msgid "Sync user presets" msgstr "" -msgid "Loading" -msgstr "Načítání" - msgid "Loading user preset" msgstr "Načítání uživatelské předvolby" @@ -781,9 +1539,6 @@ msgstr "Vyberte soubor s G-kódem:" msgid "Import File" msgstr "Importovat soubor" -msgid "Delete" -msgstr "Smazat" - msgid "Choose files" msgstr "Vyberte soubory" @@ -854,9 +1609,6 @@ msgstr "Možnosti čištění" msgid "Bed adhension" msgstr "Přilnavost k Podložce" -msgid "Advanced" -msgstr "Pokročilé" - msgid "Add part" msgstr "Přidat díl" @@ -941,9 +1693,6 @@ msgstr "" msgid "Text" msgstr "" -msgid "SVG" -msgstr "" - msgid "Height range Modifier" msgstr "Modifikátor výškového rozsahu" @@ -1071,9 +1820,6 @@ msgstr "Podél osy Z" msgid "Mirror along the Z axis" msgstr "Zrcadlit podél osy Z" -msgid "Mirror" -msgstr "Zrcadlit" - msgid "Mirror object" msgstr "Zrcadlit objekt" @@ -1347,12 +2093,6 @@ msgstr "Výškové rozsahy" msgid "Settings for height range" msgstr "Nastavení pro výškový rozsah" -msgid "Object" -msgstr "Objekt" - -msgid "Part" -msgstr "Dílů" - msgid "Layer" msgstr "Vrstva" @@ -1376,9 +2116,6 @@ msgstr "Typ poslední části pevného objektu nelze změnit." msgid "Negative Part" msgstr "Negativní díl" -msgid "Modifier" -msgstr "Modifikátor" - msgid "Support Blocker" msgstr "Blokátor podpěr" @@ -1455,9 +2192,6 @@ msgstr "Hustota výplně (%)" msgid "Auto Brim" msgstr "Auto Límec" -msgid "Auto" -msgstr "Automaticky" - msgid "Mouse ear" msgstr "Uši myši" @@ -1533,9 +2267,6 @@ msgstr "Vlastní G-kód" msgid "Enter Custom G-code used on current layer:" msgstr "Zadejte vlastní G-kód použitý na aktuální vrstvě:" -msgid "OK" -msgstr "OK" - msgid "Jump to Layer" msgstr "Přejít na vrstvu" @@ -1590,15 +2321,15 @@ msgstr "Žádná tiskárna" msgid "..." msgstr "..." -msgid "Failed to connect to the server" -msgstr "Nepodařilo se připojit k serveru" - msgid "Check the status of current system services" msgstr "Zkontrolujte stav aktuálních systémových služeb" msgid "code" msgstr "kód" +msgid "Failed to connect to the server" +msgstr "Nepodařilo se připojit k serveru" + msgid "Failed to connect to cloud service" msgstr "Selhalo připojení ke cloudové službě" @@ -2432,9 +3163,6 @@ msgstr "" msgid "Origin" msgstr "Počátek" -msgid "Diameter" -msgstr "Průměr" - msgid "Size in X and Y of the rectangular plate." msgstr "Rozměr obdélníkové tiskové podložky v ose X a Y." @@ -3001,6 +3729,9 @@ msgstr "Čas" msgid "Percent" msgstr "Procento" +msgid "Used filament" +msgstr "Použito filamentu" + msgid "Layer Height (mm)" msgstr "Výška vrstvy (mm)" @@ -3019,9 +3750,6 @@ msgstr "Teplota (°C)" msgid "Volumetric flow rate (mm³/s)" msgstr "Objemový průtok (mm³/s)" -msgid "Used filament" -msgstr "Použito filamentu" - msgid "Travel" msgstr "Rychloposun" @@ -6103,6 +6831,11 @@ msgstr "" "0 horní z vzdálenost, 0 rozestup rozhraní, koncentrický vzor a vypnutí " "nezávislé výšky podpůrné vrstvy" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6767,9 +7500,8 @@ msgid "Flushing volumes for filament change" msgstr "Čistící objemy pro výměnu filamentu" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -6831,9 +7563,6 @@ msgstr "⌘+Shift+G" msgid "Ctrl+Shift+G" msgstr "Ctrl+Shift+G" -msgid "Copy to clipboard" -msgstr "Kopírovat do schránky" - msgid "Paste from clipboard" msgstr "Vložit ze schránky" @@ -6945,9 +7674,6 @@ msgstr "Shift+libovolná šipka" msgid "Movement step set to 1 mm" msgstr "Krok pro posun výběru o velikosti 1 mm" -msgid "Esc" -msgstr "Esc" - msgid "keyboard 1-9: set filament for object/part" msgstr "klávesnice 1-9: nastavení filamentu pro objekt/díl" @@ -7032,9 +7758,6 @@ msgstr "Nastavit číslo extruderu pro objekty a díly" msgid "Delete objects, parts, modifiers " msgstr "Smazat objekty, díly, modifikátory " -msgid "Space" -msgstr "Mezerník" - msgid "Select the object/part and press space to change the name" msgstr "Vyberte objekt/díl a stiskněte mezerník pro změnu názvu" @@ -9189,9 +9912,6 @@ msgstr "" "Náhodné chvění při tisku na stěnu, takže povrch má hrubý vzhled. Toto " "nastavení řídí neostrou polohu" -msgid "None" -msgstr "Žádné" - msgid "Contour" msgstr "Obrys" @@ -10105,9 +10825,6 @@ msgstr "Retrakce při změně vrstvy" msgid "Force a retraction when changes layer" msgstr "Vynutit retrakci při změně vrstvy" -msgid "Length" -msgstr "Vzdálenost" - msgid "Retraction Length" msgstr "Vzdálenost retrakce" @@ -10315,6 +11032,21 @@ msgstr "" "Aby byla minimalizována viditelnost švu při extruzi s uzavřenou smyčkou, je " "proveden malý pohyb dovnitř předtím, než vytlačovací stroj opustí smyčku." +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "Rychlost čištění" @@ -11066,9 +11798,6 @@ msgstr "Základní objem" msgid "The volume of material to prime extruder on tower." msgstr "Objem materiálu k naplnění extruderu na věži." -msgid "Width" -msgstr "Šířka" - msgid "Width of prime tower" msgstr "Šířka pro čistící věž" @@ -11241,13 +11970,9 @@ msgstr "Použít relativní E vzdálenosti" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" -"Při použití volby \"label_objects\" se doporučuje relativní extruzi. Některé " -"extrudery fungují lépe, když je tato možnost odškrtnuta (režim absolutní " -"extruze). Čistící věž je kompatibilní pouze s relativním režimem. Na " -"tiskárnách BambuLab je vždy povolen. Výchozí je zaškrtnuto" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -12512,9 +13237,6 @@ msgstr "" msgid "Create Based on Current Printer" msgstr "" -msgid "wiki" -msgstr "" - msgid "Import Preset" msgstr "" @@ -13060,6 +13782,19 @@ msgid "" "Did you know that OrcaSlicer can support Air filtration/Exhuast Fan?" msgstr "" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -13067,6 +13802,13 @@ msgid "" "3D scene operations." msgstr "" +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -13337,6 +14079,51 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unckecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" +#~ msgstr "" +#~ "Při použití volby \"label_objects\" se doporučuje relativní extruzi. " +#~ "Některé extrudery fungují lépe, když je tato možnost odškrtnuta (režim " +#~ "absolutní extruze). Čistící věž je kompatibilní pouze s relativním " +#~ "režimem. Na tiskárnách BambuLab je vždy povolen. Výchozí je zaškrtnuto" + +#~ msgid "Movement:" +#~ msgstr "Přejezd:" + +#~ msgid "Movement" +#~ msgstr "Přejezd" + +#~ msgid "Auto Segment" +#~ msgstr "Automatický segment" + +#~ msgid "Depth ratio" +#~ msgstr "Poměr hloubky" + +#~ msgid "Prizm" +#~ msgstr "Hranol" + +#~ msgid "connector is out of cut contour" +#~ msgstr "spojka je mimo obrys řezu" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "spojky jsou mimo obrys řezu" + +#~ msgid "connector is out of object" +#~ msgstr "spojka je mimo objekt" + +#~ msgid "connectors is out of object" +#~ msgstr "spojky jsou mimo objekt" + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "Neplatný stav. \n" +#~ "Není vybrána žádná část pro zachování po řezu" + #~ msgid "Edit Text" #~ msgstr "Upravit text" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 77c9734f66..b18fd5c7df 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -217,6 +217,9 @@ msgstr "mm" msgid "Position" msgstr "Position" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "Drehung" @@ -256,6 +259,7 @@ msgstr "Weltkoordinaten" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "Größe" @@ -265,6 +269,113 @@ msgstr "%" msgid "uniform scale" msgstr "einheitliche Skalierung" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "Automatisch" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "Einstecken" + +msgid "Dowel" +msgstr "Dübel" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "Frustum" + +msgid "Square" +msgstr "Quadrat" + +msgid "Hexagon" +msgstr "Sechseck" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "auf den Schnitt legen" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "Verbinder" + +msgid "Type" +msgstr "Typ" + +msgid "Style" +msgstr "Stil" + +msgid "Shape" +msgstr "Form" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "Breite" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "Teil" + +msgid "Object" +msgstr "Objekt" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "Toleranz" + +msgid "Drag" +msgstr "Ziehen" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "Linksklick" @@ -277,9 +388,6 @@ msgstr "Rechtsklick" msgid "Remove connector" msgstr "Verbinder entfernen" -msgid "Drag" -msgstr "Ziehen" - msgid "Move connector" msgstr "Verbinder bewegen" @@ -295,23 +403,51 @@ msgstr "Alle Verbinder auswählen" msgid "Cut" msgstr "Schneiden" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -msgid "Repairing model object" -msgstr "Modellobjekt reparieren" +msgid "Remove connectors" +msgstr "Verbinder entfernen" -msgid "Connector" -msgstr "Verbinder" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "Bewegung:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "Bewegung" +msgid "Space" +msgstr "Platz" -msgid "Height" -msgstr "Höhe" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "Bestätige Verbinder" + +msgid "Cancel" +msgstr "Abbrechen" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "Zurücksetzen" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "Verbinder ändern" @@ -319,6 +455,12 @@ msgstr "Verbinder ändern" msgid "Add connectors" msgstr "Verbinder zufügen" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "Oberes Teil" @@ -328,9 +470,6 @@ msgstr "Unteres Teil" msgid "Keep" msgstr "Behalten" -msgid "Place on cut" -msgstr "auf den Schnitt legen" - msgid "Flip" msgstr "umdrehen" @@ -340,87 +479,56 @@ msgstr "nach dem Schnitt" msgid "Cut to parts" msgstr "In Teile schneiden" -msgid "Auto Segment" -msgstr "Automatische Segmentierung" - msgid "Perform cut" msgstr "Schnitt ausführen" -msgid "Reset" -msgstr "Zurücksetzen" - -msgid "Connectors" -msgstr "Verbinder" - -msgid "Type" -msgstr "Typ" - -msgid "Style" -msgstr "Stil" - -msgid "Shape" -msgstr "Form" - -msgid "Depth ratio" -msgstr "Tiefenverhältnis" - -msgid "Remove connectors" -msgstr "Verbinder entfernen" - -msgid "Prizm" -msgstr "Prisma" - -msgid "Frustum" -msgstr "Frustum" - -msgid "Square" -msgstr "Quadrat" - -msgid "Hexagon" -msgstr "Sechseck" - -msgid "Confirm connectors" -msgstr "Bestätige Verbinder" - -msgid "Cancel" -msgstr "Abbrechen" - msgid "Warning" msgstr "Warnung" msgid "Invalid connectors detected" msgstr "Fehlerhafte Verbinder gefunden" -msgid "connector is out of cut contour" -msgstr "Der Verbinder ist außerhalb des Schnittfläche" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" +msgstr[1] "" -msgid "connectors are out of cut contour" -msgstr "Verbinder sind außerhalb des Schnittfläche" - -msgid "connector is out of object" -msgstr "Der Verbinder ist außerhalb des Objekts" - -msgid "connectors is out of object" -msgstr "Verbinder sind außerhalb des Objekts" +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" +msgstr[1] "" msgid "Some connectors are overlapped" msgstr "Einige Verbinder überlappen sich" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"Ungültiger Zustand. \n" -"Kein Teil ist ausgewählt, was nach dem Schneiden behalten wird." -msgid "Plug" -msgstr "Einstecken" +msgid "Cut plane is placed out of object" +msgstr "" -msgid "Dowel" -msgstr "Dübel" +msgid "Cut plane with groove is invalid" +msgstr "" -msgid "Tolerance" -msgstr "Toleranz" +msgid "Connector" +msgstr "Verbinder" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" + +msgid "Repairing model object" +msgstr "Modellobjekt reparieren" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Netzname" @@ -518,6 +626,8 @@ msgstr "Verlasse Naht aufmalen" msgid "Paint-on seam editing" msgstr "Aufgemalte Naht bearbeiten" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "Schiftart" @@ -555,6 +665,655 @@ msgstr "Text drehen" msgid "Text shape" msgstr "Text zufügen" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "Erweiterte Einstellungen" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "Modifizierer" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "OK" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "Lade" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "Höhe" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "SVG" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "Spiegeln" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "Löschen" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Esc" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "Keine" + +msgid "Diameter" +msgstr "Durchmesser" + +msgid "Length" +msgstr "Länge" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "In Zwischenablage kopieren" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Strg +" @@ -753,9 +1512,6 @@ msgstr "" msgid "Sync user presets" msgstr "Benutzerprofile synchronisieren" -msgid "Loading" -msgstr "Lade" - msgid "Loading user preset" msgstr "Benutzerprofil wird geladen" @@ -786,9 +1542,6 @@ msgstr "Wähle eine G-Code Datei:" msgid "Import File" msgstr "Datei importieren" -msgid "Delete" -msgstr "Löschen" - msgid "Choose files" msgstr "Dateien auswählen" @@ -859,9 +1612,6 @@ msgstr "Wischoptionen" msgid "Bed adhension" msgstr "Druckbetthaftung" -msgid "Advanced" -msgstr "Erweiterte Einstellungen" - msgid "Add part" msgstr "Teil hinzufügen" @@ -946,9 +1696,6 @@ msgstr "" msgid "Text" msgstr "T" -msgid "SVG" -msgstr "SVG" - msgid "Height range Modifier" msgstr "Höhen Modifizieren" @@ -1078,9 +1825,6 @@ msgstr "Entlang der Z Achse" msgid "Mirror along the Z axis" msgstr "An der Z-Achse spiegeln" -msgid "Mirror" -msgstr "Spiegeln" - msgid "Mirror object" msgstr "Objekt spiegeln" @@ -1364,12 +2108,6 @@ msgstr "Höhenbereiche" msgid "Settings for height range" msgstr "Einstellungen für den Höhenbereich" -msgid "Object" -msgstr "Objekt" - -msgid "Part" -msgstr "Teil" - msgid "Layer" msgstr "Schicht" @@ -1395,9 +2133,6 @@ msgstr "Der Typ des letzten festen Objektteils darf nicht geändert werden." msgid "Negative Part" msgstr "Negatives Teil" -msgid "Modifier" -msgstr "Modifizierer" - msgid "Support Blocker" msgstr "Stützblocker" @@ -1473,9 +2208,6 @@ msgstr "Füllungsdichte(%)" msgid "Auto Brim" msgstr "Automatische Umrandung" -msgid "Auto" -msgstr "Automatisch" - msgid "Mouse ear" msgstr "Mausohren" @@ -1553,9 +2285,6 @@ msgstr "" "Den auf der aktuellen Ebene zu verwendeten benutzerdefinierten G-Code " "eingeben:" -msgid "OK" -msgstr "OK" - msgid "Jump to Layer" msgstr "Wechsle zu Layer" @@ -1612,15 +2341,15 @@ msgstr "Kein Drucker" msgid "..." msgstr "..." -msgid "Failed to connect to the server" -msgstr "Verbindung zum Server fehlgeschlagen" - msgid "Check the status of current system services" msgstr "Überprüfen Sie den Status der aktuellen Systemdienste" msgid "code" msgstr "Code" +msgid "Failed to connect to the server" +msgstr "Verbindung zum Server fehlgeschlagen" + msgid "Failed to connect to cloud service" msgstr "Verbindung zum Cloud-Dienst fehlgeschlagen" @@ -2484,9 +3213,6 @@ msgstr "" msgid "Origin" msgstr "Nullpunkt" -msgid "Diameter" -msgstr "Durchmesser" - msgid "Size in X and Y of the rectangular plate." msgstr "Größe der rechteckigen Druckplatte in X und Y." @@ -3072,6 +3798,9 @@ msgstr "Zeit" msgid "Percent" msgstr "Prozent" +msgid "Used filament" +msgstr "Genutztes Filament" + msgid "Layer Height (mm)" msgstr "Schichthöhe (mm)" @@ -3090,9 +3819,6 @@ msgstr "Temperatur (°C)" msgid "Volumetric flow rate (mm³/s)" msgstr "Volumetrische Flussrate (mm³/s)" -msgid "Used filament" -msgstr "Genutztes Filament" - msgid "Travel" msgstr "Eilgang" @@ -6265,6 +6991,11 @@ msgstr "" "dieunabhängige Einstellung der Support-Lagenhöhe (independent support layer " "height)." +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6941,13 +7672,12 @@ msgid "Flushing volumes for filament change" msgstr "Reinigungsvolumen für Filamentwechsel" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" -"Studio würde jedes Mal die Reinigungsvolumen neu berechnen, wenn sich die " -"Farbe des Filaments ändert. Sie können die automatische Berechnung in Bambu " -"Studio > Einstellungen deaktivieren" +"Orca würde jedes Mal die Reinigungsvolumen neu berechnen, wenn sich die " +"Farbe des Filaments ändert. Sie können die automatische Berechnung in Orca " +"Slicer > Einstellungen deaktivieren" msgid "Flushing volume (mm³) for each filament pair." msgstr "Reinigungsvolumen (mm³) für jedes Filamentpaar." @@ -7009,9 +7739,6 @@ msgstr "⌘+Umschalttaste+G" msgid "Ctrl+Shift+G" msgstr "Strg+Umschalt+G" -msgid "Copy to clipboard" -msgstr "In Zwischenablage kopieren" - msgid "Paste from clipboard" msgstr "Aus Zwischenablage einfügen" @@ -7124,9 +7851,6 @@ msgstr "Umschalt+beliebige Pfeiltaste" msgid "Movement step set to 1 mm" msgstr "Bewegungsschritt auf 1 mm eingestellt" -msgid "Esc" -msgstr "Esc" - msgid "keyboard 1-9: set filament for object/part" msgstr "Tastatur 1-9: Filament für Objekt/Teil einstellen" @@ -7211,9 +7935,6 @@ msgstr "Extrudernummer für die Objekte und Teile einstellen" msgid "Delete objects, parts, modifiers " msgstr "Objekte, Teile, Modifikatoren löschen " -msgid "Space" -msgstr "Platz" - msgid "Select the object/part and press space to change the name" msgstr "" "Wähle das Objekt/Teil aus und drücke die Leertaste, um den Namen zu ändern" @@ -9531,9 +10252,6 @@ msgstr "" "zufällig zittert, so dass die Oberfläche ein raues, strukturiertes Aussehen " "erhält. Diese Einstellung steuert die Fuzzy-Position." -msgid "None" -msgstr "Keine" - msgid "Contour" msgstr "Kontur" @@ -10470,9 +11188,6 @@ msgstr "Zurückziehen beim Schichtwechsel" msgid "Force a retraction when changes layer" msgstr "Erzwingen eines Rückzugs beim Schichtwechsel" -msgid "Length" -msgstr "Länge" - msgid "Retraction Length" msgstr "Rückzugslänge" @@ -10690,6 +11405,21 @@ msgstr "" "minimieren, wird vor dem Verlassen der Schleife eine kleine Bewegung nach " "innen ausgeführt." +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "Wipe Geschwindigkeit" @@ -11491,9 +12221,6 @@ msgstr "Reinigungsvolumen" msgid "The volume of material to prime extruder on tower." msgstr "Das Volumen des Materials, das der Extruder am Turm entladen soll." -msgid "Width" -msgstr "Breite" - msgid "Width of prime tower" msgstr "Breite des Reinigungsturms." @@ -11672,13 +12399,9 @@ msgstr "Relative Extrusion" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" -"Die relative Extrusion wird empfohlen, wenn die Option „label_objects“ " -"verwendet wird. Einige Extruder funktionieren besser, wenn diese Option " -"deaktiviert ist (Absolute Extrusion). Der Wipe-Turm ist nur im relativen " -"Modus kompatibel. Er ist immer auf BambuLab-Druckern aktiviert" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -13000,9 +13723,6 @@ msgstr "Aus Vorlage erstellen" msgid "Create Based on Current Printer" msgstr "Erstellen Sie basierend auf dem aktuellen Drucker" -msgid "wiki" -msgstr "wiki" - msgid "Import Preset" msgstr "Voreinstellung importieren" @@ -13637,6 +14357,19 @@ msgstr "" "Wussten Sie, dass OrcaSlicer eine Luftfiltration/Abluftventilator " "unterstützen kann?" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -13647,6 +14380,13 @@ msgstr "" "Wussten Sie, dass Orca Slicer eine Vielzahl von Tastenkombinationen und 3D-" "Szenenoperationen bietet." +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -13943,6 +14683,54 @@ msgstr "" "wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die " "Wahrscheinlichkeit von Verwerfungen verringert werden kann." +#~ msgid "wiki" +#~ msgstr "wiki" + +#~ msgid "" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unckecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" +#~ msgstr "" +#~ "Die relative Extrusion wird empfohlen, wenn die Option „label_objects“ " +#~ "verwendet wird. Einige Extruder funktionieren besser, wenn diese Option " +#~ "deaktiviert ist (Absolute Extrusion). Der Wipe-Turm ist nur im relativen " +#~ "Modus kompatibel. Er ist immer auf BambuLab-Druckern aktiviert" + +#~ msgid "Movement:" +#~ msgstr "Bewegung:" + +#~ msgid "Movement" +#~ msgstr "Bewegung" + +#~ msgid "Auto Segment" +#~ msgstr "Automatische Segmentierung" + +#~ msgid "Depth ratio" +#~ msgstr "Tiefenverhältnis" + +#~ msgid "Prizm" +#~ msgstr "Prisma" + +#~ msgid "connector is out of cut contour" +#~ msgstr "Der Verbinder ist außerhalb des Schnittfläche" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "Verbinder sind außerhalb des Schnittfläche" + +#~ msgid "connector is out of object" +#~ msgstr "Der Verbinder ist außerhalb des Objekts" + +#~ msgid "connectors is out of object" +#~ msgstr "Verbinder sind außerhalb des Objekts" + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "Ungültiger Zustand. \n" +#~ "Kein Teil ist ausgewählt, was nach dem Schneiden behalten wird." + #~ msgid "Recalculate" #~ msgstr "Neu berechnen" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index b0cb54f992..c55bebd9b9 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -215,6 +215,9 @@ msgstr "mm" msgid "Position" msgstr "Position" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "Rotation" @@ -254,6 +257,7 @@ msgstr "World coordinates" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "Size" @@ -263,6 +267,113 @@ msgstr "%" msgid "uniform scale" msgstr "Uniform scale" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "Auto" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "Plug" + +msgid "Dowel" +msgstr "Dowel" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "Frustum" + +msgid "Square" +msgstr "Square" + +msgid "Hexagon" +msgstr "Hexagon" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "Place on cut" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "Connectors" + +msgid "Type" +msgstr "Type" + +msgid "Style" +msgstr "Style" + +msgid "Shape" +msgstr "Shape" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "Width" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "Part" + +msgid "Object" +msgstr "Object" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "Tolerance" + +msgid "Drag" +msgstr "Drag" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "Left click" @@ -275,9 +386,6 @@ msgstr "Right click" msgid "Remove connector" msgstr "Remove connector" -msgid "Drag" -msgstr "Drag" - msgid "Move connector" msgstr "Move connector" @@ -293,23 +401,51 @@ msgstr "Select all connectors" msgid "Cut" msgstr "Cut" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -msgid "Repairing model object" -msgstr "Repairing model object" +msgid "Remove connectors" +msgstr "Remove connectors" -msgid "Connector" -msgstr "Connector" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "Movement:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "Movement" +msgid "Space" +msgstr "Space" -msgid "Height" -msgstr "Height" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "Confirm connectors" + +msgid "Cancel" +msgstr "Cancel" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "Reset" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "Edit connectors" @@ -317,6 +453,12 @@ msgstr "Edit connectors" msgid "Add connectors" msgstr "Add connectors" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "Upper part" @@ -326,9 +468,6 @@ msgstr "Lower part" msgid "Keep" msgstr "Keep" -msgid "Place on cut" -msgstr "Place on cut" - msgid "Flip" msgstr "Flip" @@ -338,87 +477,56 @@ msgstr "After cut" msgid "Cut to parts" msgstr "Cut to parts" -msgid "Auto Segment" -msgstr "Auto Segment" - msgid "Perform cut" msgstr "Perform cut" -msgid "Reset" -msgstr "Reset" - -msgid "Connectors" -msgstr "Connectors" - -msgid "Type" -msgstr "Type" - -msgid "Style" -msgstr "Style" - -msgid "Shape" -msgstr "Shape" - -msgid "Depth ratio" -msgstr "Depth ratio" - -msgid "Remove connectors" -msgstr "Remove connectors" - -msgid "Prizm" -msgstr "Prizm" - -msgid "Frustum" -msgstr "Frustum" - -msgid "Square" -msgstr "Square" - -msgid "Hexagon" -msgstr "Hexagon" - -msgid "Confirm connectors" -msgstr "Confirm connectors" - -msgid "Cancel" -msgstr "Cancel" - msgid "Warning" msgstr "Warning" msgid "Invalid connectors detected" msgstr "Invalid connectors detected" -msgid "connector is out of cut contour" -msgstr "connector is out of cut contour" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" +msgstr[1] "" -msgid "connectors are out of cut contour" -msgstr "connectors are out of cut contour" - -msgid "connector is out of object" -msgstr "connector is out of object" - -msgid "connectors is out of object" -msgstr "Connectors must be on object surface." +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" +msgstr[1] "" msgid "Some connectors are overlapped" msgstr "Some connectors are overlapped" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"Invalid state. \n" -"No one part is selected to keep after cut" -msgid "Plug" -msgstr "Plug" +msgid "Cut plane is placed out of object" +msgstr "" -msgid "Dowel" -msgstr "Dowel" +msgid "Cut plane with groove is invalid" +msgstr "" -msgid "Tolerance" -msgstr "Tolerance" +msgid "Connector" +msgstr "Connector" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" + +msgid "Repairing model object" +msgstr "Repairing model object" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Mesh name" @@ -515,6 +623,8 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "Font" @@ -550,6 +660,655 @@ msgstr "Rotate text" msgid "Text shape" msgstr "Text shape" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "Advanced" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "Modifier" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "OK" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "Loading" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "Height" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "Mirror" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "Delete" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Esc" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "None" + +msgid "Diameter" +msgstr "Diameter" + +msgid "Length" +msgstr "Length" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "Copy to clipboard" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -725,9 +1484,6 @@ msgstr "" msgid "Sync user presets" msgstr "" -msgid "Loading" -msgstr "Loading" - msgid "Loading user preset" msgstr "Loading user preset" @@ -758,9 +1514,6 @@ msgstr "Select a G-code file:" msgid "Import File" msgstr "Import File" -msgid "Delete" -msgstr "Delete" - msgid "Choose files" msgstr "Choose files" @@ -831,9 +1584,6 @@ msgstr "Wipe options" msgid "Bed adhension" msgstr "Bed adhesion" -msgid "Advanced" -msgstr "Advanced" - msgid "Add part" msgstr "Add Part" @@ -918,9 +1668,6 @@ msgstr "" msgid "Text" msgstr "" -msgid "SVG" -msgstr "" - msgid "Height range Modifier" msgstr "Height Range Modifier" @@ -1048,9 +1795,6 @@ msgstr "Along Z Axis" msgid "Mirror along the Z axis" msgstr "Mirror along the Z Axis" -msgid "Mirror" -msgstr "Mirror" - msgid "Mirror object" msgstr "Mirror object" @@ -1318,12 +2062,6 @@ msgstr "Height ranges" msgid "Settings for height range" msgstr "Settings for height range" -msgid "Object" -msgstr "Object" - -msgid "Part" -msgstr "Part" - msgid "Layer" msgstr "Layer" @@ -1349,9 +2087,6 @@ msgstr "The type of the last solid object part cannot be changed." msgid "Negative Part" msgstr "Negative Part" -msgid "Modifier" -msgstr "Modifier" - msgid "Support Blocker" msgstr "Support Blocker" @@ -1425,9 +2160,6 @@ msgstr "Infill density(%)" msgid "Auto Brim" msgstr "Auto Brim" -msgid "Auto" -msgstr "Auto" - msgid "Mouse ear" msgstr "" @@ -1503,9 +2235,6 @@ msgstr "Custom G-code" msgid "Enter Custom G-code used on current layer:" msgstr "Enter Custom G-code used on current layer:" -msgid "OK" -msgstr "OK" - msgid "Jump to Layer" msgstr "Jump to layer" @@ -1560,15 +2289,15 @@ msgstr "No printer" msgid "..." msgstr "" -msgid "Failed to connect to the server" -msgstr "Failed to connect to the server" - msgid "Check the status of current system services" msgstr "Check the status of current system services" msgid "code" msgstr "code" +msgid "Failed to connect to the server" +msgstr "Failed to connect to the server" + msgid "Failed to connect to cloud service" msgstr "Failed to connect to cloud service" @@ -2392,9 +3121,6 @@ msgstr "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgid "Origin" msgstr "Origin" -msgid "Diameter" -msgstr "Diameter" - msgid "Size in X and Y of the rectangular plate." msgstr "Size in X and Y of the rectangular plate." @@ -2944,6 +3670,9 @@ msgstr "Time" msgid "Percent" msgstr "Percent" +msgid "Used filament" +msgstr "Used filament" + msgid "Layer Height (mm)" msgstr "Layer height (mm)" @@ -2962,9 +3691,6 @@ msgstr "Temperature (°C)" msgid "Volumetric flow rate (mm³/s)" msgstr "Volumetric flow rate (mm³/s)" -msgid "Used filament" -msgstr "Used filament" - msgid "Travel" msgstr "Travel" @@ -5993,6 +6719,11 @@ msgstr "" "0 top z distance, 0 interface spacing, concentric pattern and disable " "independent support layer height" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6635,9 +7366,8 @@ msgid "Flushing volumes for filament change" msgstr "Flushing volumes for filament change" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -6699,9 +7429,6 @@ msgstr "⌘+Shift+G" msgid "Ctrl+Shift+G" msgstr "Ctrl+Shift+G" -msgid "Copy to clipboard" -msgstr "Copy to clipboard" - msgid "Paste from clipboard" msgstr "Paste from clipboard" @@ -6813,9 +7540,6 @@ msgstr "Shift+Any arrow" msgid "Movement step set to 1 mm" msgstr "Movement step set to 1mm" -msgid "Esc" -msgstr "Esc" - msgid "keyboard 1-9: set filament for object/part" msgstr "Keyboard 1-9: set filament for object/part" @@ -6900,9 +7624,6 @@ msgstr "Set extruder number for the objects and parts" msgid "Delete objects, parts, modifiers " msgstr "Delete objects, parts, modifiers" -msgid "Space" -msgstr "Space" - msgid "Select the object/part and press space to change the name" msgstr "Select the object/part and press space to change the name" @@ -8933,9 +9654,6 @@ msgstr "" "the surface has a rough textured look. This setting controls the fuzzy " "position." -msgid "None" -msgstr "None" - msgid "Contour" msgstr "Contour" @@ -9753,9 +10471,6 @@ msgstr "Retract on layer change" msgid "Force a retraction when changes layer" msgstr "This forces a retraction on layer changes." -msgid "Length" -msgstr "Length" - msgid "Retraction Length" msgstr "Retraction Length" @@ -9936,6 +10651,21 @@ msgid "" "inward movement is executed before the extruder leaves the loop." msgstr "" +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "" @@ -10638,9 +11368,6 @@ msgid "The volume of material to prime extruder on tower." msgstr "" "This is the volume of material to prime the extruder with on the tower." -msgid "Width" -msgstr "Width" - msgid "Width of prime tower" msgstr "This is the width of prime towers." @@ -10793,8 +11520,8 @@ msgstr "" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" msgid "" @@ -11950,9 +12677,6 @@ msgstr "" msgid "Create Based on Current Printer" msgstr "" -msgid "wiki" -msgstr "" - msgid "Import Preset" msgstr "" @@ -12488,6 +13212,19 @@ msgid "" "Did you know that OrcaSlicer can support Air filtration/Exhuast Fan?" msgstr "" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12495,12 +13232,22 @@ msgid "" "3D scene operations." msgstr "" +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" "Did you know that you can cut a model at any angle and position with the " "cutting tool?" msgstr "" +"Cut Tool\n" +"Did you know that you can cut a model at any angle and position with the " +"cutting tool?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" @@ -12514,12 +13261,16 @@ msgid "" "Timelapse\n" "Did you know that you can generate a timelapse video during each print?" msgstr "" +"Timelapse\n" +"Did you know that you can generate a timelapse video during each print?" #: resources/data/hints.ini: [hint:Auto-Arrange] msgid "" "Auto-Arrange\n" "Did you know that you can auto-arrange all objects in your project?" msgstr "" +"Auto-Arrange\n" +"Did you know that you can auto-arrange all the objects in your project?" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" @@ -12527,6 +13278,9 @@ msgid "" "Did you know that you can rotate objects to an optimal orientation for " "printing by a simple click?" msgstr "" +"Auto-Orient\n" +"Did you know that you can rotate objects to an optimal orientation for " +"printing with a simple click?" #: resources/data/hints.ini: [hint:Lay on Face] msgid "" @@ -12535,6 +13289,10 @@ msgid "" "sits on the print bed? Select the \"Place on face\" function or press the " "F key." msgstr "" +"Lay on Face\n" +"Did you know that you can quickly orient a model so that one of its faces " +"sits on the print bed? Select the \"Place on face\" function or press the " +"F key." #: resources/data/hints.ini: [hint:Object List] msgid "" @@ -12542,6 +13300,9 @@ msgid "" "Did you know that you can view all objects/parts in a list and change " "settings for each object/part?" msgstr "" +"Object List\n" +"Did you know that you can view all objects/parts in a list and change " +"settings for each object/part?" #: resources/data/hints.ini: [hint:Search Functionality] msgid "" @@ -12563,6 +13324,9 @@ msgid "" "Did you know that you can view all objects/parts on a table and change " "settings for each object/part?" msgstr "" +"Slicing Parameter Table\n" +"Did you know that you can view all objects/parts on a table and change " +"settings for each object/part?" #: resources/data/hints.ini: [hint:Split to Objects/Parts] msgid "" @@ -12570,6 +13334,9 @@ msgid "" "Did you know that you can split a big object into small ones for easy " "colorizing or printing?" msgstr "" +"Split to Objects/Parts\n" +"Did you know that you can split a big object into small ones for easy " +"colorizing or printing?" #: resources/data/hints.ini: [hint:Subtract a Part] msgid "" @@ -12595,6 +13362,10 @@ msgid "" "paint it on your print, to have it in a less visible location? This improves " "the overall look of your model. Check it out!" msgstr "" +"Z seam location\n" +"Did you know that you can customize the location of the Z seam, and even " +"paint it on your print, to have it in a less visible location? This improves " +"the overall look of your model. Check it out!" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" @@ -12603,6 +13374,10 @@ msgid "" "prints? Depending on the material, you can improve the overall finish of the " "printed model by doing some fine-tuning." msgstr "" +"Fine-tuning for flow rate\n" +"Did you know that flow rate can be fine-tuned for even better-looking " +"prints? Depending on the material, you can improve the overall finish of the " +"printed model by doing some fine-tuning." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" @@ -12611,6 +13386,10 @@ msgid "" "individual plates ready to print? This will simplify the process of keeping " "track of all the parts." msgstr "" +"Split your prints into plates\n" +"Did you know that you can split a model that has a lot of parts into " +"individual plates ready to print? This will simplify the process of keeping " +"track of all the parts." #: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer #: Height] @@ -12619,6 +13398,9 @@ msgid "" "Did you know that you can print a model even faster, by using the Adaptive " "Layer Height option? Check it out!" msgstr "" +"Speed up your print with Adaptive Layer Height\n" +"Did you know that you can print a model even faster by using the Adaptive " +"Layer Height option? Check it out!" #: resources/data/hints.ini: [hint:Support painting] msgid "" @@ -12627,6 +13409,10 @@ msgid "" "makes it easy to place the support material only on the sections of the " "model that actually need it." msgstr "" +"Support painting\n" +"Did you know that you can paint the location of your supports? This feature " +"makes it easy to place the support material only on the sections of the " +"model that actually need it." #: resources/data/hints.ini: [hint:Different types of supports] msgid "" @@ -12635,6 +13421,10 @@ msgid "" "supports work great for organic models, while saving filament and improving " "print speed. Check them out!" msgstr "" +"Different types of supports\n" +"Did you know that you can choose from multiple types of supports? Tree " +"supports work great for organic models while saving filament and improving " +"print speed. Check them out!" #: resources/data/hints.ini: [hint:Printing Silk Filament] msgid "" @@ -12643,6 +13433,10 @@ msgid "" "successfully? Higher temperature and lower speed are always recommended for " "the best results." msgstr "" +"Printing Silk Filament\n" +"Did you know that Silk filament needs special consideration to print " +"successfully? A higher temperature and lower speed are always recommended " +"for the best results." #: resources/data/hints.ini: [hint:Brim for better adhesion] msgid "" @@ -12650,6 +13444,9 @@ msgid "" "Did you know that when printing models have a small contact interface with " "the printing surface, it's recommended to use a brim?" msgstr "" +"Brim for better adhesion\n" +"Did you know that when printed models have a small contact interface with " +"the printing surface, it's recommended to use a brim?" #: resources/data/hints.ini: [hint:Set parameters for multiple objects] msgid "" @@ -12657,12 +13454,17 @@ msgid "" "Did you know that you can set slicing parameters for all selected objects at " "one time?" msgstr "" +"Set parameters for multiple objects\n" +"Did you know that you can set slicing parameters for all selected objects at " +"once?" #: resources/data/hints.ini: [hint:Stack objects] msgid "" "Stack objects\n" "Did you know that you can stack objects as a whole one?" msgstr "" +"Stack objects\n" +"Did you know that you can stack objects as a whole one?" #: resources/data/hints.ini: [hint:Flush into support/objects/infill] msgid "" @@ -12670,6 +13472,9 @@ msgid "" "Did you know that you can save the wasted filament by flushing them into " "support/objects/infill during filament change?" msgstr "" +"Flush into support/objects/infill\n" +"Did you know that you can reduce wasted filament by flushing it into support/" +"objects/infill during filament changes?" #: resources/data/hints.ini: [hint:Improve strength] msgid "" @@ -12677,6 +13482,9 @@ msgid "" "Did you know that you can use more wall loops and higher sparse infill " "density to improve the strength of the model?" msgstr "" +"Improve strength\n" +"Did you know that you can use more wall loops and higher sparse infill " +"density to improve the strength of the model?" #: resources/data/hints.ini: [hint:When need to print with the printer door #: opened] @@ -12695,6 +13503,40 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Movement:" +#~ msgstr "Movement:" + +#~ msgid "Movement" +#~ msgstr "Movement" + +#~ msgid "Auto Segment" +#~ msgstr "Auto Segment" + +#~ msgid "Depth ratio" +#~ msgstr "Depth ratio" + +#~ msgid "Prizm" +#~ msgstr "Prizm" + +#~ msgid "connector is out of cut contour" +#~ msgstr "connector is out of cut contour" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "connectors are out of cut contour" + +#~ msgid "connector is out of object" +#~ msgstr "connector is out of object" + +#~ msgid "connectors is out of object" +#~ msgstr "Connectors must be on object surface." + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "Invalid state. \n" +#~ "No one part is selected to keep after cut" + #~ msgid "Edit Text" #~ msgstr "Edit Text" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 5fcd681412..d39c6f270e 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -217,6 +217,9 @@ msgstr "mm" msgid "Position" msgstr "Posición" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "Rotación" @@ -256,6 +259,7 @@ msgstr "Coordenadas cartesianas" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "Tamaño" @@ -265,6 +269,113 @@ msgstr "%" msgid "uniform scale" msgstr "Escala uniforme" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "Automático" + +msgid "Manual" +msgstr "Manual" + +msgid "Plug" +msgstr "Conectar" + +msgid "Dowel" +msgstr "Filamento" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "Cono" + +msgid "Square" +msgstr "Cuadrado" + +msgid "Hexagon" +msgstr "Hexágono" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "Colocar en la posición de corte" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "Conectores" + +msgid "Type" +msgstr "Tipo" + +msgid "Style" +msgstr "Estilo" + +msgid "Shape" +msgstr "Forma" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "Ancho" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "Pieza" + +msgid "Object" +msgstr "Objeto" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "Toleráncia" + +msgid "Drag" +msgstr "Soltar" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "Click izquierdo" @@ -277,9 +388,6 @@ msgstr "Click derecho" msgid "Remove connector" msgstr "Borrar conector" -msgid "Drag" -msgstr "Soltar" - msgid "Move connector" msgstr "Mover conector" @@ -295,25 +403,51 @@ msgstr "Seleccionar todos los conectores" msgid "Cut" msgstr "Cortar" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -"Los bordes con pliegues pueden ser causados por la herramienta de corte, " -"¿quieres arreglarlo ahora?" -msgid "Repairing model object" -msgstr "Reparación de un objeto modelo" +msgid "Remove connectors" +msgstr "Borrar conectores" -msgid "Connector" -msgstr "Conector" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "Movimiento:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "Movimiento" +msgid "Space" +msgstr "Espacio" -msgid "Height" -msgstr "Altura" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "Confirmar conectores" + +msgid "Cancel" +msgstr "Cancelar" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "Reiniciar" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "Editar conectores" @@ -321,6 +455,12 @@ msgstr "Editar conectores" msgid "Add connectors" msgstr "Añadir conectores" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "Parte alta" @@ -330,9 +470,6 @@ msgstr "Parte baja" msgid "Keep" msgstr "Mantener" -msgid "Place on cut" -msgstr "Colocar en la posición de corte" - msgid "Flip" msgstr "Girar" @@ -342,87 +479,58 @@ msgstr "Después del corte" msgid "Cut to parts" msgstr "Separar en piezas" -msgid "Auto Segment" -msgstr "Auto Despiece" - msgid "Perform cut" msgstr "Realizar corte" -msgid "Reset" -msgstr "Reiniciar" - -msgid "Connectors" -msgstr "Conectores" - -msgid "Type" -msgstr "Tipo" - -msgid "Style" -msgstr "Estilo" - -msgid "Shape" -msgstr "Forma" - -msgid "Depth ratio" -msgstr "Relación de profundidad" - -msgid "Remove connectors" -msgstr "Borrar conectores" - -msgid "Prizm" -msgstr "Prisma" - -msgid "Frustum" -msgstr "Cono" - -msgid "Square" -msgstr "Cuadrado" - -msgid "Hexagon" -msgstr "Hexágono" - -msgid "Confirm connectors" -msgstr "Confirmar conectores" - -msgid "Cancel" -msgstr "Cancelar" - msgid "Warning" msgstr "Peligro" msgid "Invalid connectors detected" msgstr "Conectores inválidos detectados" -msgid "connector is out of cut contour" -msgstr "el conector está fuera del contorno de corte" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" +msgstr[1] "" -msgid "connectors are out of cut contour" -msgstr "los conectores están fuera del contorno de corte" - -msgid "connector is out of object" -msgstr "el conector está fuera del objeto" - -msgid "connectors is out of object" -msgstr "los conectores están fuera del objeto" +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" +msgstr[1] "" msgid "Some connectors are overlapped" msgstr "Algunos conectores están solapados" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"Estado inválido. \n" -"No se ha seleccionado ninguna pieza para conservar después del corte" -msgid "Plug" -msgstr "Conectar" +msgid "Cut plane is placed out of object" +msgstr "" -msgid "Dowel" -msgstr "Filamento" +msgid "Cut plane with groove is invalid" +msgstr "" -msgid "Tolerance" -msgstr "Toleráncia" +msgid "Connector" +msgstr "Conector" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" +"Los bordes con pliegues pueden ser causados por la herramienta de corte, " +"¿quieres arreglarlo ahora?" + +msgid "Repairing model object" +msgstr "Reparación de un objeto modelo" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Nombre de la malla" @@ -520,6 +628,8 @@ msgstr "Saliendo de la sección de pintado de la costura" msgid "Paint-on seam editing" msgstr "Edición de costuras pintadas" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "Fuente" @@ -557,6 +667,655 @@ msgstr "Rotar texto" msgid "Text shape" msgstr "Forma de texto" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "Avanzado" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "Modificador" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "OK" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "Cargando" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "Altura" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "Reflejar" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "Borrar" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Esc" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "Ninguno" + +msgid "Diameter" +msgstr "Diámetro" + +msgid "Length" +msgstr "Largo" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "Copiar al portapapeles" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -760,9 +1519,6 @@ msgstr "" msgid "Sync user presets" msgstr "Sincronizar perfiles de usuario" -msgid "Loading" -msgstr "Cargando" - msgid "Loading user preset" msgstr "Cargando la preselección del usuario" @@ -793,9 +1549,6 @@ msgstr "Seleccione un archivo de G-Code:" msgid "Import File" msgstr "Importar Archivo" -msgid "Delete" -msgstr "Borrar" - msgid "Choose files" msgstr "Elija los archivos" @@ -866,9 +1619,6 @@ msgstr "Opciones de limpieza" msgid "Bed adhension" msgstr "Adhesión a la cama" -msgid "Advanced" -msgstr "Avanzado" - msgid "Add part" msgstr "Añadir pieza" @@ -953,9 +1703,6 @@ msgstr "" msgid "Text" msgstr "Texto" -msgid "SVG" -msgstr "" - msgid "Height range Modifier" msgstr "Modificador de rango de Altura" @@ -1083,9 +1830,6 @@ msgstr "A lo largo del eje Z" msgid "Mirror along the Z axis" msgstr "Espejo a lo largo del eje Z" -msgid "Mirror" -msgstr "Reflejar" - msgid "Mirror object" msgstr "Objeto reflejado" @@ -1363,12 +2107,6 @@ msgstr "Rangos de altura" msgid "Settings for height range" msgstr "Ajustes de rango de altura" -msgid "Object" -msgstr "Objeto" - -msgid "Part" -msgstr "Pieza" - msgid "Layer" msgstr "Capa" @@ -1394,9 +2132,6 @@ msgstr "El tipo de la última pieza del objeto sólido no debe cambiarse." msgid "Negative Part" msgstr "Parte negativa" -msgid "Modifier" -msgstr "Modificador" - msgid "Support Blocker" msgstr "Bloqueador de soporte" @@ -1471,9 +2206,6 @@ msgstr "Densidad de relleno(%)" msgid "Auto Brim" msgstr "Borde de Adherencia Automático" -msgid "Auto" -msgstr "Automático" - msgid "Mouse ear" msgstr "Oreja de ratón" @@ -1549,9 +2281,6 @@ msgstr "G-Code personalizado" msgid "Enter Custom G-code used on current layer:" msgstr "Inserta el G-Code personalizado usado en la capa actual:" -msgid "OK" -msgstr "OK" - msgid "Jump to Layer" msgstr "Salta a la Capa" @@ -1606,15 +2335,15 @@ msgstr "Sin impresión" msgid "..." msgstr "..." -msgid "Failed to connect to the server" -msgstr "No se ha podido conectar con el servidor" - msgid "Check the status of current system services" msgstr "Check the status of current system services" msgid "code" msgstr "code" +msgid "Failed to connect to the server" +msgstr "No se ha podido conectar con el servidor" + msgid "Failed to connect to cloud service" msgstr "Failed to connect to cloud service" @@ -2467,9 +3196,6 @@ msgstr "" msgid "Origin" msgstr "Origen" -msgid "Diameter" -msgstr "Diámetro" - msgid "Size in X and Y of the rectangular plate." msgstr "Tamaño en X e Y de la bandeja rectangular." @@ -3051,6 +3777,9 @@ msgstr "Tiempo" msgid "Percent" msgstr "Porcentaje" +msgid "Used filament" +msgstr "Filamento usado" + msgid "Layer Height (mm)" msgstr "Altura de la capa (mm)" @@ -3069,9 +3798,6 @@ msgstr "Temperatura (°C)" msgid "Volumetric flow rate (mm³/s)" msgstr "Tasa de caudal volumétrico (mm³/seg)" -msgid "Used filament" -msgstr "Filamento usado" - msgid "Travel" msgstr "Recorrido" @@ -6213,6 +6939,11 @@ msgstr "" "distancia z0, espaciado de interfaz 0, patrón concéntrico y desactivar " "altura de soporte independiente de altura de capa" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6884,9 +7615,8 @@ msgid "Flushing volumes for filament change" msgstr "Volúmenes de limpieza para el cambio de filamentos" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -6949,9 +7679,6 @@ msgstr "⌘+Shift+G" msgid "Ctrl+Shift+G" msgstr "Ctrl+Shift+G" -msgid "Copy to clipboard" -msgstr "Copiar al portapapeles" - msgid "Paste from clipboard" msgstr "Pegar desde el portapapeles" @@ -7063,9 +7790,6 @@ msgstr "Mayúsculas+Cualquier flecha" msgid "Movement step set to 1 mm" msgstr "Paso de movimiento configurado a 1 mm" -msgid "Esc" -msgstr "Esc" - msgid "keyboard 1-9: set filament for object/part" msgstr "teclado 1-9: ajustar el filamento para el objeto/pieza" @@ -7150,9 +7874,6 @@ msgstr "Ajustar el número de extrusor para los objetos y las piezas" msgid "Delete objects, parts, modifiers " msgstr "Eliminar objetos, piezas, modificadores " -msgid "Space" -msgstr "Espacio" - msgid "Select the object/part and press space to change the name" msgstr "" "Seleccione el objeto/pieza y pulse la barra espaciadora para cambiar el " @@ -9463,9 +10184,6 @@ msgstr "" "Se puede imprimir el perímetro de forma aleatoria, de modo que la superficie " "tenga un aspecto rugoso. Este ajuste controla la posición difusa" -msgid "None" -msgstr "Ninguno" - msgid "Contour" msgstr "Contorno" @@ -10007,7 +10725,7 @@ msgstr "" "velocidad máxima del ventilador de refrigeración parcial" msgid "Max" -msgstr "" +msgstr "Max" msgid "" "The largest printable layer height for extruder. Used tp limits the maximum " @@ -10120,7 +10838,7 @@ msgstr "" "utilizar esta función. Comando G-code: M106 P2 S(0-255)" msgid "Min" -msgstr "" +msgstr "Min" msgid "" "The lowest printable layer height for extruder. Used tp limits the minimum " @@ -10288,7 +11006,7 @@ msgstr "" "cónico. El valor 0 llenará todos los huecos en la base del modelo." msgid "mm²" -msgstr "" +msgstr "mm²" msgid "Detect overhang wall" msgstr "Detectar el voladizo del perímetro" @@ -10420,9 +11138,6 @@ msgstr "Retracción al cambiar de capa" msgid "Force a retraction when changes layer" msgstr "Forzar una retracción al cambiar de capa" -msgid "Length" -msgstr "Largo" - msgid "Retraction Length" msgstr "Longitud de retracción" @@ -10636,6 +11351,21 @@ msgstr "" "ejecuta un pequeño movimiento hacia dentro antes de que el extrusor abandone " "la curva." +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "Velocidad de limpieza" @@ -11428,9 +12158,6 @@ msgstr "Tamaño de purga" msgid "The volume of material to prime extruder on tower." msgstr "El volumen de material para cebar la extrusora en la torre." -msgid "Width" -msgstr "Ancho" - msgid "Width of prime tower" msgstr "Anchura de la torre de purga" @@ -11608,14 +12335,9 @@ msgstr "Usar distancias relativas E" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" -"Se recomienda la extrusión relativa cuando se utiliza la opción " -"\"label_objects\". Algunos extrusores funcionan mejor con esta opción " -"desactivada (modo de extrusión absoluta). La torre de purga sólo es " -"compatible con el modo relativo. Siempre activa en las impresoras BambuLab. " -"Marcada por defecto" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -11630,7 +12352,7 @@ msgid "Classic" msgstr "Clásico" msgid "Arachne" -msgstr "" +msgstr "Aracne" msgid "Wall transition length" msgstr "Anchura de transición de perímetro" @@ -12934,9 +13656,6 @@ msgstr "Crear desde Plantilla" msgid "Create Based on Current Printer" msgstr "Crear basándose en la Impresora Actual" -msgid "wiki" -msgstr "" - msgid "Import Preset" msgstr "Importar Perfil" @@ -13571,6 +14290,19 @@ msgstr "" "Filtración de aire/ventilador Exhuast \n" "¿Sabías que OrcaSlicer admite filtración de aire/ventilador Exhuast?" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -13581,6 +14313,13 @@ msgstr "" "¿Sabías que Orca Slicer ofrece una amplia gama de atajos de teclado y " "operaciones de escenas 3D." +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -13875,6 +14614,74 @@ msgstr "" "aumentar adecuadamente la temperatura del lecho térmico puede reducir la " "probabilidad de deformaciones." +#~ msgid "" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unckecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" +#~ msgstr "" +#~ "Se recomienda la extrusión relativa cuando se utiliza la opción " +#~ "\"label_objects\". Algunos extrusores funcionan mejor con esta opción " +#~ "desactivada (modo de extrusión absoluta). La torre de purga sólo es " +#~ "compatible con el modo relativo. Siempre activa en las impresoras " +#~ "BambuLab. Marcada por defecto" + +#~ msgid "Fan Speed: " +#~ msgstr "Velocidad del ventilador:" + +#~ msgid "The 3mf is not from Bambu Lab, load geometry data only." +#~ msgstr "El 3mf no es Bambu lab, solo se carga datos de geometría." + +#~ msgid "Bamabu Engineering Plate" +#~ msgstr "Placa de Ingenieria Bambu" + +#~ msgid "Bridge flow" +#~ msgstr "Flujo del puente" + +#~ msgid "" +#~ "Acceleration of initial layer. Using a lower value can improve build " +#~ "plate adhensive" +#~ msgstr "" +#~ "Aceleración de la capa inicial. El uso de un valor más bajo puede mejorar " +#~ "la adherencia de la placa de impresión" + +#~ msgid "Maximum acceleration for travel (M204 T)" +#~ msgstr "Aceleración máxima para el desplazamiento (M204 T)" + +#~ msgid "Movement:" +#~ msgstr "Movimiento:" + +#~ msgid "Movement" +#~ msgstr "Movimiento" + +#~ msgid "Auto Segment" +#~ msgstr "Auto Despiece" + +#~ msgid "Depth ratio" +#~ msgstr "Relación de profundidad" + +#~ msgid "Prizm" +#~ msgstr "Prisma" + +#~ msgid "connector is out of cut contour" +#~ msgstr "el conector está fuera del contorno de corte" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "los conectores están fuera del contorno de corte" + +#~ msgid "connector is out of object" +#~ msgstr "el conector está fuera del objeto" + +#~ msgid "connectors is out of object" +#~ msgstr "los conectores están fuera del objeto" + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "Estado inválido. \n" +#~ "No se ha seleccionado ninguna pieza para conservar después del corte" + #~ msgid " search results" #~ msgstr "Buscar resultados" @@ -14600,9 +15407,6 @@ msgstr "" #~ msgid "Set Printable" #~ msgstr "Hacer Imprimible" -#~ msgid "Manual" -#~ msgstr "Manual" - #~ msgid "Ams filament backup" #~ msgstr "Copia de Seguridad del Filamento AMS" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index a8bda45da7..e64387a068 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-27 13:03+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -221,6 +221,9 @@ msgstr "mm" msgid "Position" msgstr "Emplacement" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "Rotation" @@ -260,6 +263,7 @@ msgstr "Coordonnées" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "Taille" @@ -269,6 +273,113 @@ msgstr "%" msgid "uniform scale" msgstr "échelle uniforme" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "Auto" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "Connecteur" + +msgid "Dowel" +msgstr "Tourillon" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "Tronc" + +msgid "Square" +msgstr "Carré" + +msgid "Hexagon" +msgstr "Hexagone" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "Placer sur la coupe" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "Connecteurs" + +msgid "Type" +msgstr "Type" + +msgid "Style" +msgstr "Style" + +msgid "Shape" +msgstr "Forme" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "Largeur" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "Pièce" + +msgid "Object" +msgstr "Objet" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "Tolérance" + +msgid "Drag" +msgstr "Glisser" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "Clic gauche" @@ -281,9 +392,6 @@ msgstr "Clic droit" msgid "Remove connector" msgstr "Retirer le connecteur" -msgid "Drag" -msgstr "Glisser" - msgid "Move connector" msgstr "Déplacer le connecteur" @@ -299,25 +407,51 @@ msgstr "Sélectionner tous les connecteurs" msgid "Cut" msgstr "Couper" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -"les bords non pliables sont dus à l’outil de coupe, voulez-vous les corriger " -"maintenant ?" -msgid "Repairing model object" -msgstr "Réparer l'objet modèle" +msgid "Remove connectors" +msgstr "Retirer les connecteurs" -msgid "Connector" -msgstr "Connecteur" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "Mouvement:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "Mouvement" +msgid "Space" +msgstr "Espace" -msgid "Height" -msgstr "Hauteur" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "Confirmer les connecteurs" + +msgid "Cancel" +msgstr "Annuler" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "Réinitialiser" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "Modifier les connecteurs" @@ -325,6 +459,12 @@ msgstr "Modifier les connecteurs" msgid "Add connectors" msgstr "Ajouter des connecteurs" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "Partie supérieure" @@ -334,9 +474,6 @@ msgstr "Partie inférieure" msgid "Keep" msgstr "Conserver" -msgid "Place on cut" -msgstr "Placer sur la coupe" - msgid "Flip" msgstr "Retourner" @@ -346,87 +483,58 @@ msgstr "Après la coupe" msgid "Cut to parts" msgstr "Couper la sélection dans le presse-papiers" -msgid "Auto Segment" -msgstr "Segmentation automatique" - msgid "Perform cut" msgstr "Effectuer la coupe" -msgid "Reset" -msgstr "Réinitialiser" - -msgid "Connectors" -msgstr "Connecteurs" - -msgid "Type" -msgstr "Type" - -msgid "Style" -msgstr "Style" - -msgid "Shape" -msgstr "Forme" - -msgid "Depth ratio" -msgstr "Rapport de profondeur" - -msgid "Remove connectors" -msgstr "Retirer les connecteurs" - -msgid "Prizm" -msgstr "Prisme" - -msgid "Frustum" -msgstr "Tronc" - -msgid "Square" -msgstr "Carré" - -msgid "Hexagon" -msgstr "Hexagone" - -msgid "Confirm connectors" -msgstr "Confirmer les connecteurs" - -msgid "Cancel" -msgstr "Annuler" - msgid "Warning" msgstr "Alerte" msgid "Invalid connectors detected" msgstr "Connecteurs invalides détectés" -msgid "connector is out of cut contour" -msgstr "connecteur est hors du contour de la coupe" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" +msgstr[1] "" -msgid "connectors are out of cut contour" -msgstr "connecteurs sont hors du contour de la coupe" - -msgid "connector is out of object" -msgstr "connecteur est hors de l'objet" - -msgid "connectors is out of object" -msgstr "connecteurs sont hors de l'objet" +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" +msgstr[1] "" msgid "Some connectors are overlapped" msgstr "Certains connecteurs se chevauchent" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"État non valide. \n" -"Aucune pièce n'est sélectionnée pour être conservée après la découpe" -msgid "Plug" +msgid "Cut plane is placed out of object" +msgstr "" + +msgid "Cut plane with groove is invalid" +msgstr "" + +msgid "Connector" msgstr "Connecteur" -msgid "Dowel" -msgstr "Tourillon" +msgid "Cut by Plane" +msgstr "" -msgid "Tolerance" -msgstr "Tolérance" +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" +"les bords non pliables sont dus à l’outil de coupe, voulez-vous les corriger " +"maintenant ?" + +msgid "Repairing model object" +msgstr "Réparer l'objet modèle" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Nom du maillage" @@ -524,6 +632,8 @@ msgstr "Quitter Peinture de Couture" msgid "Paint-on seam editing" msgstr "Modification des coutures peintes" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "Police" @@ -559,6 +669,655 @@ msgstr "Faire pivoter le texte" msgid "Text shape" msgstr "Forme du texte" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "Avancé" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "Modificateur" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "OK" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "Chargement" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "Hauteur" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "Symétrie" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "Supprimer" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Échap" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "Aucun" + +msgid "Diameter" +msgstr "Diamètre" + +msgid "Length" +msgstr "Longueur" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "Copier dans le presse-papier" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -759,9 +1518,6 @@ msgstr "" msgid "Sync user presets" msgstr "Synchronisation des préréglages de l'utilisateur" -msgid "Loading" -msgstr "Chargement" - msgid "Loading user preset" msgstr "Chargement du préréglage utilisateur" @@ -792,9 +1548,6 @@ msgstr "Sélectionnez un fichier G-code :" msgid "Import File" msgstr "Importer un Fichier" -msgid "Delete" -msgstr "Supprimer" - msgid "Choose files" msgstr "Choisir des fichiers" @@ -865,9 +1618,6 @@ msgstr "Options de nettoyage" msgid "Bed adhension" msgstr "Adhérence au plateau" -msgid "Advanced" -msgstr "Avancé" - msgid "Add part" msgstr "Ajouter une pièce" @@ -952,9 +1702,6 @@ msgstr "Lapin de Stanford" msgid "Text" msgstr "Texte" -msgid "SVG" -msgstr "" - msgid "Height range Modifier" msgstr "Modificateur de plage de hauteur" @@ -1084,9 +1831,6 @@ msgstr "Le long de l'axe Z" msgid "Mirror along the Z axis" msgstr "Miroir le long de l'axe Z" -msgid "Mirror" -msgstr "Symétrie" - msgid "Mirror object" msgstr "Symétriser l'Objet" @@ -1362,12 +2106,6 @@ msgstr "Plages de hauteur" msgid "Settings for height range" msgstr "Réglages de la plage de hauteur" -msgid "Object" -msgstr "Objet" - -msgid "Part" -msgstr "Pièce" - msgid "Layer" msgstr "Couche" @@ -1394,9 +2132,6 @@ msgstr "" msgid "Negative Part" msgstr "Partie négative" -msgid "Modifier" -msgstr "Modificateur" - msgid "Support Blocker" msgstr "Bloqueur de Support" @@ -1472,9 +2207,6 @@ msgstr "Densité de remplissage(%)" msgid "Auto Brim" msgstr "Bord automatique" -msgid "Auto" -msgstr "Auto" - msgid "Mouse ear" msgstr "Sur les angles uniquement" @@ -1550,9 +2282,6 @@ msgstr "G-code personnalisé" msgid "Enter Custom G-code used on current layer:" msgstr "Entrez le G-code personnalisé a utiliser sur la couche actuelle :" -msgid "OK" -msgstr "OK" - msgid "Jump to Layer" msgstr "Aller à la couche" @@ -1607,15 +2336,15 @@ msgstr "Pas d'imprimante" msgid "..." msgstr "…" -msgid "Failed to connect to the server" -msgstr "Impossible de se connecter au serveur" - msgid "Check the status of current system services" msgstr "Vérifiez l'état des services système actuels" msgid "code" msgstr "code" +msgid "Failed to connect to the server" +msgstr "Impossible de se connecter au serveur" + msgid "Failed to connect to cloud service" msgstr "Impossible de se connecter au service cloud" @@ -2476,9 +3205,6 @@ msgstr "" msgid "Origin" msgstr "Origine" -msgid "Diameter" -msgstr "Diamètre" - msgid "Size in X and Y of the rectangular plate." msgstr "Taille en X et Y du plateau rectangulaire." @@ -3059,6 +3785,9 @@ msgstr "Durée" msgid "Percent" msgstr "Pour cent" +msgid "Used filament" +msgstr "Filament utilisé" + msgid "Layer Height (mm)" msgstr "Hauteur de couche (mm)" @@ -3077,9 +3806,6 @@ msgstr "Température (°C)" msgid "Volumetric flow rate (mm³/s)" msgstr "Débit volumétrique (mm³/s)" -msgid "Used filament" -msgstr "Filament utilisé" - msgid "Travel" msgstr "Déplacement" @@ -6267,6 +6993,11 @@ msgstr "" "Distance Z supérieure nulle, espacement d'interface nul, motif concentrique " "et désactivation de la hauteur indépendante de la couche de support" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6287,8 +7018,8 @@ msgstr "Ignorer" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Lorsque vous enregistrez un timelapse sans tête d’outil, il est recommandé " "d’ajouter une \"Tour de nettoyage timelapse\".\n" @@ -6440,9 +7171,9 @@ msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate" msgstr "" -"Il s'agit de la température du plateau lorsque le plateau froid (\"Cool " -"plate\") est installé. Une valeur à 0 signifie que ce filament ne peut pas " -"être imprimé sur le plateau froid." +"Il s'agit de la température du plateau lorsque le plateau froid (\"Cool plate" +"\") est installé. Une valeur à 0 signifie que ce filament ne peut pas être " +"imprimé sur le plateau froid." msgid "Engineering plate" msgstr "Plaque Engineering" @@ -6956,9 +7687,8 @@ msgid "Flushing volumes for filament change" msgstr "Volumes de rinçage pour le changement de filament" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -7023,9 +7753,6 @@ msgstr "⌘+Maj+G" msgid "Ctrl+Shift+G" msgstr "Ctrl+Maj+G" -msgid "Copy to clipboard" -msgstr "Copier dans le presse-papier" - msgid "Paste from clipboard" msgstr "Coller depuis le presse-papier" @@ -7139,9 +7866,6 @@ msgstr "Maj+n'importe quelle flèche" msgid "Movement step set to 1 mm" msgstr "Pas du mouvement réglé sur 1 mm" -msgid "Esc" -msgstr "Échap" - msgid "keyboard 1-9: set filament for object/part" msgstr "clavier 1-9 : définir le filament pour l'objet/la pièce" @@ -7226,9 +7950,6 @@ msgstr "Définir le numéro d'extrudeuse pour les objets et les pièces" msgid "Delete objects, parts, modifiers " msgstr "Supprimer des objets, des pièces, des modificateurs " -msgid "Space" -msgstr "Espace" - msgid "Select the object/part and press space to change the name" msgstr "" "Sélectionnez l'objet/la pièce et appuyez sur espace pour changer le nom" @@ -7784,8 +8505,8 @@ msgstr "" msgid "The prime tower is not supported in \"By object\" print." msgstr "" -"La tour de nettoyage n'est pas prise en charge dans l'impression \"Par " -"objet\"." +"La tour de nettoyage n'est pas prise en charge dans l'impression \"Par objet" +"\"." msgid "" "The prime tower is not supported when adaptive layer height is on. It " @@ -8718,8 +9439,8 @@ msgid "" "thickness (top+bottom solid layers)" msgstr "" "Ajoutez du remplissage solide à proximité des surfaces inclinées pour " -"garantir l'épaisseur verticale de la coque (couches solides " -"supérieure+inférieure)." +"garantir l'épaisseur verticale de la coque (couches solides supérieure" +"+inférieure)." msgid "Top surface pattern" msgstr "Motif de surface supérieure" @@ -9538,10 +10259,10 @@ msgstr "Ventilateur à pleine vitesse à la couche" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La vitesse du ventilateur augmentera de manière linéaire à partir de zéro à " "la couche \"close_fan_the_first_x_layers\" jusqu’au maximum à la couche " @@ -9572,9 +10293,6 @@ msgstr "" "Gigue aléatoire lors de l'impression de la paroi, de sorte que la surface " "ait un aspect rugueux. Ce réglage contrôle la position irrégulière" -msgid "None" -msgstr "Aucun" - msgid "Contour" msgstr "Contour" @@ -10547,9 +11265,6 @@ msgstr "Rétracter lors de changement de couche" msgid "Force a retraction when changes layer" msgstr "Cela force une rétraction sur les changements de couche." -msgid "Length" -msgstr "Longueur" - msgid "Retraction Length" msgstr "Longueur de Rétraction" @@ -10764,6 +11479,21 @@ msgstr "" "fermée, un petit mouvement vers l’intérieur est exécuté avant que la buse ne " "quitte la boucle." +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "Vitesse d’essuyage" @@ -11564,9 +12294,6 @@ msgstr "Premier volume" msgid "The volume of material to prime extruder on tower." msgstr "Le volume de matériau à amorcer l'extrudeuse sur la tour." -msgid "Width" -msgstr "Largeur" - msgid "Width of prime tower" msgstr "Largeur de la tour de nettoyage." @@ -11744,14 +12471,9 @@ msgstr "Utiliser l’extrusion relative" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" -"L’extrusion relative est recommandée lors de l’utilisation de l’option " -"\"label_objects\". Certains extrudeurs fonctionnent mieux avec cette option " -"décochée (mode d’extrusion absolu). La tour d’essuyage n’est compatible " -"qu’avec le mode relatif. Il est toujours activé sur les imprimantes " -"BambuLab. La valeur par défaut est cochée" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -12278,9 +13000,9 @@ msgstr "" "Wiki.\n" "\n" "Habituellement, la calibration est inutile. Lorsque vous démarrez une " -"impression d'une seule couleur/matériau, avec l'option \"Calibration du " -"débit\" cochée dans le menu de démarrage de l'impression, l'imprimante " -"suivra l'ancienne méthode de calibration du filament avant l'impression.\n" +"impression d'une seule couleur/matériau, avec l'option \"Calibration du débit" +"\" cochée dans le menu de démarrage de l'impression, l'imprimante suivra " +"l'ancienne méthode de calibration du filament avant l'impression.\n" "Lorsque vous démarrez une impression multi-couleurs/matériaux, l'imprimante " "utilise le paramètre de compensation par défaut pour le filament lors de " "chaque changement de filament, ce qui donne un bon résultat dans la plupart " @@ -13061,8 +13783,8 @@ msgstr "" "Voulez-vous le réécrire ?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more prinetrs, Please go to printer selection" msgstr "" "Nous renommerions les préréglages en « Fournisseur Type Série @imprimante " @@ -13085,9 +13807,6 @@ msgstr "Créer depuis un modèle" msgid "Create Based on Current Printer" msgstr "Créer en fonction de l’imprimante actuelle" -msgid "wiki" -msgstr "" - msgid "Import Preset" msgstr "Importer un préréglage" @@ -13731,6 +14450,19 @@ msgstr "" "Saviez-vous qu’OrcaSlicer peut prendre en charge la filtration de l’air/le " "ventilateur d’extraction ?" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -13741,6 +14473,13 @@ msgstr "" "Saviez-vous qu’Orca Slicer offre une large gamme de raccourcis clavier et " "d’opérations sur les scènes 3D." +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -14039,6 +14778,52 @@ msgstr "" "déformer, tels que l’ABS, une augmentation appropriée de la température du " "plateau chauffant peut réduire la probabilité de déformation." +#~ msgid "" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unckecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" +#~ msgstr "" +#~ "L’extrusion relative est recommandée lors de l’utilisation de l’option " +#~ "\"label_objects\". Certains extrudeurs fonctionnent mieux avec cette " +#~ "option décochée (mode d’extrusion absolu). La tour d’essuyage n’est " +#~ "compatible qu’avec le mode relatif. Il est toujours activé sur les " +#~ "imprimantes BambuLab. La valeur par défaut est cochée" + +#~ msgid "Movement:" +#~ msgstr "Mouvement:" + +#~ msgid "Movement" +#~ msgstr "Mouvement" + +#~ msgid "Auto Segment" +#~ msgstr "Segmentation automatique" + +#~ msgid "Depth ratio" +#~ msgstr "Rapport de profondeur" + +#~ msgid "Prizm" +#~ msgstr "Prisme" + +#~ msgid "connector is out of cut contour" +#~ msgstr "connecteur est hors du contour de la coupe" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "connecteurs sont hors du contour de la coupe" + +#~ msgid "connector is out of object" +#~ msgstr "connecteur est hors de l'objet" + +#~ msgid "connectors is out of object" +#~ msgstr "connecteurs sont hors de l'objet" + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "État non valide. \n" +#~ "Aucune pièce n'est sélectionnée pour être conservée après la découpe" + #~ msgid "Recalculate" #~ msgstr "Recalculer" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 9f54d3942d..71801c6fce 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -212,6 +212,9 @@ msgstr "mm" msgid "Position" msgstr "Pozíció" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "Forgatás" @@ -251,6 +254,7 @@ msgstr "Világkoordináták" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "Méret" @@ -260,6 +264,113 @@ msgstr "%" msgid "uniform scale" msgstr "egységes méretarány" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "Auto" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "Plug" + +msgid "Dowel" +msgstr "Dowel" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "Frustum" + +msgid "Square" +msgstr "Square" + +msgid "Hexagon" +msgstr "Hexagon" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "Place on cut" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "Connectors" + +msgid "Type" +msgstr "Típus" + +msgid "Style" +msgstr "Stílus" + +msgid "Shape" +msgstr "Forma" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "Szélesség" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "Tárgy" + +msgid "Object" +msgstr "Objektum" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "Tolerance" + +msgid "Drag" +msgstr "Drag" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "Left click" @@ -272,9 +383,6 @@ msgstr "Right click" msgid "Remove connector" msgstr "Remove connector" -msgid "Drag" -msgstr "Drag" - msgid "Move connector" msgstr "Move connector" @@ -290,23 +398,51 @@ msgstr "Select all connectors" msgid "Cut" msgstr "Vágás" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -msgid "Repairing model object" -msgstr "Modell javítása" +msgid "Remove connectors" +msgstr "Remove connectors" -msgid "Connector" -msgstr "Connector" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "Mozgatás:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "Mozgás" +msgid "Space" +msgstr "Szóköz" -msgid "Height" -msgstr "Magasság" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "Confirm connectors" + +msgid "Cancel" +msgstr "Mégse" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "Visszaállítás" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "Edit connectors" @@ -314,6 +450,12 @@ msgstr "Edit connectors" msgid "Add connectors" msgstr "Add connectors" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "Upper part" @@ -323,9 +465,6 @@ msgstr "Lower part" msgid "Keep" msgstr "Keep" -msgid "Place on cut" -msgstr "Place on cut" - msgid "Flip" msgstr "Flip" @@ -335,87 +474,56 @@ msgstr "After cut" msgid "Cut to parts" msgstr "Részekre darabolás" -msgid "Auto Segment" -msgstr "Automatikus szegmentálás" - msgid "Perform cut" msgstr "Vágás" -msgid "Reset" -msgstr "Visszaállítás" - -msgid "Connectors" -msgstr "Connectors" - -msgid "Type" -msgstr "Típus" - -msgid "Style" -msgstr "Stílus" - -msgid "Shape" -msgstr "Forma" - -msgid "Depth ratio" -msgstr "Depth ratio" - -msgid "Remove connectors" -msgstr "Remove connectors" - -msgid "Prizm" -msgstr "Prizm" - -msgid "Frustum" -msgstr "Frustum" - -msgid "Square" -msgstr "Square" - -msgid "Hexagon" -msgstr "Hexagon" - -msgid "Confirm connectors" -msgstr "Confirm connectors" - -msgid "Cancel" -msgstr "Mégse" - msgid "Warning" msgstr "Figyelmeztetés" msgid "Invalid connectors detected" msgstr "Invalid connectors detected" -msgid "connector is out of cut contour" -msgstr "connector is out of cut contour" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" +msgstr[1] "" -msgid "connectors are out of cut contour" -msgstr "connectors are out of cut contour" - -msgid "connector is out of object" -msgstr "connector is out of object" - -msgid "connectors is out of object" -msgstr "Connectors must be on object surface." +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" +msgstr[1] "" msgid "Some connectors are overlapped" msgstr "Some connectors are overlapped" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"Invalid state. \n" -"No one part is selected to keep after cut" -msgid "Plug" -msgstr "Plug" +msgid "Cut plane is placed out of object" +msgstr "" -msgid "Dowel" -msgstr "Dowel" +msgid "Cut plane with groove is invalid" +msgstr "" -msgid "Tolerance" -msgstr "Tolerance" +msgid "Connector" +msgstr "Connector" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" + +msgid "Repairing model object" +msgstr "Modell javítása" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Háló neve" @@ -514,6 +622,8 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "Betűtípus" @@ -549,6 +659,655 @@ msgstr "Rotate text" msgid "Text shape" msgstr "Szöveg alakja" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "Haladó" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "Módosító" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "OK" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "Betöltés" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "Magasság" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "Tükrözés" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "Törlés" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Esc" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "Sehol" + +msgid "Diameter" +msgstr "Átmérő" + +msgid "Length" +msgstr "Hossz" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "Másolás a vágólapra" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -727,9 +1486,6 @@ msgstr "" msgid "Sync user presets" msgstr "" -msgid "Loading" -msgstr "Betöltés" - msgid "Loading user preset" msgstr "Felhasználói beállítás betöltése" @@ -760,9 +1516,6 @@ msgstr "Válassz egy G-code fájlt:" msgid "Import File" msgstr "Import File" -msgid "Delete" -msgstr "Törlés" - msgid "Choose files" msgstr "Fájlok kiválasztása" @@ -833,9 +1586,6 @@ msgstr "Törlés opciók" msgid "Bed adhension" msgstr "Asztalra tapadás" -msgid "Advanced" -msgstr "Haladó" - msgid "Add part" msgstr "Tárgy hozzáadása" @@ -920,9 +1670,6 @@ msgstr "" msgid "Text" msgstr "" -msgid "SVG" -msgstr "" - msgid "Height range Modifier" msgstr "Height Range Modifier" @@ -1051,9 +1798,6 @@ msgstr "Z-tengely mentén" msgid "Mirror along the Z axis" msgstr "Tükrözés a Z-tengely mentén" -msgid "Mirror" -msgstr "Tükrözés" - msgid "Mirror object" msgstr "Objektum tükrözése" @@ -1329,12 +2073,6 @@ msgstr "Height ranges" msgid "Settings for height range" msgstr "Settings for height range" -msgid "Object" -msgstr "Objektum" - -msgid "Part" -msgstr "Tárgy" - msgid "Layer" msgstr "Réteg" @@ -1360,9 +2098,6 @@ msgstr "Az utolsó tömör objektumrész típusa nem módosítható." msgid "Negative Part" msgstr "Negatív tárgy" -msgid "Modifier" -msgstr "Módosító" - msgid "Support Blocker" msgstr "Támasz blokkoló" @@ -1438,9 +2173,6 @@ msgstr "Kitöltési sűrűség (%)" msgid "Auto Brim" msgstr "Automatikus perem" -msgid "Auto" -msgstr "Auto" - msgid "Mouse ear" msgstr "" @@ -1516,9 +2248,6 @@ msgstr "Egyedi G-kód" msgid "Enter Custom G-code used on current layer:" msgstr "Add meg az aktuális rétegnél használandó egyedi G-kódot:" -msgid "OK" -msgstr "OK" - msgid "Jump to Layer" msgstr "Ugrás a rétegre" @@ -1573,15 +2302,15 @@ msgstr "Nincs nyomtató" msgid "..." msgstr "" -msgid "Failed to connect to the server" -msgstr "Nem sikerült csatlakozni a szerverhez" - msgid "Check the status of current system services" msgstr "Check the status of current system services" msgid "code" msgstr "code" +msgid "Failed to connect to the server" +msgstr "Nem sikerült csatlakozni a szerverhez" + msgid "Failed to connect to cloud service" msgstr "Failed to connect to cloud service" @@ -2416,9 +3145,6 @@ msgstr "" msgid "Origin" msgstr "Origó" -msgid "Diameter" -msgstr "Átmérő" - msgid "Size in X and Y of the rectangular plate." msgstr "A téglalap alakú tálca mérete X-ben és Y-ban." @@ -2968,6 +3694,9 @@ msgstr "Idő" msgid "Percent" msgstr "Százalék" +msgid "Used filament" +msgstr "Használt filament" + msgid "Layer Height (mm)" msgstr "Rétegmagasság (mm)" @@ -2986,9 +3715,6 @@ msgstr "Hőmérséklet (°C)" msgid "Volumetric flow rate (mm³/s)" msgstr "Térfogatáramlás (mm³/s)" -msgid "Used filament" -msgstr "Használt filament" - msgid "Travel" msgstr "Mozgás" @@ -6035,6 +6761,11 @@ msgstr "" "0 top z distance, 0 interface spacing, concentric pattern and disable " "independent support layer height" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6682,9 +7413,8 @@ msgid "Flushing volumes for filament change" msgstr "Filament csere tiszítási mennyisége" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -6746,9 +7476,6 @@ msgstr "⌘+Shift+G" msgid "Ctrl+Shift+G" msgstr "Ctrl+Shift+G" -msgid "Copy to clipboard" -msgstr "Másolás a vágólapra" - msgid "Paste from clipboard" msgstr "Beillesztés a vágólapról" @@ -6860,9 +7587,6 @@ msgstr "Shift+Bármelyik nyílgomb" msgid "Movement step set to 1 mm" msgstr "Mozgatás lépéstávolsága 1mm-re állítva" -msgid "Esc" -msgstr "Esc" - msgid "keyboard 1-9: set filament for object/part" msgstr "filament hozzárendelése az objektumhoz/tárgyhoz" @@ -6947,9 +7671,6 @@ msgstr "Extruder szám beállítása az objektumok és tárgyak számára" msgid "Delete objects, parts, modifiers " msgstr "Objektumok, tárgyak, módosítók törlése " -msgid "Space" -msgstr "Szóköz" - msgid "Select the object/part and press space to change the name" msgstr "" "Válaszd ki az objektumot/tárgyat, és nyomd meg a szóközt a név " @@ -9005,9 +9726,6 @@ msgstr "" "A nyomtató véletlenszerűen vibrál a fal nyomtatása közben, így a felület " "durva megjelenésű lesz" -msgid "None" -msgstr "Sehol" - msgid "Contour" msgstr "Contour" @@ -9831,9 +10549,6 @@ msgstr "Visszahúzás rétegváltáskor" msgid "Force a retraction when changes layer" msgstr "Kényszeríti a visszahúzást minden rétegváltáskor" -msgid "Length" -msgstr "Hossz" - msgid "Retraction Length" msgstr "Visszahúzás hossza" @@ -10015,6 +10730,21 @@ msgid "" "inward movement is executed before the extruder leaves the loop." msgstr "" +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "" @@ -10728,9 +11458,6 @@ msgstr "Tisztítási mennyiség" msgid "The volume of material to prime extruder on tower." msgstr "Ez az az anyagmennyiség, amelyet az extruder a toronyban ürít." -msgid "Width" -msgstr "Szélesség" - msgid "Width of prime tower" msgstr "Ez a törlő torony szélessége." @@ -10885,8 +11612,8 @@ msgstr "" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" msgid "" @@ -12043,9 +12770,6 @@ msgstr "" msgid "Create Based on Current Printer" msgstr "" -msgid "wiki" -msgstr "" - msgid "Import Preset" msgstr "" @@ -12580,6 +13304,19 @@ msgid "" "Did you know that OrcaSlicer can support Air filtration/Exhuast Fan?" msgstr "" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12587,6 +13324,13 @@ msgid "" "3D scene operations." msgstr "" +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -12851,6 +13595,40 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Movement:" +#~ msgstr "Mozgatás:" + +#~ msgid "Movement" +#~ msgstr "Mozgás" + +#~ msgid "Auto Segment" +#~ msgstr "Automatikus szegmentálás" + +#~ msgid "Depth ratio" +#~ msgstr "Depth ratio" + +#~ msgid "Prizm" +#~ msgstr "Prizm" + +#~ msgid "connector is out of cut contour" +#~ msgstr "connector is out of cut contour" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "connectors are out of cut contour" + +#~ msgid "connector is out of object" +#~ msgstr "connector is out of object" + +#~ msgid "connectors is out of object" +#~ msgstr "Connectors must be on object surface." + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "Invalid state. \n" +#~ "No one part is selected to keep after cut" + #~ msgid "Edit Text" #~ msgstr "Edit Text" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 4be4aa3dce..d332fbad67 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -216,6 +216,9 @@ msgstr "mm" msgid "Position" msgstr "Posizione" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "Rotazione" @@ -255,6 +258,7 @@ msgstr "Coordinate reali" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "Dimensioni" @@ -264,6 +268,113 @@ msgstr "%" msgid "uniform scale" msgstr "Scala uniforme" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "Auto" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "Connettore" + +msgid "Dowel" +msgstr "Tassello" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "Tronco" + +msgid "Square" +msgstr "Quadrato" + +msgid "Hexagon" +msgstr "Esagono" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "Posiziona sul taglio" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "Connettori" + +msgid "Type" +msgstr "Tipo" + +msgid "Style" +msgstr "Stile" + +msgid "Shape" +msgstr "Forma" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "Larghezza" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "Parte" + +msgid "Object" +msgstr "Oggetto" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "Tolleranza" + +msgid "Drag" +msgstr "Trascina" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "Click sinistro" @@ -276,9 +387,6 @@ msgstr "Clic destro" msgid "Remove connector" msgstr "Rimuovi connettore" -msgid "Drag" -msgstr "Trascina" - msgid "Move connector" msgstr "Sposta connettore" @@ -294,23 +402,51 @@ msgstr "Seleziona tutti i connettori" msgid "Cut" msgstr "Taglia" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -msgid "Repairing model object" -msgstr "Riparazione oggetto" +msgid "Remove connectors" +msgstr "Rimuovi connettori" -msgid "Connector" -msgstr "Connettore" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "Movement:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "Movimento" +msgid "Space" +msgstr "Spazio" -msgid "Height" -msgstr "Altezza" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "Conferma connettori" + +msgid "Cancel" +msgstr "Annulla" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "Reimposta" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "Modifica connettori" @@ -318,6 +454,12 @@ msgstr "Modifica connettori" msgid "Add connectors" msgstr "Aggiungi connettori" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "Parte superiore" @@ -327,9 +469,6 @@ msgstr "Parte inferiore" msgid "Keep" msgstr "Mantieni" -msgid "Place on cut" -msgstr "Posiziona sul taglio" - msgid "Flip" msgstr "Ribalta" @@ -339,87 +478,56 @@ msgstr "Dopo il taglio" msgid "Cut to parts" msgstr "Taglia le parti" -msgid "Auto Segment" -msgstr "Segmento automatico" - msgid "Perform cut" msgstr "Effettua taglio" -msgid "Reset" -msgstr "Reimposta" - -msgid "Connectors" -msgstr "Connettori" - -msgid "Type" -msgstr "Tipo" - -msgid "Style" -msgstr "Stile" - -msgid "Shape" -msgstr "Forma" - -msgid "Depth ratio" -msgstr "Rapporto di profondità" - -msgid "Remove connectors" -msgstr "Rimuovi connettori" - -msgid "Prizm" -msgstr "Prizm" - -msgid "Frustum" -msgstr "Tronco" - -msgid "Square" -msgstr "Quadrato" - -msgid "Hexagon" -msgstr "Esagono" - -msgid "Confirm connectors" -msgstr "Conferma connettori" - -msgid "Cancel" -msgstr "Annulla" - msgid "Warning" msgstr "Attenzione" msgid "Invalid connectors detected" msgstr "Rilevati connettori non validi" -msgid "connector is out of cut contour" -msgstr "Connettore fuori dal contorno" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" +msgstr[1] "" -msgid "connectors are out of cut contour" -msgstr "Connettori fuori dal contorno" - -msgid "connector is out of object" -msgstr "Connettore fuori dall'oggetto" - -msgid "connectors is out of object" -msgstr "I connettori devono trovarsi sulla superficie dell'oggetto." +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" +msgstr[1] "" msgid "Some connectors are overlapped" msgstr "Alcuni connettori si sovrappongono" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"Stato non valido.\n" -"Non è stata selezionata alcuna parte da conservare dopo il taglio" -msgid "Plug" +msgid "Cut plane is placed out of object" +msgstr "" + +msgid "Cut plane with groove is invalid" +msgstr "" + +msgid "Connector" msgstr "Connettore" -msgid "Dowel" -msgstr "Tassello" +msgid "Cut by Plane" +msgstr "" -msgid "Tolerance" -msgstr "Tolleranza" +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" + +msgid "Repairing model object" +msgstr "Riparazione oggetto" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Nome mesh" @@ -517,6 +625,8 @@ msgstr "Chiusura Pittura Giunzione" msgid "Paint-on seam editing" msgstr "Modifica Pittura Giunzione" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "Font" @@ -552,6 +662,655 @@ msgstr "Ruota testo" msgid "Text shape" msgstr "Formato testo" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "Avanzate" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "Modificatore" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "OK" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "Caricamento" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "Altezza" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "SVG" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "Specchia" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "Elimina" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Esc" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "Nessuno" + +msgid "Diameter" +msgstr "Diametro" + +msgid "Length" +msgstr "Lunghezza" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "Copia negli appunti" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -745,9 +1504,6 @@ msgstr "" msgid "Sync user presets" msgstr "Sincronizzare le preset dell'utente" -msgid "Loading" -msgstr "Caricamento" - msgid "Loading user preset" msgstr "Caricamento del preset utente" @@ -778,9 +1534,6 @@ msgstr "Seleziona file G-code:" msgid "Import File" msgstr "Importa File…" -msgid "Delete" -msgstr "Elimina" - msgid "Choose files" msgstr "Scegli file" @@ -851,9 +1604,6 @@ msgstr "Opzioni pulitura" msgid "Bed adhension" msgstr "Adesione al piano" -msgid "Advanced" -msgstr "Avanzate" - msgid "Add part" msgstr "Aggiungi parte" @@ -938,9 +1688,6 @@ msgstr "" msgid "Text" msgstr "Testo" -msgid "SVG" -msgstr "SVG" - msgid "Height range Modifier" msgstr "Modifica intervallo di altezza" @@ -1068,9 +1815,6 @@ msgstr "Lungo l'asse Z" msgid "Mirror along the Z axis" msgstr "Specchia lungo l'asse Z" -msgid "Mirror" -msgstr "Specchia" - msgid "Mirror object" msgstr "Specchia Oggetto" @@ -1349,12 +2093,6 @@ msgstr "Intervalli di altezza" msgid "Settings for height range" msgstr "Impostazioni intervallo altezza" -msgid "Object" -msgstr "Oggetto" - -msgid "Part" -msgstr "Parte" - msgid "Layer" msgstr "Layer" @@ -1381,9 +2119,6 @@ msgstr "" msgid "Negative Part" msgstr "Parte negativa" -msgid "Modifier" -msgstr "Modificatore" - msgid "Support Blocker" msgstr "Blocco Supporto" @@ -1458,9 +2193,6 @@ msgstr "Densità riempimento (%)" msgid "Auto Brim" msgstr "Auto Brim" -msgid "Auto" -msgstr "Auto" - msgid "Mouse ear" msgstr "Orecchio di topo" @@ -1536,9 +2268,6 @@ msgstr "G-code personalizzato" msgid "Enter Custom G-code used on current layer:" msgstr "Inserisci G-code personalizzato utilizzato nel layer corrente:" -msgid "OK" -msgstr "OK" - msgid "Jump to Layer" msgstr "Vai al layer" @@ -1594,15 +2323,15 @@ msgstr "Nessuna stampante" msgid "..." msgstr "..." -msgid "Failed to connect to the server" -msgstr "Connessione al server non riuscita" - msgid "Check the status of current system services" msgstr "Verifica lo stato attuale dei servizi di sistema." msgid "code" msgstr "Codice" +msgid "Failed to connect to the server" +msgstr "Connessione al server non riuscita" + msgid "Failed to connect to cloud service" msgstr "Connessione al servizio cloud non riuscita" @@ -2459,9 +3188,6 @@ msgstr "" msgid "Origin" msgstr "Origine" -msgid "Diameter" -msgstr "Diametro" - msgid "Size in X and Y of the rectangular plate." msgstr "Dimensioni X e Y del piano rettangolare." @@ -3035,6 +3761,9 @@ msgstr "Tempo" msgid "Percent" msgstr "Percentuale" +msgid "Used filament" +msgstr "Filamento usato" + msgid "Layer Height (mm)" msgstr "Altezza layer (mm)" @@ -3053,9 +3782,6 @@ msgstr "Temperatura (°C)" msgid "Volumetric flow rate (mm³/s)" msgstr "Flusso volumetrico (mm³/s)" -msgid "Used filament" -msgstr "Filamento usato" - msgid "Travel" msgstr "Spostamento" @@ -6197,6 +6923,11 @@ msgstr "" "0 distanza z superiore , 0 spaziatura interfaccia, trama concentrico e " "disabilita altezza layer di supporto indipendente" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6874,13 +7605,12 @@ msgid "Flushing volumes for filament change" msgstr "Volumi di spurgo per il cambio filamento" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" -"Studio ricalcolava i volumi di spurgo ogni volta che il colore dei filamenti " +"Orca ricalcolava i volumi di spurgo ogni volta che il colore dei filamenti " "cambiava. È possibile disabilitare il calcolo automatico nelle preferenze > " -"di Bambu Studio" +"di Orca Slicer" msgid "Flushing volume (mm³) for each filament pair." msgstr "Volume di spurgo (mm³) per ogni coppia di filamento." @@ -6943,9 +7673,6 @@ msgstr "⌘+Shift+G" msgid "Ctrl+Shift+G" msgstr "Ctrl+Shift+G" -msgid "Copy to clipboard" -msgstr "Copia negli appunti" - msgid "Paste from clipboard" msgstr "Incolla dagli appunti" @@ -7059,9 +7786,6 @@ msgstr "Shift+freccia qualsiasi" msgid "Movement step set to 1 mm" msgstr "Passo movimento impostato a 1 mm" -msgid "Esc" -msgstr "Esc" - msgid "keyboard 1-9: set filament for object/part" msgstr "Tastiera 1-9: imposta il filamento per l'oggetto/la parte" @@ -7146,9 +7870,6 @@ msgstr "Imposta il numero estrusore per gli oggetti e le parti" msgid "Delete objects, parts, modifiers " msgstr "Eliminare oggetti, parti, modificatori " -msgid "Space" -msgstr "Spazio" - msgid "Select the object/part and press space to change the name" msgstr "" "Seleziona l'oggetto/la parte e premi la barra spaziatrice per cambiare il " @@ -9474,9 +10195,6 @@ msgstr "" "stampa su pareti, in modo che la superficie abbia un aspetto ruvido. Questa " "impostazione controlla la posizione fuzzy Skin." -msgid "None" -msgstr "Nessuno" - msgid "Contour" msgstr "Contorno" @@ -10429,9 +11147,6 @@ msgstr "Ritrai al cambio layer" msgid "Force a retraction when changes layer" msgstr "Questo forza una retrazione nei cambi layer." -msgid "Length" -msgstr "Lunghezza" - msgid "Retraction Length" msgstr "Lunghezza Retrazione" @@ -10646,6 +11361,21 @@ msgstr "" "anello chiuso, viene eseguito un piccolo movimento verso l'interno prima che " "l'estrusore lasci l'anello." +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "Velocità di pulizia" @@ -11444,9 +12174,6 @@ msgstr "Volume primario" msgid "The volume of material to prime extruder on tower." msgstr "E' il volume materiale da usare per la Prime Tower" -msgid "Width" -msgstr "Larghezza" - msgid "Width of prime tower" msgstr "È la larghezza della Prime Tower." @@ -11625,14 +12352,9 @@ msgstr "Usa distanze E relative" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" -"L'estrusione relativa è consigliata quando si utilizza l'opzione " -"\"label_objects\". Alcuni estrusori funzionano meglio con questa opzione " -"unckecked (modalità di estrusione assoluta). La torre di pulizia è " -"compatibile solo con la modalità relativa. È sempre abilitato sulle " -"stampanti BambuLab. Il valore predefinito è selezionato" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -12952,11 +13674,6 @@ msgstr "Crea da modello" msgid "Create Based on Current Printer" msgstr "Crea in base alla stampante corrente" -msgid "wiki" -msgstr "" -"Darò i comandi per far funzionare EPEL su RHEL 8, ma se sei su RHEL 6 o RHEL " -"7 puoi trovare quelle istruzioni sul wiki." - msgid "Import Preset" msgstr "Importa Preset" @@ -13597,6 +14314,19 @@ msgstr "" "Filtrazione dell'aria/ventilatore di scarico\n" "Sapevi che OrcaSlicer può supportare la filtrazione dell'aria/Exhuast Fan?" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -13607,6 +14337,13 @@ msgstr "" "Sapevi che Orca Slicer offre un'ampia gamma di scorciatoie da tastiera e " "operazioni di scena 3D." +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -13899,6 +14636,57 @@ msgstr "" "aumentare in modo appropriato la temperatura del piano riscaldato può " "ridurre la probabilità di deformazione." +#~ msgid "wiki" +#~ msgstr "" +#~ "Darò i comandi per far funzionare EPEL su RHEL 8, ma se sei su RHEL 6 o " +#~ "RHEL 7 puoi trovare quelle istruzioni sul wiki." + +#~ msgid "" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unckecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" +#~ msgstr "" +#~ "L'estrusione relativa è consigliata quando si utilizza l'opzione " +#~ "\"label_objects\". Alcuni estrusori funzionano meglio con questa opzione " +#~ "unckecked (modalità di estrusione assoluta). La torre di pulizia è " +#~ "compatibile solo con la modalità relativa. È sempre abilitato sulle " +#~ "stampanti BambuLab. Il valore predefinito è selezionato" + +#~ msgid "Movement:" +#~ msgstr "Movement:" + +#~ msgid "Movement" +#~ msgstr "Movimento" + +#~ msgid "Auto Segment" +#~ msgstr "Segmento automatico" + +#~ msgid "Depth ratio" +#~ msgstr "Rapporto di profondità" + +#~ msgid "Prizm" +#~ msgstr "Prizm" + +#~ msgid "connector is out of cut contour" +#~ msgstr "Connettore fuori dal contorno" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "Connettori fuori dal contorno" + +#~ msgid "connector is out of object" +#~ msgstr "Connettore fuori dall'oggetto" + +#~ msgid "connectors is out of object" +#~ msgstr "I connettori devono trovarsi sulla superficie dell'oggetto." + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "Stato non valido.\n" +#~ "Non è stata selezionata alcuna parte da conservare dopo il taglio" + #~ msgid "Recalculate" #~ msgstr "Ricalcola" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 12ccffce9e..b9f80d6263 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -214,6 +214,9 @@ msgstr "mm" msgid "Position" msgstr "位置" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "回転" @@ -253,6 +256,7 @@ msgstr "空間座標" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "サイズ" @@ -262,6 +266,113 @@ msgstr "%" msgid "uniform scale" msgstr "スケール" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "自動" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "Plug" + +msgid "Dowel" +msgstr "Dowel" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "Frustum" + +msgid "Square" +msgstr "Square" + +msgid "Hexagon" +msgstr "Hexagon" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "Place on cut" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "Connectors" + +msgid "Type" +msgstr "タイプ" + +msgid "Style" +msgstr "スタイル" + +msgid "Shape" +msgstr "形状" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "幅" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "パーツ" + +msgid "Object" +msgstr "OBJ" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "Tolerance" + +msgid "Drag" +msgstr "Drag" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "Left click" @@ -274,9 +385,6 @@ msgstr "Right click" msgid "Remove connector" msgstr "Remove connector" -msgid "Drag" -msgstr "Drag" - msgid "Move connector" msgstr "Move connector" @@ -292,23 +400,51 @@ msgstr "Select all connectors" msgid "Cut" msgstr "カット" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -msgid "Repairing model object" -msgstr "モデルオブジェクトを修復" +msgid "Remove connectors" +msgstr "Remove connectors" -msgid "Connector" -msgstr "Connector" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "移動" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "移動" +msgid "Space" +msgstr "スペース" -msgid "Height" -msgstr "高度" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "Confirm connectors" + +msgid "Cancel" +msgstr "取消し" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "リセット" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "Edit connectors" @@ -316,6 +452,12 @@ msgstr "Edit connectors" msgid "Add connectors" msgstr "Add connectors" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "Upper part" @@ -325,9 +467,6 @@ msgstr "Lower part" msgid "Keep" msgstr "Keep" -msgid "Place on cut" -msgstr "Place on cut" - msgid "Flip" msgstr "Flip" @@ -337,87 +476,54 @@ msgstr "After cut" msgid "Cut to parts" msgstr "パーツに割り切る" -msgid "Auto Segment" -msgstr "自動分割" - msgid "Perform cut" msgstr "カットを実行" -msgid "Reset" -msgstr "リセット" - -msgid "Connectors" -msgstr "Connectors" - -msgid "Type" -msgstr "タイプ" - -msgid "Style" -msgstr "スタイル" - -msgid "Shape" -msgstr "形状" - -msgid "Depth ratio" -msgstr "Depth ratio" - -msgid "Remove connectors" -msgstr "Remove connectors" - -msgid "Prizm" -msgstr "Prizm" - -msgid "Frustum" -msgstr "Frustum" - -msgid "Square" -msgstr "Square" - -msgid "Hexagon" -msgstr "Hexagon" - -msgid "Confirm connectors" -msgstr "Confirm connectors" - -msgid "Cancel" -msgstr "取消し" - msgid "Warning" msgstr "警告" msgid "Invalid connectors detected" msgstr "Invalid connectors detected" -msgid "connector is out of cut contour" -msgstr "connector is out of cut contour" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" -msgid "connectors are out of cut contour" -msgstr "connectors are out of cut contour" - -msgid "connector is out of object" -msgstr "connector is out of object" - -msgid "connectors is out of object" -msgstr "Connectors must be on object surface." +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" msgid "Some connectors are overlapped" msgstr "Some connectors are overlapped" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"Invalid state. \n" -"No one part is selected to keep after cut" -msgid "Plug" -msgstr "Plug" +msgid "Cut plane is placed out of object" +msgstr "" -msgid "Dowel" -msgstr "Dowel" +msgid "Cut plane with groove is invalid" +msgstr "" -msgid "Tolerance" -msgstr "Tolerance" +msgid "Connector" +msgstr "Connector" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" + +msgid "Repairing model object" +msgstr "モデルオブジェクトを修復" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "メッシュ名" @@ -513,6 +619,8 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "フォント" @@ -548,6 +656,655 @@ msgstr "Rotate text" msgid "Text shape" msgstr "文字形状" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "高度な設定" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "モディファイア" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "OK" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "ロード中" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "高度" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "反転" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "削除" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Esc" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "無し" + +msgid "Diameter" +msgstr "直径" + +msgid "Length" +msgstr "長さ" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "コピー" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -719,9 +1476,6 @@ msgstr "" msgid "Sync user presets" msgstr "" -msgid "Loading" -msgstr "ロード中" - msgid "Loading user preset" msgstr "ユーザープリセットを読込み中" @@ -752,9 +1506,6 @@ msgstr "G-codeファイルを選択" msgid "Import File" msgstr "Import File" -msgid "Delete" -msgstr "削除" - msgid "Choose files" msgstr "ファイルを選択" @@ -825,9 +1576,6 @@ msgstr "拭き上げ設定" msgid "Bed adhension" msgstr "ベッド接着" -msgid "Advanced" -msgstr "高度な設定" - msgid "Add part" msgstr "パーツを追加" @@ -912,9 +1660,6 @@ msgstr "" msgid "Text" msgstr "" -msgid "SVG" -msgstr "" - msgid "Height range Modifier" msgstr "Height Range Modifier" @@ -1042,9 +1787,6 @@ msgstr "Z軸方向" msgid "Mirror along the Z axis" msgstr "反転 (Z軸)" -msgid "Mirror" -msgstr "反転" - msgid "Mirror object" msgstr "オブジェクトを反転" @@ -1308,12 +2050,6 @@ msgstr "Height ranges" msgid "Settings for height range" msgstr "Settings for height range" -msgid "Object" -msgstr "OBJ" - -msgid "Part" -msgstr "パーツ" - msgid "Layer" msgstr "積層" @@ -1338,9 +2074,6 @@ msgstr "オブジェクトの最後のパーツはタイプを変更できませ msgid "Negative Part" msgstr "マイナスパーツ" -msgid "Modifier" -msgstr "モディファイア" - msgid "Support Blocker" msgstr "サポート除去器" @@ -1412,9 +2145,6 @@ msgstr "インフィル密度 (%)" msgid "Auto Brim" msgstr "オートブリム" -msgid "Auto" -msgstr "自動" - msgid "Mouse ear" msgstr "" @@ -1490,9 +2220,6 @@ msgstr "カスタム G-code" msgid "Enter Custom G-code used on current layer:" msgstr "現在の積層にカスタムG-codeを追加" -msgid "OK" -msgstr "OK" - msgid "Jump to Layer" msgstr "積層に移動" @@ -1547,15 +2274,15 @@ msgstr "プリンタ無し" msgid "..." msgstr "" -msgid "Failed to connect to the server" -msgstr "サーバーに接続できませんでした" - msgid "Check the status of current system services" msgstr "Check the status of current system services" msgid "code" msgstr "code" +msgid "Failed to connect to the server" +msgstr "サーバーに接続できませんでした" + msgid "Failed to connect to cloud service" msgstr "Failed to connect to cloud service" @@ -2354,9 +3081,6 @@ msgstr "" msgid "Origin" msgstr "原点" -msgid "Diameter" -msgstr "直径" - msgid "Size in X and Y of the rectangular plate." msgstr "プレート上のサイズ" @@ -2886,6 +3610,9 @@ msgstr "時間" msgid "Percent" msgstr "%" +msgid "Used filament" +msgstr "フィラメント使用量" + msgid "Layer Height (mm)" msgstr "積層ピッチ(mm)" @@ -2904,9 +3631,6 @@ msgstr "温度 (°C)" msgid "Volumetric flow rate (mm³/s)" msgstr "流量 (mm³/s)" -msgid "Used filament" -msgstr "フィラメント使用量" - msgid "Travel" msgstr "移動" @@ -5889,6 +6613,11 @@ msgstr "" "0 top z distance, 0 interface spacing, concentric pattern and disable " "independent support layer height" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6509,9 +7238,8 @@ msgid "Flushing volumes for filament change" msgstr "フィラメントを入替える為のフラッシュ量" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -6573,9 +7301,6 @@ msgstr "⌘+Shift+G" msgid "Ctrl+Shift+G" msgstr "Ctrl+Shift+G" -msgid "Copy to clipboard" -msgstr "コピー" - msgid "Paste from clipboard" msgstr "貼り付け" @@ -6684,9 +7409,6 @@ msgstr "Shift + ↑↓←→" msgid "Movement step set to 1 mm" msgstr "移動ステップを1mmに設定" -msgid "Esc" -msgstr "Esc" - msgid "keyboard 1-9: set filament for object/part" msgstr "キー1-9: オブジェクト/パーツのフィラメントを設定" @@ -6771,9 +7493,6 @@ msgstr "オブジェクトとパーツ造形用の押出機番号を設定" msgid "Delete objects, parts, modifiers " msgstr "オブジェクト、パーツ、モディファイヤを削除" -msgid "Space" -msgstr "スペース" - msgid "Select the object/part and press space to change the name" msgstr "オブジェクト/パーツを選択し、名前を変更します" @@ -8728,9 +9447,6 @@ msgstr "" "この設定により、壁面を造形時にノズルがランダムで軽微な振動を加えます。これに" "より、表面にザラザラ感が出来上がります。" -msgid "None" -msgstr "無し" - msgid "Contour" msgstr "Contour" @@ -9522,9 +10238,6 @@ msgstr "積層変更時のリトラクション" msgid "Force a retraction when changes layer" msgstr "この設定により、積層を変更時にリトラクションを実行します。" -msgid "Length" -msgstr "長さ" - msgid "Retraction Length" msgstr "リトラクション長さ" @@ -9703,6 +10416,21 @@ msgid "" "inward movement is executed before the extruder leaves the loop." msgstr "" +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "" @@ -10373,9 +11101,6 @@ msgstr "プライム量" msgid "The volume of material to prime extruder on tower." msgstr "フィラメントのフラッシュ量です。" -msgid "Width" -msgstr "幅" - msgid "Width of prime tower" msgstr "プライムタワーの幅です。" @@ -10522,8 +11247,8 @@ msgstr "" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" msgid "" @@ -11672,9 +12397,6 @@ msgstr "" msgid "Create Based on Current Printer" msgstr "" -msgid "wiki" -msgstr "" - msgid "Import Preset" msgstr "" @@ -12208,6 +12930,19 @@ msgid "" "Did you know that OrcaSlicer can support Air filtration/Exhuast Fan?" msgstr "" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12215,6 +12950,13 @@ msgid "" "3D scene operations." msgstr "" +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -12458,6 +13200,40 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Movement:" +#~ msgstr "移動" + +#~ msgid "Movement" +#~ msgstr "移動" + +#~ msgid "Auto Segment" +#~ msgstr "自動分割" + +#~ msgid "Depth ratio" +#~ msgstr "Depth ratio" + +#~ msgid "Prizm" +#~ msgstr "Prizm" + +#~ msgid "connector is out of cut contour" +#~ msgstr "connector is out of cut contour" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "connectors are out of cut contour" + +#~ msgid "connector is out of object" +#~ msgstr "connector is out of object" + +#~ msgid "connectors is out of object" +#~ msgstr "Connectors must be on object surface." + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "Invalid state. \n" +#~ "No one part is selected to keep after cut" + #~ msgid "Edit Text" #~ msgstr "Edit Text" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 0eb74d19fb..6bc68edf0e 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: 2023-12-25 12:35+0900\n" "Last-Translator: Hotsolidinfill <138652683+Hotsolidinfill@users.noreply." "github.com>, crwusiz \n" @@ -221,6 +221,9 @@ msgstr "밀리미터" msgid "Position" msgstr "위치" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "회전" @@ -260,6 +263,7 @@ msgstr "영역 좌표" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "크기" @@ -269,6 +273,113 @@ msgstr "%" msgid "uniform scale" msgstr "균일 배율" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "자동" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "플러그" + +msgid "Dowel" +msgstr "맞춤핀" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "원뿔" + +msgid "Square" +msgstr "사각형" + +msgid "Hexagon" +msgstr "육각형" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "자른 위치에 놓기" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "커넥터" + +msgid "Type" +msgstr "유형" + +msgid "Style" +msgstr "모양" + +msgid "Shape" +msgstr "형태" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "너비" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "부품" + +msgid "Object" +msgstr "개체" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "공차" + +msgid "Drag" +msgstr "드래그" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "좌 클릭" @@ -281,9 +392,6 @@ msgstr "우 클릭" msgid "Remove connector" msgstr "커넥터 제거" -msgid "Drag" -msgstr "드래그" - msgid "Move connector" msgstr "커넥터 이동" @@ -299,24 +407,51 @@ msgstr "모든 커넥터 선택" msgid "Cut" msgstr "잘라내기" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -"절단 도구로 인해 메인폴드가 아닌 가장자리가 발생했는데 지금 수정하시겠습니까?" -msgid "Repairing model object" -msgstr "모델 개체 수리 중" +msgid "Remove connectors" +msgstr "커넥터 제거" -msgid "Connector" -msgstr "커넥터" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "이동:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "이동" +msgid "Space" +msgstr "스페이스" -msgid "Height" -msgstr "높이" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "커넥터 승인" + +msgid "Cancel" +msgstr "취소" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "초기화" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "커넥터 편집" @@ -324,6 +459,12 @@ msgstr "커넥터 편집" msgid "Add connectors" msgstr "커넥터 추가" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "상부 부품" @@ -333,9 +474,6 @@ msgstr "하부 부품" msgid "Keep" msgstr "유지" -msgid "Place on cut" -msgstr "자른 위치에 놓기" - msgid "Flip" msgstr "뒤집기" @@ -345,87 +483,55 @@ msgstr "잘라내기 후" msgid "Cut to parts" msgstr "부품으로 자르기" -msgid "Auto Segment" -msgstr "자동 분할" - msgid "Perform cut" msgstr "잘라내기 실행" -msgid "Reset" -msgstr "초기화" - -msgid "Connectors" -msgstr "커넥터" - -msgid "Type" -msgstr "유형" - -msgid "Style" -msgstr "모양" - -msgid "Shape" -msgstr "형태" - -msgid "Depth ratio" -msgstr "깊이 비율" - -msgid "Remove connectors" -msgstr "커넥터 제거" - -msgid "Prizm" -msgstr "원기둥" - -msgid "Frustum" -msgstr "원뿔" - -msgid "Square" -msgstr "사각형" - -msgid "Hexagon" -msgstr "육각형" - -msgid "Confirm connectors" -msgstr "커넥터 승인" - -msgid "Cancel" -msgstr "취소" - msgid "Warning" msgstr "경고" msgid "Invalid connectors detected" msgstr "잘못된 커넥터가 감지됨" -msgid "connector is out of cut contour" -msgstr "커넥터가 잘라내기 윤곽을 벗어났습니다" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" -msgid "connectors are out of cut contour" -msgstr "커넥터가 잘라내기 윤곽을 벗어났습니다" - -msgid "connector is out of object" -msgstr "커넥터가 개체에서 벗어났습니다" - -msgid "connectors is out of object" -msgstr "커넥터가 개체에서 벗어났습니다" +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" msgid "Some connectors are overlapped" msgstr "일부 커넥터가 겹칩니다" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"잘못된 상태입니다.\n" -"절단 후 유지를 위해 선택된 부품이 없습니다" -msgid "Plug" -msgstr "플러그" +msgid "Cut plane is placed out of object" +msgstr "" -msgid "Dowel" -msgstr "맞춤핀" +msgid "Cut plane with groove is invalid" +msgstr "" -msgid "Tolerance" -msgstr "공차" +msgid "Connector" +msgstr "커넥터" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" +"절단 도구로 인해 메인폴드가 아닌 가장자리가 발생했는데 지금 수정하시겠습니까?" + +msgid "Repairing model object" +msgstr "모델 개체 수리 중" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "메쉬 이름" @@ -521,6 +627,8 @@ msgstr "솔기 칠하기 떠나기" msgid "Paint-on seam editing" msgstr "페인트칠 솔기 편집" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "글꼴" @@ -558,6 +666,655 @@ msgstr "텍스트 회전" msgid "Text shape" msgstr "텍스트 모양" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "고급" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "수정자" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "확인" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "로드 중" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "높이" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "SVG" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "반전" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "삭제" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Esc" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "없음" + +msgid "Diameter" +msgstr "직경" + +msgid "Length" +msgstr "길이" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "클립보드로 복사" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -745,9 +1502,6 @@ msgstr "" msgid "Sync user presets" msgstr "사용자 사전 설정 동기화" -msgid "Loading" -msgstr "로드 중" - msgid "Loading user preset" msgstr "사용자 사전 설정 로드 중" @@ -778,9 +1532,6 @@ msgstr "G코드 파일 선택:" msgid "Import File" msgstr "파일 가져오기" -msgid "Delete" -msgstr "삭제" - msgid "Choose files" msgstr "파일 선택" @@ -851,9 +1602,6 @@ msgstr "닦기 옵션" msgid "Bed adhension" msgstr "베드 안착" -msgid "Advanced" -msgstr "고급" - msgid "Add part" msgstr "부품 추가" @@ -939,9 +1687,6 @@ msgstr "스탠포드 버니" msgid "Text" msgstr "텍스트" -msgid "SVG" -msgstr "SVG" - msgid "Height range Modifier" msgstr "높이 범위 수정자" @@ -1069,9 +1814,6 @@ msgstr "Z축" msgid "Mirror along the Z axis" msgstr "Z축을 따라 반전" -msgid "Mirror" -msgstr "반전" - msgid "Mirror object" msgstr "개체 반전" @@ -1334,12 +2076,6 @@ msgstr "높이 범위" msgid "Settings for height range" msgstr "높이 범위 설정" -msgid "Object" -msgstr "개체" - -msgid "Part" -msgstr "부품" - msgid "Layer" msgstr "레이어" @@ -1363,9 +2099,6 @@ msgstr "마지막 꽉찬 개체 부품의 유형은 변경되지 않습니다." msgid "Negative Part" msgstr "비우기 부품" -msgid "Modifier" -msgstr "수정자" - msgid "Support Blocker" msgstr "지지대 차단기" @@ -1437,9 +2170,6 @@ msgstr "채우기 밀도(%)" msgid "Auto Brim" msgstr "자동 브림" -msgid "Auto" -msgstr "자동" - msgid "Mouse ear" msgstr "생쥐 귀" @@ -1515,9 +2245,6 @@ msgstr "사용자 정의 G코드" msgid "Enter Custom G-code used on current layer:" msgstr "현재 레이어에 사용될 사용자 정의 G코드 입력:" -msgid "OK" -msgstr "확인" - msgid "Jump to Layer" msgstr "다음 레이어로 이동" @@ -1572,15 +2299,15 @@ msgstr "프린터 없음" msgid "..." msgstr "..." -msgid "Failed to connect to the server" -msgstr "서버 연결 실패" - msgid "Check the status of current system services" msgstr "현재 시스템 서비스 상태 확인" msgid "code" msgstr "코드" +msgid "Failed to connect to the server" +msgstr "서버 연결 실패" + msgid "Failed to connect to cloud service" msgstr "클라우드 서비스에 연결하지 못했습니다" @@ -2397,9 +3124,6 @@ msgstr "%1%로 업로드 예약 중. 윈도우 -> 호스트 업로드 출력 대 msgid "Origin" msgstr "원점" -msgid "Diameter" -msgstr "직경" - msgid "Size in X and Y of the rectangular plate." msgstr "직사각형 플레이트의 X 및 Y 크기." @@ -2956,6 +3680,9 @@ msgstr "시간" msgid "Percent" msgstr "퍼센트" +msgid "Used filament" +msgstr "사용된 필라멘트" + msgid "Layer Height (mm)" msgstr "레이어 높이(mm)" @@ -2974,9 +3701,6 @@ msgstr "온도 (°C)" msgid "Volumetric flow rate (mm³/s)" msgstr "체적 유량 (mm³/s)" -msgid "Used filament" -msgstr "사용된 필라멘트" - msgid "Travel" msgstr "이동" @@ -6021,6 +6745,11 @@ msgstr "" "지지대 접점에 지지대 재료를 사용하는 경우 다음 설정을 권장합니다:\n" "상단 Z 거리 0, 접점 간격 0, 접점 패턴 동심원 및 독립적 지지대 높이 비활성화" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6040,8 +6769,8 @@ msgstr "무시" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "툴헤드 없이 시간 경과를 기록할 경우 \"타임랩스 닦기 타워\"를 추가하는 것이 좋" "습니다\n" @@ -6669,12 +7398,11 @@ msgid "Flushing volumes for filament change" msgstr "필라멘트 교체를 위한 버리기 부피" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" -"Studio는 필라멘트 색상이 변경될 때마다 플러싱 볼륨을 다시 계산합니다. Bambu " -"Studio > 기본 설정에서 자동 계산을 비활성화할 수 있습니다" +"Orca는 필라멘트 색상이 변경될 때마다 플러싱 볼륨을 다시 계산합니다. Orca " +"Slicer > 기본 설정에서 자동 계산을 비활성화할 수 있습니다" msgid "Flushing volume (mm³) for each filament pair." msgstr "각 필라멘트 쌍에 대한 버리기 부피(mm³)." @@ -6735,9 +7463,6 @@ msgstr "⌘+Shift+G" msgid "Ctrl+Shift+G" msgstr "Ctrl+Shift+G" -msgid "Copy to clipboard" -msgstr "클립보드로 복사" - msgid "Paste from clipboard" msgstr "클립보드에서 붙여넣기" @@ -6849,9 +7574,6 @@ msgstr "Shift+화살표" msgid "Movement step set to 1 mm" msgstr "1mm로 이동" -msgid "Esc" -msgstr "Esc" - msgid "keyboard 1-9: set filament for object/part" msgstr "키보드 1-9: 개체/부품에 필라멘트 할당" @@ -6936,9 +7658,6 @@ msgstr "개체 및 부품에 대한 압출기 번호 설정" msgid "Delete objects, parts, modifiers " msgstr "개체, 부품, 수정자 삭제 " -msgid "Space" -msgstr "스페이스" - msgid "Select the object/part and press space to change the name" msgstr "개체/부품을 선택하고 스페이스바를 눌러 이름을 변경합니다" @@ -7861,9 +8580,9 @@ msgid "" "wall which has large overhang degree. Forcing cooling for overhang and " "bridge can get better quality for these part" msgstr "" -"돌출부 정도가 큰 브릿지나 돌출부 벽을 출력할 때 출력물 냉각 팬을 이 속도로 강제" -"합니다. 돌출부와 브릿지를 강제 냉각하면 이러한 부품의 품질이 향상될 수 있습니" -"다" +"돌출부 정도가 큰 브릿지나 돌출부 벽을 출력할 때 출력물 냉각 팬을 이 속도로 강" +"제합니다. 돌출부와 브릿지를 강제 냉각하면 이러한 부품의 품질이 향상될 수 있습" +"니다" msgid "Cooling overhang threshold" msgstr "돌출부 냉각 임계값" @@ -7925,8 +8644,8 @@ msgid "" "This factor affects the amount of material for top solid infill. You can " "decrease it slightly to have smooth surface finish" msgstr "" -"이 값은 상단 꽉찬 내부 채우기의 재료의 양에 영향을 미칩니다. 부드러운 표면 마감" -"을 위해 약간 줄여도 됩니다" +"이 값은 상단 꽉찬 내부 채우기의 재료의 양에 영향을 미칩니다. 부드러운 표면 마" +"감을 위해 약간 줄여도 됩니다" msgid "Bottom surface flow ratio" msgstr "하단 표면 유량 비율" @@ -8255,8 +8974,8 @@ msgid "" "Don't support the whole bridge area which make support very large. Bridge " "usually can be printing directly without support if not very long" msgstr "" -"지지대를 크게 만드는 전체 브릿지 영역에 지지대를 사용하지 않습니다. 브릿지는 일반적으로 매" -"우 길지 않은 경우 지지대 없이 직접 출력할 수 있습니다" +"지지대를 크게 만드는 전체 브릿지 영역에 지지대를 사용하지 않습니다. 브릿지는 " +"일반적으로 매우 길지 않은 경우 지지대 없이 직접 출력할 수 있습니다" msgid "Thick bridges" msgstr "두꺼운 브릿지" @@ -8319,8 +9038,8 @@ msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)" msgstr "" -"경사진 표면 근처에 꽉찬 내부 채우기를 추가하여 수직 쉘 두께를 보장합니다 (상단" -"+하단 꽉찬 레이어)" +"경사진 표면 근처에 꽉찬 내부 채우기를 추가하여 수직 쉘 두께를 보장합니다 (상" +"단+하단 꽉찬 레이어)" msgid "Top surface pattern" msgstr "상단 표면 패턴" @@ -8365,8 +9084,8 @@ msgid "" "Line pattern of internal solid infill. if the detect narrow internal solid " "infill be enabled, the concentric pattern will be used for the small area." msgstr "" -"꽉찬 내부 채우기의 선 패턴. 좁은 꽉찬 내부 채우기 감지가 활성화된 경우 작은 영역" -"에 동심원 패턴이 사용됩니다." +"꽉찬 내부 채우기의 선 패턴. 좁은 꽉찬 내부 채우기 감지가 활성화된 경우 작은 " +"영역에 동심원 패턴이 사용됩니다." msgid "" "Line width of outer wall. If expressed as a %, it will be computed over the " @@ -8468,8 +9187,8 @@ msgid "" "external surface finish. It can also cause the infill to shine through the " "external surfaces of the part." msgstr "" -"벽/채우기 순서. 확인란을 선택 취소하면 벽이 먼저 출력되며 이는 대부분의 경우 가" -"장 잘 작동합니다.\n" +"벽/채우기 순서. 확인란을 선택 취소하면 벽이 먼저 출력되며 이는 대부분의 경우 " +"가장 잘 작동합니다.\n" "\n" "벽에 접착할 이웃 충전재가 있으므로 벽을 먼저 출력하면 과도한 돌출부에 도움이 " "될 수 있습니다. 그러나 충전재는 출력된 벽이 부착된 부분을 약간 밀어내어 외부 " @@ -8698,9 +9417,9 @@ msgid "" "to produce successive infill or sacrificial object extrusions reliably." msgstr "" "툴 교환 후 노즐 내부에 새로 로드된 필라멘트의 정확한 위치를 알 수 없으며 필라" -"멘트 압력이 아직 안정적이지 않을 수 있습니다. 프린트 헤드를 채우기 또는 희생 개" -"체로 청소하기 전에 Slic3r은 항상 이 양의 재료를 닦기 타워로 프라이밍하여 연속" -"적인 채우기 또는 희생 물체 압출을 안정적으로 생성합니다." +"멘트 압력이 아직 안정적이지 않을 수 있습니다. 프린트 헤드를 채우기 또는 희생 " +"개체로 청소하기 전에 Slic3r은 항상 이 양의 재료를 닦기 타워로 프라이밍하여 연" +"속적인 채우기 또는 희생 물체 압출을 안정적으로 생성합니다." msgid "Speed of the last cooling move" msgstr "마지막 냉각 이동 속도" @@ -8829,12 +9548,13 @@ msgstr "선의 시작 또는 주 방향을 제어하는 드문 채우기 패턴 msgid "Sparse infill density" msgstr "드문 채우기 밀도" +#, fuzzy, c-format, boost-format msgid "" "Density of internal sparse infill, 100% turns all sparse infill into solid " "infill and internal solid infill pattern will be used" msgstr "" -"내부 드문 채우기의 밀도, 100%는 모든 드문 채우기를 꽉찬 내부 채우기로 변경하고 채" -"우기에는 패턴이 사용됩니다" +"내부 드문 채우기의 밀도, 100%는 모든 드문 채우기를 꽉찬 내부 채우기로 변경하" +"고 채우기에는 패턴이 사용됩니다" msgid "Sparse infill pattern" msgstr "드문 채우기 패턴" @@ -8886,15 +9606,15 @@ msgid "" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" -"사용하여 채우기 선을 내부 둘레에 연결합니다. 백분율(예: 15%)로 표시되는 경우 채" -"우기 돌출 너비에 대해 계산됩니다. Slic3r은 두 개의 가까운 채우기 선을 짧은 주" -"변 세그먼트에 연결하려고 합니다. 내부 채우기 고정점 (infill_anchor_max) 최대 길" -"이보다 짧은 경계 세그먼트가 발견되지 않으면 \n" +"사용하여 채우기 선을 내부 둘레에 연결합니다. 백분율(예: 15%)로 표시되는 경우 " +"채우기 돌출 너비에 대해 계산됩니다. Slic3r은 두 개의 가까운 채우기 선을 짧은 " +"주변 세그먼트에 연결하려고 합니다. 내부 채우기 고정점 (infill_anchor_max) 최" +"대 길이보다 짧은 경계 세그먼트가 발견되지 않으면 \n" "채우기 선은 한쪽에서 경계 세그먼트에 연결되고 취해진 경계 세그먼트의 길이는 " "이 매개변수로 제한되지만 최대 고정점 길이(anchor_length_max) 보다 길지 않습니" "다.\n" -"단일 채우기 선에 연결된 고정 둘레를 비활성화하려면 이 매개변수를 0으로 설정합니" -"다." +"단일 채우기 선에 연결된 고정 둘레를 비활성화하려면 이 매개변수를 0으로 설정합" +"니다." msgid "0 (no open anchors)" msgstr "0 (개방형 고정점 없음)" @@ -8916,12 +9636,12 @@ msgid "" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" -"추가 둘레의 짧은 세그먼트를 사용하여 채우기 선을 내부 둘레에 연결합니다. 백분율" -"(예: 15%)로 표시되는 경우 채우기 돌출 너비에 대해 계산됩니다. Slic3r은 두 개" -"의 가까운 채우기 선을 짧은 주변 세그먼트에 연결하려고 합니다. 이 매개변수보다 " -"짧은 주변 세그먼트가 발견되지 않으면 채우기 선은 한쪽 측면의 주변 세그먼트에 연" -"결되고 사용된 주변 세그먼트의 길이는 앵커 채우기(infill_anchor)로 제한되지만 " -"이 매개변수보다 길지 않습니다.\n" +"추가 둘레의 짧은 세그먼트를 사용하여 채우기 선을 내부 둘레에 연결합니다. 백분" +"율(예: 15%)로 표시되는 경우 채우기 돌출 너비에 대해 계산됩니다. Slic3r은 두 " +"개의 가까운 채우기 선을 짧은 주변 세그먼트에 연결하려고 합니다. 이 매개변수보" +"다 짧은 주변 세그먼트가 발견되지 않으면 채우기 선은 한쪽 측면의 주변 세그먼트" +"에 연결되고 사용된 주변 세그먼트의 길이는 앵커 채우기(infill_anchor)로 제한되" +"지만 이 매개변수보다 길지 않습니다.\n" "0으로 설정하면 채우기 연결에 대한 이전 알고리즘이 사용되며 1000 & 0과 동일한 " "결과를 생성해야 합니다." @@ -8960,16 +9680,16 @@ msgid "" "Acceleration of sparse infill. If the value is expressed as a percentage (e." "g. 100%), it will be calculated based on the default acceleration." msgstr "" -"드문 채우기 가속도. 값이 백분율 (예. 100%)로 표시되면 기본 가속도를 기준으로 계" -"산됩니다." +"드문 채우기 가속도. 값이 백분율 (예. 100%)로 표시되면 기본 가속도를 기준으로 " +"계산됩니다." msgid "" "Acceleration of internal solid infill. If the value is expressed as a " "percentage (e.g. 100%), it will be calculated based on the default " "acceleration." msgstr "" -"꽉찬 내부 채우기 가속도. 값이 백분율 (예. 100%)로 표시되면 기본 가속도를 기준으" -"로 계산됩니다." +"꽉찬 내부 채우기 가속도. 값이 백분율 (예. 100%)로 표시되면 기본 가속도를 기준" +"으로 계산됩니다." msgid "" "Acceleration of initial layer. Using a lower value can improve build plate " @@ -9061,10 +9781,10 @@ msgstr "팬 최대 속도 레이어" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "팬 속도는 \"close_fan_the_first_x_layers\" 의 0에서 \"full_fan_speed_layer\" " "의 최고 속도까지 선형적으로 증가합니다. \"full_fan_speed_layer\"가 " @@ -9092,9 +9812,6 @@ msgstr "" "벽을 출력하는 동안 무작위로 지터가 발생하여 표면이 거칠게 보입니다. 이 설정" "은 퍼지 위치를 제어합니다" -msgid "None" -msgstr "없음" - msgid "Contour" msgstr "윤곽" @@ -9139,8 +9856,8 @@ msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " "printed more slowly" msgstr "" -"간격 채우기 속도. 간격은 일반적으로 선 너비가 불규칙하므로 더 천천히 출력해야 " -"합니다" +"간격 채우기 속도. 간격은 일반적으로 선 너비가 불규칙하므로 더 천천히 출력해" +"야 합니다" msgid "Arc fitting" msgstr "원호 맞춤" @@ -9325,8 +10042,8 @@ msgid "" msgstr "" "이 옵션을 선택하면 G코드 출력시 이동에 설명을 추가할 수 있습니다. 이는 " "Octoprint CancelObject 플러그인에 유용합니다. \n" -"이 설정은 단일 압출기 다중 재료 설정 및 개체에서 닦기 / 채우기에서 닦기와 호환" -"되지 않습니다." +"이 설정은 단일 압출기 다중 재료 설정 및 개체에서 닦기 / 채우기에서 닦기와 호" +"환되지 않습니다." msgid "Exclude objects" msgstr "개체 제외" @@ -9353,8 +10070,8 @@ msgid "" "Automatically Combine sparse infill of several layers to print together to " "reduce time. Wall is still printed with original layer height." msgstr "" -"여러 레이어의 드문 채우기를 자동으로 결합 후 함께 출력하여 시간을 단축합니다. " -"벽은 여전히 설정된 레이어 높이로 출력됩니다." +"여러 레이어의 드문 채우기를 자동으로 결합 후 함께 출력하여 시간을 단축합니" +"다. 벽은 여전히 설정된 레이어 높이로 출력됩니다." msgid "Filament to print internal sparse infill." msgstr "내부 드문 채우기를 출력할 필라멘트." @@ -9372,8 +10089,8 @@ msgid "" "Infill area is enlarged slightly to overlap with wall for better bonding. " "The percentage value is relative to line width of sparse infill" msgstr "" -"채우기 영역이 벽과 겹치도록 약간 확장되어 접착력이 향상됩니다. 드문 채우기 선 너" -"비의 백분율 값입니다" +"채우기 영역이 벽과 겹치도록 약간 확장되어 접착력이 향상됩니다. 드문 채우기 " +"선 너비의 백분율 값입니다" msgid "Speed of internal sparse infill" msgstr "내부 드문 채우기 속도" @@ -9824,9 +10541,9 @@ msgid "" "oozing can't been seen. This can reduce times of retraction for complex " "model and save printing time, but make slicing and G-code generating slower" msgstr "" -"이동 구간이 채우기 영역에 있을 때 수축하지 마십시오. 즉, 스며드는 것을 볼 수 없" -"습니다. 이는 복잡한 모델의 후퇴 시간을 줄이고 출력 시간을 절약할 수 있지만 슬" -"라이싱 및 G 코드 생성 속도를 느리게 만듭니다" +"이동 구간이 채우기 영역에 있을 때 수축하지 마십시오. 즉, 스며드는 것을 볼 수 " +"없습니다. 이는 복잡한 모델의 후퇴 시간을 줄이고 출력 시간을 절약할 수 있지만 " +"슬라이싱 및 G 코드 생성 속도를 느리게 만듭니다" msgid "Enable" msgstr "활성화" @@ -9908,8 +10625,8 @@ msgstr "" "\n" "이 옵션이 활성화되면 수직 쉘 두께 확인 옵션을 비활성화해야 합니다.\n" "\n" -"추가 경계를 고정할 채우기가 제한되어 있으므로 이 옵션과 함께 번개 채우기를 사용하" -"는 것은 권장되지 않습니다." +"추가 경계를 고정할 채우기가 제한되어 있으므로 이 옵션과 함께 번개 채우기를 사" +"용하는 것은 권장되지 않습니다." msgid "" "If you want to process the output G-code through custom scripts, just list " @@ -9996,9 +10713,6 @@ msgstr "레이어 변경 시 후퇴" msgid "Force a retraction when changes layer" msgstr "레이어 변경 시 강제로 후퇴를 실행합니다" -msgid "Length" -msgstr "길이" - msgid "Retraction Length" msgstr "후퇴 길이" @@ -10203,6 +10917,21 @@ msgstr "" "폐쇄 루프 압출에서 솔기의 가시성을 최소화하기 위해 압출기가 루프를 떠나기 전" "에 안쪽으로의 작은 이동이 실행됩니다." +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "닦기 속도" @@ -10391,8 +11120,8 @@ msgid "" "resolution, therefore it is advisable to keep the value reasonably low." msgstr "" "간격 폐쇄 반경의 2배보다 작은 균열은 삼각형 메쉬 슬라이싱 중에 채워집니다. 간" -"격 채우기 작업은 최종 출력 해상도를 감소시킬 수 있으므로 값을 합리적으로 낮게 " -"유지하는 것이 좋습니다." +"격 채우기 작업은 최종 출력 해상도를 감소시킬 수 있으므로 값을 합리적으로 낮" +"게 유지하는 것이 좋습니다." msgid "Slicing Mode" msgstr "슬라이싱 모드" @@ -10939,9 +11668,6 @@ msgstr "프라임 부피" msgid "The volume of material to prime extruder on tower." msgstr "탑에서 압출을 실행할 재료의 부피." -msgid "Width" -msgstr "너비" - msgid "Width of prime tower" msgstr "프라임 타워의 너비" @@ -10994,10 +11720,10 @@ msgid "" "printed with transparent filament, the mixed color infill will be seen " "outside. It will not take effect, unless the prime tower is enabled." msgstr "" -"필라멘트 교체 후 버리기는 개체의 채우기 내부에서 수행됩니다. 이렇게 하면 낭비되" -"는 양이 줄어들고 출력 시간이 단축될 수 있습니다. 벽이 투명 필라멘트로 출력된 " -"경우 혼합 색상 충전재가 외부에 보입니다. 프라임 타워가 활성화되지 않으면 적용" -"되지 않습니다." +"필라멘트 교체 후 버리기는 개체의 채우기 내부에서 수행됩니다. 이렇게 하면 낭비" +"되는 양이 줄어들고 출력 시간이 단축될 수 있습니다. 벽이 투명 필라멘트로 출력" +"된 경우 혼합 색상 충전재가 외부에 보입니다. 프라임 타워가 활성화되지 않으면 " +"적용되지 않습니다." msgid "" "Purging after filament change will be done inside objects' support. This may " @@ -11111,12 +11837,9 @@ msgstr "상대적 E 거리 사용" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" -"상대적 압출은 \"label_objects\" 옵션(기타; 개체 이름표)을 사용할 때 권장됩니" -"다. 일부 압출기는 이 옵션을 해제하면 더 잘 작동합니다(절대 압출 모드). 닦기 " -"타워는 상대 모드에서만 호환됩니다" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -11173,9 +11896,9 @@ msgid "" "leave gaps or overextrude" msgstr "" "벽의 짝수와 홀수 사이에 변환을 만드는 시기. 이 설정보다 큰 각도의 쐐기 모양" -"은 변환되지 않으며 나머지 공간 채우기를 위해 중앙에 벽이 출력되지 않습니다. 이 " -"설정을 줄이면 중앙 벽의 수와 길이가 줄어들지만 간격이 남거나 과도하게 돌출될 " -"수 있습니다" +"은 변환되지 않으며 나머지 공간 채우기를 위해 중앙에 벽이 출력되지 않습니다. " +"이 설정을 줄이면 중앙 벽의 수와 길이가 줄어들지만 간격이 남거나 과도하게 돌출" +"될 수 있습니다" msgid "Wall distribution count" msgstr "벽 분포 수" @@ -11232,8 +11955,8 @@ msgid "" "concentric pattern will be used for the area to speed printing up. " "Otherwise, rectilinear pattern is used defaultly." msgstr "" -"이 옵션은 좁은 꽉찬 내부 채우기 영역을 자동으로 감지합니다. 활성화하면 출력 속" -"도를 높이기 위해 해당 영역에 동심 패턴이 사용됩니다. 그렇지 않으면 기본적으" +"이 옵션은 좁은 꽉찬 내부 채우기 영역을 자동으로 감지합니다. 활성화하면 출력 " +"속도를 높이기 위해 해당 영역에 동심 패턴이 사용됩니다. 그렇지 않으면 기본적으" "로 직선 패턴이 사용됩니다." msgid "invalid value " @@ -12348,8 +13071,8 @@ msgstr "" "다시 작성하시겠습니까?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more prinetrs, Please go to printer selection" msgstr "" "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" @@ -12370,9 +13093,6 @@ msgstr "템플릿에서 생성" msgid "Create Based on Current Printer" msgstr "현재 프린터를 기반으로 생성" -msgid "wiki" -msgstr "위키" - msgid "Import Preset" msgstr "사전 설정 가져오기" @@ -12977,6 +13697,19 @@ msgstr "" "공기 여과/배기 팬\n" "오르카 슬라이서가 공기 여과/배기 팬을 지원할 수 있다는 사실을 알고 계셨나요?" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12986,6 +13719,13 @@ msgstr "" "키보드 단축키를 사용하는 방법\n" "Orca Slicer가 다양한 키보드 단축키와 3D 장면 작업을 제공합니다." +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -13235,8 +13975,8 @@ msgid "" "support/objects/infill during filament change?" msgstr "" "지지대/개체/채우기에 버리기\n" -"필라멘트를 교체하는 동안 낭비되는 필라멘트를 지지대/개체/채우기에 버리기하여 절" -"약할 수 있다는 사실을 알고 있습니까?" +"필라멘트를 교체하는 동안 낭비되는 필라멘트를 지지대/개체/채우기에 버리기하여 " +"절약할 수 있다는 사실을 알고 있습니까?" #: resources/data/hints.ini: [hint:Improve strength] msgid "" @@ -13272,6 +14012,53 @@ msgstr "" "ABS 등 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 높이" "면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?" +#~ msgid "wiki" +#~ msgstr "위키" + +#~ msgid "" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unckecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" +#~ msgstr "" +#~ "상대적 압출은 \"label_objects\" 옵션(기타; 개체 이름표)을 사용할 때 권장됩" +#~ "니다. 일부 압출기는 이 옵션을 해제하면 더 잘 작동합니다(절대 압출 모드). " +#~ "닦기 타워는 상대 모드에서만 호환됩니다" + +#~ msgid "Movement:" +#~ msgstr "이동:" + +#~ msgid "Movement" +#~ msgstr "이동" + +#~ msgid "Auto Segment" +#~ msgstr "자동 분할" + +#~ msgid "Depth ratio" +#~ msgstr "깊이 비율" + +#~ msgid "Prizm" +#~ msgstr "원기둥" + +#~ msgid "connector is out of cut contour" +#~ msgstr "커넥터가 잘라내기 윤곽을 벗어났습니다" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "커넥터가 잘라내기 윤곽을 벗어났습니다" + +#~ msgid "connector is out of object" +#~ msgstr "커넥터가 개체에서 벗어났습니다" + +#~ msgid "connectors is out of object" +#~ msgstr "커넥터가 개체에서 벗어났습니다" + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "잘못된 상태입니다.\n" +#~ "절단 후 유지를 위해 선택된 부품이 없습니다" + #~ msgid "Recalculate" #~ msgstr "다시계산" diff --git a/localization/i18n/list.txt b/localization/i18n/list.txt index b8fde002ae..103b4ecaa8 100644 --- a/localization/i18n/list.txt +++ b/localization/i18n/list.txt @@ -7,13 +7,16 @@ src/slic3r/GUI/Gizmos/GLGizmoScale.cpp src/slic3r/GUI/Gizmos/GLGizmosManager.cpp src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp -src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp +src/slic3r/GUI/Gizmos/GLGizmoCut.cpp src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp src/slic3r/GUI/Gizmos/GLGizmoFaceDetector.cpp src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp src/slic3r/GUI/Gizmos/GLGizmoText.cpp src/slic3r/GUI/Gizmos/GLGizmoText.hpp +src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp +src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp +src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp src/slic3r/GUI/GUI.cpp src/slic3r/GUI/GUI_App.cpp src/slic3r/GUI/GUI_AuxiliaryList.cpp diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 833b28e540..41617a173b 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -213,6 +213,9 @@ msgstr "mm" msgid "Position" msgstr "Positie" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "Rotatie" @@ -252,6 +255,7 @@ msgstr "Wereldcoördinaten" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "Maat" @@ -261,6 +265,113 @@ msgstr "%" msgid "uniform scale" msgstr "Uniform schalen" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "Automatisch" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "Plug" + +msgid "Dowel" +msgstr "Deuvel" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "Frustum" + +msgid "Square" +msgstr "Vierkant" + +msgid "Hexagon" +msgstr "Zeskant" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "Op kniplijn plaatsen" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "Verbindingen" + +msgid "Type" +msgstr "Type" + +msgid "Style" +msgstr "Stijl" + +msgid "Shape" +msgstr "Vorm" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "Breedte" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "Onderdeel" + +msgid "Object" +msgstr "Voorwerp" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "Speling" + +msgid "Drag" +msgstr "Sleep" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "Linker muisklik" @@ -273,9 +384,6 @@ msgstr "Rechter muisklik" msgid "Remove connector" msgstr "Verbinding verwijderen" -msgid "Drag" -msgstr "Sleep" - msgid "Move connector" msgstr "Verbinding verplaatsen" @@ -291,23 +399,51 @@ msgstr "Selecteer alle verbindingen" msgid "Cut" msgstr "Knippen" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -msgid "Repairing model object" -msgstr "Model object repareren" +msgid "Remove connectors" +msgstr "Verbindingen verwijderen" -msgid "Connector" -msgstr "Verbinding" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "Beweging:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "Beweging" +msgid "Space" +msgstr "Ruimte" -msgid "Height" -msgstr "Hoogte" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "Verbindingen bevestigen" + +msgid "Cancel" +msgstr "Annuleren" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "Terugzetten" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "Verbindingen bewerken" @@ -315,6 +451,12 @@ msgstr "Verbindingen bewerken" msgid "Add connectors" msgstr "Verbindingen toevoegen" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "Bovenste deel" @@ -324,9 +466,6 @@ msgstr "Onderste deel" msgid "Keep" msgstr "Behouden" -msgid "Place on cut" -msgstr "Op kniplijn plaatsen" - msgid "Flip" msgstr "Omdraaien" @@ -336,88 +475,56 @@ msgstr "Na knippen" msgid "Cut to parts" msgstr "In delen knippen" -msgid "Auto Segment" -msgstr "Automatische segmenteren" - msgid "Perform cut" msgstr "Knippen uitvoeren" -msgid "Reset" -msgstr "Terugzetten" - -msgid "Connectors" -msgstr "Verbindingen" - -msgid "Type" -msgstr "Type" - -msgid "Style" -msgstr "Stijl" - -msgid "Shape" -msgstr "Vorm" - -msgid "Depth ratio" -msgstr "Diepteratio" - -msgid "Remove connectors" -msgstr "Verbindingen verwijderen" - -msgid "Prizm" -msgstr "Prisma" - -msgid "Frustum" -msgstr "Frustum" - -msgid "Square" -msgstr "Vierkant" - -msgid "Hexagon" -msgstr "Zeskant" - -msgid "Confirm connectors" -msgstr "Verbindingen bevestigen" - -msgid "Cancel" -msgstr "Annuleren" - msgid "Warning" msgstr "Waarschuwing" msgid "Invalid connectors detected" msgstr "Onjuiste verbindingen gevonden" -msgid "connector is out of cut contour" -msgstr "Verbinding ligt buiten knipcontour" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" +msgstr[1] "" -msgid "connectors are out of cut contour" -msgstr "Verbindingen liggen buiten knipcontour" - -msgid "connector is out of object" -msgstr "Verbinding ligt buiten object" - -# Source and destination string both English, but different. Please clarify! -msgid "connectors is out of object" -msgstr "Connectors must be on object surface." +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" +msgstr[1] "" msgid "Some connectors are overlapped" msgstr "Sommige verbindingen overlappen" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"Foutieve staat. \n" -"Geen onderdelen geselecteerd om te behouden na knippen" -msgid "Plug" -msgstr "Plug" +msgid "Cut plane is placed out of object" +msgstr "" -msgid "Dowel" -msgstr "Deuvel" +msgid "Cut plane with groove is invalid" +msgstr "" -msgid "Tolerance" -msgstr "Speling" +msgid "Connector" +msgstr "Verbinding" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" + +msgid "Repairing model object" +msgstr "Model object repareren" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Meshnaam" @@ -516,6 +623,8 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "Lettertype" @@ -551,6 +660,655 @@ msgstr "Draai tekst" msgid "Text shape" msgstr "Tekstvorm" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "Geavanceerd" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "Aanpasser" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "Offline" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "Laden" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "Hoogte" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "Spiegelen" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "Verwijderen" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Esc" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "Geen" + +msgid "Diameter" +msgstr "Diameter" + +msgid "Length" +msgstr "Lengte" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "Kopieer naar klembord" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -736,9 +1494,6 @@ msgstr "" msgid "Sync user presets" msgstr "" -msgid "Loading" -msgstr "Laden" - msgid "Loading user preset" msgstr "Voorinstelling voor gebruiker laden" @@ -769,9 +1524,6 @@ msgstr "Selecteer een G-code bestand:" msgid "Import File" msgstr "Importeer bestand" -msgid "Delete" -msgstr "Verwijderen" - msgid "Choose files" msgstr "Kies bestanden" @@ -842,9 +1594,6 @@ msgstr "Veeg opties" msgid "Bed adhension" msgstr "Printbed hechting" -msgid "Advanced" -msgstr "Geavanceerd" - msgid "Add part" msgstr "Onderdeel toevoegen" @@ -929,9 +1678,6 @@ msgstr "" msgid "Text" msgstr "" -msgid "SVG" -msgstr "" - msgid "Height range Modifier" msgstr "Hoogtebereikaanpasser" @@ -1061,9 +1807,6 @@ msgstr "Langs de Z as" msgid "Mirror along the Z axis" msgstr "Spiegelen langs de Z as" -msgid "Mirror" -msgstr "Spiegelen" - msgid "Mirror object" msgstr "Spiegel object" @@ -1342,12 +2085,6 @@ msgstr "Hoogtebereiken" msgid "Settings for height range" msgstr "Instellingen voor hoogtebereik" -msgid "Object" -msgstr "Voorwerp" - -msgid "Part" -msgstr "Onderdeel" - msgid "Layer" msgstr "Laag" @@ -1374,9 +2111,6 @@ msgstr "" msgid "Negative Part" msgstr "Negatief deel" -msgid "Modifier" -msgstr "Aanpasser" - msgid "Support Blocker" msgstr "Ondersteuningsblokkade" @@ -1456,9 +2190,6 @@ msgstr "Vulling (infill) dichtheid(%)" msgid "Auto Brim" msgstr "Brim automatisch instellen" -msgid "Auto" -msgstr "Automatisch" - msgid "Mouse ear" msgstr "" @@ -1534,9 +2265,6 @@ msgstr "Aangepaste G-code" msgid "Enter Custom G-code used on current layer:" msgstr "Voer de aangepaste G-code in die op de huidige laag wordt gebruikt:" -msgid "OK" -msgstr "Offline" - msgid "Jump to Layer" msgstr "Spring naar laag" @@ -1591,15 +2319,15 @@ msgstr "Geen printer" msgid "..." msgstr "" -msgid "Failed to connect to the server" -msgstr "Verbinding maken met de server is mislukt" - msgid "Check the status of current system services" msgstr "Check the status of current system services" msgid "code" msgstr "code" +msgid "Failed to connect to the server" +msgstr "Verbinding maken met de server is mislukt" + msgid "Failed to connect to cloud service" msgstr "Failed to connect to cloud service" @@ -2439,9 +3167,6 @@ msgstr "Upload inplannen in `%1%`. Zie Venster -> Print Host Upload Queue" msgid "Origin" msgstr "Begin" -msgid "Diameter" -msgstr "Diameter" - msgid "Size in X and Y of the rectangular plate." msgstr "Maat in X en Y van de vierkante printplaat." @@ -2998,6 +3723,9 @@ msgstr "Tijd" msgid "Percent" msgstr "Procent" +msgid "Used filament" +msgstr "Verbruikt filament" + msgid "Layer Height (mm)" msgstr "Laaghoogte (mm)" @@ -3016,9 +3744,6 @@ msgstr "Temperatuur (°C)" msgid "Volumetric flow rate (mm³/s)" msgstr "Volumestroom (mm³/s)" -msgid "Used filament" -msgstr "Verbruikt filament" - msgid "Travel" msgstr "Verplaatsen" @@ -6101,6 +6826,11 @@ msgstr "" "0 top z distance, 0 interface spacing, concentric pattern and disable " "independent support layer height" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6757,9 +7487,8 @@ msgid "Flushing volumes for filament change" msgstr "Volumes reinigen voor filament wijziging" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -6822,9 +7551,6 @@ msgstr "⌘+Shift+G" msgid "Ctrl+Shift+G" msgstr "Ctrl+Shift+G" -msgid "Copy to clipboard" -msgstr "Kopieer naar klembord" - msgid "Paste from clipboard" msgstr "Plakken vanuit klembord" @@ -6938,9 +7664,6 @@ msgstr "Shift+willekeurige pijl" msgid "Movement step set to 1 mm" msgstr "Bewegingsinterval ingesteld op 1mm" -msgid "Esc" -msgstr "Esc" - msgid "keyboard 1-9: set filament for object/part" msgstr "Toets 1-9: kies filament voor het object/onderdeel" @@ -7025,9 +7748,6 @@ msgstr "Stel het extrudernnumer in voor de objecten en onderdelen" msgid "Delete objects, parts, modifiers " msgstr "Verwijder objecten, onderdelen, aanpassingen " -msgid "Space" -msgstr "Ruimte" - msgid "Select the object/part and press space to change the name" msgstr "" "Selecteer het object/onderdeel en druk op de spatiebalk om de naam aan te " @@ -9100,9 +9820,6 @@ msgstr "" "printen van muren, zodat het oppervlak er ruw uitziet. Deze instelling " "regelt de \"fuzzy\" positie." -msgid "None" -msgstr "Geen" - msgid "Contour" msgstr "Contour" @@ -9936,9 +10653,6 @@ msgstr "" "Dit forceert retraction (terugtrekken van filament) als er gewisseld wordt " "van laag" -msgid "Length" -msgstr "Lengte" - msgid "Retraction Length" msgstr "Terugtrek (retraction) lengte" @@ -10121,6 +10835,21 @@ msgid "" "inward movement is executed before the extruder leaves the loop." msgstr "" +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "" @@ -10839,9 +11568,6 @@ msgstr "" "Dit is het volume van het materiaal dat de extruder op de prime toren " "uitwerpt." -msgid "Width" -msgstr "Breedte" - msgid "Width of prime tower" msgstr "Dit is de breedte van de prime toren." @@ -10997,8 +11723,8 @@ msgstr "" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" msgid "" @@ -12158,9 +12884,6 @@ msgstr "" msgid "Create Based on Current Printer" msgstr "" -msgid "wiki" -msgstr "" - msgid "Import Preset" msgstr "" @@ -12695,6 +13418,19 @@ msgid "" "Did you know that OrcaSlicer can support Air filtration/Exhuast Fan?" msgstr "" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12702,6 +13438,13 @@ msgid "" "3D scene operations." msgstr "" +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -12966,6 +13709,41 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Movement:" +#~ msgstr "Beweging:" + +#~ msgid "Movement" +#~ msgstr "Beweging" + +#~ msgid "Auto Segment" +#~ msgstr "Automatische segmenteren" + +#~ msgid "Depth ratio" +#~ msgstr "Diepteratio" + +#~ msgid "Prizm" +#~ msgstr "Prisma" + +#~ msgid "connector is out of cut contour" +#~ msgstr "Verbinding ligt buiten knipcontour" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "Verbindingen liggen buiten knipcontour" + +#~ msgid "connector is out of object" +#~ msgstr "Verbinding ligt buiten object" + +# Source and destination string both English, but different. Please clarify! +#~ msgid "connectors is out of object" +#~ msgstr "Connectors must be on object surface." + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "Foutieve staat. \n" +#~ "Geen onderdelen geselecteerd om te behouden na knippen" + #~ msgid "Edit Text" #~ msgstr "Pas tekst aan" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index b0668a6fff..0385bee454 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V1.8.0 Official Release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: 2023-11-20 01:07+0700\n" "Last-Translator: Andylg \n" "Language-Team: \n" @@ -225,6 +225,9 @@ msgstr "мм" msgid "Position" msgstr "Позиция" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "Вращение" @@ -264,6 +267,7 @@ msgstr "Мировая СК" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "Размер" @@ -273,6 +277,113 @@ msgstr "%" msgid "uniform scale" msgstr "Равномерное масштабирование" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "Автоматич." + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "Шип-паз" + +msgid "Dowel" +msgstr "Штифт" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "Усечённый конус" + +msgid "Square" +msgstr "Квадрат" + +msgid "Hexagon" +msgstr "Шестиугольник" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "Срезом на стол" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "Соединения" + +msgid "Type" +msgstr "Тип" + +msgid "Style" +msgstr "Стиль" + +msgid "Shape" +msgstr "Форма" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "Ширина" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "Модель" + +msgid "Object" +msgstr "Модель" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "Допуск" + +msgid "Drag" +msgstr "Перетащить" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "Левая кнопка мыши" @@ -285,9 +396,6 @@ msgstr "Правая кнопка мыши" msgid "Remove connector" msgstr "Удалить соединение" -msgid "Drag" -msgstr "Перетащить" - msgid "Move connector" msgstr "Переместить соединение" @@ -303,23 +411,51 @@ msgstr "Выбрать все соединения" msgid "Cut" msgstr "Разрезать" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -msgid "Repairing model object" -msgstr "Починка модели" +msgid "Remove connectors" +msgstr "Удалить соединения" -msgid "Connector" -msgstr "Соединение" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "Перемещение:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "Перемещение" +msgid "Space" +msgstr "Пробел" -msgid "Height" -msgstr "Высота" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "Подтвердить" + +msgid "Cancel" +msgstr "Отмена" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "Сброс" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "Редактировать соединения" @@ -327,6 +463,12 @@ msgstr "Редактировать соединения" msgid "Add connectors" msgstr "Добавить соединения" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "Верхняя часть" @@ -336,9 +478,6 @@ msgstr "Нижняя часть" msgid "Keep" msgstr "Сохранять" -msgid "Place on cut" -msgstr "Срезом на стол" - msgid "Flip" msgstr "Перевернуть" @@ -348,87 +487,58 @@ msgstr "После разрезания" msgid "Cut to parts" msgstr "Разрезать на части" -msgid "Auto Segment" -msgstr "Автосегментация" - msgid "Perform cut" msgstr "Выполнить разрез" -msgid "Reset" -msgstr "Сброс" - -msgid "Connectors" -msgstr "Соединения" - -msgid "Type" -msgstr "Тип" - -msgid "Style" -msgstr "Стиль" - -msgid "Shape" -msgstr "Форма" - -msgid "Depth ratio" -msgstr "Глубина" - -msgid "Remove connectors" -msgstr "Удалить соединения" - -msgid "Prizm" -msgstr "Призма" - -msgid "Frustum" -msgstr "Усечённый конус" - -msgid "Square" -msgstr "Квадрат" - -msgid "Hexagon" -msgstr "Шестиугольник" - -msgid "Confirm connectors" -msgstr "Подтвердить" - -msgid "Cancel" -msgstr "Отмена" - msgid "Warning" msgstr "Предупреждение" msgid "Invalid connectors detected" msgstr "Обнаружены недопустимые соединения" -msgid "connector is out of cut contour" -msgstr "соединение выходит за контур модели" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -msgid "connectors are out of cut contour" -msgstr "соединения выходят за контур модели" - -msgid "connector is out of object" -msgstr "соединение находится за пределами модели" - -msgid "connectors is out of object" -msgstr "соединения находится за пределами модели" +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" msgid "Some connectors are overlapped" msgstr "Имеются пересекающие соединения" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"Недопустимое состояние.\n" -"Не выбрана ни одна из частей для сохранения после выполнения разреза" -msgid "Plug" -msgstr "Шип-паз" +msgid "Cut plane is placed out of object" +msgstr "" -msgid "Dowel" -msgstr "Штифт" +msgid "Cut plane with groove is invalid" +msgstr "" -msgid "Tolerance" -msgstr "Допуск" +msgid "Connector" +msgstr "Соединение" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" + +msgid "Repairing model object" +msgstr "Починка модели" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Имя сетки" @@ -524,6 +634,8 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "Шрифт" @@ -563,6 +675,655 @@ msgstr "Поворот текста" msgid "Text shape" msgstr "Форма текста" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "Дополнительно" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "Модификатор" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "OK" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "Загрузка" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "Высота" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "Отразить" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "Удалить" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Esc" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "Нет" + +msgid "Diameter" +msgstr "Диаметр" + +msgid "Length" +msgstr "Длина" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "Скопировать в буфер обмена" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -751,9 +1512,6 @@ msgstr "" msgid "Sync user presets" msgstr "" -msgid "Loading" -msgstr "Загрузка" - msgid "Loading user preset" msgstr "Загрузка пользовательского профиля" @@ -784,9 +1542,6 @@ msgstr "Выберите файл G-кода:" msgid "Import File" msgstr "Импорт файла" -msgid "Delete" -msgstr "Удалить" - msgid "Choose files" msgstr "Выберите файлы" @@ -857,9 +1612,6 @@ msgstr "Параметры очистки" msgid "Bed adhension" msgstr "Адгезия к столу" -msgid "Advanced" -msgstr "Дополнительно" - msgid "Add part" msgstr "Добавить элемент" @@ -944,9 +1696,6 @@ msgstr "" msgid "Text" msgstr "" -msgid "SVG" -msgstr "" - msgid "Height range Modifier" msgstr "Модификатор диапазона высоты слоёв" @@ -1075,9 +1824,6 @@ msgstr "Вдоль оси Z" msgid "Mirror along the Z axis" msgstr "Отразить модель вдоль оси Z" -msgid "Mirror" -msgstr "Отразить" - msgid "Mirror object" msgstr "Отразить модель" @@ -1352,12 +2098,6 @@ msgstr "Диапазон высот слоёв" msgid "Settings for height range" msgstr "Настройки для диапазона высот слоёв" -msgid "Object" -msgstr "Модель" - -msgid "Part" -msgstr "Модель" - msgid "Layer" msgstr "Слой" @@ -1383,9 +2123,6 @@ msgstr "Вы не можете изменить тип последнего тв msgid "Negative Part" msgstr "Объём для вычитания" -msgid "Modifier" -msgstr "Модификатор" - msgid "Support Blocker" msgstr "Блокировщик поддержки" @@ -1464,9 +2201,6 @@ msgstr "Плот. заполнения (%)" msgid "Auto Brim" msgstr "Автокайма" -msgid "Auto" -msgstr "Автоматич." - msgid "Mouse ear" msgstr "Мышиные ушки" @@ -1542,9 +2276,6 @@ msgstr "Пользовательский G-код" msgid "Enter Custom G-code used on current layer:" msgstr "Введите пользовательский G-код для текущего слоя:" -msgid "OK" -msgstr "OK" - msgid "Jump to Layer" msgstr "Перейти к слою" @@ -1599,15 +2330,15 @@ msgstr "Принтер не выбран" msgid "..." msgstr "..." -msgid "Failed to connect to the server" -msgstr "Не удалось подключиться к серверу" - msgid "Check the status of current system services" msgstr "Проверка состояния текущих системных служб" msgid "code" msgstr "код" +msgid "Failed to connect to the server" +msgstr "Не удалось подключиться к серверу" + msgid "Failed to connect to cloud service" msgstr "Не удалось подключиться к облачному сервису" @@ -2471,9 +3202,6 @@ msgstr "" msgid "Origin" msgstr "Начало координат" -msgid "Diameter" -msgstr "Диаметр" - msgid "Size in X and Y of the rectangular plate." msgstr "Размеры прямоугольного стола в XY координатах." @@ -3054,6 +3782,9 @@ msgstr "Время" msgid "Percent" msgstr "%" +msgid "Used filament" +msgstr "Использовано прутка" + msgid "Layer Height (mm)" msgstr "Высота слоя (мм)" @@ -3072,9 +3803,6 @@ msgstr "Температура (°C)" msgid "Volumetric flow rate (mm³/s)" msgstr "Объёмная скорость потока (мм³/с)" -msgid "Used filament" -msgstr "Использовано прутка" - msgid "Travel" msgstr "Перемещения" @@ -6202,6 +6930,11 @@ msgstr "" "шаблон связующего слоя - концентрический, \n" "отключение независимой высоты слоя поддержки." +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6871,9 +7604,8 @@ msgid "Flushing volumes for filament change" msgstr "Объёмы очистки при смене пластиковой нити" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -6938,9 +7670,6 @@ msgstr "⌘+Shift+G" msgid "Ctrl+Shift+G" msgstr "Ctrl+Shift+G" -msgid "Copy to clipboard" -msgstr "Скопировать в буфер обмена" - msgid "Paste from clipboard" msgstr "Вставить из буфера обмена" @@ -7054,9 +7783,6 @@ msgstr "Shift + Любая стрелка" msgid "Movement step set to 1 mm" msgstr "Зафиксировать шаг перемещения на 1 мм" -msgid "Esc" -msgstr "Esc" - msgid "keyboard 1-9: set filament for object/part" msgstr "Клавиши 1-9: задать пруток для модели/части модели" @@ -7141,9 +7867,6 @@ msgstr "Задать номер экструдера для моделей/ча msgid "Delete objects, parts, modifiers " msgstr "Удаление моделей, частей, модификаторов " -msgid "Space" -msgstr "Пробел" - msgid "Select the object/part and press space to change the name" msgstr "Выберите модель/часть и нажмите пробел, чтобы изменить имя" @@ -9368,9 +10091,6 @@ msgstr "" "шероховатой поверхности. Эта настройка определяет положение нечетной " "оболочки." -msgid "None" -msgstr "Нет" - msgid "Contour" msgstr "Внешний периметр" @@ -10313,9 +11033,6 @@ msgstr "Откат при смене слоя" msgid "Force a retraction when changes layer" msgstr "Эта опция включает принудительный откат при переходе со слоя на слой." -msgid "Length" -msgstr "Длина" - msgid "Retraction Length" msgstr "Длина отката" @@ -10530,6 +11247,21 @@ msgstr "" "Чтобы минимизировать видимость шва при экструзии по замкнутому контуру, " "перед выходом экструдера из контура выполняется небольшое движение внутрь." +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "Скорость очистки" @@ -11320,9 +12052,6 @@ msgid "The volume of material to prime extruder on tower." msgstr "" "Объём выдавленного материала для заправки экструдера на черновой башне." -msgid "Width" -msgstr "Ширина" - msgid "Width of prime tower" msgstr "Ширина черновой башни." @@ -11503,16 +12232,9 @@ msgstr "Исп. относительные координаты для экст msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" -"Относительная экструзия рекомендуется при использовании опции «Название " -"моделей».\n" -"\n" -"Черновая башня совместима только с относительной экструзией. На принтерах " -"BambuLab она всегда включена (флажок стоит).\n" -"Некоторые экструдеры работают лучше при отключении этой опции (абсолютный " -"режим экструзии)." msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -12802,9 +13524,6 @@ msgstr "" msgid "Create Based on Current Printer" msgstr "" -msgid "wiki" -msgstr "" - msgid "Import Preset" msgstr "" @@ -13348,6 +14067,19 @@ msgid "" "Did you know that OrcaSlicer can support Air filtration/Exhuast Fan?" msgstr "" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -13355,6 +14087,13 @@ msgid "" "3D scene operations." msgstr "" +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -13626,6 +14365,54 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unckecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" +#~ msgstr "" +#~ "Относительная экструзия рекомендуется при использовании опции «Название " +#~ "моделей».\n" +#~ "\n" +#~ "Черновая башня совместима только с относительной экструзией. На принтерах " +#~ "BambuLab она всегда включена (флажок стоит).\n" +#~ "Некоторые экструдеры работают лучше при отключении этой опции (абсолютный " +#~ "режим экструзии)." + +#~ msgid "Movement:" +#~ msgstr "Перемещение:" + +#~ msgid "Movement" +#~ msgstr "Перемещение" + +#~ msgid "Auto Segment" +#~ msgstr "Автосегментация" + +#~ msgid "Depth ratio" +#~ msgstr "Глубина" + +#~ msgid "Prizm" +#~ msgstr "Призма" + +#~ msgid "connector is out of cut contour" +#~ msgstr "соединение выходит за контур модели" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "соединения выходят за контур модели" + +#~ msgid "connector is out of object" +#~ msgstr "соединение находится за пределами модели" + +#~ msgid "connectors is out of object" +#~ msgstr "соединения находится за пределами модели" + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "Недопустимое состояние.\n" +#~ "Не выбрана ни одна из частей для сохранения после выполнения разреза" + #~ msgid "Edit Text" #~ msgstr "Изменить текст" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 12fbd43c8b..7ac0e1e6ab 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -213,6 +213,9 @@ msgstr "mm" msgid "Position" msgstr "Position" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "Rotation" @@ -252,6 +255,7 @@ msgstr "Världskoordinater" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "Storlek" @@ -261,6 +265,113 @@ msgstr "%" msgid "uniform scale" msgstr "enhetlig skala" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "Auto" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "Kontakt" + +msgid "Dowel" +msgstr "Plugg" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "Avstympat parti" + +msgid "Square" +msgstr "Kvadrat" + +msgid "Hexagon" +msgstr "Hexagon" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "Placera på snitt" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "Kontaktdon" + +msgid "Type" +msgstr "Typ" + +msgid "Style" +msgstr "Stil" + +msgid "Shape" +msgstr "Form" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "Bredd" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "Del" + +msgid "Object" +msgstr "Objekt" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "Tolerans" + +msgid "Drag" +msgstr "Dra" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "Vänsterklicka" @@ -273,9 +384,6 @@ msgstr "Högerklicka" msgid "Remove connector" msgstr "Ta bort kontakten" -msgid "Drag" -msgstr "Dra" - msgid "Move connector" msgstr "Flytta kontakt" @@ -291,23 +399,51 @@ msgstr "Välj alla kontakter" msgid "Cut" msgstr "Beskär" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -msgid "Repairing model object" -msgstr "Reparerar modell objektet" +msgid "Remove connectors" +msgstr "Ta bort kontakterna" -msgid "Connector" -msgstr "Kontakt" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "Rörelse:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "Rörelse" +msgid "Space" +msgstr "Mellanslag" -msgid "Height" -msgstr "Höjd" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "Bekräfta kontakterna" + +msgid "Cancel" +msgstr "Avbryt" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "Återställ" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "Redigera kontaktdon" @@ -315,6 +451,12 @@ msgstr "Redigera kontaktdon" msgid "Add connectors" msgstr "Lägg till kontaktdon" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "Övre del" @@ -324,9 +466,6 @@ msgstr "Nedre del" msgid "Keep" msgstr "Behåll" -msgid "Place on cut" -msgstr "Placera på snitt" - msgid "Flip" msgstr "Vänd" @@ -336,87 +475,56 @@ msgstr "Efter skärning" msgid "Cut to parts" msgstr "Beskär till delar" -msgid "Auto Segment" -msgstr "Automatisk Segment" - msgid "Perform cut" msgstr "Utför beskärning" -msgid "Reset" -msgstr "Återställ" - -msgid "Connectors" -msgstr "Kontaktdon" - -msgid "Type" -msgstr "Typ" - -msgid "Style" -msgstr "Stil" - -msgid "Shape" -msgstr "Form" - -msgid "Depth ratio" -msgstr "Djup förhållande" - -msgid "Remove connectors" -msgstr "Ta bort kontakterna" - -msgid "Prizm" -msgstr "Prizm" - -msgid "Frustum" -msgstr "Avstympat parti" - -msgid "Square" -msgstr "Kvadrat" - -msgid "Hexagon" -msgstr "Hexagon" - -msgid "Confirm connectors" -msgstr "Bekräfta kontakterna" - -msgid "Cancel" -msgstr "Avbryt" - msgid "Warning" msgstr "Varning" msgid "Invalid connectors detected" msgstr "Ogiltiga anslutningar upptäckta" -msgid "connector is out of cut contour" -msgstr "kontakten är ur konturen" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" +msgstr[1] "" -msgid "connectors are out of cut contour" -msgstr "kontakterna är utanför skuren kontur" - -msgid "connector is out of object" -msgstr "kontakten är utanför objektet" - -msgid "connectors is out of object" -msgstr "Kontakterna måste vara på objektets yta." +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" +msgstr[1] "" msgid "Some connectors are overlapped" msgstr "Vissa kontakter är överlappande" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"Ogiltigt tillstånd. \n" -"Ingen del är vald att behålla efter skärning" -msgid "Plug" +msgid "Cut plane is placed out of object" +msgstr "" + +msgid "Cut plane with groove is invalid" +msgstr "" + +msgid "Connector" msgstr "Kontakt" -msgid "Dowel" -msgstr "Plugg" +msgid "Cut by Plane" +msgstr "" -msgid "Tolerance" -msgstr "Tolerans" +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" + +msgid "Repairing model object" +msgstr "Reparerar modell objektet" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Mesh namn" @@ -513,6 +621,8 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "Typsnitt" @@ -548,6 +658,655 @@ msgstr "Rotera text" msgid "Text shape" msgstr "Text form" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "Avancerat" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "Modifierare" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "OK" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "Laddar" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "Höjd" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "Spegelvänd" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "Radera" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Esc" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "Ingen" + +msgid "Diameter" +msgstr "Diameter" + +msgid "Length" +msgstr "Längd" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "Kopiera till urklipp" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl +" @@ -723,9 +1482,6 @@ msgstr "" msgid "Sync user presets" msgstr "" -msgid "Loading" -msgstr "Laddar" - msgid "Loading user preset" msgstr "Laddar användarens förinställning" @@ -756,9 +1512,6 @@ msgstr "Välj en G-kod fil:" msgid "Import File" msgstr "Importera fil" -msgid "Delete" -msgstr "Radera" - msgid "Choose files" msgstr "Välj filer" @@ -829,9 +1582,6 @@ msgstr "Avstryknings val" msgid "Bed adhension" msgstr "Byggplattans vidhäftningsförmåga" -msgid "Advanced" -msgstr "Avancerat" - msgid "Add part" msgstr "Lägg till del" @@ -916,9 +1666,6 @@ msgstr "" msgid "Text" msgstr "" -msgid "SVG" -msgstr "" - msgid "Height range Modifier" msgstr "Modifierare av höjd intervall" @@ -1047,9 +1794,6 @@ msgstr "Längs med Z Axis" msgid "Mirror along the Z axis" msgstr "Spegelvänd längs med Z Axis" -msgid "Mirror" -msgstr "Spegelvänd" - msgid "Mirror object" msgstr "Spegelvänd objektet" @@ -1317,12 +2061,6 @@ msgstr "Höjd intervall" msgid "Settings for height range" msgstr "Inställningar för höjdintervall" -msgid "Object" -msgstr "Objekt" - -msgid "Part" -msgstr "Del" - msgid "Layer" msgstr "Lager" @@ -1348,9 +2086,6 @@ msgstr "Den sista fasta objekts delen ska inte ändras." msgid "Negative Part" msgstr "Negativ Del" -msgid "Modifier" -msgstr "Modifierare" - msgid "Support Blocker" msgstr "Support Blockerare" @@ -1431,9 +2166,6 @@ msgstr "Ifyllnads densitet(%)" msgid "Auto Brim" msgstr "Auto Brim" -msgid "Auto" -msgstr "Auto" - msgid "Mouse ear" msgstr "" @@ -1509,9 +2241,6 @@ msgstr "Custom G-kod" msgid "Enter Custom G-code used on current layer:" msgstr "Ange anpassad G-kod som används på det aktuella lagret:" -msgid "OK" -msgstr "OK" - msgid "Jump to Layer" msgstr "Hoppa till lager" @@ -1566,15 +2295,15 @@ msgstr "Ingen skrivare" msgid "..." msgstr "" -msgid "Failed to connect to the server" -msgstr "Uppkoppling till servern misslyckades" - msgid "Check the status of current system services" msgstr "Kontrollera status för aktuella systemtjänster" msgid "code" msgstr "kod" +msgid "Failed to connect to the server" +msgstr "Uppkoppling till servern misslyckades" + msgid "Failed to connect to cloud service" msgstr "Det gick inte att ansluta till molntjänsten" @@ -2405,9 +3134,6 @@ msgstr "" msgid "Origin" msgstr "Ursprung" -msgid "Diameter" -msgstr "Diameter" - msgid "Size in X and Y of the rectangular plate." msgstr "X & Y storlek av den rektangulära plattan." @@ -2957,6 +3683,9 @@ msgstr "Tid" msgid "Percent" msgstr "Procent" +msgid "Used filament" +msgstr "Använt filament" + msgid "Layer Height (mm)" msgstr "Lagerhöjd (mm)" @@ -2975,9 +3704,6 @@ msgstr "Temperatur (°C)" msgid "Volumetric flow rate (mm³/s)" msgstr "Volymetrisk flödeshastighet (mm³/s)" -msgid "Used filament" -msgstr "Använt filament" - msgid "Travel" msgstr "Flytta" @@ -6013,6 +6739,11 @@ msgstr "" "0 top z-avstånd, 0 gränssnittsavstånd, koncentriskt mönster och inaktivera " "oberoende stödskiktshöjd" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6662,9 +7393,8 @@ msgid "Flushing volumes for filament change" msgstr "Rensnings volym för filament byte" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -6726,9 +7456,6 @@ msgstr "⌘+Shift+G" msgid "Ctrl+Shift+G" msgstr "Ctrl+Skift+G" -msgid "Copy to clipboard" -msgstr "Kopiera till urklipp" - msgid "Paste from clipboard" msgstr "Klistra in ifrån urklipp" @@ -6839,9 +7566,6 @@ msgstr "Shift+valfri pil" msgid "Movement step set to 1 mm" msgstr "Rörelse steg är vald till 1mm" -msgid "Esc" -msgstr "Esc" - msgid "keyboard 1-9: set filament for object/part" msgstr "tangentbord 1-9: fastställer filament för objekt/del" @@ -6926,9 +7650,6 @@ msgstr "Välj extruder nummer för objekten och delarna" msgid "Delete objects, parts, modifiers " msgstr "Radera objekten, delarna och anpassningar " -msgid "Space" -msgstr "Mellanslag" - msgid "Select the object/part and press space to change the name" msgstr "Välj objektet/delen och tryck space för att ändra namnet" @@ -8944,9 +9665,6 @@ msgstr "" "väggar så att ytan får ett strävt utseende. Denna inställning styr fuzzy " "position" -msgid "None" -msgstr "Ingen" - msgid "Contour" msgstr "Kontur" @@ -9768,9 +10486,6 @@ msgstr "Retraktera vid lager byte" msgid "Force a retraction when changes layer" msgstr "Tvinga retraktion vid lager byte" -msgid "Length" -msgstr "Längd" - msgid "Retraction Length" msgstr "Retraktions längd" @@ -9952,6 +10667,21 @@ msgid "" "inward movement is executed before the extruder leaves the loop." msgstr "" +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "" @@ -10652,9 +11382,6 @@ msgstr "Prime volym (volymen av ut pressat material)" msgid "The volume of material to prime extruder on tower." msgstr "Material volymen att (pressa ut) genom extrudern på tornet." -msgid "Width" -msgstr "Bredd" - msgid "Width of prime tower" msgstr "Prime tornets bredd" @@ -10808,8 +11535,8 @@ msgstr "" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" msgid "" @@ -11969,9 +12696,6 @@ msgstr "" msgid "Create Based on Current Printer" msgstr "" -msgid "wiki" -msgstr "" - msgid "Import Preset" msgstr "" @@ -12506,6 +13230,19 @@ msgid "" "Did you know that OrcaSlicer can support Air filtration/Exhuast Fan?" msgstr "" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12513,6 +13250,13 @@ msgid "" "3D scene operations." msgstr "" +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -12777,6 +13521,40 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Movement:" +#~ msgstr "Rörelse:" + +#~ msgid "Movement" +#~ msgstr "Rörelse" + +#~ msgid "Auto Segment" +#~ msgstr "Automatisk Segment" + +#~ msgid "Depth ratio" +#~ msgstr "Djup förhållande" + +#~ msgid "Prizm" +#~ msgstr "Prizm" + +#~ msgid "connector is out of cut contour" +#~ msgstr "kontakten är ur konturen" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "kontakterna är utanför skuren kontur" + +#~ msgid "connector is out of object" +#~ msgstr "kontakten är utanför objektet" + +#~ msgid "connectors is out of object" +#~ msgstr "Kontakterna måste vara på objektets yta." + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "Ogiltigt tillstånd. \n" +#~ "Ingen del är vald att behålla efter skärning" + #~ msgid "Edit Text" #~ msgstr "Redigera text" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index bf9fd2e465..1b1e65332a 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: 2023-12-25 01:15+0300\n" "Last-Translator: Olcay ÖREN\n" "Language-Team: Türkçe\n" @@ -221,6 +221,9 @@ msgstr "mm" msgid "Position" msgstr "Konum" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "Döndürme" @@ -260,6 +263,7 @@ msgstr "Dünya koordinatları" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "Boyut" @@ -269,6 +273,113 @@ msgstr "%" msgid "uniform scale" msgstr "düzgün ölçek" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "Otomatik" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "Tak" + +msgid "Dowel" +msgstr "Dübel" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "Frustum" + +msgid "Square" +msgstr "Kare" + +msgid "Hexagon" +msgstr "Altıgen" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "Kesime yerleştirin" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "Konektörler" + +msgid "Type" +msgstr "Tür" + +msgid "Style" +msgstr "Stil" + +msgid "Shape" +msgstr "Şekil" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "Genişlik" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "Parça" + +msgid "Object" +msgstr "Nesne" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "Tolerans" + +msgid "Drag" +msgstr "Sürükle" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "Sol tık" @@ -281,9 +392,6 @@ msgstr "Sağ tık" msgid "Remove connector" msgstr "Bağlayıcıyı kaldır" -msgid "Drag" -msgstr "Sürükle" - msgid "Move connector" msgstr "Bağlayıcıyı taşı" @@ -299,23 +407,51 @@ msgstr "Tüm bağlayıcıları seç" msgid "Cut" msgstr "Kes" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" -msgstr "Ana kat olmayan kenarlar kesme aletinden kaynaklanıyor, şimdi düzeltmek istiyor musunuz?" +msgid "Rotate cut plane" +msgstr "" -msgid "Repairing model object" -msgstr "Model nesnesini onarma" +msgid "Remove connectors" +msgstr "Konektörleri kaldır" -msgid "Connector" -msgstr "Bağlayıcı" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "Hareket:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "Hareket" +msgid "Space" +msgstr "Boşluk" -msgid "Height" -msgstr "Yükseklik" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "Bağlayıcıları onayla" + +msgid "Cancel" +msgstr "İptal" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "Sıfırla" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "Bağlayıcıları düzenle" @@ -323,6 +459,12 @@ msgstr "Bağlayıcıları düzenle" msgid "Add connectors" msgstr "Bağlayıcı ekle" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "Üst parça" @@ -332,9 +474,6 @@ msgstr "Alt kısım" msgid "Keep" msgstr "Sakla" -msgid "Place on cut" -msgstr "Kesime yerleştirin" - msgid "Flip" msgstr "Çevir" @@ -344,87 +483,58 @@ msgstr "Kesildikten sonra" msgid "Cut to parts" msgstr "Parçalara ayır" -msgid "Auto Segment" -msgstr "Otomatik Segment" - msgid "Perform cut" msgstr "Kesimi gerçekleştir" -msgid "Reset" -msgstr "Sıfırla" - -msgid "Connectors" -msgstr "Konektörler" - -msgid "Type" -msgstr "Tür" - -msgid "Style" -msgstr "Stil" - -msgid "Shape" -msgstr "Şekil" - -msgid "Depth ratio" -msgstr "Derinlik oranı" - -msgid "Remove connectors" -msgstr "Konektörleri kaldır" - -msgid "Prizm" -msgstr "Prizma" - -msgid "Frustum" -msgstr "Frustum" - -msgid "Square" -msgstr "Kare" - -msgid "Hexagon" -msgstr "Altıgen" - -msgid "Confirm connectors" -msgstr "Bağlayıcıları onayla" - -msgid "Cancel" -msgstr "İptal" - msgid "Warning" msgstr "Uyarı" msgid "Invalid connectors detected" msgstr "Geçersiz bağlayıcılar algılandı" -msgid "connector is out of cut contour" -msgstr "konnektör kesim konturunun dışında" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" +msgstr[1] "" -msgid "connectors are out of cut contour" -msgstr "konektörler kesim konturunun dışında" - -msgid "connector is out of object" -msgstr "bağlayıcı nesnenin dışında" - -msgid "connectors is out of object" -msgstr "konektörler nesnenin dışında" +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" +msgstr[1] "" msgid "Some connectors are overlapped" msgstr "Bazı konektörler üst üste binmiş" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"Geçersiz durum.\n" -"Kesimden sonra tutmak için hiçbir parça seçilmedi" -msgid "Plug" -msgstr "Tak" +msgid "Cut plane is placed out of object" +msgstr "" -msgid "Dowel" -msgstr "Dübel" +msgid "Cut plane with groove is invalid" +msgstr "" -msgid "Tolerance" -msgstr "Tolerans" +msgid "Connector" +msgstr "Bağlayıcı" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" +"Ana kat olmayan kenarlar kesme aletinden kaynaklanıyor, şimdi düzeltmek " +"istiyor musunuz?" + +msgid "Repairing model object" +msgstr "Model nesnesini onarma" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Mesh adı" @@ -521,6 +631,8 @@ msgstr "Dikiş boyamasından çık" msgid "Paint-on seam editing" msgstr "Boyalı dikiş düzenleme" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "Yazı tipi" @@ -558,6 +670,655 @@ msgstr "Metni döndür" msgid "Text shape" msgstr "Metin şekli" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "Gelişmiş" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "Değiştirici" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "TAMAM" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "Yükleniyor" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "Yükseklik" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "SVG" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "Ayna" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "Sil" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Esc" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "Hiçbiri" + +msgid "Diameter" +msgstr "Çap" + +msgid "Length" +msgstr "Uzunluk" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "Panoya kopyala" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -741,15 +1502,12 @@ msgid "" "The number of user presets cached in the cloud has exceeded the upper limit, " "newly created user presets can only be used locally." msgstr "" -"Bulutta önbelleğe alınan kullanıcı ön ayarlarının sayısı üst sınırı aştı; yeni " -"oluşturulan kullanıcı ön ayarları yalnızca yerel olarak kullanılabilir." +"Bulutta önbelleğe alınan kullanıcı ön ayarlarının sayısı üst sınırı aştı; " +"yeni oluşturulan kullanıcı ön ayarları yalnızca yerel olarak kullanılabilir." msgid "Sync user presets" msgstr "Kullanıcı ön ayarlarını senkronize edin" -msgid "Loading" -msgstr "Yükleniyor" - msgid "Loading user preset" msgstr "Kullanıcı ön ayarı yükleniyor" @@ -780,9 +1538,6 @@ msgstr "G kodu dosyası seçin:" msgid "Import File" msgstr "Dosya İçe Aktar" -msgid "Delete" -msgstr "Sil" - msgid "Choose files" msgstr "Dosyaları seç" @@ -853,9 +1608,6 @@ msgstr "Temizleme seçenekleri" msgid "Bed adhension" msgstr "Etek" -msgid "Advanced" -msgstr "Gelişmiş" - msgid "Add part" msgstr "Parça ekle" @@ -940,9 +1692,6 @@ msgstr "Stanford Tavşanı" msgid "Text" msgstr "Metin" -msgid "SVG" -msgstr "SVG" - msgid "Height range Modifier" msgstr "Yükseklik aralığı Değiştirici" @@ -1070,9 +1819,6 @@ msgstr "Z ekseni boyunca" msgid "Mirror along the Z axis" msgstr "Z ekseni boyunca aynalama" -msgid "Mirror" -msgstr "Ayna" - msgid "Mirror object" msgstr "Nesneyi aynala" @@ -1340,12 +2086,6 @@ msgstr "Yükseklik aralıkları" msgid "Settings for height range" msgstr "Yükseklik aralığı ayarları" -msgid "Object" -msgstr "Nesne" - -msgid "Part" -msgstr "Parça" - msgid "Layer" msgstr "Katman" @@ -1368,9 +2108,6 @@ msgstr "Son katı nesne parçasının tipi değiştirilNozullidir." msgid "Negative Part" msgstr "Negatif Kısım" -msgid "Modifier" -msgstr "Değiştirici" - msgid "Support Blocker" msgstr "Destek Engelleyici" @@ -1445,9 +2182,6 @@ msgstr "Dolgu yoğunluğu (%)" msgid "Auto Brim" msgstr "Otomatik Kenar" -msgid "Auto" -msgstr "Otomatik" - msgid "Mouse ear" msgstr "Fare Kulağı" @@ -1523,9 +2257,6 @@ msgstr "Özel G kodu" msgid "Enter Custom G-code used on current layer:" msgstr "Geçerli katmanda kullanılan Özel G kodunu girin:" -msgid "OK" -msgstr "TAMAM" - msgid "Jump to Layer" msgstr "Katmana Atla" @@ -1580,15 +2311,15 @@ msgstr "Yazıcı yok" msgid "..." msgstr "..." -msgid "Failed to connect to the server" -msgstr "Sunucuya bağlanırken hata oluştu" - msgid "Check the status of current system services" msgstr "Mevcut sistem hizmetlerinin durumunu kontrol edin" msgid "code" msgstr "kod" +msgid "Failed to connect to the server" +msgstr "Sunucuya bağlanırken hata oluştu" + msgid "Failed to connect to cloud service" msgstr "Bulut hizmetine bağlanılamadı" @@ -2434,9 +3165,6 @@ msgstr "" msgid "Origin" msgstr "Menşei" -msgid "Diameter" -msgstr "Çap" - msgid "Size in X and Y of the rectangular plate." msgstr "Dikdörtgen plakanın X ve Y boyutları." @@ -3001,6 +3729,9 @@ msgstr "Zaman" msgid "Percent" msgstr "Yüzde" +msgid "Used filament" +msgstr "Kullanılan filament" + msgid "Layer Height (mm)" msgstr "Katman Yüksekliği (mm)" @@ -3019,9 +3750,6 @@ msgstr "Sıcaklık (°C)" msgid "Volumetric flow rate (mm³/s)" msgstr "Hacimsel akış hızı (mm³/s)" -msgid "Used filament" -msgstr "Kullanılan filament" - msgid "Travel" msgstr "Seyahat" @@ -6129,6 +6857,11 @@ msgstr "" "0 üst z mesafesi, 0 arayüz aralığı, eş merkezli desen ve bağımsız destek " "katmanı yüksekliğini devre dışı bırakma" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6794,13 +7527,12 @@ msgid "Flushing volumes for filament change" msgstr "Filament değişimi için temizleme hacmi" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" -"Studio, filamentlerin rengi her değiştiğinde yıkama hacimlerinizi yeniden " -"hesaplar. Otomatik hesaplamayı Bambu Studio > Tercihler bölümünden devre " -"dışı bırakabilirsiniz." +"Orca, filamentlerin rengi her değiştiğinde yıkama hacimlerinizi yeniden " +"hesaplar. Otomatik hesaplamayı Orca Slicer > Tercihler bölümünden devre dışı " +"bırakabilirsiniz." msgid "Flushing volume (mm³) for each filament pair." msgstr "Her filament çifti için yıkama hacmi (mm³)." @@ -6861,9 +7593,6 @@ msgstr "⌘+Shift+G" msgid "Ctrl+Shift+G" msgstr "Ctrl+Shift+G" -msgid "Copy to clipboard" -msgstr "Panoya kopyala" - msgid "Paste from clipboard" msgstr "Panodan yapıştır" @@ -6975,9 +7704,6 @@ msgstr "Shift+Herhangi bir ok tuşu" msgid "Movement step set to 1 mm" msgstr "Hareket adımı 1 mm'ye ayarlandı" -msgid "Esc" -msgstr "Esc" - msgid "keyboard 1-9: set filament for object/part" msgstr "klavye 1-9: nesne/parça için filamenti ayarlayın" @@ -7062,9 +7788,6 @@ msgstr "Nesneler ve parçalar için ekstruder numarasını ayarlayın" msgid "Delete objects, parts, modifiers " msgstr "Nesneleri, parçaları, değiştiricileri silin " -msgid "Space" -msgstr "Boşluk" - msgid "Select the object/part and press space to change the name" msgstr "Nesneyi/parçayı seçin ve adını değiştirmek için boşluk tuşuna basın" @@ -9307,9 +10030,6 @@ msgstr "" "Duvara baskı yaparken rastgele titreme, böylece yüzeyin pürüzlü bir görünüme " "sahip olması. Bu ayar bulanık konumu kontrol eder" -msgid "None" -msgstr "Hiçbiri" - msgid "Contour" msgstr "Kontur" @@ -10151,8 +10871,8 @@ msgid "" "Using lightning infill together with this option is not recommended as there " "is limited infill to anchor the extra perimeters to." msgstr "" -"Bu ayar her iki katmana ekstra bir duvar ekler. Bu şekilde dolgu " -"duvarlar arasında dikey olarak sıkışır ve daha güçlü baskılar elde edilir.\n" +"Bu ayar her iki katmana ekstra bir duvar ekler. Bu şekilde dolgu duvarlar " +"arasında dikey olarak sıkışır ve daha güçlü baskılar elde edilir.\n" "\n" "Bu seçenek etkinleştirildiğinde dikey kabuk kalınlığını sağla seçeneğinin " "devre dışı bırakılması gerekir. \n" @@ -10249,9 +10969,6 @@ msgstr "Katman değişiminde geri çek" msgid "Force a retraction when changes layer" msgstr "Katmanı değiştirdiğinde geri çekilmeyi zorla" -msgid "Length" -msgstr "Uzunluk" - msgid "Retraction Length" msgstr "Geri Çekme Uzunluğu" @@ -10462,6 +11179,21 @@ msgstr "" "ekstruder döngüden ayrılmadan önce içeriye doğru küçük bir hareket " "gerçekleştirilir." +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "Temizleme hızı" @@ -11238,9 +11970,6 @@ msgstr "Ana hacim" msgid "The volume of material to prime extruder on tower." msgstr "Kule üzerindeki ana ekstruder malzeme hacmi." -msgid "Width" -msgstr "Genişlik" - msgid "Width of prime tower" msgstr "Prime tower genişliği" @@ -11418,13 +12147,9 @@ msgstr "Göreceli (relative) E mesafelerini kullan" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" -"\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. Bazı " -"ekstruderler bu seçeneğin işareti kaldırıldığında (mutlak ekstrüzyon modu) " -"daha iyi çalışır. Temizleme kulesi yalnızca göreceli modla uyumludur. " -"BambuLab yazıcılarında her zaman etkindir. Varsayılan olarak işaretlendi" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -12709,9 +13434,6 @@ msgstr "Şablondan oluştur" msgid "Create Based on Current Printer" msgstr "Mevcut Yazıcıya Göre Oluşturun" -msgid "wiki" -msgstr "wiki" - msgid "Import Preset" msgstr "Ön Ayarı İçe Aktar" @@ -13330,6 +14052,19 @@ msgstr "" "OrcaSlicer'ın Hava filtreleme/Egzoz Fanını destekleyebileceğini biliyor " "muydunuz?" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -13340,6 +14075,13 @@ msgstr "" "Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri " "sunduğunu biliyor muydunuz?" +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -13357,8 +14099,8 @@ msgid "" "problems on the Windows system?" msgstr "" "Modeli Düzelt\n" -"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D modeli " -"düzeltebileceğinizi biliyor muydunuz?" +"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D " +"modeli düzeltebileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -13374,7 +14116,8 @@ msgid "" "Did you know that you can auto-arrange all objects in your project?" msgstr "" "Otomatik Düzenleme\n" -"Projenizdeki tüm nesneleri otomatik olarak düzenleyebileceğinizi biliyor muydunuz?" +"Projenizdeki tüm nesneleri otomatik olarak düzenleyebileceğinizi biliyor " +"muydunuz?" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" @@ -13554,9 +14297,9 @@ msgid "" "the best results." msgstr "" "İpek Filament Baskı\n" -"İpek filamentin başarılı bir şekilde basılabilmesi için özel dikkat gösterilmesi " -"gerektiğini biliyor muydunuz? En iyi sonuçlar için her zaman daha yüksek sıcaklık " -"ve daha düşük hız önerilir." +"İpek filamentin başarılı bir şekilde basılabilmesi için özel dikkat " +"gösterilmesi gerektiğini biliyor muydunuz? En iyi sonuçlar için her zaman " +"daha yüksek sıcaklık ve daha düşük hız önerilir." #: resources/data/hints.ini: [hint:Brim for better adhesion] msgid "" @@ -13632,6 +14375,55 @@ msgstr "" "sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını " "azaltabileceğini biliyor muydunuz?" +#~ msgid "wiki" +#~ msgstr "wiki" + +#~ msgid "" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unckecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" +#~ msgstr "" +#~ "\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. " +#~ "Bazı ekstruderler bu seçeneğin işareti kaldırıldığında (mutlak ekstrüzyon " +#~ "modu) daha iyi çalışır. Temizleme kulesi yalnızca göreceli modla " +#~ "uyumludur. BambuLab yazıcılarında her zaman etkindir. Varsayılan olarak " +#~ "işaretlendi" + +#~ msgid "Movement:" +#~ msgstr "Hareket:" + +#~ msgid "Movement" +#~ msgstr "Hareket" + +#~ msgid "Auto Segment" +#~ msgstr "Otomatik Segment" + +#~ msgid "Depth ratio" +#~ msgstr "Derinlik oranı" + +#~ msgid "Prizm" +#~ msgstr "Prizma" + +#~ msgid "connector is out of cut contour" +#~ msgstr "konnektör kesim konturunun dışında" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "konektörler kesim konturunun dışında" + +#~ msgid "connector is out of object" +#~ msgstr "bağlayıcı nesnenin dışında" + +#~ msgid "connectors is out of object" +#~ msgstr "konektörler nesnenin dışında" + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "Geçersiz durum.\n" +#~ "Kesimden sonra tutmak için hiçbir parça seçilmedi" + #~ msgid "Recalculate" #~ msgstr "Yeniden hesapla" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 037e286fb6..f00aa3719e 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: 2023-08-10 20:25-0400\n" "Last-Translator: \n" "Language-Team: \n" @@ -221,6 +221,9 @@ msgstr "мм" msgid "Position" msgstr "Позиція" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "Обертання" @@ -260,6 +263,7 @@ msgstr "Світові координати" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "Розмір" @@ -269,6 +273,113 @@ msgstr "%" msgid "uniform scale" msgstr "єдина шкала" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "Авто" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "Підключи" + +msgid "Dowel" +msgstr "Дюбель" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "Усічений" + +msgid "Square" +msgstr "Квадрат" + +msgid "Hexagon" +msgstr "Шестикутник" + +msgid "Keep orientation" +msgstr "" + +msgid "Place on cut" +msgstr "Помістити на зріз" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "З'єднувачі" + +msgid "Type" +msgstr "Тип" + +msgid "Style" +msgstr "Стиль" + +msgid "Shape" +msgstr "Форма" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "Ширина" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "Частина" + +msgid "Object" +msgstr "Об'єкт" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "Допуск" + +msgid "Drag" +msgstr "Перетягніть" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "Клацніть лівою кнопкою миші" @@ -281,9 +392,6 @@ msgstr "Клацніть правою кнопкою миші" msgid "Remove connector" msgstr "Видалити з’єднання" -msgid "Drag" -msgstr "Перетягніть" - msgid "Move connector" msgstr "Перемістити з'єднувач" @@ -299,23 +407,51 @@ msgstr "Виберіть усі з'єднувачі" msgid "Cut" msgstr "Вирізати" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -msgid "Repairing model object" -msgstr "Відновлення об'єкта моделі" +msgid "Remove connectors" +msgstr "Видалити з’єднання" -msgid "Connector" -msgstr "З'єднувач" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "Рух:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "Рух" +msgid "Space" +msgstr "Пробіл" -msgid "Height" -msgstr "Зростання" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "Підтвердити з'єднувачі" + +msgid "Cancel" +msgstr "Скасувати" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "Скинути" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "Редагувати з'єднувачі" @@ -323,6 +459,12 @@ msgstr "Редагувати з'єднувачі" msgid "Add connectors" msgstr "Додати з'єднувачі" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "Верхня частина" @@ -332,9 +474,6 @@ msgstr "Нижня частина" msgid "Keep" msgstr "Тримати" -msgid "Place on cut" -msgstr "Помістити на зріз" - msgid "Flip" msgstr "Переверніть" @@ -344,86 +483,58 @@ msgstr "Після вирізування" msgid "Cut to parts" msgstr "Розрізати на частини" -msgid "Auto Segment" -msgstr "Автосегмент" - msgid "Perform cut" msgstr "Виконати вирізання" -msgid "Reset" -msgstr "Скинути" - -msgid "Connectors" -msgstr "З'єднувачі" - -msgid "Type" -msgstr "Тип" - -msgid "Style" -msgstr "Стиль" - -msgid "Shape" -msgstr "Форма" - -msgid "Depth ratio" -msgstr "Коефіцієнт глибини" - -msgid "Remove connectors" -msgstr "Видалити з’єднання" - -msgid "Prizm" -msgstr "Призма" - -msgid "Frustum" -msgstr "Усічений" - -msgid "Square" -msgstr "Квадрат" - -msgid "Hexagon" -msgstr "Шестикутник" - -msgid "Confirm connectors" -msgstr "Підтвердити з'єднувачі" - -msgid "Cancel" -msgstr "Скасувати" - msgid "Warning" msgstr "Попередження" msgid "Invalid connectors detected" msgstr "Виявлено неприпустимі з'єднувачі" -msgid "connector is out of cut contour" -msgstr "роз'єм виходить за контур вирізу" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -msgid "connectors are out of cut contour" -msgstr "роз'єми виходять за контур вирізу" - -msgid "connector is out of object" -msgstr "роз'єм поза об'єктом" - -msgid "connectors is out of object" -msgstr "з’єднання відсутні в об'єкті" +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" msgid "Some connectors are overlapped" msgstr "Деякі роз'єми перекриваються" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"Неприпустимий стан. Жодна деталь не вибрана для збереження після вирізання" -msgid "Plug" -msgstr "Підключи" +msgid "Cut plane is placed out of object" +msgstr "" -msgid "Dowel" -msgstr "Дюбель" +msgid "Cut plane with groove is invalid" +msgstr "" -msgid "Tolerance" -msgstr "Допуск" +msgid "Connector" +msgstr "З'єднувач" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" + +msgid "Repairing model object" +msgstr "Відновлення об'єкта моделі" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Назва сітки" @@ -519,6 +630,8 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "Шрифт" @@ -554,6 +667,655 @@ msgstr "Повернути текст" msgid "Text shape" msgstr "Форма тексту" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "Додатково" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "Модифікатор" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "ОК" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "Завантаження" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "Зростання" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "Дзеркально" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "Видалити" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "Esc" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "Ні" + +msgid "Diameter" +msgstr "Діаметр" + +msgid "Length" +msgstr "Довжина" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "Копіювати в буфер обміну" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -732,9 +1494,6 @@ msgstr "" msgid "Sync user presets" msgstr "" -msgid "Loading" -msgstr "Завантаження" - msgid "Loading user preset" msgstr "Завантаження користувацького пресета" @@ -765,9 +1524,6 @@ msgstr "Виберіть файл G-коду:" msgid "Import File" msgstr "Імпортувати файл" -msgid "Delete" -msgstr "Видалити" - msgid "Choose files" msgstr "Вибрати файли" @@ -838,9 +1594,6 @@ msgstr "Параметри очищення" msgid "Bed adhension" msgstr "Прилягання до столу" -msgid "Advanced" -msgstr "Додатково" - msgid "Add part" msgstr "Додати частину" @@ -925,9 +1678,6 @@ msgstr "" msgid "Text" msgstr "" -msgid "SVG" -msgstr "" - msgid "Height range Modifier" msgstr "Модифікатор діапазону висот" @@ -1055,9 +1805,6 @@ msgstr "По осі Z" msgid "Mirror along the Z axis" msgstr "Відобразити осі Z" -msgid "Mirror" -msgstr "Дзеркально" - msgid "Mirror object" msgstr "Дзеркальний об'єкт" @@ -1334,12 +2081,6 @@ msgstr "Діапазони висоти" msgid "Settings for height range" msgstr "Налаштування діапазону зростання" -msgid "Object" -msgstr "Об'єкт" - -msgid "Part" -msgstr "Частина" - msgid "Layer" msgstr "Шар" @@ -1364,9 +2105,6 @@ msgstr "Тип останньої твердотільної частини об msgid "Negative Part" msgstr "Негативна частина" -msgid "Modifier" -msgstr "Модифікатор" - msgid "Support Blocker" msgstr "Блокувальник підтримки" @@ -1444,9 +2182,6 @@ msgstr "Щільність заповнення (%)" msgid "Auto Brim" msgstr "Автоматична Кайма" -msgid "Auto" -msgstr "Авто" - msgid "Mouse ear" msgstr "" @@ -1522,9 +2257,6 @@ msgstr "G-код користувача" msgid "Enter Custom G-code used on current layer:" msgstr "Введіть G-код користувача, що використовується в поточному шарі:" -msgid "OK" -msgstr "ОК" - msgid "Jump to Layer" msgstr "Перейти до шару" @@ -1579,15 +2311,15 @@ msgstr "Немає принтера" msgid "..." msgstr "..." -msgid "Failed to connect to the server" -msgstr "Не вдалося підключитися до сервера" - msgid "Check the status of current system services" msgstr "" msgid "code" msgstr "" +msgid "Failed to connect to the server" +msgstr "Не вдалося підключитися до сервера" + msgid "Failed to connect to cloud service" msgstr "" @@ -2429,9 +3161,6 @@ msgstr "" msgid "Origin" msgstr "Джерело" -msgid "Diameter" -msgstr "Діаметр" - msgid "Size in X and Y of the rectangular plate." msgstr "Розмір по осях X та Y прямокутного столу." @@ -2983,6 +3712,9 @@ msgstr "Час" msgid "Percent" msgstr "Відсоток" +msgid "Used filament" +msgstr "Філамент, що використовується" + msgid "Layer Height (mm)" msgstr "Висота шару (мм)" @@ -3001,9 +3733,6 @@ msgstr "Температура (°С)" msgid "Volumetric flow rate (mm³/s)" msgstr "Об'ємна витрата (мм³/с)" -msgid "Used filament" -msgstr "Філамент, що використовується" - msgid "Travel" msgstr "Переміщення" @@ -6049,6 +6778,11 @@ msgstr "" "0 відстань між вершинами z, 0 відстань між підтримкою, концентричний малюнок " "та відключення висота незалежного опорного шару" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6701,9 +7435,8 @@ msgid "Flushing volumes for filament change" msgstr "Обсяги промивання для зміни Філаменту" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -6765,9 +7498,6 @@ msgstr "⌘+Shift+G" msgid "Ctrl+Shift+G" msgstr "Ctrl+Shift+G" -msgid "Copy to clipboard" -msgstr "Копіювати в буфер обміну" - msgid "Paste from clipboard" msgstr "Вставити з буфера обміну" @@ -6879,9 +7609,6 @@ msgstr "Shift+будь-яка стрілка" msgid "Movement step set to 1 mm" msgstr "Крок переміщення встановлено на 1 мм" -msgid "Esc" -msgstr "Esc" - msgid "keyboard 1-9: set filament for object/part" msgstr "клавіатура 1-9: встановити філамент для об'єкта/деталі" @@ -6966,9 +7693,6 @@ msgstr "Встановіть номер екструдера для об'єкт msgid "Delete objects, parts, modifiers " msgstr "Видалення об'єктів, частин, модифікаторів " -msgid "Space" -msgstr "Пробіл" - msgid "Select the object/part and press space to change the name" msgstr "Виберіть об'єкт/деталь і натисніть пробіл, щоб змінити назву" @@ -9069,9 +9793,6 @@ msgstr "" "Випадкове тремтіння під час друку зовнішнього периметра, так що поверхня " "була шорсткої. Цей параметр керує нечіткою оболонкою" -msgid "None" -msgstr "Ні" - msgid "Contour" msgstr "Контур" @@ -9915,9 +10636,6 @@ msgstr "Ретракт при зміні шару" msgid "Force a retraction when changes layer" msgstr "Примусовий відкат при зміні шару" -msgid "Length" -msgstr "Довжина" - msgid "Retraction Length" msgstr "Довжина відкату" @@ -10121,6 +10839,21 @@ msgstr "" "Щоб звести до мінімуму видимість шва при екструзії із замкнутим контуром," "Невеликий рух усередину виконується до виходу екструдера з контуру." +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "Швидкість очищення" @@ -10829,9 +11562,6 @@ msgstr "Основний обсяг" msgid "The volume of material to prime extruder on tower." msgstr "Обсяг матеріалу для первинного екструдера на башті." -msgid "Width" -msgstr "Ширина" - msgid "Width of prime tower" msgstr "Ширина основної вежі" @@ -10980,13 +11710,9 @@ msgstr "Використовуйте відносні відстані E екс msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" -"При використанні опції «label_objects» рекомендується відносне Видавлювання. " -"Деякі екструдери працюють краще з цією опцією без перевірки(абсолютний режим " -"екструзії). Обтиральна вежа сумісна лише з відносним режимом. Вона завжди " -"включена на принтерах BambuLab. за замовчуванням встановлено прапорець" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -12141,9 +12867,6 @@ msgstr "" msgid "Create Based on Current Printer" msgstr "" -msgid "wiki" -msgstr "" - msgid "Import Preset" msgstr "" @@ -12685,6 +13408,19 @@ msgid "" "Did you know that OrcaSlicer can support Air filtration/Exhuast Fan?" msgstr "" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12692,6 +13428,13 @@ msgid "" "3D scene operations." msgstr "" +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -12956,6 +13699,51 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unckecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" +#~ msgstr "" +#~ "При використанні опції «label_objects» рекомендується відносне " +#~ "Видавлювання. Деякі екструдери працюють краще з цією опцією без " +#~ "перевірки(абсолютний режим екструзії). Обтиральна вежа сумісна лише з " +#~ "відносним режимом. Вона завжди включена на принтерах BambuLab. за " +#~ "замовчуванням встановлено прапорець" + +#~ msgid "Movement:" +#~ msgstr "Рух:" + +#~ msgid "Movement" +#~ msgstr "Рух" + +#~ msgid "Auto Segment" +#~ msgstr "Автосегмент" + +#~ msgid "Depth ratio" +#~ msgstr "Коефіцієнт глибини" + +#~ msgid "Prizm" +#~ msgstr "Призма" + +#~ msgid "connector is out of cut contour" +#~ msgstr "роз'єм виходить за контур вирізу" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "роз'єми виходять за контур вирізу" + +#~ msgid "connector is out of object" +#~ msgstr "роз'єм поза об'єктом" + +#~ msgid "connectors is out of object" +#~ msgstr "з’єднання відсутні в об'єкті" + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "Неприпустимий стан. Жодна деталь не вибрана для збереження після вирізання" + #~ msgid "Edit Text" #~ msgstr "Редагувати текст" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 29264930cc..6bb265a1fc 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: 2023-04-01 13:21+0800\n" "Last-Translator: SoftFever \n" "Language-Team: \n" @@ -218,6 +218,9 @@ msgstr "mm" msgid "Position" msgstr "位置" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "旋转" @@ -257,6 +260,7 @@ msgstr "世界坐标" msgid "°" msgstr "°" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "大小" @@ -266,6 +270,113 @@ msgstr "%" msgid "uniform scale" msgstr "等比例缩放" +msgid "Planar" +msgstr "平面" + +msgid "Dovetail" +msgstr "燕尾榫" + +msgid "Auto" +msgstr "自动" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "插销" + +msgid "Dowel" +msgstr "销钉" + +msgid "Snap" +msgstr "按扣" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "锥体" + +msgid "Square" +msgstr "正方形" + +msgid "Hexagon" +msgstr "六边形" + +msgid "Keep orientation" +msgstr "保持方向" + +msgid "Place on cut" +msgstr "切割面放置到热床" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "连接件" + +msgid "Type" +msgstr "类型" + +msgid "Style" +msgstr "样式" + +msgid "Shape" +msgstr "形状" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "深度" + +msgid "Groove" +msgstr "凹槽" + +msgid "Width" +msgstr "宽度" + +msgid "Flap Angle" +msgstr "翼偏角" + +msgid "Groove Angle" +msgstr "凹槽角" + +msgid "Part" +msgstr "零件" + +msgid "Object" +msgstr "对象" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "模式" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "容差" + +msgid "Drag" +msgstr "拖拽" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "左击" @@ -278,9 +389,6 @@ msgstr "右击" msgid "Remove connector" msgstr "删除连接件" -msgid "Drag" -msgstr "拖拽" - msgid "Move connector" msgstr "移动连接件" @@ -296,23 +404,51 @@ msgstr "选择所有连接件" msgid "Cut" msgstr "剪切" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -msgid "Repairing model object" -msgstr "修复模型对象" +msgid "Remove connectors" +msgstr "删除所有连接件" -msgid "Connector" -msgstr "连接件" +msgid "Bulge" +msgstr "凸度" -msgid "Movement:" -msgstr "移动:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "移动" +msgid "Space" +msgstr "空格键" -msgid "Height" -msgstr "高度" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "确认" + +msgid "Cancel" +msgstr "取消" + +msgid "Build Volume" +msgstr "零件体积" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "重置" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "切割位置" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "编辑连接件" @@ -320,6 +456,12 @@ msgstr "编辑连接件" msgid "Add connectors" msgstr "添加连接件" +msgid "Reset cut" +msgstr "重置" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "上半部分" @@ -329,9 +471,6 @@ msgstr "下半部分" msgid "Keep" msgstr "保持" -msgid "Place on cut" -msgstr "切割面放置到热床" - msgid "Flip" msgstr "翻转" @@ -341,87 +480,54 @@ msgstr "切割后" msgid "Cut to parts" msgstr "切割为零件" -msgid "Auto Segment" -msgstr "自动分割" - msgid "Perform cut" msgstr "执行切割" -msgid "Reset" -msgstr "重置" - -msgid "Connectors" -msgstr "连接件" - -msgid "Type" -msgstr "类型" - -msgid "Style" -msgstr "样式" - -msgid "Shape" -msgstr "形状" - -msgid "Depth ratio" -msgstr "深度" - -msgid "Remove connectors" -msgstr "删除所有连接件" - -msgid "Prizm" -msgstr "棱柱" - -msgid "Frustum" -msgstr "锥体" - -msgid "Square" -msgstr "正方形" - -msgid "Hexagon" -msgstr "六边形" - -msgid "Confirm connectors" -msgstr "确认" - -msgid "Cancel" -msgstr "取消" - msgid "Warning" msgstr "警告" msgid "Invalid connectors detected" msgstr "检测到无效连接件" -msgid "connector is out of cut contour" -msgstr "个连接件超出了切割面范围" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" -msgid "connectors are out of cut contour" -msgstr "个连接件超出了切割面范围" - -msgid "connector is out of object" -msgstr "个连接件穿透了模型" - -msgid "connectors is out of object" -msgstr "个连接件穿透了模型" +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" msgid "Some connectors are overlapped" msgstr "存在连接件相互重叠" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"无效状态。\n" -"切割后没有选中要保留的部分" -msgid "Plug" -msgstr "插销" +msgid "Cut plane is placed out of object" +msgstr "" -msgid "Dowel" -msgstr "销钉" +msgid "Cut plane with groove is invalid" +msgstr "" -msgid "Tolerance" -msgstr "容差" +msgid "Connector" +msgstr "连接件" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "因切割产生了非流形边,您是否想现在修复?" + +msgid "Repairing model object" +msgstr "修复模型对象" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Mesh名" @@ -515,6 +621,8 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "字体" @@ -550,6 +658,655 @@ msgstr "旋转文字" msgid "Text shape" msgstr "文本形状" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "浮雕" + +msgid "Text-Rotate" +msgstr "旋转文字" + +msgid "NORMAL" +msgstr "常规" + +msgid "SMALL" +msgstr "小" + +msgid "ITALIC" +msgstr "斜体" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "高级" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "操作" + +msgid "Join" +msgstr "合并" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "切割" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "修改器" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "确认" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "文字面向摄像头" + +msgid "Orient the text towards the camera." +msgstr "选择文字使其面向摄像头" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "载入中" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "高度" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "使用表面" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "按字符" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "对齐" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "字间距" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "行间距" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "粗细" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "斜率" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "距表面" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "保持向上" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "镜像" + +msgid "Choose SVG file for emboss:" +msgstr "选择SVG文件进行浮雕操作:" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "文件不存在 (%1%)。" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "文件名必须以“.svg”结尾,但您选择的是%1%" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "Nano SVG解析器无法从文件中加载 (%1%)。" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "SVG文件不包含路径以进行浮雕操作 (%1%)。" + +msgid "Vertex" +msgstr "顶点" + +msgid "Edge" +msgstr "边" + +msgid "Plane" +msgstr "平面" + +msgid "Point on edge" +msgstr "边上的点" + +msgid "Point on circle" +msgstr "圆上的点" + +msgid "Point on plane" +msgstr "平面上的点" + +msgid "Center of edge" +msgstr "边的中心" + +msgid "Center of circle" +msgstr "圆心" + +msgid "ShiftLeft mouse button" +msgstr "Shift + 鼠标左键" + +msgid "Select feature" +msgstr "选择特征" + +msgid "Select point" +msgstr "选择点" + +msgid "Delete" +msgstr "删除" + +msgid "Restart selection" +msgstr "重新选择" + +msgid "Esc" +msgstr "" + +msgid "Unselect" +msgstr "取消选择" + +msgid "Measure" +msgstr "测量" + +msgid "Edit to scale" +msgstr "编辑比例" + +msgctxt "Verb" +msgid "Scale" +msgstr "比例" + +msgid "None" +msgstr "无" + +msgid "Diameter" +msgstr "直径" + +msgid "Length" +msgstr "长度" + +msgid "Selection" +msgstr "选中" + +msgid "Copy to clipboard" +msgstr "复制到剪贴板" + +msgid "Perpendicular distance" +msgstr "垂直距离" + +msgid "Distance" +msgstr "距离" + +msgid "Direct distance" +msgstr "直线距离" + +msgid "Distance XYZ" +msgstr "距离 XYZ" + msgid "Ctrl+" msgstr "" @@ -716,13 +1473,10 @@ msgstr "隐私协议更新" msgid "" "The number of user presets cached in the cloud has exceeded the upper limit, " "newly created user presets can only be used locally." -msgstr "" +msgstr "云端缓存的用户预设数量已超过上限,新创建的用户预设只能在本地使用。" msgid "Sync user presets" -msgstr "" - -msgid "Loading" -msgstr "载入中" +msgstr "同步用户预设" msgid "Loading user preset" msgstr "正在加载用户预设" @@ -754,9 +1508,6 @@ msgstr "选择一个G-code文件:" msgid "Import File" msgstr "导入文件" -msgid "Delete" -msgstr "删除" - msgid "Choose files" msgstr "选择文件" @@ -827,9 +1578,6 @@ msgstr "擦除选项" msgid "Bed adhension" msgstr "热床粘接" -msgid "Advanced" -msgstr "高级" - msgid "Add part" msgstr "添加部件" @@ -914,9 +1662,6 @@ msgstr "斯坦福兔子" msgid "Text" msgstr "" -msgid "SVG" -msgstr "" - msgid "Height range Modifier" msgstr "高度范围修改器" @@ -945,10 +1690,10 @@ msgid "Fix model" msgstr "修复模型" msgid "Export as one STL" -msgstr "" +msgstr "导出为一个STL" msgid "Export as STLs" -msgstr "" +msgstr "导出为多个STL" msgid "Reload from disk" msgstr "从磁盘重新加载" @@ -1044,9 +1789,6 @@ msgstr "沿 Z 轴" msgid "Mirror along the Z axis" msgstr "沿Z轴镜像" -msgid "Mirror" -msgstr "镜像" - msgid "Mirror object" msgstr "镜像对象" @@ -1305,12 +2047,6 @@ msgstr "高度范围" msgid "Settings for height range" msgstr "高度范围设置" -msgid "Object" -msgstr "对象" - -msgid "Part" -msgstr "零件" - msgid "Layer" msgstr "层" @@ -1332,9 +2068,6 @@ msgstr "不允许修改对象中最后一个实体零件的类型。" msgid "Negative Part" msgstr "负零件" -msgid "Modifier" -msgstr "修改器" - msgid "Support Blocker" msgstr "支撑去除器" @@ -1406,9 +2139,6 @@ msgstr "填充密度(%)" msgid "Auto Brim" msgstr "自动Brim" -msgid "Auto" -msgstr "自动" - msgid "Mouse ear" msgstr "圆盘" @@ -1464,7 +2194,7 @@ msgid "Pause" msgstr "暂停" msgid "Template" -msgstr "" +msgstr "模板" msgid "Custom" msgstr "自定义" @@ -1484,9 +2214,6 @@ msgstr "自定义 G-code" msgid "Enter Custom G-code used on current layer:" msgstr "输入当前层上使用的自定义G-code:" -msgid "OK" -msgstr "确认" - msgid "Jump to Layer" msgstr "跳转到层" @@ -1541,15 +2268,15 @@ msgstr "无打印机" msgid "..." msgstr "" -msgid "Failed to connect to the server" -msgstr "无法连接服务器" - msgid "Check the status of current system services" msgstr "请检查当前系统服务状态" msgid "code" msgstr "" +msgid "Failed to connect to the server" +msgstr "无法连接服务器" + msgid "Failed to connect to cloud service" msgstr "无法连接到云服务" @@ -1722,7 +2449,7 @@ msgid "Orienting canceled." msgstr "" msgid "Filling" -msgstr "" +msgstr "正在填充" msgid "Bed filling canceled." msgstr "填充热床已取消。" @@ -1798,7 +2525,7 @@ msgid "Sending print job through cloud service" msgstr "正在通过云端服务发送打印任务" msgid "Print task sending times out." -msgstr "" +msgstr "发送打印任务超时。" msgid "Service Unavailable" msgstr "服务不可用" @@ -1988,10 +2715,10 @@ msgid "You need to select the material type and color first." msgstr "您需要先选择材料类型和颜色。" msgid "Please input a valid value (K in 0~0.3)" -msgstr "" +msgstr "请输入有效的数值 (K的范围为0~0.3)" msgid "Please input a valid value (K in 0~0.3, N in 0.6~2.0)" -msgstr "" +msgstr "请输入有效的数值 (K的范围为0~0.3,N的范围为0.6~2.0)" msgid "Other Color" msgstr "其他颜色" @@ -2157,7 +2884,7 @@ msgstr "打印机当前不支持自动补给耗材。" msgid "" "AMS filament backup is not enabled, please enable it in the AMS settings." -msgstr "" +msgstr "AMS耗材备份未启用,请在AMS设置中启用。" msgid "" "If there are two identical filaments in AMS, AMS filament backup will be " @@ -2165,6 +2892,8 @@ msgid "" "(Currently supporting automatic supply of consumables with the same brand, " "material type, and color)" msgstr "" +"如果AMS中有两卷相同的耗材,则自动补给启用。\n" +"(目前支持品牌、材料种类、颜色相同的耗材的自动补给)" msgid "AMS Settings" msgstr "AMS 设置" @@ -2324,9 +3053,6 @@ msgstr "计划上传到 `%1%`。请参阅窗口-> 打印主机上传队列" msgid "Origin" msgstr "原点" -msgid "Diameter" -msgstr "直径" - msgid "Size in X and Y of the rectangular plate." msgstr "矩形框在X和Y方向的尺寸。" @@ -2417,6 +3143,8 @@ msgid "" "it may result in material softening and clogging.The maximum safe " "temperature for the material is %d" msgstr "" +"当前腔体温度高于材料的安全温度,这可能导致材料软化和堵塞。该材料的最高安全温" +"度为 %d。" msgid "" "Too small layer height.\n" @@ -2624,19 +3352,19 @@ msgid "Paused by the Gcode inserted by user" msgstr "暂停,由于用户插入的Gcode" msgid "Motor noise showoff" -msgstr "" +msgstr "电机噪音标定结果展示" msgid "Nozzle filament covered detected pause" -msgstr "" +msgstr "裹头暂停" msgid "Cutter error pause" -msgstr "" +msgstr "切刀异常暂停" msgid "First layer error pause" -msgstr "" +msgstr "首层扫描异常暂停" msgid "Nozzle clog pause" -msgstr "" +msgstr "堵头暂停" msgid "MC" msgstr "" @@ -2702,7 +3430,7 @@ msgstr "发起打印任务失败" msgid "" "This calibration does not support the currently selected nozzle diameter" -msgstr "" +msgstr "该标定不支持当前选中喷嘴直径" msgid "Current flowrate cali param is invalid" msgstr "当前流量校准参数无效" @@ -2836,7 +3564,7 @@ msgid "Total" msgstr "总计" msgid "Tower" -msgstr "" +msgstr "擦料塔" msgid "Total Estimation" msgstr "总预估" @@ -2865,6 +3593,9 @@ msgstr "时间" msgid "Percent" msgstr "百分比" +msgid "Used filament" +msgstr "使用的耗材丝" + msgid "Layer Height (mm)" msgstr "层高(mm)" @@ -2883,9 +3614,6 @@ msgstr "温度(℃)" msgid "Volumetric flow rate (mm³/s)" msgstr "体积流量速度(mm³/s)" -msgid "Used filament" -msgstr "使用的耗材丝" - msgid "Travel" msgstr "空驶" @@ -3390,10 +4118,10 @@ msgid "Import" msgstr "导入" msgid "Export all objects as one STL" -msgstr "" +msgstr "导出所有对象为一个STL" msgid "Export all objects as STLs" -msgstr "" +msgstr "导出所有对象为多个STL" msgid "Export Generic 3MF" msgstr "导出通用 3MF" @@ -3860,16 +4588,16 @@ msgid "Downloading %d%%..." msgstr "下载中 %d%%..." msgid "Connection lost. Please retry." -msgstr "" +msgstr "连接丢失。请重试。" msgid "The device cannot handle more conversations. Please retry later." -msgstr "" +msgstr "设备无法处理更多的对话。请稍后重试。" msgid "File not exists." -msgstr "" +msgstr "文件不存在" msgid "File checksum error. Please retry." -msgstr "" +msgstr "文件校验和错误。请重试。" msgid "Not supported on the current printer version." msgstr "当前打印机的版本不支持。" @@ -3879,7 +4607,7 @@ msgstr "存储不可用,请插入SD卡。" #, c-format, boost-format msgid "Error code: %d" -msgstr "" +msgstr "错误码:%d" msgid "Speed:" msgstr "速度:" @@ -3941,7 +4669,7 @@ msgstr "清除" msgid "" "You have completed printing the mall model, \n" "but the synchronization of rating information has failed." -msgstr "" +msgstr "您已经完成了商城模型的打印,但是评分信息的同步失败了。" msgid "How do you like this printing file?" msgstr "你觉得这个打印文件怎么样?" @@ -3952,7 +4680,7 @@ msgid "" msgstr "(该模型已进行评分。您的评分将覆盖之前的评分。)" msgid "Rate" -msgstr "" +msgstr "评分" msgid "Camera" msgstr "摄像机" @@ -4023,7 +4751,7 @@ msgstr "层: %d/%d" msgid "" "Please heat the nozzle to above 170 degree before loading or unloading " "filament." -msgstr "" +msgstr "请在进料或退料前把喷嘴升温到170℃以上。" msgid "Still unload" msgstr "继续退料" @@ -4137,11 +4865,14 @@ msgid "" "\n" "Would you like to redirect to the webpage for rating?" msgstr "" +"\n" +"\n" +"您是否想要重定向到评分网页?" msgid "" "Some of your images failed to upload. Would you like to redirect to the " "webpage for rating?" -msgstr "" +msgstr "您的一些图像上传失败。您是否想要重定向到评分网页?" msgid "You can select up to 16 images." msgstr "您最多可以选择16张图像。" @@ -4217,7 +4948,7 @@ msgid "Details" msgstr "详情" msgid "New printer config available." -msgstr "" +msgstr "有新的打印机配置可用。" msgid "Wiki" msgstr "Wiki" @@ -4256,13 +4987,13 @@ msgid_plural "%1$d objects were loaded as parts of cut object" msgstr[0] "%1$d对象加载为一个切割对象的子部件" msgid "ERROR" -msgstr "" +msgstr "错误" msgid "CANCELED" -msgstr "" +msgstr "已取消" msgid "COMPLETED" -msgstr "" +msgstr "已完成" msgid "Cancel upload" msgstr "取消上传" @@ -4367,7 +5098,7 @@ msgid "Allow Prompt Sound" msgstr "允许提示音" msgid "Filament Tangle Detect" -msgstr "" +msgstr "缠料检测" msgid "Global" msgstr "全局" @@ -4464,7 +5195,7 @@ msgid "Set filaments to use" msgstr "配置可选择的材料" msgid "Search plate, object and part." -msgstr "" +msgstr "搜索盘、模型和零件。" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." @@ -4525,6 +5256,8 @@ msgid "" "clogged when printing this filament in a closed enclosure. Please open the " "front door and/or remove the upper glass." msgstr "" +"当前热床温度相对较高。在封闭式外壳中打印这种丝可能会导致喷嘴堵塞。请打开前门" +"和/或取下上部玻璃。" msgid "" "The nozzle hardness required by the filament is higher than the default " @@ -4568,26 +5301,26 @@ msgid "Please correct them in the param tabs" msgstr "请在参数页更正它们" msgid "The 3mf has following modified G-codes in filament or printer presets:" -msgstr "" +msgstr "该3mf文件中的材料或者打印机预设包含以下修改过的G-codes:" msgid "" "Please confirm that these modified G-codes are safe to prevent any damage to " "the machine!" -msgstr "" +msgstr "请确认这些修改过的G-codes是否安全,以防止对机器造成任何损坏!" msgid "Modified G-codes" -msgstr "" +msgstr "修改过的G-codes" msgid "The 3mf has following customized filament or printer presets:" -msgstr "" +msgstr "该3MF文件包含以下自定义的材料或打印机预设:" msgid "" "Please confirm that the G-codes within these presets are safe to prevent any " "damage to the machine!" -msgstr "" +msgstr "请确认这些预设中的G-codes是否安全,以防止对机器造成任何损坏!" msgid "Customized Preset" -msgstr "" +msgstr "自定义的预设" msgid "Name of components inside step file is not UTF8 format!" msgstr "step 文件中的部件名称包含非UTF8格式的字符!" @@ -4661,9 +5394,11 @@ msgid "" "The file %s already exists\n" "Do you want to replace it?" msgstr "" +"文件 %s 已经存在\n" +"您是否要替换它?" msgid "Comfirm Save As" -msgstr "" +msgstr "确认另存为" msgid "Delete object which is a part of cut object" msgstr "删除切割对象的一部分" @@ -4683,13 +5418,13 @@ msgid "Another export job is running." msgstr "有其他导出任务正在进行中。" msgid "Unable to replace with more than one volume" -msgstr "" +msgstr "超过1个零件,无法替换" msgid "Error during replace" msgstr "替换时发生错误" msgid "Replace from:" -msgstr "" +msgstr "替换:" msgid "Select a new file" msgstr "选择新文件" @@ -5045,10 +5780,10 @@ msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "如果启用,使用自由视角。如果未启用,使用约束视角。" msgid "Show splash screen" -msgstr "" +msgstr "显示启动画面" msgid "Show the splash screen during startup." -msgstr "" +msgstr "在启动时显示启动画面。" msgid "Show \"Tip of the day\" notification after start" msgstr "启动后显示“每日小贴士”通知" @@ -5057,10 +5792,10 @@ msgid "If enabled, useful hints are displayed at startup." msgstr "如果启用,将在启动时显示有用的提示。" msgid "Flushing volumes: Auto-calculate everytime the color changed." -msgstr "" +msgstr "冲刷体积:每一次更换颜色时自动计算。" msgid "If enabled, auto-calculate everytime the color changed." -msgstr "" +msgstr "如果启用,会在每一次更换颜色时自动计算。" msgid "Presets" msgstr "预设" @@ -5111,7 +5846,7 @@ msgid "Clear my choice on the unsaved projects." msgstr "清除我对未保存的项目的选择。" msgid "No warnings when loading 3MF with modified G-codes" -msgstr "" +msgstr "加载具有修改的 G-Code 的 3MF 时不会出现警告" msgid "Auto-Backup" msgstr "自动备份" @@ -5121,7 +5856,7 @@ msgid "" msgstr "定期备份你的项目,以便从偶尔的崩溃中恢复过来。" msgid "every" -msgstr "" +msgstr "每" msgid "The peroid of backup in seconds." msgstr "备份的周期" @@ -5265,10 +6000,10 @@ msgid "Add/Remove materials" msgstr "添加/删除材料" msgid "Select/Remove printers(system presets)" -msgstr "" +msgstr "选择/移除打印机(系统预设)" msgid "Create printer" -msgstr "" +msgstr "创建打印机" msgid "Incompatible" msgstr "不兼容的预设" @@ -5421,7 +6156,7 @@ msgid "(LAN)" msgstr "(局域网)" msgid "Search" -msgstr "" +msgstr "搜索" msgid "My Device" msgstr "我的设备" @@ -5582,7 +6317,7 @@ msgstr "当启用旋转花瓶模式时,I3结构的机器将不会生成延时 msgid "" "Timelapse is not supported because Print sequence is set to \"By object\"." -msgstr "" +msgstr "切片参数中开启了逐件打印,无法支持延时摄影。" msgid "Errors" msgstr "错误" @@ -5608,30 +6343,30 @@ msgstr "" #, c-format, boost-format msgid "nozzle in preset: %s %s" -msgstr "" +msgstr "预设中的喷嘴:%s %s" #, c-format, boost-format msgid "nozzle memorized: %.1f %s" -msgstr "" +msgstr "记忆中的喷嘴:%.1f %s" msgid "" "Your nozzle diameter in preset is not consistent with memorized nozzle " "diameter. Did you change your nozzle lately?" -msgstr "" +msgstr "预设中的喷嘴直径与记忆的喷嘴直径不一致。您最近更换了喷嘴吗?" #, c-format, boost-format msgid "*Printing %s material with %s may cause nozzle damage" -msgstr "" +msgstr "*使用 %s 材料和 %s 打印可能会导致喷嘴损坏" msgid "" "Please click the confirm button if you still want to proceed with printing." msgstr "如果您仍然想继续打印,请单击“确定”按钮。" msgid "Hardened Steel" -msgstr "" +msgstr "硬化钢" msgid "Stainless Steel" -msgstr "" +msgstr "不锈钢" msgid "" "Connecting to the printer. Unable to cancel during the connection process." @@ -5676,7 +6411,7 @@ msgid "Slice ok." msgstr "切片完成." msgid "View all Daily tips" -msgstr "" +msgstr "查看所有每日贴士" msgid "Failed to create socket" msgstr "无法创建套接字" @@ -5813,7 +6548,7 @@ msgstr "" "平滑模式的延时摄影需要擦料塔,否则打印件上可能会有瑕疵。您想打开擦料塔吗?" msgid "Still print by object?" -msgstr "" +msgstr "仍然按对象打印吗?" msgid "" "We have added an experimental style \"Tree Slim\" that features smaller " @@ -5849,19 +6584,25 @@ msgstr "" "当使用支持界面的支持材料时,我们推荐以下设置:\n" "0顶层z距离,0接触层间距,同心图案,并且禁用独立支撑层高" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." msgstr "" +"层高超出了打印机设置->挤出机->层高限制中的范围,这可能导致打印质量问题。" msgid "Adjust to the set range automatically? \n" -msgstr "" +msgstr "是否自动调整到范围内?\n" msgid "Adjust" -msgstr "" +msgstr "调整" msgid "Ignore" -msgstr "" +msgstr "忽略" msgid "" "When recording timelapse without toolhead, it is recommended to add a " @@ -5885,13 +6626,13 @@ msgid "Wall generator" msgstr "墙生成器" msgid "Walls and surfaces" -msgstr "" +msgstr "墙壁和表面" msgid "Bridging" -msgstr "" +msgstr "搭桥" msgid "Overhangs" -msgstr "" +msgstr "悬垂" msgid "Walls" msgstr "墙" @@ -6126,7 +6867,7 @@ msgid "Machine end G-code" msgstr "打印机结束G-code" msgid "Printing by object G-code" -msgstr "" +msgstr "逐件打印G-code" msgid "Before layer change G-code" msgstr "换层前G-code" @@ -6201,13 +6942,15 @@ msgid "" "%d Filament Preset and %d Process Preset is attached to this printer. Those " "presets would be deleted if the printer is deleted." msgstr "" +"该打印机下已关联 %d 个材料预设与 %d 个工艺预设。如删除该打印机,材料与工艺预" +"设将一并删除。" msgid "Presets inherited by other presets can not be deleted!" -msgstr "" +msgstr "不能删除被其他预设继承的预设!" msgid "The following presets inherit this preset." msgid_plural "The following preset inherits this preset." -msgstr[0] "" +msgstr[0] "以下预设继承此预设。" #. TRN Remove/Delete #, boost-format @@ -6223,6 +6966,8 @@ msgid "" "If the preset corresponds to a filament currently in use on your printer, " "please reset the filament information for that slot." msgstr "" +"确定要删除所选预设吗?\n" +"如果预设对应当前在您的打印机上使用的材料,请重新设置该槽位的材料信息。" #, boost-format msgid "Are you sure to %1% the selected preset?" @@ -6468,10 +7213,11 @@ msgid "Flushing volumes for filament change" msgstr "耗材丝更换时的冲刷体积" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" +"Orca 将会在每一次更换耗材颜色时重新计算你的冲刷体积, 你可以在 Orca Slicer > " +"偏好设置 中关闭自动计算" msgid "Flushing volume (mm³) for each filament pair." msgstr "在两个耗材丝间切换所需的冲刷量(mm³)" @@ -6503,10 +7249,10 @@ msgid "To" msgstr "到" msgid "Bambu Network plug-in not detected." -msgstr "" +msgstr "未检测到Bambu网络插件。" msgid "Click here to download it." -msgstr "" +msgstr "点此下载" msgid "Login" msgstr "登录" @@ -6532,9 +7278,6 @@ msgstr "" msgid "Ctrl+Shift+G" msgstr "" -msgid "Copy to clipboard" -msgstr "复制到剪贴板" - msgid "Paste from clipboard" msgstr "从剪切板粘贴" @@ -6542,7 +7285,7 @@ msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "显示/隐藏 3Dconnexion设备的设置对话框" msgid "Switch table page" -msgstr "" +msgstr "切换标签页" msgid "Show keyboard shortcuts list" msgstr "显示键盘快捷键列表" @@ -6645,9 +7388,6 @@ msgstr "Shift+方向键" msgid "Movement step set to 1 mm" msgstr "沿X、Y轴以1mm为步进移动对象" -msgid "Esc" -msgstr "" - msgid "keyboard 1-9: set filament for object/part" msgstr "按键1-9:设置对象/零件的耗材丝" @@ -6732,9 +7472,6 @@ msgstr "设置对象、零件使用的挤出机编号" msgid "Delete objects, parts, modifiers " msgstr "删除对象、零件、修改器" -msgid "Space" -msgstr "空格键" - msgid "Select the object/part and press space to change the name" msgstr "选中对象、零件,按空格可修改名称" @@ -6793,13 +7530,13 @@ msgid "New version of Orca Slicer" msgstr "新版本的Orca Slicer" msgid "Skip this Version" -msgstr "" +msgstr "跳过本版本" msgid "Done" msgstr "完成" msgid "Confirm and Update Nozzle" -msgstr "" +msgstr "确认并更新喷嘴" msgid "LAN Connection Failed (Sending print file)" msgstr "LAN连接失败 (发送打印文件)" @@ -6823,21 +7560,23 @@ msgid "Where to find your printer's IP and Access Code?" msgstr "在哪里可以找到打印机的IP和访问码?" msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" +msgstr "步骤3,请ping打印机的IP地址,以此检查丢包和延迟。" msgid "Test" msgstr "测试" msgid "IP and Access Code Verified! You may close the window" -msgstr "" +msgstr "IP地址和访问码验证成功!您可以关闭此窗口。" msgid "Connection failed, please double check IP and Access Code" -msgstr "" +msgstr "连接失败,请再次检查IP地址和访问码。" msgid "" "Connection failed! If your IP and Access Code is correct, \n" "please move to step 3 for troubleshooting network issues" msgstr "" +"连接失败!如果您的IP地址和访问码是正确的,\n" +"请查看第三步的提示,以便定位网络问题所在。" msgid "Model:" msgstr "型号:" @@ -7207,21 +7946,25 @@ msgstr "Organic支撑不支持可变层高。" msgid "" "Different nozzle diameters and different filament diameters is not allowed " "when prime tower is enabled." -msgstr "" +msgstr "启用擦拭塔时,不允许使用不同的喷嘴直径和不同的材料直径。" msgid "" "The Wipe Tower is currently only supported with the relative extruder " "addressing (use_relative_e_distances=1)." msgstr "" +"当前仅支持使用相对挤出器寻址(use_relative_e_distances=1)的情况下使用擦拭" +"塔。" msgid "" "Ooze prevention is currently not supported with the prime tower enabled." -msgstr "" +msgstr "当启用擦拭塔时,目前不支持防滴功能。" msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " "RepRapFirmware and Repetier G-code flavors." msgstr "" +"擦拭塔目前仅支持Marlin、RepRap/Sprinter、RepRapFirmware和Repetier G-code风" +"格。" msgid "The prime tower is not supported in \"By object\" print." msgstr "擦拭塔不支持在逐件打印模式下使用。" @@ -7369,10 +8112,10 @@ msgid "Maximum printable height which is limited by mechanism of printer" msgstr "由打印机结构约束的最大可打印高度" msgid "Preferred orientation" -msgstr "" +msgstr "零件朝向偏好" msgid "Automatically orient stls on the Z-axis upon initial import" -msgstr "" +msgstr "导入模型时自动旋转到指定的朝向" msgid "Printer preset names" msgstr "打印机预设名" @@ -7399,7 +8142,7 @@ msgid "" msgstr "如果打印机的设备用户界面的URL不同,请在此指定。" msgid "API Key / Password" -msgstr "" +msgstr "API秘钥/密码" msgid "" "Slic3r can upload G-code files to a printer host. This field should contain " @@ -7412,7 +8155,7 @@ msgid "Name of the printer" msgstr "打印机名称" msgid "HTTPS CA File" -msgstr "" +msgstr "HTTPS CA文件" msgid "" "Custom CA certificate file can be specified for HTTPS OctoPrint connections, " @@ -7446,10 +8189,10 @@ msgid "Authorization Type" msgstr "授权类型" msgid "API key" -msgstr "" +msgstr "API秘钥" msgid "HTTP digest" -msgstr "" +msgstr "HTTP摘要" msgid "Avoid crossing wall" msgstr "避免跨越外墙" @@ -7623,7 +8366,7 @@ msgid "" msgstr "稍微减小这个数值(比如0.9)可以减小桥接的材料量,来改善下垂。" msgid "Internal bridge flow ratio" -msgstr "" +msgstr "内部搭桥流量比例" msgid "" "This value governs the thickness of the internal bridge layer. This is the " @@ -7711,9 +8454,13 @@ msgid "" "This setting can also help reduce part warping due to the reduction of " "stresses in the part walls." msgstr "" +"在奇数层上,将悬垂部分的走线反转。这种交替的走线模式可以大大改善陡峭的悬" +"垂。\n" +"\n" +"这个设置也可以帮助减少零件变形,因为零件墙壁的应力减少了。" msgid "Reverse only internal perimeters" -msgstr "" +msgstr "仅反转内部墙壁" msgid "" "Apply the reverse perimeters logic only on internal perimeters. \n" @@ -7729,6 +8476,14 @@ msgid "" "Reverse Threshold to 0 so that all internal walls print in alternating " "directions on odd layers irrespective of their overhang degree." msgstr "" +"仅在内墙上应用反转墙壁逻辑。\n" +"\n" +"这个设置大大减少了零件的应力,因为它们现在是交替方向分布的。这应该减少零件变" +"形,同时保持外墙的质量。这个功能对于易变形的材料非常有用,比如ABS/ASA,也对于" +"弹性耗材,比如TPU和丝光PLA。它还可以帮助减少支撑上的悬空区域的变形。\n" +"\n" +"为了使这个设置最有效,建议将反转阈值设置为0,这样所有的内墙都会在奇数层交替打" +"印。" msgid "Reverse threshold" msgstr "反转阈值" @@ -7945,13 +8700,15 @@ msgstr "" "看起来更好,但只适用于较短的桥接距离。" msgid "Thick internal bridges" -msgstr "" +msgstr "内部搭桥用厚桥" msgid "" "If enabled, thick internal bridges will be used. It's usually recommended to " "have this feature turned on. However, consider turning it off if you are " "using large nozzles." msgstr "" +"如果启用,将使用厚内部桥接。通常建议打开此功能。但是,如果您使用大喷嘴,请考" +"虑关闭它。" msgid "Max bridge length" msgstr "最大桥接长度" @@ -7971,12 +8728,12 @@ msgid "End G-code when finish the whole printing" msgstr "所有打印结束时的结尾G-code" msgid "Between Object Gcode" -msgstr "" +msgstr "对象之间Gcode" msgid "" "Insert Gcode between objects. This parameter will only come into effect when " "you print your models object by object" -msgstr "" +msgstr "在对象之间插入 Gcode。此参数仅在逐个打印模型物体时生效。" msgid "End G-code when finish the printing of this filament" msgstr "结束使用该耗材打印时的结尾G-code" @@ -8054,6 +8811,9 @@ msgid "" "example: 80%) it will be calculated on the outer wall speed setting above. " "Set to zero for auto." msgstr "" +"此设置将影响半径小于等于small_perimeter_threshold(通常是孔洞)的围墙的速度。" +"如果以百分比表示(例如:80%),则将根据上面的外壁速度设置进行计算。设置为零时" +"为自动。" msgid "Small perimeters threshold" msgstr "微小部位周长阈值" @@ -8063,7 +8823,7 @@ msgid "" msgstr "这将设置微小部位周长的阈值。默认阈值为0mm" msgid "Walls printing order" -msgstr "" +msgstr "墙顺序" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" @@ -8089,18 +8849,32 @@ msgid "" "\n" " " msgstr "" +"内墙和外墙的打印顺序。\n" +"\n" +"使用内墙/外墙以获得最佳悬垂效果。这是因为在打印时,悬垂的墙可以粘附到相邻的围" +"墙上。但是,这个选项会导致外墙的表面质量稍微降低,因为外墙被内墙挤压。\n" +"\n" +"使用内墙/外墙/内墙以获得最佳的外部表面质量和尺寸精度,因为外墙不会受内墙的影" +"响但是,悬垂性能会降低,因为没有内墙来支撑打印外墙。此选项要求至少3层墙壁才能" +"生效,因为它首先从第3个墙壁开始打印内墙,然后是外墙,最后是第一个内墙。在大多" +"数情况下,此选项建议使用而不是外/内选项。\n" +"\n" +"使用外/内以获得与内/外/内选项相同的外部墙质量和尺寸精度优势。但是,由于新层的" +"第一次挤出是在可见表面上开始的,因此z缝隙看起来不那么一致。\n" +"\n" +" " msgid "Inner/Outer" -msgstr "" +msgstr "内墙/外墙" msgid "Outer/Inner" -msgstr "" +msgstr "外墙/内墙" msgid "Inner/Outer/Inner" -msgstr "" +msgstr "内墙/外墙/内墙" msgid "Print infill first" -msgstr "" +msgstr "首先打印填充" msgid "" "Order of wall/infill. When the tickbox is unchecked the walls are printed " @@ -8112,6 +8886,11 @@ msgid "" "external surface finish. It can also cause the infill to shine through the " "external surfaces of the part." msgstr "" +"墙/填充的顺序。当未启用时,首先打印墙壁,这在大多数情况下都是最好的。\n" +"\n" +"首先打印墙壁可能有助于极端悬垂,因为墙壁有相邻的填充物可以粘附。但是,填充物" +"会在附着在墙壁上的地方轻微地挤出打印的墙壁,导致外部表面质量更差。它还会导致" +"填充物透过零件的外部表面。" msgid "Height to rod" msgstr "到横杆高度" @@ -8412,6 +9191,8 @@ msgid "" "equal to or greater than it, it's highly recommended to open the front door " "and/or remove the upper glass to avoid cloggings." msgstr "" +"材料在这个温度下会软化,因此当热床温度等于或高于这个温度时,强烈建议打开前门" +"和/或去除上玻璃以避免堵塞。" msgid "Price" msgstr "价格" @@ -8556,7 +9337,7 @@ msgstr "" "桥接加速度。如果该值以百分比(例如50%)表示,则将根据外墙加速度进行计算。" msgid "mm/s² or %" -msgstr "" +msgstr "mm/s² 或 %" msgid "" "Acceleration of sparse infill. If the value is expressed as a percentage (e." @@ -8681,9 +9462,6 @@ msgid "" "look. This setting controls the fuzzy position" msgstr "打印外墙时随机抖动,使外表面产生绒效果。这个设置决定适用的位置。" -msgid "None" -msgstr "无" - msgid "Contour" msgstr "轮廓" @@ -8948,16 +9726,16 @@ msgstr "" "多挤出机打印" msgid "Maximum width of a segmented region" -msgstr "" +msgstr "分段区域的最大宽度" msgid "Maximum width of a segmented region. Zero disables this feature." -msgstr "" +msgstr "分段区域的最大宽度。将其设置为零会禁用此功能。" msgid "Interlocking depth of a segmented region" -msgstr "" +msgstr "分割区域的交错深度" msgid "Interlocking depth of a segmented region. Zero disables this feature." -msgstr "" +msgstr "分割区域的交错深度。0 则禁用此功能。" msgid "Ironing Type" msgstr "熨烫类型" @@ -9421,6 +10199,13 @@ msgid "" "Using lightning infill together with this option is not recommended as there " "is limited infill to anchor the extra perimeters to." msgstr "" +"此设置在每隔一层添加一层额外的内墙。这样,填充物就会垂直地夹在墙壁之间,从而" +"产生更牢固的打印件。\n" +"\n" +"启用此选项时,需要禁用确保垂直壳厚度选项。\n" +"\n" +"不建议将闪电填充与此选项一起使用,因为填充物有限,无法将额外的壁厚固定在填充" +"物上。" msgid "" "If you want to process the output G-code through custom scripts, just list " @@ -9498,9 +10283,6 @@ msgstr "换层时回抽" msgid "Force a retraction when changes layer" msgstr "强制在换层时回抽。" -msgid "Length" -msgstr "长度" - msgid "Retraction Length" msgstr "回抽长度" @@ -9625,7 +10407,7 @@ msgid "Show auto-calibration marks" msgstr "显示雷达标定线" msgid "Disable set remaining print time" -msgstr "" +msgstr "禁用M73剩余打印时间" msgid "Seam position" msgstr "接缝位置" @@ -9682,6 +10464,26 @@ msgstr "" "为了最大限度地减少闭环挤出中接缝的可见性,在挤出机离开环之前,会向内执行一个" "小小的移动。" +msgid "Wipe before external loop" +msgstr "额外的外墙打印前擦拭" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" +"为了最大限度地减少在使用外/内或内/外/内墙打印顺序时,外墙起始处的潜在过挤出," +"在外墙起始处外略微向内执行回填。这样,任何潜在的过挤都会隐藏在外表面之下。\n" +"\n" +"当使用外/内或内/外/内墙打印顺序时,这是有用的,因为在这些模式中,外墙可能会在" +"回填移动之后立即打印。" + msgid "Wipe speed" msgstr "擦拭速度" @@ -9752,20 +10554,24 @@ msgstr "" "印。最后生成的打印件没有接缝。" msgid "Smooth Spiral" -msgstr "" +msgstr "光滑螺旋模式" msgid "" "Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam " "at all, even in the XY directions on walls that are not vertical" msgstr "" +"光滑螺旋模式平滑X和Y轴移动,从而在所有方向上都没有可见的接缝,即使在不垂直的" +"墙壁上也是如此。" msgid "Max XY Smoothing" -msgstr "" +msgstr "最大XY平滑阈值" msgid "" "Maximum distance to move points in XY to try to achieve a smooth spiralIf " "expressed as a %, it will be computed over nozzle diameter" msgstr "" +"在XY平面上移动点的最大距离,以尝试实现平滑的螺旋。如果以%表示,它将基于喷嘴直" +"径来计算。" msgid "" "If smooth or traditional mode is selected, a timelapse video will be " @@ -9962,11 +10768,11 @@ msgstr "" "打印支撑主体和筏层的耗材丝。\"缺省\"代表不指定特定的耗材丝,并使用当前耗材" msgid "Avoid interface filament for base" -msgstr "" +msgstr "界面材料不用于主体" msgid "" "Avoid using support interface filament to print support base if possible." -msgstr "" +msgstr "避免使用支撑界面材料打印支撑主体。" msgid "" "Line width of support. If expressed as a %, it will be computed over the " @@ -9998,10 +10804,10 @@ msgid "Bottom interface layers" msgstr "底部接触面层数" msgid "Number of bottom interface layers" -msgstr "" +msgstr "底部界面层的数量" msgid "Same as top" -msgstr "" +msgstr "和顶部相同" msgid "Top interface spacing" msgstr "顶部接触面线距" @@ -10209,10 +11015,10 @@ msgstr "" "墙,请将该值设置为0。" msgid "Support wall loops" -msgstr "" +msgstr "支撑外墙层数" msgid "This setting specify the count of walls around support" -msgstr "" +msgstr "此设置指定了支撑的外墙层数" msgid "Tree support with infill" msgstr "树状支撑生成填充" @@ -10243,6 +11049,10 @@ msgid "" "high to avoid cloggings, so 0 which stands for turning off is highly " "recommended" msgstr "" +"更高的腔温可以帮助抑制或减少翘曲,同时可能会提高高温材料(如ABS、ASA、PC、PA" +"等)的层间粘合强度。与此同时,ABS和ASA的空气过滤性能会变差。而对于PLA、PETG、" +"TPU、PVA等低温材料,为了避免堵塞,实际的腔温不应该过高,因此强烈建议使用0(表" +"示关闭)。" msgid "Nozzle temperature for layers after the initial one" msgstr "除首层外的其它层的喷嘴温度" @@ -10354,9 +11164,6 @@ msgstr "清理量" msgid "The volume of material to prime extruder on tower." msgstr "擦拭塔上的清理量" -msgid "Width" -msgstr "宽度" - msgid "Width of prime tower" msgstr "擦拭塔宽度" @@ -10514,8 +11321,8 @@ msgstr "使用相对E距离" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" msgid "" @@ -10898,7 +11705,7 @@ msgstr "名称不能为空。" #, c-format, boost-format msgid "The selected preset: %s is not found." -msgstr "" +msgstr "未找到选定的预设:%s。" msgid "The name cannot be the same as the system preset name." msgstr "名称不能与系统预设名称相同。" @@ -11223,7 +12030,7 @@ msgstr "" "-不同的耗材品牌和系列(Brand = Bambu, Family = Basic, Matte)" msgid "Pattern" -msgstr "" +msgstr "图案" msgid "Method" msgstr "方法" @@ -11239,10 +12046,10 @@ msgid "Connecting to printer" msgstr "正在连接打印机" msgid "From k Value" -msgstr "" +msgstr "起始k值" msgid "To k Value" -msgstr "" +msgstr "结束k值" msgid "Step value" msgstr "" @@ -11522,10 +12329,10 @@ msgid "Intersection" msgstr "交集" msgid "Source Volume" -msgstr "" +msgstr "源体积" msgid "Tool Volume" -msgstr "" +msgstr "工具体积" msgid "Subtract from" msgstr "从中减去" @@ -11546,211 +12353,212 @@ msgid "Delete input" msgstr "删除输入" msgid "Network Test" -msgstr "" +msgstr "网络测试" msgid "Start Test Multi-Thread" -msgstr "" +msgstr "多线程开始测试" msgid "Start Test Single-Thread" -msgstr "" +msgstr "单线程开始测试" msgid "Export Log" -msgstr "" +msgstr "输出日志" msgid "Studio Version:" -msgstr "" +msgstr "Studio 版本:" msgid "System Version:" -msgstr "" +msgstr "系统版本:" msgid "DNS Server:" -msgstr "" +msgstr "DNS服务:" msgid "Test BambuLab" -msgstr "" +msgstr "测试 BambuLab" msgid "Test BambuLab:" -msgstr "" +msgstr "测试 BambuLab:" msgid "Test Bing.com" -msgstr "" +msgstr "测试 Bing.com" msgid "Test bing.com:" -msgstr "" +msgstr "测试 Bing.com:" msgid "Test HTTP" -msgstr "" +msgstr "测试 HTTP" msgid "Test HTTP Service:" -msgstr "" +msgstr "测试 HTTP 服务:" msgid "Test storage" -msgstr "" +msgstr "测试存储" msgid "Test Storage Upload:" -msgstr "" +msgstr "测试存储上传:" msgid "Test storage upgrade" -msgstr "" +msgstr "测试存储升级" msgid "Test Storage Upgrade:" -msgstr "" +msgstr "测试存储升级:" msgid "Test storage download" -msgstr "" +msgstr "测试存储下载" msgid "Test Storage Download:" -msgstr "" +msgstr "测试存储下载:" msgid "Test plugin download" -msgstr "" +msgstr "测试插件下载" msgid "Test Plugin Download:" -msgstr "" +msgstr "测试插件下载:" msgid "Test Storage Upload" -msgstr "" +msgstr "测试存储上传" msgid "Log Info" -msgstr "" +msgstr "日志信息" msgid "Select filament preset" -msgstr "" +msgstr "选择材料预设" msgid "Create Filament" -msgstr "" +msgstr "创建材料" msgid "Create Based on Current Filament" -msgstr "" +msgstr "基于当前材料创建" msgid "Copy Current Filament Preset " -msgstr "" +msgstr "复制当前材料预设" msgid "Basic Information" -msgstr "" +msgstr "基本信息" msgid "Add Filament Preset under this filament" -msgstr "" +msgstr "添加该材料的材料预设" msgid "We could create the filament presets for your following printer:" -msgstr "" +msgstr "我们可以为您的以下打印机创建材料预设:" msgid "Select Vendor" -msgstr "" +msgstr "选择供应商" msgid "Input Custom Vendor" -msgstr "" +msgstr "输入自定义供应商" msgid "Can't find vendor I want" -msgstr "" +msgstr "找不到我想要的供应商" msgid "Select Type" -msgstr "" +msgstr "选择类型" msgid "Select Filament Preset" -msgstr "" +msgstr "选择材料预设" msgid "Serial" -msgstr "" +msgstr "系列" msgid "e.g. Basic, Matte, Silk, Marble" -msgstr "" +msgstr "例如:Basic, Matte, Silk, Marble" msgid "Filament Preset" -msgstr "" +msgstr "材料预设" msgid "Create" -msgstr "" +msgstr "创建" msgid "Vendor is not selected, please reselect vendor." -msgstr "" +msgstr "未选择供应商,请重新选择供应商。" msgid "Custom vendor is not input, please input custom vendor." -msgstr "" +msgstr "未输入自定义供应商,请输入自定义供应商。" msgid "" "\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." -msgstr "" +msgstr "“Bambu”或者“Generic”不能用于自定义材料的厂商" msgid "Filament type is not selected, please reselect type." -msgstr "" +msgstr "未选择材料类型,请重新选择。" msgid "Filament serial is not inputed, please input serial." -msgstr "" +msgstr "未输入材料系列,请输入材料系列。" msgid "" "There may be escape characters in the vendor or serial input of filament. " "Please delete and re-enter." -msgstr "" +msgstr "材料的供应商或系列输入中可能包含转义字符。请删除并重新输入。" msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." -msgstr "" +msgstr "自定义供应商或系列中的所有输入都是空格。请重新输入。" msgid "The vendor can not be a number. Please re-enter." -msgstr "" +msgstr "自定义供应商不能是数字。请重新输入。" msgid "" "You have not selected a printer or preset yet. Please select at least one." -msgstr "" +msgstr "您还没有选择打印机或预设。请至少选择一个。" msgid "Some existing presets have failed to be created, as follows:\n" -msgstr "" +msgstr "以下一些现有预设未能成功创建:\n" msgid "" "\n" "Do you want to rewrite it?" msgstr "" +"\n" +"你想重写预设吗" msgid "" "We would rename the presets as \"Vendor Type Serial @printer you selected" "\". \n" "To add preset for more prinetrs, Please go to printer selection" msgstr "" +"我们会将预设重命名为“供应商 类型 系列 @您选择的打印机”。\n" +"要为更多的打印机添加预设,请前往打印机选择。" msgid "Create Printer/Nozzle" -msgstr "" +msgstr "创建打印机/喷嘴" msgid "Create Printer" -msgstr "" +msgstr "创建打印机" msgid "Create Nozzle for Existing Printer" -msgstr "" +msgstr "为现有打印机创建喷嘴" msgid "Create from Template" -msgstr "" +msgstr "基于模板创建" msgid "Create Based on Current Printer" -msgstr "" - -msgid "wiki" -msgstr "" +msgstr "基于当前打印机创建" msgid "Import Preset" -msgstr "" +msgstr "导入预设" msgid "Create Type" -msgstr "" +msgstr "创建类型" msgid "The model is not fond, place reselect vendor." -msgstr "" +msgstr "该模型未找到,请重新选择供应商。" msgid "Select Model" -msgstr "" +msgstr "选择型号" msgid "Select Printer" -msgstr "" +msgstr "选择打印机" msgid "Input Custom Model" -msgstr "" +msgstr "输入自定义型号" msgid "Can't find my printer model" -msgstr "" +msgstr "不能找到我的打印机模型" msgid "Rectangle" -msgstr "" +msgstr "矩形" msgid "Printable Space" -msgstr "" +msgstr "可打印形状" msgid "X" msgstr "" @@ -11759,66 +12567,66 @@ msgid "Y" msgstr "" msgid "Hot Bed STL" -msgstr "" +msgstr "热床STL模型" msgid "Load stl" -msgstr "" +msgstr "加载stl" msgid "Hot Bed SVG" -msgstr "" +msgstr "热床SVG图片" msgid "Load svg" -msgstr "" +msgstr "加载svg" msgid "Max Print Height" -msgstr "" +msgstr "最大打印高度" #, c-format, boost-format msgid "The file exceeds %d MB, please import again." -msgstr "" +msgstr "文件超过 %d MB,请重新导入。" msgid "Exception in obtaining file size, please import again." -msgstr "" +msgstr "获取文件大小异常,请重新导入。" msgid "Preset path is not find, please reselect vendor." -msgstr "" +msgstr "预设路径未找到,请重新选择供应商。" msgid "The printer model was not found, please reselect." -msgstr "" +msgstr "未找到打印机型号,请重新选择。" msgid "The nozzle diameter is not fond, place reselect." -msgstr "" +msgstr "未找到喷嘴直径,请重新选择。" msgid "The printer preset is not fond, place reselect." -msgstr "" +msgstr "打印机预设未找到,请重新选择。" msgid "Printer Preset" -msgstr "" +msgstr "打印机预设" msgid "Filament Preset Template" -msgstr "" +msgstr "材料预设模板" msgid "Deselect All" -msgstr "" +msgstr "全部取消选中" msgid "Process Preset Template" -msgstr "" +msgstr "工艺预设模板" msgid "Back Page 1" -msgstr "" +msgstr "返回第一页" msgid "" "You have not yet chosen which printer preset to create based on. Please " "choose the vendor and model of the printer" -msgstr "" +msgstr "您尚未选择要基于哪个打印机预设来创建。请先选择打印机的供应商和型号。" msgid "" "You have entered an illegal input in the printable area section on the first " "page. Please check before creating it." -msgstr "" +msgstr "您在第一页的可打印区域部分输入了非法输入。请检查后再创建。" msgid "The custom printer or model is not inputed, place input." -msgstr "" +msgstr "自定义打印机或型号未输入,请输入。" msgid "" "The printer preset you created already has a preset with the same name. Do " @@ -11829,60 +12637,64 @@ msgid "" "reserve.\n" "\tCancel: Do not create a preset, return to the creation interface." msgstr "" +"\"您创建的打印机预设已经有一个同名的预设。您想要覆盖它吗?\n" +"- 是:覆盖同名的打印机预设,具有相同预设名称的材料和工艺预设将被重新创建,没" +"有相同预设名称的材料和工艺预设将被保留。\n" +"- 取消:不创建预设,返回到创建界面。\"" msgid "You need to select at least one filament preset." -msgstr "" +msgstr "您需要至少选择一个材料预设。" msgid "You need to select at least one process preset." -msgstr "" +msgstr "您需要至少选择一个工艺预设。" msgid "Create filament presets failed. As follows:\n" -msgstr "" +msgstr "创建材料预设失败。如下:\n" msgid "Create process presets failed. As follows:\n" -msgstr "" +msgstr "创建工艺预设失败。如下:\n" msgid "Vendor is not find, please reselect." -msgstr "" +msgstr "供应商未找到,请重新选择。" msgid "Current vendor has no models, please reselect." -msgstr "" +msgstr "当前的供应商没有模型,请重新选择。" msgid "" "You have not selected the vendor and model or inputed the custom vendor and " "model." -msgstr "" +msgstr "您还没有选择供应商和模型,或者没有输入自定义供应商和模型。" msgid "" "There may be escape characters in the custom printer vendor or model. Please " "delete and re-enter." -msgstr "" +msgstr "自定义打印机供应商或型号中可能有转义字符。请删除并重新输入。" msgid "" "All inputs in the custom printer vendor or model are spaces. Please re-enter." -msgstr "" +msgstr "自定义打印机供应商或型号的所有输入都是空格。请重新输入。" msgid "Please check bed printable shape and origin input." -msgstr "" +msgstr "请检查可打印区域和原点的输入。" msgid "" "You have not yet selected the printer to replace the nozzle, please choose." -msgstr "" +msgstr "您尚未选择要更换喷嘴的打印机,请进行选择。" msgid "Create Printer Successful" -msgstr "" +msgstr "创建打印机成功" msgid "Create Filament Successful" -msgstr "" +msgstr "创建材料成功" msgid "Printer Created" -msgstr "" +msgstr "打印机已创建" msgid "Please go to printer settings to edit your presets" -msgstr "" +msgstr "请去打印机设置编辑您的预设" msgid "Filament Created" -msgstr "" +msgstr "材料已创建" msgid "" "Please go to filament setting to edit your presets if you need.\n" @@ -11890,45 +12702,47 @@ msgid "" "volumetric speed have a significant impact on printing quality. Please set " "them carefully." msgstr "" +"如果需要,请转到灯丝设置以编辑您的预设。\n" +"请注意喷嘴温度、热床温度和最大体积流量对打印质量有重大影响。请小心设置它们。" msgid "Printer Setting" -msgstr "" +msgstr "打印机设置" msgid "Export Configs" -msgstr "" +msgstr "导出预设" msgid "Printer config bundle(.bbscfg)" -msgstr "" +msgstr "打印机预设集(.bbscfg)" msgid "Filament bundle(.bbsflmt)" -msgstr "" +msgstr "材料预设集(.bbsflmt)" msgid "Printer presets(.zip)" -msgstr "" +msgstr "打印机预设(.zip)" msgid "Filament presets(.zip)" -msgstr "" +msgstr "材料预设(.zip)" msgid "Process presets(.zip)" -msgstr "" +msgstr "工艺预设(.zip)" msgid "initialize fail" -msgstr "" +msgstr "初始化失败" msgid "add file fail" -msgstr "" +msgstr "添加文件失败" msgid "add bundle structure file fail" -msgstr "" +msgstr "添加预设集结构文件失败" msgid "finalize fail" -msgstr "" +msgstr "写入失败" msgid "open zip written fail" -msgstr "" +msgstr "打开zip写入失败" msgid "Export successful" -msgstr "" +msgstr "导出成功" #, c-format, boost-format msgid "" @@ -11937,133 +12751,148 @@ msgid "" "If not, a time suffix will be added, and you can modify the name after " "creation." msgstr "" +"当前目录中已存在名为 '%s' 的文件夹。您要清除它并重新构建吗?\n" +"如果不清除,将会在文件夹名后添加时间后缀,您可以在创建后进行修改。" msgid "" "Printer and all the filament&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" +"打印机和属于打印机的所有的材料和工艺预设。\n" +"能与他人分享。" msgid "" "User's fillment preset set. \n" "Can be shared with others." msgstr "" +"用户材料预设集。\n" +"能与他人分享。" msgid "" "Only display printer names with changes to printer, filament, and process " "presets." -msgstr "" +msgstr "仅显示发生了更改的打印机、材料和工艺预设的打印机名称。" msgid "Only display the filament names with changes to filament presets." -msgstr "" +msgstr "仅显示发生了更改的材料预设的材料名称。" msgid "" "Only printer names with user printer presets will be displayed, and each " "preset you choose will be exported as a zip." msgstr "" +"只显示带有用户打印机预设的打印机名称,并且您选择的每个预设都将导出为一个ZIP文" +"件。" msgid "" "Only the filament names with user filament presets will be displayed, \n" "and all user filament presets in each filament name you select will be " "exported as a zip." msgstr "" +"只显示带有用户材料预设的材料名称,您选择的每个材料名称中的所有用户材料预设都" +"将导出为一个ZIP文件。" msgid "" "Only printer names with changed process presets will be displayed, \n" "and all user process presets in each printer name you select will be " "exported as a zip." msgstr "" +"只显示带有更改的工艺预设的打印机名称,您选择的每个打印机名称中的所有用户工艺" +"预设都将导出为一个ZIP文件。" msgid "Please select at least one printer or filament." -msgstr "" +msgstr "请至少选择一种打印机或耗材丝。" msgid "Please select a type you want to export" -msgstr "" +msgstr "请选择一个你想导出的类型" msgid "Edit Filament" -msgstr "" +msgstr "编辑材料" msgid "Filament presets under this filament" -msgstr "" +msgstr "此材料下的所有材料预设" msgid "" "Note: If the only preset under this filament is deleted, the filament will " "be deleted after exiting the dialog." msgstr "" +"注意:如果在该材料下仅有的预设被删除,那么在退出对话框后该材料将被删除。" msgid "Presets inherited by other presets can not be deleted" -msgstr "" +msgstr "被其他预设继承的预设不能被删除。" msgid "The following presets inherits this preset." msgid_plural "The following preset inherits this preset." -msgstr[0] "" +msgstr[0] "以下预设继承此预设。" msgid "Delete Preset" -msgstr "" +msgstr "删除预设" msgid "Are you sure to delete the selected preset?" -msgstr "" +msgstr "你确定要删除所选预设?" msgid "Delete preset" -msgstr "" +msgstr "删除预设" msgid "+ Add Preset" -msgstr "" +msgstr "+ 添加预设" msgid "Delete Filament" -msgstr "" +msgstr "删除材料" msgid "" "All the filament presets belong to this filament would be deleted. \n" "If you are using this filament on your printer, please reset the filament " "information for that slot." msgstr "" +"删除材料后,附属的材料预设也会被一并删除。\n" +"如果该材料正在您的打印机上使用,请重新设置该槽位的材料信息。" msgid "Delete filament" -msgstr "" +msgstr "删除材料" msgid "Add Preset" -msgstr "" +msgstr "添加预设" msgid "Add preset for new printer" -msgstr "" +msgstr "为新打印机添加预设" msgid "Copy preset from filament" -msgstr "" +msgstr "从材料中复制预设" msgid "The filament choice not find filament preset, please reselect it" -msgstr "" +msgstr "您选择的材料未找到材料预设,请重新选择。" msgid "Edit Preset" -msgstr "" +msgstr "编辑预设" msgid "For more information, please check out Wiki" -msgstr "" +msgstr "了解更多信息,请参阅Wiki" msgid "Collapse" -msgstr "" +msgstr "收起" msgid "Daily Tips" -msgstr "" +msgstr "每日贴士" msgid "Need select printer" msgstr "需要选择打印机" msgid "The start, end or step is not valid value." -msgstr "" +msgstr "起始、结束或者步长输入值无效。" msgid "" "Unable to calibrate: maybe because the set calibration value range is too " "large, or the step is too small" -msgstr "" +msgstr "无法标定:可能是标定值范围过大,或者是补偿过小" msgid "Physical Printer" msgstr "物理打印机" msgid "Print Host upload" -msgstr "" +msgstr "打印主机上传" msgid "Could not get a valid Printer Host reference" -msgstr "" +msgstr "无法获取有效的打印机主机引用" msgid "Success!" msgstr "成功!" @@ -12074,96 +12903,96 @@ msgstr "刷新打印机" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" "signed certificate." -msgstr "" +msgstr "HTTPS CA文件是可选的。只有在使用自签名证书进行HTTPS连接时才需要。" msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "" msgid "Open CA certificate file" -msgstr "" +msgstr "打开CA证书文件" #, c-format, boost-format msgid "" "On this system, %s uses HTTPS certificates from the system Certificate Store " "or Keychain." -msgstr "" +msgstr "在此系统上,%s 使用来自系统证书存储或密钥链的HTTPS证书。" msgid "" "To use a custom CA file, please import your CA file into Certificate Store / " "Keychain." -msgstr "" +msgstr "要使用自定义 CA 文件,请将您的 CA 文件导入到证书存储 / 密钥链中。" msgid "Connection to printers connected via the print host failed." -msgstr "" +msgstr "连接到通过打印主机连接的打印机失败。" #, c-format, boost-format msgid "Mismatched type of print host: %s" -msgstr "" +msgstr "打印主机的类型不匹配:%s" msgid "Connection to AstroBox works correctly." -msgstr "" +msgstr "与 AstroBox 的连接正常。" msgid "Could not connect to AstroBox" -msgstr "" +msgstr "无法连接到 AstroBox。" msgid "Note: AstroBox version at least 1.1.0 is required." -msgstr "" +msgstr "请注意,需要至少 AstroBox 版本 1.1.0。" msgid "Connection to Duet works correctly." -msgstr "" +msgstr "成功连接到 Duet 控制器。" msgid "Could not connect to Duet" -msgstr "" +msgstr "无法连接到 Duet 控制器。" msgid "Unknown error occured" -msgstr "" +msgstr "发生了未知错误。" msgid "Wrong password" -msgstr "" +msgstr "密码错误。" msgid "Could not get resources to create a new connection" -msgstr "" +msgstr "无法获取资源以创建新连接。" msgid "Upload not enabled on FlashAir card." -msgstr "" +msgstr "FlashAir卡未启用上传。" msgid "Connection to FlashAir works correctly and upload is enabled." -msgstr "" +msgstr "FlashAir连接正常,并启用了上传。" msgid "Could not connect to FlashAir" -msgstr "" +msgstr "FlashAir 连接失败。" msgid "" "Note: FlashAir with firmware 2.00.02 or newer and activated upload function " "is required." -msgstr "" +msgstr "需要 FlashAir 固件版本为 2.00.02 或更高,并激活上传功能。" msgid "Connection to MKS works correctly." -msgstr "" +msgstr "MKS的连接正常。" msgid "Could not connect to MKS" -msgstr "" +msgstr "无法连接到MKS。" msgid "Connection to OctoPrint works correctly." -msgstr "" +msgstr "成功连接到 OctoPrint。" msgid "Could not connect to OctoPrint" -msgstr "" +msgstr "无法连接到OctoPrint" msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "" +msgstr "注意:至少需要 OctoPrint 版本 1.1.0。" msgid "Connection to Prusa SL1 / SL1S works correctly." -msgstr "" +msgstr "与 Prusa SL1 / SL1S 的连接正常。" msgid "Could not connect to Prusa SLA" -msgstr "" +msgstr "无法连接到 Prusa SLA。" msgid "Connection to PrusaLink works correctly." -msgstr "" +msgstr "连接到 PrusaLink 的连接正常。" msgid "Could not connect to PrusaLink" -msgstr "" +msgstr "无法连接到 PrusaLink。" msgid "Storages found" msgstr "" @@ -12190,19 +13019,21 @@ msgid "Could not connect to Prusa Connect" msgstr "" msgid "Connection to Repetier works correctly." -msgstr "" +msgstr "与 Repetier 的连接正常。" msgid "Could not connect to Repetier" -msgstr "" +msgstr "无法连接到Repetier" msgid "Note: Repetier version at least 0.90.0 is required." -msgstr "" +msgstr "注意:需要 Repetier 版本至少为 0.90.0。" #, boost-format msgid "" "HTTP status: %1%\n" "Message body: \"%2%\"" msgstr "" +"HTTP状态:%1%\n" +"消息体:\"%2%\"" #, boost-format msgid "" @@ -12210,13 +13041,15 @@ msgid "" "Message body: \"%1%\"\n" "Error: \"%2%\"" msgstr "" +"主机响应解析失败。\n" +"消息体:\"%1%\"错误:\"%2%\"" #, boost-format msgid "" "Enumeration of host printers failed.\n" "Message body: \"%1%\"\n" "Error: \"%2%\"" -msgstr "" +msgstr "主机打印机的枚举失败。消息体:\"%1%\"错误:\"%2%\"" #: resources/data/hints.ini: [hint:Precise wall] msgid "" @@ -12258,6 +13091,19 @@ msgid "" "Did you know that OrcaSlicer can support Air filtration/Exhuast Fan?" msgstr "" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12265,6 +13111,13 @@ msgid "" "3D scene operations." msgstr "" +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -12280,6 +13133,8 @@ msgid "" "Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " "problems on the Windows system?" msgstr "" +"修复模型\n" +"您知道吗?在Windows系统上,您可以修复一个损坏的3D模型以避免诸多切片问题。" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -12507,6 +13362,9 @@ msgid "" "extruder/hotend clogging when printing lower temperature filament with a " "higher enclosure temperature. More info about this in the Wiki." msgstr "" +"什么时候需要打开机箱门打印\n" +"您知道吗?在较高腔温下打印低温耗材,打开机箱门可以减少挤出机/热端堵塞的概率。" +"有关此的更多信息,请参阅Wiki。" #: resources/data/hints.ini: [hint:Avoid warping] msgid "" @@ -12515,6 +13373,42 @@ msgid "" "ABS, appropriately increasing the heatbed temperature can reduce the " "probability of warping." msgstr "" +"避免翘曲\n" +"您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。" + +#~ msgid "Movement:" +#~ msgstr "移动:" + +#~ msgid "Movement" +#~ msgstr "移动" + +#~ msgid "Auto Segment" +#~ msgstr "自动分割" + +#~ msgid "Depth ratio" +#~ msgstr "深度" + +#~ msgid "Prizm" +#~ msgstr "棱柱" + +#~ msgid "connector is out of cut contour" +#~ msgstr "个连接件超出了切割面范围" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "个连接件超出了切割面范围" + +#~ msgid "connector is out of object" +#~ msgstr "个连接件穿透了模型" + +#~ msgid "connectors is out of object" +#~ msgstr "个连接件穿透了模型" + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "无效状态。\n" +#~ "切割后没有选中要保留的部分" #~ msgid "Edit Text" #~ msgstr "编辑文字" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 114f7b64fb..7f8561a9c2 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 22:15+0800\n" +"POT-Creation-Date: 2023-12-28 00:20+0800\n" "PO-Revision-Date: 2023-11-06 14:37+0800\n" "Last-Translator: ablegods \n" "Language-Team: \n" @@ -233,6 +233,9 @@ msgstr "mm" msgid "Position" msgstr "位置" +#. TRN - Input label. Be short as possible +#. Angle between Y axis and text line direction. +#. TRN - Input label. Be short as possible msgid "Rotation" msgstr "旋轉" @@ -275,6 +278,7 @@ msgstr "世界坐標" msgid "°" msgstr "" +#. TRN - Input label. Be short as possible msgid "Size" msgstr "尺寸" @@ -284,6 +288,114 @@ msgstr "" msgid "uniform scale" msgstr "等比例縮放" +msgid "Planar" +msgstr "" + +msgid "Dovetail" +msgstr "" + +msgid "Auto" +msgstr "自動" + +msgid "Manual" +msgstr "" + +msgid "Plug" +msgstr "插銷" + +msgid "Dowel" +msgstr "銷釘" + +msgid "Snap" +msgstr "" + +msgid "Prism" +msgstr "" + +msgid "Frustum" +msgstr "錐體" + +msgid "Square" +msgstr "正方形" + +msgid "Hexagon" +msgstr "六邊形" + +msgid "Keep orientation" +msgstr "" + +#, fuzzy +msgid "Place on cut" +msgstr "切割面放置到列印板上" + +msgid "Flip upside down" +msgstr "" + +msgid "Connectors" +msgstr "連接件" + +msgid "Type" +msgstr "類型" + +msgid "Style" +msgstr "樣式" + +msgid "Shape" +msgstr "形狀" + +#. TRN - Input label. Be short as possible +#. Size in emboss direction +#. TRN - Input label. Be short as possible +msgid "Depth" +msgstr "" + +msgid "Groove" +msgstr "" + +msgid "Width" +msgstr "寬度" + +msgid "Flap Angle" +msgstr "" + +msgid "Groove Angle" +msgstr "" + +msgid "Part" +msgstr "零件" + +msgid "Object" +msgstr "物件" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane" +msgstr "" + +msgid "" +"Click to flip the cut plane\n" +"Drag to move the cut plane\n" +"Right-click a part to assign it to the other side" +msgstr "" + +msgid "Move cut plane" +msgstr "" + +msgid "Mode" +msgstr "" + +msgid "Change cut mode" +msgstr "" + +msgid "Tolerance" +msgstr "公差" + +msgid "Drag" +msgstr "拖拉" + +msgid "Draw cut line" +msgstr "" + msgid "Left click" msgstr "滑鼠左鍵" @@ -296,9 +408,6 @@ msgstr "滑鼠右鍵" msgid "Remove connector" msgstr "刪除連接件" -msgid "Drag" -msgstr "拖拉" - msgid "Move connector" msgstr "移動連接件" @@ -315,23 +424,51 @@ msgstr "選擇所有連接件" msgid "Cut" msgstr "切割" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "Rotate cut plane" msgstr "" -msgid "Repairing model object" -msgstr "修復模型物件" +msgid "Remove connectors" +msgstr "刪除所有連接件" -msgid "Connector" -msgstr "連接件" +msgid "Bulge" +msgstr "" -msgid "Movement:" -msgstr "移動:" +msgid "Bulge proportion related to radius" +msgstr "" -msgid "Movement" -msgstr "移動" +msgid "Space" +msgstr "空格鍵" -msgid "Height" -msgstr "高度" +msgid "Space proportion related to radius" +msgstr "" + +msgid "Confirm connectors" +msgstr "確認" + +msgid "Cancel" +msgstr "取消" + +msgid "Build Volume" +msgstr "" + +msgid "Flip cut plane" +msgstr "" + +msgid "Groove change" +msgstr "" + +msgid "Reset" +msgstr "重設" + +#. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. +msgid "Edited" +msgstr "" + +msgid "Cut position" +msgstr "" + +msgid "Reset cutting plane" +msgstr "" msgid "Edit connectors" msgstr "編輯連接件" @@ -339,6 +476,12 @@ msgstr "編輯連接件" msgid "Add connectors" msgstr "新增連接件" +msgid "Reset cut" +msgstr "" + +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Upper part" msgstr "上半部分" @@ -349,10 +492,6 @@ msgstr "下半部分" msgid "Keep" msgstr "保留" -#, fuzzy -msgid "Place on cut" -msgstr "切割面放置到列印板上" - msgid "Flip" msgstr "翻轉" @@ -362,87 +501,54 @@ msgstr "切割後" msgid "Cut to parts" msgstr "切割為零件" -msgid "Auto Segment" -msgstr "自動分割" - msgid "Perform cut" msgstr "執行切割" -msgid "Reset" -msgstr "重設" - -msgid "Connectors" -msgstr "連接件" - -msgid "Type" -msgstr "類型" - -msgid "Style" -msgstr "樣式" - -msgid "Shape" -msgstr "形狀" - -msgid "Depth ratio" -msgstr "深度" - -msgid "Remove connectors" -msgstr "刪除所有連接件" - -msgid "Prizm" -msgstr "稜柱" - -msgid "Frustum" -msgstr "錐體" - -msgid "Square" -msgstr "正方形" - -msgid "Hexagon" -msgstr "六邊形" - -msgid "Confirm connectors" -msgstr "確認" - -msgid "Cancel" -msgstr "取消" - msgid "Warning" msgstr "警告" msgid "Invalid connectors detected" msgstr "偵測到無效連接件" -msgid "connector is out of cut contour" -msgstr "個連接件超出了切割面範圍" +#, c-format, boost-format +msgid "%1$d connector is out of cut contour" +msgid_plural "%1$d connectors are out of cut contour" +msgstr[0] "" -msgid "connectors are out of cut contour" -msgstr "個連接件超出了切割面範圍" - -msgid "connector is out of object" -msgstr "個連接件穿透了模型" - -msgid "connectors is out of object" -msgstr "個連接件穿透了模型" +#, c-format, boost-format +msgid "%1$d connector is out of object" +msgid_plural "%1$d connectors are out of object" +msgstr[0] "" msgid "Some connectors are overlapped" msgstr "存在連接件相互重疊" -msgid "" -"Invalid state. \n" -"No one part is selected for keep after cut" +msgid "Select at least one object to keep after cutting." msgstr "" -"無效狀態。\n" -"切割後沒有選取要保留的部分" -msgid "Plug" -msgstr "插銷" +msgid "Cut plane is placed out of object" +msgstr "" -msgid "Dowel" -msgstr "銷釘" +msgid "Cut plane with groove is invalid" +msgstr "" -msgid "Tolerance" -msgstr "公差" +msgid "Connector" +msgstr "連接件" + +msgid "Cut by Plane" +msgstr "" + +msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgstr "" + +msgid "Repairing model object" +msgstr "修復模型物件" + +msgid "Cut by line" +msgstr "" + +msgid "Delete connector" +msgstr "" msgid "Mesh name" msgstr "Mesh名" @@ -541,6 +647,8 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +#. TRN - Input label. Be short as possible +#. Select look of letter shape msgid "Font" msgstr "字體" @@ -577,6 +685,655 @@ msgstr "旋轉文字" msgid "Text shape" msgstr "新增文字" +msgid "Set Mirror" +msgstr "" + +msgid "Embossed text" +msgstr "" + +msgid "Enter emboss gizmo" +msgstr "" + +msgid "Leave emboss gizmo" +msgstr "" + +msgid "Embossing actions" +msgstr "" + +msgid "Emboss" +msgstr "" + +msgid "Text-Rotate" +msgstr "" + +msgid "NORMAL" +msgstr "" + +msgid "SMALL" +msgstr "" + +msgid "ITALIC" +msgstr "" + +msgid "SWISS" +msgstr "" + +msgid "MODERN" +msgstr "" + +msgid "First font" +msgstr "" + +msgid "Default font" +msgstr "" + +msgid "Advanced" +msgstr "高級" + +msgid "" +"The text cannot be written using the selected font. Please try choosing a " +"different font." +msgstr "" + +msgid "Embossed text cannot contain only white spaces." +msgstr "" + +msgid "Text contains character glyph (represented by '?') unknown by font." +msgstr "" + +msgid "Text input doesn't show font skew." +msgstr "" + +msgid "Text input doesn't show font boldness." +msgstr "" + +msgid "Text input doesn't show gap between lines." +msgstr "" + +msgid "Too tall, diminished font height inside text input." +msgstr "" + +msgid "Too small, enlarged font height inside text input." +msgstr "" + +msgid "Text doesn't show current horizontal alignment." +msgstr "" + +msgid "Revert font changes." +msgstr "" + +#, boost-format +msgid "Font \"%1%\" can't be selected." +msgstr "" + +msgid "Operation" +msgstr "" + +msgid "Join" +msgstr "" + +msgid "Click to change text into object part." +msgstr "" + +msgid "You can't change a type of the last solid part of the object." +msgstr "" + +msgctxt "EmbossOperation" +msgid "Cut" +msgstr "" + +msgid "Click to change part type into negative volume." +msgstr "" + +msgid "Modifier" +msgstr "修改器" + +msgid "Click to change part type into modifier." +msgstr "" + +msgid "Change Text Type" +msgstr "" + +#, boost-format +msgid "Rename style(%1%) for embossing text" +msgstr "" + +msgid "Name can't be empty." +msgstr "" + +msgid "Name has to be unique." +msgstr "" + +msgid "OK" +msgstr "確認" + +msgid "Rename style" +msgstr "" + +msgid "Rename current style." +msgstr "" + +msgid "Can't rename temporary style." +msgstr "" + +msgid "First Add style to list." +msgstr "" + +#, boost-format +msgid "Save %1% style" +msgstr "" + +msgid "No changes to save." +msgstr "" + +msgid "New name of style" +msgstr "" + +msgid "Save as new style" +msgstr "" + +msgid "Only valid font can be added to style." +msgstr "" + +msgid "Add style to my list." +msgstr "" + +msgid "Save as new style." +msgstr "" + +msgid "Remove style" +msgstr "" + +msgid "Can't remove the last existing style." +msgstr "" + +#, boost-format +msgid "Are you sure you want to permanently remove the \"%1%\" style?" +msgstr "" + +#, boost-format +msgid "Delete \"%1%\" style." +msgstr "" + +#, boost-format +msgid "Can't delete \"%1%\". It is last style." +msgstr "" + +#, boost-format +msgid "Can't delete temporary style \"%1%\"." +msgstr "" + +#, boost-format +msgid "Modified style \"%1%\"" +msgstr "" + +#, boost-format +msgid "Current style is \"%1%\"" +msgstr "" + +#, boost-format +msgid "" +"Changing style to \"%1%\" will discard current style modification.\n" +"\n" +"Would you like to continue anyway?" +msgstr "" + +msgid "Not valid style." +msgstr "" + +#, boost-format +msgid "Style \"%1%\" can't be used and will be removed from a list." +msgstr "" + +msgid "Unset italic" +msgstr "" + +msgid "Set italic" +msgstr "" + +msgid "Unset bold" +msgstr "" + +msgid "Set bold" +msgstr "" + +msgid "Revert text size." +msgstr "" + +msgid "Revert embossed depth." +msgstr "" + +msgid "" +"Advanced options cannot be changed for the selected font.\n" +"Select another font." +msgstr "" + +msgid "Revert using of model surface." +msgstr "" + +msgid "Revert Transformation per glyph." +msgstr "" + +msgid "Set global orientation for whole text." +msgstr "" + +msgid "Set position and orientation per glyph." +msgstr "" + +msgctxt "Alignment" +msgid "Left" +msgstr "" + +msgctxt "Alignment" +msgid "Center" +msgstr "" + +msgctxt "Alignment" +msgid "Right" +msgstr "" + +msgctxt "Alignment" +msgid "Top" +msgstr "" + +msgctxt "Alignment" +msgid "Middle" +msgstr "" + +msgctxt "Alignment" +msgid "Bottom" +msgstr "" + +msgid "Revert alignment." +msgstr "" + +#. TRN EmbossGizmo: font units +msgid "points" +msgstr "" + +msgid "Revert gap between characters" +msgstr "" + +msgid "Distance between characters" +msgstr "" + +msgid "Revert gap between lines" +msgstr "" + +msgid "Distance between lines" +msgstr "" + +msgid "Undo boldness" +msgstr "" + +msgid "Tiny / Wide glyphs" +msgstr "" + +msgid "Undo letter's skew" +msgstr "" + +msgid "Italic strength ratio" +msgstr "" + +msgid "Undo translation" +msgstr "" + +msgid "Distance of the center of the text to the model surface." +msgstr "" + +msgid "Undo rotation" +msgstr "" + +msgid "Rotate text Clock-wise." +msgstr "" + +msgid "Unlock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Lock the text's rotation when moving text along the object's surface." +msgstr "" + +msgid "Select from True Type Collection." +msgstr "" + +msgid "Set text to face camera" +msgstr "" + +msgid "Orient the text towards the camera." +msgstr "" + +#, boost-format +msgid "" +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." +msgstr "" + +msgid "No symbol" +msgstr "" + +msgid "Loading" +msgstr "載入中" + +msgid "In queue" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Height of one text line - Font Ascent +msgid "Height" +msgstr "高度" + +#. TRN - Input label. Be short as possible +#. Copy surface of model on surface of the embossed text +#. TRN - Input label. Be short as possible +msgid "Use surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Option to change projection on curved surface +#. for each character(glyph) in text separately +msgid "Per glyph" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Align Top|Middle|Bottom and Left|Center|Right +msgid "Alignment" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Char gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Line gap" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Boldness" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Like Font italic +msgid "Skew ratio" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Distance from model surface to be able +#. move text as part fully into not flat surface +#. move text as modifier fully out of not flat surface +#. TRN - Input label. Be short as possible +msgid "From surface" +msgstr "" + +#. TRN - Input label. Be short as possible +#. Keep vector from bottom to top of text aligned with printer Y axis +msgid "Keep up" +msgstr "" + +#. TRN - Input label. Be short as possible. +#. Some Font file contain multiple fonts inside and +#. this is numerical selector of font inside font collections +msgid "Collection" +msgstr "" + +msgid "Enter SVG gizmo" +msgstr "" + +msgid "Leave SVG gizmo" +msgstr "" + +msgid "SVG actions" +msgstr "" + +msgid "SVG" +msgstr "" + +#. TRN This is an item label in the undo-redo stack. +msgid "SVG-Rotate" +msgstr "" + +#, boost-format +msgid "Opacity (%1%)" +msgstr "" + +#, boost-format +msgid "Color gradient (%1%)" +msgstr "" + +msgid "Undefined fill type" +msgstr "" + +msgid "Linear gradient" +msgstr "" + +msgid "Radial gradient" +msgstr "" + +msgid "Open filled path" +msgstr "" + +msgid "Undefined stroke type" +msgstr "" + +msgid "Path can't be healed from selfintersection and multiple points." +msgstr "" + +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." +msgstr "" + +#, boost-format +msgid "Shape is marked as invisible (%1%)." +msgstr "" + +#. TRN: The first placeholder is shape identifier, the second one is text describing the problem. +#, boost-format +msgid "Fill of shape (%1%) contains unsupported: %2%." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." +msgstr "" + +#, boost-format +msgid "Stroke of shape (%1%) contains unsupported: %2%." +msgstr "" + +msgid "Face the camera" +msgstr "" + +#. TRN - Preview of filename after clear local filepath. +msgid "Unknown filename" +msgstr "" + +#, boost-format +msgid "SVG file path is \"%1%\"" +msgstr "" + +msgid "Reload SVG file from disk." +msgstr "" + +msgid "Change file" +msgstr "" + +msgid "Change to another .svg file" +msgstr "" + +msgid "Forget the file path" +msgstr "" + +msgid "" +"Do NOT save local path to 3MF file.\n" +"Also disables 'reload from disk' option." +msgstr "" + +#. TRN: An menu option to convert the SVG into an unmodifiable model part. +msgid "Bake" +msgstr "" + +#. TRN: Tooltip for the menu item. +msgid "Bake into model as uneditable part" +msgstr "" + +msgid "Save as" +msgstr "" + +msgid "Save SVG file" +msgstr "" + +msgid "Save as '.svg' file" +msgstr "" + +msgid "Size in emboss direction." +msgstr "" + +#. TRN: The placeholder contains a number. +#, boost-format +msgid "Scale also changes amount of curve samples (%1%)" +msgstr "" + +msgid "Width of SVG." +msgstr "" + +msgid "Height of SVG." +msgstr "" + +msgid "Lock/unlock the aspect ratio of the SVG." +msgstr "" + +msgid "Reset scale" +msgstr "" + +msgid "Resize" +msgstr "" + +msgid "Distance of the center of the SVG to the model surface." +msgstr "" + +msgid "Reset distance" +msgstr "" + +msgid "Reset rotation" +msgstr "" + +msgid "Lock/unlock rotation angle when dragging above the surface." +msgstr "" + +msgid "Mirror vertically" +msgstr "" + +msgid "Mirror horizontally" +msgstr "" + +#. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). +msgid "Change SVG Type" +msgstr "" + +#. TRN - Input label. Be short as possible +msgid "Mirror" +msgstr "鏡像" + +msgid "Choose SVG file for emboss:" +msgstr "" + +#, boost-format +msgid "File does NOT exist (%1%)." +msgstr "" + +#, boost-format +msgid "Filename has to end with \".svg\" but you selected %1%" +msgstr "" + +#, boost-format +msgid "Nano SVG parser can't load from file (%1%)." +msgstr "" + +#, boost-format +msgid "SVG file does NOT contain a single path to be embossed (%1%)." +msgstr "" + +msgid "Vertex" +msgstr "" + +msgid "Edge" +msgstr "" + +msgid "Plane" +msgstr "" + +msgid "Point on edge" +msgstr "" + +msgid "Point on circle" +msgstr "" + +msgid "Point on plane" +msgstr "" + +msgid "Center of edge" +msgstr "" + +msgid "Center of circle" +msgstr "" + +msgid "ShiftLeft mouse button" +msgstr "" + +msgid "Select feature" +msgstr "" + +msgid "Select point" +msgstr "" + +msgid "Delete" +msgstr "刪除" + +msgid "Restart selection" +msgstr "" + +msgid "Esc" +msgstr "" + +msgid "Unselect" +msgstr "" + +msgid "Measure" +msgstr "" + +msgid "Edit to scale" +msgstr "" + +msgctxt "Verb" +msgid "Scale" +msgstr "" + +msgid "None" +msgstr "無" + +msgid "Diameter" +msgstr "直徑" + +msgid "Length" +msgstr "長度" + +msgid "Selection" +msgstr "" + +msgid "Copy to clipboard" +msgstr "複製到剪貼簿" + +msgid "Perpendicular distance" +msgstr "" + +msgid "Distance" +msgstr "" + +msgid "Direct distance" +msgstr "" + +msgid "Distance XYZ" +msgstr "" + msgid "Ctrl+" msgstr "" @@ -764,9 +1521,6 @@ msgstr "" msgid "Sync user presets" msgstr "" -msgid "Loading" -msgstr "載入中" - msgid "Loading user preset" msgstr "正在載入使用者預設" @@ -797,9 +1551,6 @@ msgstr "選擇一個 G-code 檔案:" msgid "Import File" msgstr "匯入檔案" -msgid "Delete" -msgstr "刪除" - msgid "Choose files" msgstr "選擇檔案" @@ -874,9 +1625,6 @@ msgstr "擦除選項" msgid "Bed adhension" msgstr "熱床黏接" -msgid "Advanced" -msgstr "高級" - #, fuzzy msgid "Add part" msgstr "新增零件" @@ -962,9 +1710,6 @@ msgstr "" msgid "Text" msgstr "" -msgid "SVG" -msgstr "" - msgid "Height range Modifier" msgstr "高度範圍修改器" @@ -1099,9 +1844,6 @@ msgstr "沿 Z 軸" msgid "Mirror along the Z axis" msgstr "沿 Z 軸鏡像" -msgid "Mirror" -msgstr "鏡像" - msgid "Mirror object" msgstr "鏡像物件" @@ -1379,12 +2121,6 @@ msgstr "高度範圍" msgid "Settings for height range" msgstr "高度範圍設定" -msgid "Object" -msgstr "物件" - -msgid "Part" -msgstr "零件" - msgid "Layer" msgstr "層" @@ -1407,9 +2143,6 @@ msgstr "不允許修改物件中最後一個實體零件的類型。" msgid "Negative Part" msgstr "負零件" -msgid "Modifier" -msgstr "修改器" - msgid "Support Blocker" msgstr "支撐去除器" @@ -1483,9 +2216,6 @@ msgstr "填充密度(%)" msgid "Auto Brim" msgstr "自動Brim(裙邊)" -msgid "Auto" -msgstr "自動" - msgid "Mouse ear" msgstr "圓盤" @@ -1566,9 +2296,6 @@ msgstr "自訂 G-code" msgid "Enter Custom G-code used on current layer:" msgstr "輸入目前層上使用的自訂 G-code:" -msgid "OK" -msgstr "確認" - msgid "Jump to Layer" msgstr "轉換到層" @@ -1624,9 +2351,6 @@ msgstr "無列印設備" msgid "..." msgstr "" -msgid "Failed to connect to the server" -msgstr "無法連接伺服器" - #, fuzzy msgid "Check the status of current system services" msgstr "請檢查目前系統服務狀態" @@ -1634,6 +2358,9 @@ msgstr "請檢查目前系統服務狀態" msgid "code" msgstr "" +msgid "Failed to connect to the server" +msgstr "無法連接伺服器" + msgid "Failed to connect to cloud service" msgstr "無法連接到雲端服務" @@ -2453,9 +3180,6 @@ msgstr "計劃上傳到 `%1%`。請參閱視窗-> 列印設備上傳隊列" msgid "Origin" msgstr "原點" -msgid "Diameter" -msgstr "直徑" - msgid "Size in X and Y of the rectangular plate." msgstr "矩形框在 X 和 Y 方向的尺寸。" @@ -3032,6 +3756,9 @@ msgstr "時間" msgid "Percent" msgstr "百分比" +msgid "Used filament" +msgstr "使用的線材" + #, fuzzy msgid "Layer Height (mm)" msgstr "層高(mm)" @@ -3054,9 +3781,6 @@ msgstr "溫度(℃)" msgid "Volumetric flow rate (mm³/s)" msgstr "體積流量速度(mm³/s)" -msgid "Used filament" -msgstr "使用的線材" - msgid "Travel" msgstr "空駛" @@ -6192,6 +6916,11 @@ msgstr "" "當使用專用的支撐線材時,我們推薦以下設定:\n" "0 頂層z距離,0 接觸層間距,同心圖案,並且禁用獨立支撐層高" +msgid "" +"Layer height is too small.\n" +"It will set to min_layer_height\n" +msgstr "" + msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." @@ -6864,9 +7593,8 @@ msgid "Flushing volumes for filament change" msgstr "線材更換時產生的廢料體積" msgid "" -"Studio would re-calculate your flushing volumes everytime the filaments " -"color changed. You could disable the auto-calculate in Bambu Studio > " -"Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -6932,9 +7660,6 @@ msgstr "" msgid "Ctrl+Shift+G" msgstr "" -msgid "Copy to clipboard" -msgstr "複製到剪貼簿" - msgid "Paste from clipboard" msgstr "從剪貼簿貼上" @@ -7056,9 +7781,6 @@ msgstr "Shift+方向鍵" msgid "Movement step set to 1 mm" msgstr "沿 X、Y 軸以 1mm 為單位步進移動" -msgid "Esc" -msgstr "" - #, fuzzy msgid "keyboard 1-9: set filament for object/part" msgstr "按鍵 1~9:設定物件/零件的線材" @@ -7146,9 +7868,6 @@ msgstr "設定物件、零件使用的擠出機編號" msgid "Delete objects, parts, modifiers " msgstr "刪除物件、零件、修改器" -msgid "Space" -msgstr "空格鍵" - msgid "Select the object/part and press space to change the name" msgstr "選取物件、零件,按空格可修改名稱" @@ -9231,9 +9950,6 @@ msgid "" "look. This setting controls the fuzzy position" msgstr "列印外牆時隨機抖動,使外表面產生絨毛效果。這個設定決定適用的位置。" -msgid "None" -msgstr "無" - msgid "Contour" msgstr "輪廓" @@ -10092,9 +10808,6 @@ msgstr "換層時回抽" msgid "Force a retraction when changes layer" msgstr "強制在換層時回抽。" -msgid "Length" -msgstr "長度" - msgid "Retraction Length" msgstr "回抽長度" @@ -10277,6 +10990,21 @@ msgstr "" "為了最大限度地減少閉環擠出中接縫的可見性,在擠出機離開環之前,會向內執行一個" "小小的移動。" +msgid "Wipe before external loop" +msgstr "" + +msgid "" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" +"\n" +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." +msgstr "" + msgid "Wipe speed" msgstr "擦拭速度" @@ -10979,9 +11707,6 @@ msgstr "清理量" msgid "The volume of material to prime extruder on tower." msgstr "擦拭塔上的清理量" -msgid "Width" -msgstr "寬度" - msgid "Width of prime tower" msgstr "擦拭塔寬度" @@ -11144,8 +11869,8 @@ msgstr "使用相對 E 距離" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " "extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" msgid "" @@ -12402,9 +13127,6 @@ msgstr "" msgid "Create Based on Current Printer" msgstr "" -msgid "wiki" -msgstr "" - msgid "Import Preset" msgstr "" @@ -12944,6 +13666,19 @@ msgid "" "Did you know that OrcaSlicer can support Air filtration/Exhuast Fan?" msgstr "" +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can swtich between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12951,6 +13686,13 @@ msgid "" "3D scene operations." msgstr "" +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" + #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" @@ -13214,6 +13956,40 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Movement:" +#~ msgstr "移動:" + +#~ msgid "Movement" +#~ msgstr "移動" + +#~ msgid "Auto Segment" +#~ msgstr "自動分割" + +#~ msgid "Depth ratio" +#~ msgstr "深度" + +#~ msgid "Prizm" +#~ msgstr "稜柱" + +#~ msgid "connector is out of cut contour" +#~ msgstr "個連接件超出了切割面範圍" + +#~ msgid "connectors are out of cut contour" +#~ msgstr "個連接件超出了切割面範圍" + +#~ msgid "connector is out of object" +#~ msgstr "個連接件穿透了模型" + +#~ msgid "connectors is out of object" +#~ msgstr "個連接件穿透了模型" + +#~ msgid "" +#~ "Invalid state. \n" +#~ "No one part is selected for keep after cut" +#~ msgstr "" +#~ "無效狀態。\n" +#~ "切割後沒有選取要保留的部分" + #~ msgid "Edit Text" #~ msgstr "編輯文字" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 98d089e1c0..227230644d 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3330,7 +3330,11 @@ def = this->add("filament_loading_speed", coFloats); def = this->add("wipe_before_external_loop", coBool); def->label = L("Wipe before external loop"); - def->tooltip = L("To minimise visibility of potential overextrusion at the start of an external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print order, the deretraction is performed slightly on the inside from the start of the external perimeter. Thatway any potential over extrusion is hidden from the outside surface. \n\nThis is useful when printing with Outer/Inner or Inner/Outer/Inner wall print order as in these modes it is more likely an external perimeter is printed immediately after a deretraction move."); + def->tooltip = L("To minimise visibility of potential overextrusion at the start of an external perimeter when printing with " + "Outer/Inner or Inner/Outer/Inner wall print order, the deretraction is performed slightly on the inside from the " + "start of the external perimeter. That way any potential over extrusion is hidden from the outside surface. \n\nThis " + "is useful when printing with Outer/Inner or Inner/Outer/Inner wall print order as in these modes it is more likely " + "an external perimeter is printed immediately after a deretraction move."); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); @@ -4457,8 +4461,8 @@ def = this->add("filament_loading_speed", coFloats); def->label = L("Use relative E distances"); def->tooltip = L("Relative extrusion is recommended when using \"label_objects\" option." "Some extruders work better with this option unckecked (absolute extrusion mode). " - "Wipe tower is only compatible with relative mode. It is always enabled on " - "BambuLab printers. Default is checked"); + "Wipe tower is only compatible with relative mode. It is recommended on " + "most printers. Default is checked"); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(true)); diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index 611602acc5..81b1becaa8 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -1474,9 +1474,9 @@ wxBoxSizer *CreatePrinterPresetDialog::create_step_switch_item() { wxBoxSizer *step_switch_sizer = new wxBoxSizer(wxVERTICAL); - std::string wiki_url = "https://wiki.bambulab.com/en/software/bambu-studio/3rd-party-printer-profile"; - wxHyperlinkCtrl *m_download_hyperlink = new wxHyperlinkCtrl(this, wxID_ANY, _L("wiki"), wiki_url, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); - step_switch_sizer->Add(m_download_hyperlink, 0, wxRIGHT | wxALIGN_RIGHT, FromDIP(5)); + // std::string wiki_url = "https://wiki.bambulab.com/en/software/bambu-studio/3rd-party-printer-profile"; + // wxHyperlinkCtrl *m_download_hyperlink = new wxHyperlinkCtrl(this, wxID_ANY, _L("wiki"), wiki_url, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); + // step_switch_sizer->Add(m_download_hyperlink, 0, wxRIGHT | wxALIGN_RIGHT, FromDIP(5)); wxBoxSizer *horizontal_sizer = new wxBoxSizer(wxHORIZONTAL); wxPanel * step_switch_panel = new wxPanel(this); diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index 42bf891da4..eae8942bcb 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -37,10 +37,10 @@ MediaPlayCtrl::MediaPlayCtrl(wxWindow *parent, wxMediaCtrl2 *media_ctrl, const w m_button_play->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this](auto &e) { TogglePlay(); }); m_button_play->Bind(wxEVT_RIGHT_UP, [this](auto & e) { m_media_ctrl->Play(); }); - m_label_status->Bind(wxEVT_LEFT_UP, [this](auto &e) { - auto url = wxString::Format(L"https://wiki.bambulab.com/%s/software/bambu-studio/faq/live-view", L"en"); - wxLaunchDefaultBrowser(url); - }); + // m_label_status->Bind(wxEVT_LEFT_UP, [this](auto &e) { + // auto url = wxString::Format(L"https://wiki.bambulab.com/%s/software/bambu-studio/faq/live-view", L"en"); + // wxLaunchDefaultBrowser(url); + // }); Bind(wxEVT_RIGHT_UP, [this](auto & e) { wxClipboard & c = *wxTheClipboard; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 3c23845054..9a929a1dd2 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -701,9 +701,6 @@ Sidebar::Sidebar(Plater *parent) bed_type_title->SetFont(font); SetCursor(wxCURSOR_ARROW); }); - bed_type_title->Bind(wxEVT_LEFT_UP, [bed_type_title, this](wxMouseEvent &e) { - wxLaunchDefaultBrowser("https://wiki.bambulab.com/en/x1/manual/compatibility-and-parameter-settings-of-filaments"); - }); AppConfig *app_config = wxGetApp().app_config; std::string str_bed_type = app_config->get("curr_bed_type"); diff --git a/src/slic3r/GUI/Widgets/SideTools.cpp b/src/slic3r/GUI/Widgets/SideTools.cpp index c226b39e6c..7ebda1fdfd 100644 --- a/src/slic3r/GUI/Widgets/SideTools.cpp +++ b/src/slic3r/GUI/Widgets/SideTools.cpp @@ -272,8 +272,8 @@ SideTools::SideTools(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxBoxSizer* connection_sizer_V = new wxBoxSizer(wxVERTICAL); wxBoxSizer* connection_sizer_H = new wxBoxSizer(wxHORIZONTAL); - m_hyperlink = new wxHyperlinkCtrl(m_connection_info, wxID_ANY, _L("Failed to connect to the server"), wxT("https://wiki.bambulab.com/en/software/bambu-studio/failed-to-connect-printer"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); - m_hyperlink->SetBackgroundColour(wxColour(255, 111, 0)); + // m_hyperlink = new wxHyperlinkCtrl(m_connection_info, wxID_ANY, _L("Failed to connect to the server"), wxT("https://wiki.bambulab.com/en/software/bambu-studio/failed-to-connect-printer"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); + // m_hyperlink->SetBackgroundColour(wxColour(255, 111, 0)); m_more_err_open = ScalableBitmap(this, "monitir_err_open", 16); m_more_err_close = ScalableBitmap(this, "monitir_err_close", 16); @@ -302,7 +302,7 @@ SideTools::SideTools(wxWindow *parent, wxWindowID id, const wxPoint &pos, const }); - connection_sizer_H->Add(m_hyperlink, 0, wxALIGN_CENTER | wxALL, 5); + // connection_sizer_H->Add(m_hyperlink, 0, wxALIGN_CENTER | wxALL, 5); connection_sizer_H->Add(m_more_button, 0, wxALIGN_CENTER | wxALL, 3); connection_sizer_V->Add(connection_sizer_H, 0, wxALIGN_CENTER, 0); diff --git a/src/slic3r/GUI/WipeTowerDialog.cpp b/src/slic3r/GUI/WipeTowerDialog.cpp index 607b64fc39..5f308366e6 100644 --- a/src/slic3r/GUI/WipeTowerDialog.cpp +++ b/src/slic3r/GUI/WipeTowerDialog.cpp @@ -525,7 +525,7 @@ WipingPanel::WipingPanel(wxWindow* parent, const std::vector& matrix, con auto message_sizer = new wxBoxSizer(wxVERTICAL); tip_message_panel->SetSizer(message_sizer); { - wxString message = _L("Studio would re-calculate your flushing volumes everytime the filaments color changed. You could disable the auto-calculate in Bambu Studio > Preferences"); + wxString message = _L("Orca would re-calculate your flushing volumes everytime the filaments color changed. You could disable the auto-calculate in Orca Slicer > Preferences"); m_tip_message_label = new Label(tip_message_panel, wxEmptyString); wxClientDC dc(tip_message_panel); wxString multiline_message; From 2901c85ea9822ece5e0c3e095187d6374ce90113 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 28 Dec 2023 17:02:01 +0100 Subject: [PATCH 50/66] Fixes and simplification of some Creality profiles. (#3315) * Fixes and simplification of some Creality profiles. * Set correct support_air_filtration for K1 Max --- .../Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json | 2 -- .../Creality/machine/Creality Ender-3 V3 SE 0.4 nozzle.json | 2 -- .../profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json | 1 + .../profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json | 1 + .../profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json | 1 + resources/profiles/Creality/machine/fdm_machine_common.json | 2 ++ .../Creality/process/0.12mm Fine @Creality Ender3V3SE.json | 2 +- .../Creality/process/0.16mm Optimal @Creality Ender3V3SE.json | 2 +- .../Creality/process/0.20mm Standard @Creality Ender3V3SE.json | 2 +- 9 files changed, 8 insertions(+), 7 deletions(-) diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json index 5965f99673..46b1a94c2b 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json @@ -14,8 +14,6 @@ "extruder_clearance_max_radius": "90", "extruder_clearance_radius": "90", "machine_load_filament_time": "11", - "support_chamber_temp_control": "false", - "support_air_filtration": ["false"], "nozzle_diameter": [ "0.4" ], diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.4 nozzle.json index 3a02b8e5ca..c27d1185e8 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.4 nozzle.json @@ -14,8 +14,6 @@ "extruder_clearance_max_radius": "90", "extruder_clearance_radius": "90", "machine_load_filament_time": "11", - "support_chamber_temp_control": "false", - "support_air_filtration": ["false"], "nozzle_diameter": [ "0.4" ], diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json index 796e8dcf60..3653176f06 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json @@ -14,6 +14,7 @@ "printable_height": "300", "nozzle_type": "hardened_steel", "auxiliary_fan": "1", + "support_air_filtration": "1", "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["20000", "20000"], "machine_max_acceleration_retracting": ["5000", "5000"], diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json index 545a15fd9b..e5d88cba7e 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json @@ -14,6 +14,7 @@ "printable_height": "300", "nozzle_type": "hardened_steel", "auxiliary_fan": "1", + "support_air_filtration": "1", "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["20000", "20000"], "machine_max_acceleration_retracting": ["5000", "5000"], diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json index cdaccf13ea..38daeeb4a1 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json @@ -14,6 +14,7 @@ "printable_height": "300", "nozzle_type": "hardened_steel", "auxiliary_fan": "1", + "support_air_filtration": "1", "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["20000", "20000"], "machine_max_acceleration_retracting": ["5000", "5000"], diff --git a/resources/profiles/Creality/machine/fdm_machine_common.json b/resources/profiles/Creality/machine/fdm_machine_common.json index 1f9aa54cd4..6bf00c7418 100644 --- a/resources/profiles/Creality/machine/fdm_machine_common.json +++ b/resources/profiles/Creality/machine/fdm_machine_common.json @@ -15,6 +15,8 @@ ], "gcode_flavor": "marlin", "silent_mode": "0", + "support_chamber_temp_control": "0", + "support_air_filtration": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE.json index 8be64a175c..b25d7c6103 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE.json @@ -78,7 +78,7 @@ "support_interface_bottom_layers": "2", "support_interface_spacing": "0.5", "support_interface_speed": "100%", - "support_interface_pattern": "default", + "support_interface_pattern": "auto", "support_base_pattern": "default", "support_base_pattern_spacing": "2.5", "support_speed": "50", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE.json index 52190ff254..ea79adc6a6 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE.json @@ -78,7 +78,7 @@ "support_interface_bottom_layers": "2", "support_interface_spacing": "0.5", "support_interface_speed": "100%", - "support_interface_pattern": "default", + "support_interface_pattern": "auto", "support_base_pattern": "default", "support_base_pattern_spacing": "2.5", "support_speed": "50", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE.json index ca6f096edd..258e85ce14 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE.json @@ -78,7 +78,7 @@ "support_interface_bottom_layers": "2", "support_interface_spacing": "0.5", "support_interface_speed": "100%", - "support_interface_pattern": "default", + "support_interface_pattern": "auto", "support_base_pattern": "default", "support_base_pattern_spacing": "2.5", "support_speed": "50", From c1bb9ecc4321e48b839733db2435bc252fce452f Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 28 Dec 2023 17:02:45 +0100 Subject: [PATCH 51/66] Fixed typo (#3331) * Fixed typo * An other swtitch * Main-i-fold(tm) --- localization/i18n/OrcaSlicer.pot | 6 +++--- localization/i18n/cs/OrcaSlicer_cs.po | 6 +++--- localization/i18n/de/OrcaSlicer_de.po | 6 +++--- localization/i18n/en/OrcaSlicer_en.po | 6 +++--- localization/i18n/es/OrcaSlicer_es.po | 6 +++--- localization/i18n/fr/OrcaSlicer_fr.po | 6 +++--- localization/i18n/hu/OrcaSlicer_hu.po | 6 +++--- localization/i18n/it/OrcaSlicer_it.po | 6 +++--- localization/i18n/ja/OrcaSlicer_ja.po | 6 +++--- localization/i18n/ko/OrcaSlicer_ko.po | 6 +++--- localization/i18n/nl/OrcaSlicer_nl.po | 6 +++--- localization/i18n/ru/OrcaSlicer_ru.po | 6 +++--- localization/i18n/sv/OrcaSlicer_sv.po | 6 +++--- localization/i18n/tr/OrcaSlicer_tr.po | 6 +++--- localization/i18n/uk/OrcaSlicer_uk.po | 6 +++--- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 6 +++--- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 6 +++--- resources/data/hints.ini | 2 +- src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoCut.cpp | 2 +- src/slic3r/GUI/KBShortcutsDialog.cpp | 4 ++-- 21 files changed, 56 insertions(+), 56 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 5790129f67..bfaac9187f 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -519,7 +519,7 @@ msgstr "" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" msgid "Repairing model object" @@ -7256,7 +7256,7 @@ msgstr "" msgid "Gizmo FDM paint-on seam" msgstr "" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "" msgid "Plater" @@ -12494,7 +12494,7 @@ msgid "G-code window\nYou can turn on/off the G-code window by pressing the C msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] -msgid "Switch workspaces\nYou can swtich between Prepare and Preview workspaces by pressing the Tab key." +msgid "Switch workspaces\nYou can switch between Prepare and Preview workspaces by pressing the Tab key." msgstr "" #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 26242ec5bd..a5f71cb468 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -524,7 +524,7 @@ msgstr "Spojka" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" msgid "Repairing model object" @@ -7722,7 +7722,7 @@ msgstr "Gizmo SLA podpěrné body" msgid "Gizmo FDM paint-on seam" msgstr "Gizmo FDM malování pozice švu" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "Přepnout mezi Přípravou/Náhledem" msgid "Plater" @@ -13791,7 +13791,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index b18fd5c7df..ef59cd5ff6 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -518,7 +518,7 @@ msgstr "Verbinder" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" msgid "Repairing model object" @@ -7899,7 +7899,7 @@ msgstr "SLA Stützpunkte" msgid "Gizmo FDM paint-on seam" msgstr "FDM Naht aufmalen" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "Zwischen Vorbereiten/ Vorschau wechseln" msgid "Plater" @@ -14366,7 +14366,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index c55bebd9b9..40a9643a32 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -516,7 +516,7 @@ msgstr "Connector" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" msgid "Repairing model object" @@ -7588,7 +7588,7 @@ msgstr "Gizmo SLA support points" msgid "Gizmo FDM paint-on seam" msgstr "Gizmo FDM paint-on seam" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "" msgid "Plater" @@ -13221,7 +13221,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index d39c6f270e..593da96258 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -518,7 +518,7 @@ msgstr "Conector" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" "Los bordes con pliegues pueden ser causados por la herramienta de corte, " "¿quieres arreglarlo ahora?" @@ -7838,7 +7838,7 @@ msgstr "Puntos de soporte SLA Gizmo" msgid "Gizmo FDM paint-on seam" msgstr "Costura de pintura Gizmo FDM" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "Cambiar entre Preparar/Previsualizar" msgid "Plater" @@ -14299,7 +14299,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index e64387a068..eec239ba7c 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -522,7 +522,7 @@ msgstr "Connecteur" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" "les bords non pliables sont dus à l’outil de coupe, voulez-vous les corriger " "maintenant ?" @@ -7914,7 +7914,7 @@ msgstr "Points de supports Gizmo SLA" msgid "Gizmo FDM paint-on seam" msgstr "Couture peinte Gizmo FDM" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "Basculer entre Préparer/Aperçu" msgid "Plater" @@ -14459,7 +14459,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 71801c6fce..267fc487aa 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -513,7 +513,7 @@ msgstr "Connector" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" msgid "Repairing model object" @@ -7635,7 +7635,7 @@ msgstr "Gizmo SLA support points" msgid "Gizmo FDM paint-on seam" msgstr "Gizmo FDM paint-on seam" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "" msgid "Plater" @@ -13313,7 +13313,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index d332fbad67..8e743fb350 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -517,7 +517,7 @@ msgstr "Connettore" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" msgid "Repairing model object" @@ -7834,7 +7834,7 @@ msgstr "Punti di supporto SLA Gizmo" msgid "Gizmo FDM paint-on seam" msgstr "Gizmo FDM pittura giunzione" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "Swtich tra Prepare/Prewview" msgid "Plater" @@ -14323,7 +14323,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index b9f80d6263..48d64cdad9 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -513,7 +513,7 @@ msgstr "Connector" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" msgid "Repairing model object" @@ -7457,7 +7457,7 @@ msgstr "SLAサポートポイント" msgid "Gizmo FDM paint-on seam" msgstr "継ぎ目ペイント" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "" msgid "Plater" @@ -12939,7 +12939,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 6bc68edf0e..b253d251f0 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -520,7 +520,7 @@ msgstr "커넥터" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" "절단 도구로 인해 메인폴드가 아닌 가장자리가 발생했는데 지금 수정하시겠습니까?" @@ -7622,7 +7622,7 @@ msgstr "도구 상자 지지대 칠하기" msgid "Gizmo FDM paint-on seam" msgstr "도구 상자 솔기 칠하기" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "준비 하기/미리 보기 전환" msgid "Plater" @@ -13706,7 +13706,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 41617a173b..b84cf10005 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -514,7 +514,7 @@ msgstr "Verbinding" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" msgid "Repairing model object" @@ -7712,7 +7712,7 @@ msgstr "Gizmo SLA-ondersteuningspunten" msgid "Gizmo FDM paint-on seam" msgstr "Gizmo FDM seam schilderen" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "" msgid "Plater" @@ -13427,7 +13427,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 0385bee454..e42baa7d4d 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -528,7 +528,7 @@ msgstr "Соединение" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" msgid "Repairing model object" @@ -7831,7 +7831,7 @@ msgstr "Гизмо точки SLA поддержки" msgid "Gizmo FDM paint-on seam" msgstr "Гизмо рисования шва (FDM)" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "Переключение между окном подготовки и окном предпросмотра нарезки" msgid "Plater" @@ -14076,7 +14076,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 7ac0e1e6ab..f20fc58e08 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -514,7 +514,7 @@ msgstr "Kontakt" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" msgid "Repairing model object" @@ -7614,7 +7614,7 @@ msgstr "Gizmo SLA support punkter" msgid "Gizmo FDM paint-on seam" msgstr "Gizmo FDM målad söm" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "" msgid "Plater" @@ -13239,7 +13239,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 1b1e65332a..e6007c9261 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -522,7 +522,7 @@ msgstr "Bağlayıcı" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" "Ana kat olmayan kenarlar kesme aletinden kaynaklanıyor, şimdi düzeltmek " "istiyor musunuz?" @@ -7752,7 +7752,7 @@ msgstr "Gizmo SLA destek noktaları" msgid "Gizmo FDM paint-on seam" msgstr "Gizmo FDM boyalı dikiş" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "Hazırlama/Önizleme arasında geçiş yap" msgid "Plater" @@ -14061,7 +14061,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index f00aa3719e..b343fe1256 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -524,7 +524,7 @@ msgstr "З'єднувач" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" msgid "Repairing model object" @@ -7657,7 +7657,7 @@ msgstr "Точки підтримки Gizmo SL" msgid "Gizmo FDM paint-on seam" msgstr "Швид, що фарбується Gizmo FDM" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "Переключення між Підготовка/Попередній перегляд" msgid "Plater" @@ -13417,7 +13417,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 6bb265a1fc..544b719f5d 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -517,7 +517,7 @@ msgstr "连接件" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "因切割产生了非流形边,您是否想现在修复?" msgid "Repairing model object" @@ -7436,7 +7436,7 @@ msgstr "SLA支撑点" msgid "Gizmo FDM paint-on seam" msgstr "FDM涂装接缝" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "准备/预览之间的切换" msgid "Plater" @@ -13100,7 +13100,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 7f8561a9c2..e728395635 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -538,7 +538,7 @@ msgstr "連接件" msgid "Cut by Plane" msgstr "" -msgid "non-mainifold edges be caused by cut tool, do you want to fix it now?" +msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" msgid "Repairing model object" @@ -7830,7 +7830,7 @@ msgstr "SLA 支撐點" msgid "Gizmo FDM paint-on seam" msgstr "FDM 塗裝接縫" -msgid "Swtich between Prepare/Prewview" +msgid "Switch between Prepare/Preview" msgstr "在準備/預覽模式之中切換" msgid "Plater" @@ -13675,7 +13675,7 @@ msgstr "" #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can swtich between Prepare and Preview workspaces by " +"You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" diff --git a/resources/data/hints.ini b/resources/data/hints.ini index d2f424ec8b..bc53887e55 100644 --- a/resources/data/hints.ini +++ b/resources/data/hints.ini @@ -89,7 +89,7 @@ documentation_link = https://github.com/SoftFever/OrcaSlicer/wiki/air-filtration text = G-code window\nYou can turn on/off the G-code window by pressing the C key. [hint:Switch workspaces] -text = Switch workspaces\nYou can swtich between Prepare and Preview workspaces by pressing the Tab key. +text = Switch workspaces\nYou can switch between Prepare and Preview workspaces by pressing the Tab key. [hint:How to use keyboard shortcuts] text = How to use keyboard shortcuts\nDid you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations. diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp index 50c82439f4..81c6e8710c 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp @@ -668,7 +668,7 @@ void GLGizmoAdvancedCut::perform_cut(const Selection& selection) if (its_num_open_edges(new_objects[i]->volumes[j]->mesh().its) > 0) { if (!is_showed_dialog) { is_showed_dialog = true; - MessageDialog dlg(nullptr, _L("non-mainifold edges be caused by cut tool, do you want to fix it now?"), "", wxYES | wxCANCEL); + MessageDialog dlg(nullptr, _L("non-manifold edges be caused by cut tool, do you want to fix it now?"), "", wxYES | wxCANCEL); int ret = dlg.ShowModal(); if (ret == wxID_YES) { user_fix_model = true; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index f0f221f1df..a61b4a5b0a 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -3392,7 +3392,7 @@ void GLGizmoCut3D::perform_cut(const Selection& selection) if (its_num_open_edges(new_objects[i]->volumes[j]->mesh().its) > 0) { if (!is_showed_dialog) { is_showed_dialog = true; - MessageDialog dlg(nullptr, _L("non-mainifold edges be caused by cut tool, do you want to fix it now?"), "", wxYES | wxCANCEL); + MessageDialog dlg(nullptr, _L("non-manifold edges be caused by cut tool, do you want to fix it now?"), "", wxYES | wxCANCEL); int ret = dlg.ShowModal(); if (ret == wxID_YES) { user_fix_model = true; diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 0f065ff28f..3a85d70433 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -258,7 +258,7 @@ void KBShortcutsDialog::fill_shortcuts() { "F", L("Gizmo Place face on bed") }, { "L", L("Gizmo SLA support points") }, { "P", L("Gizmo FDM paint-on seam") }, - { "Tab", L("Swtich between Prepare/Prewview") }, + { "Tab", L("Switch between Prepare/Preview") }, }; m_full_shortcuts.push_back({ { _L("Plater"), "" }, plater_shortcuts }); @@ -300,7 +300,7 @@ void KBShortcutsDialog::fill_shortcuts() { L("Arrow Right"), L("Horizontal slider - Move active thumb Right")}, { "L", L("On/Off one layer mode of the vertical slider")}, { "C", L("On/Off g-code window")}, - { "Tab", L("Swtich between Prepare/Prewview") }, + { "Tab", L("Switch between Prepare/Preview") }, {L("Shift+Any arrow"), L("Move slider 5x faster")}, {L("Shift+Mouse wheel"), L("Move slider 5x faster")}, #ifdef __APPLE__ From a96ed265198861516c25e723ad12085fdb647fa0 Mon Sep 17 00:00:00 2001 From: just-trey Date: Thu, 28 Dec 2023 11:04:45 -0500 Subject: [PATCH 52/66] Profile: Anker M5/C first layer consistency improvements (#3321) first layer consistency improvments --- resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json | 4 +--- .../profiles/Anker/machine/Anker M5C 0.4 nozzle.json | 4 +--- resources/profiles/Anker/machine/fdm_machine_common.json | 8 ++++---- resources/profiles/Anker/process/0.15mm Fast @Anker.json | 3 +-- resources/profiles/Anker/process/0.20mm Fast @Anker.json | 3 +-- resources/profiles/Anker/process/0.25mm Fast @Anker.json | 3 +-- resources/profiles/Anker/process/fdm_process_common.json | 8 ++++---- 7 files changed, 13 insertions(+), 20 deletions(-) diff --git a/resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json b/resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json index 12896d98d1..543ca734b2 100644 --- a/resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json @@ -23,10 +23,8 @@ "0x235" ], "printable_height": "250", - "machine_start_gcode": "M4899 T3 ; Enable v3 jerk and S-curve acceleration \nM104 S{first_layer_temperature[0]-30} ; Anti-ooze - Set hotend temp to 30 degrees less than target\nM190 S{first_layer_bed_temperature[0]} ; set and wait for bed temp to stabilize\nM109 S{first_layer_temperature[0]} ; set final nozzle temp to stabilize\nG28 ;Home", - "machine_end_gcode": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84", "layer_change_gcode": "", "scan_first_layer": "0", "nozzle_type": "hardened_steel", "auxiliary_fan": "0" -} +} \ No newline at end of file diff --git a/resources/profiles/Anker/machine/Anker M5C 0.4 nozzle.json b/resources/profiles/Anker/machine/Anker M5C 0.4 nozzle.json index f604d3c657..3ca02258de 100644 --- a/resources/profiles/Anker/machine/Anker M5C 0.4 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5C 0.4 nozzle.json @@ -23,10 +23,8 @@ "0x220" ], "printable_height": "250", - "machine_start_gcode": "M4899 T3 ; Enable v3 jerk and S-curve acceleration \nM104 S{first_layer_temperature[0]-30} ; Anti-ooze - Set hotend temp to 30 degrees less than target\nM190 S{first_layer_bed_temperature[0]} ; set and wait for bed temp to stabilize\nM109 S{first_layer_temperature[0]} ; set final nozzle temp to stabilize\nG28 ;Home", - "machine_end_gcode": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84", "layer_change_gcode": "", "scan_first_layer": "0", "nozzle_type": "hardened_steel", "auxiliary_fan": "0" -} +} \ No newline at end of file diff --git a/resources/profiles/Anker/machine/fdm_machine_common.json b/resources/profiles/Anker/machine/fdm_machine_common.json index 04cd7af2e7..dc9062982d 100644 --- a/resources/profiles/Anker/machine/fdm_machine_common.json +++ b/resources/profiles/Anker/machine/fdm_machine_common.json @@ -4,9 +4,9 @@ "from": "system", "instantiation": "false", "gcode_flavor": "marlin2", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\n\n", - "machine_start_gcode": "M4899 T3 ; Enable v3 jerk and S-curve acceleration \nM104 Sfirst_layer_temperature[0] ; Set hotend temp\nM190 S{first_layer_bed_temperature[0]} ; set and wait for bed temp to stabilize\nM109 S{first_layer_temperature[0]} ; set final nozzle temp to stabilize\nG28 ;Home", - "machine_end_gcode": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\n\n", + "machine_start_gcode": "M4899 T3 ; Enable v3 jerk and S-curve acceleration \nM104 S150 ; Set hotend temp to 150 degrees to prevent ooze\nM190 S{first_layer_bed_temperature[0]} ; set and wait for bed temp to stabilize\nM109 S{first_layer_temperature[0]} ; set final nozzle temp to stabilize\nG28 ;Home", + "machine_end_gcode": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM18", "change_filament_gcode": "M600", "machine_pause_gcode": "M601", "extruder_colour": [ @@ -117,4 +117,4 @@ "0" ], "z_hop_types": "Normal Lift" -} +} \ No newline at end of file diff --git a/resources/profiles/Anker/process/0.15mm Fast @Anker.json b/resources/profiles/Anker/process/0.15mm Fast @Anker.json index 9b9bbd16b5..f5ba0cff9b 100644 --- a/resources/profiles/Anker/process/0.15mm Fast @Anker.json +++ b/resources/profiles/Anker/process/0.15mm Fast @Anker.json @@ -15,7 +15,6 @@ "support_bottom_z_distance": "0.15", "support_top_z_distance": "0.15", "top_surface_pattern": "monotonic", - "bottom_surface_pattern": "monotonic", "bottom_shell_thickness": "0", "top_shell_thickness": "0", "default_acceleration": "6000", @@ -38,4 +37,4 @@ "Anker M5 0.4 nozzle", "Anker M5C 0.4 nozzle" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Anker/process/0.20mm Fast @Anker.json b/resources/profiles/Anker/process/0.20mm Fast @Anker.json index fee20b385a..38e43bc5d3 100644 --- a/resources/profiles/Anker/process/0.20mm Fast @Anker.json +++ b/resources/profiles/Anker/process/0.20mm Fast @Anker.json @@ -14,7 +14,6 @@ "support_bottom_z_distance": "0.20", "support_top_z_distance": "0.20", "top_surface_pattern": "monotonic", - "bottom_surface_pattern": "monotonic", "bottom_shell_thickness": "0", "top_shell_thickness": "0", "default_acceleration": "6000", @@ -37,4 +36,4 @@ "Anker M5 0.4 nozzle", "Anker M5C 0.4 nozzle" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Anker/process/0.25mm Fast @Anker.json b/resources/profiles/Anker/process/0.25mm Fast @Anker.json index cb397c2288..cfb1cd975b 100644 --- a/resources/profiles/Anker/process/0.25mm Fast @Anker.json +++ b/resources/profiles/Anker/process/0.25mm Fast @Anker.json @@ -14,7 +14,6 @@ "support_bottom_z_distance": "0.25", "support_top_z_distance": "0.25", "top_surface_pattern": "monotonic", - "bottom_surface_pattern": "monotonic", "bottom_shell_thickness": "0", "top_shell_thickness": "0", "default_acceleration": "6000", @@ -37,4 +36,4 @@ "Anker M5 0.4 nozzle", "Anker M5C 0.4 nozzle" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Anker/process/fdm_process_common.json b/resources/profiles/Anker/process/fdm_process_common.json index 2a277cfd01..6e4cbe2d38 100644 --- a/resources/profiles/Anker/process/fdm_process_common.json +++ b/resources/profiles/Anker/process/fdm_process_common.json @@ -6,7 +6,7 @@ "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonicline", + "bottom_surface_pattern": "monotonic", "bottom_shell_thickness": "0.5", "bridge_speed": "50", "bridge_acceleration": "500", @@ -93,8 +93,8 @@ "bottom_shell_layers": "4", "top_shell_layers": "5", "bridge_flow": "0.95", - "initial_layer_speed": "65", - "initial_layer_infill_speed": "125", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "50", "initial_layer_travel_speed": "100%", "outer_wall_speed": "125", "inner_wall_speed": "250", @@ -115,4 +115,4 @@ "outer_wall_jerk": "10", "top_surface_jerk": "12", "travel_jerk": "20" -} +} \ No newline at end of file From f89932f63e9e9167dcf9aae60ea122552c15cf61 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 29 Dec 2023 09:21:49 +0800 Subject: [PATCH 53/66] make `exclude_object` off by default --- .../profiles/Creality/process/fdm_process_common_klipper.json | 4 +++- .../profiles/Custom/process/fdm_process_klipper_common.json | 3 ++- .../profiles/Elegoo/process/fdm_process_neptune4_common.json | 3 ++- .../Elegoo/process/fdm_process_neptune4max_common.json | 3 ++- .../profiles/FLSun/process/0.20mm Standard @FLSun V400.json | 3 ++- resources/profiles/InfiMech/process/fdm_process_common.json | 3 ++- resources/profiles/OrcaArena/process/fdm_process_common.json | 3 ++- resources/profiles/Prusa/process/process_common_mk4.json | 3 ++- .../profiles/Qidi/process/fdm_process_qidi_x3_common.json | 3 ++- .../profiles/Ratrig/process/fdm_process_ratrig_common.json | 3 ++- .../profiles/Vivedino/process/fdm_process_klipper_common.json | 3 ++- resources/profiles/Voron/process/fdm_process_common.json | 3 ++- .../profiles/Vzbot/process/fdm_process_Vzbot_common.json | 3 ++- resources/profiles/Vzbot/process/fdm_process_common.json | 3 ++- .../profiles/Vzbot/process/fdm_process_common_0.5_nozzle.json | 3 ++- .../profiles/Vzbot/process/fdm_process_common_0.6_nozzle.json | 3 ++- src/libslic3r/PrintConfig.cpp | 2 +- 17 files changed, 34 insertions(+), 17 deletions(-) diff --git a/resources/profiles/Creality/process/fdm_process_common_klipper.json b/resources/profiles/Creality/process/fdm_process_common_klipper.json index a8db062d3a..303888b0f2 100644 --- a/resources/profiles/Creality/process/fdm_process_common_klipper.json +++ b/resources/profiles/Creality/process/fdm_process_common_klipper.json @@ -10,5 +10,7 @@ "infill_jerk": "12", "travel_jerk": "12", "inner_wall_jerk": "7", - "top_surface_jerk": "7" + "top_surface_jerk": "7", + "exclude_object": "1" + } diff --git a/resources/profiles/Custom/process/fdm_process_klipper_common.json b/resources/profiles/Custom/process/fdm_process_klipper_common.json index becc3fadd8..4c2320391c 100644 --- a/resources/profiles/Custom/process/fdm_process_klipper_common.json +++ b/resources/profiles/Custom/process/fdm_process_klipper_common.json @@ -104,5 +104,6 @@ "enable_arc_fitting": "0", "compatible_printers": [ "MyKlipper 0.4 nozzle" - ] + ], + "exclude_object": "1" } diff --git a/resources/profiles/Elegoo/process/fdm_process_neptune4_common.json b/resources/profiles/Elegoo/process/fdm_process_neptune4_common.json index c73984923d..c3d1c3fecd 100644 --- a/resources/profiles/Elegoo/process/fdm_process_neptune4_common.json +++ b/resources/profiles/Elegoo/process/fdm_process_neptune4_common.json @@ -110,5 +110,6 @@ "top_surface_speed": "120", "gap_infill_speed": "120", "sparse_infill_speed": "200", - "travel_speed": "350" + "travel_speed": "350", + "exclude_object": "1" } diff --git a/resources/profiles/Elegoo/process/fdm_process_neptune4max_common.json b/resources/profiles/Elegoo/process/fdm_process_neptune4max_common.json index 0b144d5bd3..fcf8ecb5f8 100644 --- a/resources/profiles/Elegoo/process/fdm_process_neptune4max_common.json +++ b/resources/profiles/Elegoo/process/fdm_process_neptune4max_common.json @@ -30,5 +30,6 @@ "top_surface_speed": "120", "gap_infill_speed": "120", "sparse_infill_speed": "200", - "travel_speed": "300" + "travel_speed": "300", + "exclude_object": "1" } diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun V400.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun V400.json index da496e4f9c..87a5547808 100644 --- a/resources/profiles/FLSun/process/0.20mm Standard @FLSun V400.json +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun V400.json @@ -25,5 +25,6 @@ "travel_speed": "400", "compatible_printers": [ "FLSun V400 0.4 nozzle" - ] + ], + "exclude_object": "1" } \ No newline at end of file diff --git a/resources/profiles/InfiMech/process/fdm_process_common.json b/resources/profiles/InfiMech/process/fdm_process_common.json index 23eb9cf92e..f878701719 100644 --- a/resources/profiles/InfiMech/process/fdm_process_common.json +++ b/resources/profiles/InfiMech/process/fdm_process_common.json @@ -219,5 +219,6 @@ "70" ], "xy_contour_compensation": "0", - "xy_hole_compensation": "0" + "xy_hole_compensation": "0", + "exclude_object": "1" } \ No newline at end of file diff --git a/resources/profiles/OrcaArena/process/fdm_process_common.json b/resources/profiles/OrcaArena/process/fdm_process_common.json index 4d18e9d5aa..3280c0ff27 100644 --- a/resources/profiles/OrcaArena/process/fdm_process_common.json +++ b/resources/profiles/OrcaArena/process/fdm_process_common.json @@ -67,5 +67,6 @@ "enable_prime_tower": "0", "prime_tower_width": "60", "xy_hole_compensation": "0", - "xy_contour_compensation": "0" + "xy_contour_compensation": "0", + "exclude_object": "1" } diff --git a/resources/profiles/Prusa/process/process_common_mk4.json b/resources/profiles/Prusa/process/process_common_mk4.json index ed70e11092..87a4a69d9f 100644 --- a/resources/profiles/Prusa/process/process_common_mk4.json +++ b/resources/profiles/Prusa/process/process_common_mk4.json @@ -24,5 +24,6 @@ "top_surface_acceleration": "1000", "travel_acceleration": "4000", "inner_wall_acceleration": "4000", - "outer_wall_acceleration": "3000" + "outer_wall_acceleration": "3000", + "exclude_object": "1" } \ No newline at end of file diff --git a/resources/profiles/Qidi/process/fdm_process_qidi_x3_common.json b/resources/profiles/Qidi/process/fdm_process_qidi_x3_common.json index 9116f0f02f..d706d7012e 100644 --- a/resources/profiles/Qidi/process/fdm_process_qidi_x3_common.json +++ b/resources/profiles/Qidi/process/fdm_process_qidi_x3_common.json @@ -114,5 +114,6 @@ "internal_solid_infill_pattern": "monotonic", "initial_layer_travel_speed": "50%", "filter_out_gap_fill": "2", - "notes": "If you want to use Orca's chamber temperature control feature, check that printer.cfg has added the following M191 macro.\nTo add it: go to Fluidd web interface--configuration, copy the following code to the top of the printer.cfg document, SAVE&RESATART \n\n[gcode_macro M191]\ngcode:\n {% set s = params.S|float %}\n {% if s == 0 %}\n # If target temperature is 0, do nothing\n M117 Chamber heating cancelled\n {% else %}\n SET_HEATER_TEMPERATURE HEATER=chamber_heater TARGET={s}\n # Orca: uncomment the following line if you want to use heat bed to assist chamber heating\n M140 S90\n TEMPERATURE_WAIT SENSOR=\"heater_generic chamber_heater\" MINIMUM={s-1} MAXIMUM={s+1}\n M117 Chamber at target temperature\n {% endif %}" + "notes": "If you want to use Orca's chamber temperature control feature, check that printer.cfg has added the following M191 macro.\nTo add it: go to Fluidd web interface--configuration, copy the following code to the top of the printer.cfg document, SAVE&RESATART \n\n[gcode_macro M191]\ngcode:\n {% set s = params.S|float %}\n {% if s == 0 %}\n # If target temperature is 0, do nothing\n M117 Chamber heating cancelled\n {% else %}\n SET_HEATER_TEMPERATURE HEATER=chamber_heater TARGET={s}\n # Orca: uncomment the following line if you want to use heat bed to assist chamber heating\n M140 S90\n TEMPERATURE_WAIT SENSOR=\"heater_generic chamber_heater\" MINIMUM={s-1} MAXIMUM={s+1}\n M117 Chamber at target temperature\n {% endif %}", + "exclude_object": "1" } diff --git a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json index 136a4295d2..10f49e4516 100644 --- a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json +++ b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json @@ -111,5 +111,6 @@ "RatRig V-Minion 0.4 nozzle", "RatRig V-Cast 0.4 nozzle", "RatRig V-Cast 0.6 nozzle" - ] + ], + "exclude_object": "1" } diff --git a/resources/profiles/Vivedino/process/fdm_process_klipper_common.json b/resources/profiles/Vivedino/process/fdm_process_klipper_common.json index 0473ee3521..f12f318c52 100644 --- a/resources/profiles/Vivedino/process/fdm_process_klipper_common.json +++ b/resources/profiles/Vivedino/process/fdm_process_klipper_common.json @@ -106,5 +106,6 @@ "compatible_printers": [ "Troodon 2.0 Klipper 0.4 nozzle", "Troodon 2.0 RRF 0.4 nozzle" - ] + ], + "exclude_object": "1" } diff --git a/resources/profiles/Voron/process/fdm_process_common.json b/resources/profiles/Voron/process/fdm_process_common.json index 23706f8a87..e22d2e56e0 100644 --- a/resources/profiles/Voron/process/fdm_process_common.json +++ b/resources/profiles/Voron/process/fdm_process_common.json @@ -67,5 +67,6 @@ "enable_prime_tower": "0", "prime_tower_width": "60", "xy_hole_compensation": "0", - "xy_contour_compensation": "0" + "xy_contour_compensation": "0", + "exclude_object": "1" } diff --git a/resources/profiles/Vzbot/process/fdm_process_Vzbot_common.json b/resources/profiles/Vzbot/process/fdm_process_Vzbot_common.json index 394d77048e..96202dd138 100644 --- a/resources/profiles/Vzbot/process/fdm_process_Vzbot_common.json +++ b/resources/profiles/Vzbot/process/fdm_process_Vzbot_common.json @@ -107,5 +107,6 @@ "compatible_printers": [ "Vzbot 235 AWD 0.4 nozzle", "Vzbot 330 AWD 0.4 nozzle" - ] + ], + "exclude_object": "1" } diff --git a/resources/profiles/Vzbot/process/fdm_process_common.json b/resources/profiles/Vzbot/process/fdm_process_common.json index 23706f8a87..e22d2e56e0 100644 --- a/resources/profiles/Vzbot/process/fdm_process_common.json +++ b/resources/profiles/Vzbot/process/fdm_process_common.json @@ -67,5 +67,6 @@ "enable_prime_tower": "0", "prime_tower_width": "60", "xy_hole_compensation": "0", - "xy_contour_compensation": "0" + "xy_contour_compensation": "0", + "exclude_object": "1" } diff --git a/resources/profiles/Vzbot/process/fdm_process_common_0.5_nozzle.json b/resources/profiles/Vzbot/process/fdm_process_common_0.5_nozzle.json index e88c458d77..3782ae9894 100644 --- a/resources/profiles/Vzbot/process/fdm_process_common_0.5_nozzle.json +++ b/resources/profiles/Vzbot/process/fdm_process_common_0.5_nozzle.json @@ -68,5 +68,6 @@ "enable_prime_tower": "0", "prime_tower_width": "60", "xy_hole_compensation": "0", - "xy_contour_compensation": "0" + "xy_contour_compensation": "0", + "exclude_object": "1" } diff --git a/resources/profiles/Vzbot/process/fdm_process_common_0.6_nozzle.json b/resources/profiles/Vzbot/process/fdm_process_common_0.6_nozzle.json index 92236d32c0..fd852dbcd4 100644 --- a/resources/profiles/Vzbot/process/fdm_process_common_0.6_nozzle.json +++ b/resources/profiles/Vzbot/process/fdm_process_common_0.6_nozzle.json @@ -68,5 +68,6 @@ "enable_prime_tower": "0", "prime_tower_width": "60", "xy_hole_compensation": "0", - "xy_contour_compensation": "0" + "xy_contour_compensation": "0", + "exclude_object": "1" } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 227230644d..4d16af5c96 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2367,7 +2367,7 @@ def = this->add("filament_loading_speed", coFloats); def->label = L("Exclude objects"); def->tooltip = L("Enable this option to add EXCLUDE OBJECT command in g-code"); def->mode = comAdvanced; - def->set_default_value(new ConfigOptionBool(1)); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("gcode_comments", coBool); def->label = L("Verbose G-code"); From 63f9b3b1baf396bbc6b2df522aead20368a81679 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 29 Dec 2023 12:04:40 +0800 Subject: [PATCH 54/66] check for new version rework, support "check for stable updates only" mode --- src/libslic3r/AppConfig.cpp | 11 ++- src/libslic3r/AppConfig.hpp | 2 +- src/slic3r/GUI/GUI_App.cpp | 132 +++++++++++++++++---------------- src/slic3r/GUI/Preferences.cpp | 2 + src/slic3r/GUI/ReleaseNote.cpp | 25 ++++--- src/slic3r/GUI/ReleaseNote.hpp | 2 +- 6 files changed, 98 insertions(+), 76 deletions(-) diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index ba0d363f7c..cf6cd95b40 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -42,7 +42,8 @@ using namespace nlohmann; namespace Slic3r { -static const std::string VERSION_CHECK_URL = "https://api.github.com/repos/softfever/OrcaSlicer/releases/latest"; +static const std::string VERSION_CHECK_URL_STABLE = "https://api.github.com/repos/softfever/OrcaSlicer/releases/latest"; +static const std::string VERSION_CHECK_URL = "https://api.github.com/repos/softfever/OrcaSlicer/releases"; static const std::string MODELS_STR = "models"; const std::string AppConfig::SECTION_FILAMENTS = "filaments"; @@ -240,6 +241,10 @@ void AppConfig::set_defaults() set_bool("stealth_mode", false); } + if(get("check_stable_update_only").empty()) { + set_bool("check_stable_update_only", false); + } + // Orca if(get("show_splash_screen").empty()) { set_bool("show_splash_screen", true); @@ -1253,10 +1258,10 @@ std::string AppConfig::config_path() return path; } -std::string AppConfig::version_check_url() const +std::string AppConfig::version_check_url(bool stable_only/* = false*/) const { auto from_settings = get("version_check_url"); - return from_settings.empty() ? VERSION_CHECK_URL : from_settings; + return from_settings.empty() ? stable_only ? VERSION_CHECK_URL_STABLE : VERSION_CHECK_URL : from_settings; } bool AppConfig::exists() diff --git a/src/libslic3r/AppConfig.hpp b/src/libslic3r/AppConfig.hpp index 1219adec9e..b785ebf8af 100644 --- a/src/libslic3r/AppConfig.hpp +++ b/src/libslic3r/AppConfig.hpp @@ -247,7 +247,7 @@ public: // Get the Slic3r version check url. // This returns a hardcoded string unless it is overriden by "version_check_url" in the ini file. - std::string version_check_url() const; + std::string version_check_url(bool stable_only = false) const; // Returns the original Slic3r version found in the ini file before it was overwritten // by the current version diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 1f1efd0862..157b1e7dbb 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -4,6 +4,7 @@ #include "GUI_ObjectList.hpp" #include "GUI_Factories.hpp" #include "format.hpp" +#include "libslic3r_version.h" // Localization headers: include libslic3r version first so everything in this file // uses the slic3r/GUI version (the macros will take precedence over the functions). @@ -4290,7 +4291,8 @@ Semver get_version(const std::string& str, const std::regex& regexp) { void GUI_App::check_new_version_sf(bool show_tips, int by_user) { AppConfig* app_config = wxGetApp().app_config; - auto version_check_url = app_config->version_check_url(); + bool check_stable_only = app_config->get_bool("check_stable_update_only"); + auto version_check_url = app_config->version_check_url(check_stable_only); Http::get(version_check_url) .on_error([&](std::string body, std::string error, unsigned http_status) { (void)body; @@ -4298,25 +4300,22 @@ void GUI_App::check_new_version_sf(bool show_tips, int by_user) error); }) .timeout_connect(1) - .on_complete([this,by_user](std::string body, unsigned http_status) { + .on_complete([this,by_user, check_stable_only](std::string body, unsigned http_status) { // Http response OK if (http_status != 200) return; try { boost::trim(body); - // SoftFever: parse github release, ported from SS - + // Orca: parse github release, inspired by SS boost::property_tree::ptree root; - std::stringstream json_stream(body); boost::property_tree::read_json(json_stream, root); - bool i_am_pre = false; // at least two number, use '.' as separator. can be followed by -Az23 for prereleased and +Az42 for // metadata std::regex matcher("[0-9]+\\.[0-9]+(\\.[0-9]+)*(-[A-Za-z0-9]+)?(\\+[A-Za-z0-9]+)?"); - Semver current_version = get_version(SoftFever_VERSION, matcher); + Semver current_version = get_version(SoftFever_VERSION, matcher); Semver best_pre(1, 0, 0); Semver best_release(1, 0, 0); std::string best_pre_url; @@ -4324,56 +4323,73 @@ void GUI_App::check_new_version_sf(bool show_tips, int by_user) std::string best_release_content; std::string best_pre_content; const std::regex reg_num("([0-9]+)"); - std::string tag = root.get("tag_name"); - if (tag[0] == 'v') - tag.erase(0, 1); - for (std::regex_iterator it = std::sregex_iterator(tag.begin(), tag.end(), reg_num); - it != std::sregex_iterator(); ++it) { - } - Semver tag_version = get_version(tag, matcher); - if (current_version == tag_version) - i_am_pre = root.get("prerelease"); - if (root.get("prerelease")) { - if (best_pre < tag_version) { - best_pre = tag_version; - best_pre_url = root.get("html_url"); - best_pre_content = root.get("body"); - best_pre.set_prerelease("Preview"); - } + if (check_stable_only) { + std::string tag = root.get("tag_name"); + if (tag[0] == 'v') + tag.erase(0, 1); + for (std::regex_iterator it = std::sregex_iterator(tag.begin(), tag.end(), reg_num); it != std::sregex_iterator(); ++it) {} + Semver tag_version = get_version(tag, matcher); + if (root.get("prerelease")) { + if (best_pre < tag_version) { + best_pre = tag_version; + best_pre_url = root.get("html_url"); + best_pre_content = root.get("body"); + best_pre.set_prerelease("Preview"); + } + } else { + if (best_release < tag_version) { + best_release = tag_version; + best_release_url = root.get("html_url"); + best_release_content = root.get("body"); + } + } } else { - if (best_release < tag_version) { - best_release = tag_version; - best_release_url = root.get("html_url"); - best_release_content = root.get("body"); - } + for (auto json_version : root) { + std::string tag = json_version.second.get("tag_name"); + if (tag[0] == 'v') + tag.erase(0, 1); + for (std::regex_iterator it = std::sregex_iterator(tag.begin(), tag.end(), reg_num); it != std::sregex_iterator(); + ++it) {} + Semver tag_version = get_version(tag, matcher); + if (json_version.second.get("prerelease")) { + if (best_pre < tag_version) { + best_pre = tag_version; + best_pre_url = json_version.second.get("html_url"); + best_pre_content = json_version.second.get("body"); + best_pre.set_prerelease("Preview"); + } + } else { + if (best_release < tag_version) { + best_release = tag_version; + best_release_url = json_version.second.get("html_url"); + best_release_content = json_version.second.get("body"); + } + } + } } // if release is more recent than beta, use release anyway if (best_pre < best_release) { - best_pre = best_release; - best_pre_url = best_release_url; - best_pre_content = best_release_content; + best_pre = best_release; + best_pre_url = best_release_url; + best_pre_content = best_release_content; } // if we're the most recent, don't do anything - if ((i_am_pre ? best_pre : best_release) <= current_version) { - if (by_user != 0) - this->no_new_version(); - return; + if ((check_stable_only ? best_release : best_pre) <= current_version) { + if (by_user != 0) + this->no_new_version(); + return; } - // BOOST_LOG_TRIVIAL(info) << format("Got %1% online version: `%2%`. Sending to GUI thread...", - // SLIC3R_APP_NAME, i_am_pre ? best_pre.to_string(): best_release.to_string()); - - version_info.url = i_am_pre ? best_pre_url : best_release_url; - version_info.version_str = i_am_pre ? best_pre.to_string() : best_release.to_string_sf(); - version_info.description = i_am_pre ? best_pre_content : best_release_content; + version_info.url = check_stable_only ? best_release_url : best_pre_url; + version_info.version_str = check_stable_only ? best_release.to_string_sf() : best_pre.to_string(); + version_info.description = check_stable_only ? best_release_content : best_pre_content; version_info.force_upgrade = false; - wxCommandEvent *evt = new wxCommandEvent(EVT_SLIC3R_VERSION_ONLINE); - evt->SetString((i_am_pre ? best_pre : best_release).to_string()); + wxCommandEvent* evt = new wxCommandEvent(EVT_SLIC3R_VERSION_ONLINE); + evt->SetString((check_stable_only ? best_release : best_pre).to_string()); GUI::wxGetApp().QueueEvent(evt); - } catch (...) { - } + } catch (...) {} }) .perform(); } @@ -4591,8 +4607,7 @@ void GUI_App::sync_preset(Preset* preset) if (http_code >= 400) { result = 0; updated_info = "hold"; - } - else + } else result = -1; } } @@ -4614,8 +4629,7 @@ void GUI_App::sync_preset(Preset* preset) auto update_time_str = values_map[BBL_JSON_KEY_UPDATE_TIME]; if (!update_time_str.empty()) update_time = std::atoll(update_time_str.c_str()); - } - else { + } else { BOOST_LOG_TRIVIAL(trace) << "[sync_preset]create: request_setting_id failed, http code "<= 400 if (http_code >= 400) { @@ -4625,12 +4639,10 @@ void GUI_App::sync_preset(Preset* preset) else result = -1; } - } - else { + } else { BOOST_LOG_TRIVIAL(trace) << "[sync_preset]create: can not generate differed preset"; } - } - else if (preset->sync_info.compare("update") == 0) { + } else if (preset->sync_info.compare("update") == 0) { if (!setting_id.empty()) { int ret = preset_bundle->get_differed_values_to_update(*preset, values_map); if (!ret) { @@ -5028,7 +5040,7 @@ bool GUI_App::select_language() // 3) new_language_info->CanonicalName is a safe bet. It points to a valid dictionary name. app_config->set("language", new_language_info->CanonicalName.ToUTF8().data()); return true; - } + } } return false; @@ -5936,18 +5948,15 @@ void GUI_App::MacOpenFiles(const wxArrayString &fileNames) input_files.push_back(non_gcode_files[i]); } this->plater()->load_files(input_files); - } - else { + } else { for (size_t i = 0; i < files.size(); ++i) { this->init_params->input_files.emplace_back(files[i]); } } - } - else { + } else { if (m_post_initialized) { this->plater()->load_gcode(gcode_files.front()); - } - else { + } else { this->init_params->input_gcode = true; this->init_params->input_files = { into_u8(gcode_files.front()) }; } @@ -6296,8 +6305,7 @@ void GUI_App::gcode_thumbnails_debug() width = 0; height = 0; rows.clear(); - } - else if (reading_image) + } else if (reading_image) row += gcode_line.substr(2); } } diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index e722d90858..a4b4edf5a1 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -996,6 +996,7 @@ wxWindow* PreferencesDialog::create_general_page() auto item_region= create_item_region_combobox(_L("Login Region"), page, _L("Login Region"), Regions); auto item_stealth_mode = create_item_checkbox(_L("Stealth Mode"), page, _L("Stealth Mode"), 50, "stealth_mode"); + auto item_check_stable_version_only = create_item_checkbox(_L("Check for stable updates only"), page, _L("Check for stable updates only"), 50, "check_stable_update_only"); std::vector Units = {_L("Metric") + " (mm, g)", _L("Imperial") + " (in, oz)"}; auto item_currency = create_item_combobox(_L("Units"), page, _L("Units"), "use_inches", Units); @@ -1072,6 +1073,7 @@ wxWindow* PreferencesDialog::create_general_page() sizer_page->Add(item_hints, 0, wxTOP, FromDIP(3)); sizer_page->Add(title_presets, 0, wxTOP | wxEXPAND, FromDIP(20)); sizer_page->Add(item_stealth_mode, 0, wxTOP, FromDIP(3)); + sizer_page->Add(item_check_stable_version_only, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_calc_mode, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_user_sync, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_system_sync, 0, wxTOP, FromDIP(3)); diff --git a/src/slic3r/GUI/ReleaseNote.cpp b/src/slic3r/GUI/ReleaseNote.cpp index b94e1bf5c3..539f9c08e9 100644 --- a/src/slic3r/GUI/ReleaseNote.cpp +++ b/src/slic3r/GUI/ReleaseNote.cpp @@ -23,6 +23,7 @@ #include #include "Plater.hpp" #include "BitmapCache.hpp" +#include "slic3r/GUI/GUI_App.hpp" namespace Slic3r { namespace GUI { @@ -293,7 +294,8 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent) m_vebview_release_note->Bind(wxEVT_WEBVIEW_NAVIGATING,[=](wxWebViewEvent& event){ static bool load_url_first = false; if(load_url_first){ - wxLaunchDefaultBrowser(url_line); + // Orca: not used in Orca Slicer + // wxLaunchDefaultBrowser(url_line); event.Veto(); }else{ load_url_first = true; @@ -317,11 +319,6 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent) - m_bitmap_open_in_browser = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("open_in_browser", this, 12), wxDefaultPosition, wxDefaultSize, 0 ); - m_link_open_in_browser = new wxHyperlinkCtrl(this, wxID_ANY, "Open in browser", ""); - m_link_open_in_browser->SetFont(Label::Body_12); - - auto sizer_button = new wxBoxSizer(wxHORIZONTAL); @@ -357,6 +354,17 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent) EndModal(wxID_NO); }); + m_cb_stable_only = new CheckBox(this); + m_cb_stable_only->SetValue(wxGetApp().app_config->get_bool("check_stable_update_only")); + m_cb_stable_only->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& e) { + wxGetApp().app_config->set_bool("check_stable_update_only", m_cb_stable_only->GetValue()); + e.Skip(); + }); + + auto stable_only_label = new Label(this, _L("Check for stable updates only")); + stable_only_label->SetFont(Label::Body_13); + stable_only_label->SetForegroundColour(wxColour(38, 46, 48)); + stable_only_label->SetFont(Label::Body_12); m_button_cancel = new Button(this, _L("Cancel")); m_button_cancel->SetBackgroundColor(btn_bg_white); @@ -372,10 +380,10 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent) m_sizer_main->Add(m_line_top, 0, wxEXPAND | wxBOTTOM, 0); - sizer_button->Add(m_bitmap_open_in_browser, 0, wxALIGN_CENTER | wxLEFT, FromDIP(7)); - sizer_button->Add(m_link_open_in_browser, 0, wxALIGN_CENTER| wxLEFT, FromDIP(3)); //sizer_button->Add(m_remind_choice, 0, wxALL | wxEXPAND, FromDIP(5)); sizer_button->AddStretchSpacer(); + sizer_button->Add(stable_only_label, 0, wxALIGN_CENTER | wxLEFT, FromDIP(7)); + sizer_button->Add(m_cb_stable_only, 0, wxALIGN_CENTER | wxLEFT, FromDIP(5)); sizer_button->Add(m_button_download, 0, wxALL, FromDIP(5)); sizer_button->Add(m_button_skip_version, 0, wxALL, FromDIP(5)); sizer_button->Add(m_button_cancel, 0, wxALL, FromDIP(5)); @@ -510,7 +518,6 @@ void UpdateVersionDialog::update_version_info(wxString release_note, wxString ve m_text_up_info->Hide(); m_simplebook_release_note->SetSelection(1); m_vebview_release_note->LoadURL(from_u8(url_line)); - m_link_open_in_browser->SetURL(url_line); } else { m_simplebook_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430))); diff --git a/src/slic3r/GUI/ReleaseNote.hpp b/src/slic3r/GUI/ReleaseNote.hpp index a6deabdf27..98d42b964c 100644 --- a/src/slic3r/GUI/ReleaseNote.hpp +++ b/src/slic3r/GUI/ReleaseNote.hpp @@ -99,8 +99,8 @@ public: wxBoxSizer * sizer_text_release_note{nullptr}; Label * m_staticText_release_note{nullptr}; wxStaticBitmap* m_bitmap_open_in_browser; - wxHyperlinkCtrl* m_link_open_in_browser; Button* m_button_skip_version; + CheckBox* m_cb_stable_only; Button* m_button_download; Button* m_button_cancel; std::string url_line; From fab8b78d69aaa30547f6ddc8126946fa9dc0046a Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 29 Dec 2023 12:08:45 +0800 Subject: [PATCH 55/66] update locale --- localization/i18n/OrcaSlicer.pot | 5 ++++- localization/i18n/cs/OrcaSlicer_cs.po | 5 ++++- localization/i18n/de/OrcaSlicer_de.po | 5 ++++- localization/i18n/en/OrcaSlicer_en.po | 5 ++++- localization/i18n/es/OrcaSlicer_es.po | 5 ++++- localization/i18n/fr/OrcaSlicer_fr.po | 5 ++++- localization/i18n/hu/OrcaSlicer_hu.po | 5 ++++- localization/i18n/it/OrcaSlicer_it.po | 5 ++++- localization/i18n/ja/OrcaSlicer_ja.po | 5 ++++- localization/i18n/ko/OrcaSlicer_ko.po | 5 ++++- localization/i18n/nl/OrcaSlicer_nl.po | 5 ++++- localization/i18n/ru/OrcaSlicer_ru.po | 5 ++++- localization/i18n/sv/OrcaSlicer_sv.po | 5 ++++- localization/i18n/tr/OrcaSlicer_tr.po | 5 ++++- localization/i18n/uk/OrcaSlicer_uk.po | 5 ++++- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 5 ++++- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 5 ++++- 17 files changed, 68 insertions(+), 17 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index bfaac9187f..ae31a98187 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -5629,6 +5629,9 @@ msgstr "" msgid "Stealth Mode" msgstr "" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index a5f71cb468..3adc2162fb 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: 2023-09-30 15:15+0200\n" "Last-Translator: René Mošner \n" "Language-Team: \n" @@ -5954,6 +5954,9 @@ msgstr "Región přihlášení" msgid "Stealth Mode" msgstr "Tajný Režim" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "Metrický" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index ef59cd5ff6..e4bfa84b1b 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -6073,6 +6073,9 @@ msgstr "Login-Region" msgid "Stealth Mode" msgstr "Unsichtbarer Modus" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "Metrisch" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 40a9643a32..9b18e15fa7 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -5846,6 +5846,9 @@ msgstr "Login Region" msgid "Stealth Mode" msgstr "" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "Metric" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 593da96258..f9d4d514a7 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -6034,6 +6034,9 @@ msgstr "Región de inicio de sesión" msgid "Stealth Mode" msgstr "Modo invisible" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "Métrico" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index eec239ba7c..fe65962bc2 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -6062,6 +6062,9 @@ msgstr "Région d'origine" msgid "Stealth Mode" msgstr "Mode privé" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "Métrique" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 267fc487aa..511f80e686 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5877,6 +5877,9 @@ msgstr "Régió" msgid "Stealth Mode" msgstr "" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "Metrikus" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 8e743fb350..de9dadfe6e 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -6017,6 +6017,9 @@ msgstr "Regione di accesso" msgid "Stealth Mode" msgstr "Modalità invisibile" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "Metrico" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 48d64cdad9..d2b8c9c339 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -5766,6 +5766,9 @@ msgstr "地域" msgid "Stealth Mode" msgstr "" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "メートル" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index b253d251f0..a59606e5c1 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: 2023-12-25 12:35+0900\n" "Last-Translator: Hotsolidinfill <138652683+Hotsolidinfill@users.noreply." "github.com>, crwusiz \n" @@ -5882,6 +5882,9 @@ msgstr "로그인 지역" msgid "Stealth Mode" msgstr "스텔스 모드" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "미터법" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index b84cf10005..f5b20a59ef 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5928,6 +5928,9 @@ msgstr "Inlogregio" msgid "Stealth Mode" msgstr "" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "Metriek" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index e42baa7d4d..16cb79100f 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V1.8.0 Official Release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: 2023-11-20 01:07+0700\n" "Last-Translator: Andylg \n" "Language-Team: \n" @@ -6020,6 +6020,9 @@ msgstr "Регион входа" msgid "Stealth Mode" msgstr "Режим конфиденциальности (отключение телеметрии Bambulab)" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "Метрическая СИ" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index f20fc58e08..20834e91f7 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5860,6 +5860,9 @@ msgstr "Logga in Region" msgid "Stealth Mode" msgstr "" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "Metrisk" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index e6007c9261..97b747617e 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: 2023-12-25 01:15+0300\n" "Last-Translator: Olcay ÖREN\n" "Language-Team: Türkçe\n" @@ -5968,6 +5968,9 @@ msgstr "Giriş Bölgesi" msgid "Stealth Mode" msgstr "Gizli mod" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "Metrik" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index b343fe1256..3b8dbb0077 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: 2023-08-10 20:25-0400\n" "Last-Translator: \n" "Language-Team: \n" @@ -5917,6 +5917,9 @@ msgstr "Регіон входу" msgid "Stealth Mode" msgstr "" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "Метрика" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 544b719f5d..034ec680b0 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: 2023-04-01 13:21+0800\n" "Last-Translator: SoftFever \n" "Language-Team: \n" @@ -5747,6 +5747,9 @@ msgstr "登录区域" msgid "Stealth Mode" msgstr "局域网模式" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "公制" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index e728395635..a78d5a7171 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-28 00:20+0800\n" +"POT-Creation-Date: 2023-12-29 12:07+0800\n" "PO-Revision-Date: 2023-11-06 14:37+0800\n" "Last-Translator: ablegods \n" "Language-Team: \n" @@ -6009,6 +6009,9 @@ msgstr "登入區域" msgid "Stealth Mode" msgstr "區域網路模式" +msgid "Check for stable updates only" +msgstr "" + msgid "Metric" msgstr "公制" From e3f08c544bcc91ba9232f99fe3ea4e162ef33415 Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 29 Dec 2023 13:18:46 +0100 Subject: [PATCH 56/66] Changed Slic3r mentions (#3344) --- localization/i18n/OrcaSlicer.pot | 14 +++++------ localization/i18n/cs/OrcaSlicer_cs.po | 26 +++++++++---------- localization/i18n/de/OrcaSlicer_de.po | 24 +++++++++--------- localization/i18n/en/OrcaSlicer_en.po | 20 +++++++-------- localization/i18n/es/OrcaSlicer_es.po | 14 +++++------ localization/i18n/fr/OrcaSlicer_fr.po | 26 +++++++++---------- localization/i18n/hu/OrcaSlicer_hu.po | 20 +++++++-------- localization/i18n/it/OrcaSlicer_it.po | 28 ++++++++++----------- localization/i18n/ja/OrcaSlicer_ja.po | 14 +++++------ localization/i18n/ko/OrcaSlicer_ko.po | 28 ++++++++++----------- localization/i18n/nl/OrcaSlicer_nl.po | 20 +++++++-------- localization/i18n/ru/OrcaSlicer_ru.po | 26 +++++++++---------- localization/i18n/sv/OrcaSlicer_sv.po | 20 +++++++-------- localization/i18n/tr/OrcaSlicer_tr.po | 28 ++++++++++----------- localization/i18n/uk/OrcaSlicer_uk.po | 28 ++++++++++----------- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 22 ++++++++-------- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 14 +++++------ src/libslic3r/PrintConfig.cpp | 14 +++++------ 18 files changed, 193 insertions(+), 193 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index ae31a98187..a8bc268a18 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -7932,7 +7932,7 @@ msgid "Hostname, IP or URL" msgstr "" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" @@ -7950,7 +7950,7 @@ msgid "API Key / Password" msgstr "" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" @@ -8805,7 +8805,7 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" @@ -8969,7 +8969,7 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -8990,7 +8990,7 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9700,7 +9700,7 @@ msgid "Host Type" msgstr "" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" @@ -9837,7 +9837,7 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 3adc2162fb..4cd8cdcb91 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -8465,13 +8465,13 @@ msgid "Hostname, IP or URL" msgstr "Název serveru, IP nebo URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"Slic3r může nahrávat G-kódy do tiskového serveru. Toto pole by mělo " +"Orca Slicer může nahrávat G-kódy do tiskového serveru. Toto pole by mělo " "obsahovat název hostitele, IP adresu nebo URL tiskového serveru. K " "tiskovému serveru za HAProxy se zapnutým ověřením basic auth lze přistupovat " "zadáním uživatelského jména a hesla do adresy URL v následujícím formátu: " @@ -8490,10 +8490,10 @@ msgid "API Key / Password" msgstr "API klíč / Heslo" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r může nahrát soubory do tiskového serveru. Toto pole by mělo obsahovat " +"Orca Slicer může nahrát soubory do tiskového serveru. Toto pole by mělo obsahovat " "klíč API požadovaný pro ověření." msgid "Name of the printer" @@ -9508,12 +9508,12 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Po výměně nástroje nemusí být známa přesná poloha nově zavedeného filamentu " "uvnitř trysky a tlak filamentu pravděpodobně ještě není stabilní. Před " -"vyčištěním tiskové hlavy do výplně nebo do objektu bude Slic3r toto množství " +"vyčištěním tiskové hlavy do výplně nebo do objektu bude Orca Slicer toto množství " "materiálu vždy vytlačovat do čistící věže, aby se spolehlivě vytvořily " "následné výplně nebo objekty." @@ -9696,7 +9696,7 @@ msgstr "Délka kotvy vnitřní výplně" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9706,7 +9706,7 @@ msgid "" msgstr "" "Připojení výplně k vnitřnímu perimetru krátkým segmentem dalšího perimetru. " "Pokud je vyjádřeno v procentech (příklad: 15%), vypočítává se z šířky " -"extruze výplně. PrusaSlicer se pokouší spojit dvě blízké výplňová čáry " +"extruze výplně. Orca Slicer se pokouší spojit dvě blízké výplňová čáry " "krátkým obvodovým perimetrem. Pokud není nalezen žádný takový obvodový " "perimetr kratší než infill_anchor_max, je výplňová čára spojena s obvodovým " "perimetrem pouze na jedné straně a délka odebraného obvodového perimetru je " @@ -9726,7 +9726,7 @@ msgstr "Maximální délka výplňové kotvy" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10585,10 +10585,10 @@ msgid "Host Type" msgstr "Typ tiskového serveru" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -"Slic3r může nahrát soubory G-kódu do tiskového serveru. Toto pole musí " +"Orca Slicer může nahrát soubory G-kódu do tiskového serveru. Toto pole musí " "obsahovat druh tiskového serveru." msgid "Nozzle volume" @@ -10747,13 +10747,13 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" "Pokud chcete výstupní G-kód zpracovat pomocí vlastních skriptů, stačí zde " "uvést jejich absolutní cesty. Více skriptů oddělte středníkem. Skriptu bude " "předána absolutní cesta k souboru G-kódu jako první argument a mohou přístup " -"k nastavení konfigurace Slic3r čtením proměnných prostředí." +"k nastavení konfigurace Orca Slicer čtením proměnných prostředí." msgid "Printer notes" msgstr "Poznámky o tiskárně" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index e4bfa84b1b..4ee7331f32 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -8681,13 +8681,13 @@ msgid "Hostname, IP or URL" msgstr "Hostname, IP oder URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"Slic3r kann G-Code-Dateien auf einen Drucker-Host hochladen. Dieses Feld " +"Orca Slicer kann G-Code-Dateien auf einen Drucker-Host hochladen. Dieses Feld " "sollte den Hostnamen, die IP-Adresse oder die URL der Drucker-Host-Instanz " "enthalten. Auf einen Drucker-Host hinter HAProxy mit aktivierter " "Basisauthentifizierung kann zugegriffen werden, indem Benutzername und " @@ -8708,10 +8708,10 @@ msgid "API Key / Password" msgstr "API-Schlüssel / Passwort" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r kann G-Code-Dateien auf einen Drucker-Host hochladen. Dieses Feld " +"Orca Slicer kann G-Code-Dateien auf einen Drucker-Host hochladen. Dieses Feld " "sollte den API-Schlüssel oder das für die Authentifizierung erforderliche " "Passwort enthalten." @@ -9821,12 +9821,12 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Nach einem Werkzeugwechsel ist die genaue Position des neu geladenen " "Filaments im Düsenkopf möglicherweise unbekannt und der Filamentdruck ist " -"wahrscheinlich noch nicht stabil. Bevor Slic3r den Druckkopf in ein Infill " +"wahrscheinlich noch nicht stabil. Bevor Orca Slicer den Druckkopf in ein Infill " "oder ein opferbares Objekt spült, wird immer diese Menge Material in den " "Wipe-Turm gefüllt, um zuverlässige nachfolgende Infill- oder opferbare " "Objekt-Extrusionen zu erzeugen. So wird sichergestellt, dass das Drucken " @@ -10018,7 +10018,7 @@ msgstr "Länge des Infill-Ankers" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10050,7 +10050,7 @@ msgstr "Maximale Länge des Infill-Ankers" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10937,10 +10937,10 @@ msgid "Host Type" msgstr "Host-Typ" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -"Slic3r kann G-Code-Dateien auf einen Drucker-Host hochladen. Dieses Feld " +"Orca Slicer kann G-Code-Dateien auf einen Drucker-Host hochladen. Dieses Feld " "muss die Art des Hosts enthalten." msgid "Nozzle volume" @@ -11106,13 +11106,13 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" "Wenn Sie die Ausgabe-G-Code-Datei durch benutzerdefinierte Skripts " "verarbeiten möchten, geben Sie hier die absoluten Pfade auf. Trennen Sie " "mehrere Skripts durch ein Semikolon. Die Skripts erhalten den absoluten Pfad " -"zur G-Code-Datei als erstes Argument und können die Slic3r-" +"zur G-Code-Datei als erstes Argument und können die Orca Slicer-" "Konfigurationseinstellungen durch Lesen von Umgebungsvariablen abrufen." msgid "Printer notes" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 9b18e15fa7..9d48a78119 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -8313,13 +8313,13 @@ msgid "Hostname, IP or URL" msgstr "Hostname, IP or URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" @@ -8336,10 +8336,10 @@ msgid "API Key / Password" msgstr "API Key / Password" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgid "Name of the printer" @@ -9304,7 +9304,7 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" @@ -9472,7 +9472,7 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9493,7 +9493,7 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10249,10 +10249,10 @@ msgid "Host Type" msgstr "Host Type" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgid "Nozzle volume" @@ -10394,7 +10394,7 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index f9d4d514a7..2047eac510 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -8621,7 +8621,7 @@ msgid "Hostname, IP or URL" msgstr "Nombre de host, IP o URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" @@ -8647,7 +8647,7 @@ msgid "API Key / Password" msgstr "Clave API / Contraseña" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" "OrcaSlicer puede cargar archivos G-Cpde a un host de impresora. Este campo " @@ -9759,7 +9759,7 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Tras un cambio de herramienta, es posible que no se conozca la posición " @@ -9960,7 +9960,7 @@ msgstr "Longitud del anclaje de relleno de baja densidad" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9991,7 +9991,7 @@ msgstr "Máxima longitud del relleno del anclaje" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10883,7 +10883,7 @@ msgid "Host Type" msgstr "Tipo de host" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" "Orca Slicer puede cargar archivos G-Code a un host de impresora. Este campo " @@ -11054,7 +11054,7 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" "Si desea procesar el G-Code de salida a través de scripts personalizados, " diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index fe65962bc2..8443c16e1e 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -8707,13 +8707,13 @@ msgid "Hostname, IP or URL" msgstr "Nom d'hôte, adresse IP ou URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"Slic3r peut téléverser des fichiers G-code sur une imprimante hôte. Ce champ " +"Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce champ " "doit contenir le nom d'hôte, l'adresse IP ou l'URL de l'instance hôte de " "l'imprimante. L'hôte d'impression derrière HAProxy avec l'authentification " "de base activée est accessible en saisissant le nom d'utilisateur et le mot " @@ -8733,10 +8733,10 @@ msgid "API Key / Password" msgstr "Clé API / Mot de passe" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r peut téléverser des fichiers G-code sur une imprimante hôte. Ce champ " +"Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce champ " "doit contenir la clé API ou le mot de passe requis pour l'authentification." msgid "Name of the printer" @@ -9861,13 +9861,13 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Après un changement d’outil, la position exacte du filament nouvellement " "chargé à l’intérieur de la buse peut ne pas être connue et la pression du " "filament n’est probablement pas encore stable. Avant de purger la tête " -"d’impression dans un remplissage ou un objet, Slic3r amorcera toujours cette " +"d’impression dans un remplissage ou un objet, Orca Slicer amorcera toujours cette " "quantité de matériau dans la tour d’essuyage pour purger dans les " "remplissages ou objets de manière fiable." @@ -10062,7 +10062,7 @@ msgstr "Longueur de l’ancrage de remplissage interne" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10092,7 +10092,7 @@ msgstr "Longueur maximale de l’ancrage de remplissage" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10103,7 +10103,7 @@ msgstr "" "Connecter une ligne de remplissage à un périmètre interne avec un court " "segment de périmètre supplémentaire. S’il est exprimé en pourcentage " "(exemple : 15 %), il est calculé sur la largeur de l’extrusion de " -"remplissage. Slic3r essaie de connecter deux lignes de remplissage proches à " +"remplissage. Orca Slicer essaie de connecter deux lignes de remplissage proches à " "un court segment de périmètre. Si aucun segment de périmètre plus court que " "ce paramètre n’est trouvé, la ligne de remplissage est connectée à un " "segment de périmètre sur un seul côté et la longueur du segment de périmètre " @@ -10996,10 +10996,10 @@ msgid "Host Type" msgstr "Type d'hôte" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -"Slic3r peut téléverser des fichiers G-code sur une imprimante hôte. Ce champ " +"Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce champ " "doit contenir le type d'hôte." msgid "Nozzle volume" @@ -11182,14 +11182,14 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" "Si vous souhaitez traiter le G-code de sortie via des scripts personnalisés, " "indiquez simplement leurs chemins absolus ici. Séparez plusieurs scripts par " "un point-virgule. Les scripts recevront le chemin absolu vers le fichier G-" "code comme premier argument, et ils peuvent accéder aux paramètres de " -"configuration Slic3r en lisant les variables d’environnement." +"configuration Orca Slicer en lisant les variables d’environnement." msgid "Printer notes" msgstr "Notes de l’mprimante" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 511f80e686..451f6eef5a 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -8381,13 +8381,13 @@ msgid "Hostname, IP or URL" msgstr "Hosztnév, IP vagy URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"A Slic3r képes G-kód fájlokat feltölteni a nyomtatóra. Ennek a mezőnek " +"A Orca Slicer képes G-kód fájlokat feltölteni a nyomtatóra. Ennek a mezőnek " "tartalmaznia kell a nyomtató hostnevét, IP-címét vagy URL-címét. A HAProxy " "mögött lévő nyomtató alapszintű hitelesítéssel érhető el, ha a " "felhasználónevet és a jelszót a következő formátumban beleírod az URL-be: " @@ -8404,10 +8404,10 @@ msgid "API Key / Password" msgstr "API kulcs / jelszó" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"A Slic3r képes G-kód fájlokat feltölteni a nyomtatóra. Ennek a mezőnek " +"A Orca Slicer képes G-kód fájlokat feltölteni a nyomtatóra. Ennek a mezőnek " "tartalmaznia kell a hitelesítéshez szükséges API-kulcsot vagy jelszót." msgid "Name of the printer" @@ -9375,7 +9375,7 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" @@ -9545,7 +9545,7 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9566,7 +9566,7 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10325,10 +10325,10 @@ msgid "Host Type" msgstr "Host típusa" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -"A Slic3r képes G-kód fájlokat feltölteni a nyomtatóra. Ennek a mezőnek " +"A Orca Slicer képes G-kód fájlokat feltölteni a nyomtatóra. Ennek a mezőnek " "tartalmaznia kell a gazdagép típusát." msgid "Nozzle volume" @@ -10472,7 +10472,7 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index de9dadfe6e..7e6b4975f7 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -8621,13 +8621,13 @@ msgid "Hostname, IP or URL" msgstr "Nome host, IP o URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"Slic3r può caricare file di G-code su un host di stampa. Questo campo deve " +"Orca Slicer può caricare file di G-code su un host di stampa. Questo campo deve " "contenere il nome dell'host, l'indirizzo IP o l'URL dell'istanza dell'host " "di stampa. L'host di stampa dietro HAProxy con l'autenticazione di base " "abilitata è accessibile inserendo il nome utente e la password nell'URL nel " @@ -8646,10 +8646,10 @@ msgid "API Key / Password" msgstr "Chiave API / Password" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r può caricare file G-code su un host di stampa. Questo campo deve " +"Orca Slicer può caricare file G-code su un host di stampa. Questo campo deve " "contenere la chiave API o la password richiesta per l'autenticazione." msgid "Name of the printer" @@ -9766,13 +9766,13 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Dopo un cambio di strumento, l'esatta posizione del filamento appena " "caricato dentro l'ugello potrebbe essere sconosciuta, e la pressione del " "filamento probabilmente non è ancora stabile. Prima di spurgare la testina " -"di stampa nel riempimento o in un oggetto sacrificale, Slic3r posizionerà " +"di stampa nel riempimento o in un oggetto sacrificale, Orca Slicer posizionerà " "questo materiale in una torre di pulitura al fine di ottenere una successiva " "estrusione affidabile su oggetto sacrificale o riempimento." @@ -9966,7 +9966,7 @@ msgstr "Lunghezza dell'ancora di riempimento sparsa" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9976,7 +9976,7 @@ msgid "" msgstr "" "Collegare una linea di riempimento a un perimetro interno con un breve " "segmento di un perimetro aggiuntivo. Se espresso in percentuale (esempio: " -"15%) viene calcolato sulla larghezza di estrusione del riempimento. Slic3r " +"15%) viene calcolato sulla larghezza di estrusione del riempimento. Orca Slicer " "tenta di collegare due linee di riempimento ravvicinate a un breve segmento " "perimetrale. Se non viene trovato alcun segmento perimetrale più corto di " "infill_anchor_max, la linea di riempimento viene collegata a un segmento " @@ -9997,7 +9997,7 @@ msgstr "Lunghezza massima dell'ancoraggio del riempimento" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10007,7 +10007,7 @@ msgid "" msgstr "" "Collegare una linea di riempimento a un perimetro interno con un breve " "segmento di un perimetro aggiuntivo. Se espresso in percentuale (esempio: " -"15%) viene calcolato sulla larghezza di estrusione del riempimento. Slic3r " +"15%) viene calcolato sulla larghezza di estrusione del riempimento. Orca Slicer " "tenta di collegare due linee di riempimento ravvicinate a un breve segmento " "perimetrale. Se non viene trovato alcun segmento perimetrale più corto di " "questo parametro, la linea di riempimento viene collegata a un segmento " @@ -10890,10 +10890,10 @@ msgid "Host Type" msgstr "Tipo host" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -"Slic3r può caricare file G-code su un host di stampa. Questo campo deve " +"Orca Slicer può caricare file G-code su un host di stampa. Questo campo deve " "contenere il tipo di host." msgid "Nozzle volume" @@ -11063,13 +11063,13 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" "Se vuoi processare il G-code in uscita con script personalizzati, basta " "elencare qui il loro percorso assoluto. Separa i diversi script con un punto " "e virgola. Gli script passeranno il percorso assoluto nel G-code come primo " -"argomento, e potranno accedere alle impostazioni di configurazione di Slic3r " +"argomento, e potranno accedere alle impostazioni di configurazione di Orca Slicer " "leggendo le variabili di ambiente." msgid "Printer notes" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index d2b8c9c339..d31f4823f3 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -8162,7 +8162,7 @@ msgid "Hostname, IP or URL" msgstr "Hostname、IPまたはURL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" @@ -8182,7 +8182,7 @@ msgid "API Key / Password" msgstr "APIキー/パスワード" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "APIキーとパスワードを入力してください。" @@ -9107,7 +9107,7 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" @@ -9271,7 +9271,7 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9292,7 +9292,7 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10023,7 +10023,7 @@ msgid "Host Type" msgstr "ホストタイプ" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "ホストタイプを入力してください。" @@ -10163,7 +10163,7 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index a59606e5c1..833085ca02 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -8361,13 +8361,13 @@ msgid "Hostname, IP or URL" msgstr "호스트 이름, IP 또는 URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"Slic3r은 G코드 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드에는 프린" +"Orca Slicer은 G코드 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드에는 프린" "터 호스트 인스턴스의 호스트 이름, IP 주소 또는 URL이 포함되어야 합니다. 기본 " "인증이 활성화된 HAProxy 뒤의 출력 호스트는 https://username:password@your-" "octopi-address/ 형식의 URL에 사용자 이름과 암호를 입력하여 액세스할 수 있습니" @@ -8385,10 +8385,10 @@ msgid "API Key / Password" msgstr "API 키 / 비밀번호" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r은 G코드 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드에는 인증" +"Orca Slicer은 G코드 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드에는 인증" "에 필요한 API 키 또는 비밀번호가 포함되어야 합니다." msgid "Name of the printer" @@ -9416,12 +9416,12 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" "툴 교환 후 노즐 내부에 새로 로드된 필라멘트의 정확한 위치를 알 수 없으며 필라" "멘트 압력이 아직 안정적이지 않을 수 있습니다. 프린트 헤드를 채우기 또는 희생 " -"개체로 청소하기 전에 Slic3r은 항상 이 양의 재료를 닦기 타워로 프라이밍하여 연" +"개체로 청소하기 전에 Orca Slicer은 항상 이 양의 재료를 닦기 타워로 프라이밍하여 연" "속적인 채우기 또는 희생 물체 압출을 안정적으로 생성합니다." msgid "Speed of the last cooling move" @@ -9601,7 +9601,7 @@ msgstr "드문 채우기 고정점 길이" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9610,7 +9610,7 @@ msgid "" "single infill line." msgstr "" "사용하여 채우기 선을 내부 둘레에 연결합니다. 백분율(예: 15%)로 표시되는 경우 " -"채우기 돌출 너비에 대해 계산됩니다. Slic3r은 두 개의 가까운 채우기 선을 짧은 " +"채우기 돌출 너비에 대해 계산됩니다. Orca Slicer은 두 개의 가까운 채우기 선을 짧은 " "주변 세그먼트에 연결하려고 합니다. 내부 채우기 고정점 (infill_anchor_max) 최" "대 길이보다 짧은 경계 세그먼트가 발견되지 않으면 \n" "채우기 선은 한쪽에서 경계 세그먼트에 연결되고 취해진 경계 세그먼트의 길이는 " @@ -9631,7 +9631,7 @@ msgstr "채우기 고정점 최대 길이" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9640,7 +9640,7 @@ msgid "" "create the same result as with 1000 & 0." msgstr "" "추가 둘레의 짧은 세그먼트를 사용하여 채우기 선을 내부 둘레에 연결합니다. 백분" -"율(예: 15%)로 표시되는 경우 채우기 돌출 너비에 대해 계산됩니다. Slic3r은 두 " +"율(예: 15%)로 표시되는 경우 채우기 돌출 너비에 대해 계산됩니다. Orca Slicer은 두 " "개의 가까운 채우기 선을 짧은 주변 세그먼트에 연결하려고 합니다. 이 매개변수보" "다 짧은 주변 세그먼트가 발견되지 않으면 채우기 선은 한쪽 측면의 주변 세그먼트" "에 연결되고 사용된 주변 세그먼트의 길이는 앵커 채우기(infill_anchor)로 제한되" @@ -10471,10 +10471,10 @@ msgid "Host Type" msgstr "호스트 유형" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -"Slic3r은 G코드 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드는 호스트" +"Orca Slicer은 G코드 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드는 호스트" "의 종류를 포함해야 합니다." msgid "Nozzle volume" @@ -10635,12 +10635,12 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" "사용자 정의 스크립트를 통해 출력 G코드를 처리하려면 여기에 절대 경로를 나열하" "세요. 여러 스크립트는 세미콜론(;)으로 구분합니다. 스크립트는 G코드 파일의 절" -"대 경로를 첫 번째 값으로 전달하며 환경 변수를 읽어 Slic3r 구성 설정에 접근할 " +"대 경로를 첫 번째 값으로 전달하며 환경 변수를 읽어 Orca Slicer 구성 설정에 접근할 " "수 있습니다." msgid "Printer notes" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index f5b20a59ef..1fa3ca8940 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -8460,13 +8460,13 @@ msgid "Hostname, IP or URL" msgstr "Hostnaam, IP of URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"Slic3r kan G-codebestanden uploaden naar een printerhost. Dit veld moet de " +"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet de " "hostnaam, het IP-adres of de URL van de printerhostinstantie bevatten. " "Printhost achter HAProxy met ingeschakelde basisauthenticatie is " "toegankelijk door de gebruikersnaam en het wachtwoord in de volgende " @@ -8484,10 +8484,10 @@ msgid "API Key / Password" msgstr "API sleutel / wachtwoord" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r kan G-codebestanden uploaden naar een printerhost. Dit veld moet de " +"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet de " "API-sleutel of het wachtwoord bevatten dat nodig is voor authenticatie." msgid "Name of the printer" @@ -9465,7 +9465,7 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" @@ -9635,7 +9635,7 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9656,7 +9656,7 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10421,10 +10421,10 @@ msgid "Host Type" msgstr "Hosttype" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -"Slic3r kan G-codebestanden uploaden naar een printerhost. Dit veld moet het " +"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet het " "type host bevatten." msgid "Nozzle volume" @@ -10571,7 +10571,7 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 16cb79100f..c139c11ef6 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -8600,13 +8600,13 @@ msgid "Hostname, IP or URL" msgstr "Имя хоста, IP/URL-адрес" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"Slic3r может загружать файл G-кода на хост принтера. В этом поле нужно " +"Orca Slicer может загружать файл G-кода на хост принтера. В этом поле нужно " "указать имя хоста, IP-адрес или URL-адрес хост-экземпляра печати. Доступ к " "узлу печати на основе HAProxy с включенной базовой аутентификацией можно " "получить, указав имя пользователя и пароль в поле URL-адрес в следующем " @@ -8625,10 +8625,10 @@ msgid "API Key / Password" msgstr "API-ключ/Пароль" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r может загружать файл G-кода на хост принтера. Это поле должно " +"Orca Slicer может загружать файл G-кода на хост принтера. Это поле должно " "содержать API ключ или пароль, необходимые для проверки подлинности." msgid "Name of the printer" @@ -9669,13 +9669,13 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" "После смены инструмента, точное положение вновь загруженного прутка внутри " "него может быть неизвестно, и давление прутка, вероятно, ещё не стабильно. " "Перед тем, как очистить печатающую головку в заполнение или в «жертвенную» " -"модель Slic3r всегда будет выдавливать это количество материала на черновую " +"модель Orca Slicer всегда будет выдавливать это количество материала на черновую " "башню, чтобы обеспечить надёжную печать заполнения или «жертвенной» модели." msgid "Speed of the last cooling move" @@ -9862,7 +9862,7 @@ msgstr "Длина привязок разреженного заполнени msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9894,7 +9894,7 @@ msgstr "Максимальная длина привязок разреженн msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9904,7 +9904,7 @@ msgid "" msgstr "" "Соединять линию заполнения с внутренним периметром с помощью короткого " "отрезка дополнительного периметра (привязок). Если выражено в процентах, то " -"она вычисляется по ширине экструзии заполнения. Slic3r пытается соединить " +"она вычисляется по ширине экструзии заполнения. Orca Slicer пытается соединить " "две ближайшие линии заполнения с коротким отрезком периметра. Если не " "найдено такого отрезка периметра короче этого параметра, линия заполнения " "соединяется с отрезком периметра только с одной стороны, а длина отрезка " @@ -10783,10 +10783,10 @@ msgid "Host Type" msgstr "Тип хоста" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -"Slic3r может загружать файл G-кода на хост принтера. Это поле должно " +"Orca Slicer может загружать файл G-кода на хост принтера. Это поле должно " "содержать тип хоста." msgid "Nozzle volume" @@ -10948,14 +10948,14 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" "Если вы хотите обработать выходной G-код с помощью пользовательских " "скриптов, просто перечислите здесь абсолютные пути к ним. Разделяйте скрипты " "точкой с запятой. Скриптам будет передан абсолютный путь к файлу G-кода в " "качестве первого аргумента, и они смогут получить доступ к настройкам " -"конфигурации Slic3r, читая переменные окружения." +"конфигурации Orca Slicer, читая переменные окружения." msgid "Printer notes" msgstr "Примечания к принтеру" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 20834e91f7..b532ea992c 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -8331,13 +8331,13 @@ msgid "Hostname, IP or URL" msgstr "Värdnamn, IP eller URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"Slic3r kan ladda upp G-kod filer till en printer värd. Det här fältet ska " +"Orca Slicer kan ladda upp G-kod filer till en printer värd. Det här fältet ska " "innehålla värdnamn, IP-adress eller URL för printer värd platsen. Du kan få " "tillgång till printer värd till HAProxy med grundläggande autentisering " "aktiverad genom att ange användarnamn och lösenord i URL:en i följande " @@ -8354,10 +8354,10 @@ msgid "API Key / Password" msgstr "API Nyckel/Lösenord" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r kan ladda upp G-kod filer till en printer värd. Det här fältet ska " +"Orca Slicer kan ladda upp G-kod filer till en printer värd. Det här fältet ska " "innehålla API nyckeln eller lösenordet som krävs för autentisering." msgid "Name of the printer" @@ -9314,7 +9314,7 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" @@ -9484,7 +9484,7 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9505,7 +9505,7 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10262,10 +10262,10 @@ msgid "Host Type" msgstr "Värd typ" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -"Slic3r kan ladda upp G-kod filer till en skrivar värd. Det här fältet måste " +"Orca Slicer kan ladda upp G-kod filer till en skrivar värd. Det här fältet måste " "innehålla typ av värd." msgid "Nozzle volume" @@ -10408,7 +10408,7 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 97b747617e..85ecd0f27c 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -8515,13 +8515,13 @@ msgid "Hostname, IP or URL" msgstr "Ana bilgisayar adı, IP veya URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"Slic3r, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " "alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini veya " "URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu HAProxy'nin " "arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve parolanın aşağıdaki " @@ -8541,10 +8541,10 @@ msgid "API Key / Password" msgstr "API Anahtarı / Şifre" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " "alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi içermelidir." msgid "Name of the printer" @@ -9618,12 +9618,12 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Bir takım değişiminden sonra, yeni yüklenen filamentin nozul içindeki kesin " "konumu bilinmeyebilir ve filament basıncı muhtemelen henüz stabil değildir. " -"Yazdırma kafasını bir dolguya veya kurban nesneye boşaltmadan önce Slic3r, " +"Yazdırma kafasını bir dolguya veya kurban nesneye boşaltmadan önce Orca Slicer, " "ardışık dolgu veya kurban nesne ekstrüzyonlarını güvenilir bir şekilde " "üretmek için her zaman bu miktardaki malzemeyi silme kulesine " "hazırlayacaktır." @@ -9812,7 +9812,7 @@ msgstr "Dolgu uzunluğu" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9822,7 +9822,7 @@ msgid "" msgstr "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " "bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " -"genişliği üzerinden hesaplanır. Slic3r iki yakın dolgu hattını kısa bir " +"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " "çevre segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle " "bir çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " "segmentine bağlanır ve alınan çevre segmentinin uzunluğu bu parametreyle " @@ -9842,7 +9842,7 @@ msgstr "Dolgu maksimum uzunluk" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9852,7 +9852,7 @@ msgid "" msgstr "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " "bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " -"genişliği üzerinden hesaplanır. Slic3r iki yakın dolgu hattını kısa bir " +"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " "çevre segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre " "segmenti bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine " "bağlanır ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır " @@ -10714,10 +10714,10 @@ msgid "Host Type" msgstr "Bağlantı Türü" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -"Slic3r, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " "alan ana bilgisayarın türünü içermelidir." msgid "Nozzle volume" @@ -10887,13 +10887,13 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" "Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, " "mutlak yollarını burada listeleyin. Birden fazla betiği noktalı virgülle " "ayırın. Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır " -"ve ortam değişkenlerini okuyarak Slic3r yapılandırma ayarlarına " +"ve ortam değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına " "erişebilirler." msgid "Printer notes" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 3b8dbb0077..b13d619767 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -8382,13 +8382,13 @@ msgid "Hostname, IP or URL" msgstr "Ім'я хоста, IP або URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"Slic3r може завантажувати файли G-коду на хост принтера. Це поле повинно " +"Orca Slicer може завантажувати файли G-коду на хост принтера. Це поле повинно " "містити ім'я хоста, IP-адресу або URL-адресу екземпляра вузла принтера. " "Вузол друку за HAProxy з увімкненою базовою авторизацією можна отримати " "доступ, ввівши користувача ім'я та пароль в URL у наступному форматі: " @@ -8408,10 +8408,10 @@ msgid "API Key / Password" msgstr "Ключ API / Пароль" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r може завантажувати файли G-коду на хост принтера. Це поле повинно " +"Orca Slicer може завантажувати файли G-коду на хост принтера. Це поле повинно " "утримувати \n" "API-ключ або пароль, необхідний для автентифікації." @@ -9397,13 +9397,13 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Після заміни інструменту точне положення новонавантаженої нитки " "напруженнявсередині сопла може бути невідомо, і тиск нитки розжарення, " "ймовірно, ще неє стабільним. Перед продуванням друкувальної головки в " -"наповнювач або об'єкт Slic3r, що витрачається, завжди буде дозувати цю " +"наповнювач або об'єкт Orca Slicer, що витрачається, завжди буде дозувати цю " "кількість матеріалу в вежу для протирання, щоб забезпечити надійне " "послідовне заповненняабо видавлювання об'єкта, що витрачається." @@ -9569,7 +9569,7 @@ msgstr "Довжина прив'язки заповнення" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9579,7 +9579,7 @@ msgid "" msgstr "" "З'єднайте лінію заповнення з внутрішнім периметром із коротким " "сегментомдодаткового периметра. Якщо воно виражено у відсотках (наприклад, " -"15%), воно розраховується за шириною екструзії заповнення. Slic3r " +"15%), воно розраховується за шириною екструзії заповнення. Orca Slicer " "намагається з'єднати Дві близькі лінії заповнення з коротким сегментом " "периметра. Якщо такий сегмент периметра коротше infill_anchor_max не " "знайдено, лінія заповнення з'єднується з сегментом периметра лише з одного " @@ -9600,7 +9600,7 @@ msgstr "Максимальна довжина прив'язки, що запов msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9610,7 +9610,7 @@ msgid "" msgstr "" "З'єднайте лінію заповнення з внутрішнім периметром із коротким " "сегментомдодаткового периметра. Якщо воно виражено у відсотках (наприклад, " -"15%), воно розраховується за шириною екструзії заповнення. Slic3r " +"15%), воно розраховується за шириною екструзії заповнення. Orca Slicer " "намагається з'єднати Дві близькі лінії заповнення з коротким сегментом " "периметра. Якщо такий сегмент периметра коротший за цей параметр не " "знайдено, лінія заповнення з'єднується з сегментом периметра лише з одного " @@ -10414,10 +10414,10 @@ msgid "Host Type" msgstr "Тип хоста" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -"Slic3r може завантажувати файли G-коду на хост принтера. Це поле повинно " +"Orca Slicer може завантажувати файли G-коду на хост принтера. Це поле повинно " "утримувати тип хоста." msgid "Nozzle volume" @@ -10559,13 +10559,13 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" "Якщо ви хочете обробити вихідний G-код через користувацькі сценарії,Просто " "перерахуйте їх абсолютні шляхи тут. Розділіть кілька сценаріївточкою з " "комою. Сценаріям передається абсолютний шлях до файлу G-коду в як перший " -"аргумент, і вони можуть отримати доступ до налаштувань Slic3r конфігурації " +"аргумент, і вони можуть отримати доступ до налаштувань Orca Slicer конфігурації " "шляхом читання змінних середовища." msgid "Printer notes" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 034ec680b0..bad89b2149 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -8127,13 +8127,13 @@ msgid "Hostname, IP or URL" msgstr "主机名,IP或者URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" "password@your-octopi-address/" msgstr "" -"Slic3r可以将G-code文件上传到打印机主机。此字段应包含打印机主机实例的主机名、" +"Orca Slicer可以将G-code文件上传到打印机主机。此字段应包含打印机主机实例的主机名、" "IP地址或URL。启用基本身份验证的Print host可以通过将用户名和密码放入以下格式的" "URL中来访问:https://username:password@your-octopi-address/" @@ -8148,10 +8148,10 @@ msgid "API Key / Password" msgstr "API秘钥/密码" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r可以将G-code文件上传到打印机主机。此字段应包含用于身份验证的API密钥或密" +"Orca Slicer可以将G-code文件上传到打印机主机。此字段应包含用于身份验证的API密钥或密" "码。" msgid "Name of the printer" @@ -9099,11 +9099,11 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" "换色后,新加载的耗材在喷嘴内的确切位置可能未知,耗材压力可能还不稳定。在冲刷" -"打印头到填充或作为挤出废料之前,Slic3r将始终将这些的耗材丝冲刷到擦拭塔中以产" +"打印头到填充或作为挤出废料之前,Orca Slicer将始终将这些的耗材丝冲刷到擦拭塔中以产" "生连续的填充或稳定的挤出废料。" msgid "Speed of the last cooling move" @@ -9274,7 +9274,7 @@ msgstr "稀疏填充锚线长度" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9300,7 +9300,7 @@ msgstr "填充锚线的最大长度" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10058,9 +10058,9 @@ msgid "Host Type" msgstr "主机类型" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." -msgstr "Slic3r可以将G-code文件上传到打印机主机。此字段必须包含主机类型。" +msgstr "Orca Slicer可以将G-code文件上传到打印机主机。此字段必须包含主机类型。" msgid "Nozzle volume" msgstr "喷嘴内腔体积" @@ -10214,7 +10214,7 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index a78d5a7171..9ca6a23b8f 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -8552,7 +8552,7 @@ msgstr "主機名,IP 或者 URL" #, fuzzy msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. Print host " "behind HAProxy with basic auth enabled can be accessed by putting the user " "name and password into the URL in the following format: https://username:" @@ -8575,7 +8575,7 @@ msgstr "API Key / 密碼" #, fuzzy msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " +"Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" "Orca slicer 可以將 G-code 檔案上傳到列印設備。此欄位應包含用於身份驗證的 API " @@ -9571,7 +9571,7 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " +"object, Orca Slicer will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" "換色後,新載入的線材在噴嘴內的確切位置可能未知,耗材壓力可能還不穩定。在沖刷" @@ -9750,7 +9750,7 @@ msgstr "稀疏填充錨線長度" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -9778,7 +9778,7 @@ msgstr "填充錨線的最大長度" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " +"calculated over infill extrusion width. Orca Slicer tries to connect two close " "infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a " "perimeter segment at just one side and the length of the perimeter segment " @@ -10582,7 +10582,7 @@ msgstr "主機類型" #, fuzzy msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " +"Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "切片軟體可以將 G-code 檔案上傳到列印設備。此欄位必須包含設備類型。" @@ -10736,7 +10736,7 @@ msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " +"argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" "如果您想透過自訂腳本處理輸出的 G-code,只需在此處列出它們的絕對路徑即可。 用" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 4d16af5c96..1073c0d20b 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -487,7 +487,7 @@ void PrintConfigDef::init_common_params() def = this->add("print_host", coString); def->label = L("Hostname, IP or URL"); - def->tooltip = L("Slic3r can upload G-code files to a printer host. This field should contain " + def->tooltip = L("Orca Slicer can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance. " "Print host behind HAProxy with basic auth enabled can be accessed by putting the user name and password into the URL " "in the following format: https://username:password@your-octopi-address/"); @@ -505,7 +505,7 @@ void PrintConfigDef::init_common_params() def = this->add("printhost_apikey", coString); def->label = L("API Key / Password"); - def->tooltip = L("Slic3r can upload G-code files to a printer host. This field should contain " + def->tooltip = L("Orca Slicer can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication."); def->mode = comAdvanced; def->cli = ConfigOptionDef::nocli; @@ -1633,7 +1633,7 @@ def = this->add("filament_loading_speed", coFloats); def->label = L("Minimal purge on wipe tower"); def->tooltip = L("After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet stable. " - "Before purging the print head into an infill or a sacrificial object, Slic3r will always prime " + "Before purging the print head into an infill or a sacrificial object, Orca Slicer will always prime " "this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably."); def->sidetext = L("mm³"); def->min = 0; @@ -1837,7 +1837,7 @@ def = this->add("filament_loading_speed", coFloats); def->label = L("Sparse infill anchor length"); def->category = L("Strength"); def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. " - "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Slic3r tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment " + "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Orca Slicer tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment " "shorter than infill_anchor_max is found, the infill line is connected to a perimeter segment at just one side " "and the length of the perimeter segment taken is limited to this parameter, but no longer than anchor_length_max. " "\nSet this parameter to zero to disable anchoring perimeters connected to a single infill line."); @@ -1864,7 +1864,7 @@ def = this->add("filament_loading_speed", coFloats); def->label = L("Maximum length of the infill anchor"); def->category = L("Strength"); def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. " - "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Slic3r tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment " + "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Orca Slicer tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment " "shorter than this parameter is found, the infill line is connected to a perimeter segment at just one side " "and the length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter. " "\nIf set to 0, the old algorithm for infill connection will be used, it should create the same result as with 1000 & 0."); @@ -2826,7 +2826,7 @@ def = this->add("filament_loading_speed", coFloats); def = this->add("host_type", coEnum); def->label = L("Host Type"); - def->tooltip = L("Slic3r can upload G-code files to a printer host. This field must contain " + def->tooltip = L("Orca Slicer can upload G-code files to a printer host. This field must contain " "the kind of the host."); def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); def->enum_values.push_back("prusalink"); @@ -3021,7 +3021,7 @@ def = this->add("filament_loading_speed", coFloats); def->tooltip = L("If you want to process the output G-code through custom scripts, " "just list their absolute paths here. Separate multiple scripts with a semicolon. " "Scripts will be passed the absolute path to the G-code file as the first argument, " - "and they can access the Slic3r config settings by reading environment variables."); + "and they can access the Orca Slicer config settings by reading environment variables."); def->gui_flags = "serialized"; def->multiline = true; def->full_width = true; From 86936e8873afb7ab4d0da694bc2d93ebd5fa0e99 Mon Sep 17 00:00:00 2001 From: Heiko Liebscher Date: Fri, 29 Dec 2023 13:20:21 +0100 Subject: [PATCH 57/66] Update German translation for 1.9 (#3343) --- localization/i18n/de/OrcaSlicer_de.po | 289 ++++++++++++++------------ 1 file changed, 155 insertions(+), 134 deletions(-) diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 4ee7331f32..5b1c1318ef 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -714,142 +714,144 @@ msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." msgstr "" +"Der Text kann nicht mit der ausgewählten Schriftart geschrieben werden. " +"Versuchen Sie es mit einer anderen Schriftart." msgid "Embossed text cannot contain only white spaces." -msgstr "" +msgstr "Der geprägte Text darf nicht nur Leerzeichen enthalten." msgid "Text contains character glyph (represented by '?') unknown by font." -msgstr "" +msgstr "Text enthält ein Zeichen, das von der Schriftart nicht erkannt wird." msgid "Text input doesn't show font skew." -msgstr "" +msgstr "Texteingabe zeigt keine Schriftneigung an." msgid "Text input doesn't show font boldness." -msgstr "" +msgstr "Texteingabe zeigt keine Schriftstärke an." msgid "Text input doesn't show gap between lines." -msgstr "" +msgstr "Texteingabe zeigt keinen Abstand zwischen den Zeilen." msgid "Too tall, diminished font height inside text input." -msgstr "" +msgstr "Zu groß, verkleinerte Schriftgröße innerhalb der Texteingabe." msgid "Too small, enlarged font height inside text input." -msgstr "" +msgstr "Zu klein, vergrößerte Schriftgröße innerhalb der Texteingabe." msgid "Text doesn't show current horizontal alignment." -msgstr "" +msgstr "Text zeigt aktuelle horizontale Ausrichtung nicht an." msgid "Revert font changes." -msgstr "" +msgstr "Rückgängig machen der Schriftartänderungen." #, boost-format msgid "Font \"%1%\" can't be selected." -msgstr "" +msgstr "Schriftart \"%1%\" kann nicht ausgewählt werden." msgid "Operation" -msgstr "" +msgstr "Operation" msgid "Join" -msgstr "" +msgstr "Zusammenfügen" msgid "Click to change text into object part." -msgstr "" +msgstr "Klicken Sie hier, um den Text in ein Objektteil zu ändern." msgid "You can't change a type of the last solid part of the object." -msgstr "" +msgstr "Sie können den Typ des letzten festen Teils des Objekts nicht ändern." msgctxt "EmbossOperation" msgid "Cut" -msgstr "" +msgstr "Ausschneiden" msgid "Click to change part type into negative volume." -msgstr "" +msgstr "Klicken Sie hier, um den Teiltyp in ein negatives Volumen zu ändern." msgid "Modifier" msgstr "Modifizierer" msgid "Click to change part type into modifier." -msgstr "" +msgstr "Klicken Sie hier, um den Teiltyp in einen Modifizierer zu ändern." msgid "Change Text Type" -msgstr "" +msgstr "Ändere Texttyp" #, boost-format msgid "Rename style(%1%) for embossing text" -msgstr "" +msgstr "Umbenennen des Stils (%1%) für geprägten Text" msgid "Name can't be empty." -msgstr "" +msgstr "Name darf nicht leer sein." msgid "Name has to be unique." -msgstr "" +msgstr "Name muss eindeutig sein." msgid "OK" msgstr "OK" msgid "Rename style" -msgstr "" +msgstr "Benenne Stil um" msgid "Rename current style." -msgstr "" +msgstr "Benenne aktuellen Stil um." msgid "Can't rename temporary style." -msgstr "" +msgstr "Kann temporären Stil nicht umbenennen." msgid "First Add style to list." -msgstr "" +msgstr "Erst Stil zur Liste hinzufügen." #, boost-format msgid "Save %1% style" -msgstr "" +msgstr "Speichere %1% Stil" msgid "No changes to save." -msgstr "" +msgstr "Keine Änderungen zum Speichern." msgid "New name of style" -msgstr "" +msgstr "Neuer Name des Stils" msgid "Save as new style" -msgstr "" +msgstr "Speichern als neuen Stil" msgid "Only valid font can be added to style." -msgstr "" +msgstr "Nur gültige Schriftarten können dem Stil hinzugefügt werden." msgid "Add style to my list." -msgstr "" +msgstr "Addiere Stil zu meiner Liste." msgid "Save as new style." -msgstr "" +msgstr "Speichern als neuen Stil." msgid "Remove style" -msgstr "" +msgstr "Entferne Stil" msgid "Can't remove the last existing style." -msgstr "" +msgstr "Kann den letzten vorhandenen Stil nicht entfernen." #, boost-format msgid "Are you sure you want to permanently remove the \"%1%\" style?" -msgstr "" +msgstr "Sie möchten den Stil \"%1%\" wirklich dauerhaft entfernen?" #, boost-format msgid "Delete \"%1%\" style." -msgstr "" +msgstr "Lösche \"%1%\" Stil." #, boost-format msgid "Can't delete \"%1%\". It is last style." -msgstr "" +msgstr "Kann \"%1%\" nicht löschen. Es ist der letzte Stil." #, boost-format msgid "Can't delete temporary style \"%1%\"." -msgstr "" +msgstr "Kann temporären Stil \"%1%\" nicht löschen." #, boost-format msgid "Modified style \"%1%\"" -msgstr "" +msgstr "Modifizierter Stil \"%1%\"" #, boost-format msgid "Current style is \"%1%\"" -msgstr "" +msgstr "Aktueller Stil ist \"%1%\"" #, boost-format msgid "" @@ -857,130 +859,136 @@ msgid "" "\n" "Would you like to continue anyway?" msgstr "" +"Das Ändern des Stils zu \"%1%\" verwirft die aktuelle Stiländerung.\n" +"\n" +"Möchten Sie trotzdem fortfahren?" msgid "Not valid style." -msgstr "" +msgstr "Kein gültiger Stil." #, boost-format msgid "Style \"%1%\" can't be used and will be removed from a list." -msgstr "" +msgstr "Stil \"%1%\" kann nicht verwendet werden und wird aus der Liste entfernt." msgid "Unset italic" -msgstr "" +msgstr "Kursiven Text aufheben" msgid "Set italic" -msgstr "" +msgstr "Setze kursiven Text" msgid "Unset bold" -msgstr "" +msgstr "Schriftstärke aufheben" msgid "Set bold" -msgstr "" +msgstr "Setze fette Schrift" msgid "Revert text size." -msgstr "" +msgstr "Rückgängig machen der Textgröße." msgid "Revert embossed depth." -msgstr "" +msgstr "Rückgängig machen der geprägten Tiefe." msgid "" "Advanced options cannot be changed for the selected font.\n" "Select another font." msgstr "" +"Erweiterte Optionen können für die ausgewählte Schriftart nicht geändert " +"werden.\n" +"Wählen Sie eine andere Schriftart." msgid "Revert using of model surface." -msgstr "" +msgstr "Benutzen der Oberfläche des Modells rückgängig machen." msgid "Revert Transformation per glyph." -msgstr "" +msgstr "Transformation pro Zeichen rückgängig machen." msgid "Set global orientation for whole text." -msgstr "" +msgstr "Setze globale Ausrichtung für den gesamten Text." msgid "Set position and orientation per glyph." -msgstr "" +msgstr "Setze Position und Ausrichtung pro Zeichen." msgctxt "Alignment" msgid "Left" -msgstr "" +msgstr "Links" msgctxt "Alignment" msgid "Center" -msgstr "" +msgstr "Zentriert" msgctxt "Alignment" msgid "Right" -msgstr "" +msgstr "Rechts" msgctxt "Alignment" msgid "Top" -msgstr "" +msgstr "Oben" msgctxt "Alignment" msgid "Middle" -msgstr "" +msgstr "Mitte" msgctxt "Alignment" msgid "Bottom" -msgstr "" +msgstr "Boden" msgid "Revert alignment." -msgstr "" +msgstr "Ausrichtung rückgängig machen." #. TRN EmbossGizmo: font units msgid "points" -msgstr "" +msgstr "Punkte" msgid "Revert gap between characters" -msgstr "" +msgstr "Abstand zwischen den Zeichen rückgängig machen" msgid "Distance between characters" -msgstr "" +msgstr "Abstand zwischen den Zeichen" msgid "Revert gap between lines" -msgstr "" +msgstr "Abstand zwischen den Zeilen rückgängig machen" msgid "Distance between lines" -msgstr "" +msgstr "Abstand zwischen den Zeilen" msgid "Undo boldness" -msgstr "" +msgstr "Dicke rückgängig machen" msgid "Tiny / Wide glyphs" -msgstr "" +msgstr "Tiny / Wide glyphs" msgid "Undo letter's skew" -msgstr "" +msgstr "Rückgängig machen der Schriftneigung" msgid "Italic strength ratio" -msgstr "" +msgstr "Neigungsverhältnis" msgid "Undo translation" -msgstr "" +msgstr "Übersetzung rückgängig machen" msgid "Distance of the center of the text to the model surface." -msgstr "" +msgstr "Abstand des Textmittelpunkts zur Modell-Oberfläche." msgid "Undo rotation" -msgstr "" +msgstr "Rotation rückgängig machen" msgid "Rotate text Clock-wise." -msgstr "" +msgstr "im Uhrzeigersinn drehen." msgid "Unlock the text's rotation when moving text along the object's surface." -msgstr "" +msgstr "Entsperren Sie die Rotation des Textes beim Verschieben des Textes entlang der Oberfläche des Objekts." msgid "Lock the text's rotation when moving text along the object's surface." -msgstr "" +msgstr "Verriegeln Sie die Rotation des Textes beim Verschieben des Textes entlang der Oberfläche des Objekts." msgid "Select from True Type Collection." -msgstr "" +msgstr "Sammlung von True Type auswählen." msgid "Set text to face camera" -msgstr "" +msgstr "Setze Text zur Kamera" msgid "Orient the text towards the camera." -msgstr "" +msgstr "Ortne den Text zur Kamera aus." #, boost-format msgid "" @@ -995,7 +1003,7 @@ msgid "Loading" msgstr "Lade" msgid "In queue" -msgstr "" +msgstr "In Warteschlange" #. TRN - Input label. Be short as possible #. Height of one text line - Font Ascent @@ -1006,35 +1014,35 @@ msgstr "Höhe" #. Copy surface of model on surface of the embossed text #. TRN - Input label. Be short as possible msgid "Use surface" -msgstr "" +msgstr "Benutze Oberfläche" #. TRN - Input label. Be short as possible #. Option to change projection on curved surface #. for each character(glyph) in text separately msgid "Per glyph" -msgstr "" +msgstr "pro Zeichen" #. TRN - Input label. Be short as possible #. Align Top|Middle|Bottom and Left|Center|Right msgid "Alignment" -msgstr "" +msgstr "Ausrichtung" #. TRN - Input label. Be short as possible msgid "Char gap" -msgstr "" +msgstr "Zeichenabstand" #. TRN - Input label. Be short as possible msgid "Line gap" -msgstr "" +msgstr "Linienabstand" #. TRN - Input label. Be short as possible msgid "Boldness" -msgstr "" +msgstr "Durchschlag" #. TRN - Input label. Be short as possible #. Like Font italic msgid "Skew ratio" -msgstr "" +msgstr "Winkelverhältnis" #. TRN - Input label. Be short as possible #. Distance from model surface to be able @@ -1042,24 +1050,24 @@ msgstr "" #. move text as modifier fully out of not flat surface #. TRN - Input label. Be short as possible msgid "From surface" -msgstr "" +msgstr "Von Oberfläche" #. TRN - Input label. Be short as possible #. Keep vector from bottom to top of text aligned with printer Y axis msgid "Keep up" -msgstr "" +msgstr "Behalte oben" #. TRN - Input label. Be short as possible. #. Some Font file contain multiple fonts inside and #. this is numerical selector of font inside font collections msgid "Collection" -msgstr "" +msgstr "Sammlung" msgid "Enter SVG gizmo" -msgstr "" +msgstr "SVG-Gizmo eingeben" msgid "Leave SVG gizmo" -msgstr "" +msgstr "SVG-Gizmo verlassen" msgid "SVG actions" msgstr "" @@ -1069,164 +1077,168 @@ msgstr "SVG" #. TRN This is an item label in the undo-redo stack. msgid "SVG-Rotate" -msgstr "" +msgstr "SVG-Drehen" #, boost-format msgid "Opacity (%1%)" -msgstr "" +msgstr "Deckkraft (%1%)" #, boost-format msgid "Color gradient (%1%)" -msgstr "" +msgstr "Farbverlauf (%1%)" msgid "Undefined fill type" -msgstr "" +msgstr "Unbestimmter Fülltyp" msgid "Linear gradient" -msgstr "" +msgstr "Linearer Farbverlauf" msgid "Radial gradient" -msgstr "" +msgstr "Radialer Farbverlauf" msgid "Open filled path" -msgstr "" +msgstr "ausgefüllten Pfad öffnen" msgid "Undefined stroke type" -msgstr "" +msgstr "Undefinierter Strich-Typ" msgid "Path can't be healed from selfintersection and multiple points." -msgstr "" +msgstr "Pfad kann nicht von Selbstüberschneidungen und mehreren Punkten geheilt werden." msgid "" "Final shape constains selfintersection or multiple points with same " "coordinate." msgstr "" +"Die endgültige Form enthält Selbstüberschneidungen oder mehrere Punkte mit " +"den gleichen Koordinaten." #, boost-format msgid "Shape is marked as invisible (%1%)." -msgstr "" +msgstr "Shape ist als unsichtbar markiert (%1%)." #. TRN: The first placeholder is shape identifier, the second one is text describing the problem. #, boost-format msgid "Fill of shape (%1%) contains unsupported: %2%." -msgstr "" +msgstr "Füllung der Form (%1%) enthält nicht unterstützte: %2%." #, boost-format msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." -msgstr "" +msgstr "Striche der Form (%1%) ist zu dünn (minimale Breite ist %2% mm)." #, boost-format msgid "Stroke of shape (%1%) contains unsupported: %2%." -msgstr "" +msgstr "Striche der Form (%1%) enthält nicht unterstützte: %2%." msgid "Face the camera" -msgstr "" +msgstr "Gesicht zur Kamera" #. TRN - Preview of filename after clear local filepath. msgid "Unknown filename" -msgstr "" +msgstr "Unbekannter Dateiname" #, boost-format msgid "SVG file path is \"%1%\"" -msgstr "" +msgstr "SVG-Dateipfad ist \"%1%\"" msgid "Reload SVG file from disk." -msgstr "" +msgstr "Neu laden der SVG-Datei von der Festplatte." msgid "Change file" -msgstr "" +msgstr "Datei wechseln" msgid "Change to another .svg file" -msgstr "" +msgstr "Wechsel zu einer anderen .svg-Datei" msgid "Forget the file path" -msgstr "" +msgstr "Dateipfad vergessen" msgid "" "Do NOT save local path to 3MF file.\n" "Also disables 'reload from disk' option." msgstr "" +"Lokalen Pfad nicht in 3MF-Datei speichern.\n" +"Deaktiviert auch die Option 'Von Festplatte neu laden'." #. TRN: An menu option to convert the SVG into an unmodifiable model part. msgid "Bake" -msgstr "" +msgstr "Einbrennen" #. TRN: Tooltip for the menu item. msgid "Bake into model as uneditable part" -msgstr "" +msgstr "Einbrennen in das Modell als nicht editierbares Teil" msgid "Save as" -msgstr "" +msgstr "Speichern als" msgid "Save SVG file" -msgstr "" +msgstr "SVG-Datei speichern" msgid "Save as '.svg' file" -msgstr "" +msgstr "Speichern als '.svg'-Datei" msgid "Size in emboss direction." -msgstr "" +msgstr "Größe in Prägerichtung." #. TRN: The placeholder contains a number. #, boost-format msgid "Scale also changes amount of curve samples (%1%)" -msgstr "" +msgstr "Skalierung ändert auch die Anzahl der Kurvensamples (%1%)" msgid "Width of SVG." -msgstr "" +msgstr "Weite des SVG." msgid "Height of SVG." -msgstr "" +msgstr "Höhe des SVG." msgid "Lock/unlock the aspect ratio of the SVG." -msgstr "" +msgstr "Verriegeln/Entriegeln des Seitenverhältnisses des SVG." msgid "Reset scale" -msgstr "" +msgstr "Skalierung zurücksetzen" msgid "Resize" -msgstr "" +msgstr "Größe zurücksetzen" msgid "Distance of the center of the SVG to the model surface." -msgstr "" +msgstr "Distanz des SVG-Mittelpunkts zur Modell-Oberfläche." msgid "Reset distance" -msgstr "" +msgstr "Distanz zurücksetzen" msgid "Reset rotation" -msgstr "" +msgstr "Rotation zurücksetzen" msgid "Lock/unlock rotation angle when dragging above the surface." -msgstr "" +msgstr "Verriegeln/Entriegeln des Rotationswinkels beim Ziehen über die Oberfläche." msgid "Mirror vertically" -msgstr "" +msgstr "Spiegeln vertikal" msgid "Mirror horizontally" -msgstr "" +msgstr "Spiegeln horizontal" #. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). msgid "Change SVG Type" -msgstr "" +msgstr "Wechsel SVG-Typ" #. TRN - Input label. Be short as possible msgid "Mirror" msgstr "Spiegeln" msgid "Choose SVG file for emboss:" -msgstr "" +msgstr "Wählen sie eine SVG-Datei zum Prägen:" #, boost-format msgid "File does NOT exist (%1%)." -msgstr "" +msgstr "Datei existiert nicht (%1%)." #, boost-format msgid "Filename has to end with \".svg\" but you selected %1%" -msgstr "" +msgstr "Dateiname muss mit \".svg\" enden, aber Sie haben %1% ausgewählt" #, boost-format msgid "Nano SVG parser can't load from file (%1%)." -msgstr "" +msgstr "Nano SVG-Parser kann nicht aus Datei laden (%1%)." #, boost-format msgid "SVG file does NOT contain a single path to be embossed (%1%)." @@ -13448,7 +13460,7 @@ msgstr "" #, fuzzy msgid "Upload" -msgstr "Entladen" +msgstr "Hochladen" msgid "Print host upload queue" msgstr "Druck-Host-Upload-Warteschlange" @@ -14365,6 +14377,9 @@ msgid "" "G-code window\n" "You can turn on/off the G-code window by pressing the C key." msgstr "" +"G-Code-Fenster\n" +"Sie können das G-Code-Fenster ein- und ausschalten, indem Sie die Taste " +"C drücken." #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" @@ -14372,6 +14387,9 @@ msgid "" "You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" +"Arbeitsbereiche wechseln\n" +"Sie können zwischen den Arbeitsbereichen Vorbereiten und Preview wechseln, indem Sie die Taste Tab drücken." #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" @@ -14389,6 +14407,9 @@ msgid "" "Did you know that Reverse on odd feature can significantly improve " "the surface quality of your overhangs?" msgstr "" +"Umkehrung bei ungeraden\n" +"Wussten Sie, dass die Funktion Umkehrung bei ungeraden die " +"Oberflächenqualität Ihrer Überhänge erheblich verbessern kann?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" From 20f7cc0cf9ec053049194f9c0edf0863dbfaeecd Mon Sep 17 00:00:00 2001 From: Fabio Forcina Date: Fri, 29 Dec 2023 14:52:30 +0100 Subject: [PATCH 58/66] Updated Italian translation (#3347) --- localization/i18n/it/OrcaSlicer_it.po | 5216 ++++++++++++------------- 1 file changed, 2509 insertions(+), 2707 deletions(-) diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 7e6b4975f7..5086bd5077 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" -"X-Generator: Poedit 3.4.1\n" +"X-Generator: Poedit 3.4.2\n" msgid "Supports Painting" msgstr "Pittura Supporti" @@ -109,12 +109,12 @@ msgstr "Posiziona su faccia" #, boost-format msgid "" -"Filament count exceeds the maximum number that painting tool supports. only " -"the first %1% filaments will be available in painting tool." +"Filament count exceeds the maximum number that painting tool supports. only the " +"first %1% filaments will be available in painting tool." msgstr "" -"Il numero di filamenti supera il numero massimo supportato dallo strumento " -"di pittura. Solo il primo %1% dei filamenti sarà disponibile nello strumento " -"di pittura." +"Il numero di filamenti supera il numero massimo supportato dallo strumento di " +"pittura. Solo il primo %1% dei filamenti sarà disponibile nello strumento di " +"pittura." msgid "Color Painting" msgstr "Pittura a colori" @@ -269,16 +269,16 @@ msgid "uniform scale" msgstr "Scala uniforme" msgid "Planar" -msgstr "" +msgstr "Planare" msgid "Dovetail" -msgstr "" +msgstr "A coda di rondine" msgid "Auto" msgstr "Auto" msgid "Manual" -msgstr "" +msgstr "Manuale" msgid "Plug" msgstr "Connettore" @@ -287,10 +287,10 @@ msgid "Dowel" msgstr "Tassello" msgid "Snap" -msgstr "" +msgstr "Snap" msgid "Prism" -msgstr "" +msgstr "Prisma" msgid "Frustum" msgstr "Tronco" @@ -302,13 +302,13 @@ msgid "Hexagon" msgstr "Esagono" msgid "Keep orientation" -msgstr "" +msgstr "Mantieni orientamento" msgid "Place on cut" msgstr "Posiziona sul taglio" msgid "Flip upside down" -msgstr "" +msgstr "Capovolgi" msgid "Connectors" msgstr "Connettori" @@ -326,19 +326,19 @@ msgstr "Forma" #. Size in emboss direction #. TRN - Input label. Be short as possible msgid "Depth" -msgstr "" +msgstr "Profondità" msgid "Groove" -msgstr "" +msgstr "Scanalatura" msgid "Width" msgstr "Larghezza" msgid "Flap Angle" -msgstr "" +msgstr "Inverti Angolo" msgid "Groove Angle" -msgstr "" +msgstr "Angolo Scanalatura" msgid "Part" msgstr "Parte" @@ -350,21 +350,26 @@ msgid "" "Click to flip the cut plane\n" "Drag to move the cut plane" msgstr "" +"Clicca per capovolgere il piano di taglio\n" +"Trascina per spostare il piano di taglio" msgid "" "Click to flip the cut plane\n" "Drag to move the cut plane\n" "Right-click a part to assign it to the other side" msgstr "" +"Clicca per capovolgere il piano di taglio\n" +"Trascina per spostare il piano di taglio\n" +"Clicca con il tasto destro del mouse su una parte per assegnarla all'altro lato" msgid "Move cut plane" -msgstr "" +msgstr "Sposta il piano di taglio" msgid "Mode" -msgstr "" +msgstr "Modalità" msgid "Change cut mode" -msgstr "" +msgstr "Cambia la modalità di taglio" msgid "Tolerance" msgstr "Tolleranza" @@ -373,7 +378,7 @@ msgid "Drag" msgstr "Trascina" msgid "Draw cut line" -msgstr "" +msgstr "Disegna linea di taglio" msgid "Left click" msgstr "Click sinistro" @@ -403,22 +408,22 @@ msgid "Cut" msgstr "Taglia" msgid "Rotate cut plane" -msgstr "" +msgstr "Ruota il piano di taglio" msgid "Remove connectors" msgstr "Rimuovi connettori" msgid "Bulge" -msgstr "" +msgstr "Rigonfiamento" msgid "Bulge proportion related to radius" -msgstr "" +msgstr "Proporzione del rigonfiamento in relazione al raggio" msgid "Space" msgstr "Spazio" msgid "Space proportion related to radius" -msgstr "" +msgstr "Proporzione di spazio in relazione al raggio" msgid "Confirm connectors" msgstr "Conferma connettori" @@ -427,26 +432,26 @@ msgid "Cancel" msgstr "Annulla" msgid "Build Volume" -msgstr "" +msgstr "Volume di stampa" msgid "Flip cut plane" -msgstr "" +msgstr "Capovolgi piano di taglio" msgid "Groove change" -msgstr "" +msgstr "Cambio di scanalatura" msgid "Reset" msgstr "Reimposta" #. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. msgid "Edited" -msgstr "" +msgstr "Modificato" msgid "Cut position" -msgstr "" +msgstr "Posizione taglio" msgid "Reset cutting plane" -msgstr "" +msgstr "Ripristina piano di taglio" msgid "Edit connectors" msgstr "Modifica connettori" @@ -455,10 +460,10 @@ msgid "Add connectors" msgstr "Aggiungi connettori" msgid "Reset cut" -msgstr "" +msgstr "Ripristina taglio" msgid "Reset cutting plane and remove connectors" -msgstr "" +msgstr "Ripristina il piano di taglio e rimuovi i connettori" msgid "Upper part" msgstr "Parte superiore" @@ -490,44 +495,45 @@ msgstr "Rilevati connettori non validi" #, c-format, boost-format msgid "%1$d connector is out of cut contour" msgid_plural "%1$d connectors are out of cut contour" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%1$d connettore è fuori dal profilo di taglio" +msgstr[1] "%1$d connettori sono fuori dal profilo di taglio" #, c-format, boost-format msgid "%1$d connector is out of object" msgid_plural "%1$d connectors are out of object" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%1$d connettore è fuori dall'oggetto" +msgstr[1] "%1$d connettori sono fuori dall'oggetto" msgid "Some connectors are overlapped" msgstr "Alcuni connettori si sovrappongono" msgid "Select at least one object to keep after cutting." -msgstr "" +msgstr "Selezionare almeno un oggetto da conservare dopo il taglio." msgid "Cut plane is placed out of object" -msgstr "" +msgstr "Il piano di taglio è posizionato fuori dall'oggetto" msgid "Cut plane with groove is invalid" -msgstr "" +msgstr "Il piano di taglio con scanalatura non è valido" msgid "Connector" msgstr "Connettore" msgid "Cut by Plane" -msgstr "" +msgstr "Taglio per piano" msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" +"I bordi non collettori sono causati dall'utensile di taglio, vuoi risolverlo ora?" msgid "Repairing model object" msgstr "Riparazione oggetto" msgid "Cut by line" -msgstr "" +msgstr "Taglia sulla linea" msgid "Delete connector" -msgstr "" +msgstr "Cancella connettore" msgid "Mesh name" msgstr "Nome mesh" @@ -540,11 +546,11 @@ msgstr "Rapporto di decimazione" #, boost-format msgid "" -"Processing model '%1%' with more than 1M triangles could be slow. It is " -"highly recommended to simplify the model." +"Processing model '%1%' with more than 1M triangles could be slow. It is highly " +"recommended to simplify the model." msgstr "" -"Lo slicing del modello \"%1%\" con più di 1 milione di triangoli potrebbe " -"essere lento. Si consiglia di semplificare il modello." +"Lo slicing del modello \"%1%\" con più di 1 milione di triangoli potrebbe essere " +"lento. Si consiglia di semplificare il modello." msgid "Simplify model" msgstr "Semplifica modello" @@ -554,8 +560,8 @@ msgstr "Semplifica" msgid "Simplification is currently only allowed when a single part is selected" msgstr "" -"La semplificazione è attualmente consentita solo quando è selezionata una " -"singola parte" +"La semplificazione è attualmente consentita solo quando è selezionata una singola " +"parte" msgid "Error" msgstr "Errore" @@ -663,46 +669,46 @@ msgid "Text shape" msgstr "Formato testo" msgid "Set Mirror" -msgstr "" +msgstr "Imposta specchio" msgid "Embossed text" -msgstr "" +msgstr "Testo in rilievo" msgid "Enter emboss gizmo" -msgstr "" +msgstr "Apri gizmo rilievo" msgid "Leave emboss gizmo" -msgstr "" +msgstr "Chiudi gizmo rilievo" msgid "Embossing actions" -msgstr "" +msgstr "Azioni di rilievo" msgid "Emboss" -msgstr "" +msgstr "Rilievo" msgid "Text-Rotate" -msgstr "" +msgstr "Ruota testo" msgid "NORMAL" -msgstr "" +msgstr "NORMALE" msgid "SMALL" -msgstr "" +msgstr "PICCOLO" msgid "ITALIC" -msgstr "" +msgstr "CORSIVO" msgid "SWISS" -msgstr "" +msgstr "SVIZZERO" msgid "MODERN" -msgstr "" +msgstr "MODERNO" msgid "First font" -msgstr "" +msgstr "Primo font" msgid "Default font" -msgstr "" +msgstr "Font predefinito" msgid "Advanced" msgstr "Avanzate" @@ -711,142 +717,148 @@ msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." msgstr "" +"Il testo non può essere scritto con il font selezionato. Provare a scegliere un " +"altro font." msgid "Embossed text cannot contain only white spaces." -msgstr "" +msgstr "Il testo in rilievo non può contenere solo spazi vuoti." msgid "Text contains character glyph (represented by '?') unknown by font." msgstr "" +"Il testo contiene un glifo di carattere (rappresentato da '?') sconosciuto dal " +"font." msgid "Text input doesn't show font skew." -msgstr "" +msgstr "L'immissione di testo non mostra l'inclinazione dei caratteri." msgid "Text input doesn't show font boldness." -msgstr "" +msgstr "L'immissione di testo non mostra il grassetto dei caratteri." msgid "Text input doesn't show gap between lines." -msgstr "" +msgstr "L'inserimento del testo non mostra lo spazio tra le righe." msgid "Too tall, diminished font height inside text input." msgstr "" +"Altezza del carattere troppo alta e ridotta all'interno dell'input di testo." msgid "Too small, enlarged font height inside text input." msgstr "" +"Altezza del carattere troppo piccola e ingrandita all'interno dell'input di testo." msgid "Text doesn't show current horizontal alignment." -msgstr "" +msgstr "Il testo non mostra l'allineamento orizzontale corrente." msgid "Revert font changes." -msgstr "" +msgstr "Ripristina modifiche al carattere." #, boost-format msgid "Font \"%1%\" can't be selected." -msgstr "" +msgstr "Il font \"%1%\" non può essere selezionato." msgid "Operation" -msgstr "" +msgstr "Operazione" msgid "Join" -msgstr "" +msgstr "Unisci" msgid "Click to change text into object part." -msgstr "" +msgstr "Fare clic per trasformare il testo in una parte dell'oggetto." msgid "You can't change a type of the last solid part of the object." -msgstr "" +msgstr "Non è possibile modificare il tipo dell'ultima parte solida dell'oggetto." msgctxt "EmbossOperation" msgid "Cut" -msgstr "" +msgstr "Taglia" msgid "Click to change part type into negative volume." -msgstr "" +msgstr "Fare clic per cambiare il tipo di parte in volume negativo." msgid "Modifier" msgstr "Modificatore" msgid "Click to change part type into modifier." -msgstr "" +msgstr "Fare clic per cambiare il tipo di parte in modificatore." msgid "Change Text Type" -msgstr "" +msgstr "Cambia tipo di testo" #, boost-format msgid "Rename style(%1%) for embossing text" -msgstr "" +msgstr "Rinomina lo stile(%1%) per il testo in rilievo:" msgid "Name can't be empty." -msgstr "" +msgstr "Il nome non può essere vuoto." msgid "Name has to be unique." -msgstr "" +msgstr "Il nome deve essere univoco." msgid "OK" msgstr "OK" msgid "Rename style" -msgstr "" +msgstr "Rinomina lo stile" msgid "Rename current style." -msgstr "" +msgstr "Rinomina lo stile corrente." msgid "Can't rename temporary style." -msgstr "" +msgstr "Non è possibile rinominare lo stile temporaneo." msgid "First Add style to list." -msgstr "" +msgstr "Prima Aggiungi lo stile all'elenco." #, boost-format msgid "Save %1% style" -msgstr "" +msgstr "Salva lo stile %1%" msgid "No changes to save." -msgstr "" +msgstr "Nessuna modifica da salvare." msgid "New name of style" -msgstr "" +msgstr "Nuovo nome dello stile" msgid "Save as new style" -msgstr "" +msgstr "Salva come nuovo stile" msgid "Only valid font can be added to style." -msgstr "" +msgstr "Solo i font validi possono essere aggiunti allo stile." msgid "Add style to my list." -msgstr "" +msgstr "Aggiungi lo stile alla mia lista." msgid "Save as new style." -msgstr "" +msgstr "Salva come nuovo stile" msgid "Remove style" -msgstr "" +msgstr "Rimuovi stile" msgid "Can't remove the last existing style." -msgstr "" +msgstr "Non è possibile rimuovere l'ultimo stile esistente." #, boost-format msgid "Are you sure you want to permanently remove the \"%1%\" style?" -msgstr "" +msgstr "Sei sicuro di voler rimuovere definitivamente lo stile \"%1%\"?" #, boost-format msgid "Delete \"%1%\" style." -msgstr "" +msgstr "Cancella lo stile \"%1%\"." #, boost-format msgid "Can't delete \"%1%\". It is last style." -msgstr "" +msgstr "Non è possibile eliminare \"%1%\". È l'ultimo stile." #, boost-format msgid "Can't delete temporary style \"%1%\"." -msgstr "" +msgstr "Non è possibile eliminare lo stile temporaneo \"%1%\"." #, boost-format msgid "Modified style \"%1%\"" -msgstr "" +msgstr "Modificato lo stile \"%1%\"" #, boost-format msgid "Current style is \"%1%\"" -msgstr "" +msgstr "Lo stile corrente è \"%1%\"" #, boost-format msgid "" @@ -854,145 +866,157 @@ msgid "" "\n" "Would you like to continue anyway?" msgstr "" +"Se si cambia lo stile in \"%1%\", la modifica dello stile attuale verrà " +"eliminata.\n" +"\n" +"Vuoi continuare comunque?" msgid "Not valid style." -msgstr "" +msgstr "Stile non valido." #, boost-format msgid "Style \"%1%\" can't be used and will be removed from a list." -msgstr "" +msgstr "Lo stile \"%1%\" non può essere usato e sarà rimosso dall'elenco." msgid "Unset italic" -msgstr "" +msgstr "Corsivo non impostato" msgid "Set italic" -msgstr "" +msgstr "Imposta corsivo" msgid "Unset bold" -msgstr "" +msgstr "Grassetto non impostato" msgid "Set bold" -msgstr "" +msgstr "Imposta grassetto" msgid "Revert text size." -msgstr "" +msgstr "Ripristina dimensione testo." msgid "Revert embossed depth." -msgstr "" +msgstr "Ripristina spessore rilievo." msgid "" "Advanced options cannot be changed for the selected font.\n" "Select another font." msgstr "" +"Le opzioni avanzate non possono essere modificate per il font selezionato.\n" +"Selezionare un altro font." msgid "Revert using of model surface." -msgstr "" +msgstr "Ripristina usando la superficie del modello." msgid "Revert Transformation per glyph." -msgstr "" +msgstr "Invertire la trasformazione per glifo." msgid "Set global orientation for whole text." -msgstr "" +msgstr "Imposta l'orientamento globale per tutto il testo." msgid "Set position and orientation per glyph." -msgstr "" +msgstr "Imposta la posizione e l'orientamento per glifo." msgctxt "Alignment" msgid "Left" -msgstr "" +msgstr "Sinistra" msgctxt "Alignment" msgid "Center" -msgstr "" +msgstr "Centro" msgctxt "Alignment" msgid "Right" -msgstr "" +msgstr "Destra" msgctxt "Alignment" msgid "Top" -msgstr "" +msgstr "Superiore" msgctxt "Alignment" msgid "Middle" -msgstr "" +msgstr "Mediano" msgctxt "Alignment" msgid "Bottom" -msgstr "" +msgstr "Inferiore" msgid "Revert alignment." -msgstr "" +msgstr "Ripristinare l'allineamento." #. TRN EmbossGizmo: font units msgid "points" -msgstr "" +msgstr "punti" msgid "Revert gap between characters" -msgstr "" +msgstr "Ripristina distanza tra i caratteri" msgid "Distance between characters" -msgstr "" +msgstr "Distanza tra i caratteri" msgid "Revert gap between lines" -msgstr "" +msgstr "Ripristina distanza tra le linee" msgid "Distance between lines" -msgstr "" +msgstr "Distanza tra le linee" msgid "Undo boldness" -msgstr "" +msgstr "Annulla grassetto" msgid "Tiny / Wide glyphs" -msgstr "" +msgstr "Glifi piccoli / larghi" msgid "Undo letter's skew" -msgstr "" +msgstr "Annulla l'inclinazione della lettera" msgid "Italic strength ratio" -msgstr "" +msgstr "Fattore intensità corsivo" msgid "Undo translation" -msgstr "" +msgstr "Annulla traduzione" msgid "Distance of the center of the text to the model surface." -msgstr "" +msgstr "Distanza del centro del testo dalla superficie del modello." msgid "Undo rotation" -msgstr "" +msgstr "Annulla rotazione" msgid "Rotate text Clock-wise." -msgstr "" +msgstr "Ruota il testo in senso orario." msgid "Unlock the text's rotation when moving text along the object's surface." msgstr "" +"Sblocca la rotazione del testo quando lo sposti lungo la superficie dell'oggetto." msgid "Lock the text's rotation when moving text along the object's surface." msgstr "" +"Blocca la rotazione del testo quando lo si sposta lungo la superficie " +"dell'oggetto." msgid "Select from True Type Collection." -msgstr "" +msgstr "Seleziona dalla Raccolta True Type." msgid "Set text to face camera" -msgstr "" +msgstr "Imposta il testo in modo che sia rivolto verso la propria vista" msgid "Orient the text towards the camera." -msgstr "" +msgstr "Orienta il testo verso di te." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " -"one(\"%2%\"). You have to specify font for enable edit text." +"Can't load exactly same font(\"%1%\"). Aplication selected a similar one(\"%2%" +"\"). You have to specify font for enable edit text." msgstr "" +"Non è possibile caricare esattamente lo stesso font(\"%1%\"). L'applicazione ne " +"ha selezionato uno simile(\"%2%\"). È necessario specificare il font per " +"abilitare la modifica del testo." msgid "No symbol" -msgstr "" +msgstr "Nessun simbolo" msgid "Loading" msgstr "Caricamento" msgid "In queue" -msgstr "" +msgstr "In coda" #. TRN - Input label. Be short as possible #. Height of one text line - Font Ascent @@ -1003,35 +1027,35 @@ msgstr "Altezza" #. Copy surface of model on surface of the embossed text #. TRN - Input label. Be short as possible msgid "Use surface" -msgstr "" +msgstr "Usa superficie" #. TRN - Input label. Be short as possible #. Option to change projection on curved surface #. for each character(glyph) in text separately msgid "Per glyph" -msgstr "" +msgstr "Per glifo" #. TRN - Input label. Be short as possible #. Align Top|Middle|Bottom and Left|Center|Right msgid "Alignment" -msgstr "" +msgstr "Allineamento" #. TRN - Input label. Be short as possible msgid "Char gap" -msgstr "" +msgstr "Distanza tra i caratteri" #. TRN - Input label. Be short as possible msgid "Line gap" -msgstr "" +msgstr "Spazio tra le linee" #. TRN - Input label. Be short as possible msgid "Boldness" -msgstr "" +msgstr "Spessore" #. TRN - Input label. Be short as possible #. Like Font italic msgid "Skew ratio" -msgstr "" +msgstr "Fattore Inclinazione" #. TRN - Input label. Be short as possible #. Distance from model surface to be able @@ -1039,250 +1063,257 @@ msgstr "" #. move text as modifier fully out of not flat surface #. TRN - Input label. Be short as possible msgid "From surface" -msgstr "" +msgstr "Dalla superficie" #. TRN - Input label. Be short as possible #. Keep vector from bottom to top of text aligned with printer Y axis msgid "Keep up" -msgstr "" +msgstr "Mantieni l'alto" #. TRN - Input label. Be short as possible. #. Some Font file contain multiple fonts inside and #. this is numerical selector of font inside font collections msgid "Collection" -msgstr "" +msgstr "Raccolta" msgid "Enter SVG gizmo" -msgstr "" +msgstr "Apri gizmo SVG" msgid "Leave SVG gizmo" -msgstr "" +msgstr "Chiudi gizmo SVG" msgid "SVG actions" -msgstr "" +msgstr "Azioni SVG" msgid "SVG" msgstr "SVG" #. TRN This is an item label in the undo-redo stack. msgid "SVG-Rotate" -msgstr "" +msgstr "Ruota SVG" #, boost-format msgid "Opacity (%1%)" -msgstr "" +msgstr "Opacità (%1%)" #, boost-format msgid "Color gradient (%1%)" -msgstr "" +msgstr "Gradiente di colore (%1%)" msgid "Undefined fill type" -msgstr "" +msgstr "Tipo di riempimento non definito" msgid "Linear gradient" -msgstr "" +msgstr "Gradiente lineare" msgid "Radial gradient" -msgstr "" +msgstr "Gradiente radiale" msgid "Open filled path" -msgstr "" +msgstr "Apri il percorso compilato" msgid "Undefined stroke type" -msgstr "" +msgstr "Tipo di tratto non definito" msgid "Path can't be healed from selfintersection and multiple points." msgstr "" +"Il percorso non può essere risolto con l'auto-intersezione e i punti multipli." msgid "" -"Final shape constains selfintersection or multiple points with same " -"coordinate." +"Final shape constains selfintersection or multiple points with same coordinate." msgstr "" +"La forma finale contiene un'auto-intersezione o più punti con le stesse coordinate" #, boost-format msgid "Shape is marked as invisible (%1%)." -msgstr "" +msgstr "La forma è segnata come invisibile (%1%)" #. TRN: The first placeholder is shape identifier, the second one is text describing the problem. #, boost-format msgid "Fill of shape (%1%) contains unsupported: %2%." msgstr "" +"Il riempimento della forma (%1%) contiene un'informazione non supportata: %2%" #, boost-format msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." msgstr "" +"Il tratto della forma (%1%) è troppo sottile (la larghezza minima è di %2% mm)" #, boost-format msgid "Stroke of shape (%1%) contains unsupported: %2%." -msgstr "" +msgstr "Il tratto della forma (%1%) contiene un'immagine non supportata: %2%" msgid "Face the camera" -msgstr "" +msgstr "Rivolgi verso di te" #. TRN - Preview of filename after clear local filepath. msgid "Unknown filename" -msgstr "" +msgstr "Nome file sconosciuto" #, boost-format msgid "SVG file path is \"%1%\"" -msgstr "" +msgstr "Il percorso del file SVG è \"%1%\"." msgid "Reload SVG file from disk." -msgstr "" +msgstr "Ricarica il file SVG dal disco." msgid "Change file" -msgstr "" +msgstr "Cambia file" msgid "Change to another .svg file" -msgstr "" +msgstr "Passa a un altro file .svg" msgid "Forget the file path" -msgstr "" +msgstr "Dimentica il percorso del file" msgid "" "Do NOT save local path to 3MF file.\n" "Also disables 'reload from disk' option." msgstr "" +"NON salvare il percorso locale del file 3MF.\n" +"Disattiva anche l'opzione \"ricarica da disco\"." #. TRN: An menu option to convert the SVG into an unmodifiable model part. msgid "Bake" -msgstr "" +msgstr "Integra" #. TRN: Tooltip for the menu item. msgid "Bake into model as uneditable part" -msgstr "" +msgstr "Integra nel modello come parte non modificabile" msgid "Save as" -msgstr "" +msgstr "Salva come" msgid "Save SVG file" -msgstr "" +msgstr "Salva file SVG" msgid "Save as '.svg' file" -msgstr "" +msgstr "Salva come file '.svg" msgid "Size in emboss direction." -msgstr "" +msgstr "Dimensioni in direzione del rilievo." #. TRN: The placeholder contains a number. #, boost-format msgid "Scale also changes amount of curve samples (%1%)" msgstr "" +"La dimensione della scala cambia anche la quantità di campioni della curva (%1%)" msgid "Width of SVG." -msgstr "" +msgstr "Larghezza dell'SVG." msgid "Height of SVG." -msgstr "" +msgstr "Altezza dell'SVG." msgid "Lock/unlock the aspect ratio of the SVG." -msgstr "" +msgstr "Blocca/sblocca le proporzioni dell'SVG." msgid "Reset scale" -msgstr "" +msgstr "Reimposta scala" msgid "Resize" -msgstr "" +msgstr "Ridimensiona" msgid "Distance of the center of the SVG to the model surface." -msgstr "" +msgstr "Distanza del centro dell'SVG dalla superficie del modello." msgid "Reset distance" -msgstr "" +msgstr "Ripristina distanza" msgid "Reset rotation" -msgstr "" +msgstr "Reimposta rotazione" msgid "Lock/unlock rotation angle when dragging above the surface." msgstr "" +"Blocca/sblocca l'angolo di rotazione quando si trascina sopra la superficie." msgid "Mirror vertically" -msgstr "" +msgstr "Specchia verticalmente" msgid "Mirror horizontally" -msgstr "" +msgstr "Specchia orizzontalmente" #. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). msgid "Change SVG Type" -msgstr "" +msgstr "Cambia il tipo di SVG" #. TRN - Input label. Be short as possible msgid "Mirror" msgstr "Specchia" msgid "Choose SVG file for emboss:" -msgstr "" +msgstr "Scegli il file SVG per il rilievo:" #, boost-format msgid "File does NOT exist (%1%)." -msgstr "" +msgstr "Il file NON esiste (%1%)." #, boost-format msgid "Filename has to end with \".svg\" but you selected %1%" -msgstr "" +msgstr "Il nome del file deve terminare con \".svg\" ma è stato selezionato %1%" #, boost-format msgid "Nano SVG parser can't load from file (%1%)." -msgstr "" +msgstr "Il parser Nano SVG non può essere caricato dal file (%1%)." #, boost-format msgid "SVG file does NOT contain a single path to be embossed (%1%)." -msgstr "" +msgstr "Il file SVG NON contiene un percorso singolo da incidere (%1%)." msgid "Vertex" -msgstr "" +msgstr "Vertice" msgid "Edge" -msgstr "" +msgstr "Bordo" msgid "Plane" -msgstr "" +msgstr "Piano" msgid "Point on edge" -msgstr "" +msgstr "Punto sul bordo" msgid "Point on circle" -msgstr "" +msgstr "Punto sulla circonferenza" msgid "Point on plane" -msgstr "" +msgstr "Punto sul piano" msgid "Center of edge" -msgstr "" +msgstr "Centro del bordo" msgid "Center of circle" -msgstr "" +msgstr "Centro della circonferenza" msgid "ShiftLeft mouse button" -msgstr "" +msgstr "MaiuscTasto sinistro del mouse" msgid "Select feature" -msgstr "" +msgstr "Seleziona caratteristica" msgid "Select point" -msgstr "" +msgstr "Seleziona punto" msgid "Delete" msgstr "Elimina" msgid "Restart selection" -msgstr "" +msgstr "Riavvio della selezione" msgid "Esc" msgstr "Esc" msgid "Unselect" -msgstr "" +msgstr "Deseleziona" msgid "Measure" -msgstr "" +msgstr "Misura" msgid "Edit to scale" -msgstr "" +msgstr "Modifica in scala" msgctxt "Verb" msgid "Scale" -msgstr "" +msgstr "Ridimensiona" msgid "None" msgstr "Nessuno" @@ -1294,22 +1325,22 @@ msgid "Length" msgstr "Lunghezza" msgid "Selection" -msgstr "" +msgstr "Selezione" msgid "Copy to clipboard" msgstr "Copia negli appunti" msgid "Perpendicular distance" -msgstr "" +msgstr "Distanza perpendicolare" msgid "Distance" -msgstr "" +msgstr "Distanza" msgid "Direct distance" -msgstr "" +msgstr "Distanza diretta" msgid "Distance XYZ" -msgstr "" +msgstr "Distanza XYZ" msgid "Ctrl+" msgstr "Ctrl+" @@ -1343,22 +1374,21 @@ msgstr "Macchina" msgid "Configuration package was loaded, but some values were not recognized." msgstr "" -"Il pacchetto di configurazione è stato caricato, ma alcuni valori non sono " -"stati riconosciuti." +"Il pacchetto di configurazione è stato caricato, ma alcuni valori non sono stati " +"riconosciuti." #, boost-format -msgid "" -"Configuration file \"%1%\" was loaded, but some values were not recognized." +msgid "Configuration file \"%1%\" was loaded, but some values were not recognized." msgstr "" -"Il file di configurazione \"%1%\" è stato caricato, ma alcuni valori non " -"sono stati riconosciuti." +"Il file di configurazione \"%1%\" è stato caricato, ma alcuni valori non sono " +"stati riconosciuti." msgid "V" msgstr "V" msgid "" -"OrcaSlicer will terminate because of running out of memory.It may be a bug. " -"It will be appreciated if you report the issue to our team." +"OrcaSlicer will terminate because of running out of memory.It may be a bug. It " +"will be appreciated if you report the issue to our team." msgstr "" "OrcaSlicer ha esaurito la memoria e verrà chiuso. Questo potrebbe essere \n" "un bug. Segnala questo errore al supporto tecnico.\"" @@ -1367,10 +1397,9 @@ msgid "Fatal error" msgstr "Errore irreversibile" msgid "" -"OrcaSlicer will terminate because of a localization error. It will be " -"appreciated if you report the specific scenario this issue happened." -msgstr "" -"Si è verificato un errore nella localizzazione e OrcaSlicer verrà chiuso." +"OrcaSlicer will terminate because of a localization error. It will be appreciated " +"if you report the specific scenario this issue happened." +msgstr "Si è verificato un errore nella localizzazione e OrcaSlicer verrà chiuso." msgid "Critical error" msgstr "Errore critico" @@ -1393,8 +1422,7 @@ msgid "Connect %s failed! [SN:%s, code=%s]" msgstr "Connessione %s non riuscita! [SN: %s, codice=%s]" msgid "" -"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain " -"features.\n" +"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain features.\n" "Click Yes to install it now." msgstr "" "Orca Slicer richiede Microsoft WebView2 Runtime per utilizzare alcune " @@ -1434,14 +1462,14 @@ msgstr "Info" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" -"Please note, application settings will be lost, but printer profiles will " -"not be affected." +"Please note, application settings will be lost, but printer profiles will not be " +"affected." msgstr "" -"Il file di configurazione di OrcaSlicer potrebbe essere danneggiato e non " -"può essere analizzato.\n" +"Il file di configurazione di OrcaSlicer potrebbe essere danneggiato e non può " +"essere analizzato.\n" "OrcaSlicer ha tentato di ricreare il file di configurazione.\n" -"Si noti che le impostazioni dell'applicazione andranno perse, ma i profili " -"della stampante non saranno interessati." +"Si noti che le impostazioni dell'applicazione andranno perse, ma i profili della " +"stampante non saranno interessati." msgid "Rebuild" msgstr "Ricrea" @@ -1468,11 +1496,11 @@ msgid "Some presets are modified." msgstr "Alcuni preset vengono modificati." msgid "" -"You can keep the modifield presets to the new project, discard or save " -"changes as new presets." +"You can keep the modifield presets to the new project, discard or save changes as " +"new presets." msgstr "" -"È possibile conservare i preset modificati per il nuovo progetto, eliminarli " -"o salvare le modifiche come nuovi preset." +"È possibile conservare i preset modificati per il nuovo progetto, eliminarli o " +"salvare le modifiche come nuovi preset." msgid "User logged out" msgstr "Utente disconnesso" @@ -1497,9 +1525,9 @@ msgid "" "The number of user presets cached in the cloud has exceeded the upper limit, " "newly created user presets can only be used locally." msgstr "" -"Il numero di impostazioni utente memorizzate nella cache cloud ha superato " -"il limite massimo. Le nuove impostazioni utente create possono essere " -"utilizzate solo in locale." +"Il numero di impostazioni utente memorizzate nella cache cloud ha superato il " +"limite massimo. Le nuove impostazioni utente create possono essere utilizzate " +"solo in locale." msgid "Sync user presets" msgstr "Sincronizzare le preset dell'utente" @@ -1665,10 +1693,10 @@ msgid "Cone" msgstr "Cono" msgid "Disc" -msgstr "" +msgstr "Disco" msgid "Torus" -msgstr "" +msgstr "Toroide" msgid "Orca Cube" msgstr "Orca Cube" @@ -1683,7 +1711,7 @@ msgid "Voron Cube" msgstr "Voron Cube" msgid "Stanford Bunny" -msgstr "" +msgstr "Coniglietto di Stanford" msgid "Text" msgstr "Testo" @@ -1837,7 +1865,7 @@ msgid "Add Primitive" msgstr "Aggiungi primitiva" msgid "Add Handy models" -msgstr "" +msgstr "Aggiungi modelli Handy" msgid "Show Labels" msgstr "Mostra Etichette" @@ -1964,13 +1992,13 @@ msgstr[1] "%1$d non-manifold edges" msgid "Right click the icon to fix model object" msgstr "" -"Fai clic con il pulsante destro del mouse sull'icona per correggere " -"l'oggetto del modello" +"Fai clic con il pulsante destro del mouse sull'icona per correggere l'oggetto del " +"modello" msgid "Right button click the icon to drop the object settings" msgstr "" -"Fai clic con pulsante destro del mouse sull'icona per eliminare le " -"impostazioni dell'oggetto" +"Fai clic con pulsante destro del mouse sull'icona per eliminare le impostazioni " +"dell'oggetto" msgid "Click the icon to reset all settings of the object" msgstr "Clicca sull'icona per ripristinare tutte le impostazioni dell'oggetto" @@ -1982,8 +2010,7 @@ msgstr "" msgid "Click the icon to toggle printable property of the object" msgstr "" -"Clicca sull'icona per attivare o disattivare le proprietà stampabili " -"dell'oggetto" +"Clicca sull'icona per attivare o disattivare le proprietà stampabili dell'oggetto" msgid "Click the icon to edit support painting of the object" msgstr "Clicca sull'icona per modificare la pittura del supporto dell'oggetto" @@ -2011,15 +2038,14 @@ msgstr "Aggiungi modificatore" msgid "Switch to per-object setting mode to edit modifier settings." msgstr "" -"Passa alla modalità di impostazione oggetto per modificare le impostazioni " -"del modificatore." +"Passa alla modalità di impostazione oggetto per modificare le impostazioni del " +"modificatore." msgid "" -"Switch to per-object setting mode to edit process settings of selected " -"objects." +"Switch to per-object setting mode to edit process settings of selected objects." msgstr "" -"Passa alla modalità di impostazione oggetto per modificare le impostazioni " -"di processo degli oggetti selezionati." +"Passa alla modalità di impostazione oggetto per modificare le impostazioni di " +"processo degli oggetti selezionati." msgid "Delete connector from object which is a part of cut" msgstr "Elimina il connettore dall'oggetto che fa parte del taglio" @@ -2031,24 +2057,23 @@ msgid "Delete negative volume from object which is a part of cut" msgstr "Elimina il volume negativo dall'oggetto che fa parte del taglio" msgid "" -"To save cut correspondence you can delete all connectors from all related " -"objects." +"To save cut correspondence you can delete all connectors from all related objects." msgstr "" -"Per salvare il taglio corrispondente puoi eliminare tutte le connessioni tra " -"gli oggetti correlati." +"Per salvare il taglio corrispondente puoi eliminare tutte le connessioni tra gli " +"oggetti correlati." msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate " -"cut infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate cut " +"infornation first." msgstr "" "Questa azione interromperà una corrispondenza di taglio.\n" "In seguito, la coerenza del modello non può essere garantita.\n" "\n" -"Per manipolare parti solide o volumi negativi è necessario invalidare prima " -"le informazioni di taglio." +"Per manipolare parti solide o volumi negativi è necessario invalidare prima le " +"informazioni di taglio." msgid "Delete all connectors" msgstr "Elimina tutti i connettori" @@ -2057,8 +2082,7 @@ msgid "Deleting the last solid part is not allowed." msgstr "Non è consentita l'eliminazione dell'ultima parte solida." msgid "The target object contains only one part and can not be splited." -msgstr "" -"L'oggetto di destinazione contiene solo una parte e non può essere diviso." +msgstr "L'oggetto di destinazione contiene solo una parte e non può essere diviso." msgid "Assembly" msgstr "Assemblaggio" @@ -2099,22 +2123,20 @@ msgstr "Layer" msgid "Selection conflicts" msgstr "Conflitti di selezione" -msgid "" -"If first selected item is an object, the second one should also be object." +msgid "If first selected item is an object, the second one should also be object." msgstr "" -"Se il primo elemento selezionato è un oggetto, anche il secondo deve essere " -"un oggetto." +"Se il primo elemento selezionato è un oggetto, anche il secondo deve essere un " +"oggetto." msgid "" "If first selected item is a part, the second one should be part in the same " "object." msgstr "" -"Se il primo elemento selezionato è una parte, il secondo deve far parte " -"dello stesso oggetto." +"Se il primo elemento selezionato è una parte, il secondo deve far parte dello " +"stesso oggetto." msgid "The type of the last solid object part is not to be changed." -msgstr "" -"Il tipo dell'ultima parte dell'oggetto solido non può essere modificato." +msgstr "Il tipo dell'ultima parte dell'oggetto solido non può essere modificato." msgid "Negative Part" msgstr "Parte negativa" @@ -2169,8 +2191,7 @@ msgid "Invalid numeric." msgstr "Numero non valido." msgid "one cell can only be copied to one or multiple cells in the same column" -msgstr "" -"Una cella può essere copiata solo in una o più celle della stessa colonna." +msgstr "Una cella può essere copiata solo in una o più celle della stessa colonna." msgid "multiple cells copy is not supported" msgstr "Copia di celle multiple non supportata." @@ -2293,8 +2314,7 @@ msgid "Add Custom Template" msgstr "Aggiungi template personalizzato" msgid "Insert template custom G-code at the beginning of this layer." -msgstr "" -"Inserisci un template G-code personalizzato all'inizio di questo layer." +msgstr "Inserisci un template G-code personalizzato all'inizio di questo layer." msgid "Filament " msgstr "Filamento" @@ -2391,8 +2411,8 @@ msgstr "Calibrazione AMS..." msgid "A problem occured during calibration. Click to view the solution." msgstr "" -"Si è verificato un problema durante la calibrazione. Clicca per visualizzare " -"la soluzione." +"Si è verificato un problema durante la calibrazione. Clicca per visualizzare la " +"soluzione." msgid "Calibrate again" msgstr "Calibra di nuovo" @@ -2431,11 +2451,11 @@ msgid "Grab new filament" msgstr "Prendo un nuovo filamento" msgid "" -"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " -"load or unload filiament." +"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load " +"or unload filiament." msgstr "" -"Seleziona uno slot AMS, premi \"Carica\" o \"Scarica\" per caricare o " -"scaricare automaticamente il filamento." +"Seleziona uno slot AMS, premi \"Carica\" o \"Scarica\" per caricare o scaricare " +"automaticamente il filamento." msgid "Edit" msgstr "Modifica" @@ -2475,16 +2495,14 @@ msgstr "" msgid "Arranging done." msgstr "Disposizione completata." -msgid "" -"Arrange failed. Found some exceptions when processing object geometries." +msgid "Arrange failed. Found some exceptions when processing object geometries." msgstr "" "Disposizione fallita. Riscontrate eccezioni durante l'elaborazione delle " "geometrie degli oggetti" #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single " -"bed:\n" +"Arrangement ignored the following objects which can't fit into a single bed:\n" "%s" msgstr "" "La disposizione ha ignorato i seguenti oggetti che non possono entrare in un " @@ -2560,8 +2578,8 @@ msgid "" "The print file exceeds the maximum allowable size (1GB). Please simplify the " "model and slice again." msgstr "" -"Il file di stampa supera la dimensione massima consentita (1 GB). Semplifica " -"il modello ed elaboralo nuovamente" +"Il file di stampa supera la dimensione massima consentita (1 GB). Semplifica il " +"modello ed elaboralo nuovamente" msgid "Failed to send the print job. Please try again." msgstr "Impossibile inviare il lavoro di stampa. Riprova." @@ -2569,8 +2587,7 @@ msgstr "Impossibile inviare il lavoro di stampa. Riprova." msgid "Failed to upload file to ftp. Please try again." msgstr "Caricamento del file in ftp non riuscito. Riprova." -msgid "" -"Check the current status of the bambu server by clicking on the link above." +msgid "Check the current status of the bambu server by clicking on the link above." msgstr "" "Controlla lo stato attuale del server Bambu Lab cliccando sul link qui sopra." @@ -2578,19 +2595,18 @@ msgid "" "The size of the print file is too large. Please adjust the file size and try " "again." msgstr "" -"La dimensione del file di stampa è troppo grande. Modifica la dimensione del " -"file e riprova." +"La dimensione del file di stampa è troppo grande. Modifica la dimensione del file " +"e riprova." msgid "Print file not found, Please slice it again and send it for printing." msgstr "" "File di stampa non trovato; elabora nuovamente il file e invia per la stampa." msgid "" -"Failed to upload print file to FTP. Please check the network status and try " -"again." +"Failed to upload print file to FTP. Please check the network status and try again." msgstr "" -"Impossibile caricare il file di stampa tramite FTP. Controlla lo stato della " -"rete e riprova." +"Impossibile caricare il file di stampa tramite FTP. Controlla lo stato della rete " +"e riprova." msgid "Sending print job over LAN" msgstr "Invia stampa tramite LAN" @@ -2617,12 +2633,10 @@ msgstr "" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the next page in %ss" -msgstr "" -"Inviato con successo. Salterà automaticamente alla pagina successiva in %ss" +msgstr "Inviato con successo. Salterà automaticamente alla pagina successiva in %ss" msgid "An SD card needs to be inserted before printing via LAN." -msgstr "" -"È necessario inserire una scheda microSD prima di stampare tramite LAN." +msgstr "È necessario inserire una scheda microSD prima di stampare tramite LAN." msgid "Sending gcode file over LAN" msgstr "Invio file G-code tramite LAN" @@ -2635,18 +2649,17 @@ msgid "Successfully sent. Close current page in %s s" msgstr "Inviato con successo. Chiudi la pagina corrente in %s s" msgid "An SD card needs to be inserted before sending to printer." -msgstr "" -"È necessario inserire una scheda microSD prima di inviarla alla stampante." +msgstr "È necessario inserire una scheda microSD prima di inviarla alla stampante." msgid "Importing SLA archive" msgstr "Importa archivio SLA" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA " -"printer preset first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA printer " +"preset first before importing that SLA archive." msgstr "" -"L'archivio SLA non contiene preset. Attivare alcuni preset di stampanti SLA " -"prima di importare l'archivio SLA." +"L'archivio SLA non contiene preset. Attivare alcuni preset di stampanti SLA prima " +"di importare l'archivio SLA." msgid "Importing canceled." msgstr "Importazione annullata." @@ -2655,16 +2668,16 @@ msgid "Importing done." msgstr "Importazione eseguita." msgid "" -"The imported SLA archive did not contain any presets. The current SLA " -"presets were used as fallback." +"The imported SLA archive did not contain any presets. The current SLA presets " +"were used as fallback." msgstr "" -"L'archivio SLA importato non contiene alcun preset. Gli attuali preset SLA " -"sono stati utilizzati come recupero." +"L'archivio SLA importato non contiene alcun preset. Gli attuali preset SLA sono " +"stati utilizzati come recupero." msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "" -"Non è possibile caricare un progetto SLA con un oggetto composto da più " -"parti sul piano" +"Non è possibile caricare un progetto SLA con un oggetto composto da più parti sul " +"piano" msgid "Please check your object list before preset changing." msgstr "Controlla l'elenco oggetto prima di modificare il preset." @@ -2706,23 +2719,23 @@ msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versione 3" msgid "" -"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " -"by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and " -"the RepRap community" +"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer by " +"Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and the " +"RepRap community" msgstr "" -"Orca Slicer è basato su BambuStudio di Bambulab, che è di PrusaSlicer di " -"Prusa Research. PrusaSlicer è di Slic3r di Alessandro Ranellucci e della " -"comunità RepRap" +"Orca Slicer è basato su BambuStudio di Bambulab, che è di PrusaSlicer di Prusa " +"Research. PrusaSlicer è di Slic3r di Alessandro Ranellucci e della comunità " +"RepRap" msgid "Libraries" msgstr "Librerie" msgid "" -"This software uses open source components whose copyright and other " -"proprietary rights belong to their respective owners" +"This software uses open source components whose copyright and other proprietary " +"rights belong to their respective owners" msgstr "" -"Questo software utilizza componenti open source il cui copyright e altri " -"diritti di proprietà appartengono ai rispettivi proprietari" +"Questo software utilizza componenti open source il cui copyright e altri diritti " +"di proprietà appartengono ai rispettivi proprietari" #, c-format, boost-format msgid "About %s" @@ -2784,8 +2797,7 @@ msgstr "SN" msgid "Setting AMS slot information while printing is not supported" msgstr "" -"L'impostazione informazioni sullo slot AMS in fase di stampa non è " -"supportata." +"L'impostazione informazioni sullo slot AMS in fase di stampa non è supportata." msgid "Factors of Flow Dynamics Calibration" msgstr "Fattori di calibrazione della dinamica del flusso" @@ -2826,14 +2838,13 @@ msgid "Dynamic flow calibration" msgstr "Calibrazione dinamica del flusso" msgid "" -"The nozzle temp and max volumetric speed will affect the calibration " -"results. Please fill in the same values as the actual printing. They can be " -"auto-filled by selecting a filament preset." +"The nozzle temp and max volumetric speed will affect the calibration results. " +"Please fill in the same values as the actual printing. They can be auto-filled by " +"selecting a filament preset." msgstr "" "La temperatura del nozzle e la velocità volumetrica massima influiranno sui " -"risultati della calibrazione. Inserisci gli stessi valori della stampa " -"effettiva. Possono essere riempiti automaticamente selezionando un filamento " -"dal preset." +"risultati della calibrazione. Inserisci gli stessi valori della stampa effettiva. " +"Possono essere riempiti automaticamente selezionando un filamento dal preset." msgid "Nozzle Diameter" msgstr "Diametro Nozzle" @@ -2866,13 +2877,13 @@ msgid "Next" msgstr "Avanti" msgid "" -"Calibration completed. Please find the most uniform extrusion line on your " -"hot bed like the picture below, and fill the value on its left side into the " -"factor K input box." +"Calibration completed. Please find the most uniform extrusion line on your hot " +"bed like the picture below, and fill the value on its left side into the factor K " +"input box." msgstr "" -"Calibrazione completata. Trova la linea di estrusione più uniforme sul tuo " -"piatto come nell'immagine sotto e inserisci il valore sul lato sinistro " -"nella casella di immissione del fattore K." +"Calibrazione completata. Trova la linea di estrusione più uniforme sul tuo piatto " +"come nell'immagine sotto e inserisci il valore sul lato sinistro nella casella di " +"immissione del fattore K." msgid "Save" msgstr "Salva" @@ -2903,11 +2914,10 @@ msgstr "Step" msgid "AMS Slots" msgstr "Slot AMS" -msgid "" -"Note: Only the AMS slots loaded with the same material type can be selected." +msgid "Note: Only the AMS slots loaded with the same material type can be selected." msgstr "" -"Nota: è possibile selezionare solo gli slot AMS caricati con lo stesso tipo " -"di materiale." +"Nota: è possibile selezionare solo gli slot AMS caricati con lo stesso tipo di " +"materiale." msgid "Enable AMS" msgstr "AMS abilitato" @@ -2925,40 +2935,37 @@ msgid "Cabin humidity" msgstr "Umidità della cabina" msgid "" -"Green means that AMS humidity is normal, orange represent humidity is high, " -"red represent humidity is too high.(Hygrometer: lower the better.)" +"Green means that AMS humidity is normal, orange represent humidity is high, red " +"represent humidity is too high.(Hygrometer: lower the better.)" msgstr "" -"Il verde indica che l'umidità dell'AMS è normale, l'arancione che l'umidità " -"è elevata, il rosso rappresenta un'umidità troppo elevata (igrometro: più " -"basso è, meglio è)." +"Il verde indica che l'umidità dell'AMS è normale, l'arancione che l'umidità è " +"elevata, il rosso rappresenta un'umidità troppo elevata (igrometro: più basso è, " +"meglio è)." msgid "Desiccant status" msgstr "Stato dell'essiccante" msgid "" -"A desiccant status lower than two bars indicates that desiccant may be " -"inactive. Please change the desiccant.(The bars: higher the better.)" +"A desiccant status lower than two bars indicates that desiccant may be inactive. " +"Please change the desiccant.(The bars: higher the better.)" msgstr "" -"Uno stato dell'essiccante inferiore a due barre indica che l'essiccante " -"potrebbe essere inattivo. Si prega di sostituire l'essiccante. (Le barre: " -"più sono alte, meglio è)." +"Uno stato dell'essiccante inferiore a due barre indica che l'essiccante potrebbe " +"essere inattivo. Si prega di sostituire l'essiccante. (Le barre: più sono alte, " +"meglio è)." msgid "" -"Note: When the lid is open or the desiccant pack is changed, it can take " -"hours or a night to absorb the moisture. Low temperatures also slow down the " -"process. During this time, the indicator may not represent the chamber " -"accurately." +"Note: When the lid is open or the desiccant pack is changed, it can take hours or " +"a night to absorb the moisture. Low temperatures also slow down the process. " +"During this time, the indicator may not represent the chamber accurately." msgstr "" -"Nota: quando il coperchio è aperto o la confezione di essiccante viene " -"cambiata, possono essere necessarie ore o una notte per assorbire l'umidità. " -"Anche le basse temperature rallentano il processo. Durante questo periodo, " -"l'indicatore potrebbe non rappresentare la camera con precisione." +"Nota: quando il coperchio è aperto o la confezione di essiccante viene cambiata, " +"possono essere necessarie ore o una notte per assorbire l'umidità. Anche le basse " +"temperature rallentano il processo. Durante questo periodo, l'indicatore potrebbe " +"non rappresentare la camera con precisione." -msgid "" -"Config which AMS slot should be used for a filament used in the print job" +msgid "Config which AMS slot should be used for a filament used in the print job" msgstr "" -"Configura lo slot AMS da usare per un filamento utilizzato nel lavoro di " -"stampa." +"Configura lo slot AMS da usare per un filamento utilizzato nel lavoro di stampa." msgid "Filament used in this print job" msgstr "Filamento utilizzato in questa stampa" @@ -2985,8 +2992,8 @@ msgid "" "When the current material run out, the printer will continue to print in the " "following order." msgstr "" -"Quando si esaurisce il materiale corrente, la stampante continuerà a " -"stampare nel seguente ordine." +"Quando si esaurisce il materiale corrente, la stampante continuerà a stampare nel " +"seguente ordine." msgid "Group" msgstr "Gruppo" @@ -2994,8 +3001,7 @@ msgstr "Gruppo" msgid "The printer does not currently support auto refill." msgstr "La stampante non supporta attualmente la ricarica automatica." -msgid "" -"AMS filament backup is not enabled, please enable it in the AMS settings." +msgid "AMS filament backup is not enabled, please enable it in the AMS settings." msgstr "" "Il backup del filamento AMS non è abilitato, si prega di abilitarlo nelle " "impostazioni AMS." @@ -3018,58 +3024,55 @@ msgid "Insertion update" msgstr "Aggiornamento dell'inserimento" msgid "" -"The AMS will automatically read the filament information when inserting a " -"new Bambu Lab filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a new " +"Bambu Lab filament. This takes about 20 seconds." msgstr "" -"L'AMS leggerà automaticamente le informazioni sul filamento quando inserisce " -"una nuova bobina di filamento Bambu Lab. Questa operazione richiede circa 20 " -"secondi." +"L'AMS leggerà automaticamente le informazioni sul filamento quando inserisce una " +"nuova bobina di filamento Bambu Lab. Questa operazione richiede circa 20 secondi." msgid "" "Note: if new filament is inserted during printing, the AMS will not " "automatically read any information until printing is completed." msgstr "" -"Nota: se durante la stampa viene inserito un nuovo filamento, l'AMS non " -"leggerà automaticamente alcuna informazione fino al termine della stampa." +"Nota: se durante la stampa viene inserito un nuovo filamento, l'AMS non leggerà " +"automaticamente alcuna informazione fino al termine della stampa." msgid "" "When inserting a new filament, the AMS will not automatically read its " "information, leaving it blank for you to enter manually." msgstr "" -"Quando si inserisce un nuovo filamento, l'AMS non legge automaticamente le " -"sue informazioni, lasciandole vuote per l'inserimento manuale." +"Quando si inserisce un nuovo filamento, l'AMS non legge automaticamente le sue " +"informazioni, lasciandole vuote per l'inserimento manuale." msgid "Power on update" msgstr "Aggiorna all'avvio" msgid "" -"The AMS will automatically read the information of inserted filament on " -"start-up. It will take about 1 minute.The reading process will roll filament " -"spools." +"The AMS will automatically read the information of inserted filament on start-up. " +"It will take about 1 minute.The reading process will roll filament spools." msgstr "" -"L'AMS leggerà automaticamente le informazioni sul filamento inserito " -"all'avvio. Ci vorrà circa 1 minuto. Il processo di lettura farà ruotare le " -"bobine del filamento." +"L'AMS leggerà automaticamente le informazioni sul filamento inserito all'avvio. " +"Ci vorrà circa 1 minuto. Il processo di lettura farà ruotare le bobine del " +"filamento." msgid "" -"The AMS will not automatically read information from inserted filament " -"during startup and will continue to use the information recorded before the " -"last shutdown." +"The AMS will not automatically read information from inserted filament during " +"startup and will continue to use the information recorded before the last " +"shutdown." msgstr "" -"L'AMS non leggerà automaticamente le informazioni dal filamento inserito " -"durante l'avvio e continuerà a utilizzare le informazioni registrate prima " -"dell'ultimo spegnimento." +"L'AMS non leggerà automaticamente le informazioni dal filamento inserito durante " +"l'avvio e continuerà a utilizzare le informazioni registrate prima dell'ultimo " +"spegnimento." msgid "Update remaining capacity" msgstr "Aggiorna capacità residua" msgid "" -"The AMS will estimate Bambu filament's remaining capacity after the filament " -"info is updated. During printing, remaining capacity will be updated " -"automatically." +"The AMS will estimate Bambu filament's remaining capacity after the filament info " +"is updated. During printing, remaining capacity will be updated automatically." msgstr "" -"L'AMS stimerà la capacità residua del filamento Bambu dopo l'aggiornamento " -"delle informazioni. Durante la stampa, la capacità residua verrà aggiornata " +"L'AMS stimerà la capacità residua del filamento Bambu dopo l'aggiornamento delle " +"informazioni. Durante la stampa, la capacità residua verrà aggiornata " "automaticamente." msgid "AMS filament backup" @@ -3079,8 +3082,8 @@ msgid "" "AMS will continue to another spool with the same properties of filament " "automatically when current filament runs out" msgstr "" -"L'AMS passerà automaticamente a un altro filamento con stesse proprietà " -"quando il filamento corrente si esaurisce" +"L'AMS passerà automaticamente a un altro filamento con stesse proprietà quando il " +"filamento corrente si esaurisce" msgid "File" msgstr "File" @@ -3092,12 +3095,12 @@ msgid "" "Failed to download the plug-in. Please check your firewall settings and vpn " "software, check and retry." msgstr "" -"Impossibile scaricare il plug-in. Controlla le impostazioni del firewall e " -"VPN poi riprova." +"Impossibile scaricare il plug-in. Controlla le impostazioni del firewall e VPN " +"poi riprova." msgid "" -"Failed to install the plug-in. Please check whether it is blocked or deleted " -"by anti-virus software." +"Failed to install the plug-in. Please check whether it is blocked or deleted by " +"anti-virus software." msgstr "" "Impossibile installare il plug-in. Verificare se è bloccato o se è stato " "eliminato dall'antivirus." @@ -3112,9 +3115,9 @@ msgid "" ") to locate the toolhead's position. This prevents device moving beyond the " "printable boundary and causing equipment wear." msgstr "" -") per individuare la posizione della testa dell'utensile. In questo modo si " -"evita che il dispositivo si sposti oltre il limite stampabile, causando " -"l'usura dell'apparecchiatura." +") per individuare la posizione della testa dell'utensile. In questo modo si evita " +"che il dispositivo si sposti oltre il limite stampabile, causando l'usura " +"dell'apparecchiatura." msgid "Go Home" msgstr "Vai all'origine" @@ -3123,8 +3126,8 @@ msgid "" "A error occurred. Maybe memory of system is not enough or it's a bug of the " "program" msgstr "" -"Si è verificato un errore. È possibile che la memoria del sistema sia " -"esaurita o che si sia verificato un bug." +"Si è verificato un errore. È possibile che la memoria del sistema sia esaurita o " +"che si sia verificato un bug." msgid "Please save project and restart the program. " msgstr "Salva il progetto e riavvia l'applicazione." @@ -3182,8 +3185,8 @@ msgstr "Copia del G-code temporaneo nel G-code di output non riuscita." #, boost-format msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "" -"Programmazione del caricamento su `%1%`. Vedere finestra -> Coda di " -"caricamento Host di Stampa" +"Programmazione del caricamento su `%1%`. Vedere finestra -> Coda di caricamento " +"Host di Stampa" msgid "Origin" msgstr "Origine" @@ -3192,8 +3195,7 @@ msgid "Size in X and Y of the rectangular plate." msgstr "Dimensioni X e Y del piano rettangolare." msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." +"Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "" "Distanza della coordinata 0,0 del G-code dall'angolo frontale sinistro del " "rettangolo." @@ -3202,8 +3204,7 @@ msgid "" "Diameter of the print bed. It is assumed that origin (0,0) is located in the " "center." msgstr "" -"Diametro del piano di stampa. Si presume che l'origine (0,0) si trovi al " -"centro." +"Diametro del piano di stampa. Si presume che l'origine (0,0) si trovi al centro." msgid "Rectangular" msgstr "Rettangolare" @@ -3241,14 +3242,11 @@ msgstr "Errore! Modello non valido" msgid "The selected file contains no geometry." msgstr "Il file selezionato non contiene geometrie." -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "" -"Il file selezionato contiene molteplici aree disgiunte. Non è supportato." +msgid "The selected file contains several disjoint areas. This is not supported." +msgstr "Il file selezionato contiene molteplici aree disgiunte. Non è supportato." msgid "Choose a file to import bed texture from (PNG/SVG):" -msgstr "" -"Seleziona un file da cui importare la forma del piano di stampa (PNG/SVG):" +msgstr "Seleziona un file da cui importare la forma del piano di stampa (PNG/SVG):" msgid "Choose an STL file to import bed model from:" msgstr "Scegli un file STL da cui importare il modello del piano:" @@ -3268,8 +3266,7 @@ msgstr "" #, c-format, boost-format msgid "" -"Recommended nozzle temperature of this filament type is [%d, %d] degree " -"centigrade" +"Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade" msgstr "" "La temperatura del nozzle consigliata per questo filamento è [%d, %d] gradi " "centigradi" @@ -3283,13 +3280,13 @@ msgstr "" #, c-format, boost-format msgid "" -"Current chamber temperature is higher than the material's safe temperature," -"it may result in material softening and clogging.The maximum safe " -"temperature for the material is %d" +"Current chamber temperature is higher than the material's safe temperature,it may " +"result in material softening and clogging.The maximum safe temperature for the " +"material is %d" msgstr "" -"L'attuale temperatura della camera è superiore alla temperatura di sicurezza " -"del materiale, può causare l'ammorbidimento e l'intasamento del materiale. " -"La temperatura massima di sicurezza per il materiale è %d" +"L'attuale temperatura della camera è superiore alla temperatura di sicurezza del " +"materiale, può causare l'ammorbidimento e l'intasamento del materiale. La " +"temperatura massima di sicurezza per il materiale è %d" msgid "" "Too small layer height.\n" @@ -3315,18 +3312,17 @@ msgstr "" "L'altezza primo layer verrà ripristinata a 0,2." msgid "" -"This setting is only used for model size tunning with small value in some " -"cases.\n" +"This setting is only used for model size tunning with small value in some cases.\n" "For example, when model size has small error and hard to be assembled.\n" "For large size tuning, please use model scale function.\n" "\n" "The value will be reset to 0." msgstr "" -"Questa viene utilizzata solo per regolare le dimensioni del modello in " -"piccole quantità.\n" -"Ad esempio, quando le dimensioni del modello presentano piccoli errori o " -"quando le tolleranze non sono corrette. Per regolazioni di grandi " -"dimensioni, si prega di utilizzare la funzione di scala del modello.\n" +"Questa viene utilizzata solo per regolare le dimensioni del modello in piccole " +"quantità.\n" +"Ad esempio, quando le dimensioni del modello presentano piccoli errori o quando " +"le tolleranze non sono corrette. Per regolazioni di grandi dimensioni, si prega " +"di utilizzare la funzione di scala del modello.\n" "\n" "Il valore verrà reimpostato su 0." @@ -3349,8 +3345,8 @@ msgid "" "layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" "La modalità spirale funziona solo quando il loop parete è 1, il supporto è " -"disabilitato, i layers superiori del guscio sono 0, la densità riempimento è " -"0 e il tipo di timelapse è tradizionale" +"disabilitato, i layers superiori del guscio sono 0, la densità riempimento è 0 e " +"il tipo di timelapse è tradizionale" msgid " But machines with I3 structure will not generate timelapse videos." msgstr " Ma le macchine con la struttura I3 non genereranno video timelapse." @@ -3365,20 +3361,24 @@ msgstr "" "No - Annulla l'attivazione della modalità a spirale" msgid "" -"Alternate extra wall only works with ensure vertical shell thickness " -"disabled. " +"Alternate extra wall only works with ensure vertical shell thickness disabled. " msgstr "" +"La parete aggiuntiva alternativa funziona solo con la disattivazione dello " +"spessore del guscio verticale. " msgid "" "Change these settings automatically? \n" -"Yes - Disable ensure vertical shell thickness and enable alternate extra " -"wall\n" +"Yes - Disable ensure vertical shell thickness and enable alternate extra wall\n" "No - Dont use alternate extra wall" msgstr "" +"Modificare automaticamente queste impostazioni? \n" +"Sì - Disabilita Assicura lo spessore del guscio verticale e abilita una parete " +"aggiuntiva alternativa\n" +"No - Non utilizzare una parete aggiuntiva alternativa" msgid "" -"Prime tower does not work when Adaptive Layer Height or Independent Support " -"Layer Height is on.\n" +"Prime tower does not work when Adaptive Layer Height or Independent Support Layer " +"Height is on.\n" "Which do you want to keep?\n" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height and Independent Support Layer Height" @@ -3406,8 +3406,7 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"Prime tower non funziona quando Altezza Supporto Layer indipendente è " -"attiva.\n" +"Prime tower non funziona quando Altezza Supporto Layer indipendente è attiva.\n" "Quale vuoi tenere?\n" "SÌ - Mantieni Prime Tower\n" "NO - Mantieni Altezza Supporto Layer indipendente" @@ -3561,40 +3560,38 @@ msgid "Update failed." msgstr "Aggiornamento fallito" msgid "" -"The current chamber temperature or the target chamber temperature exceeds " -"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" -"TPU) is not allowed to be loaded." +"The current chamber temperature or the target chamber temperature exceeds 45℃.In " +"order to avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is not " +"allowed to be loaded." msgstr "" -"La temperatura attuale della camera o la temperatura della camera target " -"supera i 45°C. Al fine di evitare l'intasamento dell'estrusore, il filamento " -"a bassa temperatura (PLA/PETG/TPU) non può essere caricato." +"La temperatura attuale della camera o la temperatura della camera target supera i " +"45°C. Al fine di evitare l'intasamento dell'estrusore, il filamento a bassa " +"temperatura (PLA/PETG/TPU) non può essere caricato." msgid "" "Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " -"avoid extruder clogging,it is not allowed to set the chamber temperature " -"above 45℃." +"avoid extruder clogging,it is not allowed to set the chamber temperature above " +"45℃." msgstr "" -"Il filamento a bassa temperatura (PLA/PETG/TPU) viene caricato " -"nell'estrusore. Al fine di evitare l'intasamento dell'estrusore, non è " -"consentito impostare la temperatura della camera al di sopra di 45°C." +"Il filamento a bassa temperatura (PLA/PETG/TPU) viene caricato nell'estrusore. Al " +"fine di evitare l'intasamento dell'estrusore, non è consentito impostare la " +"temperatura della camera al di sopra di 45°C." msgid "" -"When you set the chamber temperature below 40℃, the chamber temperature " -"control will not be activated. And the target chamber temperature will " -"automatically be set to 0℃." +"When you set the chamber temperature below 40℃, the chamber temperature control " +"will not be activated. And the target chamber temperature will automatically be " +"set to 0℃." msgstr "" -"Quando si imposta la temperatura della camera al di sotto di 40°C, il " -"controllo della temperatura della camera non verrà attivato. E la " -"temperatura della camera target verrà impostata automaticamente su 0°C." +"Quando si imposta la temperatura della camera al di sotto di 40°C, il controllo " +"della temperatura della camera non verrà attivato. E la temperatura della camera " +"target verrà impostata automaticamente su 0°C." msgid "Failed to start printing job" msgstr "Impossibile avviare il processo di stampa" -msgid "" -"This calibration does not support the currently selected nozzle diameter" +msgid "This calibration does not support the currently selected nozzle diameter" msgstr "" -"Questa calibrazione non supporta il diametro dell'ugello attualmente " -"selezionato" +"Questa calibrazione non supporta il diametro dell'ugello attualmente selezionato" msgid "Current flowrate cali param is invalid" msgstr "Il parametro cali della portata corrente non è valido" @@ -3615,18 +3612,18 @@ msgid "Bambu PET-CF/PA6-CF is not supported by AMS." msgstr "Bambu PET-CF/PA6-CF non è supportato da AMS." msgid "" -"Damp PVA will become flexible and get stuck inside AMS,please take care to " -"dry it before use." +"Damp PVA will become flexible and get stuck inside AMS,please take care to dry it " +"before use." msgstr "" -"Damp PVA diventerà flessibile e rimarrà bloccato all'interno di AMS, si " -"prega di fare attenzione ad asciugarlo prima dell'uso." +"Damp PVA diventerà flessibile e rimarrà bloccato all'interno di AMS, si prega di " +"fare attenzione ad asciugarlo prima dell'uso." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " -"AMS, please use with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, " +"please use with caution." msgstr "" -"I filamenti CF / GF sono duri e fragili, è facile rompersi o rimanere " -"bloccati in AMS, si prega di usare con cautela." +"I filamenti CF / GF sono duri e fragili, è facile rompersi o rimanere bloccati in " +"AMS, si prega di usare con cautela." msgid "default" msgstr "predefinito" @@ -4023,13 +4020,13 @@ msgstr "È visibile solo l'oggetto da modificare." msgid "" "An object is laid over the boundary of plate or exceeds the height limit.\n" -"Please solve the problem by moving it totally on or off the plate, and " -"confirming that the height is within the build volume." +"Please solve the problem by moving it totally on or off the plate, and confirming " +"that the height is within the build volume." msgstr "" "Un oggetto è posizionato oltre il limite del piatto o supera il limite di " "altezza.\n" -"Risolvi il problema spostando l'oggetto completamente dentro o fuori il " -"piatto verificando che l'altezza rientri nel volume di costruzione." +"Risolvi il problema spostando l'oggetto completamente dentro o fuori il piatto " +"verificando che l'altezza rientri nel volume di costruzione." msgid "Calibration step selection" msgstr "Seleziona calibrazione" @@ -4054,8 +4051,8 @@ msgid "" "minimize deviation.\n" "It keeps the device performing optimally." msgstr "" -"Il programma di calibrazione rileva automaticamente lo stato del dispositivo " -"per ridurre al minimo le deviazioni.\n" +"Il programma di calibrazione rileva automaticamente lo stato del dispositivo per " +"ridurre al minimo le deviazioni.\n" "Questa funzione aiuta il dispositivo a mantenere prestazioni ottimali." msgid "Calibration Flow" @@ -4521,8 +4518,7 @@ msgstr "Scegliere una directory" #, c-format, boost-format msgid "There is %d config exported. (Only non-system configs)" msgid_plural "There are %d configs exported. (Only non-system configs)" -msgstr[0] "" -"Viene esportata %d configurazione. (Solo configurazioni non di sistema)" +msgstr[0] "Viene esportata %d configurazione. (Solo configurazioni non di sistema)" msgstr[1] "" "Vengono esportate %d configurazioni. (Solo configurazioni non di sistema)" @@ -4540,8 +4536,8 @@ msgstr[0] "" "È stata importata %d configurazione. (Solo configurazioni non di sistema e " "compatibili)" msgstr[1] "" -"Sono state importate %d configurazioni. (Solo configurazioni non di sistema " -"e compatibili)" +"Sono state importate %d configurazioni. (Solo configurazioni non di sistema e " +"compatibili)" msgid "Import result" msgstr "Risultato dell'importazione" @@ -4575,15 +4571,13 @@ msgid "Initialize failed (No Device)!" msgstr "Inizializzazione fallita (nessun dispositivo)!" msgid "Initialize failed (Device connection not ready)!" -msgstr "" -"Inizializzazione fallita (la connessione del dispositivo non è pronta)!" +msgstr "Inizializzazione fallita (la connessione del dispositivo non è pronta)!" msgid "Initialize failed (No Camera Device)!" msgstr "Inizializzazione fallita (Nessun dispositivo fotocamera)!" msgid "Printer is busy downloading, Please wait for the downloading to finish." -msgstr "" -"Stampante in fase di caricamento; attendi il completamento del caricamento." +msgstr "Stampante in fase di caricamento; attendi il completamento del caricamento." msgid "Initialize failed (Not supported on the current printer version)!" msgstr "" @@ -4722,10 +4716,8 @@ msgstr "Caricamento non riuscito [%d]" msgid "You are going to delete %u file from printer. Are you sure to continue?" msgid_plural "" "You are going to delete %u files from printer. Are you sure to continue?" -msgstr[0] "" -"Stai per eliminare %u file dalla stampante. Sei sicuro di continuare?" -msgstr[1] "" -"Stai per eliminare %u i file dalla stampante. Sei sicuro di continuare?" +msgstr[0] "Stai per eliminare %u file dalla stampante. Sei sicuro di continuare?" +msgstr[1] "Stai per eliminare %u i file dalla stampante. Sei sicuro di continuare?" msgid "Delete files" msgstr "Elimina i file" @@ -4747,11 +4739,11 @@ msgid "Failed to parse model infomations." msgstr "Analisi delle informazioni sul modello non riuscita" msgid "" -"The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer " -"and export a new .gcode.3mf file." +"The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer and " +"export a new .gcode.3mf file." msgstr "" -"Il file .gcode.3mf non contiene dati G-code. Taglialo con Orca Slicer ed " -"esporta un nuovo file .gcode.3mf." +"Il file .gcode.3mf non contiene dati G-code. Taglialo con Orca Slicer ed esporta " +"un nuovo file .gcode.3mf." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -4778,8 +4770,7 @@ msgstr "Connessione persa. Si prega di riprovare." msgid "The device cannot handle more conversations. Please retry later." msgstr "" -"Il dispositivo non è in grado di gestire più conversazioni. Riprova più " -"tardi." +"Il dispositivo non è in grado di gestire più conversazioni. Riprova più tardi." msgid "File not exists." msgstr "Il file non esiste." @@ -4859,8 +4850,7 @@ msgid "" "but the synchronization of rating information has failed." msgstr "" "Hai completato la stampa del modello del centro commerciale, \n" -"Tuttavia, la sincronizzazione delle informazioni di valutazione non è " -"riuscita." +"Tuttavia, la sincronizzazione delle informazioni di valutazione non è riuscita." msgid "How do you like this printing file?" msgstr "Ti piace questo file di stampa?" @@ -4869,8 +4859,8 @@ msgid "" "(The model has already been rated. Your rating will overwrite the previous " "rating.)" msgstr "" -"(Il modello è già stato valutato. La tua valutazione sovrascriverà la " -"valutazione precedente.)" +"(Il modello è già stato valutato. La tua valutazione sovrascriverà la valutazione " +"precedente.)" msgid "Rate" msgstr "Tasso" @@ -4942,11 +4932,10 @@ msgid "Layer: %d/%d" msgstr "Layer: %d/%d" msgid "" -"Please heat the nozzle to above 170 degree before loading or unloading " -"filament." +"Please heat the nozzle to above 170 degree before loading or unloading filament." msgstr "" -"Si prega di riscaldare l'ugello a oltre 170 gradi prima di caricare o " -"scaricare il filamento." +"Si prega di riscaldare l'ugello a oltre 170 gradi prima di caricare o scaricare " +"il filamento." msgid "Still unload" msgstr "Scarica ancora" @@ -4958,11 +4947,11 @@ msgid "Please select an AMS slot before calibration" msgstr "Seleziona uno slot AMS prima di calibrare." msgid "" -"Cannot read filament info: the filament is loaded to the tool head,please " -"unload the filament and try again." +"Cannot read filament info: the filament is loaded to the tool head,please unload " +"the filament and try again." msgstr "" -"Impossibile leggere le informazioni sul filamento: il filamento è caricato " -"nella testa di stampa. Scaricare il filamento e riprovare." +"Impossibile leggere le informazioni sul filamento: il filamento è caricato nella " +"testa di stampa. Scaricare il filamento e riprovare." msgid "This only takes effect during printing" msgstr "Questo ha effetto solo in fase di stampa" @@ -5028,20 +5017,19 @@ msgid " can not be opened\n" msgstr " non può essere aperto\n" msgid "" -"The following issues occurred during the process of uploading images. Do you " -"want to ignore them?\n" +"The following issues occurred during the process of uploading images. Do you want " +"to ignore them?\n" "\n" msgstr "" -"Durante il processo di caricamento delle immagini si sono verificati i " -"seguenti problemi. Vuoi ignorarli?\n" +"Durante il processo di caricamento delle immagini si sono verificati i seguenti " +"problemi. Vuoi ignorarli?\n" "\n" msgid "info" msgstr "info" msgid "Synchronizing the printing results. Please retry a few seconds later." -msgstr "" -"Sincronizzazione dei risultati di stampa. Riprova qualche secondo dopo." +msgstr "Sincronizzazione dei risultati di stampa. Riprova qualche secondo dopo." msgid "Upload failed\n" msgstr "Caricamento non riuscito\n" @@ -5054,8 +5042,8 @@ msgid "" "\n" " error code: " msgstr "" -"Il risultato del tuo commento non può essere caricato per alcuni motivi. " -"Come segue:\n" +"Il risultato del tuo commento non può essere caricato per alcuni motivi. Come " +"segue:\n" "\n" "Codice di errore: " @@ -5071,11 +5059,11 @@ msgstr "" "Vuoi reindirizzare alla pagina web per la valutazione?" msgid "" -"Some of your images failed to upload. Would you like to redirect to the " -"webpage for rating?" +"Some of your images failed to upload. Would you like to redirect to the webpage " +"for rating?" msgstr "" -"Alcune delle tue immagini non sono state caricate. Vuoi reindirizzare alla " -"pagina web per la valutazione?" +"Alcune delle tue immagini non sono state caricate. Vuoi reindirizzare alla pagina " +"web per la valutazione?" msgid "You can select up to 16 images." msgstr "È possibile selezionare fino a 16 immagini." @@ -5084,8 +5072,7 @@ msgid "" "At least one successful print record of this print profile is required \n" "to give a positive rating(4 or 5stars)." msgstr "" -"È necessario almeno un record di stampa riuscito di questo profilo di " -"stampa \n" +"È necessario almeno un record di stampa riuscito di questo profilo di stampa \n" "per dare una valutazione positiva (4 o 5 stelle)." msgid "Status" @@ -5254,11 +5241,10 @@ msgid "Range" msgstr "Intervallo" msgid "" -"The application cannot run normally because OpenGL version is lower than " -"2.0.\n" +"The application cannot run normally because OpenGL version is lower than 2.0.\n" msgstr "" -"L'applicazione non può essere eseguita normalmente perché la versione OpenGL " -"è precedente alla 2.0.\n" +"L'applicazione non può essere eseguita normalmente perché la versione OpenGL è " +"precedente alla 2.0.\n" msgid "Please upgrade your graphics card driver." msgstr "Aggiorna i driver della scheda grafica." @@ -5295,11 +5281,11 @@ msgid "Enable detection of build plate position" msgstr "Abilita rilevamento posizione del piatto" msgid "" -"The localization tag of build plate is detected, and printing is paused if " -"the tag is not in predefined range." +"The localization tag of build plate is detected, and printing is paused if the " +"tag is not in predefined range." msgstr "" -"Il tag di localizzazione del piatto verrà rilevato e la stampa verrà messa " -"in pausa se il tag non rientra nell'intervallo predefinito." +"Il tag di localizzazione del piatto verrà rilevato e la stampa verrà messa in " +"pausa se il tag non rientra nell'intervallo predefinito." msgid "First Layer Inspection" msgstr "Ispezione del primo layer" @@ -5410,11 +5396,10 @@ msgstr "Imposta filamenti da usare" msgid "Search plate, object and part." msgstr "Cerca piastra, oggetto e parte." -msgid "" -"No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgid "No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" -"Nessun filamento AMS. Selezionare una stampante nella pagina 'Dispositivo' " -"per caricare le informazioni AMS." +"Nessun filamento AMS. Selezionare una stampante nella pagina 'Dispositivo' per " +"caricare le informazioni AMS." msgid "Sync filaments with AMS" msgstr "Sincronizza filamenti con AMS" @@ -5423,15 +5408,14 @@ msgid "" "Sync filaments with AMS will drop all current selected filament presets and " "colors. Do you want to continue?" msgstr "" -"La sincronizzazione filamenti con AMS eliminerà tutti i preset e i colori " -"dei filamenti attualmente selezionati. Vuoi continuare?" +"La sincronizzazione filamenti con AMS eliminerà tutti i preset e i colori dei " +"filamenti attualmente selezionati. Vuoi continuare?" msgid "" -"Already did a synchronization, do you want to sync only changes or resync " -"all?" +"Already did a synchronization, do you want to sync only changes or resync all?" msgstr "" -"È già stata effettuata una sincronizzazione; si desidera sincronizzare solo " -"le modifiche o tutto?" +"È già stata effettuata una sincronizzazione; si desidera sincronizzare solo le " +"modifiche o tutto?" msgid "Sync" msgstr "Sincronizza" @@ -5440,17 +5424,15 @@ msgid "Resync" msgstr "Risincronizza" msgid "There are no compatible filaments, and sync is not performed." -msgstr "" -"Non ci sono filamenti compatibili, la sincronizzazione non viene eseguita." +msgstr "Non ci sono filamenti compatibili, la sincronizzazione non viene eseguita." msgid "" -"There are some unknown filaments mapped to generic preset. Please update " -"Orca Slicer or restart Orca Slicer to check if there is an update to system " -"presets." +"There are some unknown filaments mapped to generic preset. Please update Orca " +"Slicer or restart Orca Slicer to check if there is an update to system presets." msgstr "" -"Ci sono alcuni filamenti sconosciuti mappati su un preset generico. Aggiorna " -"Orca Slicer o riavvia Orca Slicer per verificare se è presente un " -"aggiornamento delle impostazioni di sistema." +"Ci sono alcuni filamenti sconosciuti mappati su un preset generico. Aggiorna Orca " +"Slicer o riavvia Orca Slicer per verificare se è presente un aggiornamento delle " +"impostazioni di sistema." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -5461,8 +5443,8 @@ msgid "" "Successfully unmounted. The device %s(%s) can now be safely removed from the " "computer." msgstr "" -"Smontato con successo. Il dispositivo %s (%s) può ora essere rimosso dal " -"computer in sicurezza" +"Smontato con successo. Il dispositivo %s (%s) può ora essere rimosso dal computer " +"in sicurezza" #, c-format, boost-format msgid "Ejecting of device %s(%s) has failed." @@ -5476,30 +5458,29 @@ msgid "Restore" msgstr "Ripristina" msgid "" -"The current hot bed temperature is relatively high. The nozzle may be " -"clogged when printing this filament in a closed enclosure. Please open the " -"front door and/or remove the upper glass." +"The current hot bed temperature is relatively high. The nozzle may be clogged " +"when printing this filament in a closed enclosure. Please open the front door and/" +"or remove the upper glass." msgstr "" -"L'attuale temperatura del letto caldo è relativamente alta. L'ugello " -"potrebbe essere ostruito quando si stampa questo filamento in un involucro " -"chiuso. Si prega di aprire lo sportello anteriore e/o rimuovere il vetro " -"superiore." +"L'attuale temperatura del letto caldo è relativamente alta. L'ugello potrebbe " +"essere ostruito quando si stampa questo filamento in un involucro chiuso. Si " +"prega di aprire lo sportello anteriore e/o rimuovere il vetro superiore." msgid "" -"The nozzle hardness required by the filament is higher than the default " -"nozzle hardness of the printer. Please replace the hardened nozzle or " -"filament, otherwise, the nozzle will be attrited or damaged." +"The nozzle hardness required by the filament is higher than the default nozzle " +"hardness of the printer. Please replace the hardened nozzle or filament, " +"otherwise, the nozzle will be attrited or damaged." msgstr "" -"La durezza del nozzle richiesta dal filamento è superiore alla durezza del " -"nozzle predefinito della stampante. Si prega di sostituire il nozzle o il " -"filamento indurito, altrimenti il nozzle sarà usurato o danneggiato." +"La durezza del nozzle richiesta dal filamento è superiore alla durezza del nozzle " +"predefinito della stampante. Si prega di sostituire il nozzle o il filamento " +"indurito, altrimenti il nozzle sarà usurato o danneggiato." msgid "" -"Enabling traditional timelapse photography may cause surface imperfections. " -"It is recommended to change to smooth mode." +"Enabling traditional timelapse photography may cause surface imperfections. It is " +"recommended to change to smooth mode." msgstr "" -"L'attivazione della fotografia timelapse tradizionale può causare " -"imperfezioni della superficie. Si consiglia di passare alla modalità liscia." +"L'attivazione della fotografia timelapse tradizionale può causare imperfezioni " +"della superficie. Si consiglia di passare alla modalità liscia." msgid "Expand sidebar" msgstr "Espandi barra laterale" @@ -5537,38 +5518,36 @@ msgstr "" "stampante:" msgid "" -"Please confirm that these modified G-codes are safe to prevent any damage to " -"the machine!" +"Please confirm that these modified G-codes are safe to prevent any damage to the " +"machine!" msgstr "" -"Si prega di confermare che questi G-code modificati sono sicuri per evitare " -"danni alla macchina!" +"Si prega di confermare che questi G-code modificati sono sicuri per evitare danni " +"alla macchina!" msgid "Modified G-codes" msgstr "G-code Modificati" msgid "The 3mf has following customized filament or printer presets:" msgstr "" -"Il 3mf ha i seguenti filamenti personalizzati o preimpostazioni della " -"stampante:" +"Il 3mf ha i seguenti filamenti personalizzati o preimpostazioni della stampante:" msgid "" "Please confirm that the G-codes within these presets are safe to prevent any " "damage to the machine!" msgstr "" -"Si prega di confermare che i G-code all'interno di queste preimpostazioni " -"sono sicuri per evitare danni alla macchina!" +"Si prega di confermare che i G-code all'interno di queste preimpostazioni sono " +"sicuri per evitare danni alla macchina!" msgid "Customized Preset" msgstr "Preset personalizzato" msgid "Name of components inside step file is not UTF8 format!" -msgstr "" -"Il nome/i del componente all'interno del file step non è in formato UTF8!" +msgstr "Il nome/i del componente all'interno del file step non è in formato UTF8!" msgid "The name may show garbage characters!" msgstr "" -"A causa di una codifica del testo non supportata, potrebbero apparire " -"caratteri inutili!" +"A causa di una codifica del testo non supportata, potrebbero apparire caratteri " +"inutili!" #, boost-format msgid "Failed loading file \"%1%\". An invalid configuration was found." @@ -5614,8 +5593,8 @@ msgid "The file does not contain any geometry data." msgstr "Il file non contiene dati geometrici." msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" +"Your object appears to be too large, Do you want to scale it down to fit the heat " +"bed automatically?" msgstr "" "L'oggetto sembra troppo grande. Vuoi ridimensionarlo per adattarlo " "automaticamente al piatto di stampa?" @@ -5719,11 +5698,9 @@ msgstr "Slicing Piatto %d" msgid "Please resolve the slicing errors and publish again." msgstr "Risolvi gli errori di slicing e pubblica nuovamente." -msgid "" -"Network Plug-in is not detected. Network related features are unavailable." +msgid "Network Plug-in is not detected. Network related features are unavailable." msgstr "" -"Il plug-in di rete non è stato rilevato. Le funzioni di rete non sono " -"disponibili." +"Il plug-in di rete non è stato rilevato. Le funzioni di rete non sono disponibili." msgid "" "Preview only mode:\n" @@ -5748,8 +5725,8 @@ msgid "" "project file." msgstr "" "Non è stato possibile salvare il progetto.\n" -"Verificare se online la cartella esiste o se altri programmi hanno aperto il " -"file del progetto." +"Verificare se online la cartella esiste o se altri programmi hanno aperto il file " +"del progetto." msgid "Save project" msgstr "Salva progetto" @@ -5768,11 +5745,10 @@ msgid "Project downloaded %d%%" msgstr "Progetto scaricato %d%%" msgid "" -"Importing to Orca Slicer failed. Please download the file and manually " -"import it." +"Importing to Orca Slicer failed. Please download the file and manually import it." msgstr "" -"L'importazione di Orca Slicer non è riuscita. Si prega di scaricare il file " -"e importarlo manualmente." +"L'importazione di Orca Slicer non è riuscita. Si prega di scaricare il file e " +"importarlo manualmente." msgid "Import SLA archive" msgstr "Importa archivio SLA" @@ -5847,34 +5823,33 @@ msgstr "Salva file elaborato come:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed " -"on the printer." +"The file %s has been sent to the printer's storage space and can be viewed on the " +"printer." msgstr "" -"Il file %s è stato inviato allo spazio di memoria della stampante e può " -"essere visualizzato sulla stampante." +"Il file %s è stato inviato allo spazio di memoria della stampante e può essere " +"visualizzato sulla stampante." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts " -"will be exported." +"Unable to perform boolean operation on model meshes. Only positive parts will be " +"exported." msgstr "" "Impossibile eseguire operazioni booleane sulle mesh del modello. Verranno " "esportate solo le parti positive." msgid "" -"Are you sure you want to store original SVGs with their local paths into the " -"3MF file?\n" +"Are you sure you want to store original SVGs with their local paths into the 3MF " +"file?\n" "If you hit 'NO', all SVGs in the project will not be editable any more." msgstr "" -"Sei sicuro di voler memorizzare gli SVG originali con i loro percorsi locali " -"nel file 3MF?\n" +"Sei sicuro di voler memorizzare gli SVG originali con i loro percorsi locali nel " +"file 3MF?\n" "Se premi \"NO\", tutti gli SVG del progetto non saranno più modificabili." msgid "Private protection" msgstr "Protezione privata" msgid "Is the printer ready? Is the print sheet in place, empty and clean?" -msgstr "" -"La stampante è pronta? La piastra di stampa è in posizione, vuota e pulita?" +msgstr "La stampante è pronta? La piastra di stampa è in posizione, vuota e pulita?" msgid "Upload and Print" msgstr "Carica e Stampa" @@ -5884,8 +5859,8 @@ msgid "" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Stampa per oggetto: \n" -"Ti consigliamo di utilizzare la disposizione automatica per evitare " -"collisioni durante la stampa." +"Ti consigliamo di utilizzare la disposizione automatica per evitare collisioni " +"durante la stampa." msgid "Send G-code" msgstr "Invia G-code" @@ -5895,8 +5870,8 @@ msgstr "Manda alla stampante" msgid "Custom supports and color painting were removed before repairing." msgstr "" -"I supporti personalizzati e la pittura a colori sono stati rimossi prima " -"della riparazione." +"I supporti personalizzati e la pittura a colori sono stati rimossi prima della " +"riparazione." msgid "Optimize Rotation" msgstr "Ottimizza rotazione" @@ -5947,21 +5922,20 @@ msgid "Tips:" msgstr "Suggerimenti:" msgid "" -"\"Fix Model\" feature is currently only on Windows. Please repair the model " -"on Orca Slicer(windows) or CAD softwares." +"\"Fix Model\" feature is currently only on Windows. Please repair the model on " +"Orca Slicer(windows) or CAD softwares." msgstr "" -"La funzione \"Correggi modello\" è attualmente disponibile solo su Windows. " -"Si prega di riparare il modello su Orca Slicer (Windows) o software CAD." +"La funzione \"Correggi modello\" è attualmente disponibile solo su Windows. Si " +"prega di riparare il modello su Orca Slicer (Windows) o software CAD." #, c-format, boost-format msgid "" -"Plate% d: %s is not suggested to be used to print filament %s(%s). If you " -"still want to do this printing, please set this filament's bed temperature " -"to non zero." +"Plate% d: %s is not suggested to be used to print filament %s(%s). If you still " +"want to do this printing, please set this filament's bed temperature to non zero." msgstr "" -"Piatto% d: %s non è consigliato per l’utilizzo del filamento %s (%s). Se " -"desideri continuare, imposta la temperatura del piano di questo filamento su " -"un numero diverso da zero." +"Piatto% d: %s non è consigliato per l’utilizzo del filamento %s (%s). Se desideri " +"continuare, imposta la temperatura del piano di questo filamento su un numero " +"diverso da zero." msgid "Switching the language requires application restart.\n" msgstr "Il cambio lingua richiede il riavvio dell'applicazione.\n" @@ -6018,7 +5992,7 @@ msgid "Stealth Mode" msgstr "Modalità invisibile" msgid "Check for stable updates only" -msgstr "" +msgstr "Verifica solo la disponibilità di aggiornamenti stabili" msgid "Metric" msgstr "Metrico" @@ -6042,18 +6016,17 @@ msgid "Zoom to mouse position" msgstr "Zoom posizione del mouse" msgid "" -"Zoom in towards the mouse pointer's position in the 3D view, rather than the " -"2D window center." +"Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D " +"window center." msgstr "" -"Ingrandisci verso la posizione del puntatore del mouse nella vista 3D, " -"anziché verso il centro della finestra 2D." +"Ingrandisci verso la posizione del puntatore del mouse nella vista 3D, anziché " +"verso il centro della finestra 2D." msgid "Use free camera" msgstr "Usa l'inquadratura libera" msgid "If enabled, use free camera. If not enabled, use constrained camera." -msgstr "" -"Se attivo, usa la visuale libera. Se non attivo, usa la visuale vincolata." +msgstr "Se attivo, usa la visuale libera. Se non attivo, usa la visuale vincolata." msgid "Show splash screen" msgstr "Mostra splash screen" @@ -6068,8 +6041,7 @@ msgid "If enabled, useful hints are displayed at startup." msgstr "Se abilitato, all'avvio vengono visualizzati suggerimenti utili." msgid "Flushing volumes: Auto-calculate everytime the color changed." -msgstr "" -"Volumi di Spurgo: Calcola automaticamente ogni volta che il colore cambia." +msgstr "Volumi di Spurgo: Calcola automaticamente ogni volta che il colore cambia." msgid "If enabled, auto-calculate everytime the color changed." msgstr "Se abilitato, calcola automaticamente ogni volta che il colore cambia." @@ -6078,8 +6050,7 @@ msgid "Presets" msgstr "Preset" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "" -"Sincronizzazione automatica preset utente (stampante/filamento/processo)" +msgstr "Sincronizzazione automatica preset utente (stampante/filamento/processo)" msgid "User Sync" msgstr "User Sync" @@ -6101,8 +6072,7 @@ msgstr "Associare file .3mf a OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" msgstr "" -"Se abilitata, imposta OrcaSlicer come applicazione predefinita per aprire " -"\"\n" +"Se abilitata, imposta OrcaSlicer come applicazione predefinita per aprire \"\n" "\"i file .3mf." msgid "Associate .stl files to OrcaSlicer" @@ -6110,8 +6080,7 @@ msgstr "Associate .stl files to Orca Slicer" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" msgstr "" -"Se abilitata, imposta OrcaSlicer come applicazione predefinita per aprire " -"\"\n" +"Se abilitata, imposta OrcaSlicer come applicazione predefinita per aprire \"\n" "\"i file .stl." msgid "Associate .step/.stp files to OrcaSlicer" @@ -6119,8 +6088,7 @@ msgstr "Associate .step/.stp files to Orca Slicer" msgid "If enabled, sets OrcaSlicer as default application to open .step files" msgstr "" -"Se abilitata, imposta OrcaSlicer come applicazione predefinita per aprire " -"\"\n" +"Se abilitata, imposta OrcaSlicer come applicazione predefinita per aprire \"\n" "\"i file .step." msgid "Maximum recent projects" @@ -6138,11 +6106,10 @@ msgstr "Nessun avviso durante il caricamento di 3MF con codici G modificati" msgid "Auto-Backup" msgstr "Backup automatico" -msgid "" -"Backup your project periodically for restoring from the occasional crash." +msgid "Backup your project periodically for restoring from the occasional crash." msgstr "" -"Esegui periodicamente il backup del tuo progetto per facilitare il " -"ripristino dopo un crash occasionale." +"Esegui periodicamente il backup del tuo progetto per facilitare il ripristino " +"dopo un crash occasionale." msgid "every" msgstr "Ogni" @@ -6347,8 +6314,7 @@ msgstr "Vai alla pagina web di pubblicazione del modello" msgid "Note: The preparation may takes several minutes. Please be patiant." msgstr "" -"Nota: la preparazione può richiedere alcuni minuti. Si prega di avere " -"pazienza." +"Nota: la preparazione può richiedere alcuni minuti. Si prega di avere pazienza." msgid "Publish" msgstr "Pubblica" @@ -6396,8 +6362,7 @@ msgstr "Preset \"%1%\" esiste già." #, boost-format msgid "Preset \"%1%\" already exists and is incompatible with current printer." -msgstr "" -"Preset \"%1%\" esiste già ma è incompatibile con la stampante corrente." +msgstr "Preset \"%1%\" esiste già ma è incompatibile con la stampante corrente." msgid "Please note that saving action will replace this preset" msgstr "Tieni presente che il salvataggio sovrascriverà il preset corrente." @@ -6518,8 +6483,7 @@ msgstr "Connessione locale della stampante fallita; Si prega di riprovare." msgid "No login account, only printers in LAN mode are displayed" msgstr "" -"Nessun account di login, vengono visualizzate solo le stampanti in modalità " -"LAN" +"Nessun account di login, vengono visualizzate solo le stampanti in modalità LAN" msgid "Connecting to server" msgstr "Connessione in corso al server" @@ -6532,11 +6496,10 @@ msgstr "La sincronizzazione informazioni dispositivo è scaduta" msgid "Cannot send the print job when the printer is updating firmware" msgstr "" -"Impossibile inviare un lavoro di stampa mentre la stampante sta aggiornando " -"il firmware" +"Impossibile inviare un lavoro di stampa mentre la stampante sta aggiornando il " +"firmware" -msgid "" -"The printer is executing instructions. Please restart printing after it ends" +msgid "The printer is executing instructions. Please restart printing after it ends" msgstr "La stampante sta eseguendo le istruzioni. Riavvia la stampa al termine" msgid "The printer is busy on other print job" @@ -6544,37 +6507,37 @@ msgstr "La stampante è occupata con altro lavoro di stampa." #, c-format, boost-format msgid "" -"Filament %s exceeds the number of AMS slots. Please update the printer " -"firmware to support AMS slot assignment." +"Filament %s exceeds the number of AMS slots. Please update the printer firmware " +"to support AMS slot assignment." msgstr "" "Il filamento %s supera il numero di slot AMS. Aggiorna il firmware della " "stampante per supportare l'assegnazione degli slot AMS." msgid "" -"Filament exceeds the number of AMS slots. Please update the printer firmware " -"to support AMS slot assignment." +"Filament exceeds the number of AMS slots. Please update the printer firmware to " +"support AMS slot assignment." msgstr "" -"Il filamento supera il numero di slot AMS. Aggiorna il firmware della " -"stampante per supportare l'assegnazione degli slot AMS." +"Il filamento supera il numero di slot AMS. Aggiorna il firmware della stampante " +"per supportare l'assegnazione degli slot AMS." msgid "" -"Filaments to AMS slots mappings have been established. You can click a " -"filament above to change its mapping AMS slot" +"Filaments to AMS slots mappings have been established. You can click a filament " +"above to change its mapping AMS slot" msgstr "" -"Filaments to AMS slots mappings have been established. You can click a " -"filament above to change its mapping AMS slot" +"Filaments to AMS slots mappings have been established. You can click a filament " +"above to change its mapping AMS slot" msgid "" -"Please click each filament above to specify its mapping AMS slot before " -"sending the print job" +"Please click each filament above to specify its mapping AMS slot before sending " +"the print job" msgstr "" -"Fai clic su ciascun filamento in alto per specificare lo slot AMS di " -"mappatura prima di inviare il lavoro di stampa" +"Fai clic su ciascun filamento in alto per specificare lo slot AMS di mappatura " +"prima di inviare il lavoro di stampa" #, c-format, boost-format msgid "" -"Filament %s does not match the filament in AMS slot %s. Please update the " -"printer firmware to support AMS slot assignment." +"Filament %s does not match the filament in AMS slot %s. Please update the printer " +"firmware to support AMS slot assignment." msgstr "" "Il filamento %s non corrisponde al filamento nello slot AMS %s. Aggiorna il " "firmware della stampante per supportare l'assegnazione degli slot AMS." @@ -6583,15 +6546,14 @@ msgid "" "Filament does not match the filament in AMS slot. Please update the printer " "firmware to support AMS slot assignment." msgstr "" -"Il filamento non corrisponde al filamento nello slot AMS. Aggiorna il " -"firmware della stampante per supportare l'assegnazione degli slot AMS." +"Il filamento non corrisponde al filamento nello slot AMS. Aggiorna il firmware " +"della stampante per supportare l'assegnazione degli slot AMS." msgid "" -"The printer firmware only supports sequential mapping of filament => AMS " -"slot." +"The printer firmware only supports sequential mapping of filament => AMS slot." msgstr "" -"Il firmware della stampante supporta solo la mappatura sequenziale del " -"filamento => slot AMS." +"Il firmware della stampante supporta solo la mappatura sequenziale del filamento " +"=> slot AMS." msgid "An SD card needs to be inserted before printing." msgstr "È necessario inserire una scheda microSD prima di stampare." @@ -6604,8 +6566,7 @@ msgid "An SD card needs to be inserted to record timelapse." msgstr "È necessario inserire una scheda microSD per registrare un timelapse." msgid "" -"Cannot send the print job to a printer whose firmware is required to get " -"updated." +"Cannot send the print job to a printer whose firmware is required to get updated." msgstr "" "Impossibile inviare il lavoro di stampa a una stampante il cui firmware deve " "essere aggiornato." @@ -6620,11 +6581,10 @@ msgid "" "When enable spiral vase mode, machines with I3 structure will not generate " "timelapse videos." msgstr "" -"Quando si abilita la modalità vaso a spirale, le macchine con struttura I3 " -"non genereranno video timelapse." +"Quando si abilita la modalità vaso a spirale, le macchine con struttura I3 non " +"genereranno video timelapse." -msgid "" -"Timelapse is not supported because Print sequence is set to \"By object\"." +msgid "Timelapse is not supported because Print sequence is set to \"By object\"." msgstr "" "Timelapse non è supportato perché la sequenza di stampa è impostata su \"Per " "oggetto\"." @@ -6637,21 +6597,20 @@ msgstr "Controllare quanto segue:" msgid "" "The printer type selected when generating G-Code is not consistent with the " -"currently selected printer. It is recommended that you use the same printer " -"type for slicing." +"currently selected printer. It is recommended that you use the same printer type " +"for slicing." msgstr "" -"Il tipo di stampante selezionato durante la generazione del G-Code non è " -"coerente con la stampante attualmente selezionata. Si consiglia di " -"utilizzare lo stesso tipo di stampante per lo slicing." +"Il tipo di stampante selezionato durante la generazione del G-Code non è coerente " +"con la stampante attualmente selezionata. Si consiglia di utilizzare lo stesso " +"tipo di stampante per lo slicing." msgid "" -"There are some unknown filaments in the AMS mappings. Please check whether " -"they are the required filaments. If they are okay, press \"Confirm\" to " -"start printing." +"There are some unknown filaments in the AMS mappings. Please check whether they " +"are the required filaments. If they are okay, press \"Confirm\" to start printing." msgstr "" -"Ci sono alcuni filamenti sconosciuti nelle mappature AMS. Si prega di " -"verificare se sono i filamenti necessari. Se sono a posto, fai clic su " -"«Conferma» per iniziare a stampare." +"Ci sono alcuni filamenti sconosciuti nelle mappature AMS. Si prega di verificare " +"se sono i filamenti necessari. Se sono a posto, fai clic su «Conferma» per " +"iniziare a stampare." #, c-format, boost-format msgid "nozzle in preset: %s %s" @@ -6662,20 +6621,18 @@ msgid "nozzle memorized: %.1f %s" msgstr "ugello memorizzato: %.1f %s" msgid "" -"Your nozzle diameter in preset is not consistent with memorized nozzle " -"diameter. Did you change your nozzle lately?" +"Your nozzle diameter in preset is not consistent with memorized nozzle diameter. " +"Did you change your nozzle lately?" msgstr "" -"Il diametro dell'ugello preimpostato non è coerente con il diametro " -"dell'ugello memorizzato. Hai cambiato l'ugello ultimamente?" +"Il diametro dell'ugello preimpostato non è coerente con il diametro dell'ugello " +"memorizzato. Hai cambiato l'ugello ultimamente?" #, c-format, boost-format msgid "*Printing %s material with %s may cause nozzle damage" msgstr "*La stampa di materiale %s con %s può causare danni agli ugelli" -msgid "" -"Please click the confirm button if you still want to proceed with printing." -msgstr "" -"Fai clic sul pulsante di conferma se desideri continuare con la stampa." +msgid "Please click the confirm button if you still want to proceed with printing." +msgstr "Fai clic sul pulsante di conferma se desideri continuare con la stampa." msgid "Hardened Steel" msgstr "Acciaio temprato" @@ -6683,8 +6640,7 @@ msgstr "Acciaio temprato" msgid "Stainless Steel" msgstr "Acciaio inox" -msgid "" -"Connecting to the printer. Unable to cancel during the connection process." +msgid "Connecting to the printer. Unable to cancel during the connection process." msgstr "" "Collegamento alla stampante. Impossibile annullare durante il processo di " "connessione." @@ -6702,8 +6658,8 @@ msgid "" "Caution to use! Flow calibration on Textured PEI Plate may fail due to the " "scattered surface." msgstr "" -"Attenzione da usare! La calibrazione del flusso sulla piastra PEI " -"testurizzata può non riuscire a causa della superficie Rugosa." +"Attenzione da usare! La calibrazione del flusso sulla piastra PEI testurizzata " +"può non riuscire a causa della superficie Rugosa." msgid "Automatic flow calibration using Micro Lidar" msgstr "Calibrazione automatica del flusso tramite Micro Lidar" @@ -6715,13 +6671,12 @@ msgid "Send to Printer SD card" msgstr "Invia a microSD stampante" msgid "Cannot send the print task when the upgrade is in progress" -msgstr "" -"Impossibile inviare attività di stampa quando è in corso un aggiornamento" +msgstr "Impossibile inviare attività di stampa quando è in corso un aggiornamento" msgid "An SD card needs to be inserted before send to printer SD card." msgstr "" -"È necessario inserire una scheda MicroSD prima di inviare alla scheda SD " -"della stampante." +"È necessario inserire una scheda MicroSD prima di inviare alla scheda SD della " +"stampante." msgid "The printer is required to be in the same LAN as Orca Slicer." msgstr "La stampante deve essere sulla stessa LAN di Orca Slicer." @@ -6778,19 +6733,18 @@ msgid "Terms and Conditions" msgstr "Termini e condizioni" msgid "" -"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " -"device, please read the termsand conditions.By clicking to agree to use your " -"Bambu Lab device, you agree to abide by the Privacy Policyand Terms of " -"Use(collectively, the \"Terms\"). If you do not comply with or agree to the " -"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." +"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab device, " +"please read the termsand conditions.By clicking to agree to use your Bambu Lab " +"device, you agree to abide by the Privacy Policyand Terms of Use(collectively, " +"the \"Terms\"). If you do not comply with or agree to the Bambu Lab Privacy " +"Policy, please do not use Bambu Lab equipment and services." msgstr "" "Grazie per aver acquistato un dispositivo Bambu Lab. Prima di utilizzare il " -"dispositivo Bambu Lab, si prega di leggere i termini e le condizioni. " -"Facendo clic per accettare di utilizzare il tuo dispositivo Bambu Lab, " -"accetti di rispettare l'Informativa sulla privacy e le Condizioni d'uso " -"(collettivamente, i \"Termini\"). Se non rispetti o non accetti " -"l'Informativa sulla privacy di Bambu Lab, ti preghiamo di non utilizzare i " -"dispositivi e i servizi di Bambu Lab." +"dispositivo Bambu Lab, si prega di leggere i termini e le condizioni. Facendo " +"clic per accettare di utilizzare il tuo dispositivo Bambu Lab, accetti di " +"rispettare l'Informativa sulla privacy e le Condizioni d'uso (collettivamente, i " +"\"Termini\"). Se non rispetti o non accetti l'Informativa sulla privacy di Bambu " +"Lab, ti preghiamo di non utilizzare i dispositivi e i servizi di Bambu Lab." msgid "and" msgstr "e" @@ -6806,31 +6760,31 @@ msgstr "Dichiarazione del programma miglioramento dell'esperienza utente" #, c-format, boost-format msgid "" -"In the 3D Printing community, we learn from each other's successes and " -"failures to adjust our own slicing parameters and settings. %s follows the " -"same principle and uses machine learning to improve its performance from the " -"successes and failures of the vast number of prints by our users. We are " -"training %s to be smarter by feeding them the real-world data. If you are " -"willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will " -"not collect any Personal Data by which an individual can be identified " -"directly or indirectly, including without limitation names, addresses, " -"payment information, or phone numbers. By enabling this service, you agree " -"to these terms and the statement about Privacy Policy." +"In the 3D Printing community, we learn from each other's successes and failures " +"to adjust our own slicing parameters and settings. %s follows the same principle " +"and uses machine learning to improve its performance from the successes and " +"failures of the vast number of prints by our users. We are training %s to be " +"smarter by feeding them the real-world data. If you are willing, this service " +"will access information from your error logs and usage logs, which may include " +"information described in Privacy Policy. We will not collect any Personal Data " +"by which an individual can be identified directly or indirectly, including " +"without limitation names, addresses, payment information, or phone numbers. By " +"enabling this service, you agree to these terms and the statement about Privacy " +"Policy." msgstr "" -"Nella comunità della stampa 3D, impariamo dai successi e dagli insuccessi " -"degli altri per adattare i nostri parametri e impostazioni di slicing. %s " -"segue lo stesso principio e utilizza l'apprendimento automatico per " -"migliorare le sue prestazioni basandosi sui successi e sugli insuccessi di " -"un vasto numero di stampe effettuate dai nostri utenti. Stiamo addestrando " -"%s affinché diventi più intelligente alimentandolo con dati reali. Se sei " -"d'accordo, questo servizio accederà alle informazioni dai tuoi registri " -"degli errori e dai registri di utilizzo, che possono includere informazioni " -"descritte nell'Informativa sulla privacy. Non raccoglieremo alcun Dato " -"Personale con il quale un individuo possa essere identificato direttamente o " -"indirettamente, incluso, a titolo esemplificativo, nomi, indirizzi, " -"informazioni di pagamento o numeri di telefono. Abilitando questo servizio, " -"accetti questi termini e la dichiarazione sull'Informativa sulla privacy." +"Nella comunità della stampa 3D, impariamo dai successi e dagli insuccessi degli " +"altri per adattare i nostri parametri e impostazioni di slicing. %s segue lo " +"stesso principio e utilizza l'apprendimento automatico per migliorare le sue " +"prestazioni basandosi sui successi e sugli insuccessi di un vasto numero di " +"stampe effettuate dai nostri utenti. Stiamo addestrando %s affinché diventi più " +"intelligente alimentandolo con dati reali. Se sei d'accordo, questo servizio " +"accederà alle informazioni dai tuoi registri degli errori e dai registri di " +"utilizzo, che possono includere informazioni descritte nell'Informativa sulla " +"privacy. Non raccoglieremo alcun Dato Personale con il quale un individuo possa " +"essere identificato direttamente o indirettamente, incluso, a titolo " +"esemplificativo, nomi, indirizzi, informazioni di pagamento o numeri di telefono. " +"Abilitando questo servizio, accetti questi termini e la dichiarazione " +"sull'Informativa sulla privacy." msgid "Statement on User Experience Improvement Plan" msgstr "Dichiarazione del piano miglioramento dell'esperienza utente" @@ -6865,37 +6819,35 @@ msgid "Search in preset" msgstr "Cerca nel preset" msgid "Click to reset all settings to the last saved preset." -msgstr "" -"Clicca per ripristinare tutte le impostazioni dell'ultimo preset salvato." +msgstr "Clicca per ripristinare tutte le impostazioni dell'ultimo preset salvato." msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the " -"model without prime tower. Are you sure you want to disable prime tower?" +"Prime tower is required for smooth timeplase. There may be flaws on the model " +"without prime tower. Are you sure you want to disable prime tower?" msgstr "" -"È necessaria una Prime Tower per la modalità timeplase fluida. Potrebbero " -"esserci difetti sul modello senza una Prime Tower. Sei sicuro di voler " -"disabilitare la Prime Tower?" +"È necessaria una Prime Tower per la modalità timeplase fluida. Potrebbero esserci " +"difetti sul modello senza una Prime Tower. Sei sicuro di voler disabilitare la " +"Prime Tower?" msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the " -"model without prime tower. Do you want to enable prime tower?" +"Prime tower is required for smooth timelapse. There may be flaws on the model " +"without prime tower. Do you want to enable prime tower?" msgstr "" "È necessaria una Prime Tower per una modalità timelapse fluida. Potrebbero " -"esserci dei difetti sul modello senza Prime Tower. Vuoi abilitare la Prime " -"Tower?" +"esserci dei difetti sul modello senza Prime Tower. Vuoi abilitare la Prime Tower?" msgid "Still print by object?" msgstr "Stampare ancora per oggetto?" msgid "" -"We have added an experimental style \"Tree Slim\" that features smaller " -"support volume but weaker strength.\n" +"We have added an experimental style \"Tree Slim\" that features smaller support " +"volume but weaker strength.\n" "We recommend using it with: 0 interface layers, 0 top distance, 2 walls." msgstr "" -"Abbiamo aggiunto uno stile sperimentale \"Albero Slim\" che presenta un " -"volume di supporto più piccolo ma una resistenza più debole.\n" -"Si consiglia di utilizzarlo con: 0 layer interfaccia, 0 distanza dall'alto, " -"2 pareti." +"Abbiamo aggiunto uno stile sperimentale \"Albero Slim\" che presenta un volume di " +"supporto più piccolo ma una resistenza più debole.\n" +"Si consiglia di utilizzarlo con: 0 layer interfaccia, 0 distanza dall'alto, 2 " +"pareti." msgid "" "Change these settings automatically? \n" @@ -6908,36 +6860,38 @@ msgstr "" msgid "" "For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " -"settings: at least 2 interface layers, at least 0.1mm top z distance or " -"using support materials on interface." +"settings: at least 2 interface layers, at least 0.1mm top z distance or using " +"support materials on interface." msgstr "" -"Per gli stili \"Albero Strong\" e \"Albero ibrido\", si consigliano le " -"seguenti impostazioni: almeno 2 layer interfaccia, distanza z superiore di " -"almeno 0,1 mm o utilizzo di materiali di supporto sull'interfaccia." +"Per gli stili \"Albero Strong\" e \"Albero ibrido\", si consigliano le seguenti " +"impostazioni: almeno 2 layer interfaccia, distanza z superiore di almeno 0,1 mm o " +"utilizzo di materiali di supporto sull'interfaccia." msgid "" -"When using support material for the support interface, We recommend the " -"following settings:\n" -"0 top z distance, 0 interface spacing, concentric pattern and disable " -"independent support layer height" +"When using support material for the support interface, We recommend the following " +"settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable independent " +"support layer height" msgstr "" -"Quando si utilizza il materiale di supporto per l'interfaccia di supporto, " -"si consigliano le seguenti impostazioni:\n" -"0 distanza z superiore , 0 spaziatura interfaccia, trama concentrico e " -"disabilita altezza layer di supporto indipendente" +"Quando si utilizza il materiale di supporto per l'interfaccia di supporto, si " +"consigliano le seguenti impostazioni:\n" +"0 distanza z superiore , 0 spaziatura interfaccia, trama concentrico e disabilita " +"altezza layer di supporto indipendente" msgid "" "Layer height is too small.\n" "It will set to min_layer_height\n" msgstr "" +"L'altezza dello strato è troppo piccola.\n" +"Sarà impostato su min_layer_height\n" msgid "" -"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " -"height limits ,this may cause printing quality issues." +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height " +"limits ,this may cause printing quality issues." msgstr "" -"L'altezza dello strato supera il limite in Impostazioni stampante -> " -"Estrusore -> Limiti di altezza dello strato, ciò potrebbe causare problemi " -"di qualità di stampa." +"L'altezza dello strato supera il limite in Impostazioni stampante -> Estrusore -> " +"Limiti di altezza dello strato, ciò potrebbe causare problemi di qualità di " +"stampa." msgid "Adjust to the set range automatically? \n" msgstr "Regolare automaticamente l'intervallo impostato? \n" @@ -6949,15 +6903,15 @@ msgid "Ignore" msgstr "Ignora" msgid "" -"When recording timelapse without toolhead, it is recommended to add a " -"\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"When recording timelapse without toolhead, it is recommended to add a \"Timelapse " +"Wipe Tower\" \n" +"by right-click the empty position of build plate and choose \"Add Primitive\"-" +">\"Timelapse Wipe Tower\"." msgstr "" -"Quando si registra un timelapse senza testa di satmpa, si consiglia di " -"aggiungere un \"Timelapse Torre di pulizia\"\n" -"facendo clic con il pulsante destro del mouse sulla posizione vuota del " -"piatto e scegli \"Aggiungi primitiva\" ->\"Timelapse Torre di pulizia\"»." +"Quando si registra un timelapse senza testa di satmpa, si consiglia di aggiungere " +"un \"Timelapse Torre di pulizia\"\n" +"facendo clic con il pulsante destro del mouse sulla posizione vuota del piatto e " +"scegli \"Aggiungi primitiva\" ->\"Timelapse Torre di pulizia\"»." msgid "Line width" msgstr "Larghezza linea" @@ -6996,14 +6950,14 @@ msgid "Overhang speed" msgstr "Velocità di sbalzo" msgid "" -"This is the speed for various overhang degrees. Overhang degrees are " -"expressed as a percentage of line width. 0 speed means no slowing down for " -"the overhang degree range and wall speed is used" +"This is the speed for various overhang degrees. Overhang degrees are expressed as " +"a percentage of line width. 0 speed means no slowing down for the overhang degree " +"range and wall speed is used" msgstr "" -"È la velocità per vari gradi di sporgenza. I gradi di sporgenza sono " -"espressi come percentuale della larghezza della linea. Velocità 0 significa " -"che non c'è rallentamento per l'intervallo di gradi di sporgenza e viene " -"utilizzata la velocità della parete." +"È la velocità per vari gradi di sporgenza. I gradi di sporgenza sono espressi " +"come percentuale della larghezza della linea. Velocità 0 significa che non c'è " +"rallentamento per l'intervallo di gradi di sporgenza e viene utilizzata la " +"velocità della parete." msgid "Bridge" msgstr "Ponte" @@ -7050,20 +7004,19 @@ msgstr "Frequente" #, c-format, boost-format msgid "" "Following line %s contains reserved keywords.\n" -"Please remove it, or will beat G-code visualization and printing time " -"estimation." +"Please remove it, or will beat G-code visualization and printing time estimation." msgid_plural "" "Following lines %s contain reserved keywords.\n" "Please remove them, or will beat G-code visualization and printing time " "estimation." msgstr[0] "" "La riga seguente %s contiene parole chiave riservata.\n" -"Rimuovilo, altrimenti la visualizzazione G-code e la stima del tempo di " -"stampa verranno interrotte." +"Rimuovilo, altrimenti la visualizzazione G-code e la stima del tempo di stampa " +"verranno interrotte." msgstr[1] "" "Following lines %s contain reserved keywords.\n" -"Please remove them, or G-code visualization and print time estimation will " -"be broken." +"Please remove them, or G-code visualization and print time estimation will be " +"broken." msgid "Reserved keywords found" msgstr "Parole chiave riservate trovate" @@ -7101,8 +7054,8 @@ msgid "Cool plate" msgstr "Cool plate" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament " -"does not support to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament does not " +"support to print on the Cool Plate" msgstr "" "Temperatura del piano quando è installato il piatto Cool Plate. Il valore 0 " "significa che il filamento non supporta la stampa su piatto Cool Plate." @@ -7111,8 +7064,8 @@ msgid "Engineering plate" msgstr "Engineering plate" msgid "" -"Bed temperature when engineering plate is installed. Value 0 means the " -"filament does not support to print on the Engineering Plate" +"Bed temperature when engineering plate is installed. Value 0 means the filament " +"does not support to print on the Engineering Plate" msgstr "" "Temperatura del piano quando è installato il piatto Engineering. Il valore 0 " "significa che il filamento non supporta la stampa su piatto Engineering." @@ -7121,23 +7074,23 @@ msgid "Smooth PEI Plate / High Temp Plate" msgstr "Piastra PEI liscia / piastra ad alta temperatura" msgid "" -"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " -"Value 0 means the filament does not support to print on the Smooth PEI Plate/" -"High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. Value " +"0 means the filament does not support to print on the Smooth PEI Plate/High Temp " +"Plate" msgstr "" -"Temperatura del letto quando è installata la piastra PEI liscia/piastra ad " -"alta temperatura. Il valore 0 indica che il filamento non supporta la stampa " -"sulla piastra PEI liscia/piastra ad alta temperatura" +"Temperatura del letto quando è installata la piastra PEI liscia/piastra ad alta " +"temperatura. Il valore 0 indica che il filamento non supporta la stampa sulla " +"piastra PEI liscia/piastra ad alta temperatura" msgid "Textured PEI Plate" msgstr "Textured PEI Plate" msgid "" -"Bed temperature when Textured PEI Plate is installed. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the filament " +"does not support to print on the Textured PEI Plate" msgstr "" -"Temperatura del piano quando è installato il piatto Textured PEI. Il valore " -"0 significa che il filamento non è supportato sul piatto Textured PEI" +"Temperatura del piano quando è installato il piatto Textured PEI. Il valore 0 " +"significa che il filamento non è supportato sul piatto Textured PEI" msgid "Volumetric speed limitation" msgstr "Limitazione velocità volumetrica" @@ -7155,26 +7108,26 @@ msgid "Min fan speed threshold" msgstr "Soglia minima velocità della ventola" msgid "" -"Part cooling fan speed will start to run at min speed when the estimated " -"layer time is no longer than the layer time in setting. When layer time is " -"shorter than threshold, fan speed is interpolated between the minimum and " -"maximum fan speed according to layer printing time" +"Part cooling fan speed will start to run at min speed when the estimated layer " +"time is no longer than the layer time in setting. When layer time is shorter than " +"threshold, fan speed is interpolated between the minimum and maximum fan speed " +"according to layer printing time" msgstr "" -"La ventola di raffreddamento della parte funzionerà alla velocità minima " -"della ventola quando la durata stimata del layer è superiore al valore di " -"soglia. Quando il tempo del layer è inferiore alla soglia, la velocità della " -"ventola verrà interpolata tra la velocità minima e massima della ventola in " -"base al tempo di stampa a layer." +"La ventola di raffreddamento della parte funzionerà alla velocità minima della " +"ventola quando la durata stimata del layer è superiore al valore di soglia. " +"Quando il tempo del layer è inferiore alla soglia, la velocità della ventola " +"verrà interpolata tra la velocità minima e massima della ventola in base al tempo " +"di stampa a layer." msgid "Max fan speed threshold" msgstr "Soglia massima velocità della ventola" msgid "" -"Part cooling fan speed will be max when the estimated layer time is shorter " -"than the setting value" +"Part cooling fan speed will be max when the estimated layer time is shorter than " +"the setting value" msgstr "" -"La ventola di raffreddamento funzionerà alla massima velocità quando il " -"tempo layer stimato è inferiore al valore di soglia." +"La ventola di raffreddamento funzionerà alla massima velocità quando il tempo " +"layer stimato è inferiore al valore di soglia." msgid "Auxiliary part cooling fan" msgstr "Ventola di raffreddamento della parte ausiliaria" @@ -7312,8 +7265,8 @@ msgid "" "presets would be deleted if the printer is deleted." msgstr "" "%d Preimpostazione filamento (Filament Preset) e %d Process Preset ( Process " -"Preset sono collegate a questa stampante. Tali impostazioni predefinite " -"verranno eliminate se la stampante viene eliminata." +"Preset sono collegate a questa stampante. Tali impostazioni predefinite verranno " +"eliminate se la stampante viene eliminata." msgid "Presets inherited by other presets can not be deleted!" msgstr "I preset ereditati da altri preset non possono essere eliminati!" @@ -7335,8 +7288,8 @@ msgstr[1] "The following presets will be deleted too:" msgid "" "Are you sure to delete the selected preset? \n" -"If the preset corresponds to a filament currently in use on your printer, " -"please reset the filament information for that slot." +"If the preset corresponds to a filament currently in use on your printer, please " +"reset the filament information for that slot." msgstr "" "Sei sicuro di voler eliminare il preset selezionato? \n" "Se la preimpostazione corrisponde a un filamento attualmente in uso sulla " @@ -7358,8 +7311,7 @@ msgstr "" msgid "Click to drop current modify and reset to saved value." msgstr "" -"Fai clic per eliminare le modifiche correnti e ripristinare il valore " -"salvato." +"Fai clic per eliminare le modifiche correnti e ripristinare il valore salvato." msgid "Process Settings" msgstr "Impostazioni processo" @@ -7389,8 +7341,7 @@ msgid "Discard" msgstr "Cancella" msgid "Click the right mouse button to display the full text." -msgstr "" -"Clicca il pulsante destro del mouse per visualizzare il testo completo." +msgstr "Clicca il pulsante destro del mouse per visualizzare il testo completo." msgid "All changes will not be saved" msgstr "Nessuna modifica verrà salvata." @@ -7429,16 +7380,16 @@ msgstr "Preset \"%1%\" contiene modifiche non salvate:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it contains the " +"following unsaved changes:" msgstr "" -"Preset \"%1%\" non compatibile con il nuovo profilo della stampante e " -"contiene modifiche non salvate:" +"Preset \"%1%\" non compatibile con il nuovo profilo della stampante e contiene " +"modifiche non salvate:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it contains the " +"following unsaved changes:" msgstr "" "Preset \"%1%\" non compatibile con il nuovo profilo di processo e contiene " "modifiche non salvate:" @@ -7446,16 +7397,14 @@ msgstr "" #, boost-format msgid "" "You have changed some settings of preset \"%1%\". \n" -"Would you like to keep these changed settings (new value) after switching " -"preset?" +"Would you like to keep these changed settings (new value) after switching preset?" msgstr "" "Sono state modificate alcune impostazioni del preset \"%1%\". \n" "Vuoi mantenere le impostazioni (nuovo valore) dopo aver cambiato i preset?" msgid "" "You have changed some preset settings. \n" -"Would you like to keep these changed settings (new value) after switching " -"preset?" +"Would you like to keep these changed settings (new value) after switching preset?" msgstr "" "Sono stati modificati alcuni preset preimpostati. \n" "Vuoi mantenere le impostazioni (nuovo valore) dopo aver cambiato i preset?" @@ -7561,26 +7510,25 @@ msgstr "Personalizzazione del ramming" msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" +"extruder MM printer. Its purpose is to properly shape the end of the unloaded " +"filament so it does not prevent insertion of the new filament and can itself be " +"reinserted later. This phase is important and different materials can require " +"different extrusion speeds to get the good shape. For this reason, the extrusion " +"rates during ramming are adjustable.\n" "\n" -"This is an expert-level setting, incorrect adjustment will likely lead to " -"jams, extruder wheel grinding into filament etc." +"This is an expert-level setting, incorrect adjustment will likely lead to jams, " +"extruder wheel grinding into filament etc." msgstr "" -"Per Ramming si intende l'estrusione rapida appena prima di un cambio " -"strumento in una stampante MM con estrusore singolo. Il suo scopo è quello " -"di dare una forma corretta all'estremità del filamento scaricato, in modo " -"che non impedisca l'inserimento del nuovo filamento e possa essere " -"reinserito successivamente. Questa fase è importante e i diversi materiali " -"possono richiedere velocità di estrusione diverse per ottenere una buona " -"forma. Per questo motivo, le velocità di estrusione nella fase di ramming " -"sono regolabili.\n" +"Per Ramming si intende l'estrusione rapida appena prima di un cambio strumento in " +"una stampante MM con estrusore singolo. Il suo scopo è quello di dare una forma " +"corretta all'estremità del filamento scaricato, in modo che non impedisca " +"l'inserimento del nuovo filamento e possa essere reinserito successivamente. " +"Questa fase è importante e i diversi materiali possono richiedere velocità di " +"estrusione diverse per ottenere una buona forma. Per questo motivo, le velocità " +"di estrusione nella fase di ramming sono regolabili.\n" "\n" -"Si tratta di un'impostazione per esperti: una regolazione errata potrebbe " -"causare inceppamenti, la macinazione del filamento da parte dell'ingranaggio " +"Si tratta di un'impostazione per esperti: una regolazione errata potrebbe causare " +"inceppamenti, la macinazione del filamento da parte dell'ingranaggio " "dell'estrusore e così via." msgid "Total ramming time" @@ -7612,8 +7560,8 @@ msgid "" "changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" "Orca ricalcolava i volumi di spurgo ogni volta che il colore dei filamenti " -"cambiava. È possibile disabilitare il calcolo automatico nelle preferenze > " -"di Orca Slicer" +"cambiava. È possibile disabilitare il calcolo automatico nelle preferenze > di " +"Orca Slicer" msgid "Flushing volume (mm³) for each filament pair." msgstr "Volume di spurgo (mm³) per ogni coppia di filamento." @@ -7655,8 +7603,8 @@ msgstr "Login" msgid "The configuration package is changed in previous Config Guide" msgstr "" -"Il pacchetto di configurazione è stato modificato nella precedente Guida " -"alla configurazione" +"Il pacchetto di configurazione è stato modificato nella precedente Guida alla " +"configurazione" msgid "Configuration package changed" msgstr "Pacchetto di configurazione modificato" @@ -7681,8 +7629,7 @@ msgstr "Incolla dagli appunti" msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "" -"Mostra/nascondi la finestra di dialogo impostazioni dei dispositivi " -"3Dconnexion" +"Mostra/nascondi la finestra di dialogo impostazioni dei dispositivi 3Dconnexion" msgid "Switch table page" msgstr "Cambia pagina tabella" @@ -7712,13 +7659,13 @@ msgid "Shift+R" msgstr "Shift+R" msgid "" -"Auto orientates selected objects or all objects.If there are selected " -"objects, it just orientates the selected ones.Otherwise, it will orientates " -"all objects in the current disk." +"Auto orientates selected objects or all objects.If there are selected objects, it " +"just orientates the selected ones.Otherwise, it will orientates all objects in " +"the current disk." msgstr "" -"Questo orienta automaticamente gli oggetti selezionati o tutti gli oggetti. " -"Se ci sono oggetti selezionati, orienta solo quelli selezionati. Altrimenti, " -"orienterà tutti gli oggetti nel piatto corrente." +"Questo orienta automaticamente gli oggetti selezionati o tutti gli oggetti. Se ci " +"sono oggetti selezionati, orienta solo quelli selezionati. Altrimenti, orienterà " +"tutti gli oggetti nel piatto corrente." msgid "Shift+Tab" msgstr "Shift+Tab" @@ -7875,15 +7822,13 @@ msgstr "Eliminare oggetti, parti, modificatori " msgid "Select the object/part and press space to change the name" msgstr "" -"Seleziona l'oggetto/la parte e premi la barra spaziatrice per cambiare il " -"nome" +"Seleziona l'oggetto/la parte e premi la barra spaziatrice per cambiare il nome" msgid "Mouse click" msgstr "Clic del mouse" msgid "Select the object/part and mouse click to change the name" -msgstr "" -"Seleziona l'oggetto/la parte e fai clic con il mouse per modificare il nome" +msgstr "Seleziona l'oggetto/la parte e fai clic con il mouse per modificare il nome" msgid "Objects List" msgstr "Elenco oggetti" @@ -7895,8 +7840,7 @@ msgid "Vertical slider - Move active thumb Down" msgstr "Cursore di scorrimento verticale - Abbassa cursore attivo" msgid "Horizontal slider - Move active thumb Left" -msgstr "" -"Cursore di scorrimento orizzontale - Sposta a sinistra il cursore attivo" +msgstr "Cursore di scorrimento orizzontale - Sposta a sinistra il cursore attivo" msgid "Horizontal slider - Move active thumb Right" msgstr "Cursore di scorrimento orizzontale - Sposta a destra il cursore attivo" @@ -7923,11 +7867,9 @@ msgstr "Versione %s informazioni aggiornate:" msgid "Network plug-in update" msgstr "Aggiornamento del plug-in di rete" -msgid "" -"Click OK to update the Network plug-in when Orca Slicer launches next time." +msgid "Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" -"Clicca su OK per aggiornare il plug-in di rete al prossimo avvio di Bambu " -"Studio." +"Clicca su OK per aggiornare il plug-in di rete al prossimo avvio di Bambu Studio." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -7948,14 +7890,12 @@ msgstr "Conferma e aggiorna l'ugello" msgid "LAN Connection Failed (Sending print file)" msgstr "Connessione LAN fallita (invio del file di stampa)" -msgid "" -"Step 1, please confirm Orca Slicer and your printer are in the same LAN." -msgstr "" -"Step 1, conferma che Orca Slicer e la tua stampante siano sulla stessa LAN." +msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgstr "Step 1, conferma che Orca Slicer e la tua stampante siano sulla stessa LAN." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " -"on your printer, please correct them." +"Step 2, if the IP and Access Code below are different from the actual values on " +"your printer, please correct them." msgstr "" "Step 2, se l'IP e il codice di accesso riportati di seguito sono diversi dai " "valori effettivi sulla stampante, correggili." @@ -8009,7 +7949,7 @@ msgid "Idle" msgstr "Inattivo" msgid "Beta version" -msgstr "" +msgstr "Versione beta" msgid "Latest version" msgstr "Ultima versione" @@ -8024,8 +7964,8 @@ msgid "Updating successful" msgstr "Aggiornamento riuscito" msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not " -"turn off the power while the printer is updating." +"Are you sure you want to update? This will take about 10 minutes. Do not turn off " +"the power while the printer is updating." msgstr "" "Sei sicuro di voler aggiornare? Ci vorranno circa 10 minuti. Non spegnere " "l'alimentazione durante l'aggiornamento della stampante." @@ -8035,10 +7975,9 @@ msgid "" "continue. Do you want to update now? You can also update later from 'Upgrade " "firmware'." msgstr "" -"È stato rilevato un aggiornamento importante che deve essere eseguito prima " -"che la stampa possa continuare. Si desidera aggiornare ora? È possibile " -"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna firmware" -"\"." +"È stato rilevato un aggiornamento importante che deve essere eseguito prima che " +"la stampa possa continuare. Si desidera aggiornare ora? È possibile effettuare " +"l'aggiornamento anche in un secondo momento da \"Aggiorna firmware\"." msgid "" "The firmware version is abnormal. Repairing and updating are required before " @@ -8046,9 +7985,9 @@ msgid "" "update next time starting the studio." msgstr "" "La versione firmware è anomala. Prima di stampare, è necessario eseguire la " -"riparazione e l'aggiornamento. Si desidera aggiornare ora? È possibile " -"eseguire l'aggiornamento anche in un secondo momento sulla stampante o al " -"prossimo avvio di Orca Slicer." +"riparazione e l'aggiornamento. Si desidera aggiornare ora? È possibile eseguire " +"l'aggiornamento anche in un secondo momento sulla stampante o al prossimo avvio " +"di Orca Slicer." msgid "Extension Board" msgstr "Scheda di estensione" @@ -8106,8 +8045,7 @@ msgid "Copying of file %1% to %2% failed: %3%" msgstr "Copia del file %1% su %2% non riuscita: %3%" msgid "Need to check the unsaved changes before configuration updates." -msgstr "" -"Controllare le modifiche non salvate prima di aggiornare la configurazione." +msgstr "Controllare le modifiche non salvate prima di aggiornare la configurazione." msgid "Configuration package updated to " msgstr "Pacchetto di configurazione aggiornato a " @@ -8116,31 +8054,29 @@ msgid "Open G-code file:" msgstr "Apri un file G-code:" msgid "" -"One object has empty initial layer and can't be printed. Please Cut the " -"bottom or enable supports." +"One object has empty initial layer and can't be printed. Please Cut the bottom or " +"enable supports." msgstr "" "Un oggetto ha un livello iniziale vuoto e non può essere stampato. Taglia il " "fondo o abilita i supporti." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." -msgstr "" -"L'oggetto ha layer vuoti compresi tra %1% e %2% e non può essere stampato." +msgstr "L'oggetto ha layer vuoti compresi tra %1% e %2% e non può essere stampato." #, boost-format msgid "Object: %1%" msgstr "Oggetto: %1%" msgid "" -"Maybe parts of the object at these height are too thin, or the object has " -"faulty mesh" +"Maybe parts of the object at these height are too thin, or the object has faulty " +"mesh" msgstr "" "Le parti dell'oggetto a queste altezze potrebbero essere troppo sottili o " "l'oggetto potrebbe avere una mesh difettosa." msgid "No object can be printed. Maybe too small" -msgstr "" -"Non è possibile stampare alcun oggetto. Potrebbe essere troppo piccolo." +msgstr "Non è possibile stampare alcun oggetto. Potrebbe essere troppo piccolo." msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -8200,15 +8136,15 @@ msgstr "Multiplo" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "" -"Impossibile calcolare la larghezza della linea di %1%. Impossibile ottenere " -"il valore \"%2%\" " +"Impossibile calcolare la larghezza della linea di %1%. Impossibile ottenere il " +"valore \"%2%\" " msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height " -"and extrusion width" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height and " +"extrusion width" msgstr "" -"Spaziatura non valida fornita a Flow::with_spacing (), controlla l'altezza " -"del livello e la larghezza di estrusione" +"Spaziatura non valida fornita a Flow::with_spacing (), controlla l'altezza del " +"livello e la larghezza di estrusione" msgid "undefined error" msgstr "errore non definito" @@ -8304,11 +8240,10 @@ msgid "write callback failed" msgstr "scrittura callback fallita" #, boost-format -msgid "" -"%1% is too close to exclusion area, there may be collisions when printing." +msgid "%1% is too close to exclusion area, there may be collisions when printing." msgstr "" -"%1% è troppo vicino all'area di esclusione, potrebbero verificarsi " -"collisioni durante la stampa." +"%1% è troppo vicino all'area di esclusione, potrebbero verificarsi collisioni " +"durante la stampa." #, boost-format msgid "%1% is too close to others, and collisions may be caused." @@ -8320,8 +8255,8 @@ msgstr "%1% è troppo alto e si verificheranno collisioni." msgid " is too close to others, there may be collisions when printing." msgstr "" -" è troppo vicino agli altri; potrebbero verificarsi delle collisioni durante " -"la stampa." +" è troppo vicino agli altri; potrebbero verificarsi delle collisioni durante la " +"stampa." msgid " is too close to exclusion area, there may be collisions when printing." msgstr "" @@ -8335,31 +8270,29 @@ msgid " is too close to others, and collisions may be caused.\n" msgstr " è troppo vicino agli altri e possono verificarsi collisioni.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr "" -" è troppo vicino a un'area di esclusione e si verificheranno collisioni.\n" +msgstr " è troppo vicino a un'area di esclusione e si verificheranno collisioni.\n" msgid "" "Can not print multiple filaments which have large difference of temperature " -"together. Otherwise, the extruder and nozzle may be blocked or damaged " -"during printing" +"together. Otherwise, the extruder and nozzle may be blocked or damaged during " +"printing" msgstr "" -"Impossibile stampare filamenti che presentano grandi differenze di " -"temperatura insieme. In caso contrario, l'estrusore e il nozzle potrebbero " -"bloccarsi o danneggiarsi durante la stampa." +"Impossibile stampare filamenti che presentano grandi differenze di temperatura " +"insieme. In caso contrario, l'estrusore e il nozzle potrebbero bloccarsi o " +"danneggiarsi durante la stampa." msgid "No extrusions under current settings." msgstr "Nessuna estrusione con le impostazioni attuali." msgid "" -"Smooth mode of timelapse is not supported when \"by object\" sequence is " -"enabled." +"Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "" -"La modalità fluida del timelapse non è supportata quando è abilitata la " -"sequenza \"per oggetto\"." +"La modalità fluida del timelapse non è supportata quando è abilitata la sequenza " +"\"per oggetto\"." msgid "" -"Please select \"By object\" print sequence to print multiple objects in " -"spiral vase mode." +"Please select \"By object\" print sequence to print multiple objects in spiral " +"vase mode." msgstr "" "Seleziona la sequenza di stampa \"Per oggetto\" per stampare più oggetti in " "modalità vaso a spirale." @@ -8377,38 +8310,37 @@ msgstr "L'oggetto %1% supera l'altezza massima del volume di stampa." #, boost-format msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds " -"the maximum build volume height." +"While the object %1% itself fits the build volume, its last layer exceeds the " +"maximum build volume height." msgstr "" -"Sebbene l'oggetto %1% rientri nel volume di stampa, il suo ultimo layer " -"supera l'altezza massima." +"Sebbene l'oggetto %1% rientri nel volume di stampa, il suo ultimo layer supera " +"l'altezza massima." msgid "" -"You might want to reduce the size of your model or change current print " -"settings and retry." +"You might want to reduce the size of your model or change current print settings " +"and retry." msgstr "" -"È possibile ridurre le dimensioni del modello o modificare le impostazioni " -"di stampa correnti e riprovare." +"È possibile ridurre le dimensioni del modello o modificare le impostazioni di " +"stampa correnti e riprovare." msgid "Variable layer height is not supported with Organic supports." msgstr "Layer ad altezza variabile non è compatibile con i Supporti Organici." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters is not allowed when " +"prime tower is enabled." msgstr "" -"Diametri degli ugelli diversi e diametri di filamento diversi non sono " -"consentiti quando la torre Prime è abilitata." +"Diametri degli ugelli diversi e diametri di filamento diversi non sono consentiti " +"quando la torre Prime è abilitata." msgid "" -"The Wipe Tower is currently only supported with the relative extruder " -"addressing (use_relative_e_distances=1)." +"The Wipe Tower is currently only supported with the relative extruder addressing " +"(use_relative_e_distances=1)." msgstr "" -"Attualmente la Torre di pulitura è supportata solo con l'indirizzamento " -"relativo dell'estrusore (use_relative_e_distances = 1)." +"Attualmente la Torre di pulitura è supportata solo con l'indirizzamento relativo " +"dell'estrusore (use_relative_e_distances = 1)." -msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +msgid "Ooze prevention is currently not supported with the prime tower enabled." msgstr "" "La prevenzione delle perdite (ooze prevention) attualmente non è supportata " "quando è abilitata la torre di priming." @@ -8417,49 +8349,47 @@ msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " "RepRapFirmware and Repetier G-code flavors." msgstr "" -"La torre di spurgo è attualmente supportata solo per le versioni Marlin, " -"RepRap/Sprinter, RepRapFirmware e Repetier G-code." +"La torre di spurgo è attualmente supportata solo per le versioni Marlin, RepRap/" +"Sprinter, RepRapFirmware e Repetier G-code." msgid "The prime tower is not supported in \"By object\" print." msgstr "La Prime Tower non è supportata nella stampa \"Per oggetto\"." msgid "" -"The prime tower is not supported when adaptive layer height is on. It " -"requires that all objects have the same layer height." +"The prime tower is not supported when adaptive layer height is on. It requires " +"that all objects have the same layer height." msgstr "" -"La Prime Tower non è supportata quando è attivo Layer adattativi. Richiede " -"che tutti gli oggetti abbiano la stessa altezza layer." +"La Prime Tower non è supportata quando è attivo Layer adattativi. Richiede che " +"tutti gli oggetti abbiano la stessa altezza layer." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" -"La Prime Tower richiede che il \"gap supporto\" sia un multiplo dell'altezza " -"del layer." +"La Prime Tower richiede che il \"gap supporto\" sia un multiplo dell'altezza del " +"layer." msgid "The prime tower requires that all objects have the same layer heights" msgstr "" -"La Prime Tower richiede che tutti gli oggetti abbiano la stessa altezza " -"layer." +"La Prime Tower richiede che tutti gli oggetti abbiano la stessa altezza layer." msgid "" -"The prime tower requires that all objects are printed over the same number " -"of raft layers" +"The prime tower requires that all objects are printed over the same number of " +"raft layers" msgstr "" -"La Prime Tower richiede che tutti gli oggetti siano stampati sullo stesso " -"numero di layers del raft." +"La Prime Tower richiede che tutti gli oggetti siano stampati sullo stesso numero " +"di layers del raft." msgid "" -"The prime tower requires that all objects are sliced with the same layer " -"heights." +"The prime tower requires that all objects are sliced with the same layer heights." msgstr "" "La Prime Tower richiede che tutti gli oggetti siano elaborati con la stessa " "altezza layer." msgid "" -"The prime tower is only supported if all objects have the same variable " -"layer height" +"The prime tower is only supported if all objects have the same variable layer " +"height" msgstr "" -"La Prime Tower è supportata solo se tutti gli oggetti hanno la stessa " -"altezza layer adattativi." +"La Prime Tower è supportata solo se tutti gli oggetti hanno la stessa altezza " +"layer adattativi." msgid "Too small line width" msgstr "Larghezza linea troppo piccola" @@ -8467,8 +8397,7 @@ msgstr "Larghezza linea troppo piccola" msgid "Too large line width" msgstr "Larghezza linea troppo grande" -msgid "" -"The prime tower requires that support has the same layer height with object." +msgid "The prime tower requires that support has the same layer height with object." msgstr "" "La Prime Tower richiede che il supporto abbia la stessa altezza layer " "dell'oggetto." @@ -8484,15 +8413,15 @@ msgid "" "Organic support branch diameter must not be smaller than 2x support material " "extrusion width." msgstr "" -"Il diametro della ramificazione del supporto organico non deve essere minore " -"di 2 volte rispetto alla larghezza dell'estrusione del materiale di supporto." +"Il diametro della ramificazione del supporto organico non deve essere minore di 2 " +"volte rispetto alla larghezza dell'estrusione del materiale di supporto." msgid "" "Organic support branch diameter must not be smaller than support tree tip " "diameter." msgstr "" -"Il diametro della ramificazione organica non deve essere inferiore al " -"diametro della punta del supporto ad albero." +"Il diametro della ramificazione organica non deve essere inferiore al diametro " +"della punta del supporto ad albero." msgid "" "Support enforcers are used but support is not enabled. Please enable support." @@ -8504,24 +8433,23 @@ msgid "Layer height cannot exceed nozzle diameter" msgstr "L'altezza del layer non può superare il diametro del nozzle." msgid "" -"Relative extruder addressing requires resetting the extruder position at " -"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " -"layer_gcode." +"Relative extruder addressing requires resetting the extruder position at each " +"layer to prevent loss of floating point accuracy. Add \"G92 E0\" to layer_gcode." msgstr "" "L'indirizzamento relativo dell'estrusore richiede la reimpostazione della " -"posizione dell'estrusore ad ogni strato per evitare la perdita di precisione " -"in virgola mobile. Aggiungi \"G92 E0\" a layer_gcode." +"posizione dell'estrusore ad ogni strato per evitare la perdita di precisione in " +"virgola mobile. Aggiungi \"G92 E0\" a layer_gcode." msgid "" -"\"G92 E0\" was found in before_layer_gcode, which is incompatible with " -"absolute extruder addressing." +"\"G92 E0\" was found in before_layer_gcode, which is incompatible with absolute " +"extruder addressing." msgstr "" "\"G92 E0\" trovato in before_layer_gcode, che è incompatibile con " "l'indirizzamento assoluto dell'estrusore." msgid "" -"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " -"extruder addressing." +"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute extruder " +"addressing." msgstr "" "\"G92 E0\" trovato in layer_gcode, che è incompatibile con l'indirizzamento " "assoluto dell'estrusore." @@ -8549,14 +8477,14 @@ msgid "Bed exclude area" msgstr "Zona piano esclusa" msgid "" -"Unprintable area in XY plane. For example, X1 Series printers use the front " -"left corner to cut filament during filament change. The area is expressed as " -"polygon by points in following format: \"XxY, XxY, ...\"" +"Unprintable area in XY plane. For example, X1 Series printers use the front left " +"corner to cut filament during filament change. The area is expressed as polygon " +"by points in following format: \"XxY, XxY, ...\"" msgstr "" "Area non stampabile nel piano XY. Ad esempio, le stampanti della serie X1 " "utilizzano l'angolo anteriore sinistro per tagliare il filamento durante il " -"cambio filamento. L'area è espressa come poligono di punti nel seguente " -"formato: \"XxY, XxY, ...\"" +"cambio filamento. L'area è espressa come poligono di punti nel seguente formato: " +"\"XxY, XxY, ...\"" msgid "Bed custom texture" msgstr "Texture piano personalizzata" @@ -8568,8 +8496,7 @@ msgid "Elephant foot compensation" msgstr "Compensazione zampa d'elefante" msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot " -"effect" +"Shrink the initial layer on build plate to compensate for elephant foot effect" msgstr "" "Questo restringe il primo layer sulla piatto per compensare l'effetto zampa " "d'elefante." @@ -8578,41 +8505,38 @@ msgid "Elephant foot compensation layers" msgstr "Layer di compensazione del piede elefante" msgid "" -"The number of layers on which the elephant foot compensation will be active. " -"The first layer will be shrunk by the elephant foot compensation value, then " -"the next layers will be linearly shrunk less, up to the layer indicated by " -"this value." +"The number of layers on which the elephant foot compensation will be active. The " +"first layer will be shrunk by the elephant foot compensation value, then the next " +"layers will be linearly shrunk less, up to the layer indicated by this value." msgstr "" -"Il numero di strati su cui sarà attivo la compensazione del piede degli " -"elefanti. Il primo strato verrà ridotto dal valore di compensazione del " -"piede degli elefanti, quindi gli strati successivi saranno ridotti in modo " -"linearmente ridotto, fino allo strato indicato da questo valore." +"Il numero di strati su cui sarà attivo la compensazione del piede degli elefanti. " +"Il primo strato verrà ridotto dal valore di compensazione del piede degli " +"elefanti, quindi gli strati successivi saranno ridotti in modo linearmente " +"ridotto, fino allo strato indicato da questo valore." msgid "layers" msgstr "layer" msgid "" -"Slicing height for each layer. Smaller layer height means more accurate and " -"more printing time" +"Slicing height for each layer. Smaller layer height means more accurate and more " +"printing time" msgstr "" -"Questa è l'altezza di ogni layer. Le altezze dei layers inferiori offrono " -"una maggiore precisione ma tempi di stampa più lunghi." +"Questa è l'altezza di ogni layer. Le altezze dei layers inferiori offrono una " +"maggiore precisione ma tempi di stampa più lunghi." msgid "Printable height" msgstr "Altezza di stampa" msgid "Maximum printable height which is limited by mechanism of printer" msgstr "" -"È l'altezza massima stampabile, limitata dall'altezza dell'area di " -"costruzione." +"È l'altezza massima stampabile, limitata dall'altezza dell'area di costruzione." msgid "Preferred orientation" msgstr "Orientamento preferito" msgid "Automatically orient stls on the Z-axis upon initial import" msgstr "" -"Orienta automaticamente gli stl sull'asse Z al momento dell'importazione " -"iniziale" +"Orienta automaticamente gli stl sull'asse Z al momento dell'importazione iniziale" msgid "Printer preset names" msgstr "Nomi dei preset della stampante" @@ -8622,25 +8546,24 @@ msgstr "Nome host, IP o URL" msgid "" "Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"the hostname, IP address or URL of the printer host instance. Print host behind " +"HAProxy with basic auth enabled can be accessed by putting the user name and " +"password into the URL in the following format: https://username:password@your-" +"octopi-address/" msgstr "" "Orca Slicer può caricare file di G-code su un host di stampa. Questo campo deve " -"contenere il nome dell'host, l'indirizzo IP o l'URL dell'istanza dell'host " -"di stampa. L'host di stampa dietro HAProxy con l'autenticazione di base " -"abilitata è accessibile inserendo il nome utente e la password nell'URL nel " -"seguente formato: https://username:password@your-octopi-address/" +"contenere il nome dell'host, l'indirizzo IP o l'URL dell'istanza dell'host di " +"stampa. L'host di stampa dietro HAProxy con l'autenticazione di base abilitata è " +"accessibile inserendo il nome utente e la password nell'URL nel seguente formato: " +"https://username:password@your-octopi-address/" msgid "Device UI" msgstr "Interfaccia utente del dispositivo" -msgid "" -"Specify the URL of your device user interface if it's not same as print_host" +msgid "Specify the URL of your device user interface if it's not same as print_host" msgstr "" -"Specificare l'URL dell'interfaccia utente del dispositivo se non corrisponde " -"a print_host" +"Specificare l'URL dell'interfaccia utente del dispositivo se non corrisponde a " +"print_host" msgid "API Key / Password" msgstr "Chiave API / Password" @@ -8659,9 +8582,8 @@ msgid "HTTPS CA File" msgstr "File CA HTTPS" msgid "" -"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " -"in crt/pem format. If left blank, the default OS CA certificate repository " -"is used." +"Custom CA certificate file can be specified for HTTPS OctoPrint connections, in " +"crt/pem format. If left blank, the default OS CA certificate repository is used." msgstr "" "È possibile specificare un file di certificato CA personalizzato per le " "connessioni HTTPS di OctoPrint, in formato crt/pem. Se lasciato vuoto, viene " @@ -8682,8 +8604,8 @@ msgid "" "certificates if connection fails." msgstr "" "Ignora i controlli di revoca dei certificati HTTPS in caso di punti di " -"distribuzione mancanti o offline. Si potrebbe voler abilitare questa opzione " -"per i certificati autofirmati se la connessione fallisce." +"distribuzione mancanti o offline. Si potrebbe voler abilitare questa opzione per " +"i certificati autofirmati se la connessione fallisce." msgid "Names of presets related to the physical printer" msgstr "Nomi dei preset relativi alla stampante" @@ -8709,16 +8631,16 @@ msgid "Avoid crossing wall - Max detour length" msgstr "Evitare di attraversare le pareti - Lunghezza massima della deviazione" msgid "" -"Maximum detour distance for avoiding crossing wall. Don't detour if the " -"detour distance is large than this value. Detour length could be specified " -"either as an absolute value or as percentage (for example 50%) of a direct " -"travel path. Zero to disable" +"Maximum detour distance for avoiding crossing wall. Don't detour if the detour " +"distance is large than this value. Detour length could be specified either as an " +"absolute value or as percentage (for example 50%) of a direct travel path. Zero " +"to disable" msgstr "" "Distanza massima di deviazione per evitare di attraversare la parete: la " -"stampante non eseguirà alcuna deviazione se la distanza di deviazione è " -"maggiore di questo valore. La lunghezza della deviazione può essere " -"specificata come valore assoluto o come percentuale (ad esempio 50%) di uno " -"spostamento. Un valore pari a 0 lo disabiliterà." +"stampante non eseguirà alcuna deviazione se la distanza di deviazione è maggiore " +"di questo valore. La lunghezza della deviazione può essere specificata come " +"valore assoluto o come percentuale (ad esempio 50%) di uno spostamento. Un valore " +"pari a 0 lo disabiliterà." msgid "mm or %" msgstr "mm o %" @@ -8727,36 +8649,35 @@ msgid "Other layers" msgstr "Altri layer" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Cool Plate" msgstr "" -"Questa è la temperatura del piano per i layer (tranne il primo). Un valore " -"pari a 0 indica che il filamento non supporta la stampa sul Cool Plate." +"Questa è la temperatura del piano per i layer (tranne il primo). Un valore pari a " +"0 indica che il filamento non supporta la stampa sul Cool Plate." msgid "°C" msgstr "°C" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Engineering Plate" msgstr "" -"Questa è la temperatura del piano per i layer (tranne il primo). Un valore " -"pari a 0 indica che il filamento non supporta la stampa su piatto " -"Engineering." +"Questa è la temperatura del piano per i layer (tranne il primo). Un valore pari a " +"0 indica che il filamento non supporta la stampa su piatto Engineering." msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the High Temp Plate" msgstr "" -"Questa è la temperatura del piano per i layer (tranne il primo). Un valore " -"pari a 0 indica che il filamento non supporta la stampa sul High Temp." +"Questa è la temperatura del piano per i layer (tranne il primo). Un valore pari a " +"0 indica che il filamento non supporta la stampa sul High Temp." msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Textured PEI Plate" msgstr "" -"Temperatura del piano dopo il primo layer. Il valore 0 significa che il " -"filamento non supportata la stampa su piatto Textured PEI." +"Temperatura del piano dopo il primo layer. Il valore 0 significa che il filamento " +"non supportata la stampa su piatto Textured PEI." msgid "Initial layer" msgstr "Primo layer" @@ -8765,29 +8686,29 @@ msgid "Initial layer bed temperature" msgstr "Temperatura del piano per il primo layer" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Cool Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support " +"to print on the Cool Plate" msgstr "" -"Questa è la temperatura del piatto del primo layer. Un valore pari a 0 " -"indica che il filamento non supporta la stampa sul piatto Cool Plate." +"Questa è la temperatura del piatto del primo layer. Un valore pari a 0 indica che " +"il filamento non supporta la stampa sul piatto Cool Plate." msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Engineering Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support " +"to print on the Engineering Plate" msgstr "" "Temperatura del piano quando è installato il piatto Cool Plate. Il valore 0 " "significa che il filamento non supporta la stampa su piatto Engineering." msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the High Temp Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support " +"to print on the High Temp Plate" msgstr "" -"Questa è la temperatura del piano del primo layer. Un valore pari a 0 indica " -"che il filamento non supporta la stampa sul piatto High Temp." +"Questa è la temperatura del piano del primo layer. Un valore pari a 0 indica che " +"il filamento non supporta la stampa sul piatto High Temp." msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Textured PEI Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support " +"to print on the Textured PEI Plate" msgstr "" "La temperatura del piano del primo layer a 0 indica che il filamento non è " "supportato sul piatto Textured PEI." @@ -8805,21 +8726,19 @@ msgid "First layer print sequence" msgstr "Sequenza di stampa del primo strato" msgid "This G-code is inserted at every layer change before lifting z" -msgstr "" -"Questo G-code viene inserito ad ogni cambio layer prima del sollevamento z." +msgstr "Questo G-code viene inserito ad ogni cambio layer prima del sollevamento z." msgid "Bottom shell layers" msgstr "Layer guscio inferiore" msgid "" -"This is the number of solid layers of bottom shell, including the bottom " -"surface layer. When the thickness calculated by this value is thinner than " -"bottom shell thickness, the bottom shell layers will be increased" +"This is the number of solid layers of bottom shell, including the bottom surface " +"layer. When the thickness calculated by this value is thinner than bottom shell " +"thickness, the bottom shell layers will be increased" msgstr "" -"È il numero di layers solidi del guscio inferiore, compreso Il layer " -"superficiale inferiore. Se lo spessore calcolato da questo valore è più " -"sottile dello spessore del guscio inferiore, i layers del guscio inferiore " -"verranno aumentati." +"È il numero di layers solidi del guscio inferiore, compreso Il layer superficiale " +"inferiore. Se lo spessore calcolato da questo valore è più sottile dello spessore " +"del guscio inferiore, i layers del guscio inferiore verranno aumentati." msgid "Bottom shell thickness" msgstr "Spessore del guscio inferiore" @@ -8827,39 +8746,39 @@ msgstr "Spessore del guscio inferiore" msgid "" "The number of bottom solid layers is increased when slicing if the thickness " "calculated by bottom shell layers is thinner than this value. This can avoid " -"having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of bottom shell is absolutely determained by " -"bottom shell layers" +"having too thin shell when layer height is small. 0 means that this setting is " +"disabled and thickness of bottom shell is absolutely determained by bottom shell " +"layers" msgstr "" "Il numero di layers solidi inferiori aumenta durante l'elaborazione se lo " "spessore calcolato dei layers del guscio inferiore è più sottile di questo " -"valore. Questo può evitare di avere un guscio troppo sottile quando " -"l'altezza layer è ridotta. 0 significa che questa impostazione è " -"disabilitata e lo spessore del guscio inferiore è determinato semplicemente " -"dal numero di layers del guscio inferiore." +"valore. Questo può evitare di avere un guscio troppo sottile quando l'altezza " +"layer è ridotta. 0 significa che questa impostazione è disabilitata e lo spessore " +"del guscio inferiore è determinato semplicemente dal numero di layers del guscio " +"inferiore." msgid "Force cooling for overhang and bridge" msgstr "Forzare il raffreddamento per sbalzi e ponti" msgid "" -"Enable this option to optimize part cooling fan speed for overhang and " -"bridge to get better cooling" +"Enable this option to optimize part cooling fan speed for overhang and bridge to " +"get better cooling" msgstr "" "Abilita questa opzione per ottimizzare la velocità della ventola di " -"raffreddamento degli oggetti per sporgenze e ponti per ottenere un " -"raffreddamento migliore." +"raffreddamento degli oggetti per sporgenze e ponti per ottenere un raffreddamento " +"migliore." msgid "Fan speed for overhang" msgstr "Velocità della ventola per le sporgenze" msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang " -"wall which has large overhang degree. Forcing cooling for overhang and " -"bridge can get better quality for these part" +"Force part cooling fan to be this speed when printing bridge or overhang wall " +"which has large overhang degree. Forcing cooling for overhang and bridge can get " +"better quality for these part" msgstr "" -"Force part cooling fan to be this speed when printing bridges or overhang " -"walls which have a large overhang degree. Forcing cooling for overhangs and " -"bridges can achieve better quality for these parts." +"Force part cooling fan to be this speed when printing bridges or overhang walls " +"which have a large overhang degree. Forcing cooling for overhangs and bridges can " +"achieve better quality for these parts." msgid "Cooling overhang threshold" msgstr "Soglia di sbalzo per il raffreddamento" @@ -8867,87 +8786,86 @@ msgstr "Soglia di sbalzo per il raffreddamento" #, c-format msgid "" "Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width " -"of the line without support from lower layer. 0% means forcing cooling for " -"all outer wall no matter how much overhang degree" +"exceeds this value. Expressed as percentage which indicides how much width of the " +"line without support from lower layer. 0% means forcing cooling for all outer " +"wall no matter how much overhang degree" msgstr "" -"Forza la ventola di raffreddamento a una velocità specifica quando il grado " -"di sporgenza della parte stampata supera questo valore. Questo valore è " -"espresso in percentuale e indica la larghezza della linea senza il supporto " -"dei layer. 0%% significa forzare il raffreddamento per tutta la parete " -"esterna, indipendentemente dal grado di sporgenza." +"Forza la ventola di raffreddamento a una velocità specifica quando il grado di " +"sporgenza della parte stampata supera questo valore. Questo valore è espresso in " +"percentuale e indica la larghezza della linea senza il supporto dei layer. 0%% " +"significa forzare il raffreddamento per tutta la parete esterna, " +"indipendentemente dal grado di sporgenza." msgid "Bridge infill direction" msgstr "Direzione di riempimento del ponte" msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for " -"external bridges. Use 180°for zero angle." +"Bridging angle override. If left to zero, the bridging angle will be calculated " +"automatically. Otherwise the provided angle will be used for external bridges. " +"Use 180°for zero angle." msgstr "" "Sovrascrivere l'angolo del Bridge. Il valore 0 significa che l'angolo di " -"collegamento verrà calcolato automaticamente. Altrimenti l'angolo fornito " -"verrà utilizzato per i Bridge esterni. Usa 180° per un angolo zero." +"collegamento verrà calcolato automaticamente. Altrimenti l'angolo fornito verrà " +"utilizzato per i Bridge esterni. Usa 180° per un angolo zero." msgid "Bridge density" msgstr "Densità del ponte" msgid "Density of external bridges. 100% means solid bridge. Default is 100%." msgstr "" -"Densità di ponti esterni. 100% significa solido ponte. L'impostazione " -"predefinita è al 100%." +"Densità di ponti esterni. 100% significa solido ponte. L'impostazione predefinita " +"è al 100%." msgid "Bridge flow ratio" msgstr "Flusso del Bridge" msgid "" -"Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"Decrease this value slightly(for example 0.9) to reduce the amount of material " +"for bridge, to improve sag" msgstr "" -"Diminuire leggermente questo valore (ad esempio 0.9) per ridurre la quantità " -"di materiale per il ponte e migliorare l'abbassamento dello stesso" +"Diminuire leggermente questo valore (ad esempio 0.9) per ridurre la quantità di " +"materiale per il ponte e migliorare l'abbassamento dello stesso" msgid "Internal bridge flow ratio" msgstr "Rapporto Flusso del ponte interno" msgid "" -"This value governs the thickness of the internal bridge layer. This is the " -"first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"This value governs the thickness of the internal bridge layer. This is the first " +"layer over sparse infill. Decrease this value slightly (for example 0.9) to " +"improve surface quality over sparse infill." msgstr "" "Questo valore governa lo spessore dello strato di ponte interno. Questo è il " -"primo strato sopra il riempimento sparso. Riduci leggermente questo valore " -"(ad esempio 0.9) per migliorare la qualità della superficie sopra il " -"riempimento sparso." +"primo strato sopra il riempimento sparso. Riduci leggermente questo valore (ad " +"esempio 0.9) per migliorare la qualità della superficie sopra il riempimento " +"sparso." msgid "Top surface flow ratio" msgstr "Rapporto di portata superficiale superiore" msgid "" -"This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"This factor affects the amount of material for top solid infill. You can decrease " +"it slightly to have smooth surface finish" msgstr "" -"Questo fattore influisce sulla quantità di materiale per il riempimento " -"solido superiore. Puoi diminuirlo leggermente per avere una finitura " -"superficiale liscia" +"Questo fattore influisce sulla quantità di materiale per il riempimento solido " +"superiore. Puoi diminuirlo leggermente per avere una finitura superficiale liscia" msgid "Bottom surface flow ratio" msgstr "Rapporto di flusso della superficie inferiore" msgid "This factor affects the amount of material for bottom solid infill" msgstr "" -"Questo fattore influisce sulla quantità di materiale per il riempimento " -"solido inferiore" +"Questo fattore influisce sulla quantità di materiale per il riempimento solido " +"inferiore" msgid "Precise wall(experimental)" msgstr "Parete precisa (sperimentale)" msgid "" -"Improve shell precision by adjusting outer wall spacing. This also improves " -"layer consistency." +"Improve shell precision by adjusting outer wall spacing. This also improves layer " +"consistency." msgstr "" -"Migliora la precisione del guscio regolando la spaziatura delle pareti " -"esterne. Questo migliora anche la consistenza degli strati." +"Migliora la precisione del guscio regolando la spaziatura delle pareti esterne. " +"Questo migliora anche la consistenza degli strati." msgid "Only one wall on top surfaces" msgstr "Solo una parete sulle superfici superiori" @@ -8964,31 +8882,29 @@ msgstr "Soglia a una parete" #, c-format, boost-format msgid "" -"If a top surface has to be printed and it's partially covered by another " -"layer, it won't be considered at a top layer where its width is below this " -"value. This can be useful to not let the 'one perimeter on top' trigger on " -"surface that should be covered only by perimeters. This value can be a mm or " -"a % of the perimeter extrusion width.\n" -"Warning: If enabled, artifacts can be created is you have some thin features " -"on the next layer, like letters. Set this setting to 0 to remove these " -"artifacts." +"If a top surface has to be printed and it's partially covered by another layer, " +"it won't be considered at a top layer where its width is below this value. This " +"can be useful to not let the 'one perimeter on top' trigger on surface that " +"should be covered only by perimeters. This value can be a mm or a % of the " +"perimeter extrusion width.\n" +"Warning: If enabled, artifacts can be created is you have some thin features on " +"the next layer, like letters. Set this setting to 0 to remove these artifacts." msgstr "" -"Se una superficie superiore deve essere stampata ed è parzialmente coperta " -"da un altro strato, non verrà considerata in un livello superiore in cui la " -"sua larghezza è inferiore a questo valore. Questo può essere utile per non " -"lasciare che il \"un perimetro in cima\" si attivi su una superficie che " -"dovrebbe essere coperta solo da perimetri. Questo valore può essere un mm o " -"un % of della larghezza di estrusione del perimetro.\n" +"Se una superficie superiore deve essere stampata ed è parzialmente coperta da un " +"altro strato, non verrà considerata in un livello superiore in cui la sua " +"larghezza è inferiore a questo valore. Questo può essere utile per non lasciare " +"che il \"un perimetro in cima\" si attivi su una superficie che dovrebbe essere " +"coperta solo da perimetri. Questo valore può essere un mm o un % of della " +"larghezza di estrusione del perimetro.\n" "Attenzione: se abilitato, è possibile creare artefatti se si hanno alcune " -"caratteristiche sottili sul livello successivo, come le lettere. Impostare " -"questa impostazione su 0 per rimuovere questi artefatti." +"caratteristiche sottili sul livello successivo, come le lettere. Impostare questa " +"impostazione su 0 per rimuovere questi artefatti." msgid "Only one wall on first layer" msgstr "Solo un perimetro sul primo layer" msgid "" -"Use only one wall on first layer, to give more space to the bottom infill " -"pattern" +"Use only one wall on first layer, to give more space to the bottom infill pattern" msgstr "" "Utilizzare un solo muro sul primo strato, per dare più spazio al modello di " "riempimento inferiore" @@ -8997,11 +8913,11 @@ msgid "Extra perimeters on overhangs" msgstr "Perimetri aggiuntivi sulle sporgenze (sperimentale)" msgid "" -"Create additional perimeter paths over steep overhangs and areas where " -"bridges cannot be anchored. " +"Create additional perimeter paths over steep overhangs and areas where bridges " +"cannot be anchored. " msgstr "" -"Creare percorsi perimetrali aggiuntivi su strapiombi ripidi e aree in cui i " -"ponti non possono essere ancorati. " +"Creare percorsi perimetrali aggiuntivi su strapiombi ripidi e aree in cui i ponti " +"non possono essere ancorati. " msgid "Reverse on odd" msgstr "Retromarcia su dispari" @@ -9010,19 +8926,18 @@ msgid "Overhang reversal" msgstr "Inversione di sbalzo" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse " -"direction on odd layers. This alternating pattern can drastically improve " -"steep overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse direction on " +"odd layers. This alternating pattern can drastically improve steep overhangs.\n" "\n" -"This setting can also help reduce part warping due to the reduction of " -"stresses in the part walls." +"This setting can also help reduce part warping due to the reduction of stresses " +"in the part walls." msgstr "" -"Estrudere i perimetri che hanno una parte su una sporgenza in direzione " -"inversa su layer dispari. Questo schema alternato può migliorare " -"drasticamente gli strapiombi ripidi.\n" +"Estrudere i perimetri che hanno una parte su una sporgenza in direzione inversa " +"su layer dispari. Questo schema alternato può migliorare drasticamente gli " +"strapiombi ripidi.\n" "\n" -"Questa impostazione può anche contribuire a ridurre la deformazione della " -"parte grazie alla riduzione delle sollecitazioni nelle pareti della parte." +"Questa impostazione può anche contribuire a ridurre la deformazione della parte " +"grazie alla riduzione delle sollecitazioni nelle pareti della parte." msgid "Reverse only internal perimeters" msgstr "Inversione solo perimetri interni" @@ -9031,30 +8946,28 @@ msgid "" "Apply the reverse perimeters logic only on internal perimeters. \n" "\n" "This setting greatly reduces part stresses as they are now distributed in " -"alternating directions. This should reduce part warping while also " -"maintaining external wall quality. This feature can be very useful for warp " -"prone material, like ABS/ASA, and also for elastic filaments, like TPU and " -"Silk PLA. It can also help reduce warping on floating regions over " -"supports.\n" +"alternating directions. This should reduce part warping while also maintaining " +"external wall quality. This feature can be very useful for warp prone material, " +"like ABS/ASA, and also for elastic filaments, like TPU and Silk PLA. It can also " +"help reduce warping on floating regions over supports.\n" "\n" -"For this setting to be the most effective, it is recomended to set the " -"Reverse Threshold to 0 so that all internal walls print in alternating " -"directions on odd layers irrespective of their overhang degree." +"For this setting to be the most effective, it is recomended to set the Reverse " +"Threshold to 0 so that all internal walls print in alternating directions on odd " +"layers irrespective of their overhang degree." msgstr "" "Applicare la logica dei perimetri inversi solo ai perimetri interni. \n" "\n" -"Questa impostazione riduce notevolmente le sollecitazioni delle parti poiché " -"ora sono distribuite in direzioni alternate. Ciò dovrebbe ridurre la " -"deformazione delle parti mantenendo al contempo la qualità delle pareti " -"esterne. Questa caratteristica può essere molto utile per materiali soggetti " -"a deformazione, come ABS/ASA, e anche per filamenti elastici, come TPU e " -"Silk PLA. Può anche aiutare a ridurre la deformazione sulle regioni " -"fluttuanti sui supporti.\n" +"Questa impostazione riduce notevolmente le sollecitazioni delle parti poiché ora " +"sono distribuite in direzioni alternate. Ciò dovrebbe ridurre la deformazione " +"delle parti mantenendo al contempo la qualità delle pareti esterne. Questa " +"caratteristica può essere molto utile per materiali soggetti a deformazione, come " +"ABS/ASA, e anche per filamenti elastici, come TPU e Silk PLA. Può anche aiutare a " +"ridurre la deformazione sulle regioni fluttuanti sui supporti.\n" "\n" -"Affinché questa impostazione sia la più efficace, si consiglia di impostare " -"la soglia inversa su 0 in modo che tutte le pareti interne vengano stampate " -"in direzioni alternate sugli strati dispari, indipendentemente dal loro " -"grado di sporgenza." +"Affinché questa impostazione sia la più efficace, si consiglia di impostare la " +"soglia inversa su 0 in modo che tutte le pareti interne vengano stampate in " +"direzioni alternate sugli strati dispari, indipendentemente dal loro grado di " +"sporgenza." msgid "Reverse threshold" msgstr "Soglia inversa" @@ -9064,12 +8977,12 @@ msgstr "Soglia di inversione a sbalzo" #, c-format, boost-format msgid "" -"Number of mm the overhang need to be for the reversal to be considered " -"useful. Can be a % of the perimeter width.\n" +"Number of mm the overhang need to be for the reversal to be considered useful. " +"Can be a % of the perimeter width.\n" "Value 0 enables reversal on every odd layers regardless." msgstr "" -"Numero di mm di sbalzo necessario affinché l'inversione sia considerata " -"utile. Può essere un % o della larghezza del perimetro.\n" +"Numero di mm di sbalzo necessario affinché l'inversione sia considerata utile. " +"Può essere un % o della larghezza del perimetro.\n" "Il valore 0 abilita l'inversione su tutti i livelli dispari a prescindere." msgid "Classic mode" @@ -9083,8 +8996,8 @@ msgstr "Rallenta in caso di sporgenze" msgid "Enable this option to slow printing down for different overhang degree" msgstr "" -"Abilita questa opzione per rallentare quando la stampa presenta sporgenze. " -"Le velocità per le diverse percentuali di sporgenza sono indicate di seguito." +"Abilita questa opzione per rallentare quando la stampa presenta sporgenze. Le " +"velocità per le diverse percentuali di sporgenza sono indicate di seguito." msgid "Slow down for curled perimeters" msgstr "Rallenta per perimetri arricciati" @@ -9112,8 +9025,8 @@ msgid "Internal" msgstr "Interno" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridge. If the value is expressed as a percentage, it will be " +"calculated based on the bridge_speed. Default value is 150%." msgstr "" "Velocità del ponte interno. Se il valore è espresso in percentuale, verrà " "calcolato in base al bridge_speed. Il valore predefinito è 150%." @@ -9128,22 +9041,20 @@ msgid "Brim type" msgstr "Tipo di brim" msgid "" -"This controls the generation of the brim at outer and/or inner side of " -"models. Auto means the brim width is analysed and calculated automatically." +"This controls the generation of the brim at outer and/or inner side of models. " +"Auto means the brim width is analysed and calculated automatically." msgstr "" -"Questo controlla la generazione del brim esterno e/o interno dei modelli. " -"Auto significa che la larghezza del brim viene analizzata e calcolata " -"automaticamente." +"Questo controlla la generazione del brim esterno e/o interno dei modelli. Auto " +"significa che la larghezza del brim viene analizzata e calcolata automaticamente." msgid "Brim-object gap" msgstr "Distanza Brim-Oggetto " msgid "" -"A gap between innermost brim line and object can make brim be removed more " -"easily" +"A gap between innermost brim line and object can make brim be removed more easily" msgstr "" -"Questo crea un gap tra la linea interna del brim e l'oggetto per rendere il " -"brim più facile da rimuovere" +"Questo crea un gap tra la linea interna del brim e l'oggetto per rendere il brim " +"più facile da rimuovere" msgid "Brim ears" msgstr "Orecchie a tesa" @@ -9168,12 +9079,12 @@ msgid "Brim ear detection radius" msgstr "Raggio di rilevamento dell'orecchio della tesa" msgid "" -"The geometry will be decimated before dectecting sharp angles. This " -"parameter indicates the minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This parameter " +"indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" -"La geometria verrà decimata prima di rilevare gli angoli acuti. Questo " -"parametro indica la lunghezza minima dello scostamento per la decimazione.\n" +"La geometria verrà decimata prima di rilevare gli angoli acuti. Questo parametro " +"indica la lunghezza minima dello scostamento per la decimazione.\n" "0 per disattivare" msgid "Compatible machine" @@ -9193,8 +9104,8 @@ msgstr "Condizione dei profili di processo compatibili" msgid "Print sequence, layer by layer or object by object" msgstr "" -"Questo determina la sequenza di stampa, che consente di stampare layer per " -"layer o oggetto per oggetto." +"Questo determina la sequenza di stampa, che consente di stampare layer per layer " +"o oggetto per oggetto." msgid "By layer" msgstr "Per layer" @@ -9206,26 +9117,25 @@ msgid "Slow printing down for better layer cooling" msgstr "Rallenta stampa per un migliore raffreddamento layers" msgid "" -"Enable this option to slow printing speed down to make the final layer time " -"not shorter than the layer time threshold in \"Max fan speed threshold\", so " -"that layer can be cooled for longer time. This can improve the cooling " -"quality for needle and small details" +"Enable this option to slow printing speed down to make the final layer time not " +"shorter than the layer time threshold in \"Max fan speed threshold\", so that " +"layer can be cooled for longer time. This can improve the cooling quality for " +"needle and small details" msgstr "" -"Abilita questa opzione per rallentare la velocità di stampa in modo che il " -"tempo finale del layer non sia inferiore alla soglia di tempo nel valore " -"\"Soglia di velocità massima della ventola\", in modo che il layer possa " -"essere raffreddato più a lungo.\n" +"Abilita questa opzione per rallentare la velocità di stampa in modo che il tempo " +"finale del layer non sia inferiore alla soglia di tempo nel valore \"Soglia di " +"velocità massima della ventola\", in modo che il layer possa essere raffreddato " +"più a lungo.\n" "Ciò può migliorare la qualità per i piccoli dettagli" msgid "Normal printing" msgstr "Stampa normale" msgid "" -"The default acceleration of both normal printing and travel except initial " -"layer" +"The default acceleration of both normal printing and travel except initial layer" msgstr "" -"E' l'accelerazione predefinita sia per la stampa normale che per la corsa " -"dopo il primo layer." +"E' l'accelerazione predefinita sia per la stampa normale che per la corsa dopo il " +"primo layer." msgid "mm/s²" msgstr "mm/s²" @@ -9234,23 +9144,20 @@ msgid "Default filament profile" msgstr "Profilo filamento predefinito" msgid "Default filament profile when switch to this machine profile" -msgstr "" -"Profilo filamento predefinito quando si passa a questo profilo macchina" +msgstr "Profilo filamento predefinito quando si passa a questo profilo macchina" msgid "Default process profile" msgstr "Profilo di processo predefinito" msgid "Default process profile when switch to this machine profile" -msgstr "" -"Profilo di processo predefinito quando si passa a questo profilo macchina" +msgstr "Profilo di processo predefinito quando si passa a questo profilo macchina" msgid "Activate air filtration" msgstr "Attivare la filtrazione dell'aria" msgid "Activate for better air filtration. G-code command: M106 P3 S(0-255)" msgstr "" -"Attivare per una migliore filtrazione dell'aria. Comando G-code: M106 P3 " -"S(0-255)" +"Attivare per una migliore filtrazione dell'aria. Comando G-code: M106 P3 S(0-255)" msgid "Fan speed" msgstr "Velocità ventola" @@ -9272,55 +9179,55 @@ msgid "" "Close all cooling fan for the first certain layers. Cooling fan of the first " "layer used to be closed to get better build plate adhesion" msgstr "" -"Spegnere tutte le ventole di raffreddamento per i primi layer. Questo può " -"servire a migliorare l'adesione del piatto." +"Spegnere tutte le ventole di raffreddamento per i primi layer. Questo può servire " +"a migliorare l'adesione del piatto." msgid "Don't support bridges" msgstr "Non supportare i bridge" msgid "" -"Don't support the whole bridge area which make support very large. Bridge " -"usually can be printing directly without support if not very long" +"Don't support the whole bridge area which make support very large. Bridge usually " +"can be printing directly without support if not very long" msgstr "" -"This disables supporting bridges, which decreases the amount of support " -"required. Bridges can usually be printed directly without support over a " -"reasonable distance." +"This disables supporting bridges, which decreases the amount of support required. " +"Bridges can usually be printed directly without support over a reasonable " +"distance." msgid "Thick bridges" msgstr "Ponti spessi" msgid "" -"If enabled, bridges are more reliable, can bridge longer distances, but may " -"look worse. If disabled, bridges look better but are reliable just for " -"shorter bridged distances." +"If enabled, bridges are more reliable, can bridge longer distances, but may look " +"worse. If disabled, bridges look better but are reliable just for shorter bridged " +"distances." msgstr "" -"Se abilitato, i ponti sono più affidabili e possono colmare distanze " -"maggiori, ma potrebbero avere un aspetto peggiore. Se disattivato, i ponti " -"hanno un aspetto migliore ma sono affidabili solo per distanze più brevi." +"Se abilitato, i ponti sono più affidabili e possono colmare distanze maggiori, ma " +"potrebbero avere un aspetto peggiore. Se disattivato, i ponti hanno un aspetto " +"migliore ma sono affidabili solo per distanze più brevi." msgid "Thick internal bridges" msgstr "Ponti interni spessi" msgid "" -"If enabled, thick internal bridges will be used. It's usually recommended to " -"have this feature turned on. However, consider turning it off if you are " -"using large nozzles." +"If enabled, thick internal bridges will be used. It's usually recommended to have " +"this feature turned on. However, consider turning it off if you are using large " +"nozzles." msgstr "" -"Se abilitato, verranno utilizzati ponti interni spessi. Di solito si " -"consiglia di attivare questa funzione. Tuttavia, considera di disattivarlo " -"se stai utilizzando ugelli di grandi dimensioni." +"Se abilitato, verranno utilizzati ponti interni spessi. Di solito si consiglia di " +"attivare questa funzione. Tuttavia, considera di disattivarlo se stai utilizzando " +"ugelli di grandi dimensioni." msgid "Max bridge length" msgstr "Lunghezza massima Bridge" msgid "" "Max length of bridges that don't need support. Set it to 0 if you want all " -"bridges to be supported, and set it to a very large value if you don't want " -"any bridges to be supported." +"bridges to be supported, and set it to a very large value if you don't want any " +"bridges to be supported." msgstr "" "Questa è la lunghezza massima dei ponti che non necessitano di supporto. " -"Impostalo su 0 se desideri che tutti i bridge siano supportati e impostalo " -"su un valore molto grande se non vuoi che nessun bridge sia supportato." +"Impostalo su 0 se desideri che tutti i bridge siano supportati e impostalo su un " +"valore molto grande se non vuoi che nessun bridge sia supportato." msgid "End G-code" msgstr "G-code finale" @@ -9332,8 +9239,8 @@ msgid "Between Object Gcode" msgstr "Tra Gcode oggetto" msgid "" -"Insert Gcode between objects. This parameter will only come into effect when " -"you print your models object by object" +"Insert Gcode between objects. This parameter will only come into effect when you " +"print your models object by object" msgstr "" "Inserire Gcode tra gli oggetti. Questo parametro avrà effetto solo quando si " "stampano i modelli oggetto per oggetto" @@ -9345,19 +9252,17 @@ msgid "Ensure vertical shell thickness" msgstr "Garantisci spessore verticale del guscio" msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)" +"Add solid infill near sloping surfaces to guarantee the vertical shell thickness " +"(top+bottom solid layers)" msgstr "" "Aggiunge un riempimento solido in prossimità delle superfici inclinate per " -"garantire lo spessore verticale del guscio (layers solidi superiori e " -"inferiori)." +"garantire lo spessore verticale del guscio (layers solidi superiori e inferiori)." msgid "Top surface pattern" msgstr "Trama superfice superiore" msgid "Line pattern of top surface infill" -msgstr "" -"Questo è la Trama lineare per il riempimento della superficie superiore." +msgstr "Questo è la Trama lineare per il riempimento della superficie superiore." msgid "Concentric" msgstr "Concentrico" @@ -9388,30 +9293,30 @@ msgstr "Trama superficie inferiore" msgid "Line pattern of bottom surface infill, not bridge infill" msgstr "" -"Questo è la trama lineare del riempimento della superficie inferiore, " -"escluso il riempimento del ponte." +"Questo è la trama lineare del riempimento della superficie inferiore, escluso il " +"riempimento del ponte." msgid "Internal solid infill pattern" msgstr "Schema di riempimento solido interno" msgid "" -"Line pattern of internal solid infill. if the detect narrow internal solid " -"infill be enabled, the concentric pattern will be used for the small area." +"Line pattern of internal solid infill. if the detect narrow internal solid infill " +"be enabled, the concentric pattern will be used for the small area." msgstr "" -"Modello di linea del riempimento solido interno. Se l'opzione Rileva " -"riempimento solido interno Nattow è abilitata, il motivo concentrico verrà " -"utilizzato per l'area piccola." +"Modello di linea del riempimento solido interno. Se l'opzione Rileva riempimento " +"solido interno Nattow è abilitata, il motivo concentrico verrà utilizzato per " +"l'area piccola." msgid "" "Line width of outer wall. If expressed as a %, it will be computed over the " "nozzle diameter." msgstr "" -"Larghezza della linea della parete esterna. Se espresso come %, verrà " -"calcolato sul diametro dell'ugello." +"Larghezza della linea della parete esterna. Se espresso come %, verrà calcolato " +"sul diametro dell'ugello." msgid "" -"Speed of outer wall which is outermost and visible. It's used to be slower " -"than inner wall speed to get better quality." +"Speed of outer wall which is outermost and visible. It's used to be slower than " +"inner wall speed to get better quality." msgstr "" "E' la velocità di stampa per le pareti esterne dei pezzi. Queste vengono " "generalmente stampate più lentamente delle pareti interne per ottenere una " @@ -9423,22 +9328,21 @@ msgstr "Perimetri piccoli" msgid "" "This separate setting will affect the speed of perimeters having radius <= " "small_perimeter_threshold (usually holes). If expressed as percentage (for " -"example: 80%) it will be calculated on the outer wall speed setting above. " -"Set to zero for auto." +"example: 80%) it will be calculated on the outer wall speed setting above. Set to " +"zero for auto." msgstr "" -"Questa impostazione separata influenzerà la velocità dei perimetri con " -"raggio <= small_perimeter_threshold (di solito fori). Se espresso in " -"percentuale (ad esempio: 80%) verrà calcolato sull'impostazione della " -"velocità della parete esterna di cui sopra. Impostare su zero per auto." +"Questa impostazione separata influenzerà la velocità dei perimetri con raggio <= " +"small_perimeter_threshold (di solito fori). Se espresso in percentuale (ad " +"esempio: 80%) verrà calcolato sull'impostazione della velocità della parete " +"esterna di cui sopra. Impostare su zero per auto." msgid "Small perimeters threshold" msgstr "Soglia perimetrale ridotta" -msgid "" -"This sets the threshold for small perimeter length. Default threshold is 0mm" +msgid "This sets the threshold for small perimeter length. Default threshold is 0mm" msgstr "" -"In questo modo viene impostata la soglia per la lunghezza del perimetro " -"ridotta. La soglia predefinita è 0 mm" +"In questo modo viene impostata la soglia per la lunghezza del perimetro ridotta. " +"La soglia predefinita è 0 mm" msgid "Walls printing order" msgstr "Ordine Stampa Pareti" @@ -9446,50 +9350,46 @@ msgstr "Ordine Stampa Pareti" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls " -"can adhere to a neighouring perimeter while printing. However, this option " -"results in slightly reduced surface quality as the external perimeter is " -"deformed by being squashed to the internal perimeter.\n" +"Use Inner/Outer for best overhangs. This is because the overhanging walls can " +"adhere to a neighouring perimeter while printing. However, this option results in " +"slightly reduced surface quality as the external perimeter is deformed by being " +"squashed to the internal perimeter.\n" "\n" "Use Inner/Outer/Inner for the best external surface finish and dimensional " -"accuracy as the external wall is printed undisturbed from an internal " -"perimeter. However, overhang performance will reduce as there is no internal " -"perimeter to print the external wall against. This option requires a minimum " -"of 3 walls to be effective as it prints the internal walls from the 3rd " -"perimeter onwards first, then the external perimeter and, finally, the first " -"internal perimeter. This option is recomended against the Outer/Inner option " -"in most cases. \n" +"accuracy as the external wall is printed undisturbed from an internal perimeter. " +"However, overhang performance will reduce as there is no internal perimeter to " +"print the external wall against. This option requires a minimum of 3 walls to be " +"effective as it prints the internal walls from the 3rd perimeter onwards first, " +"then the external perimeter and, finally, the first internal perimeter. This " +"option is recomended against the Outer/Inner option in most cases. \n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy " "benefits of Inner/Outer/Inner option. However, the z seams will appear less " -"consistent as the first extrusion of a new layer starts on a visible " -"surface.\n" +"consistent as the first extrusion of a new layer starts on a visible surface.\n" "\n" " " msgstr "" "Sequenza di stampa delle pareti interne (interne) ed esterne (esterne). \n" "\n" -"Utilizzare Interno/Esterno per le migliori sporgenze. Questo perché le " -"pareti sporgenti possono aderire a un perimetro vicino durante la stampa. " -"Tuttavia, questa opzione comporta una qualità della superficie leggermente " -"ridotta poiché il perimetro esterno viene deformato dall'essere schiacciato " -"sul perimetro interno.\n" +"Utilizzare Interno/Esterno per le migliori sporgenze. Questo perché le pareti " +"sporgenti possono aderire a un perimetro vicino durante la stampa. Tuttavia, " +"questa opzione comporta una qualità della superficie leggermente ridotta poiché " +"il perimetro esterno viene deformato dall'essere schiacciato sul perimetro " +"interno.\n" "\n" -"Utilizzare Interno/Esterno/Interno per ottenere la migliore finitura " -"superficiale esterna e precisione dimensionale poiché la parete esterna " -"viene stampata indisturbata da un perimetro interno. Tuttavia, le " -"prestazioni di sporgenza si ridurranno in quanto non c'è un perimetro " -"interno contro cui stampare la parete esterna. Questa opzione richiede un " -"minimo di 3 pareti per essere efficace in quanto stampa prima le pareti " -"interne dal 3° perimetro in poi, poi il perimetro esterno e, infine, il " -"primo perimetro interno. Nella maggior parte dei casi, questa opzione è " -"consigliata rispetto all'opzione Esterno/Interno. \n" +"Utilizzare Interno/Esterno/Interno per ottenere la migliore finitura superficiale " +"esterna e precisione dimensionale poiché la parete esterna viene stampata " +"indisturbata da un perimetro interno. Tuttavia, le prestazioni di sporgenza si " +"ridurranno in quanto non c'è un perimetro interno contro cui stampare la parete " +"esterna. Questa opzione richiede un minimo di 3 pareti per essere efficace in " +"quanto stampa prima le pareti interne dal 3° perimetro in poi, poi il perimetro " +"esterno e, infine, il primo perimetro interno. Nella maggior parte dei casi, " +"questa opzione è consigliata rispetto all'opzione Esterno/Interno. \n" "\n" -"Utilizzare Esterno/Interno per ottenere la stessa qualità della parete " -"esterna e gli stessi vantaggi di precisione dimensionale dell'opzione " -"Interno/Esterno/Interno. Tuttavia, le giunzioni z appariranno meno coerenti " -"quando la prima estrusione di un nuovo livello inizia su una superficie " -"visibile.\n" +"Utilizzare Esterno/Interno per ottenere la stessa qualità della parete esterna e " +"gli stessi vantaggi di precisione dimensionale dell'opzione Interno/Esterno/" +"Interno. Tuttavia, le giunzioni z appariranno meno coerenti quando la prima " +"estrusione di un nuovo livello inizia su una superficie visibile.\n" " " msgid "Inner/Outer" @@ -9505,41 +9405,41 @@ msgid "Print infill first" msgstr "Stampa prima il riempimento" msgid "" -"Order of wall/infill. When the tickbox is unchecked the walls are printed " -"first, which works best in most cases.\n" +"Order of wall/infill. When the tickbox is unchecked the walls are printed first, " +"which works best in most cases.\n" "\n" "Printing walls first may help with extreme overhangs as the walls have the " -"neighbouring infill to adhere to. However, the infill will slighly push out " -"the printed walls where it is attached to them, resulting in a worse " -"external surface finish. It can also cause the infill to shine through the " -"external surfaces of the part." +"neighbouring infill to adhere to. However, the infill will slighly push out the " +"printed walls where it is attached to them, resulting in a worse external surface " +"finish. It can also cause the infill to shine through the external surfaces of " +"the part." msgstr "" -"Ordine di parete/tamponamento. Quando la casella di controllo è " -"deselezionata, i muri vengono stampati per primi, il che funziona meglio " -"nella maggior parte dei casi.\n" +"Ordine di parete/tamponamento. Quando la casella di controllo è deselezionata, i " +"muri vengono stampati per primi, il che funziona meglio nella maggior parte dei " +"casi.\n" "\n" -"La stampa delle pareti può aiutare con sporgenze estreme poiché le pareti " -"hanno il riempimento vicino a cui aderire. Tuttavia, il riempimento spingerà " -"leggermente fuori le pareti stampate dove è attaccato ad esse, con " -"conseguente peggioramento della finitura superficiale esterna. Può anche far " -"brillare il riempimento attraverso le superfici esterne della parte." +"La stampa delle pareti può aiutare con sporgenze estreme poiché le pareti hanno " +"il riempimento vicino a cui aderire. Tuttavia, il riempimento spingerà " +"leggermente fuori le pareti stampate dove è attaccato ad esse, con conseguente " +"peggioramento della finitura superficiale esterna. Può anche far brillare il " +"riempimento attraverso le superfici esterne della parte." msgid "Height to rod" msgstr "Altezza asta" msgid "" -"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " -"by-object printing." +"Distance of the nozzle tip to the lower rod. Used for collision avoidance in by-" +"object printing." msgstr "" -"Distanza dalla punta del nozzle all'asta inferiore. Utilizzato per evitare " -"le collisioni nella stampa di oggetto per oggetto." +"Distanza dalla punta del nozzle all'asta inferiore. Utilizzato per evitare le " +"collisioni nella stampa di oggetto per oggetto." msgid "Height to lid" msgstr "Altezza dal coperchio" msgid "" -"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" -"object printing." +"Distance of the nozzle tip to the lid. Used for collision avoidance in by-object " +"printing." msgstr "" "Distanza dalla punta del nozzle al coperchio. Utilizzato per evitare le " "collisioni nella stampa oggetto per oggetto." @@ -9564,63 +9464,60 @@ msgid "Flow ratio" msgstr "Rapporto di flusso" msgid "" -"The material may have volumetric change after switching between molten state " -"and crystalline state. This setting changes all extrusion flow of this " -"filament in gcode proportionally. Recommended value range is between 0.95 " -"and 1.05. Maybe you can tune this value to get nice flat surface when there " -"has slight overflow or underflow" +"The material may have volumetric change after switching between molten state and " +"crystalline state. This setting changes all extrusion flow of this filament in " +"gcode proportionally. Recommended value range is between 0.95 and 1.05. Maybe you " +"can tune this value to get nice flat surface when there has slight overflow or " +"underflow" msgstr "" -"Il materiale può subire variazioni volumetriche dopo il passaggio dallo " -"stato fuso a quello cristallino. Questa impostazione modifica in modo " -"proporzionale tutti i flussi di estrusione di questo filamento in G-code. " -"L'intervallo di valori raccomandato è compreso tra 0,95 e 1,05. È possibile " -"regolare questo valore per ottenere una superficie piatta se si verifica una " -"leggera sovra-estrusione o sotto-estrusione." +"Il materiale può subire variazioni volumetriche dopo il passaggio dallo stato " +"fuso a quello cristallino. Questa impostazione modifica in modo proporzionale " +"tutti i flussi di estrusione di questo filamento in G-code. L'intervallo di " +"valori raccomandato è compreso tra 0,95 e 1,05. È possibile regolare questo " +"valore per ottenere una superficie piatta se si verifica una leggera sovra-" +"estrusione o sotto-estrusione." msgid "Enable pressure advance" msgstr "Abilita l'avanzamento della pressione" msgid "" -"Enable pressure advance, auto calibration result will be overwriten once " -"enabled." +"Enable pressure advance, auto calibration result will be overwriten once enabled." msgstr "" -"Abilita l'avanzamento della pressione, il risultato della calibrazione " -"automatica verrà sovrascritto una volta abilitato." +"Abilita l'avanzamento della pressione, il risultato della calibrazione automatica " +"verrà sovrascritto una volta abilitato." msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" -msgstr "" -"Anticipo di pressione (Klipper) AKA Fattore di avanzamento lineare (Marlin)" +msgstr "Anticipo di pressione (Klipper) AKA Fattore di avanzamento lineare (Marlin)" msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, " -"it will be computed over the nozzle diameter." +"Default line width if other line widths are set to 0. If expressed as a %, it " +"will be computed over the nozzle diameter." msgstr "" -"Larghezza di linea predefinita se le altre larghezze di linea sono impostate " -"su 0. Se espresso come %, verrà calcolato sul diametro dell'ugello." +"Larghezza di linea predefinita se le altre larghezze di linea sono impostate su " +"0. Se espresso come %, verrà calcolato sul diametro dell'ugello." msgid "Keep fan always on" msgstr "Mantieni la ventola sempre accesa" msgid "" -"If enable this setting, part cooling fan will never be stoped and will run " -"at least at minimum speed to reduce the frequency of starting and stoping" +"If enable this setting, part cooling fan will never be stoped and will run at " +"least at minimum speed to reduce the frequency of starting and stoping" msgstr "" -"Se si attiva questa impostazione, la ventola di raffreddamento non si " -"arresterà mai del tutto, ma funzionerà almeno alla velocità minima per " -"ridurre la frequenza di avvio e arresto." +"Se si attiva questa impostazione, la ventola di raffreddamento non si arresterà " +"mai del tutto, ma funzionerà almeno alla velocità minima per ridurre la frequenza " +"di avvio e arresto." msgid "Layer time" msgstr "Layer time" msgid "" -"Part cooling fan will be enabled for layers of which estimated time is " -"shorter than this value. Fan speed is interpolated between the minimum and " -"maximum fan speeds according to layer printing time" +"Part cooling fan will be enabled for layers of which estimated time is shorter " +"than this value. Fan speed is interpolated between the minimum and maximum fan " +"speeds according to layer printing time" msgstr "" -"La ventola di raffreddamento parziale verrà attivata per i layers in cui il " -"tempo stimato è inferiore a questo valore. La velocità della ventola viene " -"interpolata tra la velocità minima e massima della ventola in base al tempo " -"di stampa a layer." +"La ventola di raffreddamento parziale verrà attivata per i layers in cui il tempo " +"stimato è inferiore a questo valore. La velocità della ventola viene interpolata " +"tra la velocità minima e massima della ventola in base al tempo di stampa a layer." msgid "Default color" msgstr "Colore predefinito" @@ -9638,21 +9535,21 @@ msgid "Required nozzle HRC" msgstr "Necessita nozzle HRC" msgid "" -"Minimum HRC of nozzle required to print the filament. Zero means no checking " -"of nozzle's HRC." +"Minimum HRC of nozzle required to print the filament. Zero means no checking of " +"nozzle's HRC." msgstr "" -"HRC minimo del nozzle richiesto per stampare il filamento. Un valore pari a " -"0 significa che non viene controllato l'HRC del nozzle." +"HRC minimo del nozzle richiesto per stampare il filamento. Un valore pari a 0 " +"significa che non viene controllato l'HRC del nozzle." msgid "" -"This setting stands for how much volume of filament can be melted and " -"extruded per second. Printing speed is limited by max volumetric speed, in " -"case of too high and unreasonable speed setting. Can't be zero" +"This setting stands for how much volume of filament can be melted and extruded " +"per second. Printing speed is limited by max volumetric speed, in case of too " +"high and unreasonable speed setting. Can't be zero" msgstr "" -"Questa indica il volume del filamento che può essere fuso ed estruso al " -"secondo. La velocità di stampa è limitata dalla velocità volumetrica " -"massima, in caso di impostazione della velocità troppo alta e irragionevole. " -"Questo valore non può essere zero." +"Questa indica il volume del filamento che può essere fuso ed estruso al secondo. " +"La velocità di stampa è limitata dalla velocità volumetrica massima, in caso di " +"impostazione della velocità troppo alta e irragionevole. Questo valore non può " +"essere zero." msgid "mm³/s" msgstr "mm³/s" @@ -9662,8 +9559,8 @@ msgstr "Durata caricamento filamento" msgid "Time to load new filament when switch filament. For statistics only" msgstr "" -"Tempo di caricamento del nuovo filamento quando si cambia filamento, solo a " -"fini statistici." +"Tempo di caricamento del nuovo filamento quando si cambia filamento, solo a fini " +"statistici." msgid "Filament unload time" msgstr "Durata scaricamento filamento" @@ -9674,8 +9571,8 @@ msgstr "" "statistici." msgid "" -"Filament diameter is used to calculate extrusion in gcode, so it's important " -"and should be accurate" +"Filament diameter is used to calculate extrusion in gcode, so it's important and " +"should be accurate" msgstr "" "Il diametro del filamento viene utilizzato per calcolare le variabili di " "estrusione nel G-code, quindi è importante che sia accurato e preciso." @@ -9685,18 +9582,18 @@ msgstr "Restringimento" #, c-format, boost-format msgid "" -"Enter the shrinkage percentage that the filament will get after cooling " -"(94% if you measure 94mm instead of 100mm). The part will be scaled in xy to " -"compensate. Only the filament used for the perimeter is taken into account.\n" -"Be sure to allow enough space between objects, as this compensation is done " -"after the checks." +"Enter the shrinkage percentage that the filament will get after cooling (94% if " +"you measure 94mm instead of 100mm). The part will be scaled in xy to compensate. " +"Only the filament used for the perimeter is taken into account.\n" +"Be sure to allow enough space between objects, as this compensation is done after " +"the checks." msgstr "" "Inserisci la percentuale di restringimento che il filamento otterrà dopo il " -"raffreddamento (94% if misuri 94 mm invece di 100 mm). La parte verrà " -"scalata in xy per compensare. Viene preso in considerazione solo il " -"filamento utilizzato per il perimetro.\n" -"Assicurarsi di lasciare uno spazio sufficiente tra gli oggetti, poiché " -"questa compensazione viene eseguita dopo i controlli." +"raffreddamento (94% if misuri 94 mm invece di 100 mm). La parte verrà scalata in " +"xy per compensare. Viene preso in considerazione solo il filamento utilizzato per " +"il perimetro.\n" +"Assicurarsi di lasciare uno spazio sufficiente tra gli oggetti, poiché questa " +"compensazione viene eseguita dopo i controlli." msgid "Loading speed" msgstr "Velocità di caricamento" @@ -9714,28 +9611,26 @@ msgid "Unloading speed" msgstr "Velocità di scaricamento" msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming)." +"Speed used for unloading the filament on the wipe tower (does not affect initial " +"part of unloading just after ramming)." msgstr "" -"Velocità usata per scaricare il filamento sulla torre di pulitura (non " -"influisce sulla parte iniziale dello scaricamento dopo il ramming)." +"Velocità usata per scaricare il filamento sulla torre di pulitura (non influisce " +"sulla parte iniziale dello scaricamento dopo il ramming)." msgid "Unloading speed at the start" msgstr "Velocità iniziale di scaricamento" -msgid "" -"Speed used for unloading the tip of the filament immediately after ramming." +msgid "Speed used for unloading the tip of the filament immediately after ramming." msgstr "" -"Velocità utilizzata per scaricare la punta del filamento immediatamente dopo " -"il ramming." +"Velocità utilizzata per scaricare la punta del filamento immediatamente dopo il " +"ramming." msgid "Delay after unloading" msgstr "Ritardo dopo lo scarico" msgid "" -"Time to wait after the filament is unloaded. May help to get reliable " -"toolchanges with flexible materials that may need more time to shrink to " -"original dimensions." +"Time to wait after the filament is unloaded. May help to get reliable toolchanges " +"with flexible materials that may need more time to shrink to original dimensions." msgstr "" "Tempo di attesa dopo lo scarico del filamento. Può aiutare ad ottenere cambi " "affidabili con materiali flessibili che potrebbero richiedere più tempo per " @@ -9745,8 +9640,8 @@ msgid "Number of cooling moves" msgstr "Numero di movimenti di raffreddamento" msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves." +"Filament is cooled by being moved back and forth in the cooling tubes. Specify " +"desired number of these moves." msgstr "" "Il filamento è raffreddato venendo spostato avanti e indietro nei tubi di " "raffreddamento. Specificare il numero desiderato di questi movimenti." @@ -9756,25 +9651,24 @@ msgstr "Velocità del primo movimento di raffreddamento" msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "" -"I movimenti di raffreddamento accelerano gradualmente partendo da questa " -"velocità." +"I movimenti di raffreddamento accelerano gradualmente partendo da questa velocità." msgid "Minimal purge on wipe tower" msgstr "Spurgo minimo sulla torre di pulitura" msgid "" -"After a tool change, the exact position of the newly loaded filament inside " -"the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"After a tool change, the exact position of the newly loaded filament inside the " +"nozzle may not be known, and the filament pressure is likely not yet stable. " +"Before purging the print head into an infill or a sacrificial object, Orca Slicer " +"will always prime this amount of material into the wipe tower to produce " +"successive infill or sacrificial object extrusions reliably." msgstr "" -"Dopo un cambio di strumento, l'esatta posizione del filamento appena " -"caricato dentro l'ugello potrebbe essere sconosciuta, e la pressione del " -"filamento probabilmente non è ancora stabile. Prima di spurgare la testina " -"di stampa nel riempimento o in un oggetto sacrificale, Orca Slicer posizionerà " -"questo materiale in una torre di pulitura al fine di ottenere una successiva " -"estrusione affidabile su oggetto sacrificale o riempimento." +"Dopo un cambio di strumento, l'esatta posizione del filamento appena caricato " +"dentro l'ugello potrebbe essere sconosciuta, e la pressione del filamento " +"probabilmente non è ancora stabile. Prima di spurgare la testina di stampa nel " +"riempimento o in un oggetto sacrificale, Orca Slicer posizionerà questo materiale " +"in una torre di pulitura al fine di ottenere una successiva estrusione affidabile " +"su oggetto sacrificale o riempimento." msgid "Speed of the last cooling move" msgstr "Velocità dell'ultimo movimento di raffreddamento" @@ -9785,42 +9679,41 @@ msgstr "" msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." +"filament during a tool change (when executing the T code). This time is added to " +"the total print time by the G-code time estimator." msgstr "" -"Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per " -"il caricamento del nuovo filamento durante il cambio strumento (quando viene " -"eseguito il T code). Questa durata viene aggiunta alla stima del tempo " -"totale di stampa del G-code." +"Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per il " +"caricamento del nuovo filamento durante il cambio strumento (quando viene " +"eseguito il T code). Questa durata viene aggiunta alla stima del tempo totale di " +"stampa del G-code." msgid "Ramming parameters" msgstr "Parametri del ramming" msgid "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters." +"This string is edited by RammingDialog and contains ramming specific parameters." msgstr "" -"Questa stringa viene controllata da RammingDialog e contiene parametri " -"specifici del ramming." +"Questa stringa viene controllata da RammingDialog e contiene parametri specifici " +"del ramming." msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." +"filament during a tool change (when executing the T code). This time is added to " +"the total print time by the G-code time estimator." msgstr "" -"Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per " -"lo scaricamento del nuovo filamento durante il cambio strumento (quando " -"viene eseguito il T code). Questa durata viene aggiunta alla stima del tempo " -"totale di stampa del G-code." +"Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per lo " +"scaricamento del nuovo filamento durante il cambio strumento (quando viene " +"eseguito il T code). Questa durata viene aggiunta alla stima del tempo totale di " +"stampa del G-code." msgid "Enable ramming for multitool setups" msgstr "Abilita ramming per configurazioni multitool" msgid "" "Perform ramming when using multitool printer (i.e. when the 'Single Extruder " -"Multimaterial' in Printer Settings is unchecked). When checked, a small " -"amount of filament is rapidly extruded on the wipe tower just before the " -"toolchange. This option is only used when the wipe tower is enabled." +"Multimaterial' in Printer Settings is unchecked). When checked, a small amount of " +"filament is rapidly extruded on the wipe tower just before the toolchange. This " +"option is only used when the wipe tower is enabled." msgstr "" "Esegue il ramming quando si usa una stampante multitool (Ad esempio, quando " "l'opzione \"Multimateriale a estrusore singolo\" nelle impostazioni della " @@ -9856,33 +9749,30 @@ msgstr "Tipo di filamento" msgid "Soluble material" msgstr "Materiale solubile" -msgid "" -"Soluble material is commonly used to print support and support interface" +msgid "Soluble material is commonly used to print support and support interface" msgstr "" -"Il materiale solubile viene comunemente utilizzato per stampare il supporto " -"e l'interfaccia di supporto" +"Il materiale solubile viene comunemente utilizzato per stampare il supporto e " +"l'interfaccia di supporto" msgid "Support material" msgstr "Materiale di supporto" -msgid "" -"Support material is commonly used to print support and support interface" +msgid "Support material is commonly used to print support and support interface" msgstr "" -"Il materiale di supporto viene comunemente utilizzato per stampare il " -"supporto e le interfacce di supporto." +"Il materiale di supporto viene comunemente utilizzato per stampare il supporto e " +"le interfacce di supporto." msgid "Softening temperature" msgstr "Temperatura di ammorbidimento" msgid "" -"The material softens at this temperature, so when the bed temperature is " -"equal to or greater than it, it's highly recommended to open the front door " -"and/or remove the upper glass to avoid cloggings." +"The material softens at this temperature, so when the bed temperature is equal to " +"or greater than it, it's highly recommended to open the front door and/or remove " +"the upper glass to avoid cloggings." msgstr "" -"Il materiale si ammorbidisce a questa temperatura, quindi quando la " -"temperatura del letto è uguale o superiore ad essa, si consiglia vivamente " -"di aprire la porta d'ingresso e/o rimuovere il vetro superiore per evitare " -"ostruzioni." +"Il materiale si ammorbidisce a questa temperatura, quindi quando la temperatura " +"del letto è uguale o superiore ad essa, si consiglia vivamente di aprire la porta " +"d'ingresso e/o rimuovere il vetro superiore per evitare ostruzioni." msgid "Price" msgstr "Prezzo" @@ -9906,8 +9796,8 @@ msgid "Infill direction" msgstr "Direzione riempimento" msgid "" -"Angle for sparse infill pattern, which controls the start or main direction " -"of line" +"Angle for sparse infill pattern, which controls the start or main direction of " +"line" msgstr "" "Questo è l'angolo della trama di riempimento che controlla l'inizio o la " "direzione principale delle linee." @@ -9915,13 +9805,13 @@ msgstr "" msgid "Sparse infill density" msgstr "Densità riempimento" -#, fuzzy, c-format, boost-format +#, c-format, boost-format msgid "" -"Density of internal sparse infill, 100% turns all sparse infill into solid " -"infill and internal solid infill pattern will be used" +"Density of internal sparse infill, 100% turns all sparse infill into solid infill " +"and internal solid infill pattern will be used" msgstr "" -"Verrà utilizzato la densità di riempimento interno sparsi, il 100% " -"trasforma tutto il riempimento sparso e il modello di riempimento solido " +"Densità del riempimento sparso interno, 100% turns verrà utilizzato tutto il " +"riempimento sparso nel riempimento solido e il modello di riempimento solido " "interno" msgid "Sparse infill pattern" @@ -9965,25 +9855,25 @@ msgstr "Lunghezza dell'ancora di riempimento sparsa" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " -"additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" -"Set this parameter to zero to disable anchoring perimeters connected to a " -"single infill line." +"additional perimeter. If expressed as percentage (example: 15%) it is calculated " +"over infill extrusion width. Orca Slicer tries to connect two close infill lines " +"to a short perimeter segment. If no such perimeter segment shorter than " +"infill_anchor_max is found, the infill line is connected to a perimeter segment " +"at just one side and the length of the perimeter segment taken is limited to this " +"parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a single " +"infill line." msgstr "" -"Collegare una linea di riempimento a un perimetro interno con un breve " -"segmento di un perimetro aggiuntivo. Se espresso in percentuale (esempio: " -"15%) viene calcolato sulla larghezza di estrusione del riempimento. Orca Slicer " -"tenta di collegare due linee di riempimento ravvicinate a un breve segmento " -"perimetrale. Se non viene trovato alcun segmento perimetrale più corto di " -"infill_anchor_max, la linea di riempimento viene collegata a un segmento " -"perimetrale su un solo lato e la lunghezza del segmento perimetrale preso è " -"limitata a questo parametro, ma non più lunga di anchor_length_max. \n" -"Impostare questo parametro su zero per disabilitare i perimetri di " -"ancoraggio collegati a una singola linea di riempimento." +"Collegare una linea di riempimento a un perimetro interno con un breve segmento " +"di un perimetro aggiuntivo. Se espresso in percentuale (esempio: 15%) viene " +"calcolato sulla larghezza di estrusione del riempimento. Orca Slicer tenta di " +"collegare due linee di riempimento ravvicinate a un breve segmento perimetrale. " +"Se non viene trovato alcun segmento perimetrale più corto di infill_anchor_max, " +"la linea di riempimento viene collegata a un segmento perimetrale su un solo lato " +"e la lunghezza del segmento perimetrale preso è limitata a questo parametro, ma " +"non più lunga di anchor_length_max. \n" +"Impostare questo parametro su zero per disabilitare i perimetri di ancoraggio " +"collegati a una singola linea di riempimento." msgid "0 (no open anchors)" msgstr "0 (senza ancore aperte)" @@ -9996,25 +9886,25 @@ msgstr "Lunghezza massima dell'ancoraggio del riempimento" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " -"additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"additional perimeter. If expressed as percentage (example: 15%) it is calculated " +"over infill extrusion width. Orca Slicer tries to connect two close infill lines " +"to a short perimeter segment. If no such perimeter segment shorter than this " +"parameter is found, the infill line is connected to a perimeter segment at just " +"one side and the length of the perimeter segment taken is limited to " +"infill_anchor, but no longer than this parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" -"Collegare una linea di riempimento a un perimetro interno con un breve " -"segmento di un perimetro aggiuntivo. Se espresso in percentuale (esempio: " -"15%) viene calcolato sulla larghezza di estrusione del riempimento. Orca Slicer " -"tenta di collegare due linee di riempimento ravvicinate a un breve segmento " -"perimetrale. Se non viene trovato alcun segmento perimetrale più corto di " -"questo parametro, la linea di riempimento viene collegata a un segmento " -"perimetrale su un solo lato e la lunghezza del segmento perimetrale preso è " -"limitata a infill_anchor, ma non più lunga di questo parametro. \n" -"Se impostato a 0, verrà utilizzato il vecchio algoritmo per la connessione " -"di riempimento, che dovrebbe creare lo stesso risultato di 1000 e 0." +"Collegare una linea di riempimento a un perimetro interno con un breve segmento " +"di un perimetro aggiuntivo. Se espresso in percentuale (esempio: 15%) viene " +"calcolato sulla larghezza di estrusione del riempimento. Orca Slicer tenta di " +"collegare due linee di riempimento ravvicinate a un breve segmento perimetrale. " +"Se non viene trovato alcun segmento perimetrale più corto di questo parametro, la " +"linea di riempimento viene collegata a un segmento perimetrale su un solo lato e " +"la lunghezza del segmento perimetrale preso è limitata a infill_anchor, ma non " +"più lunga di questo parametro. \n" +"Se impostato a 0, verrà utilizzato il vecchio algoritmo per la connessione di " +"riempimento, che dovrebbe creare lo stesso risultato di 1000 e 0." msgid "0 (Simple connect)" msgstr "0 (Connessione semplice)" @@ -10029,12 +9919,11 @@ msgid "Acceleration of travel moves" msgstr "Accelerazione massima per gli spostamenti" msgid "" -"Acceleration of top surface infill. Using a lower value may improve top " -"surface quality" +"Acceleration of top surface infill. Using a lower value may improve top surface " +"quality" msgstr "" -"Questa è l'accelerazione del riempimento della superficie superiore. " -"L'utilizzo di un valore inferiore può migliorare la qualità della superficie " -"superiore." +"Questa è l'accelerazione del riempimento della superficie superiore. L'utilizzo " +"di un valore inferiore può migliorare la qualità della superficie superiore." msgid "Acceleration of outer wall. Using a lower value can improve quality" msgstr "" @@ -10042,26 +9931,25 @@ msgstr "" "migliorare la qualità." msgid "" -"Acceleration of bridges. If the value is expressed as a percentage (e.g. " -"50%), it will be calculated based on the outer wall acceleration." +"Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it " +"will be calculated based on the outer wall acceleration." msgstr "" -"Accelerazione dei ponti. Se il valore è espresso in percentuale (ad es. " -"50%), verrà calcolato in base all'accelerazione della parete esterna." +"Accelerazione dei ponti. Se il valore è espresso in percentuale (ad es. 50%), " +"verrà calcolato in base all'accelerazione della parete esterna." msgid "mm/s² or %" msgstr "mm/s o %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage (e.g. " +"100%), it will be calculated based on the default acceleration." msgstr "" -"Accelerazione del riempimento rado. Se il valore è espresso in percentuale " -"(ad esempio 100%), verrà calcolato in base all'accelerazione predefinita." +"Accelerazione del riempimento rado. Se il valore è espresso in percentuale (ad " +"esempio 100%), verrà calcolato in base all'accelerazione predefinita." msgid "" -"Acceleration of internal solid infill. If the value is expressed as a " -"percentage (e.g. 100%), it will be calculated based on the default " -"acceleration." +"Acceleration of internal solid infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Accelerazione del riempimento solido interno. Se il valore è espresso in " "percentuale (ad esempio 100%), verrà calcolato in base all'accelerazione " @@ -10084,10 +9972,8 @@ msgid "accel_to_decel" msgstr "accel_to_decel" #, c-format, boost-format -msgid "" -"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" -msgstr "" -"La max_accel_to_decel di Klipper sarà adattata a questo %% di accelerazione" +msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "La max_accel_to_decel di Klipper sarà adattata a questo %% di accelerazione" msgid "Jerk of outer walls" msgstr "Strappo delle pareti esterne" @@ -10108,21 +9994,21 @@ msgid "Jerk for travel" msgstr "Jerk per i viaggi" msgid "" -"Line width of initial layer. If expressed as a %, it will be computed over " -"the nozzle diameter." +"Line width of initial layer. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" -"Larghezza della linea del livello iniziale. Se espresso come %, verrà " -"calcolato sul diametro dell'ugello." +"Larghezza della linea del livello iniziale. Se espresso come %, verrà calcolato " +"sul diametro dell'ugello." msgid "Initial layer height" msgstr "Altezza primo layer" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"Height of initial layer. Making initial layer height to be thick slightly can " +"improve build plate adhension" msgstr "" -"Questa è l'altezza layer iniziale. L'aumento dell'altezza del primo layer " -"può migliorare l'adesione al piatto" +"Questa è l'altezza layer iniziale. L'aumento dell'altezza del primo layer può " +"migliorare l'adesione al piatto" msgid "Speed of initial layer except the solid infill part" msgstr "" @@ -10148,30 +10034,28 @@ msgid "" "The first few layers are printed slower than normal. The speed is gradually " "increased in a linear fashion over the specified number of layers." msgstr "" -"I primi strati vengono stampati più lentamente del normale. La velocità " -"viene gradualmente aumentata in modo lineare sul numero di strati " -"specificato." +"I primi strati vengono stampati più lentamente del normale. La velocità viene " +"gradualmente aumentata in modo lineare sul numero di strati specificato." msgid "Initial layer nozzle temperature" msgstr "Temperatura nozzle primo layer" msgid "Nozzle temperature to print initial layer when using this filament" -msgstr "" -"Temperatura del nozzle per la stampa del primo layer con questo filamento" +msgstr "Temperatura del nozzle per la stampa del primo layer con questo filamento" msgid "Full fan speed at layer" msgstr "Massima velocità della ventola al layer" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer\". " +"\"full_fan_speed_layer\" will be ignored if lower than " "\"close_fan_the_first_x_layers\", in which case the fan will be running at " "maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocità della ventola aumenterà linearmente da zero al livello " -"\"close_fan_the_first_x_layers\" al massimo al livello \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" verrà ignorato se inferiore a " +"\"close_fan_the_first_x_layers\" al massimo al livello \"full_fan_speed_layer\". " +"\"full_fan_speed_layer\" verrà ignorato se inferiore a " "\"close_fan_the_first_x_layers\", nel qual caso la ventola funzionerà alla " "massima velocità consentita al livello \"close_fan_the_first_x_layers\" + 1." @@ -10179,8 +10063,8 @@ msgid "Support interface fan speed" msgstr "Supporta la velocità della ventola dell'interfaccia" msgid "" -"This fan speed is enforced during all support interfaces, to be able to " -"weaken their bonding with a high fan speed.\n" +"This fan speed is enforced during all support interfaces, to be able to weaken " +"their bonding with a high fan speed.\n" "Set to -1 to disable this override.\n" "Can only be overriden by disable_fan_first_layers." msgstr "" @@ -10191,12 +10075,12 @@ msgstr "" "Può essere sovrascritto solo da disable_fan_first_layers." msgid "" -"Randomly jitter while printing the wall, so that the surface has a rough " -"look. This setting controls the fuzzy position" +"Randomly jitter while printing the wall, so that the surface has a rough look. " +"This setting controls the fuzzy position" msgstr "" -"Questa impostazione fa vibrare casualmente la testa di stampa durante la " -"stampa su pareti, in modo che la superficie abbia un aspetto ruvido. Questa " -"impostazione controlla la posizione fuzzy Skin." +"Questa impostazione fa vibrare casualmente la testa di stampa durante la stampa " +"su pareti, in modo che la superficie abbia un aspetto ruvido. Questa impostazione " +"controlla la posizione fuzzy Skin." msgid "Contour" msgstr "Contorno" @@ -10211,20 +10095,17 @@ msgid "Fuzzy skin thickness" msgstr "Spessore superficie crespa" msgid "" -"The width within which to jitter. It's adversed to be below outer wall line " -"width" +"The width within which to jitter. It's adversed to be below outer wall line width" msgstr "" -"Ampiezza del tremolio: si consiglia di mantenerla inferiore alla larghezza " -"della linea della parete esterna." +"Ampiezza del tremolio: si consiglia di mantenerla inferiore alla larghezza della " +"linea della parete esterna." msgid "Fuzzy skin point distance" msgstr "Distanza punti superficie crespa" msgid "" -"The average diatance between the random points introducded on each line " -"segment" -msgstr "" -"La distanza media tra i punti casuali introdotti su ogni segmento di linea" +"The average diatance between the random points introducded on each line segment" +msgstr "La distanza media tra i punti casuali introdotti su ogni segmento di linea" msgid "Apply fuzzy skin to first layer" msgstr "Applicare la pelle sfocata sul primo strato" @@ -10242,11 +10123,11 @@ msgid "Filter out gaps smaller than the threshold specified" msgstr "Filtra gli spazi più piccoli della soglia specificata" msgid "" -"Speed of gap infill. Gap usually has irregular line width and should be " -"printed more slowly" +"Speed of gap infill. Gap usually has irregular line width and should be printed " +"more slowly" msgstr "" -"E' la velocità per il riempimento del gap. I gap hanno solitamente una " -"larghezza linea irregolare e devono essere stampate più lentamente." +"E' la velocità per il riempimento del gap. I gap hanno solitamente una larghezza " +"linea irregolare e devono essere stampate più lentamente." msgid "Arc fitting" msgstr "Arc fitting" @@ -10255,24 +10136,22 @@ msgid "" "Enable this to get a G-code file which has G2 and G3 moves. And the fitting " "tolerance is same with resolution" msgstr "" -"Abilita questa funzione per ottenere un file G-code con gli spostamenti " -"circolari in G2 e G3. La tolleranza di adattamento è la stessa della " -"risoluzione" +"Abilita questa funzione per ottenere un file G-code con gli spostamenti circolari " +"in G2 e G3. La tolleranza di adattamento è la stessa della risoluzione" msgid "Add line number" msgstr "Aggiungi numero di riga" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" msgstr "" -"Abilita questa opzione per aggiungere il numero di riga (Nx) all'inizio di " -"ogni riga del G-code" +"Abilita questa opzione per aggiungere il numero di riga (Nx) all'inizio di ogni " +"riga del G-code" msgid "Scan first layer" msgstr "Scansiona Primo layer" msgid "" -"Enable this to enable the camera on printer to check the quality of first " -"layer" +"Enable this to enable the camera on printer to check the quality of first layer" msgstr "" "Attivare questa opzione per consentire alla fotocamera della stampante di " "verificare la qualità del primo layer." @@ -10335,35 +10214,34 @@ msgstr "Migliore posizione dell'oggetto" msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "" -"Migliore posizione di disposizione automatica nell'intervallo [0,1] w.r.t. " -"forma del letto." +"Migliore posizione di disposizione automatica nell'intervallo [0,1] w.r.t. forma " +"del letto." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code " -"command: M106 P2 S(0-255)." +"Enable this option if machine has auxiliary part cooling fan. G-code command: " +"M106 P2 S(0-255)." msgstr "" -"Abilitare questa opzione se la macchina è dotata di ventola di " -"raffreddamento della parte ausiliaria. Comando G-code: M106 P2 S(0-255)." +"Abilitare questa opzione se la macchina è dotata di ventola di raffreddamento " +"della parte ausiliaria. Comando G-code: M106 P2 S(0-255)." msgid "" -"Start the fan this number of seconds earlier than its target start time (you " -"can use fractional seconds). It assumes infinite acceleration for this time " +"Start the fan this number of seconds earlier than its target start time (you can " +"use fractional seconds). It assumes infinite acceleration for this time " "estimation, and will only take into account G1 and G0 moves (arc fitting is " "unsupported).\n" -"It won't move fan comands from custom gcodes (they act as a sort of " -"'barrier').\n" -"It won't move fan comands into the start gcode if the 'only custom start " -"gcode' is activated.\n" +"It won't move fan comands from custom gcodes (they act as a sort of 'barrier').\n" +"It won't move fan comands into the start gcode if the 'only custom start gcode' " +"is activated.\n" "Use 0 to deactivate." msgstr "" -"Avviare la ventola questo numero di secondi prima dell'ora di inizio " -"prevista (è possibile utilizzare i secondi frazionari). Si presume " -"un'accelerazione infinita per questa stima del tempo e si terrà conto solo " -"dei movimenti G1 e G0 (l'adattamento dell'arco non è supportato).\n" -"Non sposterà i comandi dei fan dai gcode personalizzati (agiscono come una " -"sorta di \"barriera\").\n" -"Non sposterà i comandi delle ventole nel gcode di avvio se è attivato " -"l'opzione \"solo gcode di avvio personalizzato\".\n" +"Avviare la ventola questo numero di secondi prima dell'ora di inizio prevista (è " +"possibile utilizzare i secondi frazionari). Si presume un'accelerazione infinita " +"per questa stima del tempo e si terrà conto solo dei movimenti G1 e G0 " +"(l'adattamento dell'arco non è supportato).\n" +"Non sposterà i comandi dei fan dai gcode personalizzati (agiscono come una sorta " +"di \"barriera\").\n" +"Non sposterà i comandi delle ventole nel gcode di avvio se è attivato l'opzione " +"\"solo gcode di avvio personalizzato\".\n" "Utilizzare 0 per disattivare." msgid "Only overhangs" @@ -10376,18 +10254,18 @@ msgid "Fan kick-start time" msgstr "Tempo di avvio della ventola" msgid "" -"Emit a max fan speed command for this amount of seconds before reducing to " -"target speed to kick-start the cooling fan.\n" -"This is useful for fans where a low PWM/power may be insufficient to get the " -"fan started spinning from a stop, or to get the fan up to speed faster.\n" +"Emit a max fan speed command for this amount of seconds before reducing to target " +"speed to kick-start the cooling fan.\n" +"This is useful for fans where a low PWM/power may be insufficient to get the fan " +"started spinning from a stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." msgstr "" "Emettere un comando di velocità massima della ventola per questo numero di " "secondi prima di ridurre la velocità target per avviare la ventola di " "raffreddamento.\n" "Ciò è utile per le ventole in cui un PWM/potenza bassa potrebbe essere " -"insufficiente per far partire la ventola da fermo o per far sì che la " -"ventola raggiunga la velocità più velocemente.\n" +"insufficiente per far partire la ventola da fermo o per far sì che la ventola " +"raggiunga la velocità più velocemente.\n" "Impostare su 0 per disattivare." msgid "Time cost" @@ -10406,8 +10284,8 @@ msgid "" "This option is enabled if machine support controlling chamber temperature\n" "G-code command: M141 S(0-255)" msgstr "" -"Questa opzione è abilitata se la macchina supporta il controllo della " -"temperatura della camera\n" +"Questa opzione è abilitata se la macchina supporta il controllo della temperatura " +"della camera\n" "Comando G-code: M141 S(0-255)" msgid "Support air filtration" @@ -10433,65 +10311,64 @@ msgid "Label objects" msgstr "Etichetta oggetti" msgid "" -"Enable this to add comments into the G-Code labeling print moves with what " -"object they belong to, which is useful for the Octoprint CancelObject " -"plugin. This settings is NOT compatible with Single Extruder Multi Material " -"setup and Wipe into Object / Wipe into Infill." +"Enable this to add comments into the G-Code labeling print moves with what object " +"they belong to, which is useful for the Octoprint CancelObject plugin. This " +"settings is NOT compatible with Single Extruder Multi Material setup and Wipe " +"into Object / Wipe into Infill." msgstr "" -"Attivalo per aggiungere commenti nel G-Code etichettando i movimenti di " -"stampa secondo l'appartenenza, utile per il plugin Octoprint CancelObject. " -"Questa impostazione NON è compatibile con una configurazione Multi Material " -"ad estrusore singolo e con Pulitura nell'oggetto / Pulitura nel riempimento." +"Attivalo per aggiungere commenti nel G-Code etichettando i movimenti di stampa " +"secondo l'appartenenza, utile per il plugin Octoprint CancelObject. Questa " +"impostazione NON è compatibile con una configurazione Multi Material ad estrusore " +"singolo e con Pulitura nell'oggetto / Pulitura nel riempimento." msgid "Exclude objects" msgstr "Escludi oggetti" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "" -"Abilita questa opzione per aggiungere il comando EXCLUDE OBJECT nel g-code" +msgstr "Abilita questa opzione per aggiungere il comando EXCLUDE OBJECT nel g-code" msgid "Verbose G-code" msgstr "G-code verboso" msgid "" "Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." +"descriptive text. If you print from SD card, the additional weight of the file " +"could make your firmware slow down." msgstr "" "Abilita per ottenere un file G-code commentato, con un testo descrittivo per " -"ciascuna linea. Se stampi da memoria SD, il peso aggiuntivo del file " -"potrebbe rallentare il firmware." +"ciascuna linea. Se stampi da memoria SD, il peso aggiuntivo del file potrebbe " +"rallentare il firmware." msgid "Infill combination" msgstr "Combinazione riempimento" msgid "" -"Automatically Combine sparse infill of several layers to print together to " -"reduce time. Wall is still printed with original layer height." +"Automatically Combine sparse infill of several layers to print together to reduce " +"time. Wall is still printed with original layer height." msgstr "" -"Automatically combine sparse infill of several layers to print together in " -"order to reduce time. Walls are still printed with original layer height." +"Automatically combine sparse infill of several layers to print together in order " +"to reduce time. Walls are still printed with original layer height." msgid "Filament to print internal sparse infill." msgstr "Questo è il filamento per la stampa del riempimento interno." msgid "" -"Line width of internal sparse infill. If expressed as a %, it will be " -"computed over the nozzle diameter." +"Line width of internal sparse infill. If expressed as a %, it will be computed " +"over the nozzle diameter." msgstr "" -"Larghezza della linea del riempimento interno sparso. Se espresso come %, " -"verrà calcolato sul diametro dell'ugello." +"Larghezza della linea del riempimento interno sparso. Se espresso come %, verrà " +"calcolato sul diametro dell'ugello." msgid "Infill/Wall overlap" msgstr "Sovrapposizione riempimento/parete" msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. " -"The percentage value is relative to line width of sparse infill" +"Infill area is enlarged slightly to overlap with wall for better bonding. The " +"percentage value is relative to line width of sparse infill" msgstr "" -"Ciò consente di allargare leggermente l'area di riempimento per sovrapporla " -"alle pareti per una migliore adesione. Il valore percentuale è relativo alla " -"larghezza della linea del riempimento." +"Ciò consente di allargare leggermente l'area di riempimento per sovrapporla alle " +"pareti per una migliore adesione. Il valore percentuale è relativo alla larghezza " +"della linea del riempimento." msgid "Speed of internal sparse infill" msgstr "E' la velocità del riempimento interno." @@ -10500,13 +10377,12 @@ msgid "Interface shells" msgstr "Pareti interfaccia" msgid "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material" +"Force the generation of solid shells between adjacent materials/volumes. Useful " +"for multi-extruder prints with translucent materials or manual soluble support " +"material" msgstr "" -"Forza la generazione di perimetri solidi tra volumi o materiali adiacenti. " -"Utile per stampe multi estrusore con materiali traslucidi o supporti " -"solubili manuali" +"Forza la generazione di perimetri solidi tra volumi o materiali adiacenti. Utile " +"per stampe multi estrusore con materiali traslucidi o supporti solubili manuali" msgid "Maximum width of a segmented region" msgstr "Larghezza massima di una regione segmentata" @@ -10521,18 +10397,17 @@ msgstr "Profondità di incastro di una regione segmentata" msgid "Interlocking depth of a segmented region. Zero disables this feature." msgstr "" -"Profondità di incastro di una regione segmentata. Zero disabilita questa " -"funzione." +"Profondità di incastro di una regione segmentata. Zero disabilita questa funzione." msgid "Ironing Type" msgstr "Tipo di stiratura" msgid "" -"Ironing is using small flow to print on same height of surface again to make " -"flat surface more smooth. This setting controls which layer being ironed" +"Ironing is using small flow to print on same height of surface again to make flat " +"surface more smooth. This setting controls which layer being ironed" msgstr "" -"La stiratura utilizza un flusso ridotto per stampare alla stessa altezza di " -"una superficie per rendere le superfici piane più lisce. Questa impostazione " +"La stiratura utilizza un flusso ridotto per stampare alla stessa altezza di una " +"superficie per rendere le superfici piane più lisce. Questa impostazione " "controlla quali layer vengono stirati." msgid "No ironing" @@ -10580,28 +10455,27 @@ msgid "Ironing angle" msgstr "Angolo di stiratura" msgid "" -"The angle ironing is done at. A negative number disables this function and " -"uses the default method." +"The angle ironing is done at. A negative number disables this function and uses " +"the default method." msgstr "" "La stiratura angolare viene eseguita a. Un numero negativo disabilita questa " "funzione e utilizza il metodo predefinito." msgid "This gcode part is inserted at every layer change after lift z" -msgstr "" -"Questo G-code viene inserito a ogni cambio di layer dopo l'elevazione z." +msgstr "Questo G-code viene inserito a ogni cambio di layer dopo l'elevazione z." msgid "Supports silent mode" msgstr "Modalità silenziosa" msgid "" -"Whether the machine supports silent mode in which machine use lower " -"acceleration to print" +"Whether the machine supports silent mode in which machine use lower acceleration " +"to print" msgstr "" "Se la macchina supporta la modalità silenziosa, in cui la macchina utilizza " "un'accelerazione inferiore per stampare in modo più silenzioso" msgid "Emit limits to G-code" -msgstr "" +msgstr "Limiti di emissione al codice G" msgid "Machine limits" msgstr "Limiti macchina" @@ -10610,10 +10484,12 @@ msgid "" "If enabled, the machine limits will be emitted to G-code file.\n" "This option will be ignored if the g-code flavor is set to Klipper." msgstr "" +"Se abilitato, i limiti della macchina verranno emessi nel file G-code.\n" +"Questa opzione verrà ignorata se il sapore del codice g è impostato su Klipper." msgid "" -"This G-code will be used as a code for the pause print. User can insert " -"pause G-code in gcode viewer" +"This G-code will be used as a code for the pause print. User can insert pause G-" +"code in gcode viewer" msgstr "" "Questo G-code verrà utilizzato come codice pausa stampa. Gli utenti possono " "inserire il G-code di pausa nel visualizzatore G-code." @@ -10721,23 +10597,22 @@ msgid "Maximum acceleration for travel" msgstr "Accelerazione massima per spostamenti" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" -msgstr "" -"Accelerazione massima per la corsa (M204 T), si applica solo al Marlin 2" +msgstr "Accelerazione massima per la corsa (M204 T), si applica solo al Marlin 2" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This " -"is the maximum speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This is the " +"maximum speed limitation of part cooling fan" msgstr "" "La velocità della ventola di raffreddamento può essere aumentata quando è " -"abilitato il raffreddamento automatico. Questa è la limitazione massima " -"della velocità della ventola di raffreddamento parziale" +"abilitato il raffreddamento automatico. Questa è la limitazione massima della " +"velocità della ventola di raffreddamento parziale" msgid "Max" msgstr "Massimo" msgid "" -"The largest printable layer height for extruder. Used tp limits the maximum " -"layer hight when enable adaptive layer height" +"The largest printable layer height for extruder. Used tp limits the maximum layer " +"hight when enable adaptive layer height" msgstr "" "L'altezza massima del layer stampabile per l'estrusore: viene utilizzata per " "limitare l'altezza massima del layer quando è abilitato il layer adattativo." @@ -10746,59 +10621,56 @@ msgid "Extrusion rate smoothing" msgstr "Lisciatura del tasso di estrusione" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when " -"the printer transitions from printing a high flow (high speed/larger width) " -"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " -"versa.\n" +"This parameter smooths out sudden extrusion rate changes that happen when the " +"printer transitions from printing a high flow (high speed/larger width) extrusion " +"to a lower flow (lower speed/smaller width) extrusion and vice versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " -"can change over time. Higher values mean higher extrusion rate changes are " -"allowed, resulting in faster speed transitions.\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec can " +"change over time. Higher values mean higher extrusion rate changes are allowed, " +"resulting in faster speed transitions.\n" "\n" "A value of 0 disables the feature. \n" "\n" -"For a high speed, high flow direct drive printer (like the Bambu lab or " -"Voron) this value is usually not needed. However it can provide some " -"marginal benefit in certain cases where feature speeds vary greatly. For " -"example, when there are aggressive slowdowns due to overhangs. In these " -"cases a high value of around 300-350mm3/s2 is recommended as this allows for " -"just enough smoothing to assist pressure advance achieve a smoother flow " -"transition.\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or Voron) " +"this value is usually not needed. However it can provide some marginal benefit in " +"certain cases where feature speeds vary greatly. For example, when there are " +"aggressive slowdowns due to overhangs. In these cases a high value of around " +"300-350mm3/s2 is recommended as this allows for just enough smoothing to assist " +"pressure advance achieve a smoother flow transition.\n" "\n" -"For slower printers without pressure advance, the value should be set much " -"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " -"extruders and 5-10mm3/s2 for Bowden style. \n" +"For slower printers without pressure advance, the value should be set much lower. " +"A value of 10-15mm3/s2 is a good starting point for direct drive extruders and " +"5-10mm3/s2 for Bowden style. \n" "\n" "This feature is known as Pressure Equalizer in Prusa slicer.\n" "\n" "Note: this parameter disables arc fitting." msgstr "" -"Questo parametro attenua le variazioni improvvise della velocità di " -"estrusione che si verificano quando la stampante passa dalla stampa di " -"un'estrusione ad alto flusso (alta velocità/larghezza maggiore) a " -"un'estrusione a flusso inferiore (velocità inferiore/larghezza inferiore) e " -"viceversa.\n" +"Questo parametro attenua le variazioni improvvise della velocità di estrusione " +"che si verificano quando la stampante passa dalla stampa di un'estrusione ad alto " +"flusso (alta velocità/larghezza maggiore) a un'estrusione a flusso inferiore " +"(velocità inferiore/larghezza inferiore) e viceversa.\n" "\n" -"Definisce la velocità massima con cui la portata volumetrica estrusa in mm3/" -"sec può variare nel tempo. Valori più alti significano che sono consentite " -"variazioni più elevate della velocità di estrusione, con conseguenti " -"transizioni di velocità più rapide.\n" +"Definisce la velocità massima con cui la portata volumetrica estrusa in mm3/sec " +"può variare nel tempo. Valori più alti significano che sono consentite variazioni " +"più elevate della velocità di estrusione, con conseguenti transizioni di velocità " +"più rapide.\n" "\n" "Il valore 0 disabilita la funzionalità. \n" "\n" -"Per una stampante ad azionamento diretto ad alta velocità e ad alto flusso " -"(come Bambu lab o Voron) questo valore di solito non è necessario. Tuttavia, " -"può fornire alcuni vantaggi marginali in alcuni casi in cui le velocità " -"delle funzionalità variano notevolmente. Ad esempio, quando ci sono " -"rallentamenti aggressivi dovuti a strapiombi. In questi casi si consiglia un " -"valore elevato di circa 300-350 mm3/s2 in quanto ciò consente una levigatura " -"sufficiente per aiutare l'avanzamento della pressione a ottenere una " -"transizione di flusso più fluida.\n" +"Per una stampante ad azionamento diretto ad alta velocità e ad alto flusso (come " +"Bambu lab o Voron) questo valore di solito non è necessario. Tuttavia, può " +"fornire alcuni vantaggi marginali in alcuni casi in cui le velocità delle " +"funzionalità variano notevolmente. Ad esempio, quando ci sono rallentamenti " +"aggressivi dovuti a strapiombi. In questi casi si consiglia un valore elevato di " +"circa 300-350 mm3/s2 in quanto ciò consente una levigatura sufficiente per " +"aiutare l'avanzamento della pressione a ottenere una transizione di flusso più " +"fluida.\n" "\n" -"Per le stampanti più lente senza anticipo di pressione, il valore deve " -"essere impostato su un valore molto più basso. Un valore di 10-15 mm3/s2 è " -"un buon punto di partenza per gli estrusori a trasmissione diretta e di 5-10 " -"mm3/s2 per lo stile Bowden. \n" +"Per le stampanti più lente senza anticipo di pressione, il valore deve essere " +"impostato su un valore molto più basso. Un valore di 10-15 mm3/s2 è un buon punto " +"di partenza per gli estrusori a trasmissione diretta e di 5-10 mm3/s2 per lo " +"stile Bowden. \n" "\n" "Questa funzione è nota come equalizzatore di pressione in Prusa slicer.\n" "\n" @@ -10822,12 +10694,12 @@ msgid "" msgstr "" "Un valore più basso si traduce in transizioni più fluide della velocità di " "estrusione. Tuttavia, ciò si traduce in un file gcode significativamente più " -"grande e in un maggior numero di istruzioni per l'elaborazione da parte " -"della stampante. \n" +"grande e in un maggior numero di istruzioni per l'elaborazione da parte della " +"stampante. \n" "\n" "Il valore predefinito 3 funziona bene per la maggior parte dei casi. Se la " -"stampante balbetta, aumentare questo valore per ridurre il numero di " -"regolazioni effettuate\n" +"stampante balbetta, aumentare questo valore per ridurre il numero di regolazioni " +"effettuate\n" "\n" "Valori consentiti: 1-5" @@ -10835,24 +10707,23 @@ msgid "Minimum speed for part cooling fan" msgstr "Velocità minima ventola di raffreddamento" msgid "" -"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " -"during printing except the first several layers which is defined by no " -"cooling layers.\n" +"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during " +"printing except the first several layers which is defined by no cooling layers.\n" "Please enable auxiliary_fan in printer settings to use this feature. G-code " "command: M106 P2 S(0-255)" msgstr "" "Velocità della ventola di raffreddamento della parte ausiliaria. La ventola " -"ausiliaria funzionerà a questa velocità durante la stampa, ad eccezione dei " -"primi strati, che sono definiti dall'assenza di strati di raffreddamento.\n" -"Abilitare auxiliary_fan nelle impostazioni della stampante per utilizzare " -"questa funzione. Comando G-code: M106 P2 S(0-255)" +"ausiliaria funzionerà a questa velocità durante la stampa, ad eccezione dei primi " +"strati, che sono definiti dall'assenza di strati di raffreddamento.\n" +"Abilitare auxiliary_fan nelle impostazioni della stampante per utilizzare questa " +"funzione. Comando G-code: M106 P2 S(0-255)" msgid "Min" msgstr "Minimo" msgid "" -"The lowest printable layer height for extruder. Used tp limits the minimum " -"layer hight when enable adaptive layer height" +"The lowest printable layer height for extruder. Used tp limits the minimum layer " +"hight when enable adaptive layer height" msgstr "" "L'altezza minima del layer stampabile per l'estrusore. Viene utilizzata per " "limitare l'altezza minima del layer quando è abilito il layer adattativo." @@ -10865,10 +10736,9 @@ msgid "" "cooling is enabled, when printing overhangs and when feature speeds are not " "specified explicitly." msgstr "" -"La velocità di stampa minima per il filamento quando è abilitato il " -"rallentamento per un migliore raffreddamento dello strato, quando le " -"sporgenze di stampa e quando le velocità delle caratteristiche non sono " -"specificate esplicitamente." +"La velocità di stampa minima per il filamento quando è abilitato il rallentamento " +"per un migliore raffreddamento dello strato, quando le sporgenze di stampa e " +"quando le velocità delle caratteristiche non sono specificate esplicitamente." msgid "Nozzle diameter" msgstr "Diametro Nozzle" @@ -10906,76 +10776,72 @@ msgid "Cooling tube position" msgstr "Posizione tubo di raffreddamento" msgid "Distance of the center-point of the cooling tube from the extruder tip." -msgstr "" -"Distanza del centro del tubo di raffreddamento dalla punta dell'estrusore." +msgstr "Distanza del centro del tubo di raffreddamento dalla punta dell'estrusore." msgid "Cooling tube length" msgstr "Lunghezza del tubo di raffreddamento" msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "" -"Lunghezza del tubo di raffreddamento per limitare lo spazio per i movimenti " -"di raffreddamento al suo interno." +"Lunghezza del tubo di raffreddamento per limitare lo spazio per i movimenti di " +"raffreddamento al suo interno." msgid "High extruder current on filament swap" msgstr "Alta corrente estrusore al cambio filamento" msgid "" -"It may be beneficial to increase the extruder motor current during the " -"filament exchange sequence to allow for rapid ramming feed rates and to " -"overcome resistance when loading a filament with an ugly shaped tip." +"It may be beneficial to increase the extruder motor current during the filament " +"exchange sequence to allow for rapid ramming feed rates and to overcome " +"resistance when loading a filament with an ugly shaped tip." msgstr "" "Potrebbe essere utile aumentare la corrente del motore estrusore durante la " -"sequenza di cambio filamento per permettere un avanzamento rapido del " -"ramming e per superare la resistenza durante il caricamento di un filamento " -"con una punta deformata." +"sequenza di cambio filamento per permettere un avanzamento rapido del ramming e " +"per superare la resistenza durante il caricamento di un filamento con una punta " +"deformata." msgid "Filament parking position" msgstr "Posizione di parcheggio del filamento" msgid "" -"Distance of the extruder tip from the position where the filament is parked " -"when unloaded. This should match the value in printer firmware." +"Distance of the extruder tip from the position where the filament is parked when " +"unloaded. This should match the value in printer firmware." msgstr "" -"Distanza della punta dell'estrusore dalla posizione dove il filamento viene " -"posto mentre viene scaricato. Dovrebbe essere uguale al valore nel firmware " -"della stampante." +"Distanza della punta dell'estrusore dalla posizione dove il filamento viene posto " +"mentre viene scaricato. Dovrebbe essere uguale al valore nel firmware della " +"stampante." msgid "Extra loading distance" msgstr "Distanza di caricamento aggiuntiva" msgid "" -"When set to zero, the distance the filament is moved from parking position " -"during load is exactly the same as it was moved back during unload. When " -"positive, it is loaded further, if negative, the loading move is shorter " -"than unloading." +"When set to zero, the distance the filament is moved from parking position during " +"load is exactly the same as it was moved back during unload. When positive, it is " +"loaded further, if negative, the loading move is shorter than unloading." msgstr "" "Quando impostato a zero, la distanza percorsa dal filamento in posizione di " -"parcheggio durante il caricamento è esattamente uguale a quella contraria " -"durante lo scaricamento. Quando il valore è positivo, viene caricato " -"maggiormente, se il valore è negativo il movimento di caricamento è più " -"corto dello scaricamento." +"parcheggio durante il caricamento è esattamente uguale a quella contraria durante " +"lo scaricamento. Quando il valore è positivo, viene caricato maggiormente, se il " +"valore è negativo il movimento di caricamento è più corto dello scaricamento." msgid "Start end points" msgstr "Punti iniziali e finali" msgid "The start and end points which is from cutter area to garbage can." msgstr "" -"I punti di partenza e arrivo che si trovano dall'area del taglio allo " -"scarico." +"I punti di partenza e arrivo che si trovano dall'area del taglio allo scarico." msgid "Reduce infill retraction" msgstr "Riduci la retrazione nel riempimento" msgid "" -"Don't retract when the travel is in infill area absolutely. That means the " -"oozing can't been seen. This can reduce times of retraction for complex " -"model and save printing time, but make slicing and G-code generating slower" +"Don't retract when the travel is in infill area absolutely. That means the oozing " +"can't been seen. This can reduce times of retraction for complex model and save " +"printing time, but make slicing and G-code generating slower" msgstr "" "Non ritrarre quando gli spostamenti si trovano interamente ad un'area di " "riempimento. Ciò significa che il gocciolamento non verrà visto. Questo può " -"ridurre i tempi di ritrazione per i modelli complessi e far risparmiare " -"tempo di stampa, ma rende lo slicing e la generazione del G-code più lento." +"ridurre i tempi di ritrazione per i modelli complessi e far risparmiare tempo di " +"stampa, ma rende lo slicing e la generazione del G-code più lento." msgid "Enable" msgstr "Abilita" @@ -10984,38 +10850,35 @@ msgid "Filename format" msgstr "Formato nome file" msgid "User can self-define the project file name when export" -msgstr "" -"Gli utenti possono decidere i nomi dei file progetto nell'esportazione." +msgstr "Gli utenti possono decidere i nomi dei file progetto nell'esportazione." msgid "Make overhangs printable" msgstr "Rendi stampabile la sporgenza" msgid "Modify the geometry to print overhangs without support material." -msgstr "" -"Modificare la geometria per stampare sporgenze senza materiale di supporto." +msgstr "Modificare la geometria per stampare sporgenze senza materiale di supporto." msgid "Make overhangs printable - Maximum angle" msgstr "Rendi la sporgenza stampabile angolo massimo" msgid "" "Maximum angle of overhangs to allow after making more steep overhangs " -"printable.90° will not change the model at all and allow any overhang, while " -"0 will replace all overhangs with conical material." +"printable.90° will not change the model at all and allow any overhang, while 0 " +"will replace all overhangs with conical material." msgstr "" -"Angolo massimo delle sporgenze da consentire dopo aver reso stampabili " -"sporgenze più ripide.90° non cambierà affatto il modello e consentirà alcuna " -"sporgenza, mentre 0 sostituirà tutte le sporgenze con materiale conico." +"Angolo massimo delle sporgenze da consentire dopo aver reso stampabili sporgenze " +"più ripide.90° non cambierà affatto il modello e consentirà alcuna sporgenza, " +"mentre 0 sostituirà tutte le sporgenze con materiale conico." msgid "Make overhangs printable - Hole area" msgstr "Rendere stampabile l'area del foro sporgente" msgid "" -"Maximum area of a hole in the base of the model before it's filled by " -"conical material.A value of 0 will fill all the holes in the model base." +"Maximum area of a hole in the base of the model before it's filled by conical " +"material.A value of 0 will fill all the holes in the model base." msgstr "" "Area massima di un foro nella base del modello prima che venga riempito da " -"materiale conico. Un valore pari a 0 riempirà tutti i fori nella base del " -"modello." +"materiale conico. Un valore pari a 0 riempirà tutti i fori nella base del modello." msgid "mm²" msgstr "mm²" @@ -11025,19 +10888,19 @@ msgstr "Rileva parete a sbalzo" #, c-format, boost-format msgid "" -"Detect the overhang percentage relative to line width and use different " -"speed to print. For 100%% overhang, bridge speed is used." +"Detect the overhang percentage relative to line width and use different speed to " +"print. For 100%% overhang, bridge speed is used." msgstr "" -"Rileva la percentuale di sporgenza rispetto alla larghezza della linea e " -"utilizza velocità diverse per stampare. Per una sporgenza di 100%%, viene " -"utilizzata la velocità del ponte." +"Rileva la percentuale di sporgenza rispetto alla larghezza della linea e utilizza " +"velocità diverse per stampare. Per una sporgenza di 100%%, viene utilizzata la " +"velocità del ponte." msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." msgstr "" -"Larghezza della linea della parete interna. Se espresso come %, verrà " -"calcolato sul diametro dell'ugello." +"Larghezza della linea della parete interna. Se espresso come %, verrà calcolato " +"sul diametro dell'ugello." msgid "Speed of inner wall" msgstr "E' la velocità per le pareti interne." @@ -11046,31 +10909,39 @@ msgid "Number of walls of every layer" msgstr "Questo è il numero di pareti per layer." msgid "Alternate extra wall" -msgstr "" +msgstr "Parete aggiuntiva alternativa" msgid "" -"This setting adds an extra wall to every other layer. This way the infill " -"gets wedged vertically between the walls, resulting in stronger prints. \n" +"This setting adds an extra wall to every other layer. This way the infill gets " +"wedged vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option " -"needs to be disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option needs to " +"be disabled. \n" "\n" -"Using lightning infill together with this option is not recommended as there " -"is limited infill to anchor the extra perimeters to." +"Using lightning infill together with this option is not recommended as there is " +"limited infill to anchor the extra perimeters to." msgstr "" +"Questa impostazione aggiunge un muro extra a ogni altro livello. In questo modo " +"il riempimento si incastra verticalmente tra le pareti, ottenendo stampe più " +"resistenti. \n" +"\n" +"Quando questa opzione è abilitata, l'opzione Assicura spessore guscio verticale " +"deve essere disabilitata. \n" +"\n" +"L'utilizzo del riempimento fulmineo insieme a questa opzione non è raccomandato " +"in quanto il riempimento è limitato a cui ancorare i perimetri extra." msgid "" -"If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Orca Slicer config settings by reading " -"environment variables." +"If you want to process the output G-code through custom scripts, just list their " +"absolute paths here. Separate multiple scripts with a semicolon. Scripts will be " +"passed the absolute path to the G-code file as the first argument, and they can " +"access the Orca Slicer config settings by reading environment variables." msgstr "" -"Se vuoi processare il G-code in uscita con script personalizzati, basta " -"elencare qui il loro percorso assoluto. Separa i diversi script con un punto " -"e virgola. Gli script passeranno il percorso assoluto nel G-code come primo " -"argomento, e potranno accedere alle impostazioni di configurazione di Orca Slicer " -"leggendo le variabili di ambiente." +"Se vuoi processare il G-code in uscita con script personalizzati, basta elencare " +"qui il loro percorso assoluto. Separa i diversi script con un punto e virgola. " +"Gli script passeranno il percorso assoluto nel G-code come primo argomento, e " +"potranno accedere alle impostazioni di configurazione di Orca Slicer leggendo le " +"variabili di ambiente." msgid "Printer notes" msgstr "Note stampante" @@ -11102,8 +10973,8 @@ msgstr "Espansione primo layer" msgid "Expand the first raft or support layer to improve bed plate adhesion" msgstr "" -"Questo espande il primo raft o layer di supporto per migliorare l'adesione " -"al piatto." +"Questo espande il primo raft o layer di supporto per migliorare l'adesione al " +"piatto." msgid "Raft layers" msgstr "Layer raft" @@ -11116,21 +10987,20 @@ msgstr "" "questa funzione per evitare deformazioni durante la stampa di ABS." msgid "" -"G-code path is genereated after simplifing the contour of model to avoid too " -"much points and gcode lines in gcode file. Smaller value means higher " -"resolution and more time to slice" +"G-code path is genereated after simplifing the contour of model to avoid too much " +"points and gcode lines in gcode file. Smaller value means higher resolution and " +"more time to slice" msgstr "" "Il percorso del G-code viene generato dopo aver semplificato il contorno del " "modello per evitare molti punti e linee nel file G-code.\n" -"Un valore più piccolo significa una risoluzione più elevata e un tempo " -"maggiore per l'elaborazione" +"Un valore più piccolo significa una risoluzione più elevata e un tempo maggiore " +"per l'elaborazione" msgid "Travel distance threshold" msgstr "Soglia distanza di spostamento" msgid "" -"Only trigger retraction when the travel distance is longer than this " -"threshold" +"Only trigger retraction when the travel distance is longer than this threshold" msgstr "" "L'attivazione della retrazione avviene solo quando la distanza percorsa è " "superiore a questa soglia." @@ -11138,8 +11008,7 @@ msgstr "" msgid "Retract amount before wipe" msgstr "Retrai la quantità prima di pulire" -msgid "" -"The length of fast retraction before wipe, relative to retraction length" +msgid "The length of fast retraction before wipe, relative to retraction length" msgstr "" "È la lunghezza della retrazione rapida prima di una pulizia, rispetto alla " "lunghezza di retrazione." @@ -11166,13 +11035,13 @@ msgstr "Z hop in fase retrazione" msgid "" "Whenever the retraction is done, the nozzle is lifted a little to create " -"clearance between nozzle and the print. It prevents nozzle from hitting the " -"print when travel move. Using spiral line to lift z can prevent stringing" +"clearance between nozzle and the print. It prevents nozzle from hitting the print " +"when travel move. Using spiral line to lift z can prevent stringing" msgstr "" -"Ogni volta che si verifica una retrazione, il nozzle viene sollevato " -"leggermente per creare spazio tra nozzle e stampa. Ciò impedisce al nozzle " -"di colpire la stampa quando si viaggia di più. L'uso di linee a spirale per " -"sollevare z può evitare che si stringano." +"Ogni volta che si verifica una retrazione, il nozzle viene sollevato leggermente " +"per creare spazio tra nozzle e stampa. Ciò impedisce al nozzle di colpire la " +"stampa quando si viaggia di più. L'uso di linee a spirale per sollevare z può " +"evitare che si stringano." msgid "Z hop lower boundary" msgstr "Limite inferiore dell'hop Z" @@ -11181,19 +11050,18 @@ msgid "" "Z hop will only come into effect when Z is above this value and is below the " "parameter: \"Z hop upper boundary\"" msgstr "" -"L'hop Z avrà effetto solo quando Z è al di sopra di questo valore e si trova " -"al di sotto del parametro: \"Limite superiore dell'hop Z\"" +"L'hop Z avrà effetto solo quando Z è al di sopra di questo valore e si trova al " +"di sotto del parametro: \"Limite superiore dell'hop Z\"" msgid "Z hop upper boundary" msgstr "Limite superiore dell'hop Z" msgid "" -"If this value is positive, Z hop will only come into effect when Z is above " -"the parameter: \"Z hop lower boundary\" and is below this value" +"If this value is positive, Z hop will only come into effect when Z is above the " +"parameter: \"Z hop lower boundary\" and is below this value" msgstr "" -"Se questo valore è positivo, l'hop Z avrà effetto solo quando Z si trova al " -"di sopra del parametro: \"Z hop lower boundary\" ed è al di sotto di questo " -"valore" +"Se questo valore è positivo, l'hop Z avrà effetto solo quando Z si trova al di " +"sopra del parametro: \"Z hop lower boundary\" ed è al di sotto di questo valore" msgid "Z hop type" msgstr "Tipo Z Hop" @@ -11211,8 +11079,8 @@ msgid "" "If you set this to a positive value, Z lift will only take place above the " "specified absolute Z." msgstr "" -"Se si imposta questo valore su un valore positivo, l'aumento Z si " -"verificherà solo al di sopra dello Z assoluto specificato." +"Se si imposta questo valore su un valore positivo, l'aumento Z si verificherà " +"solo al di sopra dello Z assoluto specificato." msgid "Only lift Z below" msgstr "Solleva Z solo al di sotto" @@ -11221,15 +11089,15 @@ msgid "" "If you set this to a positive value, Z lift will only take place below the " "specified absolute Z." msgstr "" -"Se si imposta questo valore su un valore positivo, l'aumento Z si " -"verificherà solo al di sotto dello Z assoluto specificato." +"Se si imposta questo valore su un valore positivo, l'aumento Z si verificherà " +"solo al di sotto dello Z assoluto specificato." msgid "On surfaces" msgstr "Tutte le superfici superiori" msgid "" -"Enforce Z Hop behavior. This setting is impacted by the above settings (Only " -"lift Z above/below)." +"Enforce Z Hop behavior. This setting is impacted by the above settings (Only lift " +"Z above/below)." msgstr "" "Applicare il comportamento Z Hop. Questa impostazione è influenzata dalle " "impostazioni di cui sopra (solo sollevare Z sopra/sotto)." @@ -11250,19 +11118,19 @@ msgid "Extra length on restart" msgstr "Lunghezza extra in ripresa" msgid "" -"When the retraction is compensated after the travel move, the extruder will " -"push this additional amount of filament. This setting is rarely needed." +"When the retraction is compensated after the travel move, the extruder will push " +"this additional amount of filament. This setting is rarely needed." msgstr "" -"Quando la retrazione è compensata dopo un movimento di spostamento, " -"l'estrusore spingerà questa quantità addizionale di filamento. Questa " -"impostazione è raramente necessaria." +"Quando la retrazione è compensata dopo un movimento di spostamento, l'estrusore " +"spingerà questa quantità addizionale di filamento. Questa impostazione è " +"raramente necessaria." msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." +"When the retraction is compensated after changing tool, the extruder will push " +"this additional amount of filament." msgstr "" -"Quando la retrazione è compensata dopo un cambio strumento, l'estrusore " -"spingerà questa quantità addizionale di filamento." +"Quando la retrazione è compensata dopo un cambio strumento, l'estrusore spingerà " +"questa quantità addizionale di filamento." msgid "Retraction Speed" msgstr "Velocità di retrazione" @@ -11274,22 +11142,21 @@ msgid "Deretraction Speed" msgstr "Velocità di deretrazione" msgid "" -"Speed for reloading filament into extruder. Zero means same speed with " -"retraction" +"Speed for reloading filament into extruder. Zero means same speed with retraction" msgstr "" -"La velocità di ricarica filamento nell'estrusore dopo una retrazione; " -"impostando 0, la velocità sarà la stessa della retrazione." +"La velocità di ricarica filamento nell'estrusore dopo una retrazione; impostando " +"0, la velocità sarà la stessa della retrazione." msgid "Use firmware retraction" msgstr "Usa retrazione firmware" msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." +"This experimental setting uses G10 and G11 commands to have the firmware handle " +"the retraction. This is only supported in recent Marlin." msgstr "" -"Questa impostazione sperimentale utilizza i comandi G10 e G11 per fare in " -"modo che il firmware gestisca la ritrazione. Questo è supportato solo nel " -"recente Marlin." +"Questa impostazione sperimentale utilizza i comandi G10 e G11 per fare in modo " +"che il firmware gestisca la ritrazione. Questo è supportato solo nel recente " +"Marlin." msgid "Show auto-calibration marks" msgstr "Mostra segni di autocalibrazione" @@ -11319,34 +11186,34 @@ msgid "Staggered inner seams" msgstr "Giunzioni interne sfalsate" msgid "" -"This option causes the inner seams to be shifted backwards based on their " -"depth, forming a zigzag pattern." +"This option causes the inner seams to be shifted backwards based on their depth, " +"forming a zigzag pattern." msgstr "" -"Questa opzione fa sì che le giunzioni interne vengano spostate all'indietro " -"in base alla loro profondità, formando un motivo a zig-zag." +"Questa opzione fa sì che le giunzioni interne vengano spostate all'indietro in " +"base alla loro profondità, formando un motivo a zig-zag." msgid "Seam gap" msgstr "Fessura di cucitura" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, " -"the loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current extruder diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, the " +"loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the current " +"extruder diameter. The default value for this parameter is 10%." msgstr "" "Per ridurre la visibilità della cucitura in un'estrusione ad anello chiuso, " "l'anello viene interrotto e accorciato di una quantità specificata.\n" "Questa quantità può essere specificata in millimetri o come percentuale del " -"diametro corrente dell'estrusore. Il valore predefinito per questo parametro " -"è 10%." +"diametro corrente dell'estrusore. Il valore predefinito per questo parametro è " +"10%." msgid "Role base wipe speed" msgstr "Wipe Speed" msgid "" -"The wipe speed is determined by the speed of the current extrusion role.e.g. " -"if a wipe action is executed immediately following an outer wall extrusion, " -"the speed of the outer wall extrusion will be utilized for the wipe action." +"The wipe speed is determined by the speed of the current extrusion role.e.g. if a " +"wipe action is executed immediately following an outer wall extrusion, the speed " +"of the outer wall extrusion will be utilized for the wipe action." msgstr "" "La velocità di pulizia è determinata dalla velocità del ruolo di estrusione " "corrente, ad es. Se un'azione di pulizia viene eseguita immediatamente dopo " @@ -11357,41 +11224,49 @@ msgid "Wipe on loops" msgstr "Pulisci sui loop" msgid "" -"To minimize the visibility of the seam in a closed loop extrusion, a small " -"inward movement is executed before the extruder leaves the loop." +"To minimize the visibility of the seam in a closed loop extrusion, a small inward " +"movement is executed before the extruder leaves the loop." msgstr "" -"Per ridurre al minimo la visibilità della cucitura in un'estrusione ad " -"anello chiuso, viene eseguito un piccolo movimento verso l'interno prima che " -"l'estrusore lasci l'anello." +"Per ridurre al minimo la visibilità della cucitura in un'estrusione ad anello " +"chiuso, viene eseguito un piccolo movimento verso l'interno prima che l'estrusore " +"lasci l'anello." msgid "Wipe before external loop" -msgstr "" +msgstr "Pulire prima del loop esterno" msgid "" -"To minimise visibility of potential overextrusion at the start of an " -"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order, the deretraction is performed slightly on the inside from the " -"start of the external perimeter. That way any potential over extrusion is " -"hidden from the outside surface. \n" +"To minimise visibility of potential overextrusion at the start of an external " +"perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print order, " +"the deretraction is performed slightly on the inside from the start of the " +"external perimeter. That way any potential over extrusion is hidden from the " +"outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order as in these modes it is more likely an external perimeter is " -"printed immediately after a deretraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print " +"order as in these modes it is more likely an external perimeter is printed " +"immediately after a deretraction move." msgstr "" +"Per ridurre al minimo la visibilità di una potenziale sovraestrusione all'inizio " +"di un perimetro esterno quando si stampa con l'ordine di stampa Esterno/Interno o " +"Interno/Esterno/Interno/Parete interna, la deretrazione viene eseguita " +"leggermente all'interno dall'inizio del perimetro esterno. In questo modo " +"qualsiasi potenziale sovraestrusione viene nascosta dalla superficie esterna. \n" +"\n" +"Ciò è utile quando si stampa con l'ordine di stampa Esterno/Interno o Interno/" +"Esterno/Interno parete, poiché in queste modalità è più probabile che venga " +"stampato un perimetro esterno immediatamente dopo un movimento di retrazione." msgid "Wipe speed" msgstr "Velocità di pulizia" msgid "" -"The wipe speed is determined by the speed setting specified in this " -"configuration.If the value is expressed as a percentage (e.g. 80%), it will " -"be calculated based on the travel speed setting above.The default value for " -"this parameter is 80%" +"The wipe speed is determined by the speed setting specified in this configuration." +"If the value is expressed as a percentage (e.g. 80%), it will be calculated based " +"on the travel speed setting above.The default value for this parameter is 80%" msgstr "" -"La velocità di pulizia è determinata dall'impostazione della velocità " -"specificata in questa configurazione. Se il valore è espresso in percentuale " -"(ad es. 80%), verrà calcolato in base all'impostazione della velocità di " -"traslazione di cui sopra. Il valore predefinito per questo parametro è 80%" +"La velocità di pulizia è determinata dall'impostazione della velocità specificata " +"in questa configurazione. Se il valore è espresso in percentuale (ad es. 80%), " +"verrà calcolato in base all'impostazione della velocità di traslazione di cui " +"sopra. Il valore predefinito per questo parametro è 80%" msgid "Skirt distance" msgstr "Distanza Skirt" @@ -11417,8 +11292,8 @@ msgstr "Velocità Skirt " msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." msgstr "" -"Velocità del gonna, in mm/s. Zero significa utilizzare la velocità di " -"estrusione dello strato predefinita." +"Velocità del gonna, in mm/s. Zero significa utilizzare la velocità di estrusione " +"dello strato predefinita." msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " @@ -11432,45 +11307,45 @@ msgid "Minimum sparse infill threshold" msgstr "Soglia minima riempimento" msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " -"internal solid infill" +"Sparse infill area which is smaller than threshold value is replaced by internal " +"solid infill" msgstr "" -"L'area riempimento che è inferiore al valore di soglia viene sostituita da " -"un riempimento solido interno." +"L'area riempimento che è inferiore al valore di soglia viene sostituita da un " +"riempimento solido interno." msgid "" -"Line width of internal solid infill. If expressed as a %, it will be " -"computed over the nozzle diameter." +"Line width of internal solid infill. If expressed as a %, it will be computed " +"over the nozzle diameter." msgstr "" -"Larghezza della linea del riempimento solido interno. Se espresso come %, " -"verrà calcolato sul diametro dell'ugello." +"Larghezza della linea del riempimento solido interno. Se espresso come %, verrà " +"calcolato sul diametro dell'ugello." msgid "Speed of internal solid infill, not the top and bottom surface" msgstr "" -"E' la velocità del riempimento solido interno, esclusa la superficie " -"superiore o inferiore." +"E' la velocità del riempimento solido interno, esclusa la superficie superiore o " +"inferiore." msgid "Spiral vase" msgstr "Vaso a spirale" msgid "" -"Spiralize smooths out the z moves of the outer contour. And turns a solid " -"model into a single walled print with solid bottom layers. The final " -"generated model has no seam" +"Spiralize smooths out the z moves of the outer contour. And turns a solid model " +"into a single walled print with solid bottom layers. The final generated model " +"has no seam" msgstr "" -"Consente la stampa a spirale, che attenua i movimenti Z del contorno esterno " -"e trasforma un modello solido in una stampa a parete singola con layers " -"inferiori solidi. Il modello finale generato non presenta alcuna giunzione." +"Consente la stampa a spirale, che attenua i movimenti Z del contorno esterno e " +"trasforma un modello solido in una stampa a parete singola con layers inferiori " +"solidi. Il modello finale generato non presenta alcuna giunzione." msgid "Smooth Spiral" msgstr "Spirale liscia" msgid "" -"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam " -"at all, even in the XY directions on walls that are not vertical" +"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam at " +"all, even in the XY directions on walls that are not vertical" msgstr "" -"Smooth Spiral leviga anche i movimenti X e Y, senza alcuna cucitura " -"visibile, anche nelle direzioni XY su pareti che non sono verticali" +"Smooth Spiral leviga anche i movimenti X e Y, senza alcuna cucitura visibile, " +"anche nelle direzioni XY su pareti che non sono verticali" msgid "Max XY Smoothing" msgstr "Levigatura Max XY" @@ -11479,27 +11354,26 @@ msgid "" "Maximum distance to move points in XY to try to achieve a smooth spiralIf " "expressed as a %, it will be computed over nozzle diameter" msgstr "" -"Distanza massima per spostare i punti in XY per cercare di ottenere una " -"spirale uniformeSe espressa come %, verrà calcolata sul diametro dell'ugello" +"Distanza massima per spostare i punti in XY per cercare di ottenere una spirale " +"uniformeSe espressa come %, verrà calcolata sul diametro dell'ugello" msgid "" -"If smooth or traditional mode is selected, a timelapse video will be " -"generated for each print. After each layer is printed, a snapshot is taken " -"with the chamber camera. All of these snapshots are composed into a " -"timelapse video when printing completes. If smooth mode is selected, the " -"toolhead will move to the excess chute after each layer is printed and then " -"take a snapshot. Since the melt filament may leak from the nozzle during the " -"process of taking a snapshot, prime tower is required for smooth mode to " -"wipe nozzle." +"If smooth or traditional mode is selected, a timelapse video will be generated " +"for each print. After each layer is printed, a snapshot is taken with the chamber " +"camera. All of these snapshots are composed into a timelapse video when printing " +"completes. If smooth mode is selected, the toolhead will move to the excess chute " +"after each layer is printed and then take a snapshot. Since the melt filament may " +"leak from the nozzle during the process of taking a snapshot, prime tower is " +"required for smooth mode to wipe nozzle." msgstr "" -"Se si seleziona la modalità \"Smooth\" o \"Tradizionale\", per ogni stampa " -"viene generato un video in timelapse. Dopo la stampa di ogni layer, viene " -"scattata una foto.Tutte queste foto verranno unite per creare un video " -"timelapse al termine della stampa. Se si seleziona \"Smooth\", la testa di " -"stampa si sposta sullo scivolo di spurgo posteriore dopo la stampa di ogni " -"layer e poi scatta una foto. Poiché il filamento può fuoriuscire dal nozzle " -"durante il processo di acquisizione della foto, la modalità \"Smooth\" ha " -"bisogno che venga utilizzata la prime tower per pulire il nozzle." +"Se si seleziona la modalità \"Smooth\" o \"Tradizionale\", per ogni stampa viene " +"generato un video in timelapse. Dopo la stampa di ogni layer, viene scattata una " +"foto.Tutte queste foto verranno unite per creare un video timelapse al termine " +"della stampa. Se si seleziona \"Smooth\", la testa di stampa si sposta sullo " +"scivolo di spurgo posteriore dopo la stampa di ogni layer e poi scatta una foto. " +"Poiché il filamento può fuoriuscire dal nozzle durante il processo di " +"acquisizione della foto, la modalità \"Smooth\" ha bisogno che venga utilizzata " +"la prime tower per pulire il nozzle." msgid "Traditional" msgstr "Tradizionale" @@ -11528,15 +11402,14 @@ msgstr "Cambio manuale del filamento" msgid "" "Enable this option to omit the custom Change filament G-code only at the " "beginning of the print. The tool change command (e.g., T0) will be skipped " -"throughout the entire print. This is useful for manual multi-material " -"printing, where we use M600/PAUSE to trigger the manual filament change " -"action." +"throughout the entire print. This is useful for manual multi-material printing, " +"where we use M600/PAUSE to trigger the manual filament change action." msgstr "" -"Abilita questa opzione per omettere il codice G Cambia filamento " -"personalizzato solo all'inizio della stampa. Il comando di cambio utensile " -"(ad es. T0) verrà saltato durante l'intera stampa. Ciò è utile per la stampa " -"manuale multi-materiale, in cui utilizziamo M600/PAUSE per attivare l'azione " -"di cambio filamento manuale." +"Abilita questa opzione per omettere il codice G Cambia filamento personalizzato " +"solo all'inizio della stampa. Il comando di cambio utensile (ad es. T0) verrà " +"saltato durante l'intera stampa. Ciò è utile per la stampa manuale multi-" +"materiale, in cui utilizziamo M600/PAUSE per attivare l'azione di cambio " +"filamento manuale." msgid "Purge in prime tower" msgstr "Spurga nella Prime tower" @@ -11551,36 +11424,35 @@ msgid "No sparse layers (EXPERIMENTAL)" msgstr "Nessun layer sparso (SPERIMENTALE)" msgid "" -"If enabled, the wipe tower will not be printed on layers with no " -"toolchanges. On layers with a toolchange, extruder will travel downward to " -"print the wipe tower. User is responsible for ensuring there is no collision " -"with the print." +"If enabled, the wipe tower will not be printed on layers with no toolchanges. On " +"layers with a toolchange, extruder will travel downward to print the wipe tower. " +"User is responsible for ensuring there is no collision with the print." msgstr "" "Se attiva, la torre di pulitura non verrà stampata sui layer senza cambio " -"strumento. Sui layer con un cambio strumento, l'estrusore si sposterà verso " -"il basso per stampare la torre di pulitura. L'utente dovrà accertarsi che " -"non avvengano collisioni con la stampa." +"strumento. Sui layer con un cambio strumento, l'estrusore si sposterà verso il " +"basso per stampare la torre di pulitura. L'utente dovrà accertarsi che non " +"avvengano collisioni con la stampa." msgid "Prime all printing extruders" msgstr "Prepara tutti gli estrusori di stampa" msgid "" -"If enabled, all printing extruders will be primed at the front edge of the " -"print bed at the start of the print." +"If enabled, all printing extruders will be primed at the front edge of the print " +"bed at the start of the print." msgstr "" -"Se attivata, tutti gli estrusori di stampa verranno preparati nel bordo " -"frontale del piano di stampa all'inizio della stampa." +"Se attivata, tutti gli estrusori di stampa verranno preparati nel bordo frontale " +"del piano di stampa all'inizio della stampa." msgid "Slice gap closing radius" msgstr "Raggio chiusura del gap" msgid "" -"Cracks smaller than 2x gap closing radius are being filled during the " -"triangle mesh slicing. The gap closing operation may reduce the final print " -"resolution, therefore it is advisable to keep the value reasonably low." +"Cracks smaller than 2x gap closing radius are being filled during the triangle " +"mesh slicing. The gap closing operation may reduce the final print resolution, " +"therefore it is advisable to keep the value reasonably low." msgstr "" -"Le fessure più piccole di 2X del gap vengono riempite durante lo slicing " -"della mesh del triangolo.\n" +"Le fessure più piccole di 2X del gap vengono riempite durante lo slicing della " +"mesh del triangolo.\n" "L'operazione di chiusura della fessura può ridurre la risoluzione di stampa " "finale.\n" "Si consiglia di mantenere un valore ragionevolmente basso." @@ -11589,8 +11461,8 @@ msgid "Slicing Mode" msgstr "Modalità slicing" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " -"close all holes in the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all " +"holes in the model." msgstr "" "Usa \"Pari-dispari\" per modelli di aeroplano 3DLabPrint. Utilizza \"Chiudi " "fori\" per chiudere tutti i fori del modello." @@ -11608,16 +11480,15 @@ msgid "Z offset" msgstr "Offset Z" msgid "" -"This value will be added (or subtracted) from all the Z coordinates in the " -"output G-code. It is used to compensate for bad Z endstop position: for " -"example, if your endstop zero actually leaves the nozzle 0.3mm far from the " -"print bed, set this to -0.3 (or fix your endstop)." +"This value will be added (or subtracted) from all the Z coordinates in the output " +"G-code. It is used to compensate for bad Z endstop position: for example, if your " +"endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to " +"-0.3 (or fix your endstop)." msgstr "" -"Questo valore sarà aggiunto (o sottratto) da tutte le coordinate Z nel G-" -"code di output. Viene utilizzato per compensare una posizione di finecorsa Z " -"errata: per esempio, se la posizione minima del finecorsa rimane in realtà " -"0.3mm lontano dal piano, imposta questo valore a -0.3 (o sistema il " -"finecorsa)." +"Questo valore sarà aggiunto (o sottratto) da tutte le coordinate Z nel G-code di " +"output. Viene utilizzato per compensare una posizione di finecorsa Z errata: per " +"esempio, se la posizione minima del finecorsa rimane in realtà 0.3mm lontano dal " +"piano, imposta questo valore a -0.3 (o sistema il finecorsa)." msgid "Enable support" msgstr "Abilita supporti" @@ -11627,12 +11498,11 @@ msgstr "Abilita la generazione dei supporti." msgid "" "normal(auto) and tree(auto) is used to generate support automatically. If " -"normal(manual) or tree(manual) is selected, only support enforcers are " -"generated" +"normal(manual) or tree(manual) is selected, only support enforcers are generated" msgstr "" -"normale(auto) e albero(auto) sono usati per generare automaticamente i " -"supporti. Se si seleziona normale(manuale) o albero(manuale), vengono " -"generati solo gli esecutori del supporto." +"normale(auto) e albero(auto) sono usati per generare automaticamente i supporti. " +"Se si seleziona normale(manuale) o albero(manuale), vengono generati solo gli " +"esecutori del supporto." msgid "normal(auto)" msgstr "normal(auto)" @@ -11668,11 +11538,10 @@ msgid "Support critical regions only" msgstr "Supporta solo aree critiche" msgid "" -"Only create support for critical regions including sharp tail, cantilever, " -"etc." +"Only create support for critical regions including sharp tail, cantilever, etc." msgstr "" -"Creare il supporto solo per le regioni critiche, tra cui una estremità " -"tagliente, sbalzo, ecc." +"Creare il supporto solo per le regioni critiche, tra cui una estremità tagliente, " +"sbalzo, ecc." msgid "Remove small overhangs" msgstr "Rimuovere piccole sporgenze" @@ -11698,25 +11567,24 @@ msgid "Support/raft base" msgstr "Base supporto/raft" msgid "" -"Filament to print support base and raft. \"Default\" means no specific " -"filament for support and current filament is used" +"Filament to print support base and raft. \"Default\" means no specific filament " +"for support and current filament is used" msgstr "" -"Filamento per stampare basi di supporto e raft. \"Predefinito\" indica che " -"non viene utilizzato alcun filamento specifico per il supporto e viene " -"utilizzato il filamento corrente" +"Filamento per stampare basi di supporto e raft. \"Predefinito\" indica che non " +"viene utilizzato alcun filamento specifico per il supporto e viene utilizzato il " +"filamento corrente" msgid "Avoid interface filament for base" msgstr "Ridurre il filamento di interfaccia per la base" -msgid "" -"Avoid using support interface filament to print support base if possible." +msgid "Avoid using support interface filament to print support base if possible." msgstr "" -"Evitare l'uso del filamento dell'interfaccia di supporto per stampare la " -"base di supporto" +"Evitare l'uso del filamento dell'interfaccia di supporto per stampare la base di " +"supporto" msgid "" -"Line width of support. If expressed as a %, it will be computed over the " -"nozzle diameter." +"Line width of support. If expressed as a %, it will be computed over the nozzle " +"diameter." msgstr "" "Larghezza della linea di supporto. Se espresso come %, verrà calcolato sul " "diametro dell'ugello." @@ -11724,8 +11592,7 @@ msgstr "" msgid "Interface use loop pattern" msgstr "Loop pattern interface" -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." +msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" "Copre con anelli il layer superiore del supporto a contatto. Disattivato per " "impostazione predefinita." @@ -11734,12 +11601,12 @@ msgid "Support/raft interface" msgstr "Interfaccia supporto/raft" msgid "" -"Filament to print support interface. \"Default\" means no specific filament " -"for support interface and current filament is used" +"Filament to print support interface. \"Default\" means no specific filament for " +"support interface and current filament is used" msgstr "" -"Filamento per la stampa delle interfacce di supporto. \"Predefinito\" " -"significa che non esiste un filamento specifico per l'interfaccia di " -"supporto e che verrà utilizzato il filamento corrente." +"Filamento per la stampa delle interfacce di supporto. \"Predefinito\" significa " +"che non esiste un filamento specifico per l'interfaccia di supporto e che verrà " +"utilizzato il filamento corrente." msgid "Top interface layers" msgstr "Layer superiori di interfaccia " @@ -11788,12 +11655,12 @@ msgstr "Trama interfaccia" msgid "" "Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support " -"interface is Concentric" +"interface is Rectilinear, while default pattern for soluble support interface is " +"Concentric" msgstr "" -"Questo è la Trama lineare per le interfacce di supporto. Il modello " -"predefinito per le interfacce di supporto non solubili è rettilineo mentre " -"il modello predefinito per le interfacce di supporto solubili è concentrico." +"Questo è la Trama lineare per le interfacce di supporto. Il modello predefinito " +"per le interfacce di supporto non solubili è rettilineo mentre il modello " +"predefinito per le interfacce di supporto solubili è concentrico." msgid "Rectilinear Interlaced" msgstr "Rettilineo Interlacciato" @@ -11808,29 +11675,27 @@ msgid "Normal Support expansion" msgstr "Espansione normale dei supporti" msgid "Expand (+) or shrink (-) the horizontal span of normal support" -msgstr "" -"Espandere (+) o restringere (-) la portata orizzontale del supporto normale" +msgstr "Espandere (+) o restringere (-) la portata orizzontale del supporto normale" msgid "Speed of support" msgstr "E' la velocità del supporto." msgid "" -"Style and shape of the support. For normal support, projecting the supports " -"into a regular grid will create more stable supports (default), while snug " -"support towers will save material and reduce object scarring.\n" -"For tree support, slim and organic style will merge branches more " -"aggressively and save a lot of material (default organic), while hybrid " -"style will create similar structure to normal support under large flat " -"overhangs." +"Style and shape of the support. For normal support, projecting the supports into " +"a regular grid will create more stable supports (default), while snug support " +"towers will save material and reduce object scarring.\n" +"For tree support, slim and organic style will merge branches more aggressively " +"and save a lot of material (default organic), while hybrid style will create " +"similar structure to normal support under large flat overhangs." msgstr "" -"Stile e forma del supporto. Per il supporto normale, proiettare i supporti " -"in una griglia regolare creerà supporti più stabili (impostazione " -"predefinita), mentre le torri di supporto aderenti risparmieranno materiale " -"e ridurranno le cicatrici degli oggetti.\n" -"Per il supporto dell'albero, lo stile sottile e organico fonderà i rami in " -"modo più aggressivo e risparmierà molto materiale (organico predefinito), " -"mentre lo stile ibrido creerà una struttura simile al supporto normale sotto " -"grandi sporgenze piatte." +"Stile e forma del supporto. Per il supporto normale, proiettare i supporti in una " +"griglia regolare creerà supporti più stabili (impostazione predefinita), mentre " +"le torri di supporto aderenti risparmieranno materiale e ridurranno le cicatrici " +"degli oggetti.\n" +"Per il supporto dell'albero, lo stile sottile e organico fonderà i rami in modo " +"più aggressivo e risparmierà molto materiale (organico predefinito), mentre lo " +"stile ibrido creerà una struttura simile al supporto normale sotto grandi " +"sporgenze piatte." msgid "Snug" msgstr "Aderenti" @@ -11851,21 +11716,20 @@ msgid "Independent support layer height" msgstr "Altezza layer di supporto indipendente" msgid "" -"Support layer uses layer height independent with object layer. This is to " -"support customizing z-gap and save print time.This option will be invalid " -"when the prime tower is enabled." +"Support layer uses layer height independent with object layer. This is to support " +"customizing z-gap and save print time.This option will be invalid when the prime " +"tower is enabled." msgstr "" "Il layer di supporto utilizza l'altezza layer indipendentemente dal layer " -"dell'oggetto. Questo serve a supportare la personalizzazione di z-gap e " -"ridurre il tempo di stampa. Questa opzione non puó essere utilizzata quando " -"la Prime Tower è abilitata." +"dell'oggetto. Questo serve a supportare la personalizzazione di z-gap e ridurre " +"il tempo di stampa. Questa opzione non puó essere utilizzata quando la Prime " +"Tower è abilitata." msgid "Threshold angle" msgstr "Angolo di soglia" msgid "" -"Support will be generated for overhangs whose slope angle is below the " -"threshold." +"Support will be generated for overhangs whose slope angle is below the threshold." msgstr "" "Il supporto sarà generato per le sporgenze il cui angolo di inclinazione è " "inferiore alla soglia." @@ -11874,64 +11738,59 @@ msgid "Tree support branch angle" msgstr "Angolo ramo supporti ad albero" msgid "" -"This setting determines the maximum overhang angle that t he branches of " -"tree support allowed to make.If the angle is increased, the branches can be " -"printed more horizontally, allowing them to reach farther." +"This setting determines the maximum overhang angle that t he branches of tree " +"support allowed to make.If the angle is increased, the branches can be printed " +"more horizontally, allowing them to reach farther." msgstr "" -"Questa determina l'angolo massimo di sporgenza che i rami del supporto ad " -"albero possono raggiungere. Se l'angolo viene aumentato, i rami possono " -"essere stampati più orizzontalmente, permettendo loro di arrivare più " -"lontano." +"Questa determina l'angolo massimo di sporgenza che i rami del supporto ad albero " +"possono raggiungere. Se l'angolo viene aumentato, i rami possono essere stampati " +"più orizzontalmente, permettendo loro di arrivare più lontano." msgid "Preferred Branch Angle" msgstr "Angolo di diramazione preferito" #. TRN PrintSettings: "Organic supports" > "Preferred Branch Angle" msgid "" -"The preferred angle of the branches, when they do not have to avoid the " -"model. Use a lower angle to make them more vertical and more stable. Use a " -"higher angle for branches to merge faster." +"The preferred angle of the branches, when they do not have to avoid the model. " +"Use a lower angle to make them more vertical and more stable. Use a higher angle " +"for branches to merge faster." msgstr "" -"L'angolo di inclinazione preferito delle ramificazioni, quando non devono " -"evitare il modello. Utilizzare un angolo più basso per renderli più " -"verticali e più stabili. Utilizzare un angolo più alto per far sì che le " -"ramificazioni si uniscano più velocemente." +"L'angolo di inclinazione preferito delle ramificazioni, quando non devono evitare " +"il modello. Utilizzare un angolo più basso per renderli più verticali e più " +"stabili. Utilizzare un angolo più alto per far sì che le ramificazioni si " +"uniscano più velocemente." msgid "Tree support branch distance" msgstr "Distanza ramo supporti ad albero" -msgid "" -"This setting determines the distance between neighboring tree support nodes." -msgstr "" -"Questa determina la distanza tra i nodi di supporto dell'albero vicini." +msgid "This setting determines the distance between neighboring tree support nodes." +msgstr "Questa determina la distanza tra i nodi di supporto dell'albero vicini." msgid "Branch Density" msgstr "Densità Ramificazioni" #. TRN PrintSettings: "Organic supports" > "Branch Density" msgid "" -"Adjusts the density of the support structure used to generate the tips of " -"the branches. A higher value results in better overhangs but the supports " -"are harder to remove, thus it is recommended to enable top support " -"interfaces instead of a high branch density value if dense interfaces are " -"needed." +"Adjusts the density of the support structure used to generate the tips of the " +"branches. A higher value results in better overhangs but the supports are harder " +"to remove, thus it is recommended to enable top support interfaces instead of a " +"high branch density value if dense interfaces are needed." msgstr "" -"Regola la densità della struttura di supporto utilizzata per generare le " -"punte delle ramificazioni. Un valore più alto produce sporgenze migliori, ma " -"i supporti sono più difficili da rimuovere; si consiglia quindi di abilitare " -"l'interfaccia di supporto superiore invece di impostare un valore elevato di " -"densità delle ramificazioni, se sono necessarie interfacce dense." +"Regola la densità della struttura di supporto utilizzata per generare le punte " +"delle ramificazioni. Un valore più alto produce sporgenze migliori, ma i supporti " +"sono più difficili da rimuovere; si consiglia quindi di abilitare l'interfaccia " +"di supporto superiore invece di impostare un valore elevato di densità delle " +"ramificazioni, se sono necessarie interfacce dense." msgid "Adaptive layer height" msgstr "Altezza del livello adattivo" msgid "" -"Enabling this option means the height of tree support layer except the " -"first will be automatically calculated " +"Enabling this option means the height of tree support layer except the first " +"will be automatically calculated " msgstr "" -"L'attivazione di questa opzione significa che l'altezza del layer di " -"supporto dell'albero, ad eccezione del primo, verrà calcolata " -"automaticamente " +"L'attivazione di questa opzione significa che l'altezza del layer di supporto " +"dell'albero, ad eccezione del primo, verrà calcolata automaticamente " msgid "Auto brim width" msgstr "Larghezza automatica del bordo" @@ -11940,8 +11799,8 @@ msgid "" "Enabling this option means the width of the brim for tree support will be " "automatically calculated" msgstr "" -"Abilitando questa opzione, la larghezza della tesa per il supporto " -"dell'albero verrà calcolata automaticamente" +"Abilitando questa opzione, la larghezza della tesa per il supporto dell'albero " +"verrà calcolata automaticamente" msgid "Tree support brim width" msgstr "Larghezza brim supporto ad albero" @@ -11968,15 +11827,14 @@ msgstr "Angolo del diametro della diramazione" #. TRN PrintSettings: "Organic supports" > "Branch Diameter Angle" msgid "" -"The angle of the branches' diameter as they gradually become thicker towards " -"the bottom. An angle of 0 will cause the branches to have uniform thickness " -"over their length. A bit of an angle can increase stability of the organic " -"support." +"The angle of the branches' diameter as they gradually become thicker towards the " +"bottom. An angle of 0 will cause the branches to have uniform thickness over " +"their length. A bit of an angle can increase stability of the organic support." msgstr "" -"L'angolo del diametro delle ramificazioni che diventano gradualmente più " -"spesse verso il basso. Un angolo pari a 0 fa sì che le ramificazioni abbiano " -"uno spessore uniforme per tutta la loro lunghezza. Un angolo un po' più " -"ampio può aumentare la stabilità del supporto organico." +"L'angolo del diametro delle ramificazioni che diventano gradualmente più spesse " +"verso il basso. Un angolo pari a 0 fa sì che le ramificazioni abbiano uno " +"spessore uniforme per tutta la loro lunghezza. Un angolo un po' più ampio può " +"aumentare la stabilità del supporto organico." msgid "Branch Diameter with double walls" msgstr "Diametro diramazioni con pareti doppie" @@ -11984,12 +11842,12 @@ msgstr "Diametro diramazioni con pareti doppie" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" msgid "" "Branches with area larger than the area of a circle of this diameter will be " -"printed with double walls for stability. Set this value to zero for no " -"double walls." +"printed with double walls for stability. Set this value to zero for no double " +"walls." msgstr "" -"Le ramificazioni con un'area superiore all'area di un cerchio di questo " -"diametro verranno stampate con pareti doppie per garantire la stabilità. " -"Imposta questo valore a zero per non avere pareti doppie." +"Le ramificazioni con un'area superiore all'area di un cerchio di questo diametro " +"verranno stampate con pareti doppie per garantire la stabilità. Imposta questo " +"valore a zero per non avere pareti doppie." msgid "Support wall loops" msgstr "Loop parete supporto" @@ -12001,18 +11859,17 @@ msgid "Tree support with infill" msgstr "Riempimento supporti ad albero" msgid "" -"This setting specifies whether to add infill inside large hollows of tree " -"support" +"This setting specifies whether to add infill inside large hollows of tree support" msgstr "" -"Questa impostazione specifica se aggiungere il riempimento all'interno di " -"grandi cavità del supporto dell'albero" +"Questa impostazione specifica se aggiungere il riempimento all'interno di grandi " +"cavità del supporto dell'albero" msgid "Activate temperature control" msgstr "Attiva il controllo della temperatura" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" +"Enable this option for chamber temperature control. An M191 command will be added " +"before \"machine_start_gcode\"\n" "G-code commands: M141/M191 S(0-255)" msgstr "" "Abilitare questa opzione per il controllo della temperatura della camera. Un " @@ -12023,22 +11880,20 @@ msgid "Chamber temperature" msgstr "Temperatura della camera di stampa" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"Higher chamber temperature can help suppress or reduce warping and potentially " +"lead to higher interlayer bonding strength for high temperature materials like " +"ABS, ASA, PC, PA and so on.At the same time, the air filtration of ABS and ASA " +"will get worse.While for PLA, PETG, TPU, PVA and other low temperature materials," +"the actual chamber temperature should not be high to avoid cloggings, so 0 which " +"stands for turning off is highly recommended" msgstr "" -"Una temperatura della camera più elevata può aiutare a sopprimere o ridurre " -"la deformazione e potenzialmente portare a una maggiore forza di adesione " -"tra gli strati per materiali ad alta temperatura come ABS, ASA, PC, PA e " -"così via. Allo stesso tempo, la filtrazione dell'aria di ABS e ASA " -"peggiorerà. Mentre per PLA, PETG, TPU, PVA e altri materiali a bassa " -"temperatura, la temperatura effettiva della camera non dovrebbe essere " -"elevata per evitare intasamenti, quindi 0 che sta per spegnimento è " -"altamente raccomandato" +"Una temperatura della camera più elevata può aiutare a sopprimere o ridurre la " +"deformazione e potenzialmente portare a una maggiore forza di adesione tra gli " +"strati per materiali ad alta temperatura come ABS, ASA, PC, PA e così via. Allo " +"stesso tempo, la filtrazione dell'aria di ABS e ASA peggiorerà. Mentre per PLA, " +"PETG, TPU, PVA e altri materiali a bassa temperatura, la temperatura effettiva " +"della camera non dovrebbe essere elevata per evitare intasamenti, quindi 0 che " +"sta per spegnimento è altamente raccomandato" msgid "Nozzle temperature for layers after the initial one" msgstr "Temperatura del nozzle dopo il primo layer" @@ -12050,24 +11905,23 @@ msgid "" "Detect thin wall which can't contain two line width. And use single line to " "print. Maybe printed not very well, because it's not closed loop" msgstr "" -"Questo rileva pareti sottili che non possono contenere due righe e utilizza " -"una sola riga per la stampa. Potrebbe non essere stampato altrettanto bene " -"perché non è un circuito chiuso." +"Questo rileva pareti sottili che non possono contenere due righe e utilizza una " +"sola riga per la stampa. Potrebbe non essere stampato altrettanto bene perché non " +"è un circuito chiuso." msgid "" -"This gcode is inserted when change filament, including T command to trigger " -"tool change" +"This gcode is inserted when change filament, including T command to trigger tool " +"change" msgstr "" "Questo G-code viene inserito al cambio filamento, compresi i comandi T per " "attivare il cambio utensile." msgid "This gcode is inserted when the extrusion role is changed" -msgstr "" -"Questo gcode viene inserito quando viene modificato il ruolo di estrusione" +msgstr "Questo gcode viene inserito quando viene modificato il ruolo di estrusione" msgid "" -"Line width for top surfaces. If expressed as a %, it will be computed over " -"the nozzle diameter." +"Line width for top surfaces. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" "Larghezza della linea per le superfici superiori. Se espresso come %, verrà " "calcolato sul diametro dell'ugello." @@ -12079,14 +11933,13 @@ msgid "Top shell layers" msgstr "Layer guscio superiore" msgid "" -"This is the number of solid layers of top shell, including the top surface " -"layer. When the thickness calculated by this value is thinner than top shell " -"thickness, the top shell layers will be increased" +"This is the number of solid layers of top shell, including the top surface layer. " +"When the thickness calculated by this value is thinner than top shell thickness, " +"the top shell layers will be increased" msgstr "" -"È il numero di layers solidi del guscio superiore, compreso il layer " -"superficiale superiore. Se lo spessore calcolato con questo valore è più " -"sottile dello spessore del guscio superiore, i layers del guscio superiore " -"vengono aumentati." +"È il numero di layers solidi del guscio superiore, compreso il layer superficiale " +"superiore. Se lo spessore calcolato con questo valore è più sottile dello " +"spessore del guscio superiore, i layers del guscio superiore vengono aumentati." msgid "Top solid layers" msgstr "Layer solidi superiori" @@ -12096,17 +11949,16 @@ msgstr "Spessore guscio superiore" msgid "" "The number of top solid layers is increased when slicing if the thickness " -"calculated by top shell layers is thinner than this value. This can avoid " -"having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of top shell is absolutely determained by top " -"shell layers" +"calculated by top shell layers is thinner than this value. This can avoid having " +"too thin shell when layer height is small. 0 means that this setting is disabled " +"and thickness of top shell is absolutely determained by top shell layers" msgstr "" "Il numero di layers solidi superiori aumenta durante l'elaborazione se lo " "spessore calcolato dai layers superiori del guscio è più sottile di questo " -"valore. Questo può evitare di avere un guscio troppo sottile quando " -"l'altezza del layer è ridotta. 0 significa che questa impostazione è " -"disabilitata e lo spessore del guscio superiore è determinato semplicemente " -"dal numero di layers superiori del guscio." +"valore. Questo può evitare di avere un guscio troppo sottile quando l'altezza del " +"layer è ridotta. 0 significa che questa impostazione è disabilitata e lo spessore " +"del guscio superiore è determinato semplicemente dal numero di layers superiori " +"del guscio." msgid "Speed of travel which is faster and without extrusion" msgstr "È la velocità con cui si viaggia." @@ -12118,45 +11970,42 @@ msgid "" "Move nozzle along the last extrusion path when retracting to clean leaked " "material on nozzle. This can minimize blob when print new part after travel" msgstr "" -"Questo sposta il nozzle lungo l'ultimo percorso di estrusione quando si " -"ritrae per pulire il materiale fuoriuscito dal nozzle. In questo modo è " -"possibile ridurre al minimo i blob quando si stampa una nuova parte dopo lo " -"spostamento." +"Questo sposta il nozzle lungo l'ultimo percorso di estrusione quando si ritrae " +"per pulire il materiale fuoriuscito dal nozzle. In questo modo è possibile " +"ridurre al minimo i blob quando si stampa una nuova parte dopo lo spostamento." msgid "Wipe Distance" msgstr "Distanza pulizia" msgid "" -"Discribe how long the nozzle will move along the last path when " -"retracting. \n" +"Discribe how long the nozzle will move along the last path when retracting. \n" "\n" -"Depending on how long the wipe operation lasts, how fast and long the " -"extruder/filament retraction settings are, a retraction move may be needed " -"to retract the remaining filament. \n" +"Depending on how long the wipe operation lasts, how fast and long the extruder/" +"filament retraction settings are, a retraction move may be needed to retract the " +"remaining filament. \n" "\n" -"Setting a value in the retract amount before wipe setting below will perform " -"any excess retraction before the wipe, else it will be performed after." +"Setting a value in the retract amount before wipe setting below will perform any " +"excess retraction before the wipe, else it will be performed after." msgstr "" -"Scrivi per quanto tempo l'ugello si sposterà lungo l'ultimo percorso quando " -"si ritrae. \n" +"Scrivi per quanto tempo l'ugello si sposterà lungo l'ultimo percorso quando si " +"ritrae. \n" "\n" -"A seconda della durata dell'operazione di pulizia, della velocità e della " -"durata delle impostazioni di retrazione dell'estrusore/filamento, potrebbe " -"essere necessario un movimento di retrazione per ritrarre il filamento " -"rimanente. \n" +"A seconda della durata dell'operazione di pulizia, della velocità e della durata " +"delle impostazioni di retrazione dell'estrusore/filamento, potrebbe essere " +"necessario un movimento di retrazione per ritrarre il filamento rimanente. \n" "\n" "L'impostazione di un valore nella quantità di retrazione prima della " -"cancellazione di seguito eseguirà qualsiasi retrazione in eccesso prima " -"della cancellazione, altrimenti verrà eseguita dopo." +"cancellazione di seguito eseguirà qualsiasi retrazione in eccesso prima della " +"cancellazione, altrimenti verrà eseguita dopo." msgid "" -"The wiping tower can be used to clean up the residue on the nozzle and " -"stabilize the chamber pressure inside the nozzle, in order to avoid " -"appearance defects when printing objects." +"The wiping tower can be used to clean up the residue on the nozzle and stabilize " +"the chamber pressure inside the nozzle, in order to avoid appearance defects when " +"printing objects." msgstr "" "La torre di pulizia può essere utilizzata per pulire i residui sul nozzle e " -"stabilizzare la pressione della camera all'interno del nozzle al fine di " -"evitare difetti estetici durante la stampa." +"stabilizzare la pressione della camera all'interno del nozzle al fine di evitare " +"difetti estetici durante la stampa." msgid "Purging volumes" msgstr "Volumi di spurgo" @@ -12165,11 +12014,11 @@ msgid "Flush multiplier" msgstr "Moltiplicatore spurgo" msgid "" -"The actual flushing volumes is equal to the flush multiplier multiplied by " -"the flushing volumes in the table." +"The actual flushing volumes is equal to the flush multiplier multiplied by the " +"flushing volumes in the table." msgstr "" -"I volumi di spurgo effettivi sono pari al moltiplicatore di spurgo " -"moltiplicato per i volumi di spurgo indicati nella tabella." +"I volumi di spurgo effettivi sono pari al moltiplicatore di spurgo moltiplicato " +"per i volumi di spurgo indicati nella tabella." msgid "Prime volume" msgstr "Volume primario" @@ -12190,11 +12039,11 @@ msgid "Stabilization cone apex angle" msgstr "Angolo del cono di stabilizzazione" msgid "" -"Angle at the apex of the cone that is used to stabilize the wipe tower. " -"Larger angle means wider base." +"Angle at the apex of the cone that is used to stabilize the wipe tower. Larger " +"angle means wider base." msgstr "" -"Angolo all'apice del cono utilizzato per stabilizzare la torre di pulitura. " -"Un angolo maggiore significa una base più ampia." +"Angolo all'apice del cono utilizzato per stabilizzare la torre di pulitura. Un " +"angolo maggiore significa una base più ampia." msgid "Wipe tower purge lines spacing" msgstr "Spaziatura delle linee di spurgo della torre di pulitura" @@ -12206,56 +12055,54 @@ msgid "Wipe tower extruder" msgstr "Estrusore torre di pulitura" msgid "" -"The extruder to use when printing perimeter of the wipe tower. Set to 0 to " -"use the one that is available (non-soluble would be preferred)." +"The extruder to use when printing perimeter of the wipe tower. Set to 0 to use " +"the one that is available (non-soluble would be preferred)." msgstr "" -"L'estrusore da utilizzare per la stampa del perimetro della torre di " -"pulitura. Impostare su 0 per utilizzare quello attualmente disponibile " -"(sarebbe preferibile quello non solubile)." +"L'estrusore da utilizzare per la stampa del perimetro della torre di pulitura. " +"Impostare su 0 per utilizzare quello attualmente disponibile (sarebbe preferibile " +"quello non solubile)." msgid "Purging volumes - load/unload volumes" msgstr "Volumi di spurgo - volumi di carico/scarico" msgid "" -"This vector saves required volumes to change from/to each tool used on the " -"wipe tower. These values are used to simplify creation of the full purging " -"volumes below." +"This vector saves required volumes to change from/to each tool used on the wipe " +"tower. These values are used to simplify creation of the full purging volumes " +"below." msgstr "" -"Questo vettore salva il volume necessario per cambiare da/a ogni strumento " -"usato per la torre di pulitura. Questi valori vengono usati per semplificare " -"la creazione dei volumi di spurgo completi." +"Questo vettore salva il volume necessario per cambiare da/a ogni strumento usato " +"per la torre di pulitura. Questi valori vengono usati per semplificare la " +"creazione dei volumi di spurgo completi." msgid "" "Purging after filament change will be done inside objects' infills. This may " -"lower the amount of waste and decrease the print time. If the walls are " -"printed with transparent filament, the mixed color infill will be seen " -"outside. It will not take effect, unless the prime tower is enabled." +"lower the amount of waste and decrease the print time. If the walls are printed " +"with transparent filament, the mixed color infill will be seen outside. It will " +"not take effect, unless the prime tower is enabled." msgstr "" -"Lo spurgo dopo il cambio del filamento verrà eseguito all'interno dei " -"riempimenti degli oggetti. Ciò può ridurre la quantità di rifiuti e ridurre " -"il tempo di stampa. Se le pareti sono stampate con filamenti trasparenti, il " -"riempimento a colori misti sarà visibile. Non avrà effetto a meno che la " -"Prime Tower non sia abilitata." +"Lo spurgo dopo il cambio del filamento verrà eseguito all'interno dei riempimenti " +"degli oggetti. Ciò può ridurre la quantità di rifiuti e ridurre il tempo di " +"stampa. Se le pareti sono stampate con filamenti trasparenti, il riempimento a " +"colori misti sarà visibile. Non avrà effetto a meno che la Prime Tower non sia " +"abilitata." msgid "" "Purging after filament change will be done inside objects' support. This may " -"lower the amount of waste and decrease the print time. It will not take " -"effect, unless the prime tower is enabled." +"lower the amount of waste and decrease the print time. It will not take effect, " +"unless the prime tower is enabled." msgstr "" -"Lo spurgo dopo il cambio del filamento verrà eseguito all'interno del " -"supporto degli oggetti. Ciò può ridurre la quantità di rifiuti e ridurre il " -"tempo di stampa. Non avrà effetto a meno che non sia abilitata la Prime " -"Tower." +"Lo spurgo dopo il cambio del filamento verrà eseguito all'interno del supporto " +"degli oggetti. Ciò può ridurre la quantità di rifiuti e ridurre il tempo di " +"stampa. Non avrà effetto a meno che non sia abilitata la Prime Tower." msgid "" "This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed " -"as a result. It will not take effect, unless the prime tower is enabled." +"filament and decrease the print time. Colours of the objects will be mixed as a " +"result. It will not take effect, unless the prime tower is enabled." msgstr "" -"Questo oggetto viene utilizzato per spurgare il nozzle dopo un cambio " -"filamento per risparmiare filamento e ridurre il tempo di stampa. I colori " -"degli oggetti saranno mescolati. Non avrà effetto se non è abilitata la " -"Prime Tower." +"Questo oggetto viene utilizzato per spurgare il nozzle dopo un cambio filamento " +"per risparmiare filamento e ridurre il tempo di stampa. I colori degli oggetti " +"saranno mescolati. Non avrà effetto se non è abilitata la Prime Tower." msgid "Maximal bridging distance" msgstr "Distanza massima bridging" @@ -12271,39 +12118,36 @@ msgid "" "Positive value makes holes bigger. Negative value makes holes smaller. This " "function is used to adjust size slightly when the object has assembling issue" msgstr "" -"I fori negli oggetti vengono ingranditi o rimpiccioliti nel piano XY in base " -"al valore impostato. Un valore positivo ingrandisce i fori mentre un valore " -"negativo rimpicciolisce i fori. Questa funzione viene utilizzata per " -"regolare leggermente le dimensioni quando gli oggetti presentano problemi di " -"assemblaggio." +"I fori negli oggetti vengono ingranditi o rimpiccioliti nel piano XY in base al " +"valore impostato. Un valore positivo ingrandisce i fori mentre un valore negativo " +"rimpicciolisce i fori. Questa funzione viene utilizzata per regolare leggermente " +"le dimensioni quando gli oggetti presentano problemi di assemblaggio." msgid "X-Y contour compensation" msgstr "Compensazione contorni X-Y" msgid "" -"Contour of object will be grown or shrunk in XY plane by the configured " -"value. Positive value makes contour bigger. Negative value makes contour " -"smaller. This function is used to adjust size slightly when the object has " -"assembling issue" +"Contour of object will be grown or shrunk in XY plane by the configured value. " +"Positive value makes contour bigger. Negative value makes contour smaller. This " +"function is used to adjust size slightly when the object has assembling issue" msgstr "" -"Il contorno degli oggetti viene ingrandito o rimpicciolito nel piano XY in " -"base al valore impostato. I valori positivi ingrandiscono i contorni e " -"quelli negativi li rimpiccioliscono. Questa funzione viene utilizzata per " -"regolare leggermente le dimensioni quando gli oggetti presentano problemi di " -"assemblaggio." +"Il contorno degli oggetti viene ingrandito o rimpicciolito nel piano XY in base " +"al valore impostato. I valori positivi ingrandiscono i contorni e quelli negativi " +"li rimpiccioliscono. Questa funzione viene utilizzata per regolare leggermente le " +"dimensioni quando gli oggetti presentano problemi di assemblaggio." msgid "Convert holes to polyholes" msgstr "Conversione di fori in polifori" msgid "" -"Search for almost-circular holes that span more than one layer and convert " -"the geometry to polyholes. Use the nozzle size and the (biggest) diameter to " -"compute the polyhole.\n" +"Search for almost-circular holes that span more than one layer and convert the " +"geometry to polyholes. Use the nozzle size and the (biggest) diameter to compute " +"the polyhole.\n" "See http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgstr "" -"Cercare fori quasi circolari che si estendono su più di un layer e " -"convertire la geometria in polifori. Utilizzare la dimensione dell'ugello e " -"il diametro (più grande) per calcolare il poliforo.\n" +"Cercare fori quasi circolari che si estendono su più di un layer e convertire la " +"geometria in polifori. Utilizzare la dimensione dell'ugello e il diametro (più " +"grande) per calcolare il poliforo.\n" "Vedi http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgid "Polyhole detection margin" @@ -12312,9 +12156,9 @@ msgstr "Margine di rilevamento poliforo" #, c-format, boost-format msgid "" "Maximum defection of a point to the estimated radius of the circle.\n" -"As cylinders are often exported as triangles of varying size, points may not " -"be on the circle circumference. This setting allows you some leway to " -"broaden the detection.\n" +"As cylinders are often exported as triangles of varying size, points may not be " +"on the circle circumference. This setting allows you some leway to broaden the " +"detection.\n" "In mm or in % of the radius." msgstr "" "Defezione massima di un punto rispetto al raggio stimato del cerchio.\n" @@ -12333,8 +12177,8 @@ msgid "G-code thumbnails" msgstr "Miniature G-code" msgid "" -"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " -"following format: \"XxY, XxY, ...\"" +"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following " +"format: \"XxY, XxY, ...\"" msgstr "" "Dimensioni delle immagini da memorizzare in file .gcode e .sl1 / .sl1s, nel " "seguente formato: \"XxY, XxY, ...\"" @@ -12343,8 +12187,8 @@ msgid "Format of G-code thumbnails" msgstr "Formato miniature del G-code" msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " -"QOI for low memory firmware" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI for " +"low memory firmware" msgstr "" "Formato delle miniature del G-code: PNG per la migliore qualità, JPG per la " "dimensione più piccola, QOI per il firmware con poca memoria" @@ -12354,20 +12198,24 @@ msgstr "Usa distanze E relative" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " -"extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is recommended on most " -"printers. Default is checked" +"extruders work better with this option unckecked (absolute extrusion mode). Wipe " +"tower is only compatible with relative mode. It is recommended on most printers. " +"Default is checked" msgstr "" +"L'estrusione relativa è consigliata quando si utilizza l'opzione " +"\"label_objects\". Alcuni estrusori funzionano meglio con questa opzione " +"unckecked (modalità di estrusione assoluta). La torre di pulizia è compatibile " +"solo con la modalità relativa. È consigliato sulla maggior parte delle stampanti. " +"Il valore predefinito è selezionato" msgid "" -"Classic wall generator produces walls with constant extrusion width and for " -"very thin areas is used gap-fill. Arachne engine produces walls with " -"variable extrusion width" +"Classic wall generator produces walls with constant extrusion width and for very " +"thin areas is used gap-fill. Arachne engine produces walls with variable " +"extrusion width" msgstr "" "La classica generazione di pareti produce pareti con larghezza di estrusione " -"costante e per aree molto sottili viene utilizzato il riempimento degli " -"spazi vuoti. Il motore Arachne produce pareti con larghezza di estrusione " -"variabile." +"costante e per aree molto sottili viene utilizzato il riempimento degli spazi " +"vuoti. Il motore Arachne produce pareti con larghezza di estrusione variabile." msgid "Classic" msgstr "Classico" @@ -12384,82 +12232,79 @@ msgid "" "segments. It's expressed as a percentage over nozzle diameter" msgstr "" "Quando si passa da un numero pareti diverso all'altro, man mano che il pezzo " -"diventa più sottile, viene assegnata una certa quantità di spazio per " -"dividere o unire i segmenti di parete. Viene espressa in percentuale sul " -"diametro del nozzle." +"diventa più sottile, viene assegnata una certa quantità di spazio per dividere o " +"unire i segmenti di parete. Viene espressa in percentuale sul diametro del nozzle." msgid "Wall transitioning filter margin" msgstr "Margine filtro transizione parete" msgid "" -"Prevent transitioning back and forth between one extra wall and one less. " -"This margin extends the range of extrusion widths which follow to [Minimum " -"wall width - margin, 2 * Minimum wall width + margin]. Increasing this " -"margin reduces the number of transitions, which reduces the number of " -"extrusion starts/stops and travel time. However, large extrusion width " -"variation can lead to under- or overextrusion problems. It's expressed as a " -"percentage over nozzle diameter" +"Prevent transitioning back and forth between one extra wall and one less. This " +"margin extends the range of extrusion widths which follow to [Minimum wall width " +"- margin, 2 * Minimum wall width + margin]. Increasing this margin reduces the " +"number of transitions, which reduces the number of extrusion starts/stops and " +"travel time. However, large extrusion width variation can lead to under- or " +"overextrusion problems. It's expressed as a percentage over nozzle diameter" msgstr "" -"Evita la transizione avanti e indietro tra una parete extra e una in meno. " -"Questo margine estende l'intervallo di estrusione che segue a [Larghezza " -"minima parete - margine, 2 * Larghezza minima parete + margine]. L'aumento " -"di questo margine riduce il numero di transizioni, il che riduce il numero " -"di avvii/arresti dell'estrusione e il tempo di viaggio. Tuttavia, una grande " -"variazione della larghezza di estrusione può portare a problemi di sotto-" -"estrusione o sovra-estrusione. È espresso in percentuale rispetto al " -"diametro delnozzle" +"Evita la transizione avanti e indietro tra una parete extra e una in meno. Questo " +"margine estende l'intervallo di estrusione che segue a [Larghezza minima parete - " +"margine, 2 * Larghezza minima parete + margine]. L'aumento di questo margine " +"riduce il numero di transizioni, il che riduce il numero di avvii/arresti " +"dell'estrusione e il tempo di viaggio. Tuttavia, una grande variazione della " +"larghezza di estrusione può portare a problemi di sotto-estrusione o sovra-" +"estrusione. È espresso in percentuale rispetto al diametro delnozzle" msgid "Wall transitioning threshold angle" msgstr "Angolo soglia transizione parete" msgid "" -"When to create transitions between even and odd numbers of walls. A wedge " -"shape with an angle greater than this setting will not have transitions and " -"no walls will be printed in the center to fill the remaining space. Reducing " -"this setting reduces the number and length of these center walls, but may " -"leave gaps or overextrude" +"When to create transitions between even and odd numbers of walls. A wedge shape " +"with an angle greater than this setting will not have transitions and no walls " +"will be printed in the center to fill the remaining space. Reducing this setting " +"reduces the number and length of these center walls, but may leave gaps or " +"overextrude" msgstr "" -"Quando si creano transizioni tra pareti in numero pari e dispari. Una forma " -"a cuneo con un angolo superiore a questa impostazione non avrà transizioni e " -"non verranno stampate pareti al centro per riempire lo spazio rimanente. " -"Riducendo questa impostazione, si riduce il numero e la lunghezza delle " -"pareti centrali, ma si possono lasciare spazi vuoti o sovraestrusi" +"Quando si creano transizioni tra pareti in numero pari e dispari. Una forma a " +"cuneo con un angolo superiore a questa impostazione non avrà transizioni e non " +"verranno stampate pareti al centro per riempire lo spazio rimanente. Riducendo " +"questa impostazione, si riduce il numero e la lunghezza delle pareti centrali, ma " +"si possono lasciare spazi vuoti o sovraestrusi" msgid "Wall distribution count" msgstr "Conteggio distribuzione parete" msgid "" -"The number of walls, counted from the center, over which the variation needs " -"to be spread. Lower values mean that the outer walls don't change in width" +"The number of walls, counted from the center, over which the variation needs to " +"be spread. Lower values mean that the outer walls don't change in width" msgstr "" "Il numero di pareti, contati a partire dal centro, sui quali deve essere " -"distribuita la variazione. Valori più bassi indicano che le pareti esterne " -"non cambiano in larghezza" +"distribuita la variazione. Valori più bassi indicano che le pareti esterne non " +"cambiano in larghezza" msgid "Minimum feature size" msgstr "Dimensione minima caratteristica" msgid "" -"Minimum thickness of thin features. Model features that are thinner than " -"this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum wall width. It's expressed as a " -"percentage over nozzle diameter" +"Minimum thickness of thin features. Model features that are thinner than this " +"value will not be printed, while features thicker than the Minimum feature size " +"will be widened to the Minimum wall width. It's expressed as a percentage over " +"nozzle diameter" msgstr "" -"Spessore minimo elementi sottili. Gli elementi del modello più sottili di " -"questo valore non verranno stampati, mentre le più spesse della dimensione " -"minima verranno ampliate fino alla larghezza minima della parete. È " -"espresso in percentuale rispetto al diametro del nozzle" +"Spessore minimo elementi sottili. Gli elementi del modello più sottili di questo " +"valore non verranno stampati, mentre le più spesse della dimensione minima " +"verranno ampliate fino alla larghezza minima della parete. È espresso in " +"percentuale rispetto al diametro del nozzle" msgid "First layer minimum wall width" msgstr "Larghezza minima della parete del primo strato" msgid "" -"The minimum wall width that should be used for the first layer is " -"recommended to be set to the same size as the nozzle. This adjustment is " -"expected to enhance adhesion." +"The minimum wall width that should be used for the first layer is recommended to " +"be set to the same size as the nozzle. This adjustment is expected to enhance " +"adhesion." msgstr "" -"Si consiglia di impostare la larghezza minima della parete da utilizzare per " -"il primo strato alla stessa dimensione dell'ugello. Si prevede che questo " +"Si consiglia di impostare la larghezza minima della parete da utilizzare per il " +"primo strato alla stessa dimensione dell'ugello. Si prevede che questo " "aggiustamento migliorerà l'adesione." msgid "Minimum wall width" @@ -12468,27 +12313,26 @@ msgstr "Larghezza minima parete" msgid "" "Width of the wall that will replace thin features (according to the Minimum " "feature size) of the model. If the Minimum wall width is thinner than the " -"thickness of the feature, the wall will become as thick as the feature " -"itself. It's expressed as a percentage over nozzle diameter" +"thickness of the feature, the wall will become as thick as the feature itself. " +"It's expressed as a percentage over nozzle diameter" msgstr "" "Larghezza della parete che sostituirà gli elementi sottili (in base alla " -"dimensione minima dell'elemento) del modello. Se la larghezza minima della " -"parete è più sottile dello spessore dell'elemento, la parete diventerà " -"spessa quanto l'elemento stesso. È espresso in percentuale rispetto al " -"diametro del nozzle" +"dimensione minima dell'elemento) del modello. Se la larghezza minima della parete " +"è più sottile dello spessore dell'elemento, la parete diventerà spessa quanto " +"l'elemento stesso. È espresso in percentuale rispetto al diametro del nozzle" msgid "Detect narrow internal solid infill" msgstr "Rileva riempimento solido interno stretto" msgid "" "This option will auto detect narrow internal solid infill area. If enabled, " -"concentric pattern will be used for the area to speed printing up. " -"Otherwise, rectilinear pattern is used defaultly." +"concentric pattern will be used for the area to speed printing up. Otherwise, " +"rectilinear pattern is used defaultly." msgstr "" -"Questa rileva automaticamente le aree interne strette di riempimento solido. " -"Se abilitato, la trama concentrica verrà utilizzato per l'area per " -"velocizzare la stampa. Altrimenti, la trama rettilinea verrà utilizzata per " -"impostazione predefinita." +"Questa rileva automaticamente le aree interne strette di riempimento solido. Se " +"abilitato, la trama concentrica verrà utilizzato per l'area per velocizzare la " +"stampa. Altrimenti, la trama rettilinea verrà utilizzata per impostazione " +"predefinita." msgid "invalid value " msgstr "Valore non valido" @@ -12522,8 +12366,8 @@ msgstr "Accerta che sia sul piano" msgid "" "Lift the object above the bed when it is partially below. Disabled by default" msgstr "" -"Sollevare l'oggetto sopra il letto quando è parzialmente sotto. Disabilitato " -"per impostazione predefinita" +"Sollevare l'oggetto sopra il letto quando è parzialmente sotto. Disabilitato per " +"impostazione predefinita" msgid "Orient Options" msgstr "Opzioni di orientamento" @@ -12544,9 +12388,8 @@ msgid "Data directory" msgstr "Directory dati" msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." +"Load and store settings at the given directory. This is useful for maintaining " +"different profiles or including configurations from a network storage." msgstr "" "Carica e archivia le impostazione in una data cartella. Questo è utile per " "mantenere diversi profili o aggiungere configurazioni da un archivio di rete." @@ -12602,21 +12445,20 @@ msgid "Slicing mesh" msgstr "Slicing mesh" msgid "" -"No layers were detected. You might want to repair your STL file(s) or check " -"their size or thickness and retry.\n" +"No layers were detected. You might want to repair your STL file(s) or check their " +"size or thickness and retry.\n" msgstr "" -"Non sono stati rilevati layers. Ripara il file STL o controlla le dimensioni " -"o lo spessore e riprova.\n" +"Non sono stati rilevati layers. Ripara il file STL o controlla le dimensioni o lo " +"spessore e riprova.\n" msgid "" "An object's XY size compensation will not be used because it is also color-" "painted.\n" "XY Size compensation can not be combined with color-painting." msgstr "" -"La compensazione delle dimensioni XY di un oggetto non verrà utilizzata " -"perché è anche dipinta a colori.\n" -"La compensazione delle dimensioni XY non può essere combinata con la " -"colorazione." +"La compensazione delle dimensioni XY di un oggetto non verrà utilizzata perché è " +"anche dipinta a colori.\n" +"La compensazione delle dimensioni XY non può essere combinata con la colorazione." #, c-format, boost-format msgid "Support: generate toolpath at layer %d" @@ -12649,11 +12491,10 @@ msgstr "Supporto: correzione dei buchi nel layer %d" msgid "Support: propagate branches at layer %d" msgstr "Supporto: propagazione rami al layer %d" -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgid "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Formato file sconosciuto: il file di input deve avere estensione .stl, .obj " -"o .amf(.xml)." +"Formato file sconosciuto: il file di input deve avere estensione .stl, .obj o ." +"amf(.xml)." msgid "Loading of a model file failed." msgstr "Caricamento file del modello non riuscito." @@ -12663,8 +12504,7 @@ msgstr "Impossibile leggere il file fornito perché è vuoto." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Formato file sconosciuto: il file di input deve avere estensione .3mf o .zip." -"amf." +"Formato file sconosciuto: il file di input deve avere estensione .3mf o .zip.amf." msgid "Canceled" msgstr "Annullato" @@ -12720,18 +12560,16 @@ msgstr "Fine" msgid "How to use calibration result?" msgstr "Come utilizzare il risultato della calibrazione?" -msgid "" -"You could change the Flow Dynamics Calibration Factor in material editing" +msgid "You could change the Flow Dynamics Calibration Factor in material editing" msgstr "" -"È possibile modificare il fattore di calibrazione della dinamica del flusso " -"nella modifica del materiale" +"È possibile modificare il fattore di calibrazione della dinamica del flusso nella " +"modifica del materiale" msgid "" "The current firmware version of the printer does not support calibration.\n" "Please upgrade the printer firmware." msgstr "" -"La versione corrente del firmware della stampante non supporta la " -"calibrazione.\n" +"La versione corrente del firmware della stampante non supporta la calibrazione.\n" "Aggiornare il firmware della stampante." msgid "Calibration not supported" @@ -12780,8 +12618,7 @@ msgid "The selected preset: %s is not found." msgstr "Il preset selezionato: %s non è stato trovato." msgid "The name cannot be the same as the system preset name." -msgstr "" -"Il nome non può essere uguale al nome della preimpostazione di sistema." +msgstr "Il nome non può essere uguale al nome della preimpostazione di sistema." msgid "The name is the same as another existing preset name" msgstr "Il nome è lo stesso di un altro nome predefinito esistente" @@ -12789,10 +12626,8 @@ msgstr "Il nome è lo stesso di un altro nome predefinito esistente" msgid "create new preset failed." msgstr "La creazione di un nuovo predefinito non è riuscita." -msgid "" -"Are you sure to cancel the current calibration and return to the home page?" -msgstr "" -"Sei sicuro di annullare la calibrazione corrente e tornare alla home page?" +msgid "Are you sure to cancel the current calibration and return to the home page?" +msgstr "Sei sicuro di annullare la calibrazione corrente e tornare alla home page?" msgid "No Printer Connected!" msgstr "Nessuna stampante collegata!" @@ -12814,8 +12649,7 @@ msgstr "Il risultato del test non riuscito è stato eliminato." msgid "Flow Dynamics Calibration result has been saved to the printer" msgstr "" -"Il risultato della calibrazione di Flow Dynamics è stato salvato nella " -"stampante" +"Il risultato della calibrazione di Flow Dynamics è stato salvato nella stampante" msgid "Internal Error" msgstr "Errore interno" @@ -12837,21 +12671,21 @@ msgid "When do you need Flow Dynamics Calibration" msgstr "Quando è necessaria la calibrazione della dinamica del flusso" msgid "" -"We now have added the auto-calibration for different filaments, which is " -"fully automated and the result will be saved into the printer for future " -"use. You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the " -"filament is damp;\n" +"We now have added the auto-calibration for different filaments, which is fully " +"automated and the result will be saved into the printer for future use. You only " +"need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the filament is " +"damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" -"3. If the max volumetric speed or print temperature is changed in the " -"filament setting." +"3. If the max volumetric speed or print temperature is changed in the filament " +"setting." msgstr "" "Ora abbiamo aggiunto la calibrazione automatica per diversi filamenti, che è " -"completamente automatizzata e il risultato verrà salvato nella stampante per " -"un uso futuro. È necessario eseguire la calibrazione solo nei seguenti casi " +"completamente automatizzata e il risultato verrà salvato nella stampante per un " +"uso futuro. È necessario eseguire la calibrazione solo nei seguenti casi " "limitati:\n" -"1. Se si introduce un nuovo filamento di marche/modelli diversi o il " -"filamento è umido;\n" +"1. Se si introduce un nuovo filamento di marche/modelli diversi o il filamento è " +"umido;\n" "2. se l'ugello è usurato o sostituito con uno nuovo;\n" "3. Se la velocità volumetrica massima o la temperatura di stampa vengono " "modificate nell'impostazione del filamento." @@ -12862,41 +12696,41 @@ msgstr "Informazioni su questa calibrazione" msgid "" "Please find the details of Flow Dynamics Calibration from our wiki.\n" "\n" -"Usually the calibration is unnecessary. When you start a single color/" -"material print, with the \"flow dynamics calibration\" option checked in the " -"print start menu, the printer will follow the old way, calibrate the " -"filament before the print; When you start a multi color/material print, the " -"printer will use the default compensation parameter for the filament during " -"every filament switch which will have a good result in most cases.\n" +"Usually the calibration is unnecessary. When you start a single color/material " +"print, with the \"flow dynamics calibration\" option checked in the print start " +"menu, the printer will follow the old way, calibrate the filament before the " +"print; When you start a multi color/material print, the printer will use the " +"default compensation parameter for the filament during every filament switch " +"which will have a good result in most cases.\n" "\n" "Please note there are a few cases that will make the calibration result not " -"reliable: using a texture plate to do the calibration; the build plate does " -"not have good adhesion (please wash the build plate or apply gluestick!) ..." -"You can find more from our wiki.\n" +"reliable: using a texture plate to do the calibration; the build plate does not " +"have good adhesion (please wash the build plate or apply gluestick!) ...You can " +"find more from our wiki.\n" "\n" -"The calibration results have about 10 percent jitter in our test, which may " -"cause the result not exactly the same in each calibration. We are still " -"investigating the root cause to do improvements with new updates." +"The calibration results have about 10 percent jitter in our test, which may cause " +"the result not exactly the same in each calibration. We are still investigating " +"the root cause to do improvements with new updates." msgstr "" -"I dettagli della calibrazione dinamica del flusso sono disponibili nel " -"nostro wiki.\n" +"I dettagli della calibrazione dinamica del flusso sono disponibili nel nostro " +"wiki.\n" "\n" -"Di solito la calibrazione non è necessaria. Quando si avvia una stampa a " -"singolo colore/materiale, con l'opzione \"calibrazione dinamica del flusso\" " -"selezionata nel menu di avvio della stampa, la stampante seguirà il vecchio " -"modo, calibrando il filamento prima della stampa; Quando si avvia una stampa " -"multicolore/materiale, la stampante utilizzerà il parametro di compensazione " -"predefinito per il filamento durante ogni cambio di filamento, che avrà un " -"buon risultato nella maggior parte dei casi.\n" +"Di solito la calibrazione non è necessaria. Quando si avvia una stampa a singolo " +"colore/materiale, con l'opzione \"calibrazione dinamica del flusso\" selezionata " +"nel menu di avvio della stampa, la stampante seguirà il vecchio modo, calibrando " +"il filamento prima della stampa; Quando si avvia una stampa multicolore/" +"materiale, la stampante utilizzerà il parametro di compensazione predefinito per " +"il filamento durante ogni cambio di filamento, che avrà un buon risultato nella " +"maggior parte dei casi.\n" "\n" "Si prega di notare che ci sono alcuni casi che renderanno il risultato della " -"calibrazione non affidabile: utilizzo di una piastra di texture per eseguire " -"la calibrazione; La piastra di costruzione non ha una buona adesione (si " -"prega di lavare la piastra di costruzione o applicare la colla stick!) ... " -"Puoi trovare di più dal nostro wiki.\n" +"calibrazione non affidabile: utilizzo di una piastra di texture per eseguire la " +"calibrazione; La piastra di costruzione non ha una buona adesione (si prega di " +"lavare la piastra di costruzione o applicare la colla stick!) ... Puoi trovare di " +"più dal nostro wiki.\n" "\n" -"I risultati della calibrazione hanno un jitter di circa il 10% nel nostro " -"test, il che potrebbe causare un risultato non esattamente lo stesso in ogni " +"I risultati della calibrazione hanno un jitter di circa il 10% nel nostro test, " +"il che potrebbe causare un risultato non esattamente lo stesso in ogni " "calibrazione. Stiamo ancora indagando sulla causa principale per apportare " "miglioramenti con i nuovi aggiornamenti." @@ -12906,88 +12740,85 @@ msgstr "Quando utilizzare la calibrazione della portata" msgid "" "After using Flow Dynamics Calibration, there might still be some extrusion " "issues, such as:\n" -"1. Over-Extrusion: Excess material on your printed object, forming blobs or " -"zits, or the layers seem thicker than expected and not uniform.\n" -"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " -"top layer of the model, even when printing slowly.\n" +"1. Over-Extrusion: Excess material on your printed object, forming blobs or zits, " +"or the layers seem thicker than expected and not uniform.\n" +"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top " +"layer of the model, even when printing slowly.\n" "3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" -"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " -"they should be." +"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they " +"should be." msgstr "" -"Dopo aver utilizzato la calibrazione di Flow Dynamics, potrebbero esserci " -"ancora alcuni problemi di estrusione, ad esempio:\n" -"1. Sovraestrusione: materiale in eccesso sull'oggetto stampato, formazione " -"di bolle o brufoli o strati che sembrano più spessi del previsto e non " -"uniformi.\n" +"Dopo aver utilizzato la calibrazione di Flow Dynamics, potrebbero esserci ancora " +"alcuni problemi di estrusione, ad esempio:\n" +"1. Sovraestrusione: materiale in eccesso sull'oggetto stampato, formazione di " +"bolle o brufoli o strati che sembrano più spessi del previsto e non uniformi.\n" "2. Sottoestrusione: strati molto sottili, resistenza al riempimento debole o " "spazi vuoti nello strato superiore del modello, anche quando si stampa " "lentamente.\n" -"3. Scarsa qualità della superficie: la superficie delle stampe sembra ruvida " -"o irregolare.\n" -"4. Integrità strutturale debole: le stampe si rompono facilmente o non " -"sembrano robuste come dovrebbero essere." +"3. Scarsa qualità della superficie: la superficie delle stampe sembra ruvida o " +"irregolare.\n" +"4. Integrità strutturale debole: le stampe si rompono facilmente o non sembrano " +"robuste come dovrebbero essere." msgid "" -"In addition, Flow Rate Calibration is crucial for foaming materials like LW-" -"PLA used in RC planes. These materials expand greatly when heated, and " -"calibration provides a useful reference flow rate." +"In addition, Flow Rate Calibration is crucial for foaming materials like LW-PLA " +"used in RC planes. These materials expand greatly when heated, and calibration " +"provides a useful reference flow rate." msgstr "" -"Inoltre, la calibrazione della portata è fondamentale per i materiali " -"schiumogeni come l'LW-PLA utilizzato negli aerei RC. Questi materiali si " -"espandono notevolmente quando vengono riscaldati e la calibrazione fornisce " -"un'utile portata di riferimento." +"Inoltre, la calibrazione della portata è fondamentale per i materiali schiumogeni " +"come l'LW-PLA utilizzato negli aerei RC. Questi materiali si espandono " +"notevolmente quando vengono riscaldati e la calibrazione fornisce un'utile " +"portata di riferimento." msgid "" -"Flow Rate Calibration measures the ratio of expected to actual extrusion " -"volumes. The default setting works well in Bambu Lab printers and official " -"filaments as they were pre-calibrated and fine-tuned. For a regular " -"filament, you usually won't need to perform a Flow Rate Calibration unless " -"you still see the listed defects after you have done other calibrations. For " -"more details, please check out the wiki article." +"Flow Rate Calibration measures the ratio of expected to actual extrusion volumes. " +"The default setting works well in Bambu Lab printers and official filaments as " +"they were pre-calibrated and fine-tuned. For a regular filament, you usually " +"won't need to perform a Flow Rate Calibration unless you still see the listed " +"defects after you have done other calibrations. For more details, please check " +"out the wiki article." msgstr "" "La calibrazione della portata misura il rapporto tra i volumi di estrusione " "previsti e quelli effettivi. L'impostazione predefinita funziona bene nelle " -"stampanti Bambu Lab e nei filamenti ufficiali in quanto sono stati pre-" -"calibrati e messi a punto. Per un filamento normale, di solito non è " -"necessario eseguire una calibrazione della portata, a meno che non si vedano " -"ancora i difetti elencati dopo aver eseguito altre calibrazioni. Per " -"maggiori dettagli, consulta l'articolo wiki." +"stampanti Bambu Lab e nei filamenti ufficiali in quanto sono stati pre-calibrati " +"e messi a punto. Per un filamento normale, di solito non è necessario eseguire " +"una calibrazione della portata, a meno che non si vedano ancora i difetti " +"elencati dopo aver eseguito altre calibrazioni. Per maggiori dettagli, consulta " +"l'articolo wiki." msgid "" -"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, " -"directly measuring the calibration patterns. However, please be advised that " -"the efficacy and accuracy of this method may be compromised with specific " -"types of materials. Particularly, filaments that are transparent or semi-" -"transparent, sparkling-particled, or have a high-reflective finish may not " -"be suitable for this calibration and can produce less-than-desirable " -"results.\n" +"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, directly " +"measuring the calibration patterns. However, please be advised that the efficacy " +"and accuracy of this method may be compromised with specific types of materials. " +"Particularly, filaments that are transparent or semi-transparent, sparkling-" +"particled, or have a high-reflective finish may not be suitable for this " +"calibration and can produce less-than-desirable results.\n" "\n" -"The calibration results may vary between each calibration or filament. We " -"are still improving the accuracy and compatibility of this calibration " -"through firmware updates over time.\n" +"The calibration results may vary between each calibration or filament. We are " +"still improving the accuracy and compatibility of this calibration through " +"firmware updates over time.\n" "\n" -"Caution: Flow Rate Calibration is an advanced process, to be attempted only " -"by those who fully understand its purpose and implications. Incorrect usage " -"can lead to sub-par prints or printer damage. Please make sure to carefully " -"read and understand the process before doing it." +"Caution: Flow Rate Calibration is an advanced process, to be attempted only by " +"those who fully understand its purpose and implications. Incorrect usage can lead " +"to sub-par prints or printer damage. Please make sure to carefully read and " +"understand the process before doing it." msgstr "" -"La calibrazione automatica della portata utilizza la tecnologia Micro-Lidar " -"di Bambu Lab, misurando direttamente i modelli di calibrazione. Tuttavia, si " -"prega di notare che l'efficacia e l'accuratezza di questo metodo possono " -"essere compromesse con tipi specifici di materiali. In particolare, i " -"filamenti trasparenti o semitrasparenti, con particelle scintillanti o con " -"una finitura altamente riflettente potrebbero non essere adatti a questa " -"calibrazione e possono produrre risultati tutt'altro che desiderabili.\n" +"La calibrazione automatica della portata utilizza la tecnologia Micro-Lidar di " +"Bambu Lab, misurando direttamente i modelli di calibrazione. Tuttavia, si prega " +"di notare che l'efficacia e l'accuratezza di questo metodo possono essere " +"compromesse con tipi specifici di materiali. In particolare, i filamenti " +"trasparenti o semitrasparenti, con particelle scintillanti o con una finitura " +"altamente riflettente potrebbero non essere adatti a questa calibrazione e " +"possono produrre risultati tutt'altro che desiderabili.\n" "\n" -"I risultati della calibrazione possono variare a seconda della calibrazione " -"o del filamento. Stiamo ancora migliorando l'accuratezza e la compatibilità " -"di questa calibrazione attraverso aggiornamenti del firmware nel tempo.\n" +"I risultati della calibrazione possono variare a seconda della calibrazione o del " +"filamento. Stiamo ancora migliorando l'accuratezza e la compatibilità di questa " +"calibrazione attraverso aggiornamenti del firmware nel tempo.\n" "\n" "Attenzione: La taratura della portata è un processo avanzato, che può essere " -"tentato solo da coloro che ne comprendono appieno lo scopo e le " -"implicazioni. Un uso errato può causare stampe scadenti o danni alla " -"stampante. Assicurati di leggere attentamente e comprendere il processo " -"prima di farlo." +"tentato solo da coloro che ne comprendono appieno lo scopo e le implicazioni. Un " +"uso errato può causare stampe scadenti o danni alla stampante. Assicurati di " +"leggere attentamente e comprendere il processo prima di farlo." msgid "When you need Max Volumetric Speed Calibration" msgstr "Quando è necessaria la calibrazione della velocità volumetrica massima" @@ -12997,8 +12828,8 @@ msgstr "Sovraestrusione o sottoestrusione" msgid "Max Volumetric Speed calibration is recommended when you print with:" msgstr "" -"La calibrazione della velocità volumetrica massima è consigliata quando si " -"stampa con:" +"La calibrazione della velocità volumetrica massima è consigliata quando si stampa " +"con:" msgid "material with significant thermal shrinkage/expansion, such as..." msgstr "materiale con notevole ritiro/dilatazione termica, come..." @@ -13011,38 +12842,37 @@ msgstr "" "Abbiamo trovato il miglior fattore di calibrazione della dinamica del flusso" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The " -"failed test result would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The failed " +"test result would be dropped." msgstr "" "Parte della calibrazione non è riuscita! È possibile pulire la piastra e " "riprovare. Il risultato del test non riuscito verrebbe eliminato." msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in " -"the Name" +"*We recommend you to add brand, materia, type, and even humidity level in the Name" msgstr "" -"*Ti consigliamo di aggiungere marca, materia, tipo e persino livello di " -"umidità nel Nome" +"*Ti consigliamo di aggiungere marca, materia, tipo e persino livello di umidità " +"nel Nome" msgid "Failed" msgstr "Fallito" msgid "" -"Only one of the results with the same name will be saved. Are you sure you " -"want to overrides the other results?" +"Only one of the results with the same name will be saved. Are you sure you want " +"to overrides the other results?" msgstr "" -"Verrà salvato solo uno dei risultati con lo stesso nome. Si è sicuri di " -"voler sovrascrivere gli altri risultati?" +"Verrà salvato solo uno dei risultati con lo stesso nome. Si è sicuri di voler " +"sovrascrivere gli altri risultati?" #, c-format, boost-format msgid "" -"There is already a historical calibration result with the same name: %s. " -"Only one of the results with the same name is saved. Are you sure you want " -"to overrides the historical result?" +"There is already a historical calibration result with the same name: %s. Only one " +"of the results with the same name is saved. Are you sure you want to overrides " +"the historical result?" msgstr "" -"Esiste già un risultato di calibrazione storico con lo stesso nome: %s. " -"Viene salvato solo uno dei risultati con lo stesso nome. Si è sicuri di " -"voler eseguire l'override del risultato cronologico?" +"Esiste già un risultato di calibrazione storico con lo stesso nome: %s. Viene " +"salvato solo uno dei risultati con lo stesso nome. Si è sicuri di voler eseguire " +"l'override del risultato cronologico?" msgid "Please find the best line on your plate" msgstr "Trova la linea migliore nel tuo piatto" @@ -13084,8 +12914,7 @@ msgid "Please find the best object on your plate" msgstr "Trova l'oggetto migliore nel tuo piatto" msgid "Fill in the value above the block with smoothest top surface" -msgstr "" -"Riempi il valore sopra il blocco con la superficie superiore più liscia" +msgstr "Riempi il valore sopra il blocco con la superficie superiore più liscia" msgid "Skip Calibration2" msgstr "Salta calibrazione2" @@ -13098,8 +12927,7 @@ msgid "Please choose a block with smoothest top surface" msgstr "Si prega di scegliere un blocco con la superficie superiore più liscia" msgid "Please choose a block with smoothest top surface." -msgstr "" -"Si prega di scegliere un blocco con la superficie superiore più liscia." +msgstr "Si prega di scegliere un blocco con la superficie superiore più liscia." msgid "Please input a valid value (0 <= Max Volumetric Speed <= 60)" msgstr "Inserire un valore valido (0 <= Velocità volumetrica massima <= 60)" @@ -13117,11 +12945,11 @@ msgid "Title" msgstr "Titolo" msgid "" -"A test model will be printed. Please clear the build plate and place it back " -"to the hot bed before calibration." +"A test model will be printed. Please clear the build plate and place it back to " +"the hot bed before calibration." msgstr "" -"Verrà stampato un modello di prova. Si prega di pulire la piastra di " -"costruzione e riposizionarla sul letto caldo prima della calibrazione." +"Verrà stampato un modello di prova. Si prega di pulire la piastra di costruzione " +"e riposizionarla sul letto caldo prima della calibrazione." msgid "Printing Parameters" msgstr "Parametri di stampa" @@ -13151,8 +12979,7 @@ msgid "" msgstr "" "Suggerimenti per il materiale di calibrazione: \n" "- Materiali che possono condividere la stessa temperatura del letto caldo\n" -"- Diverse marche e famiglie di filamenti (Marca = Bambu, Famiglia = Basic, " -"Matte)" +"- Diverse marche e famiglie di filamenti (Marca = Bambu, Famiglia = Basic, Matte)" msgid "Pattern" msgstr "Trama" @@ -13165,8 +12992,7 @@ msgid "%s is not compatible with %s" msgstr "%s non è compatibile con %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." -msgstr "" -"Il TPU non è supportato per la calibrazione automatica di Flow Dynamics." +msgstr "Il TPU non è supportato per la calibrazione automatica di Flow Dynamics." msgid "Connecting to printer" msgstr "Collegamento alla stampante" @@ -13188,8 +13014,7 @@ msgstr "0.005" msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "" -"Il diametro dell'ugello è stato sincronizzato dalle impostazioni della " -"stampante" +"Il diametro dell'ugello è stato sincronizzato dalle impostazioni della stampante" msgid "From Volumetric Speed" msgstr "Dalla velocità volumetrica" @@ -13604,11 +13429,10 @@ msgstr "Il fornitore non è selezionato, riseleziona il fornitore." msgid "Custom vendor is not input, please input custom vendor." msgstr "" -"Il fornitore personalizzato non viene inserito, si prega di inserire il " -"fornitore personalizzato." +"Il fornitore personalizzato non viene inserito, si prega di inserire il fornitore " +"personalizzato." -msgid "" -"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgid "\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." msgstr "" "\"Bambu\" o \"Generico\" non possono essere utilizzati come Fornitore per " "filamenti personalizzati." @@ -13620,30 +13444,28 @@ msgid "Filament serial is not inputed, please input serial." msgstr "Il seriale del filamento non è inserito, inserire il seriale." msgid "" -"There may be escape characters in the vendor or serial input of filament. " -"Please delete and re-enter." +"There may be escape characters in the vendor or serial input of filament. Please " +"delete and re-enter." msgstr "" "Potrebbero essere presenti caratteri da evitare nel fornitore o nell'input " "seriale del filamento. Si prega di eliminare e inserire nuovamente." msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." msgstr "" -"Tutti gli input nel fornitore personalizzato o nel numero di serie sono " -"spazi. Si prega di inserire di nuovo." +"Tutti gli input nel fornitore personalizzato o nel numero di serie sono spazi. Si " +"prega di inserire di nuovo." msgid "The vendor can not be a number. Please re-enter." -msgstr "" +msgstr "Il venditore non può essere un numero. Si prega di inserire di nuovo." -msgid "" -"You have not selected a printer or preset yet. Please select at least one." +msgid "You have not selected a printer or preset yet. Please select at least one." msgstr "" "Non è stata ancora selezionata una stampante o un Preset. Si prega di " "selezionarne almeno uno." msgid "Some existing presets have failed to be created, as follows:\n" msgstr "" -"Non è stato possibile creare alcuni preset esistenti, come indicato di " -"seguito:\n" +"Non è stato possibile creare alcuni preset esistenti, come indicato di seguito:\n" msgid "" "\n" @@ -13653,14 +13475,13 @@ msgstr "" "Vuoi riscriverlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected\". \n" "To add preset for more prinetrs, Please go to printer selection" msgstr "" "Rinomineremo le impostazioni predefinite come \"Tipo di fornitore seriale " "@printer selezionato\". \n" -" Per aggiungere impostazioni predefinite per altre stampanti, vai alla " -"selezione della stampante." +" Per aggiungere impostazioni predefinite per altre stampanti, vai alla selezione " +"della stampante." msgid "Create Printer/Nozzle" msgstr "Crea stampante/ugello" @@ -13685,8 +13506,7 @@ msgstr "Crea tipo" msgid "The model is not fond, place reselect vendor." msgstr "" -"La modello non è stato trovato. Si prega di selezionare nuovamente il " -"fornitore." +"La modello non è stato trovato. Si prega di selezionare nuovamente il fornitore." msgid "Select Model" msgstr "Seleziona modello" @@ -13733,12 +13553,10 @@ msgstr "Il file supera i %d MB, si prega di importarlo di nuovo." msgid "Exception in obtaining file size, please import again." msgstr "" -"Eccezione nell'ottenere la dimensione del file, si prega di importare di " -"nuovo." +"Eccezione nell'ottenere la dimensione del file, si prega di importare di nuovo." msgid "Preset path is not find, please reselect vendor." -msgstr "" -"Il percorso preimpostato non viene trovato, riselezionare il fornitore." +msgstr "Il percorso preimpostato non viene trovato, riselezionare il fornitore." msgid "The printer model was not found, please reselect." msgstr "Il modello della stampante non è stato trovato, riselezionare." @@ -13748,8 +13566,8 @@ msgstr "Il diametro dell'ugello non trovato, riselezionare." msgid "The printer preset is not fond, place reselect." msgstr "" -"La configurazione predefinita della stampante non è stata trovata. Per " -"favore, seleziona nuovamente." +"La configurazione predefinita della stampante non è stata trovata. Per favore, " +"seleziona nuovamente." msgid "Printer Preset" msgstr "Preimpostazione stampante" @@ -13767,41 +13585,39 @@ msgid "Back Page 1" msgstr "Indietro Pagina 1" msgid "" -"You have not yet chosen which printer preset to create based on. Please " -"choose the vendor and model of the printer" +"You have not yet chosen which printer preset to create based on. Please choose " +"the vendor and model of the printer" msgstr "" -"Non avete ancora scelto l'impostazione predefinita della stampante in base " -"alla quale creare. Si prega di scegliere il fornitore e il modello della " -"stampante" +"Non avete ancora scelto l'impostazione predefinita della stampante in base alla " +"quale creare. Si prega di scegliere il fornitore e il modello della stampante" msgid "" "You have entered an illegal input in the printable area section on the first " "page. Please check before creating it." msgstr "" -"Hai inserito un input non valido nella sezione dell'area stampabile nella " -"prima pagina. Controlla prima di crearlo." +"Hai inserito un input non valido nella sezione dell'area stampabile nella prima " +"pagina. Controlla prima di crearlo." msgid "The custom printer or model is not inputed, place input." msgstr "" "La stampante o il modello personalizzato non viene immesso, inserire l'input." msgid "" -"The printer preset you created already has a preset with the same name. Do " -"you want to overwrite it?\n" -"\tYes: Overwrite the printer preset with the same name, and filament and " -"process presets with the same preset name will be recreated \n" -"and filament and process presets without the same preset name will be " -"reserve.\n" +"The printer preset you created already has a preset with the same name. Do you " +"want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and process " +"presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be reserve.\n" "\tCancel: Do not create a preset, return to the creation interface." msgstr "" "La configurazione predefinita della stampante che hai creato ha già una " "configurazione predefinita con lo stesso nome. Vuoi sovrascriverla?\n" -"\tSì: Sovrascrivi la configurazione predefinita della stampante con lo " -"stesso nome, e le configurazioni predefinite del filamento e del processo " -"con lo stesso nome saranno ricreate,\n" +"\tSì: Sovrascrivi la configurazione predefinita della stampante con lo stesso " +"nome, e le configurazioni predefinite del filamento e del processo con lo stesso " +"nome saranno ricreate,\n" " mentre quelle senza lo stesso nome saranno conservate.\n" -" \tAnnulla: Non creare una configurazione predefinita, torna all'interfaccia " -"di creazione." +" \tAnnulla: Non creare una configurazione predefinita, torna all'interfaccia di " +"creazione." msgid "You need to select at least one filament preset." msgstr "È necessario selezionare almeno un preset filamento." @@ -13822,18 +13638,17 @@ msgid "Current vendor has no models, please reselect." msgstr "Il fornitore attuale non ha modelli, si prega di riselezionare." msgid "" -"You have not selected the vendor and model or inputed the custom vendor and " -"model." +"You have not selected the vendor and model or inputed the custom vendor and model." msgstr "" -"Non sono stati selezionati il fornitore e il modello o non sono stati " -"immessi il fornitore e il modello personalizzati." +"Non sono stati selezionati il fornitore e il modello o non sono stati immessi il " +"fornitore e il modello personalizzati." msgid "" "There may be escape characters in the custom printer vendor or model. Please " "delete and re-enter." msgstr "" -"Potrebbero essere presenti caratteri da evitare nel fornitore o nel modello " -"di stampante personalizzata. Si prega di eliminare e inserire nuovamente." +"Potrebbero essere presenti caratteri da evitare nel fornitore o nel modello di " +"stampante personalizzata. Si prega di eliminare e inserire nuovamente." msgid "" "All inputs in the custom printer vendor or model are spaces. Please re-enter." @@ -13845,10 +13660,8 @@ msgid "Please check bed printable shape and origin input." msgstr "" "Si prega di controllare la forma stampabile del letto e l'input dell'origine." -msgid "" -"You have not yet selected the printer to replace the nozzle, please choose." -msgstr "" -"Non hai ancora selezionato la stampante per sostituire l'ugello, scegli." +msgid "You have not yet selected the printer to replace the nozzle, please choose." +msgstr "Non hai ancora selezionato la stampante per sostituire l'ugello, scegli." msgid "Create Printer Successful" msgstr "Creazione di una stampante riuscita" @@ -13860,23 +13673,21 @@ msgid "Printer Created" msgstr "Stampante creata" msgid "Please go to printer settings to edit your presets" -msgstr "" -"Vai alle impostazioni della stampante per modificare le tue preimpostazioni" +msgstr "Vai alle impostazioni della stampante per modificare le tue preimpostazioni" msgid "Filament Created" msgstr "Filamento creato" msgid "" "Please go to filament setting to edit your presets if you need.\n" -"Please note that nozzle temperature, hot bed temperature, and maximum " -"volumetric speed have a significant impact on printing quality. Please set " -"them carefully." +"Please note that nozzle temperature, hot bed temperature, and maximum volumetric " +"speed have a significant impact on printing quality. Please set them carefully." msgstr "" "Vai alle impostazioni del filamento per modificare le tue impostazioni " "predefinite se necessario. \n" -"Nota che la temperatura della ugello, la temperatura del letto riscaldato e " -"la velocità volumetrica massima hanno un impatto significativo sulla qualità " -"di stampa. Impostale con attenzione." +"Nota che la temperatura della ugello, la temperatura del letto riscaldato e la " +"velocità volumetrica massima hanno un impatto significativo sulla qualità di " +"stampa. Impostale con attenzione." msgid "Printer Setting" msgstr "Impostazione della stampante" @@ -13919,10 +13730,9 @@ msgstr "Esportazione riuscita" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to " -"clear it and rebuild it.\n" -"If not, a time suffix will be added, and you can modify the name after " -"creation." +"The '%s' folder already exists in the current directory. Do you want to clear it " +"and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after creation." msgstr "" "La cartella '%s' esiste già nella directory corrente. Vuoi cancellarla e " "ricostruirla.\n" @@ -13933,8 +13743,8 @@ msgid "" "Printer and all the filament&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" -"Stampante e tutte le preimpostazioni di filamento e processo che " -"appartengono alla stampante. \n" +"Stampante e tutte le preimpostazioni di filamento e processo che appartengono " +"alla stampante. \n" "Può essere condiviso con altri." msgid "" @@ -13945,29 +13755,27 @@ msgstr "" "Può essere condiviso con altri." msgid "" -"Only display printer names with changes to printer, filament, and process " -"presets." +"Only display printer names with changes to printer, filament, and process presets." msgstr "" -"Mostrare solo i nomi delle stampanti con modifiche alle impostazioni " -"predefinite della stampante, del filamento e del processo." +"Mostrare solo i nomi delle stampanti con modifiche alle impostazioni predefinite " +"della stampante, del filamento e del processo." msgid "Only display the filament names with changes to filament presets." msgstr "" -"Mostrare solo i nomi dei filamenti con modifiche alle impostazioni " -"predefinite del filamento." +"Mostrare solo i nomi dei filamenti con modifiche alle impostazioni predefinite " +"del filamento." msgid "" -"Only printer names with user printer presets will be displayed, and each " -"preset you choose will be exported as a zip." +"Only printer names with user printer presets will be displayed, and each preset " +"you choose will be exported as a zip." msgstr "" -"Verranno visualizzati solo i nomi delle stampanti con le preimpostazioni " -"della stampante dell'utente e ogni preimpostazione scelta verrà esportata " -"come zip." +"Verranno visualizzati solo i nomi delle stampanti con le preimpostazioni della " +"stampante dell'utente e ogni preimpostazione scelta verrà esportata come zip." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be " -"exported as a zip." +"and all user filament presets in each filament name you select will be exported " +"as a zip." msgstr "" "Verranno visualizzati solo i nomi dei filamenti con le preimpostazioni dei " "filamenti dell'utente, \n" @@ -13976,13 +13784,13 @@ msgstr "" msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be " -"exported as a zip." +"and all user process presets in each printer name you select will be exported as " +"a zip." msgstr "" -"Verranno visualizzati solo i nomi delle stampanti con le impostazioni " -"predefinite del processo modificate,\n" -" e tutte le impostazioni predefinite del processo dell'utente in ogni nome " -"della stampante selezionato saranno esportate come un file zip" +"Verranno visualizzati solo i nomi delle stampanti con le impostazioni predefinite " +"del processo modificate,\n" +" e tutte le impostazioni predefinite del processo dell'utente in ogni nome della " +"stampante selezionato saranno esportate come un file zip" msgid "Please select at least one printer or filament." msgstr "Seleziona almeno una stampante o un filamento." @@ -13997,8 +13805,8 @@ msgid "Filament presets under this filament" msgstr "Filamento preimpostato sotto questo filamento" msgid "" -"Note: If the only preset under this filament is deleted, the filament will " -"be deleted after exiting the dialog." +"Note: If the only preset under this filament is deleted, the filament will be " +"deleted after exiting the dialog." msgstr "" "Nota: Se l'unico preset sotto questo filamento viene eliminato, il filamento " "verrà cancellato dopo aver chiuso la finestra di dialogo." @@ -14031,8 +13839,7 @@ msgid "" "If you are using this filament on your printer, please reset the filament " "information for that slot." msgstr "" -"Tutti i preset di filamento appartenenti a questo filamento verranno " -"eliminati. \n" +"Tutti i preset di filamento appartenenti a questo filamento verranno eliminati. \n" "Se stai utilizzando questo filamento sulla tua stampante, reimposta le " "informazioni sul filamento per quello slot." @@ -14072,8 +13879,8 @@ msgid "The start, end or step is not valid value." msgstr "L'inizio, la fine o il passo non sono valori validi." msgid "" -"Unable to calibrate: maybe because the set calibration value range is too " -"large, or the step is too small" +"Unable to calibrate: maybe because the set calibration value range is too large, " +"or the step is too small" msgstr "" "Impossibile calibrare: forse perché l'intervallo di valori di calibrazione " "impostato è troppo ampio o il passo è troppo piccolo" @@ -14094,8 +13901,8 @@ msgid "Refresh Printers" msgstr "Aggiorna Stampanti" msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed " +"certificate." msgstr "" "File HTTPS CA opzionale. È necessario solo se si intende usare un HTTPS con " "certificato autofirmato." @@ -14108,8 +13915,8 @@ msgstr "Apri file di certificato CA" #, c-format, boost-format msgid "" -"On this system, %s uses HTTPS certificates from the system Certificate Store " -"or Keychain." +"On this system, %s uses HTTPS certificates from the system Certificate Store or " +"Keychain." msgstr "" "Su questo sistema, %s utilizza certificati HTTPS provenienti dal sistema " "Certificate Store o da Keychain." @@ -14118,12 +13925,11 @@ msgid "" "To use a custom CA file, please import your CA file into Certificate Store / " "Keychain." msgstr "" -"Per utilizzare un file CA personalizzato, importa il tuo file CA sul " -"Certificate Store / Keychain." +"Per utilizzare un file CA personalizzato, importa il tuo file CA sul Certificate " +"Store / Keychain." msgid "Connection to printers connected via the print host failed." -msgstr "" -"Collegamento alle stampanti collegate tramite l'host di stampa fallito." +msgstr "Collegamento alle stampanti collegate tramite l'host di stampa fallito." #, c-format, boost-format msgid "Mismatched type of print host: %s" @@ -14157,15 +13963,14 @@ msgid "Upload not enabled on FlashAir card." msgstr "Caricamento non attivato sulla scheda FlashAir." msgid "Connection to FlashAir works correctly and upload is enabled." -msgstr "" -"Connessione a FlashAir correttamente funzionante e caricamento abilitato." +msgstr "Connessione a FlashAir correttamente funzionante e caricamento abilitato." msgid "Could not connect to FlashAir" msgstr "Impossibile connettersi a FlashAir" msgid "" -"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " -"is required." +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function is " +"required." msgstr "" "Nota: è necessaria FlashAir con firmware 2.00.02 o successivo e funzione di " "caricamento attiva." @@ -14214,8 +14019,8 @@ msgstr "%1% : non c'è spazio libero" #, boost-format msgid "Upload has failed. There is no suitable storage found at %1%." msgstr "" -"Caricamento non riuscito. Non è stato trovato uno spazio di archiviazione " -"adatto su %1%." +"Caricamento non riuscito. Non è stato trovato uno spazio di archiviazione adatto " +"su %1%." msgid "Connection to Prusa Connect works correctly." msgstr "Il collegamento a Prusa Connect funziona correttamente." @@ -14274,13 +14079,12 @@ msgstr "" msgid "" "Sandwich mode\n" "Did you know that you can use sandwich mode (inner-outer-inner) to improve " -"precision and layer consistency if your model doesn't have very steep " -"overhangs?" +"precision and layer consistency if your model doesn't have very steep overhangs?" msgstr "" "Modalità sandwich\n" -"Sapevi che puoi utilizzare la modalità sandwich (interno-esterno-interno) " -"per migliorare la precisione e l'uniformità degli strati se il tuo modello " -"non presenta sporgenze molto ripide?" +"Sapevi che puoi utilizzare la modalità sandwich (interno-esterno-interno) per " +"migliorare la precisione e l'uniformità degli strati se il tuo modello non " +"presenta sporgenze molto ripide?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -14293,12 +14097,12 @@ msgstr "" #: resources/data/hints.ini: [hint:Calibration] msgid "" "Calibration\n" -"Did you know that calibrating your printer can do wonders? Check out our " -"beloved calibration solution in OrcaSlicer." +"Did you know that calibrating your printer can do wonders? Check out our beloved " +"calibration solution in OrcaSlicer." msgstr "" "Taratura\n" -"Sapevi che calibrare la tua stampante può fare miracoli? Dai un'occhiata " -"alla nostra amata soluzione di calibrazione in OrcaSlicer." +"Sapevi che calibrare la tua stampante può fare miracoli? Dai un'occhiata alla " +"nostra amata soluzione di calibrazione in OrcaSlicer." #: resources/data/hints.ini: [hint:Auxiliary fan] msgid "" @@ -14322,19 +14126,25 @@ msgid "" "G-code window\n" "You can turn on/off the G-code window by pressing the C key." msgstr "" +"Finestra G-code\n" +"È possibile attivare/disattivare la finestra del codice G premendo il tasto C ." #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can switch between Prepare and Preview workspaces by " -"pressing the Tab key." +"You can switch between Prepare and Preview workspaces by pressing " +"the Tab key." msgstr "" +"Passare da un'area di lavoro all'altra\n" +"È possibile passare dall'area di lavoro Prepara a quella Anteprima " +"e viceversa premendo il tasto TAB ." #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" -"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " -"3D scene operations." +"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D " +"scene operations." msgstr "" "Come utilizzare le scorciatoie da tastiera\n" "Sapevi che Orca Slicer offre un'ampia gamma di scorciatoie da tastiera e " @@ -14343,19 +14153,22 @@ msgstr "" #: resources/data/hints.ini: [hint:Reverse on odd] msgid "" "Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Did you know that Reverse on odd feature can significantly improve the " +"surface quality of your overhangs?" msgstr "" +"Retromarcia su dispari\n" +"Sapevi che la retromarcia su elementi dispari può migliorare " +"significativamente la qualità della superficie delle tue sporgenze?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" -"Did you know that you can cut a model at any angle and position with the " -"cutting tool?" +"Did you know that you can cut a model at any angle and position with the cutting " +"tool?" msgstr "" "Strumento di taglio\n" -"Sapevate che è possibile tagliare un modello in qualsiasi angolazione e " -"posizione con l'utensile di taglio?" +"Sapevate che è possibile tagliare un modello in qualsiasi angolazione e posizione " +"con l'utensile di taglio?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" @@ -14364,8 +14177,8 @@ msgid "" "problems on the Windows system?" msgstr "" "Correggi modello\n" -"Sapevi che puoi riparare un modello 3D danneggiato per evitare molti " -"problemi di slicing sul sistema Windows?" +"Sapevi che puoi riparare un modello 3D danneggiato per evitare molti problemi di " +"slicing sul sistema Windows?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -14386,8 +14199,8 @@ msgstr "" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" "Auto-Orient\n" -"Did you know that you can rotate objects to an optimal orientation for " -"printing by a simple click?" +"Did you know that you can rotate objects to an optimal orientation for printing " +"by a simple click?" msgstr "" "Orientamento automatico\n" "Sapevi che puoi orientare gli oggetti in modo ottimale per la stampa con un " @@ -14396,20 +14209,19 @@ msgstr "" #: resources/data/hints.ini: [hint:Lay on Face] msgid "" "Lay on Face\n" -"Did you know that you can quickly orient a model so that one of its faces " -"sits on the print bed? Select the \"Place on face\" function or press the " -"F key." +"Did you know that you can quickly orient a model so that one of its faces sits on " +"the print bed? Select the \"Place on face\" function or press the F key." msgstr "" "Posiziona su faccia\n" -"Sapevate che è possibile orientare rapidamente un modello in modo che una " -"delle sue facce si trovi sul piatto di stampa? Selezionare la funzione " -"\"Posiziona su faccia\" o premere il tasto F ." +"Sapevate che è possibile orientare rapidamente un modello in modo che una delle " +"sue facce si trovi sul piatto di stampa? Selezionare la funzione \"Posiziona su " +"faccia\" o premere il tasto F ." #: resources/data/hints.ini: [hint:Object List] msgid "" "Object List\n" -"Did you know that you can view all objects/parts in a list and change " -"settings for each object/part?" +"Did you know that you can view all objects/parts in a list and change settings " +"for each object/part?" msgstr "" "Elenco oggetti\n" "Sapevate che è possibile visualizzare tutti gli oggetti/parti in un elenco e " @@ -14418,8 +14230,8 @@ msgstr "" #: resources/data/hints.ini: [hint:Search Functionality] msgid "" "Search Functionality\n" -"Did you know that you use the Search tool to quickly find a specific Orca " -"Slicer setting?" +"Did you know that you use the Search tool to quickly find a specific Orca Slicer " +"setting?" msgstr "" "Funzionalità di ricerca\n" "Sapevi che puoi usare lo strumento di ricerca per trovare rapidamente " @@ -14433,24 +14245,24 @@ msgid "" msgstr "" "Semplifica modello\n" "Sapevi che puoi ridurre il numero di triangoli in una mesh utilizzando la " -"funzione Semplifica mesh? Fare clic con il pulsante destro del mouse sul " -"modello e selezionare Semplifica modello." +"funzione Semplifica mesh? Fare clic con il pulsante destro del mouse sul modello " +"e selezionare Semplifica modello." #: resources/data/hints.ini: [hint:Slicing Parameter Table] msgid "" "Slicing Parameter Table\n" -"Did you know that you can view all objects/parts on a table and change " -"settings for each object/part?" +"Did you know that you can view all objects/parts on a table and change settings " +"for each object/part?" msgstr "" "Tabella Parametri Slicing\n" -"Sapevate che è possibile visualizzare tutti gli oggetti/parti di una tabella " -"e modificare le impostazioni di ciascun oggetto/parte?" +"Sapevate che è possibile visualizzare tutti gli oggetti/parti di una tabella e " +"modificare le impostazioni di ciascun oggetto/parte?" #: resources/data/hints.ini: [hint:Split to Objects/Parts] msgid "" "Split to Objects/Parts\n" -"Did you know that you can split a big object into small ones for easy " -"colorizing or printing?" +"Did you know that you can split a big object into small ones for easy colorizing " +"or printing?" msgstr "" "Dividi in oggetti/parti\n" "Sapevi che è possibile dividere un oggetto grande in piccoli oggetti per " @@ -14459,9 +14271,9 @@ msgstr "" #: resources/data/hints.ini: [hint:Subtract a Part] msgid "" "Subtract a Part\n" -"Did you know that you can subtract one mesh from another using the Negative " -"part modifier? That way you can, for example, create easily resizable holes " -"directly in Orca Slicer." +"Did you know that you can subtract one mesh from another using the Negative part " +"modifier? That way you can, for example, create easily resizable holes directly " +"in Orca Slicer." msgstr "" "Sottrazione di una parte\n" "Sapevi che puoi sottrarre una mesh da un'altra usando il modificatore Parte " @@ -14473,113 +14285,111 @@ msgid "" "STEP\n" "Did you know that you can improve your print quality by slicing a STEP file " "instead of an STL?\n" -"Orca Slicer supports slicing STEP files, providing smoother results than a " -"lower resolution STL. Give it a try!" +"Orca Slicer supports slicing STEP files, providing smoother results than a lower " +"resolution STL. Give it a try!" msgstr "" "PASSO\n" -"Sapevi che puoi migliorare la tua qualità di stampa tagliando un file STEP " -"invece di un STL?\n" +"Sapevi che puoi migliorare la tua qualità di stampa tagliando un file STEP invece " +"di un STL?\n" "Orca Slicer supporta il sezionamento dei file STEP, fornendo risultati più " "uniformi rispetto a un STL a risoluzione inferiore. Provateci!" #: resources/data/hints.ini: [hint:Z seam location] msgid "" "Z seam location\n" -"Did you know that you can customize the location of the Z seam, and even " -"paint it on your print, to have it in a less visible location? This improves " -"the overall look of your model. Check it out!" +"Did you know that you can customize the location of the Z seam, and even paint it " +"on your print, to have it in a less visible location? This improves the overall " +"look of your model. Check it out!" msgstr "" "Posizione giunzione Z\n" "Sapevi che puoi personalizzare la posizione della giunzione Z e persino " -"dipingerla sulla stampa, per averla in una posizione meno visibile? Ciò " -"migliora l'aspetto generale del modello. Dai un'occhiata!" +"dipingerla sulla stampa, per averla in una posizione meno visibile? Ciò migliora " +"l'aspetto generale del modello. Dai un'occhiata!" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking " -"prints? Depending on the material, you can improve the overall finish of the " -"printed model by doing some fine-tuning." +"Did you know that flow rate can be fine-tuned for even better-looking prints? " +"Depending on the material, you can improve the overall finish of the printed " +"model by doing some fine-tuning." msgstr "" "Regolazione precisa del flusso\n" -"Sapevi che la velocità del flusso può essere regolata con precisione per " -"stampe ancora più belle? A seconda del materiale, è possibile migliorare la " -"finitura complessiva del modello stampato effettuando regolazioni precise." +"Sapevi che la velocità del flusso può essere regolata con precisione per stampe " +"ancora più belle? A seconda del materiale, è possibile migliorare la finitura " +"complessiva del modello stampato effettuando regolazioni precise." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" "Split your prints into plates\n" -"Did you know that you can split a model that has a lot of parts into " -"individual plates ready to print? This will simplify the process of keeping " -"track of all the parts." +"Did you know that you can split a model that has a lot of parts into individual " +"plates ready to print? This will simplify the process of keeping track of all the " +"parts." msgstr "" "Dividi le stampe in piatti\n" -"Sapevi che puoi dividere un modello con molte parti in singoli piatti pronti " -"per la stampa? Ciò semplificherà il processo di elaborazione di tutte le " -"parti." +"Sapevi che puoi dividere un modello con molte parti in singoli piatti pronti per " +"la stampa? Ciò semplificherà il processo di elaborazione di tutte le parti." -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer -#: Height] +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] msgid "" "Speed up your print with Adaptive Layer Height\n" -"Did you know that you can print a model even faster, by using the Adaptive " -"Layer Height option? Check it out!" +"Did you know that you can print a model even faster, by using the Adaptive Layer " +"Height option? Check it out!" msgstr "" "Accelera la stampa con l'opzione Layers Adattativo\n" -"Sapevi che puoi stampare un modello ancora più velocemente utilizzando " -"l'opzione Layer Adattativo? Scoprilo!" +"Sapevi che puoi stampare un modello ancora più velocemente utilizzando l'opzione " +"Layer Adattativo? Scoprilo!" #: resources/data/hints.ini: [hint:Support painting] msgid "" "Support painting\n" -"Did you know that you can paint the location of your supports? This feature " -"makes it easy to place the support material only on the sections of the " -"model that actually need it." +"Did you know that you can paint the location of your supports? This feature makes " +"it easy to place the support material only on the sections of the model that " +"actually need it." msgstr "" "Pitturare supporti\n" "Sapevi che è possibile pitturare la posizione dei supporti? Questa funzione " -"consente di posizionare facilmente il materiale di supporto solo sulle " -"sezioni del modello che ne hanno effettivamente bisogno." +"consente di posizionare facilmente il materiale di supporto solo sulle sezioni " +"del modello che ne hanno effettivamente bisogno." #: resources/data/hints.ini: [hint:Different types of supports] msgid "" "Different types of supports\n" -"Did you know that you can choose from multiple types of supports? Tree " -"supports work great for organic models, while saving filament and improving " -"print speed. Check them out!" +"Did you know that you can choose from multiple types of supports? Tree supports " +"work great for organic models, while saving filament and improving print speed. " +"Check them out!" msgstr "" "Diversi tipi di supporto\n" -"Sapevate che potete scegliere tra diversi tipi di supporto? I supporti ad " -"albero funzionano benissimo per i modelli organici, risparmiando filamento e " -"migliorando la velocità di stampa. Scopriteli!" +"Sapevate che potete scegliere tra diversi tipi di supporto? I supporti ad albero " +"funzionano benissimo per i modelli organici, risparmiando filamento e migliorando " +"la velocità di stampa. Scopriteli!" #: resources/data/hints.ini: [hint:Printing Silk Filament] msgid "" "Printing Silk Filament\n" "Did you know that Silk filament needs special consideration to print it " -"successfully? Higher temperature and lower speed are always recommended for " -"the best results." +"successfully? Higher temperature and lower speed are always recommended for the " +"best results." msgstr "" "Stampa di filamento Silk (seta)\n" -"Sapevi che il filamento seta richiede un'attenzione speciale per stampare " -"con successo? Una temperatura più alta e una velocità inferiore sono sempre " +"Sapevi che il filamento seta richiede un'attenzione speciale per stampare con " +"successo? Una temperatura più alta e una velocità inferiore sono sempre " "consigliate per ottenere i migliori risultati." #: resources/data/hints.ini: [hint:Brim for better adhesion] msgid "" "Brim for better adhesion\n" -"Did you know that when printing models have a small contact interface with " -"the printing surface, it's recommended to use a brim?" +"Did you know that when printing models have a small contact interface with the " +"printing surface, it's recommended to use a brim?" msgstr "" "Brim per una migliore adesione\n" -"Sapevate che quando i modelli stampati hanno una piccola interfaccia di " -"contatto con la superficie di stampa, si consiglia di utilizzare un brim?" +"Sapevate che quando i modelli stampati hanno una piccola interfaccia di contatto " +"con la superficie di stampa, si consiglia di utilizzare un brim?" #: resources/data/hints.ini: [hint:Set parameters for multiple objects] msgid "" "Set parameters for multiple objects\n" -"Did you know that you can set slicing parameters for all selected objects at " -"one time?" +"Did you know that you can set slicing parameters for all selected objects at one " +"time?" msgstr "" "Impostare i parametri per più oggetti\n" "Sapevi che puoi impostare i parametri di elaborazione per tutti gli oggetti " @@ -14596,65 +14406,64 @@ msgstr "" #: resources/data/hints.ini: [hint:Flush into support/objects/infill] msgid "" "Flush into support/objects/infill\n" -"Did you know that you can save the wasted filament by flushing them into " -"support/objects/infill during filament change?" +"Did you know that you can save the wasted filament by flushing them into support/" +"objects/infill during filament change?" msgstr "" "Spurga nei supporti/oggetti/riempimenti\n" -"Sapevi che puoi ridurre lo spreco di filamento spurgandolo nei supporti/" -"oggetti/riempimenti durante la sostituzione del filamento?" +"Sapevi che puoi ridurre lo spreco di filamento spurgandolo nei supporti/oggetti/" +"riempimenti durante la sostituzione del filamento?" #: resources/data/hints.ini: [hint:Improve strength] msgid "" "Improve strength\n" -"Did you know that you can use more wall loops and higher sparse infill " -"density to improve the strength of the model?" +"Did you know that you can use more wall loops and higher sparse infill density to " +"improve the strength of the model?" msgstr "" "Migliorare la resistenza\n" -"Sapevate che è possibile utilizzare un maggior numero di anelli a parete e " -"una maggiore densità riempimento per migliorare la resistenza del modello?" +"Sapevate che è possibile utilizzare un maggior numero di anelli a parete e una " +"maggiore densità riempimento per migliorare la resistenza del modello?" -#: resources/data/hints.ini: [hint:When need to print with the printer door -#: opened] +#: resources/data/hints.ini: [hint:When need to print with the printer door opened] msgid "" "When need to print with the printer door opened\n" -"Did you know that opening the printer door can reduce the probability of " -"extruder/hotend clogging when printing lower temperature filament with a " -"higher enclosure temperature. More info about this in the Wiki." +"Did you know that opening the printer door can reduce the probability of extruder/" +"hotend clogging when printing lower temperature filament with a higher enclosure " +"temperature. More info about this in the Wiki." msgstr "" "Quando è necessario stampare con lo sportello della stampante aperto\n" -"Sapevi che l'apertura dello sportello della stampante può ridurre la " -"probabilità di intasamento dell'estrusore/hotend quando si stampa filamento " -"a temperatura inferiore con una temperatura dell'involucro più elevata. " -"Maggiori informazioni su questo nel Wiki." +"Sapevi che l'apertura dello sportello della stampante può ridurre la probabilità " +"di intasamento dell'estrusore/hotend quando si stampa filamento a temperatura " +"inferiore con una temperatura dell'involucro più elevata. Maggiori informazioni " +"su questo nel Wiki." #: resources/data/hints.ini: [hint:Avoid warping] msgid "" "Avoid warping\n" -"Did you know that when printing materials that are prone to warping such as " -"ABS, appropriately increasing the heatbed temperature can reduce the " -"probability of warping." +"Did you know that when printing materials that are prone to warping such as ABS, " +"appropriately increasing the heatbed temperature can reduce the probability of " +"warping." msgstr "" "Evita la deformazione\n" "Sapevi che quando si stampano materiali soggetti a deformazioni come l'ABS, " -"aumentare in modo appropriato la temperatura del piano riscaldato può " -"ridurre la probabilità di deformazione." +"aumentare in modo appropriato la temperatura del piano riscaldato può ridurre la " +"probabilità di deformazione." #~ msgid "wiki" #~ msgstr "" -#~ "Darò i comandi per far funzionare EPEL su RHEL 8, ma se sei su RHEL 6 o " -#~ "RHEL 7 puoi trovare quelle istruzioni sul wiki." +#~ "Darò i comandi per far funzionare EPEL su RHEL 8, ma se sei su RHEL 6 o RHEL 7 " +#~ "puoi trovare quelle istruzioni sul wiki." #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" option." -#~ "Some extruders work better with this option unckecked (absolute extrusion " -#~ "mode). Wipe tower is only compatible with relative mode. It is always " -#~ "enabled on BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" option.Some " +#~ "extruders work better with this option unckecked (absolute extrusion mode). " +#~ "Wipe tower is only compatible with relative mode. It is always enabled on " +#~ "BambuLab printers. Default is checked" #~ msgstr "" #~ "L'estrusione relativa è consigliata quando si utilizza l'opzione " #~ "\"label_objects\". Alcuni estrusori funzionano meglio con questa opzione " -#~ "unckecked (modalità di estrusione assoluta). La torre di pulizia è " -#~ "compatibile solo con la modalità relativa. È sempre abilitato sulle " -#~ "stampanti BambuLab. Il valore predefinito è selezionato" +#~ "unckecked (modalità di estrusione assoluta). La torre di pulizia è compatibile " +#~ "solo con la modalità relativa. È sempre abilitato sulle stampanti BambuLab. Il " +#~ "valore predefinito è selezionato" #~ msgid "Movement:" #~ msgstr "Movement:" @@ -14694,16 +14503,15 @@ msgstr "" #~ msgstr "Ricalcola" #~ msgid "" -#~ "Orca recalculates your flushing volumes everytime the filament colors " -#~ "change. You can change this behavior in Preferences." +#~ "Orca recalculates your flushing volumes everytime the filament colors change. " +#~ "You can change this behavior in Preferences." #~ msgstr "" -#~ "Orca ricalcola i volumi di risciacquo ogni volta che i colori del " -#~ "filamento cambiano. È possibile modificare questo comportamento in " -#~ "Preferenze." +#~ "Orca ricalcola i volumi di risciacquo ogni volta che i colori del filamento " +#~ "cambiano. È possibile modificare questo comportamento in Preferenze." #~ msgid "" -#~ "The printer timed out while receiving a print job. Please check if the " -#~ "network is functioning properly and send the print again." +#~ "The printer timed out while receiving a print job. Please check if the network " +#~ "is functioning properly and send the print again." #~ msgstr "" #~ "La stampante ha raggiunto il timeout durante la ricezione di un lavoro di " #~ "stampa. Controlla se la rete funziona correttamente e invia nuovamente la " @@ -14711,8 +14519,7 @@ msgstr "" #~ msgid "The beginning of the vendor can not be a number. Please re-enter." #~ msgstr "" -#~ "L'inizio del fornitore non può essere un numero. Si prega di inserire di " -#~ "nuovo." +#~ "L'inizio del fornitore non può essere un numero. Si prega di inserire di nuovo." #~ msgid "Edit Text" #~ msgstr "Modifica testo" @@ -14758,32 +14565,32 @@ msgstr "" #~ msgid "" #~ "Discribe how long the nozzle will move along the last path when retracting" #~ msgstr "" -#~ "Descrive per quanto tempo il nozzle si muoverà lungo l'ultimo percorso " -#~ "mentre si ritrae." +#~ "Descrive per quanto tempo il nozzle si muoverà lungo l'ultimo percorso mentre " +#~ "si ritrae." #~ msgid "" #~ "Simplify Model\n" -#~ "Did you know that you can reduce the number of triangles in a mesh using " -#~ "the Simplify mesh feature? Right-click the model and select Simplify " -#~ "model. Read more in the documentation." +#~ "Did you know that you can reduce the number of triangles in a mesh using the " +#~ "Simplify mesh feature? Right-click the model and select Simplify model. Read " +#~ "more in the documentation." #~ msgstr "" #~ "Semplifica Modello\n" #~ "Sapevate che è possibile ridurre il numero di triangoli in una mesh " -#~ "utilizzando la funzione Semplifica mesh? Fare clic con il tasto destro " -#~ "del mouse sul modello e selezionare Semplifica modello. Per saperne di " -#~ "più, consultare la documentazione." +#~ "utilizzando la funzione Semplifica mesh? Fare clic con il tasto destro del " +#~ "mouse sul modello e selezionare Semplifica modello. Per saperne di più, " +#~ "consultare la documentazione." #~ msgid "" #~ "Subtract a Part\n" -#~ "Did you know that you can subtract one mesh from another using the " -#~ "Negative part modifier? That way you can, for example, create easily " -#~ "resizable holes directly in Orca Slicer. Read more in the documentation." +#~ "Did you know that you can subtract one mesh from another using the Negative " +#~ "part modifier? That way you can, for example, create easily resizable holes " +#~ "directly in Orca Slicer. Read more in the documentation." #~ msgstr "" #~ "Sottrazione di una parte\n" -#~ "Sapevi che puoi sottrarre una mesh da un'altra usando il modificatore " -#~ "Parte negativa? In questo modo è possibile, ad esempio, creare fori " -#~ "facilmente ridimensionabili direttamente in Orca Slicer. Per ulteriori " -#~ "informazioni, consulta la documentazione." +#~ "Sapevi che puoi sottrarre una mesh da un'altra usando il modificatore Parte " +#~ "negativa? In questo modo è possibile, ad esempio, creare fori facilmente " +#~ "ridimensionabili direttamente in Orca Slicer. Per ulteriori informazioni, " +#~ "consulta la documentazione." #~ msgid "Filling bed " #~ msgstr "Riempi piano" @@ -14803,8 +14610,8 @@ msgstr "" #~ msgid "Please heat the nozzle to above 170 degree before loading filament." #~ msgstr "" -#~ "Riscaldare il nozzle a una temperatura superiore a 170 gradi prima di " -#~ "caricare il filamento." +#~ "Riscaldare il nozzle a una temperatura superiore a 170 gradi prima di caricare " +#~ "il filamento." #~ msgid "Newer 3mf version" #~ msgstr "Versione 3mf più recente" @@ -14818,8 +14625,8 @@ msgstr "" #, c-format #~ msgid "Density of internal sparse infill, 100% means solid throughout" #~ msgstr "" -#~ "Questa è la densità del riempimento interno. 100%% significa che " -#~ "l'oggetto sarà in ogni sua parte." +#~ "Questa è la densità del riempimento interno. 100%% significa che l'oggetto " +#~ "sarà in ogni sua parte." #~ msgid "Tree support wall loops" #~ msgstr "Loop parete supporto ad albero" @@ -14857,19 +14664,19 @@ msgstr "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " #~ "unrecognized:" #~ msgstr "" -#~ "Versione del 3mf %s è più recente %s della versione %s, trovate le " -#~ "seguenti chiavi non riconosciute:" +#~ "Versione del 3mf %s è più recente %s della versione %s, trovate le seguenti " +#~ "chiavi non riconosciute:" #~ msgid "You'd better upgrade your software.\n" #~ msgstr "Devi aggiornare il software.\n" #, c-format, boost-format #~ msgid "" -#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade " -#~ "your software." +#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +#~ "software." #~ msgstr "" -#~ "Versione del 3mf %s è più recente della versione %s di %s, si consiglia " -#~ "di aggiornare il software." +#~ "Versione del 3mf %s è più recente della versione %s di %s, si consiglia di " +#~ "aggiornare il software." #~ msgid "The 3mf is not compatible, load geometry data only!" #~ msgstr "Il 3mf non è compatibile, carica solo i dati della geometria!" @@ -14881,11 +14688,11 @@ msgstr "" #~ msgstr "Aggiungi/Rimuovi stampanti" #~ msgid "" -#~ "When print by object, machines with I3 structure will not generate " -#~ "timelapse videos." +#~ "When print by object, machines with I3 structure will not generate timelapse " +#~ "videos." #~ msgstr "" -#~ "Quando si stampa per oggetto, le macchine con struttura I3 non " -#~ "genereranno video timelapse." +#~ "Quando si stampa per oggetto, le macchine con struttura I3 non genereranno " +#~ "video timelapse." #, c-format, boost-format #~ msgid "%s is not supported by AMS." @@ -14898,21 +14705,19 @@ msgstr "" #~ msgstr "Errore: l'IP o il codice di accesso non sono corretti" #~ msgid "" -#~ "Extrude perimeters that have a part over an overhang in the reverse " -#~ "direction on odd layers. This alternating pattern can drastically improve " -#~ "steep overhang." +#~ "Extrude perimeters that have a part over an overhang in the reverse direction " +#~ "on odd layers. This alternating pattern can drastically improve steep overhang." #~ msgstr "" -#~ "Estrudere i perimetri che hanno una parte su una sporgenza nella " -#~ "direzione inversa su layer dispari. Questo schema alternato può " -#~ "migliorare drasticamente lo strapiombo ripido." +#~ "Estrudere i perimetri che hanno una parte su una sporgenza nella direzione " +#~ "inversa su layer dispari. Questo schema alternato può migliorare drasticamente " +#~ "lo strapiombo ripido." #~ msgid "Order of inner wall/outer wall/infil" #~ msgstr "Ordine di parete interna/esterna/riempimento" #~ msgid "Print sequence of inner wall, outer wall and infill. " #~ msgstr "" -#~ "È la sequenza di stampa di pareti interne, pareti esterne e dei " -#~ "riempimenti." +#~ "È la sequenza di stampa di pareti interne, pareti esterne e dei riempimenti." #~ msgid "inner/outer/infill" #~ msgstr "interno/esterno/riempimento" @@ -15051,8 +14856,7 @@ msgstr "" #~ msgstr "Carica impostazioni filamento" #~ msgid "Load filament settings from the specified file list" -#~ msgstr "" -#~ "Carica le impostazioni del filamento dall'elenco di file specificato" +#~ msgstr "Carica le impostazioni del filamento dall'elenco di file specificato" #~ msgid "Skip Objects" #~ msgstr "Salta oggetti" @@ -15062,15 +14866,15 @@ msgstr "" #~ msgid "load uptodate process/machine settings when using uptodate" #~ msgstr "" -#~ "Caricare le impostazioni di processo/macchina aggiornate quando si " -#~ "utilizza UptoDate" +#~ "Caricare le impostazioni di processo/macchina aggiornate quando si utilizza " +#~ "UptoDate" #~ msgid "" #~ "load uptodate process/machine settings from the specified file when using " #~ "uptodate" #~ msgstr "" -#~ "Caricare le impostazioni di processo/macchina aggiornate dal file " -#~ "specificato quando si utilizza UptoDate" +#~ "Caricare le impostazioni di processo/macchina aggiornate dal file specificato " +#~ "quando si utilizza UptoDate" #~ msgid "Output directory" #~ msgstr "Output directory" @@ -15098,13 +14902,13 @@ msgstr "" #~ "touchpanel in the 3D scene?" #~ msgstr "" #~ "Operazioni sulla scena 3D\n" -#~ "Sapete come controllare la vista e la selezione di oggetti/parti con il " -#~ "mouse e il touch panel nella scena 3D?" +#~ "Sapete come controllare la vista e la selezione di oggetti/parti con il mouse " +#~ "e il touch panel nella scena 3D?" #~ msgid "" #~ "Fix Model\n" -#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " -#~ "slicing problems?" +#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " +#~ "problems?" #~ msgstr "" #~ "Correggi Modello\n" #~ "Sapevi che puoi correggere un modello 3D danneggiato per evitare molti " @@ -15118,9 +14922,9 @@ msgstr "" #~ msgstr "" #~ "Quando è necessario stampare con lo sportello della stampante aperto\n" #~ "L'apertura dello sportello della stampante può ridurre la probabilità di " -#~ "intasamento dell'estrusore/hotend quando si stampa un filamento a " -#~ "temperatura inferiore con una temperatura dell'involucro più elevata. " -#~ "Maggiori informazioni su questo nel Wiki." +#~ "intasamento dell'estrusore/hotend quando si stampa un filamento a temperatura " +#~ "inferiore con una temperatura dell'involucro più elevata. Maggiori " +#~ "informazioni su questo nel Wiki." #~ msgid "Embeded" #~ msgstr "Integrato" @@ -15135,34 +14939,34 @@ msgstr "" #~ msgstr "The minimum printing speed when slowing down for cooling." #~ msgid "" -#~ "The bed temperature exceeds filament's vitrification temperature. Please " -#~ "open the front door of printer before printing to avoid nozzle clog." +#~ "The bed temperature exceeds filament's vitrification temperature. Please open " +#~ "the front door of printer before printing to avoid nozzle clog." #~ msgstr "" #~ "La temperatura del piano supera la temperatura di vetrificazione del " -#~ "filamento. Aprire lo sportello anteriore della stampante prima di " -#~ "stampare per evitare l'intasamento del nozzle." +#~ "filamento. Aprire lo sportello anteriore della stampante prima di stampare per " +#~ "evitare l'intasamento del nozzle." #~ msgid "Temperature of vitrificaiton" #~ msgstr "Temperature of vitrification" #~ msgid "" -#~ "Material becomes soft at this temperature. Thus the heatbed cannot be " -#~ "hotter than this tempature" +#~ "Material becomes soft at this temperature. Thus the heatbed cannot be hotter " +#~ "than this tempature" #~ msgstr "" -#~ "Material becomes soft at this temperature. Thus, the heat bed cannot be " -#~ "hotter than this temperature." +#~ "Material becomes soft at this temperature. Thus, the heat bed cannot be hotter " +#~ "than this temperature." #~ msgid "Enable this option if machine has auxiliary part cooling fan" #~ msgstr "Enable this option if the machine has an auxiliary part cooling fan" #~ msgid "" #~ "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " -#~ "during printing except the first several layers which is defined by no " -#~ "cooling layers" +#~ "during printing except the first several layers which is defined by no cooling " +#~ "layers" #~ msgstr "" -#~ "This is the speed of auxiliary part cooling fan. The auxiliary fan will " -#~ "run at this speed during printing except for during the first several " -#~ "layers which may be set to have no part cooling." +#~ "This is the speed of auxiliary part cooling fan. The auxiliary fan will run at " +#~ "this speed during printing except for during the first several layers which " +#~ "may be set to have no part cooling." #~ msgid "Empty layers around bottom are replaced by nearest normal layers." #~ msgstr "Empty layers around bottom are replaced by nearest normal layers." @@ -15181,23 +14985,22 @@ msgstr "" #, c-format, boost-format #~ msgid "" -#~ "Bed temperature of other layer is lower than bed temperature of initial " -#~ "layer for more than %d degree centigrade.\n" +#~ "Bed temperature of other layer is lower than bed temperature of initial layer " +#~ "for more than %d degree centigrade.\n" #~ "This may cause model broken free from build plate during printing" #~ msgstr "" -#~ "The bed temperature of other layers is lower than the bed temperature of " -#~ "the first layer by more than %d degrees centigrade.\n" +#~ "The bed temperature of other layers is lower than the bed temperature of the " +#~ "first layer by more than %d degrees centigrade.\n" #~ "This may cause models to break free from the build plate during printing." #~ msgid "" -#~ "Bed temperature is higher than vitrification temperature of this " -#~ "filament.\n" +#~ "Bed temperature is higher than vitrification temperature of this filament.\n" #~ "This may cause nozzle blocked and printing failure\n" #~ "Please keep the printer open during the printing process to ensure air " #~ "circulation or reduce the temperature of the hot bed" #~ msgstr "" -#~ "La temperatura del piano è superiore alla temperatura di vetrificazione " -#~ "di questo filamento.\n" +#~ "La temperatura del piano è superiore alla temperatura di vetrificazione di " +#~ "questo filamento.\n" #~ "Ciò può causare il blocco del nozzle e il fallimento della stampa.\n" #~ "Si prega di tenere la stampante aperta durante il processo di stampa per " #~ "garantire la circolazione dell'aria o ridurre la temperatura del piano." @@ -15230,45 +15033,44 @@ msgstr "" #~ msgstr "High Temp Plate" #~ msgid "" -#~ "Bed temperature when high temperature plate is installed. Value 0 means " -#~ "the filament does not support to print on the High Temp Plate" +#~ "Bed temperature when high temperature plate is installed. Value 0 means the " +#~ "filament does not support to print on the High Temp Plate" #~ msgstr "" -#~ "This is the bed temperature when the high temperature plate is installed. " -#~ "A value of 0 means the filament does not support printing on the High " -#~ "Temp Plate." +#~ "This is the bed temperature when the high temperature plate is installed. A " +#~ "value of 0 means the filament does not support printing on the High Temp Plate." #~ msgid "Internal bridge support thickness" #~ msgstr "Spessore supporto interno del ponte" #~ msgid "" -#~ "Style and shape of the support. For normal support, projecting the " -#~ "supports into a regular grid will create more stable supports (default), " -#~ "while snug support towers will save material and reduce object scarring.\n" -#~ "For tree support, slim style will merge branches more aggressively and " -#~ "save a lot of material (default), while hybrid style will create similar " -#~ "structure to normal support under large flat overhangs." +#~ "Style and shape of the support. For normal support, projecting the supports " +#~ "into a regular grid will create more stable supports (default), while snug " +#~ "support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and save a " +#~ "lot of material (default), while hybrid style will create similar structure to " +#~ "normal support under large flat overhangs." #~ msgstr "" -#~ "Stile e forma del supporto. Per supporti normali, la proiezione dei " -#~ "supporti in una griglia regolare creerà supporti più stabili " -#~ "(impostazione predefinita), mentre le torri di supporto aderenti faranno " -#~ "risparmiare materiale e ridurranno le giunzioni oggetto.\n" -#~ "Per i supporti ad albero, lo stile slim unirà i rami in modo più " -#~ "aggressivo e risparmierà molto materiale (impostazione predefinita), " -#~ "mentre lo stile ibrido creerà una struttura simile a quella dei sostegni " -#~ "normali sotto grandi sporgenze piatte." +#~ "Stile e forma del supporto. Per supporti normali, la proiezione dei supporti " +#~ "in una griglia regolare creerà supporti più stabili (impostazione " +#~ "predefinita), mentre le torri di supporto aderenti faranno risparmiare " +#~ "materiale e ridurranno le giunzioni oggetto.\n" +#~ "Per i supporti ad albero, lo stile slim unirà i rami in modo più aggressivo e " +#~ "risparmierà molto materiale (impostazione predefinita), mentre lo stile ibrido " +#~ "creerà una struttura simile a quella dei sostegni normali sotto grandi " +#~ "sporgenze piatte." #~ msgid "Bed temperature difference" #~ msgstr "Bed temperature difference" #~ msgid "" -#~ "Do not recommend bed temperature of other layer to be lower than initial " -#~ "layer for more than this threshold. Too low bed temperature of other " -#~ "layer may cause the model broken free from build plate" +#~ "Do not recommend bed temperature of other layer to be lower than initial layer " +#~ "for more than this threshold. Too low bed temperature of other layer may cause " +#~ "the model broken free from build plate" #~ msgstr "" #~ "Non è consigliabile che la temperatura del piano degli altri layer sia " -#~ "inferiore a quella del primo layer di oltre questa soglia. Una " -#~ "temperatura del piano troppo bassa degli altri layer può causare il " -#~ "distacco dell'oggetto dal piatto." +#~ "inferiore a quella del primo layer di oltre questa soglia. Una temperatura del " +#~ "piano troppo bassa degli altri layer può causare il distacco dell'oggetto dal " +#~ "piatto." #~ msgid "Orient the model" #~ msgstr "Orient the model" From ec9030e0ef45de73e204866ac817f885c683d673 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 29 Dec 2023 22:49:45 +0800 Subject: [PATCH 59/66] create datadir folder if not exist --- src/libslic3r/utils.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 88f78f22d4..7f4adfe168 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -272,6 +272,9 @@ static std::string g_data_dir; void set_data_dir(const std::string &dir) { g_data_dir = dir; + if (!g_data_dir.empty() && !boost::filesystem::exists(g_data_dir)) { + boost::filesystem::create_directory(g_data_dir); + } } const std::string& data_dir() From d5210c9fc90732ebd9d72d0f301f26419b90efca Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 29 Dec 2023 23:36:28 +0800 Subject: [PATCH 60/66] Rename '.bbscfg/bbsflmt' to 'orca_printer/orca_filament' for clarity and to reduce user errors. Note: Configs may no longer be compatible with BS hence the change --- localization/i18n/OrcaSlicer.pot | 52 +- localization/i18n/cs/OrcaSlicer_cs.po | 62 +- localization/i18n/de/OrcaSlicer_de.po | 100 +- localization/i18n/en/OrcaSlicer_en.po | 70 +- localization/i18n/es/OrcaSlicer_es.po | 84 +- localization/i18n/fr/OrcaSlicer_fr.po | 94 +- localization/i18n/hu/OrcaSlicer_hu.po | 52 +- localization/i18n/it/OrcaSlicer_it.po | 4847 ++++++++++--------- localization/i18n/ja/OrcaSlicer_ja.po | 52 +- localization/i18n/ko/OrcaSlicer_ko.po | 98 +- localization/i18n/nl/OrcaSlicer_nl.po | 64 +- localization/i18n/ru/OrcaSlicer_ru.po | 85 +- localization/i18n/sv/OrcaSlicer_sv.po | 66 +- localization/i18n/tr/OrcaSlicer_tr.po | 83 +- localization/i18n/uk/OrcaSlicer_uk.po | 74 +- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 70 +- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 52 +- src/libslic3r/PresetBundle.cpp | 2 +- src/slic3r/GUI/CreatePresetsDialog.cpp | 10 +- src/slic3r/GUI/MainFrame.cpp | 9 +- 20 files changed, 3181 insertions(+), 2845 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index a8bc268a18..2baa38e63f 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -7932,11 +7932,11 @@ msgid "Hostname, IP or URL" msgstr "" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" msgid "Device UI" @@ -7950,8 +7950,8 @@ msgid "API Key / Password" msgstr "" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" msgid "Name of the printer" @@ -8805,8 +8805,8 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" msgid "Speed of the last cooling move" @@ -8969,11 +8969,12 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -8990,11 +8991,12 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" @@ -9700,8 +9702,8 @@ msgid "Host Type" msgstr "" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" msgid "Nozzle volume" @@ -12146,10 +12148,10 @@ msgstr "" msgid "Export Configs" msgstr "" -msgid "Printer config bundle(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" msgstr "" -msgid "Filament bundle(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" msgstr "" msgid "Printer presets(.zip)" @@ -12188,7 +12190,7 @@ msgid "" msgstr "" msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 4cd8cdcb91..3b97186b2d 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: 2023-09-30 15:15+0200\n" "Last-Translator: René Mošner \n" "Language-Team: \n" @@ -8465,11 +8465,11 @@ msgid "Hostname, IP or URL" msgstr "Název serveru, IP nebo URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" "Orca Slicer může nahrávat G-kódy do tiskového serveru. Toto pole by mělo " "obsahovat název hostitele, IP adresu nebo URL tiskového serveru. K " @@ -8490,11 +8490,11 @@ msgid "API Key / Password" msgstr "API klíč / Heslo" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer může nahrát soubory do tiskového serveru. Toto pole by mělo obsahovat " -"klíč API požadovaný pro ověření." +"Orca Slicer může nahrát soubory do tiskového serveru. Toto pole by mělo " +"obsahovat klíč API požadovaný pro ověření." msgid "Name of the printer" msgstr "Název tiskárny" @@ -9508,14 +9508,14 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Po výměně nástroje nemusí být známa přesná poloha nově zavedeného filamentu " "uvnitř trysky a tlak filamentu pravděpodobně ještě není stabilní. Před " -"vyčištěním tiskové hlavy do výplně nebo do objektu bude Orca Slicer toto množství " -"materiálu vždy vytlačovat do čistící věže, aby se spolehlivě vytvořily " -"následné výplně nebo objekty." +"vyčištěním tiskové hlavy do výplně nebo do objektu bude Orca Slicer toto " +"množství materiálu vždy vytlačovat do čistící věže, aby se spolehlivě " +"vytvořily následné výplně nebo objekty." msgid "Speed of the last cooling move" msgstr "Rychlost posledního pohybu chlazení" @@ -9696,11 +9696,12 @@ msgstr "Délka kotvy vnitřní výplně" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -9726,11 +9727,12 @@ msgstr "Maximální délka výplňové kotvy" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" @@ -10585,8 +10587,8 @@ msgid "Host Type" msgstr "Typ tiskového serveru" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" "Orca Slicer může nahrát soubory G-kódu do tiskového serveru. Toto pole musí " "obsahovat druh tiskového serveru." @@ -13412,10 +13414,10 @@ msgstr "" msgid "Export Configs" msgstr "" -msgid "Printer config bundle(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" msgstr "" -msgid "Filament bundle(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" msgstr "" msgid "Printer presets(.zip)" @@ -13454,7 +13456,7 @@ msgid "" msgstr "" msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 5b1c1318ef..81d080690e 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -868,7 +868,8 @@ msgstr "Kein gültiger Stil." #, boost-format msgid "Style \"%1%\" can't be used and will be removed from a list." -msgstr "Stil \"%1%\" kann nicht verwendet werden und wird aus der Liste entfernt." +msgstr "" +"Stil \"%1%\" kann nicht verwendet werden und wird aus der Liste entfernt." msgid "Unset italic" msgstr "Kursiven Text aufheben" @@ -976,10 +977,14 @@ msgid "Rotate text Clock-wise." msgstr "im Uhrzeigersinn drehen." msgid "Unlock the text's rotation when moving text along the object's surface." -msgstr "Entsperren Sie die Rotation des Textes beim Verschieben des Textes entlang der Oberfläche des Objekts." +msgstr "" +"Entsperren Sie die Rotation des Textes beim Verschieben des Textes entlang " +"der Oberfläche des Objekts." msgid "Lock the text's rotation when moving text along the object's surface." -msgstr "Verriegeln Sie die Rotation des Textes beim Verschieben des Textes entlang der Oberfläche des Objekts." +msgstr "" +"Verriegeln Sie die Rotation des Textes beim Verschieben des Textes entlang " +"der Oberfläche des Objekts." msgid "Select from True Type Collection." msgstr "Sammlung von True Type auswählen." @@ -1103,7 +1108,9 @@ msgid "Undefined stroke type" msgstr "Undefinierter Strich-Typ" msgid "Path can't be healed from selfintersection and multiple points." -msgstr "Pfad kann nicht von Selbstüberschneidungen und mehreren Punkten geheilt werden." +msgstr "" +"Pfad kann nicht von Selbstüberschneidungen und mehreren Punkten geheilt " +"werden." msgid "" "Final shape constains selfintersection or multiple points with same " @@ -1209,7 +1216,8 @@ msgid "Reset rotation" msgstr "Rotation zurücksetzen" msgid "Lock/unlock rotation angle when dragging above the surface." -msgstr "Verriegeln/Entriegeln des Rotationswinkels beim Ziehen über die Oberfläche." +msgstr "" +"Verriegeln/Entriegeln des Rotationswinkels beim Ziehen über die Oberfläche." msgid "Mirror vertically" msgstr "Spiegeln vertikal" @@ -8693,15 +8701,15 @@ msgid "Hostname, IP or URL" msgstr "Hostname, IP oder URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer kann G-Code-Dateien auf einen Drucker-Host hochladen. Dieses Feld " -"sollte den Hostnamen, die IP-Adresse oder die URL der Drucker-Host-Instanz " -"enthalten. Auf einen Drucker-Host hinter HAProxy mit aktivierter " +"Orca Slicer kann G-Code-Dateien auf einen Drucker-Host hochladen. Dieses " +"Feld sollte den Hostnamen, die IP-Adresse oder die URL der Drucker-Host-" +"Instanz enthalten. Auf einen Drucker-Host hinter HAProxy mit aktivierter " "Basisauthentifizierung kann zugegriffen werden, indem Benutzername und " "Passwort in die URL in folgendem Format eingegeben werden: https://username:" "password@Ihre-octopi-Adresse/" @@ -8720,12 +8728,12 @@ msgid "API Key / Password" msgstr "API-Schlüssel / Passwort" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer kann G-Code-Dateien auf einen Drucker-Host hochladen. Dieses Feld " -"sollte den API-Schlüssel oder das für die Authentifizierung erforderliche " -"Passwort enthalten." +"Orca Slicer kann G-Code-Dateien auf einen Drucker-Host hochladen. Dieses " +"Feld sollte den API-Schlüssel oder das für die Authentifizierung " +"erforderliche Passwort enthalten." msgid "Name of the printer" msgstr "Name des Druckers" @@ -9833,14 +9841,14 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Nach einem Werkzeugwechsel ist die genaue Position des neu geladenen " "Filaments im Düsenkopf möglicherweise unbekannt und der Filamentdruck ist " -"wahrscheinlich noch nicht stabil. Bevor Orca Slicer den Druckkopf in ein Infill " -"oder ein opferbares Objekt spült, wird immer diese Menge Material in den " -"Wipe-Turm gefüllt, um zuverlässige nachfolgende Infill- oder opferbare " +"wahrscheinlich noch nicht stabil. Bevor Orca Slicer den Druckkopf in ein " +"Infill oder ein opferbares Objekt spült, wird immer diese Menge Material in " +"den Wipe-Turm gefüllt, um zuverlässige nachfolgende Infill- oder opferbare " "Objekt-Extrusionen zu erzeugen. So wird sichergestellt, dass das Drucken " "nicht gestört wird und die Qualität des Drucks erhalten bleibt." @@ -10030,11 +10038,12 @@ msgstr "Länge des Infill-Ankers" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -10062,11 +10071,12 @@ msgstr "Maximale Länge des Infill-Ankers" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" @@ -10949,11 +10959,11 @@ msgid "Host Type" msgstr "Host-Typ" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" -"Orca Slicer kann G-Code-Dateien auf einen Drucker-Host hochladen. Dieses Feld " -"muss die Art des Hosts enthalten." +"Orca Slicer kann G-Code-Dateien auf einen Drucker-Host hochladen. Dieses " +"Feld muss die Art des Hosts enthalten." msgid "Nozzle volume" msgstr "Volumen der Düse" @@ -13941,11 +13951,11 @@ msgstr "Druckereinstellung" msgid "Export Configs" msgstr "Konfigurationen exportieren" -msgid "Printer config bundle(.bbscfg)" -msgstr "Drucker-Konfigurationsbündel (.bbscfg)" +msgid "Printer config bundle(.orca_printer)" +msgstr "Drucker-Konfigurationsbündel (.orca_printer)" -msgid "Filament bundle(.bbsflmt)" -msgstr "Filament-Bündel (.bbsflmt)" +msgid "Filament bundle(.orca_filament)" +msgstr "Filament-Bündel (.orca_filament)" msgid "Printer presets(.zip)" msgstr "Druckervoreinstellungen (.zip)" @@ -13987,7 +13997,7 @@ msgstr "" "der Erstellung ändern." msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" "Drucker und alle Filament- und Prozessvoreinstellungen, die zum Drucker " @@ -14877,7 +14887,7 @@ msgstr "" #~ msgstr "Diese Slicer-Dateiversion %s ist neuer als die Version von %s:" #~ msgid "" -#~ "Would you like to update your Bambu Studio software to enable all " +#~ "Would you like to update your Orca Slicer software to enable all " #~ "functionality in this slicer file?\n" #~ msgstr "" #~ "Möchten Sie Ihre Software aktualisieren, um alle Funktionen in dieser " @@ -14890,7 +14900,7 @@ msgstr "" #~ msgid "" #~ "This slicer file version %s is newer than %s's version.\n" #~ "\n" -#~ "Would you like to update your Bambu Studio software to enable all " +#~ "Would you like to update your Orca Slicer software to enable all " #~ "functionality in this slicer file?" #~ msgstr "" #~ "Diese Slicer-Dateiversion %s ist neuer als die Version von %s.\n" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 9d48a78119..90d017ce73 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -8313,17 +8313,17 @@ msgid "Hostname, IP or URL" msgstr "Hostname, IP or URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgid "Device UI" msgstr "" @@ -8336,11 +8336,11 @@ msgid "API Key / Password" msgstr "API Key / Password" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgid "Name of the printer" msgstr "Name of the printer" @@ -9304,8 +9304,8 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" msgid "Speed of the last cooling move" @@ -9472,11 +9472,12 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -9493,11 +9494,12 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" @@ -10249,11 +10251,11 @@ msgid "Host Type" msgstr "Host Type" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgid "Nozzle volume" msgstr "Nozzle volume" @@ -12852,10 +12854,10 @@ msgstr "" msgid "Export Configs" msgstr "" -msgid "Printer config bundle(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" msgstr "" -msgid "Filament bundle(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" msgstr "" msgid "Printer presets(.zip)" @@ -12894,7 +12896,7 @@ msgid "" msgstr "" msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 2047eac510..409a6530f9 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -5785,7 +5785,7 @@ msgid "" "Importing to Orca Slicer failed. Please download the file and manually " "import it." msgstr "" -"La importación a Bambu Studio ha fallado. Descargue el archivo e impórtelo " +"La importación a Orca Slicer ha fallado. Descargue el archivo e impórtelo " "manualmente." msgid "Import SLA archive" @@ -8621,11 +8621,11 @@ msgid "Hostname, IP or URL" msgstr "Nombre de host, IP o URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" "OrcaSlicer puede subir archivos G-Code a una impresora. Este campo debería " "contener el nombre de host, la dirección IP o la URL de la instancia de la " @@ -8647,8 +8647,8 @@ msgid "API Key / Password" msgstr "Clave API / Contraseña" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" "OrcaSlicer puede cargar archivos G-Cpde a un host de impresora. Este campo " "debería contener una clave API o una contraseña requerida para la " @@ -9759,8 +9759,8 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Tras un cambio de herramienta, es posible que no se conozca la posición " "exacta del filamento recién cargado dentro de la boquilla y que la presión " @@ -9960,11 +9960,12 @@ msgstr "Longitud del anclaje de relleno de baja densidad" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -9991,11 +9992,12 @@ msgstr "Máxima longitud del relleno del anclaje" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" @@ -10883,8 +10885,8 @@ msgid "Host Type" msgstr "Tipo de host" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" "Orca Slicer puede cargar archivos G-Code a un host de impresora. Este campo " "puede contener el tipo de host." @@ -13863,11 +13865,11 @@ msgstr "Ajustes de Impresora" msgid "Export Configs" msgstr "Configuración de Exportación" -msgid "Printer config bundle(.bbscfg)" -msgstr "Paquete de configuración de impresora(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" +msgstr "Paquete de configuración de impresora(.orca_printer)" -msgid "Filament bundle(.bbsflmt)" -msgstr "Paquete de filamento(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" +msgstr "Paquete de filamento(.orca_filament)" msgid "Printer presets(.zip)" msgstr "Perfiles de Impresora(.zip)" @@ -13909,7 +13911,7 @@ msgstr "" "después de la creación." msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" "Impresora y todos los perfiles de filamento&proceso que pertenecen a la " @@ -14704,7 +14706,7 @@ msgstr "" #~ msgstr "Esta versión de archivo %s es más nueva que la versión %s:" #~ msgid "" -#~ "Would you like to update your Bambu Studio software to enable all " +#~ "Would you like to update your Orca Slicer software to enable all " #~ "functionality in this slicer file?\n" #~ msgstr "" #~ "¿Le gustaría actualizar su versión de Bambú Studio para activar todas las " @@ -14714,7 +14716,7 @@ msgstr "" #~ msgstr "Nueva versión 3mf" #~ msgid "" -#~ "you can always update Bambu Studio at your convenience. The slicer file " +#~ "you can always update Orca Slicer at your convenience. The slicer file " #~ "will now be loaded without full functionality." #~ msgstr "" #~ "Siempre puede actualizar Bambú Studio si le interesa. El archivo del " @@ -14724,7 +14726,7 @@ msgstr "" #~ msgid "" #~ "This slicer file version %s is newer than %s's version.\n" #~ "\n" -#~ "Would you like to update your Bambu Studio software to enable all " +#~ "Would you like to update your Orca Slicer software to enable all " #~ "functionality in this slicer file?" #~ msgstr "" #~ "Esta versión de archivo %s es más nueva que la versión %s:\n" @@ -15170,30 +15172,30 @@ msgstr "" #~ msgid "" #~ "Another virtual camera is running.\n" -#~ "Bambu Studio supports only a single virtual camera.\n" +#~ "Orca Slicer supports only a single virtual camera.\n" #~ "Do you want to stop this virtual camera?" #~ msgstr "" #~ "Hay otra cámara virtual en funcionamiento.\n" -#~ "Bambu Studio solo admite una cámara virtual.\n" +#~ "Orca Slicer solo admite una cámara virtual.\n" #~ "¿Quieres detener esta cámara virtual?" -#~ msgid "The printer is required to be in the same LAN as Bambu Studio." -#~ msgstr "La impresora debe estar en la misma LAN que Bambu Studio." +#~ msgid "The printer is required to be in the same LAN as Orca Slicer." +#~ msgstr "La impresora debe estar en la misma LAN que Orca Slicer." #~ msgid "" -#~ "Click OK to update the Network plug-in when Bambu Studio launches next " +#~ "Click OK to update the Network plug-in when Orca Slicer launches next " #~ "time." #~ msgstr "" #~ "Haga clic en Aceptar para actualizar el complemento de red la próxima vez " -#~ "que se inicie Bambu Studio." +#~ "que se inicie Orca Slicer." -#~ msgid "New version of Bambu Studio" -#~ msgstr "Nueva versión de Bambu Studio" +#~ msgid "New version of Orca Slicer" +#~ msgstr "Nueva versión de Orca Slicer" #~ msgid "" -#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ "Step 1, please confirm Orca Slicer and your printer are in the same LAN." #~ msgstr "" -#~ "Paso 1: confirme que Bambu Studio y su impresora estén en la misma LAN." +#~ "Paso 1: confirme que Orca Slicer y su impresora estén en la misma LAN." #~ msgid "Empty layers around bottom are replaced by nearest normal layers." #~ msgstr "" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 8443c16e1e..6d4aed301c 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -8130,7 +8130,7 @@ msgstr "" "La version du firmware est erronée. La réparation et la mise à jour sont " "nécessaires avant l'impression. Voulez-vous effectuer la mise à jour " "maintenant ? Vous pouvez également effectuer une mise à jour ultérieurement " -"depuis l'imprimante ou lors du prochain démarrage de Bambu Studio." +"depuis l'imprimante ou lors du prochain démarrage de Orca Slicer." msgid "Extension Board" msgstr "Carte d'Extension" @@ -8707,18 +8707,18 @@ msgid "Hostname, IP or URL" msgstr "Nom d'hôte, adresse IP ou URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce champ " -"doit contenir le nom d'hôte, l'adresse IP ou l'URL de l'instance hôte de " -"l'imprimante. L'hôte d'impression derrière HAProxy avec l'authentification " -"de base activée est accessible en saisissant le nom d'utilisateur et le mot " -"de passe dans l'URL au format suivant : https://username:password@your-" -"octopi-address/" +"Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce " +"champ doit contenir le nom d'hôte, l'adresse IP ou l'URL de l'instance hôte " +"de l'imprimante. L'hôte d'impression derrière HAProxy avec " +"l'authentification de base activée est accessible en saisissant le nom " +"d'utilisateur et le mot de passe dans l'URL au format suivant : https://" +"username:password@your-octopi-address/" msgid "Device UI" msgstr "Interface utilisateur de l’appareil" @@ -8733,11 +8733,12 @@ msgid "API Key / Password" msgstr "Clé API / Mot de passe" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce champ " -"doit contenir la clé API ou le mot de passe requis pour l'authentification." +"Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce " +"champ doit contenir la clé API ou le mot de passe requis pour " +"l'authentification." msgid "Name of the printer" msgstr "Nom de l'imprimante" @@ -9861,14 +9862,14 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Après un changement d’outil, la position exacte du filament nouvellement " "chargé à l’intérieur de la buse peut ne pas être connue et la pression du " "filament n’est probablement pas encore stable. Avant de purger la tête " -"d’impression dans un remplissage ou un objet, Orca Slicer amorcera toujours cette " -"quantité de matériau dans la tour d’essuyage pour purger dans les " +"d’impression dans un remplissage ou un objet, Orca Slicer amorcera toujours " +"cette quantité de matériau dans la tour d’essuyage pour purger dans les " "remplissages ou objets de manière fiable." msgid "Speed of the last cooling move" @@ -10062,11 +10063,12 @@ msgstr "Longueur de l’ancrage de remplissage interne" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -10092,22 +10094,24 @@ msgstr "Longueur maximale de l’ancrage de remplissage" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" "Connecter une ligne de remplissage à un périmètre interne avec un court " "segment de périmètre supplémentaire. S’il est exprimé en pourcentage " "(exemple : 15 %), il est calculé sur la largeur de l’extrusion de " -"remplissage. Orca Slicer essaie de connecter deux lignes de remplissage proches à " -"un court segment de périmètre. Si aucun segment de périmètre plus court que " -"ce paramètre n’est trouvé, la ligne de remplissage est connectée à un " -"segment de périmètre sur un seul côté et la longueur du segment de périmètre " -"pris est limitée à infill_anchor, mais pas plus longue que ce paramètre.\n" +"remplissage. Orca Slicer essaie de connecter deux lignes de remplissage " +"proches à un court segment de périmètre. Si aucun segment de périmètre plus " +"court que ce paramètre n’est trouvé, la ligne de remplissage est connectée à " +"un segment de périmètre sur un seul côté et la longueur du segment de " +"périmètre pris est limitée à infill_anchor, mais pas plus longue que ce " +"paramètre.\n" "S’il est défini sur 0, l’ancien algorithme de connexion de remplissage sera " "utilisé, il devrait créer le même résultat qu’avec 1000 et 0." @@ -10996,11 +11000,11 @@ msgid "Host Type" msgstr "Type d'hôte" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" -"Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce champ " -"doit contenir le type d'hôte." +"Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce " +"champ doit contenir le type d'hôte." msgid "Nozzle volume" msgstr "Volume de la buse" @@ -14016,11 +14020,11 @@ msgstr "Réglage de l’imprimante" msgid "Export Configs" msgstr "Exporter les configurations" -msgid "Printer config bundle(.bbscfg)" -msgstr "Paquet de configuration de l’imprimante (.bbscfg)" +msgid "Printer config bundle(.orca_printer)" +msgstr "Paquet de configuration de l’imprimante (.orca_printer)" -msgid "Filament bundle(.bbsflmt)" -msgstr "Paquet de filaments (.bbsflmt)" +msgid "Filament bundle(.orca_filament)" +msgstr "Paquet de filaments (.orca_filament)" msgid "Printer presets(.zip)" msgstr "Préréglages d’imprimante(.zip)" @@ -14062,7 +14066,7 @@ msgstr "" "modifier le nom après la création." msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" "Imprimante et tous les préréglages de filament et de processus qui " diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 451f6eef5a..e83a42c8b1 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -8381,11 +8381,11 @@ msgid "Hostname, IP or URL" msgstr "Hosztnév, IP vagy URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" "A Orca Slicer képes G-kód fájlokat feltölteni a nyomtatóra. Ennek a mezőnek " "tartalmaznia kell a nyomtató hostnevét, IP-címét vagy URL-címét. A HAProxy " @@ -8404,8 +8404,8 @@ msgid "API Key / Password" msgstr "API kulcs / jelszó" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" "A Orca Slicer képes G-kód fájlokat feltölteni a nyomtatóra. Ennek a mezőnek " "tartalmaznia kell a hitelesítéshez szükséges API-kulcsot vagy jelszót." @@ -9375,8 +9375,8 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" msgid "Speed of the last cooling move" @@ -9545,11 +9545,12 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -9566,11 +9567,12 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" @@ -10325,8 +10327,8 @@ msgid "Host Type" msgstr "Host típusa" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" "A Orca Slicer képes G-kód fájlokat feltölteni a nyomtatóra. Ennek a mezőnek " "tartalmaznia kell a gazdagép típusát." @@ -12945,10 +12947,10 @@ msgstr "" msgid "Export Configs" msgstr "" -msgid "Printer config bundle(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" msgstr "" -msgid "Filament bundle(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" msgstr "" msgid "Printer presets(.zip)" @@ -12987,7 +12989,7 @@ msgid "" msgstr "" msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 5086bd5077..49942161ea 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -109,12 +109,12 @@ msgstr "Posiziona su faccia" #, boost-format msgid "" -"Filament count exceeds the maximum number that painting tool supports. only the " -"first %1% filaments will be available in painting tool." +"Filament count exceeds the maximum number that painting tool supports. only " +"the first %1% filaments will be available in painting tool." msgstr "" -"Il numero di filamenti supera il numero massimo supportato dallo strumento di " -"pittura. Solo il primo %1% dei filamenti sarà disponibile nello strumento di " -"pittura." +"Il numero di filamenti supera il numero massimo supportato dallo strumento " +"di pittura. Solo il primo %1% dei filamenti sarà disponibile nello strumento " +"di pittura." msgid "Color Painting" msgstr "Pittura a colori" @@ -360,7 +360,8 @@ msgid "" msgstr "" "Clicca per capovolgere il piano di taglio\n" "Trascina per spostare il piano di taglio\n" -"Clicca con il tasto destro del mouse su una parte per assegnarla all'altro lato" +"Clicca con il tasto destro del mouse su una parte per assegnarla all'altro " +"lato" msgid "Move cut plane" msgstr "Sposta il piano di taglio" @@ -524,7 +525,8 @@ msgstr "Taglio per piano" msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" -"I bordi non collettori sono causati dall'utensile di taglio, vuoi risolverlo ora?" +"I bordi non collettori sono causati dall'utensile di taglio, vuoi risolverlo " +"ora?" msgid "Repairing model object" msgstr "Riparazione oggetto" @@ -546,11 +548,11 @@ msgstr "Rapporto di decimazione" #, boost-format msgid "" -"Processing model '%1%' with more than 1M triangles could be slow. It is highly " -"recommended to simplify the model." +"Processing model '%1%' with more than 1M triangles could be slow. It is " +"highly recommended to simplify the model." msgstr "" -"Lo slicing del modello \"%1%\" con più di 1 milione di triangoli potrebbe essere " -"lento. Si consiglia di semplificare il modello." +"Lo slicing del modello \"%1%\" con più di 1 milione di triangoli potrebbe " +"essere lento. Si consiglia di semplificare il modello." msgid "Simplify model" msgstr "Semplifica modello" @@ -560,8 +562,8 @@ msgstr "Semplifica" msgid "Simplification is currently only allowed when a single part is selected" msgstr "" -"La semplificazione è attualmente consentita solo quando è selezionata una singola " -"parte" +"La semplificazione è attualmente consentita solo quando è selezionata una " +"singola parte" msgid "Error" msgstr "Errore" @@ -717,16 +719,16 @@ msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." msgstr "" -"Il testo non può essere scritto con il font selezionato. Provare a scegliere un " -"altro font." +"Il testo non può essere scritto con il font selezionato. Provare a scegliere " +"un altro font." msgid "Embossed text cannot contain only white spaces." msgstr "Il testo in rilievo non può contenere solo spazi vuoti." msgid "Text contains character glyph (represented by '?') unknown by font." msgstr "" -"Il testo contiene un glifo di carattere (rappresentato da '?') sconosciuto dal " -"font." +"Il testo contiene un glifo di carattere (rappresentato da '?') sconosciuto " +"dal font." msgid "Text input doesn't show font skew." msgstr "L'immissione di testo non mostra l'inclinazione dei caratteri." @@ -743,7 +745,8 @@ msgstr "" msgid "Too small, enlarged font height inside text input." msgstr "" -"Altezza del carattere troppo piccola e ingrandita all'interno dell'input di testo." +"Altezza del carattere troppo piccola e ingrandita all'interno dell'input di " +"testo." msgid "Text doesn't show current horizontal alignment." msgstr "Il testo non mostra l'allineamento orizzontale corrente." @@ -765,7 +768,8 @@ msgid "Click to change text into object part." msgstr "Fare clic per trasformare il testo in una parte dell'oggetto." msgid "You can't change a type of the last solid part of the object." -msgstr "Non è possibile modificare il tipo dell'ultima parte solida dell'oggetto." +msgstr "" +"Non è possibile modificare il tipo dell'ultima parte solida dell'oggetto." msgctxt "EmbossOperation" msgid "Cut" @@ -984,7 +988,8 @@ msgstr "Ruota il testo in senso orario." msgid "Unlock the text's rotation when moving text along the object's surface." msgstr "" -"Sblocca la rotazione del testo quando lo sposti lungo la superficie dell'oggetto." +"Sblocca la rotazione del testo quando lo sposti lungo la superficie " +"dell'oggetto." msgid "Lock the text's rotation when moving text along the object's surface." msgstr "" @@ -1002,11 +1007,11 @@ msgstr "Orienta il testo verso di te." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar one(\"%2%" -"\"). You have to specify font for enable edit text." +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." msgstr "" -"Non è possibile caricare esattamente lo stesso font(\"%1%\"). L'applicazione ne " -"ha selezionato uno simile(\"%2%\"). È necessario specificare il font per " +"Non è possibile caricare esattamente lo stesso font(\"%1%\"). L'applicazione " +"ne ha selezionato uno simile(\"%2%\"). È necessario specificare il font per " "abilitare la modifica del testo." msgid "No symbol" @@ -1117,12 +1122,15 @@ msgstr "Tipo di tratto non definito" msgid "Path can't be healed from selfintersection and multiple points." msgstr "" -"Il percorso non può essere risolto con l'auto-intersezione e i punti multipli." +"Il percorso non può essere risolto con l'auto-intersezione e i punti " +"multipli." msgid "" -"Final shape constains selfintersection or multiple points with same coordinate." +"Final shape constains selfintersection or multiple points with same " +"coordinate." msgstr "" -"La forma finale contiene un'auto-intersezione o più punti con le stesse coordinate" +"La forma finale contiene un'auto-intersezione o più punti con le stesse " +"coordinate" #, boost-format msgid "Shape is marked as invisible (%1%)." @@ -1137,7 +1145,8 @@ msgstr "" #, boost-format msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." msgstr "" -"Il tratto della forma (%1%) è troppo sottile (la larghezza minima è di %2% mm)" +"Il tratto della forma (%1%) è troppo sottile (la larghezza minima è di %2% " +"mm)" #, boost-format msgid "Stroke of shape (%1%) contains unsupported: %2%." @@ -1197,7 +1206,8 @@ msgstr "Dimensioni in direzione del rilievo." #, boost-format msgid "Scale also changes amount of curve samples (%1%)" msgstr "" -"La dimensione della scala cambia anche la quantità di campioni della curva (%1%)" +"La dimensione della scala cambia anche la quantità di campioni della curva " +"(%1%)" msgid "Width of SVG." msgstr "Larghezza dell'SVG." @@ -1250,7 +1260,8 @@ msgstr "Il file NON esiste (%1%)." #, boost-format msgid "Filename has to end with \".svg\" but you selected %1%" -msgstr "Il nome del file deve terminare con \".svg\" ma è stato selezionato %1%" +msgstr "" +"Il nome del file deve terminare con \".svg\" ma è stato selezionato %1%" #, boost-format msgid "Nano SVG parser can't load from file (%1%)." @@ -1374,21 +1385,22 @@ msgstr "Macchina" msgid "Configuration package was loaded, but some values were not recognized." msgstr "" -"Il pacchetto di configurazione è stato caricato, ma alcuni valori non sono stati " -"riconosciuti." +"Il pacchetto di configurazione è stato caricato, ma alcuni valori non sono " +"stati riconosciuti." #, boost-format -msgid "Configuration file \"%1%\" was loaded, but some values were not recognized." +msgid "" +"Configuration file \"%1%\" was loaded, but some values were not recognized." msgstr "" -"Il file di configurazione \"%1%\" è stato caricato, ma alcuni valori non sono " -"stati riconosciuti." +"Il file di configurazione \"%1%\" è stato caricato, ma alcuni valori non " +"sono stati riconosciuti." msgid "V" msgstr "V" msgid "" -"OrcaSlicer will terminate because of running out of memory.It may be a bug. It " -"will be appreciated if you report the issue to our team." +"OrcaSlicer will terminate because of running out of memory.It may be a bug. " +"It will be appreciated if you report the issue to our team." msgstr "" "OrcaSlicer ha esaurito la memoria e verrà chiuso. Questo potrebbe essere \n" "un bug. Segnala questo errore al supporto tecnico.\"" @@ -1397,9 +1409,10 @@ msgid "Fatal error" msgstr "Errore irreversibile" msgid "" -"OrcaSlicer will terminate because of a localization error. It will be appreciated " -"if you report the specific scenario this issue happened." -msgstr "Si è verificato un errore nella localizzazione e OrcaSlicer verrà chiuso." +"OrcaSlicer will terminate because of a localization error. It will be " +"appreciated if you report the specific scenario this issue happened." +msgstr "" +"Si è verificato un errore nella localizzazione e OrcaSlicer verrà chiuso." msgid "Critical error" msgstr "Errore critico" @@ -1422,7 +1435,8 @@ msgid "Connect %s failed! [SN:%s, code=%s]" msgstr "Connessione %s non riuscita! [SN: %s, codice=%s]" msgid "" -"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain features.\n" +"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain " +"features.\n" "Click Yes to install it now." msgstr "" "Orca Slicer richiede Microsoft WebView2 Runtime per utilizzare alcune " @@ -1462,14 +1476,14 @@ msgstr "Info" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" -"Please note, application settings will be lost, but printer profiles will not be " -"affected." +"Please note, application settings will be lost, but printer profiles will " +"not be affected." msgstr "" -"Il file di configurazione di OrcaSlicer potrebbe essere danneggiato e non può " -"essere analizzato.\n" +"Il file di configurazione di OrcaSlicer potrebbe essere danneggiato e non " +"può essere analizzato.\n" "OrcaSlicer ha tentato di ricreare il file di configurazione.\n" -"Si noti che le impostazioni dell'applicazione andranno perse, ma i profili della " -"stampante non saranno interessati." +"Si noti che le impostazioni dell'applicazione andranno perse, ma i profili " +"della stampante non saranno interessati." msgid "Rebuild" msgstr "Ricrea" @@ -1496,11 +1510,11 @@ msgid "Some presets are modified." msgstr "Alcuni preset vengono modificati." msgid "" -"You can keep the modifield presets to the new project, discard or save changes as " -"new presets." +"You can keep the modifield presets to the new project, discard or save " +"changes as new presets." msgstr "" -"È possibile conservare i preset modificati per il nuovo progetto, eliminarli o " -"salvare le modifiche come nuovi preset." +"È possibile conservare i preset modificati per il nuovo progetto, eliminarli " +"o salvare le modifiche come nuovi preset." msgid "User logged out" msgstr "Utente disconnesso" @@ -1525,9 +1539,9 @@ msgid "" "The number of user presets cached in the cloud has exceeded the upper limit, " "newly created user presets can only be used locally." msgstr "" -"Il numero di impostazioni utente memorizzate nella cache cloud ha superato il " -"limite massimo. Le nuove impostazioni utente create possono essere utilizzate " -"solo in locale." +"Il numero di impostazioni utente memorizzate nella cache cloud ha superato " +"il limite massimo. Le nuove impostazioni utente create possono essere " +"utilizzate solo in locale." msgid "Sync user presets" msgstr "Sincronizzare le preset dell'utente" @@ -1992,13 +2006,13 @@ msgstr[1] "%1$d non-manifold edges" msgid "Right click the icon to fix model object" msgstr "" -"Fai clic con il pulsante destro del mouse sull'icona per correggere l'oggetto del " -"modello" +"Fai clic con il pulsante destro del mouse sull'icona per correggere " +"l'oggetto del modello" msgid "Right button click the icon to drop the object settings" msgstr "" -"Fai clic con pulsante destro del mouse sull'icona per eliminare le impostazioni " -"dell'oggetto" +"Fai clic con pulsante destro del mouse sull'icona per eliminare le " +"impostazioni dell'oggetto" msgid "Click the icon to reset all settings of the object" msgstr "Clicca sull'icona per ripristinare tutte le impostazioni dell'oggetto" @@ -2010,7 +2024,8 @@ msgstr "" msgid "Click the icon to toggle printable property of the object" msgstr "" -"Clicca sull'icona per attivare o disattivare le proprietà stampabili dell'oggetto" +"Clicca sull'icona per attivare o disattivare le proprietà stampabili " +"dell'oggetto" msgid "Click the icon to edit support painting of the object" msgstr "Clicca sull'icona per modificare la pittura del supporto dell'oggetto" @@ -2038,14 +2053,15 @@ msgstr "Aggiungi modificatore" msgid "Switch to per-object setting mode to edit modifier settings." msgstr "" -"Passa alla modalità di impostazione oggetto per modificare le impostazioni del " -"modificatore." +"Passa alla modalità di impostazione oggetto per modificare le impostazioni " +"del modificatore." msgid "" -"Switch to per-object setting mode to edit process settings of selected objects." +"Switch to per-object setting mode to edit process settings of selected " +"objects." msgstr "" -"Passa alla modalità di impostazione oggetto per modificare le impostazioni di " -"processo degli oggetti selezionati." +"Passa alla modalità di impostazione oggetto per modificare le impostazioni " +"di processo degli oggetti selezionati." msgid "Delete connector from object which is a part of cut" msgstr "Elimina il connettore dall'oggetto che fa parte del taglio" @@ -2057,23 +2073,24 @@ msgid "Delete negative volume from object which is a part of cut" msgstr "Elimina il volume negativo dall'oggetto che fa parte del taglio" msgid "" -"To save cut correspondence you can delete all connectors from all related objects." +"To save cut correspondence you can delete all connectors from all related " +"objects." msgstr "" -"Per salvare il taglio corrispondente puoi eliminare tutte le connessioni tra gli " -"oggetti correlati." +"Per salvare il taglio corrispondente puoi eliminare tutte le connessioni tra " +"gli oggetti correlati." msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate cut " -"infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate " +"cut infornation first." msgstr "" "Questa azione interromperà una corrispondenza di taglio.\n" "In seguito, la coerenza del modello non può essere garantita.\n" "\n" -"Per manipolare parti solide o volumi negativi è necessario invalidare prima le " -"informazioni di taglio." +"Per manipolare parti solide o volumi negativi è necessario invalidare prima " +"le informazioni di taglio." msgid "Delete all connectors" msgstr "Elimina tutti i connettori" @@ -2082,7 +2099,8 @@ msgid "Deleting the last solid part is not allowed." msgstr "Non è consentita l'eliminazione dell'ultima parte solida." msgid "The target object contains only one part and can not be splited." -msgstr "L'oggetto di destinazione contiene solo una parte e non può essere diviso." +msgstr "" +"L'oggetto di destinazione contiene solo una parte e non può essere diviso." msgid "Assembly" msgstr "Assemblaggio" @@ -2123,20 +2141,22 @@ msgstr "Layer" msgid "Selection conflicts" msgstr "Conflitti di selezione" -msgid "If first selected item is an object, the second one should also be object." +msgid "" +"If first selected item is an object, the second one should also be object." msgstr "" -"Se il primo elemento selezionato è un oggetto, anche il secondo deve essere un " -"oggetto." +"Se il primo elemento selezionato è un oggetto, anche il secondo deve essere " +"un oggetto." msgid "" "If first selected item is a part, the second one should be part in the same " "object." msgstr "" -"Se il primo elemento selezionato è una parte, il secondo deve far parte dello " -"stesso oggetto." +"Se il primo elemento selezionato è una parte, il secondo deve far parte " +"dello stesso oggetto." msgid "The type of the last solid object part is not to be changed." -msgstr "Il tipo dell'ultima parte dell'oggetto solido non può essere modificato." +msgstr "" +"Il tipo dell'ultima parte dell'oggetto solido non può essere modificato." msgid "Negative Part" msgstr "Parte negativa" @@ -2191,7 +2211,8 @@ msgid "Invalid numeric." msgstr "Numero non valido." msgid "one cell can only be copied to one or multiple cells in the same column" -msgstr "Una cella può essere copiata solo in una o più celle della stessa colonna." +msgstr "" +"Una cella può essere copiata solo in una o più celle della stessa colonna." msgid "multiple cells copy is not supported" msgstr "Copia di celle multiple non supportata." @@ -2314,7 +2335,8 @@ msgid "Add Custom Template" msgstr "Aggiungi template personalizzato" msgid "Insert template custom G-code at the beginning of this layer." -msgstr "Inserisci un template G-code personalizzato all'inizio di questo layer." +msgstr "" +"Inserisci un template G-code personalizzato all'inizio di questo layer." msgid "Filament " msgstr "Filamento" @@ -2411,8 +2433,8 @@ msgstr "Calibrazione AMS..." msgid "A problem occured during calibration. Click to view the solution." msgstr "" -"Si è verificato un problema durante la calibrazione. Clicca per visualizzare la " -"soluzione." +"Si è verificato un problema durante la calibrazione. Clicca per visualizzare " +"la soluzione." msgid "Calibrate again" msgstr "Calibra di nuovo" @@ -2451,11 +2473,11 @@ msgid "Grab new filament" msgstr "Prendo un nuovo filamento" msgid "" -"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load " -"or unload filiament." +"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " +"load or unload filiament." msgstr "" -"Seleziona uno slot AMS, premi \"Carica\" o \"Scarica\" per caricare o scaricare " -"automaticamente il filamento." +"Seleziona uno slot AMS, premi \"Carica\" o \"Scarica\" per caricare o " +"scaricare automaticamente il filamento." msgid "Edit" msgstr "Modifica" @@ -2495,14 +2517,16 @@ msgstr "" msgid "Arranging done." msgstr "Disposizione completata." -msgid "Arrange failed. Found some exceptions when processing object geometries." +msgid "" +"Arrange failed. Found some exceptions when processing object geometries." msgstr "" "Disposizione fallita. Riscontrate eccezioni durante l'elaborazione delle " "geometrie degli oggetti" #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single bed:\n" +"Arrangement ignored the following objects which can't fit into a single " +"bed:\n" "%s" msgstr "" "La disposizione ha ignorato i seguenti oggetti che non possono entrare in un " @@ -2578,8 +2602,8 @@ msgid "" "The print file exceeds the maximum allowable size (1GB). Please simplify the " "model and slice again." msgstr "" -"Il file di stampa supera la dimensione massima consentita (1 GB). Semplifica il " -"modello ed elaboralo nuovamente" +"Il file di stampa supera la dimensione massima consentita (1 GB). Semplifica " +"il modello ed elaboralo nuovamente" msgid "Failed to send the print job. Please try again." msgstr "Impossibile inviare il lavoro di stampa. Riprova." @@ -2587,7 +2611,8 @@ msgstr "Impossibile inviare il lavoro di stampa. Riprova." msgid "Failed to upload file to ftp. Please try again." msgstr "Caricamento del file in ftp non riuscito. Riprova." -msgid "Check the current status of the bambu server by clicking on the link above." +msgid "" +"Check the current status of the bambu server by clicking on the link above." msgstr "" "Controlla lo stato attuale del server Bambu Lab cliccando sul link qui sopra." @@ -2595,18 +2620,19 @@ msgid "" "The size of the print file is too large. Please adjust the file size and try " "again." msgstr "" -"La dimensione del file di stampa è troppo grande. Modifica la dimensione del file " -"e riprova." +"La dimensione del file di stampa è troppo grande. Modifica la dimensione del " +"file e riprova." msgid "Print file not found, Please slice it again and send it for printing." msgstr "" "File di stampa non trovato; elabora nuovamente il file e invia per la stampa." msgid "" -"Failed to upload print file to FTP. Please check the network status and try again." +"Failed to upload print file to FTP. Please check the network status and try " +"again." msgstr "" -"Impossibile caricare il file di stampa tramite FTP. Controlla lo stato della rete " -"e riprova." +"Impossibile caricare il file di stampa tramite FTP. Controlla lo stato della " +"rete e riprova." msgid "Sending print job over LAN" msgstr "Invia stampa tramite LAN" @@ -2633,10 +2659,12 @@ msgstr "" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the next page in %ss" -msgstr "Inviato con successo. Salterà automaticamente alla pagina successiva in %ss" +msgstr "" +"Inviato con successo. Salterà automaticamente alla pagina successiva in %ss" msgid "An SD card needs to be inserted before printing via LAN." -msgstr "È necessario inserire una scheda microSD prima di stampare tramite LAN." +msgstr "" +"È necessario inserire una scheda microSD prima di stampare tramite LAN." msgid "Sending gcode file over LAN" msgstr "Invio file G-code tramite LAN" @@ -2649,17 +2677,18 @@ msgid "Successfully sent. Close current page in %s s" msgstr "Inviato con successo. Chiudi la pagina corrente in %s s" msgid "An SD card needs to be inserted before sending to printer." -msgstr "È necessario inserire una scheda microSD prima di inviarla alla stampante." +msgstr "" +"È necessario inserire una scheda microSD prima di inviarla alla stampante." msgid "Importing SLA archive" msgstr "Importa archivio SLA" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA printer " -"preset first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA " +"printer preset first before importing that SLA archive." msgstr "" -"L'archivio SLA non contiene preset. Attivare alcuni preset di stampanti SLA prima " -"di importare l'archivio SLA." +"L'archivio SLA non contiene preset. Attivare alcuni preset di stampanti SLA " +"prima di importare l'archivio SLA." msgid "Importing canceled." msgstr "Importazione annullata." @@ -2668,16 +2697,16 @@ msgid "Importing done." msgstr "Importazione eseguita." msgid "" -"The imported SLA archive did not contain any presets. The current SLA presets " -"were used as fallback." +"The imported SLA archive did not contain any presets. The current SLA " +"presets were used as fallback." msgstr "" -"L'archivio SLA importato non contiene alcun preset. Gli attuali preset SLA sono " -"stati utilizzati come recupero." +"L'archivio SLA importato non contiene alcun preset. Gli attuali preset SLA " +"sono stati utilizzati come recupero." msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "" -"Non è possibile caricare un progetto SLA con un oggetto composto da più parti sul " -"piano" +"Non è possibile caricare un progetto SLA con un oggetto composto da più " +"parti sul piano" msgid "Please check your object list before preset changing." msgstr "Controlla l'elenco oggetto prima di modificare il preset." @@ -2719,23 +2748,23 @@ msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versione 3" msgid "" -"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer by " -"Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and the " -"RepRap community" +"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " +"by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and " +"the RepRap community" msgstr "" -"Orca Slicer è basato su BambuStudio di Bambulab, che è di PrusaSlicer di Prusa " -"Research. PrusaSlicer è di Slic3r di Alessandro Ranellucci e della comunità " -"RepRap" +"Orca Slicer è basato su BambuStudio di Bambulab, che è di PrusaSlicer di " +"Prusa Research. PrusaSlicer è di Slic3r di Alessandro Ranellucci e della " +"comunità RepRap" msgid "Libraries" msgstr "Librerie" msgid "" -"This software uses open source components whose copyright and other proprietary " -"rights belong to their respective owners" +"This software uses open source components whose copyright and other " +"proprietary rights belong to their respective owners" msgstr "" -"Questo software utilizza componenti open source il cui copyright e altri diritti " -"di proprietà appartengono ai rispettivi proprietari" +"Questo software utilizza componenti open source il cui copyright e altri " +"diritti di proprietà appartengono ai rispettivi proprietari" #, c-format, boost-format msgid "About %s" @@ -2797,7 +2826,8 @@ msgstr "SN" msgid "Setting AMS slot information while printing is not supported" msgstr "" -"L'impostazione informazioni sullo slot AMS in fase di stampa non è supportata." +"L'impostazione informazioni sullo slot AMS in fase di stampa non è " +"supportata." msgid "Factors of Flow Dynamics Calibration" msgstr "Fattori di calibrazione della dinamica del flusso" @@ -2838,13 +2868,14 @@ msgid "Dynamic flow calibration" msgstr "Calibrazione dinamica del flusso" msgid "" -"The nozzle temp and max volumetric speed will affect the calibration results. " -"Please fill in the same values as the actual printing. They can be auto-filled by " -"selecting a filament preset." +"The nozzle temp and max volumetric speed will affect the calibration " +"results. Please fill in the same values as the actual printing. They can be " +"auto-filled by selecting a filament preset." msgstr "" "La temperatura del nozzle e la velocità volumetrica massima influiranno sui " -"risultati della calibrazione. Inserisci gli stessi valori della stampa effettiva. " -"Possono essere riempiti automaticamente selezionando un filamento dal preset." +"risultati della calibrazione. Inserisci gli stessi valori della stampa " +"effettiva. Possono essere riempiti automaticamente selezionando un filamento " +"dal preset." msgid "Nozzle Diameter" msgstr "Diametro Nozzle" @@ -2877,13 +2908,13 @@ msgid "Next" msgstr "Avanti" msgid "" -"Calibration completed. Please find the most uniform extrusion line on your hot " -"bed like the picture below, and fill the value on its left side into the factor K " -"input box." +"Calibration completed. Please find the most uniform extrusion line on your " +"hot bed like the picture below, and fill the value on its left side into the " +"factor K input box." msgstr "" -"Calibrazione completata. Trova la linea di estrusione più uniforme sul tuo piatto " -"come nell'immagine sotto e inserisci il valore sul lato sinistro nella casella di " -"immissione del fattore K." +"Calibrazione completata. Trova la linea di estrusione più uniforme sul tuo " +"piatto come nell'immagine sotto e inserisci il valore sul lato sinistro " +"nella casella di immissione del fattore K." msgid "Save" msgstr "Salva" @@ -2914,10 +2945,11 @@ msgstr "Step" msgid "AMS Slots" msgstr "Slot AMS" -msgid "Note: Only the AMS slots loaded with the same material type can be selected." +msgid "" +"Note: Only the AMS slots loaded with the same material type can be selected." msgstr "" -"Nota: è possibile selezionare solo gli slot AMS caricati con lo stesso tipo di " -"materiale." +"Nota: è possibile selezionare solo gli slot AMS caricati con lo stesso tipo " +"di materiale." msgid "Enable AMS" msgstr "AMS abilitato" @@ -2935,37 +2967,40 @@ msgid "Cabin humidity" msgstr "Umidità della cabina" msgid "" -"Green means that AMS humidity is normal, orange represent humidity is high, red " -"represent humidity is too high.(Hygrometer: lower the better.)" +"Green means that AMS humidity is normal, orange represent humidity is high, " +"red represent humidity is too high.(Hygrometer: lower the better.)" msgstr "" -"Il verde indica che l'umidità dell'AMS è normale, l'arancione che l'umidità è " -"elevata, il rosso rappresenta un'umidità troppo elevata (igrometro: più basso è, " -"meglio è)." +"Il verde indica che l'umidità dell'AMS è normale, l'arancione che l'umidità " +"è elevata, il rosso rappresenta un'umidità troppo elevata (igrometro: più " +"basso è, meglio è)." msgid "Desiccant status" msgstr "Stato dell'essiccante" msgid "" -"A desiccant status lower than two bars indicates that desiccant may be inactive. " -"Please change the desiccant.(The bars: higher the better.)" +"A desiccant status lower than two bars indicates that desiccant may be " +"inactive. Please change the desiccant.(The bars: higher the better.)" msgstr "" -"Uno stato dell'essiccante inferiore a due barre indica che l'essiccante potrebbe " -"essere inattivo. Si prega di sostituire l'essiccante. (Le barre: più sono alte, " -"meglio è)." +"Uno stato dell'essiccante inferiore a due barre indica che l'essiccante " +"potrebbe essere inattivo. Si prega di sostituire l'essiccante. (Le barre: " +"più sono alte, meglio è)." msgid "" -"Note: When the lid is open or the desiccant pack is changed, it can take hours or " -"a night to absorb the moisture. Low temperatures also slow down the process. " -"During this time, the indicator may not represent the chamber accurately." +"Note: When the lid is open or the desiccant pack is changed, it can take " +"hours or a night to absorb the moisture. Low temperatures also slow down the " +"process. During this time, the indicator may not represent the chamber " +"accurately." msgstr "" -"Nota: quando il coperchio è aperto o la confezione di essiccante viene cambiata, " -"possono essere necessarie ore o una notte per assorbire l'umidità. Anche le basse " -"temperature rallentano il processo. Durante questo periodo, l'indicatore potrebbe " -"non rappresentare la camera con precisione." +"Nota: quando il coperchio è aperto o la confezione di essiccante viene " +"cambiata, possono essere necessarie ore o una notte per assorbire l'umidità. " +"Anche le basse temperature rallentano il processo. Durante questo periodo, " +"l'indicatore potrebbe non rappresentare la camera con precisione." -msgid "Config which AMS slot should be used for a filament used in the print job" +msgid "" +"Config which AMS slot should be used for a filament used in the print job" msgstr "" -"Configura lo slot AMS da usare per un filamento utilizzato nel lavoro di stampa." +"Configura lo slot AMS da usare per un filamento utilizzato nel lavoro di " +"stampa." msgid "Filament used in this print job" msgstr "Filamento utilizzato in questa stampa" @@ -2992,8 +3027,8 @@ msgid "" "When the current material run out, the printer will continue to print in the " "following order." msgstr "" -"Quando si esaurisce il materiale corrente, la stampante continuerà a stampare nel " -"seguente ordine." +"Quando si esaurisce il materiale corrente, la stampante continuerà a " +"stampare nel seguente ordine." msgid "Group" msgstr "Gruppo" @@ -3001,7 +3036,8 @@ msgstr "Gruppo" msgid "The printer does not currently support auto refill." msgstr "La stampante non supporta attualmente la ricarica automatica." -msgid "AMS filament backup is not enabled, please enable it in the AMS settings." +msgid "" +"AMS filament backup is not enabled, please enable it in the AMS settings." msgstr "" "Il backup del filamento AMS non è abilitato, si prega di abilitarlo nelle " "impostazioni AMS." @@ -3024,55 +3060,58 @@ msgid "Insertion update" msgstr "Aggiornamento dell'inserimento" msgid "" -"The AMS will automatically read the filament information when inserting a new " -"Bambu Lab filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a " +"new Bambu Lab filament. This takes about 20 seconds." msgstr "" -"L'AMS leggerà automaticamente le informazioni sul filamento quando inserisce una " -"nuova bobina di filamento Bambu Lab. Questa operazione richiede circa 20 secondi." +"L'AMS leggerà automaticamente le informazioni sul filamento quando inserisce " +"una nuova bobina di filamento Bambu Lab. Questa operazione richiede circa 20 " +"secondi." msgid "" "Note: if new filament is inserted during printing, the AMS will not " "automatically read any information until printing is completed." msgstr "" -"Nota: se durante la stampa viene inserito un nuovo filamento, l'AMS non leggerà " -"automaticamente alcuna informazione fino al termine della stampa." +"Nota: se durante la stampa viene inserito un nuovo filamento, l'AMS non " +"leggerà automaticamente alcuna informazione fino al termine della stampa." msgid "" "When inserting a new filament, the AMS will not automatically read its " "information, leaving it blank for you to enter manually." msgstr "" -"Quando si inserisce un nuovo filamento, l'AMS non legge automaticamente le sue " -"informazioni, lasciandole vuote per l'inserimento manuale." +"Quando si inserisce un nuovo filamento, l'AMS non legge automaticamente le " +"sue informazioni, lasciandole vuote per l'inserimento manuale." msgid "Power on update" msgstr "Aggiorna all'avvio" msgid "" -"The AMS will automatically read the information of inserted filament on start-up. " -"It will take about 1 minute.The reading process will roll filament spools." +"The AMS will automatically read the information of inserted filament on " +"start-up. It will take about 1 minute.The reading process will roll filament " +"spools." msgstr "" -"L'AMS leggerà automaticamente le informazioni sul filamento inserito all'avvio. " -"Ci vorrà circa 1 minuto. Il processo di lettura farà ruotare le bobine del " -"filamento." +"L'AMS leggerà automaticamente le informazioni sul filamento inserito " +"all'avvio. Ci vorrà circa 1 minuto. Il processo di lettura farà ruotare le " +"bobine del filamento." msgid "" -"The AMS will not automatically read information from inserted filament during " -"startup and will continue to use the information recorded before the last " -"shutdown." +"The AMS will not automatically read information from inserted filament " +"during startup and will continue to use the information recorded before the " +"last shutdown." msgstr "" -"L'AMS non leggerà automaticamente le informazioni dal filamento inserito durante " -"l'avvio e continuerà a utilizzare le informazioni registrate prima dell'ultimo " -"spegnimento." +"L'AMS non leggerà automaticamente le informazioni dal filamento inserito " +"durante l'avvio e continuerà a utilizzare le informazioni registrate prima " +"dell'ultimo spegnimento." msgid "Update remaining capacity" msgstr "Aggiorna capacità residua" msgid "" -"The AMS will estimate Bambu filament's remaining capacity after the filament info " -"is updated. During printing, remaining capacity will be updated automatically." +"The AMS will estimate Bambu filament's remaining capacity after the filament " +"info is updated. During printing, remaining capacity will be updated " +"automatically." msgstr "" -"L'AMS stimerà la capacità residua del filamento Bambu dopo l'aggiornamento delle " -"informazioni. Durante la stampa, la capacità residua verrà aggiornata " +"L'AMS stimerà la capacità residua del filamento Bambu dopo l'aggiornamento " +"delle informazioni. Durante la stampa, la capacità residua verrà aggiornata " "automaticamente." msgid "AMS filament backup" @@ -3082,8 +3121,8 @@ msgid "" "AMS will continue to another spool with the same properties of filament " "automatically when current filament runs out" msgstr "" -"L'AMS passerà automaticamente a un altro filamento con stesse proprietà quando il " -"filamento corrente si esaurisce" +"L'AMS passerà automaticamente a un altro filamento con stesse proprietà " +"quando il filamento corrente si esaurisce" msgid "File" msgstr "File" @@ -3095,12 +3134,12 @@ msgid "" "Failed to download the plug-in. Please check your firewall settings and vpn " "software, check and retry." msgstr "" -"Impossibile scaricare il plug-in. Controlla le impostazioni del firewall e VPN " -"poi riprova." +"Impossibile scaricare il plug-in. Controlla le impostazioni del firewall e " +"VPN poi riprova." msgid "" -"Failed to install the plug-in. Please check whether it is blocked or deleted by " -"anti-virus software." +"Failed to install the plug-in. Please check whether it is blocked or deleted " +"by anti-virus software." msgstr "" "Impossibile installare il plug-in. Verificare se è bloccato o se è stato " "eliminato dall'antivirus." @@ -3115,9 +3154,9 @@ msgid "" ") to locate the toolhead's position. This prevents device moving beyond the " "printable boundary and causing equipment wear." msgstr "" -") per individuare la posizione della testa dell'utensile. In questo modo si evita " -"che il dispositivo si sposti oltre il limite stampabile, causando l'usura " -"dell'apparecchiatura." +") per individuare la posizione della testa dell'utensile. In questo modo si " +"evita che il dispositivo si sposti oltre il limite stampabile, causando " +"l'usura dell'apparecchiatura." msgid "Go Home" msgstr "Vai all'origine" @@ -3126,8 +3165,8 @@ msgid "" "A error occurred. Maybe memory of system is not enough or it's a bug of the " "program" msgstr "" -"Si è verificato un errore. È possibile che la memoria del sistema sia esaurita o " -"che si sia verificato un bug." +"Si è verificato un errore. È possibile che la memoria del sistema sia " +"esaurita o che si sia verificato un bug." msgid "Please save project and restart the program. " msgstr "Salva il progetto e riavvia l'applicazione." @@ -3185,8 +3224,8 @@ msgstr "Copia del G-code temporaneo nel G-code di output non riuscita." #, boost-format msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "" -"Programmazione del caricamento su `%1%`. Vedere finestra -> Coda di caricamento " -"Host di Stampa" +"Programmazione del caricamento su `%1%`. Vedere finestra -> Coda di " +"caricamento Host di Stampa" msgid "Origin" msgstr "Origine" @@ -3195,7 +3234,8 @@ msgid "Size in X and Y of the rectangular plate." msgstr "Dimensioni X e Y del piano rettangolare." msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." +"Distance of the 0,0 G-code coordinate from the front left corner of the " +"rectangle." msgstr "" "Distanza della coordinata 0,0 del G-code dall'angolo frontale sinistro del " "rettangolo." @@ -3204,7 +3244,8 @@ msgid "" "Diameter of the print bed. It is assumed that origin (0,0) is located in the " "center." msgstr "" -"Diametro del piano di stampa. Si presume che l'origine (0,0) si trovi al centro." +"Diametro del piano di stampa. Si presume che l'origine (0,0) si trovi al " +"centro." msgid "Rectangular" msgstr "Rettangolare" @@ -3242,11 +3283,14 @@ msgstr "Errore! Modello non valido" msgid "The selected file contains no geometry." msgstr "Il file selezionato non contiene geometrie." -msgid "The selected file contains several disjoint areas. This is not supported." -msgstr "Il file selezionato contiene molteplici aree disgiunte. Non è supportato." +msgid "" +"The selected file contains several disjoint areas. This is not supported." +msgstr "" +"Il file selezionato contiene molteplici aree disgiunte. Non è supportato." msgid "Choose a file to import bed texture from (PNG/SVG):" -msgstr "Seleziona un file da cui importare la forma del piano di stampa (PNG/SVG):" +msgstr "" +"Seleziona un file da cui importare la forma del piano di stampa (PNG/SVG):" msgid "Choose an STL file to import bed model from:" msgstr "Scegli un file STL da cui importare il modello del piano:" @@ -3266,7 +3310,8 @@ msgstr "" #, c-format, boost-format msgid "" -"Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade" +"Recommended nozzle temperature of this filament type is [%d, %d] degree " +"centigrade" msgstr "" "La temperatura del nozzle consigliata per questo filamento è [%d, %d] gradi " "centigradi" @@ -3280,13 +3325,13 @@ msgstr "" #, c-format, boost-format msgid "" -"Current chamber temperature is higher than the material's safe temperature,it may " -"result in material softening and clogging.The maximum safe temperature for the " -"material is %d" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" msgstr "" -"L'attuale temperatura della camera è superiore alla temperatura di sicurezza del " -"materiale, può causare l'ammorbidimento e l'intasamento del materiale. La " -"temperatura massima di sicurezza per il materiale è %d" +"L'attuale temperatura della camera è superiore alla temperatura di sicurezza " +"del materiale, può causare l'ammorbidimento e l'intasamento del materiale. " +"La temperatura massima di sicurezza per il materiale è %d" msgid "" "Too small layer height.\n" @@ -3312,17 +3357,18 @@ msgstr "" "L'altezza primo layer verrà ripristinata a 0,2." msgid "" -"This setting is only used for model size tunning with small value in some cases.\n" +"This setting is only used for model size tunning with small value in some " +"cases.\n" "For example, when model size has small error and hard to be assembled.\n" "For large size tuning, please use model scale function.\n" "\n" "The value will be reset to 0." msgstr "" -"Questa viene utilizzata solo per regolare le dimensioni del modello in piccole " -"quantità.\n" -"Ad esempio, quando le dimensioni del modello presentano piccoli errori o quando " -"le tolleranze non sono corrette. Per regolazioni di grandi dimensioni, si prega " -"di utilizzare la funzione di scala del modello.\n" +"Questa viene utilizzata solo per regolare le dimensioni del modello in " +"piccole quantità.\n" +"Ad esempio, quando le dimensioni del modello presentano piccoli errori o " +"quando le tolleranze non sono corrette. Per regolazioni di grandi " +"dimensioni, si prega di utilizzare la funzione di scala del modello.\n" "\n" "Il valore verrà reimpostato su 0." @@ -3345,8 +3391,8 @@ msgid "" "layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" "La modalità spirale funziona solo quando il loop parete è 1, il supporto è " -"disabilitato, i layers superiori del guscio sono 0, la densità riempimento è 0 e " -"il tipo di timelapse è tradizionale" +"disabilitato, i layers superiori del guscio sono 0, la densità riempimento è " +"0 e il tipo di timelapse è tradizionale" msgid " But machines with I3 structure will not generate timelapse videos." msgstr " Ma le macchine con la struttura I3 non genereranno video timelapse." @@ -3361,24 +3407,26 @@ msgstr "" "No - Annulla l'attivazione della modalità a spirale" msgid "" -"Alternate extra wall only works with ensure vertical shell thickness disabled. " +"Alternate extra wall only works with ensure vertical shell thickness " +"disabled. " msgstr "" "La parete aggiuntiva alternativa funziona solo con la disattivazione dello " "spessore del guscio verticale. " msgid "" "Change these settings automatically? \n" -"Yes - Disable ensure vertical shell thickness and enable alternate extra wall\n" +"Yes - Disable ensure vertical shell thickness and enable alternate extra " +"wall\n" "No - Dont use alternate extra wall" msgstr "" "Modificare automaticamente queste impostazioni? \n" -"Sì - Disabilita Assicura lo spessore del guscio verticale e abilita una parete " -"aggiuntiva alternativa\n" +"Sì - Disabilita Assicura lo spessore del guscio verticale e abilita una " +"parete aggiuntiva alternativa\n" "No - Non utilizzare una parete aggiuntiva alternativa" msgid "" -"Prime tower does not work when Adaptive Layer Height or Independent Support Layer " -"Height is on.\n" +"Prime tower does not work when Adaptive Layer Height or Independent Support " +"Layer Height is on.\n" "Which do you want to keep?\n" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height and Independent Support Layer Height" @@ -3406,7 +3454,8 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"Prime tower non funziona quando Altezza Supporto Layer indipendente è attiva.\n" +"Prime tower non funziona quando Altezza Supporto Layer indipendente è " +"attiva.\n" "Quale vuoi tenere?\n" "SÌ - Mantieni Prime Tower\n" "NO - Mantieni Altezza Supporto Layer indipendente" @@ -3560,38 +3609,40 @@ msgid "Update failed." msgstr "Aggiornamento fallito" msgid "" -"The current chamber temperature or the target chamber temperature exceeds 45℃.In " -"order to avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is not " -"allowed to be loaded." +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." msgstr "" -"La temperatura attuale della camera o la temperatura della camera target supera i " -"45°C. Al fine di evitare l'intasamento dell'estrusore, il filamento a bassa " -"temperatura (PLA/PETG/TPU) non può essere caricato." +"La temperatura attuale della camera o la temperatura della camera target " +"supera i 45°C. Al fine di evitare l'intasamento dell'estrusore, il filamento " +"a bassa temperatura (PLA/PETG/TPU) non può essere caricato." msgid "" "Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " -"avoid extruder clogging,it is not allowed to set the chamber temperature above " -"45℃." +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." msgstr "" -"Il filamento a bassa temperatura (PLA/PETG/TPU) viene caricato nell'estrusore. Al " -"fine di evitare l'intasamento dell'estrusore, non è consentito impostare la " -"temperatura della camera al di sopra di 45°C." +"Il filamento a bassa temperatura (PLA/PETG/TPU) viene caricato " +"nell'estrusore. Al fine di evitare l'intasamento dell'estrusore, non è " +"consentito impostare la temperatura della camera al di sopra di 45°C." msgid "" -"When you set the chamber temperature below 40℃, the chamber temperature control " -"will not be activated. And the target chamber temperature will automatically be " -"set to 0℃." +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." msgstr "" -"Quando si imposta la temperatura della camera al di sotto di 40°C, il controllo " -"della temperatura della camera non verrà attivato. E la temperatura della camera " -"target verrà impostata automaticamente su 0°C." +"Quando si imposta la temperatura della camera al di sotto di 40°C, il " +"controllo della temperatura della camera non verrà attivato. E la " +"temperatura della camera target verrà impostata automaticamente su 0°C." msgid "Failed to start printing job" msgstr "Impossibile avviare il processo di stampa" -msgid "This calibration does not support the currently selected nozzle diameter" +msgid "" +"This calibration does not support the currently selected nozzle diameter" msgstr "" -"Questa calibrazione non supporta il diametro dell'ugello attualmente selezionato" +"Questa calibrazione non supporta il diametro dell'ugello attualmente " +"selezionato" msgid "Current flowrate cali param is invalid" msgstr "Il parametro cali della portata corrente non è valido" @@ -3612,18 +3663,18 @@ msgid "Bambu PET-CF/PA6-CF is not supported by AMS." msgstr "Bambu PET-CF/PA6-CF non è supportato da AMS." msgid "" -"Damp PVA will become flexible and get stuck inside AMS,please take care to dry it " -"before use." +"Damp PVA will become flexible and get stuck inside AMS,please take care to " +"dry it before use." msgstr "" -"Damp PVA diventerà flessibile e rimarrà bloccato all'interno di AMS, si prega di " -"fare attenzione ad asciugarlo prima dell'uso." +"Damp PVA diventerà flessibile e rimarrà bloccato all'interno di AMS, si " +"prega di fare attenzione ad asciugarlo prima dell'uso." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, " -"please use with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " +"AMS, please use with caution." msgstr "" -"I filamenti CF / GF sono duri e fragili, è facile rompersi o rimanere bloccati in " -"AMS, si prega di usare con cautela." +"I filamenti CF / GF sono duri e fragili, è facile rompersi o rimanere " +"bloccati in AMS, si prega di usare con cautela." msgid "default" msgstr "predefinito" @@ -4020,13 +4071,13 @@ msgstr "È visibile solo l'oggetto da modificare." msgid "" "An object is laid over the boundary of plate or exceeds the height limit.\n" -"Please solve the problem by moving it totally on or off the plate, and confirming " -"that the height is within the build volume." +"Please solve the problem by moving it totally on or off the plate, and " +"confirming that the height is within the build volume." msgstr "" "Un oggetto è posizionato oltre il limite del piatto o supera il limite di " "altezza.\n" -"Risolvi il problema spostando l'oggetto completamente dentro o fuori il piatto " -"verificando che l'altezza rientri nel volume di costruzione." +"Risolvi il problema spostando l'oggetto completamente dentro o fuori il " +"piatto verificando che l'altezza rientri nel volume di costruzione." msgid "Calibration step selection" msgstr "Seleziona calibrazione" @@ -4051,8 +4102,8 @@ msgid "" "minimize deviation.\n" "It keeps the device performing optimally." msgstr "" -"Il programma di calibrazione rileva automaticamente lo stato del dispositivo per " -"ridurre al minimo le deviazioni.\n" +"Il programma di calibrazione rileva automaticamente lo stato del dispositivo " +"per ridurre al minimo le deviazioni.\n" "Questa funzione aiuta il dispositivo a mantenere prestazioni ottimali." msgid "Calibration Flow" @@ -4518,7 +4569,8 @@ msgstr "Scegliere una directory" #, c-format, boost-format msgid "There is %d config exported. (Only non-system configs)" msgid_plural "There are %d configs exported. (Only non-system configs)" -msgstr[0] "Viene esportata %d configurazione. (Solo configurazioni non di sistema)" +msgstr[0] "" +"Viene esportata %d configurazione. (Solo configurazioni non di sistema)" msgstr[1] "" "Vengono esportate %d configurazioni. (Solo configurazioni non di sistema)" @@ -4536,8 +4588,8 @@ msgstr[0] "" "È stata importata %d configurazione. (Solo configurazioni non di sistema e " "compatibili)" msgstr[1] "" -"Sono state importate %d configurazioni. (Solo configurazioni non di sistema e " -"compatibili)" +"Sono state importate %d configurazioni. (Solo configurazioni non di sistema " +"e compatibili)" msgid "Import result" msgstr "Risultato dell'importazione" @@ -4571,13 +4623,15 @@ msgid "Initialize failed (No Device)!" msgstr "Inizializzazione fallita (nessun dispositivo)!" msgid "Initialize failed (Device connection not ready)!" -msgstr "Inizializzazione fallita (la connessione del dispositivo non è pronta)!" +msgstr "" +"Inizializzazione fallita (la connessione del dispositivo non è pronta)!" msgid "Initialize failed (No Camera Device)!" msgstr "Inizializzazione fallita (Nessun dispositivo fotocamera)!" msgid "Printer is busy downloading, Please wait for the downloading to finish." -msgstr "Stampante in fase di caricamento; attendi il completamento del caricamento." +msgstr "" +"Stampante in fase di caricamento; attendi il completamento del caricamento." msgid "Initialize failed (Not supported on the current printer version)!" msgstr "" @@ -4716,8 +4770,10 @@ msgstr "Caricamento non riuscito [%d]" msgid "You are going to delete %u file from printer. Are you sure to continue?" msgid_plural "" "You are going to delete %u files from printer. Are you sure to continue?" -msgstr[0] "Stai per eliminare %u file dalla stampante. Sei sicuro di continuare?" -msgstr[1] "Stai per eliminare %u i file dalla stampante. Sei sicuro di continuare?" +msgstr[0] "" +"Stai per eliminare %u file dalla stampante. Sei sicuro di continuare?" +msgstr[1] "" +"Stai per eliminare %u i file dalla stampante. Sei sicuro di continuare?" msgid "Delete files" msgstr "Elimina i file" @@ -4739,11 +4795,11 @@ msgid "Failed to parse model infomations." msgstr "Analisi delle informazioni sul modello non riuscita" msgid "" -"The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer and " -"export a new .gcode.3mf file." +"The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer " +"and export a new .gcode.3mf file." msgstr "" -"Il file .gcode.3mf non contiene dati G-code. Taglialo con Orca Slicer ed esporta " -"un nuovo file .gcode.3mf." +"Il file .gcode.3mf non contiene dati G-code. Taglialo con Orca Slicer ed " +"esporta un nuovo file .gcode.3mf." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -4770,7 +4826,8 @@ msgstr "Connessione persa. Si prega di riprovare." msgid "The device cannot handle more conversations. Please retry later." msgstr "" -"Il dispositivo non è in grado di gestire più conversazioni. Riprova più tardi." +"Il dispositivo non è in grado di gestire più conversazioni. Riprova più " +"tardi." msgid "File not exists." msgstr "Il file non esiste." @@ -4850,7 +4907,8 @@ msgid "" "but the synchronization of rating information has failed." msgstr "" "Hai completato la stampa del modello del centro commerciale, \n" -"Tuttavia, la sincronizzazione delle informazioni di valutazione non è riuscita." +"Tuttavia, la sincronizzazione delle informazioni di valutazione non è " +"riuscita." msgid "How do you like this printing file?" msgstr "Ti piace questo file di stampa?" @@ -4859,8 +4917,8 @@ msgid "" "(The model has already been rated. Your rating will overwrite the previous " "rating.)" msgstr "" -"(Il modello è già stato valutato. La tua valutazione sovrascriverà la valutazione " -"precedente.)" +"(Il modello è già stato valutato. La tua valutazione sovrascriverà la " +"valutazione precedente.)" msgid "Rate" msgstr "Tasso" @@ -4932,10 +4990,11 @@ msgid "Layer: %d/%d" msgstr "Layer: %d/%d" msgid "" -"Please heat the nozzle to above 170 degree before loading or unloading filament." +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." msgstr "" -"Si prega di riscaldare l'ugello a oltre 170 gradi prima di caricare o scaricare " -"il filamento." +"Si prega di riscaldare l'ugello a oltre 170 gradi prima di caricare o " +"scaricare il filamento." msgid "Still unload" msgstr "Scarica ancora" @@ -4947,11 +5006,11 @@ msgid "Please select an AMS slot before calibration" msgstr "Seleziona uno slot AMS prima di calibrare." msgid "" -"Cannot read filament info: the filament is loaded to the tool head,please unload " -"the filament and try again." +"Cannot read filament info: the filament is loaded to the tool head,please " +"unload the filament and try again." msgstr "" -"Impossibile leggere le informazioni sul filamento: il filamento è caricato nella " -"testa di stampa. Scaricare il filamento e riprovare." +"Impossibile leggere le informazioni sul filamento: il filamento è caricato " +"nella testa di stampa. Scaricare il filamento e riprovare." msgid "This only takes effect during printing" msgstr "Questo ha effetto solo in fase di stampa" @@ -5017,19 +5076,20 @@ msgid " can not be opened\n" msgstr " non può essere aperto\n" msgid "" -"The following issues occurred during the process of uploading images. Do you want " -"to ignore them?\n" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" "\n" msgstr "" -"Durante il processo di caricamento delle immagini si sono verificati i seguenti " -"problemi. Vuoi ignorarli?\n" +"Durante il processo di caricamento delle immagini si sono verificati i " +"seguenti problemi. Vuoi ignorarli?\n" "\n" msgid "info" msgstr "info" msgid "Synchronizing the printing results. Please retry a few seconds later." -msgstr "Sincronizzazione dei risultati di stampa. Riprova qualche secondo dopo." +msgstr "" +"Sincronizzazione dei risultati di stampa. Riprova qualche secondo dopo." msgid "Upload failed\n" msgstr "Caricamento non riuscito\n" @@ -5042,8 +5102,8 @@ msgid "" "\n" " error code: " msgstr "" -"Il risultato del tuo commento non può essere caricato per alcuni motivi. Come " -"segue:\n" +"Il risultato del tuo commento non può essere caricato per alcuni motivi. " +"Come segue:\n" "\n" "Codice di errore: " @@ -5059,11 +5119,11 @@ msgstr "" "Vuoi reindirizzare alla pagina web per la valutazione?" msgid "" -"Some of your images failed to upload. Would you like to redirect to the webpage " -"for rating?" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" msgstr "" -"Alcune delle tue immagini non sono state caricate. Vuoi reindirizzare alla pagina " -"web per la valutazione?" +"Alcune delle tue immagini non sono state caricate. Vuoi reindirizzare alla " +"pagina web per la valutazione?" msgid "You can select up to 16 images." msgstr "È possibile selezionare fino a 16 immagini." @@ -5072,7 +5132,8 @@ msgid "" "At least one successful print record of this print profile is required \n" "to give a positive rating(4 or 5stars)." msgstr "" -"È necessario almeno un record di stampa riuscito di questo profilo di stampa \n" +"È necessario almeno un record di stampa riuscito di questo profilo di " +"stampa \n" "per dare una valutazione positiva (4 o 5 stelle)." msgid "Status" @@ -5241,10 +5302,11 @@ msgid "Range" msgstr "Intervallo" msgid "" -"The application cannot run normally because OpenGL version is lower than 2.0.\n" +"The application cannot run normally because OpenGL version is lower than " +"2.0.\n" msgstr "" -"L'applicazione non può essere eseguita normalmente perché la versione OpenGL è " -"precedente alla 2.0.\n" +"L'applicazione non può essere eseguita normalmente perché la versione OpenGL " +"è precedente alla 2.0.\n" msgid "Please upgrade your graphics card driver." msgstr "Aggiorna i driver della scheda grafica." @@ -5281,11 +5343,11 @@ msgid "Enable detection of build plate position" msgstr "Abilita rilevamento posizione del piatto" msgid "" -"The localization tag of build plate is detected, and printing is paused if the " -"tag is not in predefined range." +"The localization tag of build plate is detected, and printing is paused if " +"the tag is not in predefined range." msgstr "" -"Il tag di localizzazione del piatto verrà rilevato e la stampa verrà messa in " -"pausa se il tag non rientra nell'intervallo predefinito." +"Il tag di localizzazione del piatto verrà rilevato e la stampa verrà messa " +"in pausa se il tag non rientra nell'intervallo predefinito." msgid "First Layer Inspection" msgstr "Ispezione del primo layer" @@ -5396,10 +5458,11 @@ msgstr "Imposta filamenti da usare" msgid "Search plate, object and part." msgstr "Cerca piastra, oggetto e parte." -msgid "No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgid "" +"No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" -"Nessun filamento AMS. Selezionare una stampante nella pagina 'Dispositivo' per " -"caricare le informazioni AMS." +"Nessun filamento AMS. Selezionare una stampante nella pagina 'Dispositivo' " +"per caricare le informazioni AMS." msgid "Sync filaments with AMS" msgstr "Sincronizza filamenti con AMS" @@ -5408,14 +5471,15 @@ msgid "" "Sync filaments with AMS will drop all current selected filament presets and " "colors. Do you want to continue?" msgstr "" -"La sincronizzazione filamenti con AMS eliminerà tutti i preset e i colori dei " -"filamenti attualmente selezionati. Vuoi continuare?" +"La sincronizzazione filamenti con AMS eliminerà tutti i preset e i colori " +"dei filamenti attualmente selezionati. Vuoi continuare?" msgid "" -"Already did a synchronization, do you want to sync only changes or resync all?" +"Already did a synchronization, do you want to sync only changes or resync " +"all?" msgstr "" -"È già stata effettuata una sincronizzazione; si desidera sincronizzare solo le " -"modifiche o tutto?" +"È già stata effettuata una sincronizzazione; si desidera sincronizzare solo " +"le modifiche o tutto?" msgid "Sync" msgstr "Sincronizza" @@ -5424,15 +5488,17 @@ msgid "Resync" msgstr "Risincronizza" msgid "There are no compatible filaments, and sync is not performed." -msgstr "Non ci sono filamenti compatibili, la sincronizzazione non viene eseguita." +msgstr "" +"Non ci sono filamenti compatibili, la sincronizzazione non viene eseguita." msgid "" -"There are some unknown filaments mapped to generic preset. Please update Orca " -"Slicer or restart Orca Slicer to check if there is an update to system presets." +"There are some unknown filaments mapped to generic preset. Please update " +"Orca Slicer or restart Orca Slicer to check if there is an update to system " +"presets." msgstr "" -"Ci sono alcuni filamenti sconosciuti mappati su un preset generico. Aggiorna Orca " -"Slicer o riavvia Orca Slicer per verificare se è presente un aggiornamento delle " -"impostazioni di sistema." +"Ci sono alcuni filamenti sconosciuti mappati su un preset generico. Aggiorna " +"Orca Slicer o riavvia Orca Slicer per verificare se è presente un " +"aggiornamento delle impostazioni di sistema." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -5443,8 +5509,8 @@ msgid "" "Successfully unmounted. The device %s(%s) can now be safely removed from the " "computer." msgstr "" -"Smontato con successo. Il dispositivo %s (%s) può ora essere rimosso dal computer " -"in sicurezza" +"Smontato con successo. Il dispositivo %s (%s) può ora essere rimosso dal " +"computer in sicurezza" #, c-format, boost-format msgid "Ejecting of device %s(%s) has failed." @@ -5458,29 +5524,30 @@ msgid "Restore" msgstr "Ripristina" msgid "" -"The current hot bed temperature is relatively high. The nozzle may be clogged " -"when printing this filament in a closed enclosure. Please open the front door and/" -"or remove the upper glass." +"The current hot bed temperature is relatively high. The nozzle may be " +"clogged when printing this filament in a closed enclosure. Please open the " +"front door and/or remove the upper glass." msgstr "" -"L'attuale temperatura del letto caldo è relativamente alta. L'ugello potrebbe " -"essere ostruito quando si stampa questo filamento in un involucro chiuso. Si " -"prega di aprire lo sportello anteriore e/o rimuovere il vetro superiore." +"L'attuale temperatura del letto caldo è relativamente alta. L'ugello " +"potrebbe essere ostruito quando si stampa questo filamento in un involucro " +"chiuso. Si prega di aprire lo sportello anteriore e/o rimuovere il vetro " +"superiore." msgid "" -"The nozzle hardness required by the filament is higher than the default nozzle " -"hardness of the printer. Please replace the hardened nozzle or filament, " -"otherwise, the nozzle will be attrited or damaged." +"The nozzle hardness required by the filament is higher than the default " +"nozzle hardness of the printer. Please replace the hardened nozzle or " +"filament, otherwise, the nozzle will be attrited or damaged." msgstr "" -"La durezza del nozzle richiesta dal filamento è superiore alla durezza del nozzle " -"predefinito della stampante. Si prega di sostituire il nozzle o il filamento " -"indurito, altrimenti il nozzle sarà usurato o danneggiato." +"La durezza del nozzle richiesta dal filamento è superiore alla durezza del " +"nozzle predefinito della stampante. Si prega di sostituire il nozzle o il " +"filamento indurito, altrimenti il nozzle sarà usurato o danneggiato." msgid "" -"Enabling traditional timelapse photography may cause surface imperfections. It is " -"recommended to change to smooth mode." +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." msgstr "" -"L'attivazione della fotografia timelapse tradizionale può causare imperfezioni " -"della superficie. Si consiglia di passare alla modalità liscia." +"L'attivazione della fotografia timelapse tradizionale può causare " +"imperfezioni della superficie. Si consiglia di passare alla modalità liscia." msgid "Expand sidebar" msgstr "Espandi barra laterale" @@ -5518,36 +5585,38 @@ msgstr "" "stampante:" msgid "" -"Please confirm that these modified G-codes are safe to prevent any damage to the " -"machine!" +"Please confirm that these modified G-codes are safe to prevent any damage to " +"the machine!" msgstr "" -"Si prega di confermare che questi G-code modificati sono sicuri per evitare danni " -"alla macchina!" +"Si prega di confermare che questi G-code modificati sono sicuri per evitare " +"danni alla macchina!" msgid "Modified G-codes" msgstr "G-code Modificati" msgid "The 3mf has following customized filament or printer presets:" msgstr "" -"Il 3mf ha i seguenti filamenti personalizzati o preimpostazioni della stampante:" +"Il 3mf ha i seguenti filamenti personalizzati o preimpostazioni della " +"stampante:" msgid "" "Please confirm that the G-codes within these presets are safe to prevent any " "damage to the machine!" msgstr "" -"Si prega di confermare che i G-code all'interno di queste preimpostazioni sono " -"sicuri per evitare danni alla macchina!" +"Si prega di confermare che i G-code all'interno di queste preimpostazioni " +"sono sicuri per evitare danni alla macchina!" msgid "Customized Preset" msgstr "Preset personalizzato" msgid "Name of components inside step file is not UTF8 format!" -msgstr "Il nome/i del componente all'interno del file step non è in formato UTF8!" +msgstr "" +"Il nome/i del componente all'interno del file step non è in formato UTF8!" msgid "The name may show garbage characters!" msgstr "" -"A causa di una codifica del testo non supportata, potrebbero apparire caratteri " -"inutili!" +"A causa di una codifica del testo non supportata, potrebbero apparire " +"caratteri inutili!" #, boost-format msgid "Failed loading file \"%1%\". An invalid configuration was found." @@ -5593,8 +5662,8 @@ msgid "The file does not contain any geometry data." msgstr "Il file non contiene dati geometrici." msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the heat " -"bed automatically?" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" msgstr "" "L'oggetto sembra troppo grande. Vuoi ridimensionarlo per adattarlo " "automaticamente al piatto di stampa?" @@ -5698,9 +5767,11 @@ msgstr "Slicing Piatto %d" msgid "Please resolve the slicing errors and publish again." msgstr "Risolvi gli errori di slicing e pubblica nuovamente." -msgid "Network Plug-in is not detected. Network related features are unavailable." +msgid "" +"Network Plug-in is not detected. Network related features are unavailable." msgstr "" -"Il plug-in di rete non è stato rilevato. Le funzioni di rete non sono disponibili." +"Il plug-in di rete non è stato rilevato. Le funzioni di rete non sono " +"disponibili." msgid "" "Preview only mode:\n" @@ -5725,8 +5796,8 @@ msgid "" "project file." msgstr "" "Non è stato possibile salvare il progetto.\n" -"Verificare se online la cartella esiste o se altri programmi hanno aperto il file " -"del progetto." +"Verificare se online la cartella esiste o se altri programmi hanno aperto il " +"file del progetto." msgid "Save project" msgstr "Salva progetto" @@ -5745,10 +5816,11 @@ msgid "Project downloaded %d%%" msgstr "Progetto scaricato %d%%" msgid "" -"Importing to Orca Slicer failed. Please download the file and manually import it." +"Importing to Orca Slicer failed. Please download the file and manually " +"import it." msgstr "" -"L'importazione di Orca Slicer non è riuscita. Si prega di scaricare il file e " -"importarlo manualmente." +"L'importazione di Orca Slicer non è riuscita. Si prega di scaricare il file " +"e importarlo manualmente." msgid "Import SLA archive" msgstr "Importa archivio SLA" @@ -5823,33 +5895,34 @@ msgstr "Salva file elaborato come:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed on the " -"printer." +"The file %s has been sent to the printer's storage space and can be viewed " +"on the printer." msgstr "" -"Il file %s è stato inviato allo spazio di memoria della stampante e può essere " -"visualizzato sulla stampante." +"Il file %s è stato inviato allo spazio di memoria della stampante e può " +"essere visualizzato sulla stampante." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts will be " -"exported." +"Unable to perform boolean operation on model meshes. Only positive parts " +"will be exported." msgstr "" "Impossibile eseguire operazioni booleane sulle mesh del modello. Verranno " "esportate solo le parti positive." msgid "" -"Are you sure you want to store original SVGs with their local paths into the 3MF " -"file?\n" +"Are you sure you want to store original SVGs with their local paths into the " +"3MF file?\n" "If you hit 'NO', all SVGs in the project will not be editable any more." msgstr "" -"Sei sicuro di voler memorizzare gli SVG originali con i loro percorsi locali nel " -"file 3MF?\n" +"Sei sicuro di voler memorizzare gli SVG originali con i loro percorsi locali " +"nel file 3MF?\n" "Se premi \"NO\", tutti gli SVG del progetto non saranno più modificabili." msgid "Private protection" msgstr "Protezione privata" msgid "Is the printer ready? Is the print sheet in place, empty and clean?" -msgstr "La stampante è pronta? La piastra di stampa è in posizione, vuota e pulita?" +msgstr "" +"La stampante è pronta? La piastra di stampa è in posizione, vuota e pulita?" msgid "Upload and Print" msgstr "Carica e Stampa" @@ -5859,8 +5932,8 @@ msgid "" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Stampa per oggetto: \n" -"Ti consigliamo di utilizzare la disposizione automatica per evitare collisioni " -"durante la stampa." +"Ti consigliamo di utilizzare la disposizione automatica per evitare " +"collisioni durante la stampa." msgid "Send G-code" msgstr "Invia G-code" @@ -5870,8 +5943,8 @@ msgstr "Manda alla stampante" msgid "Custom supports and color painting were removed before repairing." msgstr "" -"I supporti personalizzati e la pittura a colori sono stati rimossi prima della " -"riparazione." +"I supporti personalizzati e la pittura a colori sono stati rimossi prima " +"della riparazione." msgid "Optimize Rotation" msgstr "Ottimizza rotazione" @@ -5922,20 +5995,21 @@ msgid "Tips:" msgstr "Suggerimenti:" msgid "" -"\"Fix Model\" feature is currently only on Windows. Please repair the model on " -"Orca Slicer(windows) or CAD softwares." +"\"Fix Model\" feature is currently only on Windows. Please repair the model " +"on Orca Slicer(windows) or CAD softwares." msgstr "" -"La funzione \"Correggi modello\" è attualmente disponibile solo su Windows. Si " -"prega di riparare il modello su Orca Slicer (Windows) o software CAD." +"La funzione \"Correggi modello\" è attualmente disponibile solo su Windows. " +"Si prega di riparare il modello su Orca Slicer (Windows) o software CAD." #, c-format, boost-format msgid "" -"Plate% d: %s is not suggested to be used to print filament %s(%s). If you still " -"want to do this printing, please set this filament's bed temperature to non zero." +"Plate% d: %s is not suggested to be used to print filament %s(%s). If you " +"still want to do this printing, please set this filament's bed temperature " +"to non zero." msgstr "" -"Piatto% d: %s non è consigliato per l’utilizzo del filamento %s (%s). Se desideri " -"continuare, imposta la temperatura del piano di questo filamento su un numero " -"diverso da zero." +"Piatto% d: %s non è consigliato per l’utilizzo del filamento %s (%s). Se " +"desideri continuare, imposta la temperatura del piano di questo filamento su " +"un numero diverso da zero." msgid "Switching the language requires application restart.\n" msgstr "Il cambio lingua richiede il riavvio dell'applicazione.\n" @@ -6016,17 +6090,18 @@ msgid "Zoom to mouse position" msgstr "Zoom posizione del mouse" msgid "" -"Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D " -"window center." +"Zoom in towards the mouse pointer's position in the 3D view, rather than the " +"2D window center." msgstr "" -"Ingrandisci verso la posizione del puntatore del mouse nella vista 3D, anziché " -"verso il centro della finestra 2D." +"Ingrandisci verso la posizione del puntatore del mouse nella vista 3D, " +"anziché verso il centro della finestra 2D." msgid "Use free camera" msgstr "Usa l'inquadratura libera" msgid "If enabled, use free camera. If not enabled, use constrained camera." -msgstr "Se attivo, usa la visuale libera. Se non attivo, usa la visuale vincolata." +msgstr "" +"Se attivo, usa la visuale libera. Se non attivo, usa la visuale vincolata." msgid "Show splash screen" msgstr "Mostra splash screen" @@ -6041,7 +6116,8 @@ msgid "If enabled, useful hints are displayed at startup." msgstr "Se abilitato, all'avvio vengono visualizzati suggerimenti utili." msgid "Flushing volumes: Auto-calculate everytime the color changed." -msgstr "Volumi di Spurgo: Calcola automaticamente ogni volta che il colore cambia." +msgstr "" +"Volumi di Spurgo: Calcola automaticamente ogni volta che il colore cambia." msgid "If enabled, auto-calculate everytime the color changed." msgstr "Se abilitato, calcola automaticamente ogni volta che il colore cambia." @@ -6050,7 +6126,8 @@ msgid "Presets" msgstr "Preset" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "Sincronizzazione automatica preset utente (stampante/filamento/processo)" +msgstr "" +"Sincronizzazione automatica preset utente (stampante/filamento/processo)" msgid "User Sync" msgstr "User Sync" @@ -6072,7 +6149,8 @@ msgstr "Associare file .3mf a OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" msgstr "" -"Se abilitata, imposta OrcaSlicer come applicazione predefinita per aprire \"\n" +"Se abilitata, imposta OrcaSlicer come applicazione predefinita per aprire " +"\"\n" "\"i file .3mf." msgid "Associate .stl files to OrcaSlicer" @@ -6080,7 +6158,8 @@ msgstr "Associate .stl files to Orca Slicer" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" msgstr "" -"Se abilitata, imposta OrcaSlicer come applicazione predefinita per aprire \"\n" +"Se abilitata, imposta OrcaSlicer come applicazione predefinita per aprire " +"\"\n" "\"i file .stl." msgid "Associate .step/.stp files to OrcaSlicer" @@ -6088,7 +6167,8 @@ msgstr "Associate .step/.stp files to Orca Slicer" msgid "If enabled, sets OrcaSlicer as default application to open .step files" msgstr "" -"Se abilitata, imposta OrcaSlicer come applicazione predefinita per aprire \"\n" +"Se abilitata, imposta OrcaSlicer come applicazione predefinita per aprire " +"\"\n" "\"i file .step." msgid "Maximum recent projects" @@ -6106,10 +6186,11 @@ msgstr "Nessun avviso durante il caricamento di 3MF con codici G modificati" msgid "Auto-Backup" msgstr "Backup automatico" -msgid "Backup your project periodically for restoring from the occasional crash." +msgid "" +"Backup your project periodically for restoring from the occasional crash." msgstr "" -"Esegui periodicamente il backup del tuo progetto per facilitare il ripristino " -"dopo un crash occasionale." +"Esegui periodicamente il backup del tuo progetto per facilitare il " +"ripristino dopo un crash occasionale." msgid "every" msgstr "Ogni" @@ -6314,7 +6395,8 @@ msgstr "Vai alla pagina web di pubblicazione del modello" msgid "Note: The preparation may takes several minutes. Please be patiant." msgstr "" -"Nota: la preparazione può richiedere alcuni minuti. Si prega di avere pazienza." +"Nota: la preparazione può richiedere alcuni minuti. Si prega di avere " +"pazienza." msgid "Publish" msgstr "Pubblica" @@ -6362,7 +6444,8 @@ msgstr "Preset \"%1%\" esiste già." #, boost-format msgid "Preset \"%1%\" already exists and is incompatible with current printer." -msgstr "Preset \"%1%\" esiste già ma è incompatibile con la stampante corrente." +msgstr "" +"Preset \"%1%\" esiste già ma è incompatibile con la stampante corrente." msgid "Please note that saving action will replace this preset" msgstr "Tieni presente che il salvataggio sovrascriverà il preset corrente." @@ -6483,7 +6566,8 @@ msgstr "Connessione locale della stampante fallita; Si prega di riprovare." msgid "No login account, only printers in LAN mode are displayed" msgstr "" -"Nessun account di login, vengono visualizzate solo le stampanti in modalità LAN" +"Nessun account di login, vengono visualizzate solo le stampanti in modalità " +"LAN" msgid "Connecting to server" msgstr "Connessione in corso al server" @@ -6496,10 +6580,11 @@ msgstr "La sincronizzazione informazioni dispositivo è scaduta" msgid "Cannot send the print job when the printer is updating firmware" msgstr "" -"Impossibile inviare un lavoro di stampa mentre la stampante sta aggiornando il " -"firmware" +"Impossibile inviare un lavoro di stampa mentre la stampante sta aggiornando " +"il firmware" -msgid "The printer is executing instructions. Please restart printing after it ends" +msgid "" +"The printer is executing instructions. Please restart printing after it ends" msgstr "La stampante sta eseguendo le istruzioni. Riavvia la stampa al termine" msgid "The printer is busy on other print job" @@ -6507,37 +6592,37 @@ msgstr "La stampante è occupata con altro lavoro di stampa." #, c-format, boost-format msgid "" -"Filament %s exceeds the number of AMS slots. Please update the printer firmware " -"to support AMS slot assignment." +"Filament %s exceeds the number of AMS slots. Please update the printer " +"firmware to support AMS slot assignment." msgstr "" "Il filamento %s supera il numero di slot AMS. Aggiorna il firmware della " "stampante per supportare l'assegnazione degli slot AMS." msgid "" -"Filament exceeds the number of AMS slots. Please update the printer firmware to " -"support AMS slot assignment." +"Filament exceeds the number of AMS slots. Please update the printer firmware " +"to support AMS slot assignment." msgstr "" -"Il filamento supera il numero di slot AMS. Aggiorna il firmware della stampante " -"per supportare l'assegnazione degli slot AMS." +"Il filamento supera il numero di slot AMS. Aggiorna il firmware della " +"stampante per supportare l'assegnazione degli slot AMS." msgid "" -"Filaments to AMS slots mappings have been established. You can click a filament " -"above to change its mapping AMS slot" +"Filaments to AMS slots mappings have been established. You can click a " +"filament above to change its mapping AMS slot" msgstr "" -"Filaments to AMS slots mappings have been established. You can click a filament " -"above to change its mapping AMS slot" +"Filaments to AMS slots mappings have been established. You can click a " +"filament above to change its mapping AMS slot" msgid "" -"Please click each filament above to specify its mapping AMS slot before sending " -"the print job" +"Please click each filament above to specify its mapping AMS slot before " +"sending the print job" msgstr "" -"Fai clic su ciascun filamento in alto per specificare lo slot AMS di mappatura " -"prima di inviare il lavoro di stampa" +"Fai clic su ciascun filamento in alto per specificare lo slot AMS di " +"mappatura prima di inviare il lavoro di stampa" #, c-format, boost-format msgid "" -"Filament %s does not match the filament in AMS slot %s. Please update the printer " -"firmware to support AMS slot assignment." +"Filament %s does not match the filament in AMS slot %s. Please update the " +"printer firmware to support AMS slot assignment." msgstr "" "Il filamento %s non corrisponde al filamento nello slot AMS %s. Aggiorna il " "firmware della stampante per supportare l'assegnazione degli slot AMS." @@ -6546,14 +6631,15 @@ msgid "" "Filament does not match the filament in AMS slot. Please update the printer " "firmware to support AMS slot assignment." msgstr "" -"Il filamento non corrisponde al filamento nello slot AMS. Aggiorna il firmware " -"della stampante per supportare l'assegnazione degli slot AMS." +"Il filamento non corrisponde al filamento nello slot AMS. Aggiorna il " +"firmware della stampante per supportare l'assegnazione degli slot AMS." msgid "" -"The printer firmware only supports sequential mapping of filament => AMS slot." +"The printer firmware only supports sequential mapping of filament => AMS " +"slot." msgstr "" -"Il firmware della stampante supporta solo la mappatura sequenziale del filamento " -"=> slot AMS." +"Il firmware della stampante supporta solo la mappatura sequenziale del " +"filamento => slot AMS." msgid "An SD card needs to be inserted before printing." msgstr "È necessario inserire una scheda microSD prima di stampare." @@ -6566,7 +6652,8 @@ msgid "An SD card needs to be inserted to record timelapse." msgstr "È necessario inserire una scheda microSD per registrare un timelapse." msgid "" -"Cannot send the print job to a printer whose firmware is required to get updated." +"Cannot send the print job to a printer whose firmware is required to get " +"updated." msgstr "" "Impossibile inviare il lavoro di stampa a una stampante il cui firmware deve " "essere aggiornato." @@ -6581,10 +6668,11 @@ msgid "" "When enable spiral vase mode, machines with I3 structure will not generate " "timelapse videos." msgstr "" -"Quando si abilita la modalità vaso a spirale, le macchine con struttura I3 non " -"genereranno video timelapse." +"Quando si abilita la modalità vaso a spirale, le macchine con struttura I3 " +"non genereranno video timelapse." -msgid "Timelapse is not supported because Print sequence is set to \"By object\"." +msgid "" +"Timelapse is not supported because Print sequence is set to \"By object\"." msgstr "" "Timelapse non è supportato perché la sequenza di stampa è impostata su \"Per " "oggetto\"." @@ -6597,20 +6685,21 @@ msgstr "Controllare quanto segue:" msgid "" "The printer type selected when generating G-Code is not consistent with the " -"currently selected printer. It is recommended that you use the same printer type " -"for slicing." +"currently selected printer. It is recommended that you use the same printer " +"type for slicing." msgstr "" -"Il tipo di stampante selezionato durante la generazione del G-Code non è coerente " -"con la stampante attualmente selezionata. Si consiglia di utilizzare lo stesso " -"tipo di stampante per lo slicing." +"Il tipo di stampante selezionato durante la generazione del G-Code non è " +"coerente con la stampante attualmente selezionata. Si consiglia di " +"utilizzare lo stesso tipo di stampante per lo slicing." msgid "" -"There are some unknown filaments in the AMS mappings. Please check whether they " -"are the required filaments. If they are okay, press \"Confirm\" to start printing." +"There are some unknown filaments in the AMS mappings. Please check whether " +"they are the required filaments. If they are okay, press \"Confirm\" to " +"start printing." msgstr "" -"Ci sono alcuni filamenti sconosciuti nelle mappature AMS. Si prega di verificare " -"se sono i filamenti necessari. Se sono a posto, fai clic su «Conferma» per " -"iniziare a stampare." +"Ci sono alcuni filamenti sconosciuti nelle mappature AMS. Si prega di " +"verificare se sono i filamenti necessari. Se sono a posto, fai clic su " +"«Conferma» per iniziare a stampare." #, c-format, boost-format msgid "nozzle in preset: %s %s" @@ -6621,18 +6710,20 @@ msgid "nozzle memorized: %.1f %s" msgstr "ugello memorizzato: %.1f %s" msgid "" -"Your nozzle diameter in preset is not consistent with memorized nozzle diameter. " -"Did you change your nozzle lately?" +"Your nozzle diameter in preset is not consistent with memorized nozzle " +"diameter. Did you change your nozzle lately?" msgstr "" -"Il diametro dell'ugello preimpostato non è coerente con il diametro dell'ugello " -"memorizzato. Hai cambiato l'ugello ultimamente?" +"Il diametro dell'ugello preimpostato non è coerente con il diametro " +"dell'ugello memorizzato. Hai cambiato l'ugello ultimamente?" #, c-format, boost-format msgid "*Printing %s material with %s may cause nozzle damage" msgstr "*La stampa di materiale %s con %s può causare danni agli ugelli" -msgid "Please click the confirm button if you still want to proceed with printing." -msgstr "Fai clic sul pulsante di conferma se desideri continuare con la stampa." +msgid "" +"Please click the confirm button if you still want to proceed with printing." +msgstr "" +"Fai clic sul pulsante di conferma se desideri continuare con la stampa." msgid "Hardened Steel" msgstr "Acciaio temprato" @@ -6640,7 +6731,8 @@ msgstr "Acciaio temprato" msgid "Stainless Steel" msgstr "Acciaio inox" -msgid "Connecting to the printer. Unable to cancel during the connection process." +msgid "" +"Connecting to the printer. Unable to cancel during the connection process." msgstr "" "Collegamento alla stampante. Impossibile annullare durante il processo di " "connessione." @@ -6658,8 +6750,8 @@ msgid "" "Caution to use! Flow calibration on Textured PEI Plate may fail due to the " "scattered surface." msgstr "" -"Attenzione da usare! La calibrazione del flusso sulla piastra PEI testurizzata " -"può non riuscire a causa della superficie Rugosa." +"Attenzione da usare! La calibrazione del flusso sulla piastra PEI " +"testurizzata può non riuscire a causa della superficie Rugosa." msgid "Automatic flow calibration using Micro Lidar" msgstr "Calibrazione automatica del flusso tramite Micro Lidar" @@ -6671,12 +6763,13 @@ msgid "Send to Printer SD card" msgstr "Invia a microSD stampante" msgid "Cannot send the print task when the upgrade is in progress" -msgstr "Impossibile inviare attività di stampa quando è in corso un aggiornamento" +msgstr "" +"Impossibile inviare attività di stampa quando è in corso un aggiornamento" msgid "An SD card needs to be inserted before send to printer SD card." msgstr "" -"È necessario inserire una scheda MicroSD prima di inviare alla scheda SD della " -"stampante." +"È necessario inserire una scheda MicroSD prima di inviare alla scheda SD " +"della stampante." msgid "The printer is required to be in the same LAN as Orca Slicer." msgstr "La stampante deve essere sulla stessa LAN di Orca Slicer." @@ -6733,18 +6826,19 @@ msgid "Terms and Conditions" msgstr "Termini e condizioni" msgid "" -"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab device, " -"please read the termsand conditions.By clicking to agree to use your Bambu Lab " -"device, you agree to abide by the Privacy Policyand Terms of Use(collectively, " -"the \"Terms\"). If you do not comply with or agree to the Bambu Lab Privacy " -"Policy, please do not use Bambu Lab equipment and services." +"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " +"device, please read the termsand conditions.By clicking to agree to use your " +"Bambu Lab device, you agree to abide by the Privacy Policyand Terms of " +"Use(collectively, the \"Terms\"). If you do not comply with or agree to the " +"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." msgstr "" "Grazie per aver acquistato un dispositivo Bambu Lab. Prima di utilizzare il " -"dispositivo Bambu Lab, si prega di leggere i termini e le condizioni. Facendo " -"clic per accettare di utilizzare il tuo dispositivo Bambu Lab, accetti di " -"rispettare l'Informativa sulla privacy e le Condizioni d'uso (collettivamente, i " -"\"Termini\"). Se non rispetti o non accetti l'Informativa sulla privacy di Bambu " -"Lab, ti preghiamo di non utilizzare i dispositivi e i servizi di Bambu Lab." +"dispositivo Bambu Lab, si prega di leggere i termini e le condizioni. " +"Facendo clic per accettare di utilizzare il tuo dispositivo Bambu Lab, " +"accetti di rispettare l'Informativa sulla privacy e le Condizioni d'uso " +"(collettivamente, i \"Termini\"). Se non rispetti o non accetti " +"l'Informativa sulla privacy di Bambu Lab, ti preghiamo di non utilizzare i " +"dispositivi e i servizi di Bambu Lab." msgid "and" msgstr "e" @@ -6760,31 +6854,31 @@ msgstr "Dichiarazione del programma miglioramento dell'esperienza utente" #, c-format, boost-format msgid "" -"In the 3D Printing community, we learn from each other's successes and failures " -"to adjust our own slicing parameters and settings. %s follows the same principle " -"and uses machine learning to improve its performance from the successes and " -"failures of the vast number of prints by our users. We are training %s to be " -"smarter by feeding them the real-world data. If you are willing, this service " -"will access information from your error logs and usage logs, which may include " -"information described in Privacy Policy. We will not collect any Personal Data " -"by which an individual can be identified directly or indirectly, including " -"without limitation names, addresses, payment information, or phone numbers. By " -"enabling this service, you agree to these terms and the statement about Privacy " -"Policy." +"In the 3D Printing community, we learn from each other's successes and " +"failures to adjust our own slicing parameters and settings. %s follows the " +"same principle and uses machine learning to improve its performance from the " +"successes and failures of the vast number of prints by our users. We are " +"training %s to be smarter by feeding them the real-world data. If you are " +"willing, this service will access information from your error logs and usage " +"logs, which may include information described in Privacy Policy. We will " +"not collect any Personal Data by which an individual can be identified " +"directly or indirectly, including without limitation names, addresses, " +"payment information, or phone numbers. By enabling this service, you agree " +"to these terms and the statement about Privacy Policy." msgstr "" -"Nella comunità della stampa 3D, impariamo dai successi e dagli insuccessi degli " -"altri per adattare i nostri parametri e impostazioni di slicing. %s segue lo " -"stesso principio e utilizza l'apprendimento automatico per migliorare le sue " -"prestazioni basandosi sui successi e sugli insuccessi di un vasto numero di " -"stampe effettuate dai nostri utenti. Stiamo addestrando %s affinché diventi più " -"intelligente alimentandolo con dati reali. Se sei d'accordo, questo servizio " -"accederà alle informazioni dai tuoi registri degli errori e dai registri di " -"utilizzo, che possono includere informazioni descritte nell'Informativa sulla " -"privacy. Non raccoglieremo alcun Dato Personale con il quale un individuo possa " -"essere identificato direttamente o indirettamente, incluso, a titolo " -"esemplificativo, nomi, indirizzi, informazioni di pagamento o numeri di telefono. " -"Abilitando questo servizio, accetti questi termini e la dichiarazione " -"sull'Informativa sulla privacy." +"Nella comunità della stampa 3D, impariamo dai successi e dagli insuccessi " +"degli altri per adattare i nostri parametri e impostazioni di slicing. %s " +"segue lo stesso principio e utilizza l'apprendimento automatico per " +"migliorare le sue prestazioni basandosi sui successi e sugli insuccessi di " +"un vasto numero di stampe effettuate dai nostri utenti. Stiamo addestrando " +"%s affinché diventi più intelligente alimentandolo con dati reali. Se sei " +"d'accordo, questo servizio accederà alle informazioni dai tuoi registri " +"degli errori e dai registri di utilizzo, che possono includere informazioni " +"descritte nell'Informativa sulla privacy. Non raccoglieremo alcun Dato " +"Personale con il quale un individuo possa essere identificato direttamente o " +"indirettamente, incluso, a titolo esemplificativo, nomi, indirizzi, " +"informazioni di pagamento o numeri di telefono. Abilitando questo servizio, " +"accetti questi termini e la dichiarazione sull'Informativa sulla privacy." msgid "Statement on User Experience Improvement Plan" msgstr "Dichiarazione del piano miglioramento dell'esperienza utente" @@ -6819,35 +6913,37 @@ msgid "Search in preset" msgstr "Cerca nel preset" msgid "Click to reset all settings to the last saved preset." -msgstr "Clicca per ripristinare tutte le impostazioni dell'ultimo preset salvato." - -msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the model " -"without prime tower. Are you sure you want to disable prime tower?" msgstr "" -"È necessaria una Prime Tower per la modalità timeplase fluida. Potrebbero esserci " -"difetti sul modello senza una Prime Tower. Sei sicuro di voler disabilitare la " -"Prime Tower?" +"Clicca per ripristinare tutte le impostazioni dell'ultimo preset salvato." msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the model " -"without prime tower. Do you want to enable prime tower?" +"Prime tower is required for smooth timeplase. There may be flaws on the " +"model without prime tower. Are you sure you want to disable prime tower?" +msgstr "" +"È necessaria una Prime Tower per la modalità timeplase fluida. Potrebbero " +"esserci difetti sul modello senza una Prime Tower. Sei sicuro di voler " +"disabilitare la Prime Tower?" + +msgid "" +"Prime tower is required for smooth timelapse. There may be flaws on the " +"model without prime tower. Do you want to enable prime tower?" msgstr "" "È necessaria una Prime Tower per una modalità timelapse fluida. Potrebbero " -"esserci dei difetti sul modello senza Prime Tower. Vuoi abilitare la Prime Tower?" +"esserci dei difetti sul modello senza Prime Tower. Vuoi abilitare la Prime " +"Tower?" msgid "Still print by object?" msgstr "Stampare ancora per oggetto?" msgid "" -"We have added an experimental style \"Tree Slim\" that features smaller support " -"volume but weaker strength.\n" +"We have added an experimental style \"Tree Slim\" that features smaller " +"support volume but weaker strength.\n" "We recommend using it with: 0 interface layers, 0 top distance, 2 walls." msgstr "" -"Abbiamo aggiunto uno stile sperimentale \"Albero Slim\" che presenta un volume di " -"supporto più piccolo ma una resistenza più debole.\n" -"Si consiglia di utilizzarlo con: 0 layer interfaccia, 0 distanza dall'alto, 2 " -"pareti." +"Abbiamo aggiunto uno stile sperimentale \"Albero Slim\" che presenta un " +"volume di supporto più piccolo ma una resistenza più debole.\n" +"Si consiglia di utilizzarlo con: 0 layer interfaccia, 0 distanza dall'alto, " +"2 pareti." msgid "" "Change these settings automatically? \n" @@ -6860,23 +6956,23 @@ msgstr "" msgid "" "For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " -"settings: at least 2 interface layers, at least 0.1mm top z distance or using " -"support materials on interface." +"settings: at least 2 interface layers, at least 0.1mm top z distance or " +"using support materials on interface." msgstr "" -"Per gli stili \"Albero Strong\" e \"Albero ibrido\", si consigliano le seguenti " -"impostazioni: almeno 2 layer interfaccia, distanza z superiore di almeno 0,1 mm o " -"utilizzo di materiali di supporto sull'interfaccia." +"Per gli stili \"Albero Strong\" e \"Albero ibrido\", si consigliano le " +"seguenti impostazioni: almeno 2 layer interfaccia, distanza z superiore di " +"almeno 0,1 mm o utilizzo di materiali di supporto sull'interfaccia." msgid "" -"When using support material for the support interface, We recommend the following " -"settings:\n" -"0 top z distance, 0 interface spacing, concentric pattern and disable independent " -"support layer height" +"When using support material for the support interface, We recommend the " +"following settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable " +"independent support layer height" msgstr "" -"Quando si utilizza il materiale di supporto per l'interfaccia di supporto, si " -"consigliano le seguenti impostazioni:\n" -"0 distanza z superiore , 0 spaziatura interfaccia, trama concentrico e disabilita " -"altezza layer di supporto indipendente" +"Quando si utilizza il materiale di supporto per l'interfaccia di supporto, " +"si consigliano le seguenti impostazioni:\n" +"0 distanza z superiore , 0 spaziatura interfaccia, trama concentrico e " +"disabilita altezza layer di supporto indipendente" msgid "" "Layer height is too small.\n" @@ -6886,12 +6982,12 @@ msgstr "" "Sarà impostato su min_layer_height\n" msgid "" -"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height " -"limits ,this may cause printing quality issues." +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." msgstr "" -"L'altezza dello strato supera il limite in Impostazioni stampante -> Estrusore -> " -"Limiti di altezza dello strato, ciò potrebbe causare problemi di qualità di " -"stampa." +"L'altezza dello strato supera il limite in Impostazioni stampante -> " +"Estrusore -> Limiti di altezza dello strato, ciò potrebbe causare problemi " +"di qualità di stampa." msgid "Adjust to the set range automatically? \n" msgstr "Regolare automaticamente l'intervallo impostato? \n" @@ -6903,15 +6999,15 @@ msgid "Ignore" msgstr "Ignora" msgid "" -"When recording timelapse without toolhead, it is recommended to add a \"Timelapse " -"Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive\"-" -">\"Timelapse Wipe Tower\"." +"When recording timelapse without toolhead, it is recommended to add a " +"\"Timelapse Wipe Tower\" \n" +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" -"Quando si registra un timelapse senza testa di satmpa, si consiglia di aggiungere " -"un \"Timelapse Torre di pulizia\"\n" -"facendo clic con il pulsante destro del mouse sulla posizione vuota del piatto e " -"scegli \"Aggiungi primitiva\" ->\"Timelapse Torre di pulizia\"»." +"Quando si registra un timelapse senza testa di satmpa, si consiglia di " +"aggiungere un \"Timelapse Torre di pulizia\"\n" +"facendo clic con il pulsante destro del mouse sulla posizione vuota del " +"piatto e scegli \"Aggiungi primitiva\" ->\"Timelapse Torre di pulizia\"»." msgid "Line width" msgstr "Larghezza linea" @@ -6950,14 +7046,14 @@ msgid "Overhang speed" msgstr "Velocità di sbalzo" msgid "" -"This is the speed for various overhang degrees. Overhang degrees are expressed as " -"a percentage of line width. 0 speed means no slowing down for the overhang degree " -"range and wall speed is used" +"This is the speed for various overhang degrees. Overhang degrees are " +"expressed as a percentage of line width. 0 speed means no slowing down for " +"the overhang degree range and wall speed is used" msgstr "" -"È la velocità per vari gradi di sporgenza. I gradi di sporgenza sono espressi " -"come percentuale della larghezza della linea. Velocità 0 significa che non c'è " -"rallentamento per l'intervallo di gradi di sporgenza e viene utilizzata la " -"velocità della parete." +"È la velocità per vari gradi di sporgenza. I gradi di sporgenza sono " +"espressi come percentuale della larghezza della linea. Velocità 0 significa " +"che non c'è rallentamento per l'intervallo di gradi di sporgenza e viene " +"utilizzata la velocità della parete." msgid "Bridge" msgstr "Ponte" @@ -7004,19 +7100,20 @@ msgstr "Frequente" #, c-format, boost-format msgid "" "Following line %s contains reserved keywords.\n" -"Please remove it, or will beat G-code visualization and printing time estimation." +"Please remove it, or will beat G-code visualization and printing time " +"estimation." msgid_plural "" "Following lines %s contain reserved keywords.\n" "Please remove them, or will beat G-code visualization and printing time " "estimation." msgstr[0] "" "La riga seguente %s contiene parole chiave riservata.\n" -"Rimuovilo, altrimenti la visualizzazione G-code e la stima del tempo di stampa " -"verranno interrotte." +"Rimuovilo, altrimenti la visualizzazione G-code e la stima del tempo di " +"stampa verranno interrotte." msgstr[1] "" "Following lines %s contain reserved keywords.\n" -"Please remove them, or G-code visualization and print time estimation will be " -"broken." +"Please remove them, or G-code visualization and print time estimation will " +"be broken." msgid "Reserved keywords found" msgstr "Parole chiave riservate trovate" @@ -7054,8 +7151,8 @@ msgid "Cool plate" msgstr "Cool plate" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament does not " -"support to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Cool Plate" msgstr "" "Temperatura del piano quando è installato il piatto Cool Plate. Il valore 0 " "significa che il filamento non supporta la stampa su piatto Cool Plate." @@ -7064,8 +7161,8 @@ msgid "Engineering plate" msgstr "Engineering plate" msgid "" -"Bed temperature when engineering plate is installed. Value 0 means the filament " -"does not support to print on the Engineering Plate" +"Bed temperature when engineering plate is installed. Value 0 means the " +"filament does not support to print on the Engineering Plate" msgstr "" "Temperatura del piano quando è installato il piatto Engineering. Il valore 0 " "significa che il filamento non supporta la stampa su piatto Engineering." @@ -7074,23 +7171,23 @@ msgid "Smooth PEI Plate / High Temp Plate" msgstr "Piastra PEI liscia / piastra ad alta temperatura" msgid "" -"Bed temperature when Smooth PEI Plate/High temperature plate is installed. Value " -"0 means the filament does not support to print on the Smooth PEI Plate/High Temp " -"Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" -"Temperatura del letto quando è installata la piastra PEI liscia/piastra ad alta " -"temperatura. Il valore 0 indica che il filamento non supporta la stampa sulla " -"piastra PEI liscia/piastra ad alta temperatura" +"Temperatura del letto quando è installata la piastra PEI liscia/piastra ad " +"alta temperatura. Il valore 0 indica che il filamento non supporta la stampa " +"sulla piastra PEI liscia/piastra ad alta temperatura" msgid "Textured PEI Plate" msgstr "Textured PEI Plate" msgid "" -"Bed temperature when Textured PEI Plate is installed. Value 0 means the filament " -"does not support to print on the Textured PEI Plate" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" msgstr "" -"Temperatura del piano quando è installato il piatto Textured PEI. Il valore 0 " -"significa che il filamento non è supportato sul piatto Textured PEI" +"Temperatura del piano quando è installato il piatto Textured PEI. Il valore " +"0 significa che il filamento non è supportato sul piatto Textured PEI" msgid "Volumetric speed limitation" msgstr "Limitazione velocità volumetrica" @@ -7108,26 +7205,26 @@ msgid "Min fan speed threshold" msgstr "Soglia minima velocità della ventola" msgid "" -"Part cooling fan speed will start to run at min speed when the estimated layer " -"time is no longer than the layer time in setting. When layer time is shorter than " -"threshold, fan speed is interpolated between the minimum and maximum fan speed " -"according to layer printing time" +"Part cooling fan speed will start to run at min speed when the estimated " +"layer time is no longer than the layer time in setting. When layer time is " +"shorter than threshold, fan speed is interpolated between the minimum and " +"maximum fan speed according to layer printing time" msgstr "" -"La ventola di raffreddamento della parte funzionerà alla velocità minima della " -"ventola quando la durata stimata del layer è superiore al valore di soglia. " -"Quando il tempo del layer è inferiore alla soglia, la velocità della ventola " -"verrà interpolata tra la velocità minima e massima della ventola in base al tempo " -"di stampa a layer." +"La ventola di raffreddamento della parte funzionerà alla velocità minima " +"della ventola quando la durata stimata del layer è superiore al valore di " +"soglia. Quando il tempo del layer è inferiore alla soglia, la velocità della " +"ventola verrà interpolata tra la velocità minima e massima della ventola in " +"base al tempo di stampa a layer." msgid "Max fan speed threshold" msgstr "Soglia massima velocità della ventola" msgid "" -"Part cooling fan speed will be max when the estimated layer time is shorter than " -"the setting value" +"Part cooling fan speed will be max when the estimated layer time is shorter " +"than the setting value" msgstr "" -"La ventola di raffreddamento funzionerà alla massima velocità quando il tempo " -"layer stimato è inferiore al valore di soglia." +"La ventola di raffreddamento funzionerà alla massima velocità quando il " +"tempo layer stimato è inferiore al valore di soglia." msgid "Auxiliary part cooling fan" msgstr "Ventola di raffreddamento della parte ausiliaria" @@ -7265,8 +7362,8 @@ msgid "" "presets would be deleted if the printer is deleted." msgstr "" "%d Preimpostazione filamento (Filament Preset) e %d Process Preset ( Process " -"Preset sono collegate a questa stampante. Tali impostazioni predefinite verranno " -"eliminate se la stampante viene eliminata." +"Preset sono collegate a questa stampante. Tali impostazioni predefinite " +"verranno eliminate se la stampante viene eliminata." msgid "Presets inherited by other presets can not be deleted!" msgstr "I preset ereditati da altri preset non possono essere eliminati!" @@ -7288,8 +7385,8 @@ msgstr[1] "The following presets will be deleted too:" msgid "" "Are you sure to delete the selected preset? \n" -"If the preset corresponds to a filament currently in use on your printer, please " -"reset the filament information for that slot." +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." msgstr "" "Sei sicuro di voler eliminare il preset selezionato? \n" "Se la preimpostazione corrisponde a un filamento attualmente in uso sulla " @@ -7311,7 +7408,8 @@ msgstr "" msgid "Click to drop current modify and reset to saved value." msgstr "" -"Fai clic per eliminare le modifiche correnti e ripristinare il valore salvato." +"Fai clic per eliminare le modifiche correnti e ripristinare il valore " +"salvato." msgid "Process Settings" msgstr "Impostazioni processo" @@ -7341,7 +7439,8 @@ msgid "Discard" msgstr "Cancella" msgid "Click the right mouse button to display the full text." -msgstr "Clicca il pulsante destro del mouse per visualizzare il testo completo." +msgstr "" +"Clicca il pulsante destro del mouse per visualizzare il testo completo." msgid "All changes will not be saved" msgstr "Nessuna modifica verrà salvata." @@ -7380,16 +7479,16 @@ msgstr "Preset \"%1%\" contiene modifiche non salvate:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it contains the " -"following unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it " +"contains the following unsaved changes:" msgstr "" -"Preset \"%1%\" non compatibile con il nuovo profilo della stampante e contiene " -"modifiche non salvate:" +"Preset \"%1%\" non compatibile con il nuovo profilo della stampante e " +"contiene modifiche non salvate:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it contains the " -"following unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it " +"contains the following unsaved changes:" msgstr "" "Preset \"%1%\" non compatibile con il nuovo profilo di processo e contiene " "modifiche non salvate:" @@ -7397,14 +7496,16 @@ msgstr "" #, boost-format msgid "" "You have changed some settings of preset \"%1%\". \n" -"Would you like to keep these changed settings (new value) after switching preset?" +"Would you like to keep these changed settings (new value) after switching " +"preset?" msgstr "" "Sono state modificate alcune impostazioni del preset \"%1%\". \n" "Vuoi mantenere le impostazioni (nuovo valore) dopo aver cambiato i preset?" msgid "" "You have changed some preset settings. \n" -"Would you like to keep these changed settings (new value) after switching preset?" +"Would you like to keep these changed settings (new value) after switching " +"preset?" msgstr "" "Sono stati modificati alcuni preset preimpostati. \n" "Vuoi mantenere le impostazioni (nuovo valore) dopo aver cambiato i preset?" @@ -7494,7 +7595,7 @@ msgstr "Chiudi %s" msgid "the Configuration package is incompatible with current APP." msgstr "" "Il pacchetto di configurazione non è compatibile con la versione corrente di " -"Bambu Studio." +"Orca Slicer." msgid "Configuration updates" msgstr "Aggiornamenti di configurazione" @@ -7510,25 +7611,26 @@ msgstr "Personalizzazione del ramming" msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the unloaded " -"filament so it does not prevent insertion of the new filament and can itself be " -"reinserted later. This phase is important and different materials can require " -"different extrusion speeds to get the good shape. For this reason, the extrusion " -"rates during ramming are adjustable.\n" +"extruder MM printer. Its purpose is to properly shape the end of the " +"unloaded filament so it does not prevent insertion of the new filament and " +"can itself be reinserted later. This phase is important and different " +"materials can require different extrusion speeds to get the good shape. For " +"this reason, the extrusion rates during ramming are adjustable.\n" "\n" -"This is an expert-level setting, incorrect adjustment will likely lead to jams, " -"extruder wheel grinding into filament etc." +"This is an expert-level setting, incorrect adjustment will likely lead to " +"jams, extruder wheel grinding into filament etc." msgstr "" -"Per Ramming si intende l'estrusione rapida appena prima di un cambio strumento in " -"una stampante MM con estrusore singolo. Il suo scopo è quello di dare una forma " -"corretta all'estremità del filamento scaricato, in modo che non impedisca " -"l'inserimento del nuovo filamento e possa essere reinserito successivamente. " -"Questa fase è importante e i diversi materiali possono richiedere velocità di " -"estrusione diverse per ottenere una buona forma. Per questo motivo, le velocità " -"di estrusione nella fase di ramming sono regolabili.\n" +"Per Ramming si intende l'estrusione rapida appena prima di un cambio " +"strumento in una stampante MM con estrusore singolo. Il suo scopo è quello " +"di dare una forma corretta all'estremità del filamento scaricato, in modo " +"che non impedisca l'inserimento del nuovo filamento e possa essere " +"reinserito successivamente. Questa fase è importante e i diversi materiali " +"possono richiedere velocità di estrusione diverse per ottenere una buona " +"forma. Per questo motivo, le velocità di estrusione nella fase di ramming " +"sono regolabili.\n" "\n" -"Si tratta di un'impostazione per esperti: una regolazione errata potrebbe causare " -"inceppamenti, la macinazione del filamento da parte dell'ingranaggio " +"Si tratta di un'impostazione per esperti: una regolazione errata potrebbe " +"causare inceppamenti, la macinazione del filamento da parte dell'ingranaggio " "dell'estrusore e così via." msgid "Total ramming time" @@ -7560,8 +7662,8 @@ msgid "" "changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" "Orca ricalcolava i volumi di spurgo ogni volta che il colore dei filamenti " -"cambiava. È possibile disabilitare il calcolo automatico nelle preferenze > di " -"Orca Slicer" +"cambiava. È possibile disabilitare il calcolo automatico nelle preferenze > " +"di Orca Slicer" msgid "Flushing volume (mm³) for each filament pair." msgstr "Volume di spurgo (mm³) per ogni coppia di filamento." @@ -7603,8 +7705,8 @@ msgstr "Login" msgid "The configuration package is changed in previous Config Guide" msgstr "" -"Il pacchetto di configurazione è stato modificato nella precedente Guida alla " -"configurazione" +"Il pacchetto di configurazione è stato modificato nella precedente Guida " +"alla configurazione" msgid "Configuration package changed" msgstr "Pacchetto di configurazione modificato" @@ -7629,7 +7731,8 @@ msgstr "Incolla dagli appunti" msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "" -"Mostra/nascondi la finestra di dialogo impostazioni dei dispositivi 3Dconnexion" +"Mostra/nascondi la finestra di dialogo impostazioni dei dispositivi " +"3Dconnexion" msgid "Switch table page" msgstr "Cambia pagina tabella" @@ -7659,13 +7762,13 @@ msgid "Shift+R" msgstr "Shift+R" msgid "" -"Auto orientates selected objects or all objects.If there are selected objects, it " -"just orientates the selected ones.Otherwise, it will orientates all objects in " -"the current disk." +"Auto orientates selected objects or all objects.If there are selected " +"objects, it just orientates the selected ones.Otherwise, it will orientates " +"all objects in the current disk." msgstr "" -"Questo orienta automaticamente gli oggetti selezionati o tutti gli oggetti. Se ci " -"sono oggetti selezionati, orienta solo quelli selezionati. Altrimenti, orienterà " -"tutti gli oggetti nel piatto corrente." +"Questo orienta automaticamente gli oggetti selezionati o tutti gli oggetti. " +"Se ci sono oggetti selezionati, orienta solo quelli selezionati. Altrimenti, " +"orienterà tutti gli oggetti nel piatto corrente." msgid "Shift+Tab" msgstr "Shift+Tab" @@ -7822,13 +7925,15 @@ msgstr "Eliminare oggetti, parti, modificatori " msgid "Select the object/part and press space to change the name" msgstr "" -"Seleziona l'oggetto/la parte e premi la barra spaziatrice per cambiare il nome" +"Seleziona l'oggetto/la parte e premi la barra spaziatrice per cambiare il " +"nome" msgid "Mouse click" msgstr "Clic del mouse" msgid "Select the object/part and mouse click to change the name" -msgstr "Seleziona l'oggetto/la parte e fai clic con il mouse per modificare il nome" +msgstr "" +"Seleziona l'oggetto/la parte e fai clic con il mouse per modificare il nome" msgid "Objects List" msgstr "Elenco oggetti" @@ -7840,7 +7945,8 @@ msgid "Vertical slider - Move active thumb Down" msgstr "Cursore di scorrimento verticale - Abbassa cursore attivo" msgid "Horizontal slider - Move active thumb Left" -msgstr "Cursore di scorrimento orizzontale - Sposta a sinistra il cursore attivo" +msgstr "" +"Cursore di scorrimento orizzontale - Sposta a sinistra il cursore attivo" msgid "Horizontal slider - Move active thumb Right" msgstr "Cursore di scorrimento orizzontale - Sposta a destra il cursore attivo" @@ -7867,9 +7973,11 @@ msgstr "Versione %s informazioni aggiornate:" msgid "Network plug-in update" msgstr "Aggiornamento del plug-in di rete" -msgid "Click OK to update the Network plug-in when Orca Slicer launches next time." +msgid "" +"Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" -"Clicca su OK per aggiornare il plug-in di rete al prossimo avvio di Bambu Studio." +"Clicca su OK per aggiornare il plug-in di rete al prossimo avvio di Bambu " +"Studio." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -7890,12 +7998,14 @@ msgstr "Conferma e aggiorna l'ugello" msgid "LAN Connection Failed (Sending print file)" msgstr "Connessione LAN fallita (invio del file di stampa)" -msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." -msgstr "Step 1, conferma che Orca Slicer e la tua stampante siano sulla stessa LAN." +msgid "" +"Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgstr "" +"Step 1, conferma che Orca Slicer e la tua stampante siano sulla stessa LAN." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values on " -"your printer, please correct them." +"Step 2, if the IP and Access Code below are different from the actual values " +"on your printer, please correct them." msgstr "" "Step 2, se l'IP e il codice di accesso riportati di seguito sono diversi dai " "valori effettivi sulla stampante, correggili." @@ -7964,8 +8074,8 @@ msgid "Updating successful" msgstr "Aggiornamento riuscito" msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not turn off " -"the power while the printer is updating." +"Are you sure you want to update? This will take about 10 minutes. Do not " +"turn off the power while the printer is updating." msgstr "" "Sei sicuro di voler aggiornare? Ci vorranno circa 10 minuti. Non spegnere " "l'alimentazione durante l'aggiornamento della stampante." @@ -7975,9 +8085,10 @@ msgid "" "continue. Do you want to update now? You can also update later from 'Upgrade " "firmware'." msgstr "" -"È stato rilevato un aggiornamento importante che deve essere eseguito prima che " -"la stampa possa continuare. Si desidera aggiornare ora? È possibile effettuare " -"l'aggiornamento anche in un secondo momento da \"Aggiorna firmware\"." +"È stato rilevato un aggiornamento importante che deve essere eseguito prima " +"che la stampa possa continuare. Si desidera aggiornare ora? È possibile " +"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna firmware" +"\"." msgid "" "The firmware version is abnormal. Repairing and updating are required before " @@ -7985,9 +8096,9 @@ msgid "" "update next time starting the studio." msgstr "" "La versione firmware è anomala. Prima di stampare, è necessario eseguire la " -"riparazione e l'aggiornamento. Si desidera aggiornare ora? È possibile eseguire " -"l'aggiornamento anche in un secondo momento sulla stampante o al prossimo avvio " -"di Orca Slicer." +"riparazione e l'aggiornamento. Si desidera aggiornare ora? È possibile " +"eseguire l'aggiornamento anche in un secondo momento sulla stampante o al " +"prossimo avvio di Orca Slicer." msgid "Extension Board" msgstr "Scheda di estensione" @@ -8045,7 +8156,8 @@ msgid "Copying of file %1% to %2% failed: %3%" msgstr "Copia del file %1% su %2% non riuscita: %3%" msgid "Need to check the unsaved changes before configuration updates." -msgstr "Controllare le modifiche non salvate prima di aggiornare la configurazione." +msgstr "" +"Controllare le modifiche non salvate prima di aggiornare la configurazione." msgid "Configuration package updated to " msgstr "Pacchetto di configurazione aggiornato a " @@ -8054,29 +8166,31 @@ msgid "Open G-code file:" msgstr "Apri un file G-code:" msgid "" -"One object has empty initial layer and can't be printed. Please Cut the bottom or " -"enable supports." +"One object has empty initial layer and can't be printed. Please Cut the " +"bottom or enable supports." msgstr "" "Un oggetto ha un livello iniziale vuoto e non può essere stampato. Taglia il " "fondo o abilita i supporti." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." -msgstr "L'oggetto ha layer vuoti compresi tra %1% e %2% e non può essere stampato." +msgstr "" +"L'oggetto ha layer vuoti compresi tra %1% e %2% e non può essere stampato." #, boost-format msgid "Object: %1%" msgstr "Oggetto: %1%" msgid "" -"Maybe parts of the object at these height are too thin, or the object has faulty " -"mesh" +"Maybe parts of the object at these height are too thin, or the object has " +"faulty mesh" msgstr "" "Le parti dell'oggetto a queste altezze potrebbero essere troppo sottili o " "l'oggetto potrebbe avere una mesh difettosa." msgid "No object can be printed. Maybe too small" -msgstr "Non è possibile stampare alcun oggetto. Potrebbe essere troppo piccolo." +msgstr "" +"Non è possibile stampare alcun oggetto. Potrebbe essere troppo piccolo." msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -8136,15 +8250,15 @@ msgstr "Multiplo" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "" -"Impossibile calcolare la larghezza della linea di %1%. Impossibile ottenere il " -"valore \"%2%\" " +"Impossibile calcolare la larghezza della linea di %1%. Impossibile ottenere " +"il valore \"%2%\" " msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height and " -"extrusion width" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" msgstr "" -"Spaziatura non valida fornita a Flow::with_spacing (), controlla l'altezza del " -"livello e la larghezza di estrusione" +"Spaziatura non valida fornita a Flow::with_spacing (), controlla l'altezza " +"del livello e la larghezza di estrusione" msgid "undefined error" msgstr "errore non definito" @@ -8240,10 +8354,11 @@ msgid "write callback failed" msgstr "scrittura callback fallita" #, boost-format -msgid "%1% is too close to exclusion area, there may be collisions when printing." +msgid "" +"%1% is too close to exclusion area, there may be collisions when printing." msgstr "" -"%1% è troppo vicino all'area di esclusione, potrebbero verificarsi collisioni " -"durante la stampa." +"%1% è troppo vicino all'area di esclusione, potrebbero verificarsi " +"collisioni durante la stampa." #, boost-format msgid "%1% is too close to others, and collisions may be caused." @@ -8255,8 +8370,8 @@ msgstr "%1% è troppo alto e si verificheranno collisioni." msgid " is too close to others, there may be collisions when printing." msgstr "" -" è troppo vicino agli altri; potrebbero verificarsi delle collisioni durante la " -"stampa." +" è troppo vicino agli altri; potrebbero verificarsi delle collisioni durante " +"la stampa." msgid " is too close to exclusion area, there may be collisions when printing." msgstr "" @@ -8270,29 +8385,31 @@ msgid " is too close to others, and collisions may be caused.\n" msgstr " è troppo vicino agli altri e possono verificarsi collisioni.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr " è troppo vicino a un'area di esclusione e si verificheranno collisioni.\n" +msgstr "" +" è troppo vicino a un'area di esclusione e si verificheranno collisioni.\n" msgid "" "Can not print multiple filaments which have large difference of temperature " -"together. Otherwise, the extruder and nozzle may be blocked or damaged during " -"printing" +"together. Otherwise, the extruder and nozzle may be blocked or damaged " +"during printing" msgstr "" -"Impossibile stampare filamenti che presentano grandi differenze di temperatura " -"insieme. In caso contrario, l'estrusore e il nozzle potrebbero bloccarsi o " -"danneggiarsi durante la stampa." +"Impossibile stampare filamenti che presentano grandi differenze di " +"temperatura insieme. In caso contrario, l'estrusore e il nozzle potrebbero " +"bloccarsi o danneggiarsi durante la stampa." msgid "No extrusions under current settings." msgstr "Nessuna estrusione con le impostazioni attuali." msgid "" -"Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." +"Smooth mode of timelapse is not supported when \"by object\" sequence is " +"enabled." msgstr "" -"La modalità fluida del timelapse non è supportata quando è abilitata la sequenza " -"\"per oggetto\"." +"La modalità fluida del timelapse non è supportata quando è abilitata la " +"sequenza \"per oggetto\"." msgid "" -"Please select \"By object\" print sequence to print multiple objects in spiral " -"vase mode." +"Please select \"By object\" print sequence to print multiple objects in " +"spiral vase mode." msgstr "" "Seleziona la sequenza di stampa \"Per oggetto\" per stampare più oggetti in " "modalità vaso a spirale." @@ -8310,37 +8427,38 @@ msgstr "L'oggetto %1% supera l'altezza massima del volume di stampa." #, boost-format msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds the " -"maximum build volume height." +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." msgstr "" -"Sebbene l'oggetto %1% rientri nel volume di stampa, il suo ultimo layer supera " -"l'altezza massima." +"Sebbene l'oggetto %1% rientri nel volume di stampa, il suo ultimo layer " +"supera l'altezza massima." msgid "" -"You might want to reduce the size of your model or change current print settings " -"and retry." +"You might want to reduce the size of your model or change current print " +"settings and retry." msgstr "" -"È possibile ridurre le dimensioni del modello o modificare le impostazioni di " -"stampa correnti e riprovare." +"È possibile ridurre le dimensioni del modello o modificare le impostazioni " +"di stampa correnti e riprovare." msgid "Variable layer height is not supported with Organic supports." msgstr "Layer ad altezza variabile non è compatibile con i Supporti Organici." msgid "" -"Different nozzle diameters and different filament diameters is not allowed when " -"prime tower is enabled." +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." msgstr "" -"Diametri degli ugelli diversi e diametri di filamento diversi non sono consentiti " -"quando la torre Prime è abilitata." +"Diametri degli ugelli diversi e diametri di filamento diversi non sono " +"consentiti quando la torre Prime è abilitata." msgid "" -"The Wipe Tower is currently only supported with the relative extruder addressing " -"(use_relative_e_distances=1)." +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." msgstr "" -"Attualmente la Torre di pulitura è supportata solo con l'indirizzamento relativo " -"dell'estrusore (use_relative_e_distances = 1)." +"Attualmente la Torre di pulitura è supportata solo con l'indirizzamento " +"relativo dell'estrusore (use_relative_e_distances = 1)." -msgid "Ooze prevention is currently not supported with the prime tower enabled." +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." msgstr "" "La prevenzione delle perdite (ooze prevention) attualmente non è supportata " "quando è abilitata la torre di priming." @@ -8349,47 +8467,49 @@ msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " "RepRapFirmware and Repetier G-code flavors." msgstr "" -"La torre di spurgo è attualmente supportata solo per le versioni Marlin, RepRap/" -"Sprinter, RepRapFirmware e Repetier G-code." +"La torre di spurgo è attualmente supportata solo per le versioni Marlin, " +"RepRap/Sprinter, RepRapFirmware e Repetier G-code." msgid "The prime tower is not supported in \"By object\" print." msgstr "La Prime Tower non è supportata nella stampa \"Per oggetto\"." msgid "" -"The prime tower is not supported when adaptive layer height is on. It requires " -"that all objects have the same layer height." +"The prime tower is not supported when adaptive layer height is on. It " +"requires that all objects have the same layer height." msgstr "" -"La Prime Tower non è supportata quando è attivo Layer adattativi. Richiede che " -"tutti gli oggetti abbiano la stessa altezza layer." +"La Prime Tower non è supportata quando è attivo Layer adattativi. Richiede " +"che tutti gli oggetti abbiano la stessa altezza layer." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" -"La Prime Tower richiede che il \"gap supporto\" sia un multiplo dell'altezza del " -"layer." +"La Prime Tower richiede che il \"gap supporto\" sia un multiplo dell'altezza " +"del layer." msgid "The prime tower requires that all objects have the same layer heights" msgstr "" -"La Prime Tower richiede che tutti gli oggetti abbiano la stessa altezza layer." +"La Prime Tower richiede che tutti gli oggetti abbiano la stessa altezza " +"layer." msgid "" -"The prime tower requires that all objects are printed over the same number of " -"raft layers" +"The prime tower requires that all objects are printed over the same number " +"of raft layers" msgstr "" -"La Prime Tower richiede che tutti gli oggetti siano stampati sullo stesso numero " -"di layers del raft." +"La Prime Tower richiede che tutti gli oggetti siano stampati sullo stesso " +"numero di layers del raft." msgid "" -"The prime tower requires that all objects are sliced with the same layer heights." +"The prime tower requires that all objects are sliced with the same layer " +"heights." msgstr "" "La Prime Tower richiede che tutti gli oggetti siano elaborati con la stessa " "altezza layer." msgid "" -"The prime tower is only supported if all objects have the same variable layer " -"height" +"The prime tower is only supported if all objects have the same variable " +"layer height" msgstr "" -"La Prime Tower è supportata solo se tutti gli oggetti hanno la stessa altezza " -"layer adattativi." +"La Prime Tower è supportata solo se tutti gli oggetti hanno la stessa " +"altezza layer adattativi." msgid "Too small line width" msgstr "Larghezza linea troppo piccola" @@ -8397,7 +8517,8 @@ msgstr "Larghezza linea troppo piccola" msgid "Too large line width" msgstr "Larghezza linea troppo grande" -msgid "The prime tower requires that support has the same layer height with object." +msgid "" +"The prime tower requires that support has the same layer height with object." msgstr "" "La Prime Tower richiede che il supporto abbia la stessa altezza layer " "dell'oggetto." @@ -8413,15 +8534,15 @@ msgid "" "Organic support branch diameter must not be smaller than 2x support material " "extrusion width." msgstr "" -"Il diametro della ramificazione del supporto organico non deve essere minore di 2 " -"volte rispetto alla larghezza dell'estrusione del materiale di supporto." +"Il diametro della ramificazione del supporto organico non deve essere minore " +"di 2 volte rispetto alla larghezza dell'estrusione del materiale di supporto." msgid "" "Organic support branch diameter must not be smaller than support tree tip " "diameter." msgstr "" -"Il diametro della ramificazione organica non deve essere inferiore al diametro " -"della punta del supporto ad albero." +"Il diametro della ramificazione organica non deve essere inferiore al " +"diametro della punta del supporto ad albero." msgid "" "Support enforcers are used but support is not enabled. Please enable support." @@ -8433,23 +8554,24 @@ msgid "Layer height cannot exceed nozzle diameter" msgstr "L'altezza del layer non può superare il diametro del nozzle." msgid "" -"Relative extruder addressing requires resetting the extruder position at each " -"layer to prevent loss of floating point accuracy. Add \"G92 E0\" to layer_gcode." +"Relative extruder addressing requires resetting the extruder position at " +"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " +"layer_gcode." msgstr "" "L'indirizzamento relativo dell'estrusore richiede la reimpostazione della " -"posizione dell'estrusore ad ogni strato per evitare la perdita di precisione in " -"virgola mobile. Aggiungi \"G92 E0\" a layer_gcode." +"posizione dell'estrusore ad ogni strato per evitare la perdita di precisione " +"in virgola mobile. Aggiungi \"G92 E0\" a layer_gcode." msgid "" -"\"G92 E0\" was found in before_layer_gcode, which is incompatible with absolute " -"extruder addressing." +"\"G92 E0\" was found in before_layer_gcode, which is incompatible with " +"absolute extruder addressing." msgstr "" "\"G92 E0\" trovato in before_layer_gcode, che è incompatibile con " "l'indirizzamento assoluto dell'estrusore." msgid "" -"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute extruder " -"addressing." +"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " +"extruder addressing." msgstr "" "\"G92 E0\" trovato in layer_gcode, che è incompatibile con l'indirizzamento " "assoluto dell'estrusore." @@ -8477,14 +8599,14 @@ msgid "Bed exclude area" msgstr "Zona piano esclusa" msgid "" -"Unprintable area in XY plane. For example, X1 Series printers use the front left " -"corner to cut filament during filament change. The area is expressed as polygon " -"by points in following format: \"XxY, XxY, ...\"" +"Unprintable area in XY plane. For example, X1 Series printers use the front " +"left corner to cut filament during filament change. The area is expressed as " +"polygon by points in following format: \"XxY, XxY, ...\"" msgstr "" "Area non stampabile nel piano XY. Ad esempio, le stampanti della serie X1 " "utilizzano l'angolo anteriore sinistro per tagliare il filamento durante il " -"cambio filamento. L'area è espressa come poligono di punti nel seguente formato: " -"\"XxY, XxY, ...\"" +"cambio filamento. L'area è espressa come poligono di punti nel seguente " +"formato: \"XxY, XxY, ...\"" msgid "Bed custom texture" msgstr "Texture piano personalizzata" @@ -8496,7 +8618,8 @@ msgid "Elephant foot compensation" msgstr "Compensazione zampa d'elefante" msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot effect" +"Shrink the initial layer on build plate to compensate for elephant foot " +"effect" msgstr "" "Questo restringe il primo layer sulla piatto per compensare l'effetto zampa " "d'elefante." @@ -8505,38 +8628,41 @@ msgid "Elephant foot compensation layers" msgstr "Layer di compensazione del piede elefante" msgid "" -"The number of layers on which the elephant foot compensation will be active. The " -"first layer will be shrunk by the elephant foot compensation value, then the next " -"layers will be linearly shrunk less, up to the layer indicated by this value." +"The number of layers on which the elephant foot compensation will be active. " +"The first layer will be shrunk by the elephant foot compensation value, then " +"the next layers will be linearly shrunk less, up to the layer indicated by " +"this value." msgstr "" -"Il numero di strati su cui sarà attivo la compensazione del piede degli elefanti. " -"Il primo strato verrà ridotto dal valore di compensazione del piede degli " -"elefanti, quindi gli strati successivi saranno ridotti in modo linearmente " -"ridotto, fino allo strato indicato da questo valore." +"Il numero di strati su cui sarà attivo la compensazione del piede degli " +"elefanti. Il primo strato verrà ridotto dal valore di compensazione del " +"piede degli elefanti, quindi gli strati successivi saranno ridotti in modo " +"linearmente ridotto, fino allo strato indicato da questo valore." msgid "layers" msgstr "layer" msgid "" -"Slicing height for each layer. Smaller layer height means more accurate and more " -"printing time" +"Slicing height for each layer. Smaller layer height means more accurate and " +"more printing time" msgstr "" -"Questa è l'altezza di ogni layer. Le altezze dei layers inferiori offrono una " -"maggiore precisione ma tempi di stampa più lunghi." +"Questa è l'altezza di ogni layer. Le altezze dei layers inferiori offrono " +"una maggiore precisione ma tempi di stampa più lunghi." msgid "Printable height" msgstr "Altezza di stampa" msgid "Maximum printable height which is limited by mechanism of printer" msgstr "" -"È l'altezza massima stampabile, limitata dall'altezza dell'area di costruzione." +"È l'altezza massima stampabile, limitata dall'altezza dell'area di " +"costruzione." msgid "Preferred orientation" msgstr "Orientamento preferito" msgid "Automatically orient stls on the Z-axis upon initial import" msgstr "" -"Orienta automaticamente gli stl sull'asse Z al momento dell'importazione iniziale" +"Orienta automaticamente gli stl sull'asse Z al momento dell'importazione " +"iniziale" msgid "Printer preset names" msgstr "Nomi dei preset della stampante" @@ -8545,32 +8671,33 @@ msgid "Hostname, IP or URL" msgstr "Nome host, IP o URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host behind " -"HAProxy with basic auth enabled can be accessed by putting the user name and " -"password into the URL in the following format: https://username:password@your-" -"octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer può caricare file di G-code su un host di stampa. Questo campo deve " -"contenere il nome dell'host, l'indirizzo IP o l'URL dell'istanza dell'host di " -"stampa. L'host di stampa dietro HAProxy con l'autenticazione di base abilitata è " -"accessibile inserendo il nome utente e la password nell'URL nel seguente formato: " -"https://username:password@your-octopi-address/" +"Orca Slicer può caricare file di G-code su un host di stampa. Questo campo " +"deve contenere il nome dell'host, l'indirizzo IP o l'URL dell'istanza " +"dell'host di stampa. L'host di stampa dietro HAProxy con l'autenticazione di " +"base abilitata è accessibile inserendo il nome utente e la password nell'URL " +"nel seguente formato: https://username:password@your-octopi-address/" msgid "Device UI" msgstr "Interfaccia utente del dispositivo" -msgid "Specify the URL of your device user interface if it's not same as print_host" +msgid "" +"Specify the URL of your device user interface if it's not same as print_host" msgstr "" -"Specificare l'URL dell'interfaccia utente del dispositivo se non corrisponde a " -"print_host" +"Specificare l'URL dell'interfaccia utente del dispositivo se non corrisponde " +"a print_host" msgid "API Key / Password" msgstr "Chiave API / Password" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" "Orca Slicer può caricare file G-code su un host di stampa. Questo campo deve " "contenere la chiave API o la password richiesta per l'autenticazione." @@ -8582,8 +8709,9 @@ msgid "HTTPS CA File" msgstr "File CA HTTPS" msgid "" -"Custom CA certificate file can be specified for HTTPS OctoPrint connections, in " -"crt/pem format. If left blank, the default OS CA certificate repository is used." +"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " +"in crt/pem format. If left blank, the default OS CA certificate repository " +"is used." msgstr "" "È possibile specificare un file di certificato CA personalizzato per le " "connessioni HTTPS di OctoPrint, in formato crt/pem. Se lasciato vuoto, viene " @@ -8604,8 +8732,8 @@ msgid "" "certificates if connection fails." msgstr "" "Ignora i controlli di revoca dei certificati HTTPS in caso di punti di " -"distribuzione mancanti o offline. Si potrebbe voler abilitare questa opzione per " -"i certificati autofirmati se la connessione fallisce." +"distribuzione mancanti o offline. Si potrebbe voler abilitare questa opzione " +"per i certificati autofirmati se la connessione fallisce." msgid "Names of presets related to the physical printer" msgstr "Nomi dei preset relativi alla stampante" @@ -8631,16 +8759,16 @@ msgid "Avoid crossing wall - Max detour length" msgstr "Evitare di attraversare le pareti - Lunghezza massima della deviazione" msgid "" -"Maximum detour distance for avoiding crossing wall. Don't detour if the detour " -"distance is large than this value. Detour length could be specified either as an " -"absolute value or as percentage (for example 50%) of a direct travel path. Zero " -"to disable" +"Maximum detour distance for avoiding crossing wall. Don't detour if the " +"detour distance is large than this value. Detour length could be specified " +"either as an absolute value or as percentage (for example 50%) of a direct " +"travel path. Zero to disable" msgstr "" "Distanza massima di deviazione per evitare di attraversare la parete: la " -"stampante non eseguirà alcuna deviazione se la distanza di deviazione è maggiore " -"di questo valore. La lunghezza della deviazione può essere specificata come " -"valore assoluto o come percentuale (ad esempio 50%) di uno spostamento. Un valore " -"pari a 0 lo disabiliterà." +"stampante non eseguirà alcuna deviazione se la distanza di deviazione è " +"maggiore di questo valore. La lunghezza della deviazione può essere " +"specificata come valore assoluto o come percentuale (ad esempio 50%) di uno " +"spostamento. Un valore pari a 0 lo disabiliterà." msgid "mm or %" msgstr "mm o %" @@ -8649,35 +8777,36 @@ msgid "Other layers" msgstr "Altri layer" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Cool Plate" msgstr "" -"Questa è la temperatura del piano per i layer (tranne il primo). Un valore pari a " -"0 indica che il filamento non supporta la stampa sul Cool Plate." +"Questa è la temperatura del piano per i layer (tranne il primo). Un valore " +"pari a 0 indica che il filamento non supporta la stampa sul Cool Plate." msgid "°C" msgstr "°C" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Engineering Plate" msgstr "" -"Questa è la temperatura del piano per i layer (tranne il primo). Un valore pari a " -"0 indica che il filamento non supporta la stampa su piatto Engineering." +"Questa è la temperatura del piano per i layer (tranne il primo). Un valore " +"pari a 0 indica che il filamento non supporta la stampa su piatto " +"Engineering." msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the High Temp Plate" msgstr "" -"Questa è la temperatura del piano per i layer (tranne il primo). Un valore pari a " -"0 indica che il filamento non supporta la stampa sul High Temp." +"Questa è la temperatura del piano per i layer (tranne il primo). Un valore " +"pari a 0 indica che il filamento non supporta la stampa sul High Temp." msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" msgstr "" -"Temperatura del piano dopo il primo layer. Il valore 0 significa che il filamento " -"non supportata la stampa su piatto Textured PEI." +"Temperatura del piano dopo il primo layer. Il valore 0 significa che il " +"filamento non supportata la stampa su piatto Textured PEI." msgid "Initial layer" msgstr "Primo layer" @@ -8686,29 +8815,29 @@ msgid "Initial layer bed temperature" msgstr "Temperatura del piano per il primo layer" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support " -"to print on the Cool Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Cool Plate" msgstr "" -"Questa è la temperatura del piatto del primo layer. Un valore pari a 0 indica che " -"il filamento non supporta la stampa sul piatto Cool Plate." +"Questa è la temperatura del piatto del primo layer. Un valore pari a 0 " +"indica che il filamento non supporta la stampa sul piatto Cool Plate." msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support " -"to print on the Engineering Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Engineering Plate" msgstr "" "Temperatura del piano quando è installato il piatto Cool Plate. Il valore 0 " "significa che il filamento non supporta la stampa su piatto Engineering." msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support " -"to print on the High Temp Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the High Temp Plate" msgstr "" -"Questa è la temperatura del piano del primo layer. Un valore pari a 0 indica che " -"il filamento non supporta la stampa sul piatto High Temp." +"Questa è la temperatura del piano del primo layer. Un valore pari a 0 indica " +"che il filamento non supporta la stampa sul piatto High Temp." msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support " -"to print on the Textured PEI Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" msgstr "" "La temperatura del piano del primo layer a 0 indica che il filamento non è " "supportato sul piatto Textured PEI." @@ -8726,19 +8855,21 @@ msgid "First layer print sequence" msgstr "Sequenza di stampa del primo strato" msgid "This G-code is inserted at every layer change before lifting z" -msgstr "Questo G-code viene inserito ad ogni cambio layer prima del sollevamento z." +msgstr "" +"Questo G-code viene inserito ad ogni cambio layer prima del sollevamento z." msgid "Bottom shell layers" msgstr "Layer guscio inferiore" msgid "" -"This is the number of solid layers of bottom shell, including the bottom surface " -"layer. When the thickness calculated by this value is thinner than bottom shell " -"thickness, the bottom shell layers will be increased" +"This is the number of solid layers of bottom shell, including the bottom " +"surface layer. When the thickness calculated by this value is thinner than " +"bottom shell thickness, the bottom shell layers will be increased" msgstr "" -"È il numero di layers solidi del guscio inferiore, compreso Il layer superficiale " -"inferiore. Se lo spessore calcolato da questo valore è più sottile dello spessore " -"del guscio inferiore, i layers del guscio inferiore verranno aumentati." +"È il numero di layers solidi del guscio inferiore, compreso Il layer " +"superficiale inferiore. Se lo spessore calcolato da questo valore è più " +"sottile dello spessore del guscio inferiore, i layers del guscio inferiore " +"verranno aumentati." msgid "Bottom shell thickness" msgstr "Spessore del guscio inferiore" @@ -8746,39 +8877,39 @@ msgstr "Spessore del guscio inferiore" msgid "" "The number of bottom solid layers is increased when slicing if the thickness " "calculated by bottom shell layers is thinner than this value. This can avoid " -"having too thin shell when layer height is small. 0 means that this setting is " -"disabled and thickness of bottom shell is absolutely determained by bottom shell " -"layers" +"having too thin shell when layer height is small. 0 means that this setting " +"is disabled and thickness of bottom shell is absolutely determained by " +"bottom shell layers" msgstr "" "Il numero di layers solidi inferiori aumenta durante l'elaborazione se lo " "spessore calcolato dei layers del guscio inferiore è più sottile di questo " -"valore. Questo può evitare di avere un guscio troppo sottile quando l'altezza " -"layer è ridotta. 0 significa che questa impostazione è disabilitata e lo spessore " -"del guscio inferiore è determinato semplicemente dal numero di layers del guscio " -"inferiore." +"valore. Questo può evitare di avere un guscio troppo sottile quando " +"l'altezza layer è ridotta. 0 significa che questa impostazione è " +"disabilitata e lo spessore del guscio inferiore è determinato semplicemente " +"dal numero di layers del guscio inferiore." msgid "Force cooling for overhang and bridge" msgstr "Forzare il raffreddamento per sbalzi e ponti" msgid "" -"Enable this option to optimize part cooling fan speed for overhang and bridge to " -"get better cooling" +"Enable this option to optimize part cooling fan speed for overhang and " +"bridge to get better cooling" msgstr "" "Abilita questa opzione per ottimizzare la velocità della ventola di " -"raffreddamento degli oggetti per sporgenze e ponti per ottenere un raffreddamento " -"migliore." +"raffreddamento degli oggetti per sporgenze e ponti per ottenere un " +"raffreddamento migliore." msgid "Fan speed for overhang" msgstr "Velocità della ventola per le sporgenze" msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang wall " -"which has large overhang degree. Forcing cooling for overhang and bridge can get " -"better quality for these part" +"Force part cooling fan to be this speed when printing bridge or overhang " +"wall which has large overhang degree. Forcing cooling for overhang and " +"bridge can get better quality for these part" msgstr "" -"Force part cooling fan to be this speed when printing bridges or overhang walls " -"which have a large overhang degree. Forcing cooling for overhangs and bridges can " -"achieve better quality for these parts." +"Force part cooling fan to be this speed when printing bridges or overhang " +"walls which have a large overhang degree. Forcing cooling for overhangs and " +"bridges can achieve better quality for these parts." msgid "Cooling overhang threshold" msgstr "Soglia di sbalzo per il raffreddamento" @@ -8786,86 +8917,87 @@ msgstr "Soglia di sbalzo per il raffreddamento" #, c-format msgid "" "Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width of the " -"line without support from lower layer. 0% means forcing cooling for all outer " -"wall no matter how much overhang degree" +"exceeds this value. Expressed as percentage which indicides how much width " +"of the line without support from lower layer. 0% means forcing cooling for " +"all outer wall no matter how much overhang degree" msgstr "" -"Forza la ventola di raffreddamento a una velocità specifica quando il grado di " -"sporgenza della parte stampata supera questo valore. Questo valore è espresso in " -"percentuale e indica la larghezza della linea senza il supporto dei layer. 0%% " -"significa forzare il raffreddamento per tutta la parete esterna, " -"indipendentemente dal grado di sporgenza." +"Forza la ventola di raffreddamento a una velocità specifica quando il grado " +"di sporgenza della parte stampata supera questo valore. Questo valore è " +"espresso in percentuale e indica la larghezza della linea senza il supporto " +"dei layer. 0%% significa forzare il raffreddamento per tutta la parete " +"esterna, indipendentemente dal grado di sporgenza." msgid "Bridge infill direction" msgstr "Direzione di riempimento del ponte" msgid "" -"Bridging angle override. If left to zero, the bridging angle will be calculated " -"automatically. Otherwise the provided angle will be used for external bridges. " -"Use 180°for zero angle." +"Bridging angle override. If left to zero, the bridging angle will be " +"calculated automatically. Otherwise the provided angle will be used for " +"external bridges. Use 180°for zero angle." msgstr "" "Sovrascrivere l'angolo del Bridge. Il valore 0 significa che l'angolo di " -"collegamento verrà calcolato automaticamente. Altrimenti l'angolo fornito verrà " -"utilizzato per i Bridge esterni. Usa 180° per un angolo zero." +"collegamento verrà calcolato automaticamente. Altrimenti l'angolo fornito " +"verrà utilizzato per i Bridge esterni. Usa 180° per un angolo zero." msgid "Bridge density" msgstr "Densità del ponte" msgid "Density of external bridges. 100% means solid bridge. Default is 100%." msgstr "" -"Densità di ponti esterni. 100% significa solido ponte. L'impostazione predefinita " -"è al 100%." +"Densità di ponti esterni. 100% significa solido ponte. L'impostazione " +"predefinita è al 100%." msgid "Bridge flow ratio" msgstr "Flusso del Bridge" msgid "" -"Decrease this value slightly(for example 0.9) to reduce the amount of material " -"for bridge, to improve sag" +"Decrease this value slightly(for example 0.9) to reduce the amount of " +"material for bridge, to improve sag" msgstr "" -"Diminuire leggermente questo valore (ad esempio 0.9) per ridurre la quantità di " -"materiale per il ponte e migliorare l'abbassamento dello stesso" +"Diminuire leggermente questo valore (ad esempio 0.9) per ridurre la quantità " +"di materiale per il ponte e migliorare l'abbassamento dello stesso" msgid "Internal bridge flow ratio" msgstr "Rapporto Flusso del ponte interno" msgid "" -"This value governs the thickness of the internal bridge layer. This is the first " -"layer over sparse infill. Decrease this value slightly (for example 0.9) to " -"improve surface quality over sparse infill." +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." msgstr "" "Questo valore governa lo spessore dello strato di ponte interno. Questo è il " -"primo strato sopra il riempimento sparso. Riduci leggermente questo valore (ad " -"esempio 0.9) per migliorare la qualità della superficie sopra il riempimento " -"sparso." +"primo strato sopra il riempimento sparso. Riduci leggermente questo valore " +"(ad esempio 0.9) per migliorare la qualità della superficie sopra il " +"riempimento sparso." msgid "Top surface flow ratio" msgstr "Rapporto di portata superficiale superiore" msgid "" -"This factor affects the amount of material for top solid infill. You can decrease " -"it slightly to have smooth surface finish" +"This factor affects the amount of material for top solid infill. You can " +"decrease it slightly to have smooth surface finish" msgstr "" -"Questo fattore influisce sulla quantità di materiale per il riempimento solido " -"superiore. Puoi diminuirlo leggermente per avere una finitura superficiale liscia" +"Questo fattore influisce sulla quantità di materiale per il riempimento " +"solido superiore. Puoi diminuirlo leggermente per avere una finitura " +"superficiale liscia" msgid "Bottom surface flow ratio" msgstr "Rapporto di flusso della superficie inferiore" msgid "This factor affects the amount of material for bottom solid infill" msgstr "" -"Questo fattore influisce sulla quantità di materiale per il riempimento solido " -"inferiore" +"Questo fattore influisce sulla quantità di materiale per il riempimento " +"solido inferiore" msgid "Precise wall(experimental)" msgstr "Parete precisa (sperimentale)" msgid "" -"Improve shell precision by adjusting outer wall spacing. This also improves layer " -"consistency." +"Improve shell precision by adjusting outer wall spacing. This also improves " +"layer consistency." msgstr "" -"Migliora la precisione del guscio regolando la spaziatura delle pareti esterne. " -"Questo migliora anche la consistenza degli strati." +"Migliora la precisione del guscio regolando la spaziatura delle pareti " +"esterne. Questo migliora anche la consistenza degli strati." msgid "Only one wall on top surfaces" msgstr "Solo una parete sulle superfici superiori" @@ -8882,29 +9014,31 @@ msgstr "Soglia a una parete" #, c-format, boost-format msgid "" -"If a top surface has to be printed and it's partially covered by another layer, " -"it won't be considered at a top layer where its width is below this value. This " -"can be useful to not let the 'one perimeter on top' trigger on surface that " -"should be covered only by perimeters. This value can be a mm or a % of the " -"perimeter extrusion width.\n" -"Warning: If enabled, artifacts can be created is you have some thin features on " -"the next layer, like letters. Set this setting to 0 to remove these artifacts." +"If a top surface has to be printed and it's partially covered by another " +"layer, it won't be considered at a top layer where its width is below this " +"value. This can be useful to not let the 'one perimeter on top' trigger on " +"surface that should be covered only by perimeters. This value can be a mm or " +"a % of the perimeter extrusion width.\n" +"Warning: If enabled, artifacts can be created is you have some thin features " +"on the next layer, like letters. Set this setting to 0 to remove these " +"artifacts." msgstr "" -"Se una superficie superiore deve essere stampata ed è parzialmente coperta da un " -"altro strato, non verrà considerata in un livello superiore in cui la sua " -"larghezza è inferiore a questo valore. Questo può essere utile per non lasciare " -"che il \"un perimetro in cima\" si attivi su una superficie che dovrebbe essere " -"coperta solo da perimetri. Questo valore può essere un mm o un % of della " -"larghezza di estrusione del perimetro.\n" +"Se una superficie superiore deve essere stampata ed è parzialmente coperta " +"da un altro strato, non verrà considerata in un livello superiore in cui la " +"sua larghezza è inferiore a questo valore. Questo può essere utile per non " +"lasciare che il \"un perimetro in cima\" si attivi su una superficie che " +"dovrebbe essere coperta solo da perimetri. Questo valore può essere un mm o " +"un % of della larghezza di estrusione del perimetro.\n" "Attenzione: se abilitato, è possibile creare artefatti se si hanno alcune " -"caratteristiche sottili sul livello successivo, come le lettere. Impostare questa " -"impostazione su 0 per rimuovere questi artefatti." +"caratteristiche sottili sul livello successivo, come le lettere. Impostare " +"questa impostazione su 0 per rimuovere questi artefatti." msgid "Only one wall on first layer" msgstr "Solo un perimetro sul primo layer" msgid "" -"Use only one wall on first layer, to give more space to the bottom infill pattern" +"Use only one wall on first layer, to give more space to the bottom infill " +"pattern" msgstr "" "Utilizzare un solo muro sul primo strato, per dare più spazio al modello di " "riempimento inferiore" @@ -8913,11 +9047,11 @@ msgid "Extra perimeters on overhangs" msgstr "Perimetri aggiuntivi sulle sporgenze (sperimentale)" msgid "" -"Create additional perimeter paths over steep overhangs and areas where bridges " -"cannot be anchored. " +"Create additional perimeter paths over steep overhangs and areas where " +"bridges cannot be anchored. " msgstr "" -"Creare percorsi perimetrali aggiuntivi su strapiombi ripidi e aree in cui i ponti " -"non possono essere ancorati. " +"Creare percorsi perimetrali aggiuntivi su strapiombi ripidi e aree in cui i " +"ponti non possono essere ancorati. " msgid "Reverse on odd" msgstr "Retromarcia su dispari" @@ -8926,18 +9060,19 @@ msgid "Overhang reversal" msgstr "Inversione di sbalzo" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse direction on " -"odd layers. This alternating pattern can drastically improve steep overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse " +"direction on odd layers. This alternating pattern can drastically improve " +"steep overhangs.\n" "\n" -"This setting can also help reduce part warping due to the reduction of stresses " -"in the part walls." +"This setting can also help reduce part warping due to the reduction of " +"stresses in the part walls." msgstr "" -"Estrudere i perimetri che hanno una parte su una sporgenza in direzione inversa " -"su layer dispari. Questo schema alternato può migliorare drasticamente gli " -"strapiombi ripidi.\n" +"Estrudere i perimetri che hanno una parte su una sporgenza in direzione " +"inversa su layer dispari. Questo schema alternato può migliorare " +"drasticamente gli strapiombi ripidi.\n" "\n" -"Questa impostazione può anche contribuire a ridurre la deformazione della parte " -"grazie alla riduzione delle sollecitazioni nelle pareti della parte." +"Questa impostazione può anche contribuire a ridurre la deformazione della " +"parte grazie alla riduzione delle sollecitazioni nelle pareti della parte." msgid "Reverse only internal perimeters" msgstr "Inversione solo perimetri interni" @@ -8946,28 +9081,30 @@ msgid "" "Apply the reverse perimeters logic only on internal perimeters. \n" "\n" "This setting greatly reduces part stresses as they are now distributed in " -"alternating directions. This should reduce part warping while also maintaining " -"external wall quality. This feature can be very useful for warp prone material, " -"like ABS/ASA, and also for elastic filaments, like TPU and Silk PLA. It can also " -"help reduce warping on floating regions over supports.\n" +"alternating directions. This should reduce part warping while also " +"maintaining external wall quality. This feature can be very useful for warp " +"prone material, like ABS/ASA, and also for elastic filaments, like TPU and " +"Silk PLA. It can also help reduce warping on floating regions over " +"supports.\n" "\n" -"For this setting to be the most effective, it is recomended to set the Reverse " -"Threshold to 0 so that all internal walls print in alternating directions on odd " -"layers irrespective of their overhang degree." +"For this setting to be the most effective, it is recomended to set the " +"Reverse Threshold to 0 so that all internal walls print in alternating " +"directions on odd layers irrespective of their overhang degree." msgstr "" "Applicare la logica dei perimetri inversi solo ai perimetri interni. \n" "\n" -"Questa impostazione riduce notevolmente le sollecitazioni delle parti poiché ora " -"sono distribuite in direzioni alternate. Ciò dovrebbe ridurre la deformazione " -"delle parti mantenendo al contempo la qualità delle pareti esterne. Questa " -"caratteristica può essere molto utile per materiali soggetti a deformazione, come " -"ABS/ASA, e anche per filamenti elastici, come TPU e Silk PLA. Può anche aiutare a " -"ridurre la deformazione sulle regioni fluttuanti sui supporti.\n" +"Questa impostazione riduce notevolmente le sollecitazioni delle parti poiché " +"ora sono distribuite in direzioni alternate. Ciò dovrebbe ridurre la " +"deformazione delle parti mantenendo al contempo la qualità delle pareti " +"esterne. Questa caratteristica può essere molto utile per materiali soggetti " +"a deformazione, come ABS/ASA, e anche per filamenti elastici, come TPU e " +"Silk PLA. Può anche aiutare a ridurre la deformazione sulle regioni " +"fluttuanti sui supporti.\n" "\n" -"Affinché questa impostazione sia la più efficace, si consiglia di impostare la " -"soglia inversa su 0 in modo che tutte le pareti interne vengano stampate in " -"direzioni alternate sugli strati dispari, indipendentemente dal loro grado di " -"sporgenza." +"Affinché questa impostazione sia la più efficace, si consiglia di impostare " +"la soglia inversa su 0 in modo che tutte le pareti interne vengano stampate " +"in direzioni alternate sugli strati dispari, indipendentemente dal loro " +"grado di sporgenza." msgid "Reverse threshold" msgstr "Soglia inversa" @@ -8977,12 +9114,12 @@ msgstr "Soglia di inversione a sbalzo" #, c-format, boost-format msgid "" -"Number of mm the overhang need to be for the reversal to be considered useful. " -"Can be a % of the perimeter width.\n" +"Number of mm the overhang need to be for the reversal to be considered " +"useful. Can be a % of the perimeter width.\n" "Value 0 enables reversal on every odd layers regardless." msgstr "" -"Numero di mm di sbalzo necessario affinché l'inversione sia considerata utile. " -"Può essere un % o della larghezza del perimetro.\n" +"Numero di mm di sbalzo necessario affinché l'inversione sia considerata " +"utile. Può essere un % o della larghezza del perimetro.\n" "Il valore 0 abilita l'inversione su tutti i livelli dispari a prescindere." msgid "Classic mode" @@ -8996,8 +9133,8 @@ msgstr "Rallenta in caso di sporgenze" msgid "Enable this option to slow printing down for different overhang degree" msgstr "" -"Abilita questa opzione per rallentare quando la stampa presenta sporgenze. Le " -"velocità per le diverse percentuali di sporgenza sono indicate di seguito." +"Abilita questa opzione per rallentare quando la stampa presenta sporgenze. " +"Le velocità per le diverse percentuali di sporgenza sono indicate di seguito." msgid "Slow down for curled perimeters" msgstr "Rallenta per perimetri arricciati" @@ -9025,8 +9162,8 @@ msgid "Internal" msgstr "Interno" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will be " -"calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridge. If the value is expressed as a percentage, it will " +"be calculated based on the bridge_speed. Default value is 150%." msgstr "" "Velocità del ponte interno. Se il valore è espresso in percentuale, verrà " "calcolato in base al bridge_speed. Il valore predefinito è 150%." @@ -9041,20 +9178,22 @@ msgid "Brim type" msgstr "Tipo di brim" msgid "" -"This controls the generation of the brim at outer and/or inner side of models. " -"Auto means the brim width is analysed and calculated automatically." +"This controls the generation of the brim at outer and/or inner side of " +"models. Auto means the brim width is analysed and calculated automatically." msgstr "" -"Questo controlla la generazione del brim esterno e/o interno dei modelli. Auto " -"significa che la larghezza del brim viene analizzata e calcolata automaticamente." +"Questo controlla la generazione del brim esterno e/o interno dei modelli. " +"Auto significa che la larghezza del brim viene analizzata e calcolata " +"automaticamente." msgid "Brim-object gap" msgstr "Distanza Brim-Oggetto " msgid "" -"A gap between innermost brim line and object can make brim be removed more easily" +"A gap between innermost brim line and object can make brim be removed more " +"easily" msgstr "" -"Questo crea un gap tra la linea interna del brim e l'oggetto per rendere il brim " -"più facile da rimuovere" +"Questo crea un gap tra la linea interna del brim e l'oggetto per rendere il " +"brim più facile da rimuovere" msgid "Brim ears" msgstr "Orecchie a tesa" @@ -9079,12 +9218,12 @@ msgid "Brim ear detection radius" msgstr "Raggio di rilevamento dell'orecchio della tesa" msgid "" -"The geometry will be decimated before dectecting sharp angles. This parameter " -"indicates the minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This " +"parameter indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" -"La geometria verrà decimata prima di rilevare gli angoli acuti. Questo parametro " -"indica la lunghezza minima dello scostamento per la decimazione.\n" +"La geometria verrà decimata prima di rilevare gli angoli acuti. Questo " +"parametro indica la lunghezza minima dello scostamento per la decimazione.\n" "0 per disattivare" msgid "Compatible machine" @@ -9104,8 +9243,8 @@ msgstr "Condizione dei profili di processo compatibili" msgid "Print sequence, layer by layer or object by object" msgstr "" -"Questo determina la sequenza di stampa, che consente di stampare layer per layer " -"o oggetto per oggetto." +"Questo determina la sequenza di stampa, che consente di stampare layer per " +"layer o oggetto per oggetto." msgid "By layer" msgstr "Per layer" @@ -9117,25 +9256,26 @@ msgid "Slow printing down for better layer cooling" msgstr "Rallenta stampa per un migliore raffreddamento layers" msgid "" -"Enable this option to slow printing speed down to make the final layer time not " -"shorter than the layer time threshold in \"Max fan speed threshold\", so that " -"layer can be cooled for longer time. This can improve the cooling quality for " -"needle and small details" +"Enable this option to slow printing speed down to make the final layer time " +"not shorter than the layer time threshold in \"Max fan speed threshold\", so " +"that layer can be cooled for longer time. This can improve the cooling " +"quality for needle and small details" msgstr "" -"Abilita questa opzione per rallentare la velocità di stampa in modo che il tempo " -"finale del layer non sia inferiore alla soglia di tempo nel valore \"Soglia di " -"velocità massima della ventola\", in modo che il layer possa essere raffreddato " -"più a lungo.\n" +"Abilita questa opzione per rallentare la velocità di stampa in modo che il " +"tempo finale del layer non sia inferiore alla soglia di tempo nel valore " +"\"Soglia di velocità massima della ventola\", in modo che il layer possa " +"essere raffreddato più a lungo.\n" "Ciò può migliorare la qualità per i piccoli dettagli" msgid "Normal printing" msgstr "Stampa normale" msgid "" -"The default acceleration of both normal printing and travel except initial layer" +"The default acceleration of both normal printing and travel except initial " +"layer" msgstr "" -"E' l'accelerazione predefinita sia per la stampa normale che per la corsa dopo il " -"primo layer." +"E' l'accelerazione predefinita sia per la stampa normale che per la corsa " +"dopo il primo layer." msgid "mm/s²" msgstr "mm/s²" @@ -9144,20 +9284,23 @@ msgid "Default filament profile" msgstr "Profilo filamento predefinito" msgid "Default filament profile when switch to this machine profile" -msgstr "Profilo filamento predefinito quando si passa a questo profilo macchina" +msgstr "" +"Profilo filamento predefinito quando si passa a questo profilo macchina" msgid "Default process profile" msgstr "Profilo di processo predefinito" msgid "Default process profile when switch to this machine profile" -msgstr "Profilo di processo predefinito quando si passa a questo profilo macchina" +msgstr "" +"Profilo di processo predefinito quando si passa a questo profilo macchina" msgid "Activate air filtration" msgstr "Attivare la filtrazione dell'aria" msgid "Activate for better air filtration. G-code command: M106 P3 S(0-255)" msgstr "" -"Attivare per una migliore filtrazione dell'aria. Comando G-code: M106 P3 S(0-255)" +"Attivare per una migliore filtrazione dell'aria. Comando G-code: M106 P3 " +"S(0-255)" msgid "Fan speed" msgstr "Velocità ventola" @@ -9179,55 +9322,55 @@ msgid "" "Close all cooling fan for the first certain layers. Cooling fan of the first " "layer used to be closed to get better build plate adhesion" msgstr "" -"Spegnere tutte le ventole di raffreddamento per i primi layer. Questo può servire " -"a migliorare l'adesione del piatto." +"Spegnere tutte le ventole di raffreddamento per i primi layer. Questo può " +"servire a migliorare l'adesione del piatto." msgid "Don't support bridges" msgstr "Non supportare i bridge" msgid "" -"Don't support the whole bridge area which make support very large. Bridge usually " -"can be printing directly without support if not very long" +"Don't support the whole bridge area which make support very large. Bridge " +"usually can be printing directly without support if not very long" msgstr "" -"This disables supporting bridges, which decreases the amount of support required. " -"Bridges can usually be printed directly without support over a reasonable " -"distance." +"This disables supporting bridges, which decreases the amount of support " +"required. Bridges can usually be printed directly without support over a " +"reasonable distance." msgid "Thick bridges" msgstr "Ponti spessi" msgid "" -"If enabled, bridges are more reliable, can bridge longer distances, but may look " -"worse. If disabled, bridges look better but are reliable just for shorter bridged " -"distances." +"If enabled, bridges are more reliable, can bridge longer distances, but may " +"look worse. If disabled, bridges look better but are reliable just for " +"shorter bridged distances." msgstr "" -"Se abilitato, i ponti sono più affidabili e possono colmare distanze maggiori, ma " -"potrebbero avere un aspetto peggiore. Se disattivato, i ponti hanno un aspetto " -"migliore ma sono affidabili solo per distanze più brevi." +"Se abilitato, i ponti sono più affidabili e possono colmare distanze " +"maggiori, ma potrebbero avere un aspetto peggiore. Se disattivato, i ponti " +"hanno un aspetto migliore ma sono affidabili solo per distanze più brevi." msgid "Thick internal bridges" msgstr "Ponti interni spessi" msgid "" -"If enabled, thick internal bridges will be used. It's usually recommended to have " -"this feature turned on. However, consider turning it off if you are using large " -"nozzles." +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." msgstr "" -"Se abilitato, verranno utilizzati ponti interni spessi. Di solito si consiglia di " -"attivare questa funzione. Tuttavia, considera di disattivarlo se stai utilizzando " -"ugelli di grandi dimensioni." +"Se abilitato, verranno utilizzati ponti interni spessi. Di solito si " +"consiglia di attivare questa funzione. Tuttavia, considera di disattivarlo " +"se stai utilizzando ugelli di grandi dimensioni." msgid "Max bridge length" msgstr "Lunghezza massima Bridge" msgid "" "Max length of bridges that don't need support. Set it to 0 if you want all " -"bridges to be supported, and set it to a very large value if you don't want any " -"bridges to be supported." +"bridges to be supported, and set it to a very large value if you don't want " +"any bridges to be supported." msgstr "" "Questa è la lunghezza massima dei ponti che non necessitano di supporto. " -"Impostalo su 0 se desideri che tutti i bridge siano supportati e impostalo su un " -"valore molto grande se non vuoi che nessun bridge sia supportato." +"Impostalo su 0 se desideri che tutti i bridge siano supportati e impostalo " +"su un valore molto grande se non vuoi che nessun bridge sia supportato." msgid "End G-code" msgstr "G-code finale" @@ -9239,8 +9382,8 @@ msgid "Between Object Gcode" msgstr "Tra Gcode oggetto" msgid "" -"Insert Gcode between objects. This parameter will only come into effect when you " -"print your models object by object" +"Insert Gcode between objects. This parameter will only come into effect when " +"you print your models object by object" msgstr "" "Inserire Gcode tra gli oggetti. Questo parametro avrà effetto solo quando si " "stampano i modelli oggetto per oggetto" @@ -9252,17 +9395,19 @@ msgid "Ensure vertical shell thickness" msgstr "Garantisci spessore verticale del guscio" msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell thickness " -"(top+bottom solid layers)" +"Add solid infill near sloping surfaces to guarantee the vertical shell " +"thickness (top+bottom solid layers)" msgstr "" "Aggiunge un riempimento solido in prossimità delle superfici inclinate per " -"garantire lo spessore verticale del guscio (layers solidi superiori e inferiori)." +"garantire lo spessore verticale del guscio (layers solidi superiori e " +"inferiori)." msgid "Top surface pattern" msgstr "Trama superfice superiore" msgid "Line pattern of top surface infill" -msgstr "Questo è la Trama lineare per il riempimento della superficie superiore." +msgstr "" +"Questo è la Trama lineare per il riempimento della superficie superiore." msgid "Concentric" msgstr "Concentrico" @@ -9293,30 +9438,30 @@ msgstr "Trama superficie inferiore" msgid "Line pattern of bottom surface infill, not bridge infill" msgstr "" -"Questo è la trama lineare del riempimento della superficie inferiore, escluso il " -"riempimento del ponte." +"Questo è la trama lineare del riempimento della superficie inferiore, " +"escluso il riempimento del ponte." msgid "Internal solid infill pattern" msgstr "Schema di riempimento solido interno" msgid "" -"Line pattern of internal solid infill. if the detect narrow internal solid infill " -"be enabled, the concentric pattern will be used for the small area." +"Line pattern of internal solid infill. if the detect narrow internal solid " +"infill be enabled, the concentric pattern will be used for the small area." msgstr "" -"Modello di linea del riempimento solido interno. Se l'opzione Rileva riempimento " -"solido interno Nattow è abilitata, il motivo concentrico verrà utilizzato per " -"l'area piccola." +"Modello di linea del riempimento solido interno. Se l'opzione Rileva " +"riempimento solido interno Nattow è abilitata, il motivo concentrico verrà " +"utilizzato per l'area piccola." msgid "" "Line width of outer wall. If expressed as a %, it will be computed over the " "nozzle diameter." msgstr "" -"Larghezza della linea della parete esterna. Se espresso come %, verrà calcolato " -"sul diametro dell'ugello." +"Larghezza della linea della parete esterna. Se espresso come %, verrà " +"calcolato sul diametro dell'ugello." msgid "" -"Speed of outer wall which is outermost and visible. It's used to be slower than " -"inner wall speed to get better quality." +"Speed of outer wall which is outermost and visible. It's used to be slower " +"than inner wall speed to get better quality." msgstr "" "E' la velocità di stampa per le pareti esterne dei pezzi. Queste vengono " "generalmente stampate più lentamente delle pareti interne per ottenere una " @@ -9328,21 +9473,22 @@ msgstr "Perimetri piccoli" msgid "" "This separate setting will affect the speed of perimeters having radius <= " "small_perimeter_threshold (usually holes). If expressed as percentage (for " -"example: 80%) it will be calculated on the outer wall speed setting above. Set to " -"zero for auto." +"example: 80%) it will be calculated on the outer wall speed setting above. " +"Set to zero for auto." msgstr "" -"Questa impostazione separata influenzerà la velocità dei perimetri con raggio <= " -"small_perimeter_threshold (di solito fori). Se espresso in percentuale (ad " -"esempio: 80%) verrà calcolato sull'impostazione della velocità della parete " -"esterna di cui sopra. Impostare su zero per auto." +"Questa impostazione separata influenzerà la velocità dei perimetri con " +"raggio <= small_perimeter_threshold (di solito fori). Se espresso in " +"percentuale (ad esempio: 80%) verrà calcolato sull'impostazione della " +"velocità della parete esterna di cui sopra. Impostare su zero per auto." msgid "Small perimeters threshold" msgstr "Soglia perimetrale ridotta" -msgid "This sets the threshold for small perimeter length. Default threshold is 0mm" +msgid "" +"This sets the threshold for small perimeter length. Default threshold is 0mm" msgstr "" -"In questo modo viene impostata la soglia per la lunghezza del perimetro ridotta. " -"La soglia predefinita è 0 mm" +"In questo modo viene impostata la soglia per la lunghezza del perimetro " +"ridotta. La soglia predefinita è 0 mm" msgid "Walls printing order" msgstr "Ordine Stampa Pareti" @@ -9350,46 +9496,50 @@ msgstr "Ordine Stampa Pareti" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls can " -"adhere to a neighouring perimeter while printing. However, this option results in " -"slightly reduced surface quality as the external perimeter is deformed by being " -"squashed to the internal perimeter.\n" +"Use Inner/Outer for best overhangs. This is because the overhanging walls " +"can adhere to a neighouring perimeter while printing. However, this option " +"results in slightly reduced surface quality as the external perimeter is " +"deformed by being squashed to the internal perimeter.\n" "\n" "Use Inner/Outer/Inner for the best external surface finish and dimensional " -"accuracy as the external wall is printed undisturbed from an internal perimeter. " -"However, overhang performance will reduce as there is no internal perimeter to " -"print the external wall against. This option requires a minimum of 3 walls to be " -"effective as it prints the internal walls from the 3rd perimeter onwards first, " -"then the external perimeter and, finally, the first internal perimeter. This " -"option is recomended against the Outer/Inner option in most cases. \n" +"accuracy as the external wall is printed undisturbed from an internal " +"perimeter. However, overhang performance will reduce as there is no internal " +"perimeter to print the external wall against. This option requires a minimum " +"of 3 walls to be effective as it prints the internal walls from the 3rd " +"perimeter onwards first, then the external perimeter and, finally, the first " +"internal perimeter. This option is recomended against the Outer/Inner option " +"in most cases. \n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy " "benefits of Inner/Outer/Inner option. However, the z seams will appear less " -"consistent as the first extrusion of a new layer starts on a visible surface.\n" +"consistent as the first extrusion of a new layer starts on a visible " +"surface.\n" "\n" " " msgstr "" "Sequenza di stampa delle pareti interne (interne) ed esterne (esterne). \n" "\n" -"Utilizzare Interno/Esterno per le migliori sporgenze. Questo perché le pareti " -"sporgenti possono aderire a un perimetro vicino durante la stampa. Tuttavia, " -"questa opzione comporta una qualità della superficie leggermente ridotta poiché " -"il perimetro esterno viene deformato dall'essere schiacciato sul perimetro " -"interno.\n" +"Utilizzare Interno/Esterno per le migliori sporgenze. Questo perché le " +"pareti sporgenti possono aderire a un perimetro vicino durante la stampa. " +"Tuttavia, questa opzione comporta una qualità della superficie leggermente " +"ridotta poiché il perimetro esterno viene deformato dall'essere schiacciato " +"sul perimetro interno.\n" "\n" -"Utilizzare Interno/Esterno/Interno per ottenere la migliore finitura superficiale " -"esterna e precisione dimensionale poiché la parete esterna viene stampata " -"indisturbata da un perimetro interno. Tuttavia, le prestazioni di sporgenza si " -"ridurranno in quanto non c'è un perimetro interno contro cui stampare la parete " -"esterna. Questa opzione richiede un minimo di 3 pareti per essere efficace in " -"quanto stampa prima le pareti interne dal 3° perimetro in poi, poi il perimetro " -"esterno e, infine, il primo perimetro interno. Nella maggior parte dei casi, " -"questa opzione è consigliata rispetto all'opzione Esterno/Interno. \n" +"Utilizzare Interno/Esterno/Interno per ottenere la migliore finitura " +"superficiale esterna e precisione dimensionale poiché la parete esterna " +"viene stampata indisturbata da un perimetro interno. Tuttavia, le " +"prestazioni di sporgenza si ridurranno in quanto non c'è un perimetro " +"interno contro cui stampare la parete esterna. Questa opzione richiede un " +"minimo di 3 pareti per essere efficace in quanto stampa prima le pareti " +"interne dal 3° perimetro in poi, poi il perimetro esterno e, infine, il " +"primo perimetro interno. Nella maggior parte dei casi, questa opzione è " +"consigliata rispetto all'opzione Esterno/Interno. \n" "\n" -"Utilizzare Esterno/Interno per ottenere la stessa qualità della parete esterna e " -"gli stessi vantaggi di precisione dimensionale dell'opzione Interno/Esterno/" -"Interno. Tuttavia, le giunzioni z appariranno meno coerenti quando la prima " -"estrusione di un nuovo livello inizia su una superficie visibile.\n" +"Utilizzare Esterno/Interno per ottenere la stessa qualità della parete " +"esterna e gli stessi vantaggi di precisione dimensionale dell'opzione " +"Interno/Esterno/Interno. Tuttavia, le giunzioni z appariranno meno coerenti " +"quando la prima estrusione di un nuovo livello inizia su una superficie " +"visibile.\n" " " msgid "Inner/Outer" @@ -9405,41 +9555,41 @@ msgid "Print infill first" msgstr "Stampa prima il riempimento" msgid "" -"Order of wall/infill. When the tickbox is unchecked the walls are printed first, " -"which works best in most cases.\n" +"Order of wall/infill. When the tickbox is unchecked the walls are printed " +"first, which works best in most cases.\n" "\n" "Printing walls first may help with extreme overhangs as the walls have the " -"neighbouring infill to adhere to. However, the infill will slighly push out the " -"printed walls where it is attached to them, resulting in a worse external surface " -"finish. It can also cause the infill to shine through the external surfaces of " -"the part." +"neighbouring infill to adhere to. However, the infill will slighly push out " +"the printed walls where it is attached to them, resulting in a worse " +"external surface finish. It can also cause the infill to shine through the " +"external surfaces of the part." msgstr "" -"Ordine di parete/tamponamento. Quando la casella di controllo è deselezionata, i " -"muri vengono stampati per primi, il che funziona meglio nella maggior parte dei " -"casi.\n" +"Ordine di parete/tamponamento. Quando la casella di controllo è " +"deselezionata, i muri vengono stampati per primi, il che funziona meglio " +"nella maggior parte dei casi.\n" "\n" -"La stampa delle pareti può aiutare con sporgenze estreme poiché le pareti hanno " -"il riempimento vicino a cui aderire. Tuttavia, il riempimento spingerà " -"leggermente fuori le pareti stampate dove è attaccato ad esse, con conseguente " -"peggioramento della finitura superficiale esterna. Può anche far brillare il " -"riempimento attraverso le superfici esterne della parte." +"La stampa delle pareti può aiutare con sporgenze estreme poiché le pareti " +"hanno il riempimento vicino a cui aderire. Tuttavia, il riempimento spingerà " +"leggermente fuori le pareti stampate dove è attaccato ad esse, con " +"conseguente peggioramento della finitura superficiale esterna. Può anche far " +"brillare il riempimento attraverso le superfici esterne della parte." msgid "Height to rod" msgstr "Altezza asta" msgid "" -"Distance of the nozzle tip to the lower rod. Used for collision avoidance in by-" -"object printing." +"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " +"by-object printing." msgstr "" -"Distanza dalla punta del nozzle all'asta inferiore. Utilizzato per evitare le " -"collisioni nella stampa di oggetto per oggetto." +"Distanza dalla punta del nozzle all'asta inferiore. Utilizzato per evitare " +"le collisioni nella stampa di oggetto per oggetto." msgid "Height to lid" msgstr "Altezza dal coperchio" msgid "" -"Distance of the nozzle tip to the lid. Used for collision avoidance in by-object " -"printing." +"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" +"object printing." msgstr "" "Distanza dalla punta del nozzle al coperchio. Utilizzato per evitare le " "collisioni nella stampa oggetto per oggetto." @@ -9464,60 +9614,63 @@ msgid "Flow ratio" msgstr "Rapporto di flusso" msgid "" -"The material may have volumetric change after switching between molten state and " -"crystalline state. This setting changes all extrusion flow of this filament in " -"gcode proportionally. Recommended value range is between 0.95 and 1.05. Maybe you " -"can tune this value to get nice flat surface when there has slight overflow or " -"underflow" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow" msgstr "" -"Il materiale può subire variazioni volumetriche dopo il passaggio dallo stato " -"fuso a quello cristallino. Questa impostazione modifica in modo proporzionale " -"tutti i flussi di estrusione di questo filamento in G-code. L'intervallo di " -"valori raccomandato è compreso tra 0,95 e 1,05. È possibile regolare questo " -"valore per ottenere una superficie piatta se si verifica una leggera sovra-" -"estrusione o sotto-estrusione." +"Il materiale può subire variazioni volumetriche dopo il passaggio dallo " +"stato fuso a quello cristallino. Questa impostazione modifica in modo " +"proporzionale tutti i flussi di estrusione di questo filamento in G-code. " +"L'intervallo di valori raccomandato è compreso tra 0,95 e 1,05. È possibile " +"regolare questo valore per ottenere una superficie piatta se si verifica una " +"leggera sovra-estrusione o sotto-estrusione." msgid "Enable pressure advance" msgstr "Abilita l'avanzamento della pressione" msgid "" -"Enable pressure advance, auto calibration result will be overwriten once enabled." +"Enable pressure advance, auto calibration result will be overwriten once " +"enabled." msgstr "" -"Abilita l'avanzamento della pressione, il risultato della calibrazione automatica " -"verrà sovrascritto una volta abilitato." +"Abilita l'avanzamento della pressione, il risultato della calibrazione " +"automatica verrà sovrascritto una volta abilitato." msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" -msgstr "Anticipo di pressione (Klipper) AKA Fattore di avanzamento lineare (Marlin)" +msgstr "" +"Anticipo di pressione (Klipper) AKA Fattore di avanzamento lineare (Marlin)" msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, it " -"will be computed over the nozzle diameter." +"Default line width if other line widths are set to 0. If expressed as a %, " +"it will be computed over the nozzle diameter." msgstr "" -"Larghezza di linea predefinita se le altre larghezze di linea sono impostate su " -"0. Se espresso come %, verrà calcolato sul diametro dell'ugello." +"Larghezza di linea predefinita se le altre larghezze di linea sono impostate " +"su 0. Se espresso come %, verrà calcolato sul diametro dell'ugello." msgid "Keep fan always on" msgstr "Mantieni la ventola sempre accesa" msgid "" -"If enable this setting, part cooling fan will never be stoped and will run at " -"least at minimum speed to reduce the frequency of starting and stoping" +"If enable this setting, part cooling fan will never be stoped and will run " +"at least at minimum speed to reduce the frequency of starting and stoping" msgstr "" -"Se si attiva questa impostazione, la ventola di raffreddamento non si arresterà " -"mai del tutto, ma funzionerà almeno alla velocità minima per ridurre la frequenza " -"di avvio e arresto." +"Se si attiva questa impostazione, la ventola di raffreddamento non si " +"arresterà mai del tutto, ma funzionerà almeno alla velocità minima per " +"ridurre la frequenza di avvio e arresto." msgid "Layer time" msgstr "Layer time" msgid "" -"Part cooling fan will be enabled for layers of which estimated time is shorter " -"than this value. Fan speed is interpolated between the minimum and maximum fan " -"speeds according to layer printing time" +"Part cooling fan will be enabled for layers of which estimated time is " +"shorter than this value. Fan speed is interpolated between the minimum and " +"maximum fan speeds according to layer printing time" msgstr "" -"La ventola di raffreddamento parziale verrà attivata per i layers in cui il tempo " -"stimato è inferiore a questo valore. La velocità della ventola viene interpolata " -"tra la velocità minima e massima della ventola in base al tempo di stampa a layer." +"La ventola di raffreddamento parziale verrà attivata per i layers in cui il " +"tempo stimato è inferiore a questo valore. La velocità della ventola viene " +"interpolata tra la velocità minima e massima della ventola in base al tempo " +"di stampa a layer." msgid "Default color" msgstr "Colore predefinito" @@ -9535,21 +9688,21 @@ msgid "Required nozzle HRC" msgstr "Necessita nozzle HRC" msgid "" -"Minimum HRC of nozzle required to print the filament. Zero means no checking of " -"nozzle's HRC." +"Minimum HRC of nozzle required to print the filament. Zero means no checking " +"of nozzle's HRC." msgstr "" -"HRC minimo del nozzle richiesto per stampare il filamento. Un valore pari a 0 " -"significa che non viene controllato l'HRC del nozzle." +"HRC minimo del nozzle richiesto per stampare il filamento. Un valore pari a " +"0 significa che non viene controllato l'HRC del nozzle." msgid "" -"This setting stands for how much volume of filament can be melted and extruded " -"per second. Printing speed is limited by max volumetric speed, in case of too " -"high and unreasonable speed setting. Can't be zero" +"This setting stands for how much volume of filament can be melted and " +"extruded per second. Printing speed is limited by max volumetric speed, in " +"case of too high and unreasonable speed setting. Can't be zero" msgstr "" -"Questa indica il volume del filamento che può essere fuso ed estruso al secondo. " -"La velocità di stampa è limitata dalla velocità volumetrica massima, in caso di " -"impostazione della velocità troppo alta e irragionevole. Questo valore non può " -"essere zero." +"Questa indica il volume del filamento che può essere fuso ed estruso al " +"secondo. La velocità di stampa è limitata dalla velocità volumetrica " +"massima, in caso di impostazione della velocità troppo alta e irragionevole. " +"Questo valore non può essere zero." msgid "mm³/s" msgstr "mm³/s" @@ -9559,8 +9712,8 @@ msgstr "Durata caricamento filamento" msgid "Time to load new filament when switch filament. For statistics only" msgstr "" -"Tempo di caricamento del nuovo filamento quando si cambia filamento, solo a fini " -"statistici." +"Tempo di caricamento del nuovo filamento quando si cambia filamento, solo a " +"fini statistici." msgid "Filament unload time" msgstr "Durata scaricamento filamento" @@ -9571,8 +9724,8 @@ msgstr "" "statistici." msgid "" -"Filament diameter is used to calculate extrusion in gcode, so it's important and " -"should be accurate" +"Filament diameter is used to calculate extrusion in gcode, so it's important " +"and should be accurate" msgstr "" "Il diametro del filamento viene utilizzato per calcolare le variabili di " "estrusione nel G-code, quindi è importante che sia accurato e preciso." @@ -9582,18 +9735,18 @@ msgstr "Restringimento" #, c-format, boost-format msgid "" -"Enter the shrinkage percentage that the filament will get after cooling (94% if " -"you measure 94mm instead of 100mm). The part will be scaled in xy to compensate. " -"Only the filament used for the perimeter is taken into account.\n" -"Be sure to allow enough space between objects, as this compensation is done after " -"the checks." +"Enter the shrinkage percentage that the filament will get after cooling " +"(94% if you measure 94mm instead of 100mm). The part will be scaled in xy to " +"compensate. Only the filament used for the perimeter is taken into account.\n" +"Be sure to allow enough space between objects, as this compensation is done " +"after the checks." msgstr "" "Inserisci la percentuale di restringimento che il filamento otterrà dopo il " -"raffreddamento (94% if misuri 94 mm invece di 100 mm). La parte verrà scalata in " -"xy per compensare. Viene preso in considerazione solo il filamento utilizzato per " -"il perimetro.\n" -"Assicurarsi di lasciare uno spazio sufficiente tra gli oggetti, poiché questa " -"compensazione viene eseguita dopo i controlli." +"raffreddamento (94% if misuri 94 mm invece di 100 mm). La parte verrà " +"scalata in xy per compensare. Viene preso in considerazione solo il " +"filamento utilizzato per il perimetro.\n" +"Assicurarsi di lasciare uno spazio sufficiente tra gli oggetti, poiché " +"questa compensazione viene eseguita dopo i controlli." msgid "Loading speed" msgstr "Velocità di caricamento" @@ -9611,26 +9764,28 @@ msgid "Unloading speed" msgstr "Velocità di scaricamento" msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect initial " -"part of unloading just after ramming)." +"Speed used for unloading the filament on the wipe tower (does not affect " +"initial part of unloading just after ramming)." msgstr "" -"Velocità usata per scaricare il filamento sulla torre di pulitura (non influisce " -"sulla parte iniziale dello scaricamento dopo il ramming)." +"Velocità usata per scaricare il filamento sulla torre di pulitura (non " +"influisce sulla parte iniziale dello scaricamento dopo il ramming)." msgid "Unloading speed at the start" msgstr "Velocità iniziale di scaricamento" -msgid "Speed used for unloading the tip of the filament immediately after ramming." +msgid "" +"Speed used for unloading the tip of the filament immediately after ramming." msgstr "" -"Velocità utilizzata per scaricare la punta del filamento immediatamente dopo il " -"ramming." +"Velocità utilizzata per scaricare la punta del filamento immediatamente dopo " +"il ramming." msgid "Delay after unloading" msgstr "Ritardo dopo lo scarico" msgid "" -"Time to wait after the filament is unloaded. May help to get reliable toolchanges " -"with flexible materials that may need more time to shrink to original dimensions." +"Time to wait after the filament is unloaded. May help to get reliable " +"toolchanges with flexible materials that may need more time to shrink to " +"original dimensions." msgstr "" "Tempo di attesa dopo lo scarico del filamento. Può aiutare ad ottenere cambi " "affidabili con materiali flessibili che potrebbero richiedere più tempo per " @@ -9640,8 +9795,8 @@ msgid "Number of cooling moves" msgstr "Numero di movimenti di raffreddamento" msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. Specify " -"desired number of these moves." +"Filament is cooled by being moved back and forth in the cooling tubes. " +"Specify desired number of these moves." msgstr "" "Il filamento è raffreddato venendo spostato avanti e indietro nei tubi di " "raffreddamento. Specificare il numero desiderato di questi movimenti." @@ -9651,24 +9806,25 @@ msgstr "Velocità del primo movimento di raffreddamento" msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "" -"I movimenti di raffreddamento accelerano gradualmente partendo da questa velocità." +"I movimenti di raffreddamento accelerano gradualmente partendo da questa " +"velocità." msgid "Minimal purge on wipe tower" msgstr "Spurgo minimo sulla torre di pulitura" msgid "" -"After a tool change, the exact position of the newly loaded filament inside the " -"nozzle may not be known, and the filament pressure is likely not yet stable. " -"Before purging the print head into an infill or a sacrificial object, Orca Slicer " -"will always prime this amount of material into the wipe tower to produce " -"successive infill or sacrificial object extrusions reliably." +"After a tool change, the exact position of the newly loaded filament inside " +"the nozzle may not be known, and the filament pressure is likely not yet " +"stable. Before purging the print head into an infill or a sacrificial " +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" -"Dopo un cambio di strumento, l'esatta posizione del filamento appena caricato " -"dentro l'ugello potrebbe essere sconosciuta, e la pressione del filamento " -"probabilmente non è ancora stabile. Prima di spurgare la testina di stampa nel " -"riempimento o in un oggetto sacrificale, Orca Slicer posizionerà questo materiale " -"in una torre di pulitura al fine di ottenere una successiva estrusione affidabile " -"su oggetto sacrificale o riempimento." +"Dopo un cambio di strumento, l'esatta posizione del filamento appena " +"caricato dentro l'ugello potrebbe essere sconosciuta, e la pressione del " +"filamento probabilmente non è ancora stabile. Prima di spurgare la testina " +"di stampa nel riempimento o in un oggetto sacrificale, Orca Slicer " +"posizionerà questo materiale in una torre di pulitura al fine di ottenere " +"una successiva estrusione affidabile su oggetto sacrificale o riempimento." msgid "Speed of the last cooling move" msgstr "Velocità dell'ultimo movimento di raffreddamento" @@ -9679,41 +9835,42 @@ msgstr "" msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " -"filament during a tool change (when executing the T code). This time is added to " -"the total print time by the G-code time estimator." +"filament during a tool change (when executing the T code). This time is " +"added to the total print time by the G-code time estimator." msgstr "" -"Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per il " -"caricamento del nuovo filamento durante il cambio strumento (quando viene " -"eseguito il T code). Questa durata viene aggiunta alla stima del tempo totale di " -"stampa del G-code." +"Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per " +"il caricamento del nuovo filamento durante il cambio strumento (quando viene " +"eseguito il T code). Questa durata viene aggiunta alla stima del tempo " +"totale di stampa del G-code." msgid "Ramming parameters" msgstr "Parametri del ramming" msgid "" -"This string is edited by RammingDialog and contains ramming specific parameters." +"This string is edited by RammingDialog and contains ramming specific " +"parameters." msgstr "" -"Questa stringa viene controllata da RammingDialog e contiene parametri specifici " -"del ramming." +"Questa stringa viene controllata da RammingDialog e contiene parametri " +"specifici del ramming." msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " -"filament during a tool change (when executing the T code). This time is added to " -"the total print time by the G-code time estimator." +"filament during a tool change (when executing the T code). This time is " +"added to the total print time by the G-code time estimator." msgstr "" -"Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per lo " -"scaricamento del nuovo filamento durante il cambio strumento (quando viene " -"eseguito il T code). Questa durata viene aggiunta alla stima del tempo totale di " -"stampa del G-code." +"Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per " +"lo scaricamento del nuovo filamento durante il cambio strumento (quando " +"viene eseguito il T code). Questa durata viene aggiunta alla stima del tempo " +"totale di stampa del G-code." msgid "Enable ramming for multitool setups" msgstr "Abilita ramming per configurazioni multitool" msgid "" "Perform ramming when using multitool printer (i.e. when the 'Single Extruder " -"Multimaterial' in Printer Settings is unchecked). When checked, a small amount of " -"filament is rapidly extruded on the wipe tower just before the toolchange. This " -"option is only used when the wipe tower is enabled." +"Multimaterial' in Printer Settings is unchecked). When checked, a small " +"amount of filament is rapidly extruded on the wipe tower just before the " +"toolchange. This option is only used when the wipe tower is enabled." msgstr "" "Esegue il ramming quando si usa una stampante multitool (Ad esempio, quando " "l'opzione \"Multimateriale a estrusore singolo\" nelle impostazioni della " @@ -9749,30 +9906,33 @@ msgstr "Tipo di filamento" msgid "Soluble material" msgstr "Materiale solubile" -msgid "Soluble material is commonly used to print support and support interface" +msgid "" +"Soluble material is commonly used to print support and support interface" msgstr "" -"Il materiale solubile viene comunemente utilizzato per stampare il supporto e " -"l'interfaccia di supporto" +"Il materiale solubile viene comunemente utilizzato per stampare il supporto " +"e l'interfaccia di supporto" msgid "Support material" msgstr "Materiale di supporto" -msgid "Support material is commonly used to print support and support interface" +msgid "" +"Support material is commonly used to print support and support interface" msgstr "" -"Il materiale di supporto viene comunemente utilizzato per stampare il supporto e " -"le interfacce di supporto." +"Il materiale di supporto viene comunemente utilizzato per stampare il " +"supporto e le interfacce di supporto." msgid "Softening temperature" msgstr "Temperatura di ammorbidimento" msgid "" -"The material softens at this temperature, so when the bed temperature is equal to " -"or greater than it, it's highly recommended to open the front door and/or remove " -"the upper glass to avoid cloggings." +"The material softens at this temperature, so when the bed temperature is " +"equal to or greater than it, it's highly recommended to open the front door " +"and/or remove the upper glass to avoid cloggings." msgstr "" -"Il materiale si ammorbidisce a questa temperatura, quindi quando la temperatura " -"del letto è uguale o superiore ad essa, si consiglia vivamente di aprire la porta " -"d'ingresso e/o rimuovere il vetro superiore per evitare ostruzioni." +"Il materiale si ammorbidisce a questa temperatura, quindi quando la " +"temperatura del letto è uguale o superiore ad essa, si consiglia vivamente " +"di aprire la porta d'ingresso e/o rimuovere il vetro superiore per evitare " +"ostruzioni." msgid "Price" msgstr "Prezzo" @@ -9796,8 +9956,8 @@ msgid "Infill direction" msgstr "Direzione riempimento" msgid "" -"Angle for sparse infill pattern, which controls the start or main direction of " -"line" +"Angle for sparse infill pattern, which controls the start or main direction " +"of line" msgstr "" "Questo è l'angolo della trama di riempimento che controlla l'inizio o la " "direzione principale delle linee." @@ -9807,8 +9967,8 @@ msgstr "Densità riempimento" #, c-format, boost-format msgid "" -"Density of internal sparse infill, 100% turns all sparse infill into solid infill " -"and internal solid infill pattern will be used" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" msgstr "" "Densità del riempimento sparso interno, 100% turns verrà utilizzato tutto il " "riempimento sparso nel riempimento solido e il modello di riempimento solido " @@ -9855,25 +10015,27 @@ msgstr "Lunghezza dell'ancora di riempimento sparsa" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " -"additional perimeter. If expressed as percentage (example: 15%) it is calculated " -"over infill extrusion width. Orca Slicer tries to connect two close infill lines " -"to a short perimeter segment. If no such perimeter segment shorter than " -"infill_anchor_max is found, the infill line is connected to a perimeter segment " -"at just one side and the length of the perimeter segment taken is limited to this " -"parameter, but no longer than anchor_length_max. \n" -"Set this parameter to zero to disable anchoring perimeters connected to a single " -"infill line." +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." msgstr "" -"Collegare una linea di riempimento a un perimetro interno con un breve segmento " -"di un perimetro aggiuntivo. Se espresso in percentuale (esempio: 15%) viene " -"calcolato sulla larghezza di estrusione del riempimento. Orca Slicer tenta di " -"collegare due linee di riempimento ravvicinate a un breve segmento perimetrale. " -"Se non viene trovato alcun segmento perimetrale più corto di infill_anchor_max, " -"la linea di riempimento viene collegata a un segmento perimetrale su un solo lato " -"e la lunghezza del segmento perimetrale preso è limitata a questo parametro, ma " -"non più lunga di anchor_length_max. \n" -"Impostare questo parametro su zero per disabilitare i perimetri di ancoraggio " -"collegati a una singola linea di riempimento." +"Collegare una linea di riempimento a un perimetro interno con un breve " +"segmento di un perimetro aggiuntivo. Se espresso in percentuale (esempio: " +"15%) viene calcolato sulla larghezza di estrusione del riempimento. Orca " +"Slicer tenta di collegare due linee di riempimento ravvicinate a un breve " +"segmento perimetrale. Se non viene trovato alcun segmento perimetrale più " +"corto di infill_anchor_max, la linea di riempimento viene collegata a un " +"segmento perimetrale su un solo lato e la lunghezza del segmento perimetrale " +"preso è limitata a questo parametro, ma non più lunga di " +"anchor_length_max. \n" +"Impostare questo parametro su zero per disabilitare i perimetri di " +"ancoraggio collegati a una singola linea di riempimento." msgid "0 (no open anchors)" msgstr "0 (senza ancore aperte)" @@ -9886,25 +10048,26 @@ msgstr "Lunghezza massima dell'ancoraggio del riempimento" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " -"additional perimeter. If expressed as percentage (example: 15%) it is calculated " -"over infill extrusion width. Orca Slicer tries to connect two close infill lines " -"to a short perimeter segment. If no such perimeter segment shorter than this " -"parameter is found, the infill line is connected to a perimeter segment at just " -"one side and the length of the perimeter segment taken is limited to " -"infill_anchor, but no longer than this parameter. \n" +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" -"Collegare una linea di riempimento a un perimetro interno con un breve segmento " -"di un perimetro aggiuntivo. Se espresso in percentuale (esempio: 15%) viene " -"calcolato sulla larghezza di estrusione del riempimento. Orca Slicer tenta di " -"collegare due linee di riempimento ravvicinate a un breve segmento perimetrale. " -"Se non viene trovato alcun segmento perimetrale più corto di questo parametro, la " -"linea di riempimento viene collegata a un segmento perimetrale su un solo lato e " -"la lunghezza del segmento perimetrale preso è limitata a infill_anchor, ma non " -"più lunga di questo parametro. \n" -"Se impostato a 0, verrà utilizzato il vecchio algoritmo per la connessione di " -"riempimento, che dovrebbe creare lo stesso risultato di 1000 e 0." +"Collegare una linea di riempimento a un perimetro interno con un breve " +"segmento di un perimetro aggiuntivo. Se espresso in percentuale (esempio: " +"15%) viene calcolato sulla larghezza di estrusione del riempimento. Orca " +"Slicer tenta di collegare due linee di riempimento ravvicinate a un breve " +"segmento perimetrale. Se non viene trovato alcun segmento perimetrale più " +"corto di questo parametro, la linea di riempimento viene collegata a un " +"segmento perimetrale su un solo lato e la lunghezza del segmento perimetrale " +"preso è limitata a infill_anchor, ma non più lunga di questo parametro. \n" +"Se impostato a 0, verrà utilizzato il vecchio algoritmo per la connessione " +"di riempimento, che dovrebbe creare lo stesso risultato di 1000 e 0." msgid "0 (Simple connect)" msgstr "0 (Connessione semplice)" @@ -9919,11 +10082,12 @@ msgid "Acceleration of travel moves" msgstr "Accelerazione massima per gli spostamenti" msgid "" -"Acceleration of top surface infill. Using a lower value may improve top surface " -"quality" +"Acceleration of top surface infill. Using a lower value may improve top " +"surface quality" msgstr "" -"Questa è l'accelerazione del riempimento della superficie superiore. L'utilizzo " -"di un valore inferiore può migliorare la qualità della superficie superiore." +"Questa è l'accelerazione del riempimento della superficie superiore. " +"L'utilizzo di un valore inferiore può migliorare la qualità della superficie " +"superiore." msgid "Acceleration of outer wall. Using a lower value can improve quality" msgstr "" @@ -9931,25 +10095,26 @@ msgstr "" "migliorare la qualità." msgid "" -"Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it " -"will be calculated based on the outer wall acceleration." +"Acceleration of bridges. If the value is expressed as a percentage (e.g. " +"50%), it will be calculated based on the outer wall acceleration." msgstr "" -"Accelerazione dei ponti. Se il valore è espresso in percentuale (ad es. 50%), " -"verrà calcolato in base all'accelerazione della parete esterna." +"Accelerazione dei ponti. Se il valore è espresso in percentuale (ad es. " +"50%), verrà calcolato in base all'accelerazione della parete esterna." msgid "mm/s² or %" msgstr "mm/s o %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e.g. " -"100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage (e." +"g. 100%), it will be calculated based on the default acceleration." msgstr "" -"Accelerazione del riempimento rado. Se il valore è espresso in percentuale (ad " -"esempio 100%), verrà calcolato in base all'accelerazione predefinita." +"Accelerazione del riempimento rado. Se il valore è espresso in percentuale " +"(ad esempio 100%), verrà calcolato in base all'accelerazione predefinita." msgid "" -"Acceleration of internal solid infill. If the value is expressed as a percentage " -"(e.g. 100%), it will be calculated based on the default acceleration." +"Acceleration of internal solid infill. If the value is expressed as a " +"percentage (e.g. 100%), it will be calculated based on the default " +"acceleration." msgstr "" "Accelerazione del riempimento solido interno. Se il valore è espresso in " "percentuale (ad esempio 100%), verrà calcolato in base all'accelerazione " @@ -9972,8 +10137,10 @@ msgid "accel_to_decel" msgstr "accel_to_decel" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" -msgstr "La max_accel_to_decel di Klipper sarà adattata a questo %% di accelerazione" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" +"La max_accel_to_decel di Klipper sarà adattata a questo %% di accelerazione" msgid "Jerk of outer walls" msgstr "Strappo delle pareti esterne" @@ -9994,21 +10161,21 @@ msgid "Jerk for travel" msgstr "Jerk per i viaggi" msgid "" -"Line width of initial layer. If expressed as a %, it will be computed over the " -"nozzle diameter." +"Line width of initial layer. If expressed as a %, it will be computed over " +"the nozzle diameter." msgstr "" -"Larghezza della linea del livello iniziale. Se espresso come %, verrà calcolato " -"sul diametro dell'ugello." +"Larghezza della linea del livello iniziale. Se espresso come %, verrà " +"calcolato sul diametro dell'ugello." msgid "Initial layer height" msgstr "Altezza primo layer" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly can " -"improve build plate adhension" +"Height of initial layer. Making initial layer height to be thick slightly " +"can improve build plate adhension" msgstr "" -"Questa è l'altezza layer iniziale. L'aumento dell'altezza del primo layer può " -"migliorare l'adesione al piatto" +"Questa è l'altezza layer iniziale. L'aumento dell'altezza del primo layer " +"può migliorare l'adesione al piatto" msgid "Speed of initial layer except the solid infill part" msgstr "" @@ -10034,28 +10201,30 @@ msgid "" "The first few layers are printed slower than normal. The speed is gradually " "increased in a linear fashion over the specified number of layers." msgstr "" -"I primi strati vengono stampati più lentamente del normale. La velocità viene " -"gradualmente aumentata in modo lineare sul numero di strati specificato." +"I primi strati vengono stampati più lentamente del normale. La velocità " +"viene gradualmente aumentata in modo lineare sul numero di strati " +"specificato." msgid "Initial layer nozzle temperature" msgstr "Temperatura nozzle primo layer" msgid "Nozzle temperature to print initial layer when using this filament" -msgstr "Temperatura del nozzle per la stampa del primo layer con questo filamento" +msgstr "" +"Temperatura del nozzle per la stampa del primo layer con questo filamento" msgid "Full fan speed at layer" msgstr "Massima velocità della ventola al layer" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer\". " -"\"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " "\"close_fan_the_first_x_layers\", in which case the fan will be running at " "maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocità della ventola aumenterà linearmente da zero al livello " -"\"close_fan_the_first_x_layers\" al massimo al livello \"full_fan_speed_layer\". " -"\"full_fan_speed_layer\" verrà ignorato se inferiore a " +"\"close_fan_the_first_x_layers\" al massimo al livello \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" verrà ignorato se inferiore a " "\"close_fan_the_first_x_layers\", nel qual caso la ventola funzionerà alla " "massima velocità consentita al livello \"close_fan_the_first_x_layers\" + 1." @@ -10063,8 +10232,8 @@ msgid "Support interface fan speed" msgstr "Supporta la velocità della ventola dell'interfaccia" msgid "" -"This fan speed is enforced during all support interfaces, to be able to weaken " -"their bonding with a high fan speed.\n" +"This fan speed is enforced during all support interfaces, to be able to " +"weaken their bonding with a high fan speed.\n" "Set to -1 to disable this override.\n" "Can only be overriden by disable_fan_first_layers." msgstr "" @@ -10075,12 +10244,12 @@ msgstr "" "Può essere sovrascritto solo da disable_fan_first_layers." msgid "" -"Randomly jitter while printing the wall, so that the surface has a rough look. " -"This setting controls the fuzzy position" +"Randomly jitter while printing the wall, so that the surface has a rough " +"look. This setting controls the fuzzy position" msgstr "" -"Questa impostazione fa vibrare casualmente la testa di stampa durante la stampa " -"su pareti, in modo che la superficie abbia un aspetto ruvido. Questa impostazione " -"controlla la posizione fuzzy Skin." +"Questa impostazione fa vibrare casualmente la testa di stampa durante la " +"stampa su pareti, in modo che la superficie abbia un aspetto ruvido. Questa " +"impostazione controlla la posizione fuzzy Skin." msgid "Contour" msgstr "Contorno" @@ -10095,17 +10264,20 @@ msgid "Fuzzy skin thickness" msgstr "Spessore superficie crespa" msgid "" -"The width within which to jitter. It's adversed to be below outer wall line width" +"The width within which to jitter. It's adversed to be below outer wall line " +"width" msgstr "" -"Ampiezza del tremolio: si consiglia di mantenerla inferiore alla larghezza della " -"linea della parete esterna." +"Ampiezza del tremolio: si consiglia di mantenerla inferiore alla larghezza " +"della linea della parete esterna." msgid "Fuzzy skin point distance" msgstr "Distanza punti superficie crespa" msgid "" -"The average diatance between the random points introducded on each line segment" -msgstr "La distanza media tra i punti casuali introdotti su ogni segmento di linea" +"The average diatance between the random points introducded on each line " +"segment" +msgstr "" +"La distanza media tra i punti casuali introdotti su ogni segmento di linea" msgid "Apply fuzzy skin to first layer" msgstr "Applicare la pelle sfocata sul primo strato" @@ -10123,11 +10295,11 @@ msgid "Filter out gaps smaller than the threshold specified" msgstr "Filtra gli spazi più piccoli della soglia specificata" msgid "" -"Speed of gap infill. Gap usually has irregular line width and should be printed " -"more slowly" +"Speed of gap infill. Gap usually has irregular line width and should be " +"printed more slowly" msgstr "" -"E' la velocità per il riempimento del gap. I gap hanno solitamente una larghezza " -"linea irregolare e devono essere stampate più lentamente." +"E' la velocità per il riempimento del gap. I gap hanno solitamente una " +"larghezza linea irregolare e devono essere stampate più lentamente." msgid "Arc fitting" msgstr "Arc fitting" @@ -10136,22 +10308,24 @@ msgid "" "Enable this to get a G-code file which has G2 and G3 moves. And the fitting " "tolerance is same with resolution" msgstr "" -"Abilita questa funzione per ottenere un file G-code con gli spostamenti circolari " -"in G2 e G3. La tolleranza di adattamento è la stessa della risoluzione" +"Abilita questa funzione per ottenere un file G-code con gli spostamenti " +"circolari in G2 e G3. La tolleranza di adattamento è la stessa della " +"risoluzione" msgid "Add line number" msgstr "Aggiungi numero di riga" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" msgstr "" -"Abilita questa opzione per aggiungere il numero di riga (Nx) all'inizio di ogni " -"riga del G-code" +"Abilita questa opzione per aggiungere il numero di riga (Nx) all'inizio di " +"ogni riga del G-code" msgid "Scan first layer" msgstr "Scansiona Primo layer" msgid "" -"Enable this to enable the camera on printer to check the quality of first layer" +"Enable this to enable the camera on printer to check the quality of first " +"layer" msgstr "" "Attivare questa opzione per consentire alla fotocamera della stampante di " "verificare la qualità del primo layer." @@ -10214,34 +10388,35 @@ msgstr "Migliore posizione dell'oggetto" msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "" -"Migliore posizione di disposizione automatica nell'intervallo [0,1] w.r.t. forma " -"del letto." +"Migliore posizione di disposizione automatica nell'intervallo [0,1] w.r.t. " +"forma del letto." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code command: " -"M106 P2 S(0-255)." +"Enable this option if machine has auxiliary part cooling fan. G-code " +"command: M106 P2 S(0-255)." msgstr "" -"Abilitare questa opzione se la macchina è dotata di ventola di raffreddamento " -"della parte ausiliaria. Comando G-code: M106 P2 S(0-255)." +"Abilitare questa opzione se la macchina è dotata di ventola di " +"raffreddamento della parte ausiliaria. Comando G-code: M106 P2 S(0-255)." msgid "" -"Start the fan this number of seconds earlier than its target start time (you can " -"use fractional seconds). It assumes infinite acceleration for this time " +"Start the fan this number of seconds earlier than its target start time (you " +"can use fractional seconds). It assumes infinite acceleration for this time " "estimation, and will only take into account G1 and G0 moves (arc fitting is " "unsupported).\n" -"It won't move fan comands from custom gcodes (they act as a sort of 'barrier').\n" -"It won't move fan comands into the start gcode if the 'only custom start gcode' " -"is activated.\n" +"It won't move fan comands from custom gcodes (they act as a sort of " +"'barrier').\n" +"It won't move fan comands into the start gcode if the 'only custom start " +"gcode' is activated.\n" "Use 0 to deactivate." msgstr "" -"Avviare la ventola questo numero di secondi prima dell'ora di inizio prevista (è " -"possibile utilizzare i secondi frazionari). Si presume un'accelerazione infinita " -"per questa stima del tempo e si terrà conto solo dei movimenti G1 e G0 " -"(l'adattamento dell'arco non è supportato).\n" -"Non sposterà i comandi dei fan dai gcode personalizzati (agiscono come una sorta " -"di \"barriera\").\n" -"Non sposterà i comandi delle ventole nel gcode di avvio se è attivato l'opzione " -"\"solo gcode di avvio personalizzato\".\n" +"Avviare la ventola questo numero di secondi prima dell'ora di inizio " +"prevista (è possibile utilizzare i secondi frazionari). Si presume " +"un'accelerazione infinita per questa stima del tempo e si terrà conto solo " +"dei movimenti G1 e G0 (l'adattamento dell'arco non è supportato).\n" +"Non sposterà i comandi dei fan dai gcode personalizzati (agiscono come una " +"sorta di \"barriera\").\n" +"Non sposterà i comandi delle ventole nel gcode di avvio se è attivato " +"l'opzione \"solo gcode di avvio personalizzato\".\n" "Utilizzare 0 per disattivare." msgid "Only overhangs" @@ -10254,18 +10429,18 @@ msgid "Fan kick-start time" msgstr "Tempo di avvio della ventola" msgid "" -"Emit a max fan speed command for this amount of seconds before reducing to target " -"speed to kick-start the cooling fan.\n" -"This is useful for fans where a low PWM/power may be insufficient to get the fan " -"started spinning from a stop, or to get the fan up to speed faster.\n" +"Emit a max fan speed command for this amount of seconds before reducing to " +"target speed to kick-start the cooling fan.\n" +"This is useful for fans where a low PWM/power may be insufficient to get the " +"fan started spinning from a stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." msgstr "" "Emettere un comando di velocità massima della ventola per questo numero di " "secondi prima di ridurre la velocità target per avviare la ventola di " "raffreddamento.\n" "Ciò è utile per le ventole in cui un PWM/potenza bassa potrebbe essere " -"insufficiente per far partire la ventola da fermo o per far sì che la ventola " -"raggiunga la velocità più velocemente.\n" +"insufficiente per far partire la ventola da fermo o per far sì che la " +"ventola raggiunga la velocità più velocemente.\n" "Impostare su 0 per disattivare." msgid "Time cost" @@ -10284,8 +10459,8 @@ msgid "" "This option is enabled if machine support controlling chamber temperature\n" "G-code command: M141 S(0-255)" msgstr "" -"Questa opzione è abilitata se la macchina supporta il controllo della temperatura " -"della camera\n" +"Questa opzione è abilitata se la macchina supporta il controllo della " +"temperatura della camera\n" "Comando G-code: M141 S(0-255)" msgid "Support air filtration" @@ -10311,64 +10486,65 @@ msgid "Label objects" msgstr "Etichetta oggetti" msgid "" -"Enable this to add comments into the G-Code labeling print moves with what object " -"they belong to, which is useful for the Octoprint CancelObject plugin. This " -"settings is NOT compatible with Single Extruder Multi Material setup and Wipe " -"into Object / Wipe into Infill." +"Enable this to add comments into the G-Code labeling print moves with what " +"object they belong to, which is useful for the Octoprint CancelObject " +"plugin. This settings is NOT compatible with Single Extruder Multi Material " +"setup and Wipe into Object / Wipe into Infill." msgstr "" -"Attivalo per aggiungere commenti nel G-Code etichettando i movimenti di stampa " -"secondo l'appartenenza, utile per il plugin Octoprint CancelObject. Questa " -"impostazione NON è compatibile con una configurazione Multi Material ad estrusore " -"singolo e con Pulitura nell'oggetto / Pulitura nel riempimento." +"Attivalo per aggiungere commenti nel G-Code etichettando i movimenti di " +"stampa secondo l'appartenenza, utile per il plugin Octoprint CancelObject. " +"Questa impostazione NON è compatibile con una configurazione Multi Material " +"ad estrusore singolo e con Pulitura nell'oggetto / Pulitura nel riempimento." msgid "Exclude objects" msgstr "Escludi oggetti" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "Abilita questa opzione per aggiungere il comando EXCLUDE OBJECT nel g-code" +msgstr "" +"Abilita questa opzione per aggiungere il comando EXCLUDE OBJECT nel g-code" msgid "Verbose G-code" msgstr "G-code verboso" msgid "" "Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the file " -"could make your firmware slow down." +"descriptive text. If you print from SD card, the additional weight of the " +"file could make your firmware slow down." msgstr "" "Abilita per ottenere un file G-code commentato, con un testo descrittivo per " -"ciascuna linea. Se stampi da memoria SD, il peso aggiuntivo del file potrebbe " -"rallentare il firmware." +"ciascuna linea. Se stampi da memoria SD, il peso aggiuntivo del file " +"potrebbe rallentare il firmware." msgid "Infill combination" msgstr "Combinazione riempimento" msgid "" -"Automatically Combine sparse infill of several layers to print together to reduce " -"time. Wall is still printed with original layer height." +"Automatically Combine sparse infill of several layers to print together to " +"reduce time. Wall is still printed with original layer height." msgstr "" -"Automatically combine sparse infill of several layers to print together in order " -"to reduce time. Walls are still printed with original layer height." +"Automatically combine sparse infill of several layers to print together in " +"order to reduce time. Walls are still printed with original layer height." msgid "Filament to print internal sparse infill." msgstr "Questo è il filamento per la stampa del riempimento interno." msgid "" -"Line width of internal sparse infill. If expressed as a %, it will be computed " -"over the nozzle diameter." +"Line width of internal sparse infill. If expressed as a %, it will be " +"computed over the nozzle diameter." msgstr "" -"Larghezza della linea del riempimento interno sparso. Se espresso come %, verrà " -"calcolato sul diametro dell'ugello." +"Larghezza della linea del riempimento interno sparso. Se espresso come %, " +"verrà calcolato sul diametro dell'ugello." msgid "Infill/Wall overlap" msgstr "Sovrapposizione riempimento/parete" msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. The " -"percentage value is relative to line width of sparse infill" +"Infill area is enlarged slightly to overlap with wall for better bonding. " +"The percentage value is relative to line width of sparse infill" msgstr "" -"Ciò consente di allargare leggermente l'area di riempimento per sovrapporla alle " -"pareti per una migliore adesione. Il valore percentuale è relativo alla larghezza " -"della linea del riempimento." +"Ciò consente di allargare leggermente l'area di riempimento per sovrapporla " +"alle pareti per una migliore adesione. Il valore percentuale è relativo alla " +"larghezza della linea del riempimento." msgid "Speed of internal sparse infill" msgstr "E' la velocità del riempimento interno." @@ -10377,12 +10553,13 @@ msgid "Interface shells" msgstr "Pareti interfaccia" msgid "" -"Force the generation of solid shells between adjacent materials/volumes. Useful " -"for multi-extruder prints with translucent materials or manual soluble support " -"material" +"Force the generation of solid shells between adjacent materials/volumes. " +"Useful for multi-extruder prints with translucent materials or manual " +"soluble support material" msgstr "" -"Forza la generazione di perimetri solidi tra volumi o materiali adiacenti. Utile " -"per stampe multi estrusore con materiali traslucidi o supporti solubili manuali" +"Forza la generazione di perimetri solidi tra volumi o materiali adiacenti. " +"Utile per stampe multi estrusore con materiali traslucidi o supporti " +"solubili manuali" msgid "Maximum width of a segmented region" msgstr "Larghezza massima di una regione segmentata" @@ -10397,17 +10574,18 @@ msgstr "Profondità di incastro di una regione segmentata" msgid "Interlocking depth of a segmented region. Zero disables this feature." msgstr "" -"Profondità di incastro di una regione segmentata. Zero disabilita questa funzione." +"Profondità di incastro di una regione segmentata. Zero disabilita questa " +"funzione." msgid "Ironing Type" msgstr "Tipo di stiratura" msgid "" -"Ironing is using small flow to print on same height of surface again to make flat " -"surface more smooth. This setting controls which layer being ironed" +"Ironing is using small flow to print on same height of surface again to make " +"flat surface more smooth. This setting controls which layer being ironed" msgstr "" -"La stiratura utilizza un flusso ridotto per stampare alla stessa altezza di una " -"superficie per rendere le superfici piane più lisce. Questa impostazione " +"La stiratura utilizza un flusso ridotto per stampare alla stessa altezza di " +"una superficie per rendere le superfici piane più lisce. Questa impostazione " "controlla quali layer vengono stirati." msgid "No ironing" @@ -10455,21 +10633,22 @@ msgid "Ironing angle" msgstr "Angolo di stiratura" msgid "" -"The angle ironing is done at. A negative number disables this function and uses " -"the default method." +"The angle ironing is done at. A negative number disables this function and " +"uses the default method." msgstr "" "La stiratura angolare viene eseguita a. Un numero negativo disabilita questa " "funzione e utilizza il metodo predefinito." msgid "This gcode part is inserted at every layer change after lift z" -msgstr "Questo G-code viene inserito a ogni cambio di layer dopo l'elevazione z." +msgstr "" +"Questo G-code viene inserito a ogni cambio di layer dopo l'elevazione z." msgid "Supports silent mode" msgstr "Modalità silenziosa" msgid "" -"Whether the machine supports silent mode in which machine use lower acceleration " -"to print" +"Whether the machine supports silent mode in which machine use lower " +"acceleration to print" msgstr "" "Se la macchina supporta la modalità silenziosa, in cui la macchina utilizza " "un'accelerazione inferiore per stampare in modo più silenzioso" @@ -10485,11 +10664,12 @@ msgid "" "This option will be ignored if the g-code flavor is set to Klipper." msgstr "" "Se abilitato, i limiti della macchina verranno emessi nel file G-code.\n" -"Questa opzione verrà ignorata se il sapore del codice g è impostato su Klipper." +"Questa opzione verrà ignorata se il sapore del codice g è impostato su " +"Klipper." msgid "" -"This G-code will be used as a code for the pause print. User can insert pause G-" -"code in gcode viewer" +"This G-code will be used as a code for the pause print. User can insert " +"pause G-code in gcode viewer" msgstr "" "Questo G-code verrà utilizzato come codice pausa stampa. Gli utenti possono " "inserire il G-code di pausa nel visualizzatore G-code." @@ -10597,22 +10777,23 @@ msgid "Maximum acceleration for travel" msgstr "Accelerazione massima per spostamenti" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" -msgstr "Accelerazione massima per la corsa (M204 T), si applica solo al Marlin 2" +msgstr "" +"Accelerazione massima per la corsa (M204 T), si applica solo al Marlin 2" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This is the " -"maximum speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This " +"is the maximum speed limitation of part cooling fan" msgstr "" "La velocità della ventola di raffreddamento può essere aumentata quando è " -"abilitato il raffreddamento automatico. Questa è la limitazione massima della " -"velocità della ventola di raffreddamento parziale" +"abilitato il raffreddamento automatico. Questa è la limitazione massima " +"della velocità della ventola di raffreddamento parziale" msgid "Max" msgstr "Massimo" msgid "" -"The largest printable layer height for extruder. Used tp limits the maximum layer " -"hight when enable adaptive layer height" +"The largest printable layer height for extruder. Used tp limits the maximum " +"layer hight when enable adaptive layer height" msgstr "" "L'altezza massima del layer stampabile per l'estrusore: viene utilizzata per " "limitare l'altezza massima del layer quando è abilitato il layer adattativo." @@ -10621,56 +10802,59 @@ msgid "Extrusion rate smoothing" msgstr "Lisciatura del tasso di estrusione" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when the " -"printer transitions from printing a high flow (high speed/larger width) extrusion " -"to a lower flow (lower speed/smaller width) extrusion and vice versa.\n" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm3/sec can " -"change over time. Higher values mean higher extrusion rate changes are allowed, " -"resulting in faster speed transitions.\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" "\n" "A value of 0 disables the feature. \n" "\n" -"For a high speed, high flow direct drive printer (like the Bambu lab or Voron) " -"this value is usually not needed. However it can provide some marginal benefit in " -"certain cases where feature speeds vary greatly. For example, when there are " -"aggressive slowdowns due to overhangs. In these cases a high value of around " -"300-350mm3/s2 is recommended as this allows for just enough smoothing to assist " -"pressure advance achieve a smoother flow transition.\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" "\n" -"For slower printers without pressure advance, the value should be set much lower. " -"A value of 10-15mm3/s2 is a good starting point for direct drive extruders and " -"5-10mm3/s2 for Bowden style. \n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" "\n" "This feature is known as Pressure Equalizer in Prusa slicer.\n" "\n" "Note: this parameter disables arc fitting." msgstr "" -"Questo parametro attenua le variazioni improvvise della velocità di estrusione " -"che si verificano quando la stampante passa dalla stampa di un'estrusione ad alto " -"flusso (alta velocità/larghezza maggiore) a un'estrusione a flusso inferiore " -"(velocità inferiore/larghezza inferiore) e viceversa.\n" +"Questo parametro attenua le variazioni improvvise della velocità di " +"estrusione che si verificano quando la stampante passa dalla stampa di " +"un'estrusione ad alto flusso (alta velocità/larghezza maggiore) a " +"un'estrusione a flusso inferiore (velocità inferiore/larghezza inferiore) e " +"viceversa.\n" "\n" -"Definisce la velocità massima con cui la portata volumetrica estrusa in mm3/sec " -"può variare nel tempo. Valori più alti significano che sono consentite variazioni " -"più elevate della velocità di estrusione, con conseguenti transizioni di velocità " -"più rapide.\n" +"Definisce la velocità massima con cui la portata volumetrica estrusa in mm3/" +"sec può variare nel tempo. Valori più alti significano che sono consentite " +"variazioni più elevate della velocità di estrusione, con conseguenti " +"transizioni di velocità più rapide.\n" "\n" "Il valore 0 disabilita la funzionalità. \n" "\n" -"Per una stampante ad azionamento diretto ad alta velocità e ad alto flusso (come " -"Bambu lab o Voron) questo valore di solito non è necessario. Tuttavia, può " -"fornire alcuni vantaggi marginali in alcuni casi in cui le velocità delle " -"funzionalità variano notevolmente. Ad esempio, quando ci sono rallentamenti " -"aggressivi dovuti a strapiombi. In questi casi si consiglia un valore elevato di " -"circa 300-350 mm3/s2 in quanto ciò consente una levigatura sufficiente per " -"aiutare l'avanzamento della pressione a ottenere una transizione di flusso più " -"fluida.\n" +"Per una stampante ad azionamento diretto ad alta velocità e ad alto flusso " +"(come Bambu lab o Voron) questo valore di solito non è necessario. Tuttavia, " +"può fornire alcuni vantaggi marginali in alcuni casi in cui le velocità " +"delle funzionalità variano notevolmente. Ad esempio, quando ci sono " +"rallentamenti aggressivi dovuti a strapiombi. In questi casi si consiglia un " +"valore elevato di circa 300-350 mm3/s2 in quanto ciò consente una levigatura " +"sufficiente per aiutare l'avanzamento della pressione a ottenere una " +"transizione di flusso più fluida.\n" "\n" -"Per le stampanti più lente senza anticipo di pressione, il valore deve essere " -"impostato su un valore molto più basso. Un valore di 10-15 mm3/s2 è un buon punto " -"di partenza per gli estrusori a trasmissione diretta e di 5-10 mm3/s2 per lo " -"stile Bowden. \n" +"Per le stampanti più lente senza anticipo di pressione, il valore deve " +"essere impostato su un valore molto più basso. Un valore di 10-15 mm3/s2 è " +"un buon punto di partenza per gli estrusori a trasmissione diretta e di 5-10 " +"mm3/s2 per lo stile Bowden. \n" "\n" "Questa funzione è nota come equalizzatore di pressione in Prusa slicer.\n" "\n" @@ -10694,12 +10878,12 @@ msgid "" msgstr "" "Un valore più basso si traduce in transizioni più fluide della velocità di " "estrusione. Tuttavia, ciò si traduce in un file gcode significativamente più " -"grande e in un maggior numero di istruzioni per l'elaborazione da parte della " -"stampante. \n" +"grande e in un maggior numero di istruzioni per l'elaborazione da parte " +"della stampante. \n" "\n" "Il valore predefinito 3 funziona bene per la maggior parte dei casi. Se la " -"stampante balbetta, aumentare questo valore per ridurre il numero di regolazioni " -"effettuate\n" +"stampante balbetta, aumentare questo valore per ridurre il numero di " +"regolazioni effettuate\n" "\n" "Valori consentiti: 1-5" @@ -10707,23 +10891,24 @@ msgid "Minimum speed for part cooling fan" msgstr "Velocità minima ventola di raffreddamento" msgid "" -"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during " -"printing except the first several layers which is defined by no cooling layers.\n" +"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " +"during printing except the first several layers which is defined by no " +"cooling layers.\n" "Please enable auxiliary_fan in printer settings to use this feature. G-code " "command: M106 P2 S(0-255)" msgstr "" "Velocità della ventola di raffreddamento della parte ausiliaria. La ventola " -"ausiliaria funzionerà a questa velocità durante la stampa, ad eccezione dei primi " -"strati, che sono definiti dall'assenza di strati di raffreddamento.\n" -"Abilitare auxiliary_fan nelle impostazioni della stampante per utilizzare questa " -"funzione. Comando G-code: M106 P2 S(0-255)" +"ausiliaria funzionerà a questa velocità durante la stampa, ad eccezione dei " +"primi strati, che sono definiti dall'assenza di strati di raffreddamento.\n" +"Abilitare auxiliary_fan nelle impostazioni della stampante per utilizzare " +"questa funzione. Comando G-code: M106 P2 S(0-255)" msgid "Min" msgstr "Minimo" msgid "" -"The lowest printable layer height for extruder. Used tp limits the minimum layer " -"hight when enable adaptive layer height" +"The lowest printable layer height for extruder. Used tp limits the minimum " +"layer hight when enable adaptive layer height" msgstr "" "L'altezza minima del layer stampabile per l'estrusore. Viene utilizzata per " "limitare l'altezza minima del layer quando è abilito il layer adattativo." @@ -10736,9 +10921,10 @@ msgid "" "cooling is enabled, when printing overhangs and when feature speeds are not " "specified explicitly." msgstr "" -"La velocità di stampa minima per il filamento quando è abilitato il rallentamento " -"per un migliore raffreddamento dello strato, quando le sporgenze di stampa e " -"quando le velocità delle caratteristiche non sono specificate esplicitamente." +"La velocità di stampa minima per il filamento quando è abilitato il " +"rallentamento per un migliore raffreddamento dello strato, quando le " +"sporgenze di stampa e quando le velocità delle caratteristiche non sono " +"specificate esplicitamente." msgid "Nozzle diameter" msgstr "Diametro Nozzle" @@ -10760,8 +10946,8 @@ msgid "Host Type" msgstr "Tipo host" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" "Orca Slicer può caricare file G-code su un host di stampa. Questo campo deve " "contenere il tipo di host." @@ -10776,72 +10962,76 @@ msgid "Cooling tube position" msgstr "Posizione tubo di raffreddamento" msgid "Distance of the center-point of the cooling tube from the extruder tip." -msgstr "Distanza del centro del tubo di raffreddamento dalla punta dell'estrusore." +msgstr "" +"Distanza del centro del tubo di raffreddamento dalla punta dell'estrusore." msgid "Cooling tube length" msgstr "Lunghezza del tubo di raffreddamento" msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "" -"Lunghezza del tubo di raffreddamento per limitare lo spazio per i movimenti di " -"raffreddamento al suo interno." +"Lunghezza del tubo di raffreddamento per limitare lo spazio per i movimenti " +"di raffreddamento al suo interno." msgid "High extruder current on filament swap" msgstr "Alta corrente estrusore al cambio filamento" msgid "" -"It may be beneficial to increase the extruder motor current during the filament " -"exchange sequence to allow for rapid ramming feed rates and to overcome " -"resistance when loading a filament with an ugly shaped tip." +"It may be beneficial to increase the extruder motor current during the " +"filament exchange sequence to allow for rapid ramming feed rates and to " +"overcome resistance when loading a filament with an ugly shaped tip." msgstr "" "Potrebbe essere utile aumentare la corrente del motore estrusore durante la " -"sequenza di cambio filamento per permettere un avanzamento rapido del ramming e " -"per superare la resistenza durante il caricamento di un filamento con una punta " -"deformata." +"sequenza di cambio filamento per permettere un avanzamento rapido del " +"ramming e per superare la resistenza durante il caricamento di un filamento " +"con una punta deformata." msgid "Filament parking position" msgstr "Posizione di parcheggio del filamento" msgid "" -"Distance of the extruder tip from the position where the filament is parked when " -"unloaded. This should match the value in printer firmware." +"Distance of the extruder tip from the position where the filament is parked " +"when unloaded. This should match the value in printer firmware." msgstr "" -"Distanza della punta dell'estrusore dalla posizione dove il filamento viene posto " -"mentre viene scaricato. Dovrebbe essere uguale al valore nel firmware della " -"stampante." +"Distanza della punta dell'estrusore dalla posizione dove il filamento viene " +"posto mentre viene scaricato. Dovrebbe essere uguale al valore nel firmware " +"della stampante." msgid "Extra loading distance" msgstr "Distanza di caricamento aggiuntiva" msgid "" -"When set to zero, the distance the filament is moved from parking position during " -"load is exactly the same as it was moved back during unload. When positive, it is " -"loaded further, if negative, the loading move is shorter than unloading." +"When set to zero, the distance the filament is moved from parking position " +"during load is exactly the same as it was moved back during unload. When " +"positive, it is loaded further, if negative, the loading move is shorter " +"than unloading." msgstr "" "Quando impostato a zero, la distanza percorsa dal filamento in posizione di " -"parcheggio durante il caricamento è esattamente uguale a quella contraria durante " -"lo scaricamento. Quando il valore è positivo, viene caricato maggiormente, se il " -"valore è negativo il movimento di caricamento è più corto dello scaricamento." +"parcheggio durante il caricamento è esattamente uguale a quella contraria " +"durante lo scaricamento. Quando il valore è positivo, viene caricato " +"maggiormente, se il valore è negativo il movimento di caricamento è più " +"corto dello scaricamento." msgid "Start end points" msgstr "Punti iniziali e finali" msgid "The start and end points which is from cutter area to garbage can." msgstr "" -"I punti di partenza e arrivo che si trovano dall'area del taglio allo scarico." +"I punti di partenza e arrivo che si trovano dall'area del taglio allo " +"scarico." msgid "Reduce infill retraction" msgstr "Riduci la retrazione nel riempimento" msgid "" -"Don't retract when the travel is in infill area absolutely. That means the oozing " -"can't been seen. This can reduce times of retraction for complex model and save " -"printing time, but make slicing and G-code generating slower" +"Don't retract when the travel is in infill area absolutely. That means the " +"oozing can't been seen. This can reduce times of retraction for complex " +"model and save printing time, but make slicing and G-code generating slower" msgstr "" "Non ritrarre quando gli spostamenti si trovano interamente ad un'area di " "riempimento. Ciò significa che il gocciolamento non verrà visto. Questo può " -"ridurre i tempi di ritrazione per i modelli complessi e far risparmiare tempo di " -"stampa, ma rende lo slicing e la generazione del G-code più lento." +"ridurre i tempi di ritrazione per i modelli complessi e far risparmiare " +"tempo di stampa, ma rende lo slicing e la generazione del G-code più lento." msgid "Enable" msgstr "Abilita" @@ -10850,35 +11040,38 @@ msgid "Filename format" msgstr "Formato nome file" msgid "User can self-define the project file name when export" -msgstr "Gli utenti possono decidere i nomi dei file progetto nell'esportazione." +msgstr "" +"Gli utenti possono decidere i nomi dei file progetto nell'esportazione." msgid "Make overhangs printable" msgstr "Rendi stampabile la sporgenza" msgid "Modify the geometry to print overhangs without support material." -msgstr "Modificare la geometria per stampare sporgenze senza materiale di supporto." +msgstr "" +"Modificare la geometria per stampare sporgenze senza materiale di supporto." msgid "Make overhangs printable - Maximum angle" msgstr "Rendi la sporgenza stampabile angolo massimo" msgid "" "Maximum angle of overhangs to allow after making more steep overhangs " -"printable.90° will not change the model at all and allow any overhang, while 0 " -"will replace all overhangs with conical material." +"printable.90° will not change the model at all and allow any overhang, while " +"0 will replace all overhangs with conical material." msgstr "" -"Angolo massimo delle sporgenze da consentire dopo aver reso stampabili sporgenze " -"più ripide.90° non cambierà affatto il modello e consentirà alcuna sporgenza, " -"mentre 0 sostituirà tutte le sporgenze con materiale conico." +"Angolo massimo delle sporgenze da consentire dopo aver reso stampabili " +"sporgenze più ripide.90° non cambierà affatto il modello e consentirà alcuna " +"sporgenza, mentre 0 sostituirà tutte le sporgenze con materiale conico." msgid "Make overhangs printable - Hole area" msgstr "Rendere stampabile l'area del foro sporgente" msgid "" -"Maximum area of a hole in the base of the model before it's filled by conical " -"material.A value of 0 will fill all the holes in the model base." +"Maximum area of a hole in the base of the model before it's filled by " +"conical material.A value of 0 will fill all the holes in the model base." msgstr "" "Area massima di un foro nella base del modello prima che venga riempito da " -"materiale conico. Un valore pari a 0 riempirà tutti i fori nella base del modello." +"materiale conico. Un valore pari a 0 riempirà tutti i fori nella base del " +"modello." msgid "mm²" msgstr "mm²" @@ -10888,19 +11081,19 @@ msgstr "Rileva parete a sbalzo" #, c-format, boost-format msgid "" -"Detect the overhang percentage relative to line width and use different speed to " -"print. For 100%% overhang, bridge speed is used." +"Detect the overhang percentage relative to line width and use different " +"speed to print. For 100%% overhang, bridge speed is used." msgstr "" -"Rileva la percentuale di sporgenza rispetto alla larghezza della linea e utilizza " -"velocità diverse per stampare. Per una sporgenza di 100%%, viene utilizzata la " -"velocità del ponte." +"Rileva la percentuale di sporgenza rispetto alla larghezza della linea e " +"utilizza velocità diverse per stampare. Per una sporgenza di 100%%, viene " +"utilizzata la velocità del ponte." msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." msgstr "" -"Larghezza della linea della parete interna. Se espresso come %, verrà calcolato " -"sul diametro dell'ugello." +"Larghezza della linea della parete interna. Se espresso come %, verrà " +"calcolato sul diametro dell'ugello." msgid "Speed of inner wall" msgstr "E' la velocità per le pareti interne." @@ -10912,36 +11105,38 @@ msgid "Alternate extra wall" msgstr "Parete aggiuntiva alternativa" msgid "" -"This setting adds an extra wall to every other layer. This way the infill gets " -"wedged vertically between the walls, resulting in stronger prints. \n" +"This setting adds an extra wall to every other layer. This way the infill " +"gets wedged vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option needs to " -"be disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option " +"needs to be disabled. \n" "\n" -"Using lightning infill together with this option is not recommended as there is " -"limited infill to anchor the extra perimeters to." +"Using lightning infill together with this option is not recommended as there " +"is limited infill to anchor the extra perimeters to." msgstr "" -"Questa impostazione aggiunge un muro extra a ogni altro livello. In questo modo " -"il riempimento si incastra verticalmente tra le pareti, ottenendo stampe più " -"resistenti. \n" +"Questa impostazione aggiunge un muro extra a ogni altro livello. In questo " +"modo il riempimento si incastra verticalmente tra le pareti, ottenendo " +"stampe più resistenti. \n" "\n" -"Quando questa opzione è abilitata, l'opzione Assicura spessore guscio verticale " -"deve essere disabilitata. \n" +"Quando questa opzione è abilitata, l'opzione Assicura spessore guscio " +"verticale deve essere disabilitata. \n" "\n" -"L'utilizzo del riempimento fulmineo insieme a questa opzione non è raccomandato " -"in quanto il riempimento è limitato a cui ancorare i perimetri extra." +"L'utilizzo del riempimento fulmineo insieme a questa opzione non è " +"raccomandato in quanto il riempimento è limitato a cui ancorare i perimetri " +"extra." msgid "" -"If you want to process the output G-code through custom scripts, just list their " -"absolute paths here. Separate multiple scripts with a semicolon. Scripts will be " -"passed the absolute path to the G-code file as the first argument, and they can " -"access the Orca Slicer config settings by reading environment variables." +"If you want to process the output G-code through custom scripts, just list " +"their absolute paths here. Separate multiple scripts with a semicolon. " +"Scripts will be passed the absolute path to the G-code file as the first " +"argument, and they can access the Orca Slicer config settings by reading " +"environment variables." msgstr "" -"Se vuoi processare il G-code in uscita con script personalizzati, basta elencare " -"qui il loro percorso assoluto. Separa i diversi script con un punto e virgola. " -"Gli script passeranno il percorso assoluto nel G-code come primo argomento, e " -"potranno accedere alle impostazioni di configurazione di Orca Slicer leggendo le " -"variabili di ambiente." +"Se vuoi processare il G-code in uscita con script personalizzati, basta " +"elencare qui il loro percorso assoluto. Separa i diversi script con un punto " +"e virgola. Gli script passeranno il percorso assoluto nel G-code come primo " +"argomento, e potranno accedere alle impostazioni di configurazione di Orca " +"Slicer leggendo le variabili di ambiente." msgid "Printer notes" msgstr "Note stampante" @@ -10973,8 +11168,8 @@ msgstr "Espansione primo layer" msgid "Expand the first raft or support layer to improve bed plate adhesion" msgstr "" -"Questo espande il primo raft o layer di supporto per migliorare l'adesione al " -"piatto." +"Questo espande il primo raft o layer di supporto per migliorare l'adesione " +"al piatto." msgid "Raft layers" msgstr "Layer raft" @@ -10987,20 +11182,21 @@ msgstr "" "questa funzione per evitare deformazioni durante la stampa di ABS." msgid "" -"G-code path is genereated after simplifing the contour of model to avoid too much " -"points and gcode lines in gcode file. Smaller value means higher resolution and " -"more time to slice" +"G-code path is genereated after simplifing the contour of model to avoid too " +"much points and gcode lines in gcode file. Smaller value means higher " +"resolution and more time to slice" msgstr "" "Il percorso del G-code viene generato dopo aver semplificato il contorno del " "modello per evitare molti punti e linee nel file G-code.\n" -"Un valore più piccolo significa una risoluzione più elevata e un tempo maggiore " -"per l'elaborazione" +"Un valore più piccolo significa una risoluzione più elevata e un tempo " +"maggiore per l'elaborazione" msgid "Travel distance threshold" msgstr "Soglia distanza di spostamento" msgid "" -"Only trigger retraction when the travel distance is longer than this threshold" +"Only trigger retraction when the travel distance is longer than this " +"threshold" msgstr "" "L'attivazione della retrazione avviene solo quando la distanza percorsa è " "superiore a questa soglia." @@ -11008,7 +11204,8 @@ msgstr "" msgid "Retract amount before wipe" msgstr "Retrai la quantità prima di pulire" -msgid "The length of fast retraction before wipe, relative to retraction length" +msgid "" +"The length of fast retraction before wipe, relative to retraction length" msgstr "" "È la lunghezza della retrazione rapida prima di una pulizia, rispetto alla " "lunghezza di retrazione." @@ -11035,13 +11232,13 @@ msgstr "Z hop in fase retrazione" msgid "" "Whenever the retraction is done, the nozzle is lifted a little to create " -"clearance between nozzle and the print. It prevents nozzle from hitting the print " -"when travel move. Using spiral line to lift z can prevent stringing" +"clearance between nozzle and the print. It prevents nozzle from hitting the " +"print when travel move. Using spiral line to lift z can prevent stringing" msgstr "" -"Ogni volta che si verifica una retrazione, il nozzle viene sollevato leggermente " -"per creare spazio tra nozzle e stampa. Ciò impedisce al nozzle di colpire la " -"stampa quando si viaggia di più. L'uso di linee a spirale per sollevare z può " -"evitare che si stringano." +"Ogni volta che si verifica una retrazione, il nozzle viene sollevato " +"leggermente per creare spazio tra nozzle e stampa. Ciò impedisce al nozzle " +"di colpire la stampa quando si viaggia di più. L'uso di linee a spirale per " +"sollevare z può evitare che si stringano." msgid "Z hop lower boundary" msgstr "Limite inferiore dell'hop Z" @@ -11050,18 +11247,19 @@ msgid "" "Z hop will only come into effect when Z is above this value and is below the " "parameter: \"Z hop upper boundary\"" msgstr "" -"L'hop Z avrà effetto solo quando Z è al di sopra di questo valore e si trova al " -"di sotto del parametro: \"Limite superiore dell'hop Z\"" +"L'hop Z avrà effetto solo quando Z è al di sopra di questo valore e si trova " +"al di sotto del parametro: \"Limite superiore dell'hop Z\"" msgid "Z hop upper boundary" msgstr "Limite superiore dell'hop Z" msgid "" -"If this value is positive, Z hop will only come into effect when Z is above the " -"parameter: \"Z hop lower boundary\" and is below this value" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" msgstr "" -"Se questo valore è positivo, l'hop Z avrà effetto solo quando Z si trova al di " -"sopra del parametro: \"Z hop lower boundary\" ed è al di sotto di questo valore" +"Se questo valore è positivo, l'hop Z avrà effetto solo quando Z si trova al " +"di sopra del parametro: \"Z hop lower boundary\" ed è al di sotto di questo " +"valore" msgid "Z hop type" msgstr "Tipo Z Hop" @@ -11079,8 +11277,8 @@ msgid "" "If you set this to a positive value, Z lift will only take place above the " "specified absolute Z." msgstr "" -"Se si imposta questo valore su un valore positivo, l'aumento Z si verificherà " -"solo al di sopra dello Z assoluto specificato." +"Se si imposta questo valore su un valore positivo, l'aumento Z si " +"verificherà solo al di sopra dello Z assoluto specificato." msgid "Only lift Z below" msgstr "Solleva Z solo al di sotto" @@ -11089,15 +11287,15 @@ msgid "" "If you set this to a positive value, Z lift will only take place below the " "specified absolute Z." msgstr "" -"Se si imposta questo valore su un valore positivo, l'aumento Z si verificherà " -"solo al di sotto dello Z assoluto specificato." +"Se si imposta questo valore su un valore positivo, l'aumento Z si " +"verificherà solo al di sotto dello Z assoluto specificato." msgid "On surfaces" msgstr "Tutte le superfici superiori" msgid "" -"Enforce Z Hop behavior. This setting is impacted by the above settings (Only lift " -"Z above/below)." +"Enforce Z Hop behavior. This setting is impacted by the above settings (Only " +"lift Z above/below)." msgstr "" "Applicare il comportamento Z Hop. Questa impostazione è influenzata dalle " "impostazioni di cui sopra (solo sollevare Z sopra/sotto)." @@ -11118,19 +11316,19 @@ msgid "Extra length on restart" msgstr "Lunghezza extra in ripresa" msgid "" -"When the retraction is compensated after the travel move, the extruder will push " -"this additional amount of filament. This setting is rarely needed." +"When the retraction is compensated after the travel move, the extruder will " +"push this additional amount of filament. This setting is rarely needed." msgstr "" -"Quando la retrazione è compensata dopo un movimento di spostamento, l'estrusore " -"spingerà questa quantità addizionale di filamento. Questa impostazione è " -"raramente necessaria." +"Quando la retrazione è compensata dopo un movimento di spostamento, " +"l'estrusore spingerà questa quantità addizionale di filamento. Questa " +"impostazione è raramente necessaria." msgid "" -"When the retraction is compensated after changing tool, the extruder will push " -"this additional amount of filament." +"When the retraction is compensated after changing tool, the extruder will " +"push this additional amount of filament." msgstr "" -"Quando la retrazione è compensata dopo un cambio strumento, l'estrusore spingerà " -"questa quantità addizionale di filamento." +"Quando la retrazione è compensata dopo un cambio strumento, l'estrusore " +"spingerà questa quantità addizionale di filamento." msgid "Retraction Speed" msgstr "Velocità di retrazione" @@ -11142,21 +11340,22 @@ msgid "Deretraction Speed" msgstr "Velocità di deretrazione" msgid "" -"Speed for reloading filament into extruder. Zero means same speed with retraction" +"Speed for reloading filament into extruder. Zero means same speed with " +"retraction" msgstr "" -"La velocità di ricarica filamento nell'estrusore dopo una retrazione; impostando " -"0, la velocità sarà la stessa della retrazione." +"La velocità di ricarica filamento nell'estrusore dopo una retrazione; " +"impostando 0, la velocità sarà la stessa della retrazione." msgid "Use firmware retraction" msgstr "Usa retrazione firmware" msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware handle " -"the retraction. This is only supported in recent Marlin." +"This experimental setting uses G10 and G11 commands to have the firmware " +"handle the retraction. This is only supported in recent Marlin." msgstr "" -"Questa impostazione sperimentale utilizza i comandi G10 e G11 per fare in modo " -"che il firmware gestisca la ritrazione. Questo è supportato solo nel recente " -"Marlin." +"Questa impostazione sperimentale utilizza i comandi G10 e G11 per fare in " +"modo che il firmware gestisca la ritrazione. Questo è supportato solo nel " +"recente Marlin." msgid "Show auto-calibration marks" msgstr "Mostra segni di autocalibrazione" @@ -11186,34 +11385,34 @@ msgid "Staggered inner seams" msgstr "Giunzioni interne sfalsate" msgid "" -"This option causes the inner seams to be shifted backwards based on their depth, " -"forming a zigzag pattern." +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." msgstr "" -"Questa opzione fa sì che le giunzioni interne vengano spostate all'indietro in " -"base alla loro profondità, formando un motivo a zig-zag." +"Questa opzione fa sì che le giunzioni interne vengano spostate all'indietro " +"in base alla loro profondità, formando un motivo a zig-zag." msgid "Seam gap" msgstr "Fessura di cucitura" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, the " -"loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the current " -"extruder diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, " +"the loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the " +"current extruder diameter. The default value for this parameter is 10%." msgstr "" "Per ridurre la visibilità della cucitura in un'estrusione ad anello chiuso, " "l'anello viene interrotto e accorciato di una quantità specificata.\n" "Questa quantità può essere specificata in millimetri o come percentuale del " -"diametro corrente dell'estrusore. Il valore predefinito per questo parametro è " -"10%." +"diametro corrente dell'estrusore. Il valore predefinito per questo parametro " +"è 10%." msgid "Role base wipe speed" msgstr "Wipe Speed" msgid "" -"The wipe speed is determined by the speed of the current extrusion role.e.g. if a " -"wipe action is executed immediately following an outer wall extrusion, the speed " -"of the outer wall extrusion will be utilized for the wipe action." +"The wipe speed is determined by the speed of the current extrusion role.e.g. " +"if a wipe action is executed immediately following an outer wall extrusion, " +"the speed of the outer wall extrusion will be utilized for the wipe action." msgstr "" "La velocità di pulizia è determinata dalla velocità del ruolo di estrusione " "corrente, ad es. Se un'azione di pulizia viene eseguita immediatamente dopo " @@ -11224,49 +11423,52 @@ msgid "Wipe on loops" msgstr "Pulisci sui loop" msgid "" -"To minimize the visibility of the seam in a closed loop extrusion, a small inward " -"movement is executed before the extruder leaves the loop." +"To minimize the visibility of the seam in a closed loop extrusion, a small " +"inward movement is executed before the extruder leaves the loop." msgstr "" -"Per ridurre al minimo la visibilità della cucitura in un'estrusione ad anello " -"chiuso, viene eseguito un piccolo movimento verso l'interno prima che l'estrusore " -"lasci l'anello." +"Per ridurre al minimo la visibilità della cucitura in un'estrusione ad " +"anello chiuso, viene eseguito un piccolo movimento verso l'interno prima che " +"l'estrusore lasci l'anello." msgid "Wipe before external loop" msgstr "Pulire prima del loop esterno" msgid "" -"To minimise visibility of potential overextrusion at the start of an external " -"perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print order, " -"the deretraction is performed slightly on the inside from the start of the " -"external perimeter. That way any potential over extrusion is hidden from the " -"outside surface. \n" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print " -"order as in these modes it is more likely an external perimeter is printed " -"immediately after a deretraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." msgstr "" -"Per ridurre al minimo la visibilità di una potenziale sovraestrusione all'inizio " -"di un perimetro esterno quando si stampa con l'ordine di stampa Esterno/Interno o " -"Interno/Esterno/Interno/Parete interna, la deretrazione viene eseguita " -"leggermente all'interno dall'inizio del perimetro esterno. In questo modo " -"qualsiasi potenziale sovraestrusione viene nascosta dalla superficie esterna. \n" +"Per ridurre al minimo la visibilità di una potenziale sovraestrusione " +"all'inizio di un perimetro esterno quando si stampa con l'ordine di stampa " +"Esterno/Interno o Interno/Esterno/Interno/Parete interna, la deretrazione " +"viene eseguita leggermente all'interno dall'inizio del perimetro esterno. In " +"questo modo qualsiasi potenziale sovraestrusione viene nascosta dalla " +"superficie esterna. \n" "\n" -"Ciò è utile quando si stampa con l'ordine di stampa Esterno/Interno o Interno/" -"Esterno/Interno parete, poiché in queste modalità è più probabile che venga " -"stampato un perimetro esterno immediatamente dopo un movimento di retrazione." +"Ciò è utile quando si stampa con l'ordine di stampa Esterno/Interno o " +"Interno/Esterno/Interno parete, poiché in queste modalità è più probabile " +"che venga stampato un perimetro esterno immediatamente dopo un movimento di " +"retrazione." msgid "Wipe speed" msgstr "Velocità di pulizia" msgid "" -"The wipe speed is determined by the speed setting specified in this configuration." -"If the value is expressed as a percentage (e.g. 80%), it will be calculated based " -"on the travel speed setting above.The default value for this parameter is 80%" +"The wipe speed is determined by the speed setting specified in this " +"configuration.If the value is expressed as a percentage (e.g. 80%), it will " +"be calculated based on the travel speed setting above.The default value for " +"this parameter is 80%" msgstr "" -"La velocità di pulizia è determinata dall'impostazione della velocità specificata " -"in questa configurazione. Se il valore è espresso in percentuale (ad es. 80%), " -"verrà calcolato in base all'impostazione della velocità di traslazione di cui " -"sopra. Il valore predefinito per questo parametro è 80%" +"La velocità di pulizia è determinata dall'impostazione della velocità " +"specificata in questa configurazione. Se il valore è espresso in percentuale " +"(ad es. 80%), verrà calcolato in base all'impostazione della velocità di " +"traslazione di cui sopra. Il valore predefinito per questo parametro è 80%" msgid "Skirt distance" msgstr "Distanza Skirt" @@ -11292,8 +11494,8 @@ msgstr "Velocità Skirt " msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." msgstr "" -"Velocità del gonna, in mm/s. Zero significa utilizzare la velocità di estrusione " -"dello strato predefinita." +"Velocità del gonna, in mm/s. Zero significa utilizzare la velocità di " +"estrusione dello strato predefinita." msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " @@ -11307,45 +11509,45 @@ msgid "Minimum sparse infill threshold" msgstr "Soglia minima riempimento" msgid "" -"Sparse infill area which is smaller than threshold value is replaced by internal " -"solid infill" +"Sparse infill area which is smaller than threshold value is replaced by " +"internal solid infill" msgstr "" -"L'area riempimento che è inferiore al valore di soglia viene sostituita da un " -"riempimento solido interno." +"L'area riempimento che è inferiore al valore di soglia viene sostituita da " +"un riempimento solido interno." msgid "" -"Line width of internal solid infill. If expressed as a %, it will be computed " -"over the nozzle diameter." +"Line width of internal solid infill. If expressed as a %, it will be " +"computed over the nozzle diameter." msgstr "" -"Larghezza della linea del riempimento solido interno. Se espresso come %, verrà " -"calcolato sul diametro dell'ugello." +"Larghezza della linea del riempimento solido interno. Se espresso come %, " +"verrà calcolato sul diametro dell'ugello." msgid "Speed of internal solid infill, not the top and bottom surface" msgstr "" -"E' la velocità del riempimento solido interno, esclusa la superficie superiore o " -"inferiore." +"E' la velocità del riempimento solido interno, esclusa la superficie " +"superiore o inferiore." msgid "Spiral vase" msgstr "Vaso a spirale" msgid "" -"Spiralize smooths out the z moves of the outer contour. And turns a solid model " -"into a single walled print with solid bottom layers. The final generated model " -"has no seam" +"Spiralize smooths out the z moves of the outer contour. And turns a solid " +"model into a single walled print with solid bottom layers. The final " +"generated model has no seam" msgstr "" -"Consente la stampa a spirale, che attenua i movimenti Z del contorno esterno e " -"trasforma un modello solido in una stampa a parete singola con layers inferiori " -"solidi. Il modello finale generato non presenta alcuna giunzione." +"Consente la stampa a spirale, che attenua i movimenti Z del contorno esterno " +"e trasforma un modello solido in una stampa a parete singola con layers " +"inferiori solidi. Il modello finale generato non presenta alcuna giunzione." msgid "Smooth Spiral" msgstr "Spirale liscia" msgid "" -"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam at " -"all, even in the XY directions on walls that are not vertical" +"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam " +"at all, even in the XY directions on walls that are not vertical" msgstr "" -"Smooth Spiral leviga anche i movimenti X e Y, senza alcuna cucitura visibile, " -"anche nelle direzioni XY su pareti che non sono verticali" +"Smooth Spiral leviga anche i movimenti X e Y, senza alcuna cucitura " +"visibile, anche nelle direzioni XY su pareti che non sono verticali" msgid "Max XY Smoothing" msgstr "Levigatura Max XY" @@ -11354,26 +11556,27 @@ msgid "" "Maximum distance to move points in XY to try to achieve a smooth spiralIf " "expressed as a %, it will be computed over nozzle diameter" msgstr "" -"Distanza massima per spostare i punti in XY per cercare di ottenere una spirale " -"uniformeSe espressa come %, verrà calcolata sul diametro dell'ugello" +"Distanza massima per spostare i punti in XY per cercare di ottenere una " +"spirale uniformeSe espressa come %, verrà calcolata sul diametro dell'ugello" msgid "" -"If smooth or traditional mode is selected, a timelapse video will be generated " -"for each print. After each layer is printed, a snapshot is taken with the chamber " -"camera. All of these snapshots are composed into a timelapse video when printing " -"completes. If smooth mode is selected, the toolhead will move to the excess chute " -"after each layer is printed and then take a snapshot. Since the melt filament may " -"leak from the nozzle during the process of taking a snapshot, prime tower is " -"required for smooth mode to wipe nozzle." +"If smooth or traditional mode is selected, a timelapse video will be " +"generated for each print. After each layer is printed, a snapshot is taken " +"with the chamber camera. All of these snapshots are composed into a " +"timelapse video when printing completes. If smooth mode is selected, the " +"toolhead will move to the excess chute after each layer is printed and then " +"take a snapshot. Since the melt filament may leak from the nozzle during the " +"process of taking a snapshot, prime tower is required for smooth mode to " +"wipe nozzle." msgstr "" -"Se si seleziona la modalità \"Smooth\" o \"Tradizionale\", per ogni stampa viene " -"generato un video in timelapse. Dopo la stampa di ogni layer, viene scattata una " -"foto.Tutte queste foto verranno unite per creare un video timelapse al termine " -"della stampa. Se si seleziona \"Smooth\", la testa di stampa si sposta sullo " -"scivolo di spurgo posteriore dopo la stampa di ogni layer e poi scatta una foto. " -"Poiché il filamento può fuoriuscire dal nozzle durante il processo di " -"acquisizione della foto, la modalità \"Smooth\" ha bisogno che venga utilizzata " -"la prime tower per pulire il nozzle." +"Se si seleziona la modalità \"Smooth\" o \"Tradizionale\", per ogni stampa " +"viene generato un video in timelapse. Dopo la stampa di ogni layer, viene " +"scattata una foto.Tutte queste foto verranno unite per creare un video " +"timelapse al termine della stampa. Se si seleziona \"Smooth\", la testa di " +"stampa si sposta sullo scivolo di spurgo posteriore dopo la stampa di ogni " +"layer e poi scatta una foto. Poiché il filamento può fuoriuscire dal nozzle " +"durante il processo di acquisizione della foto, la modalità \"Smooth\" ha " +"bisogno che venga utilizzata la prime tower per pulire il nozzle." msgid "Traditional" msgstr "Tradizionale" @@ -11402,14 +11605,15 @@ msgstr "Cambio manuale del filamento" msgid "" "Enable this option to omit the custom Change filament G-code only at the " "beginning of the print. The tool change command (e.g., T0) will be skipped " -"throughout the entire print. This is useful for manual multi-material printing, " -"where we use M600/PAUSE to trigger the manual filament change action." +"throughout the entire print. This is useful for manual multi-material " +"printing, where we use M600/PAUSE to trigger the manual filament change " +"action." msgstr "" -"Abilita questa opzione per omettere il codice G Cambia filamento personalizzato " -"solo all'inizio della stampa. Il comando di cambio utensile (ad es. T0) verrà " -"saltato durante l'intera stampa. Ciò è utile per la stampa manuale multi-" -"materiale, in cui utilizziamo M600/PAUSE per attivare l'azione di cambio " -"filamento manuale." +"Abilita questa opzione per omettere il codice G Cambia filamento " +"personalizzato solo all'inizio della stampa. Il comando di cambio utensile " +"(ad es. T0) verrà saltato durante l'intera stampa. Ciò è utile per la stampa " +"manuale multi-materiale, in cui utilizziamo M600/PAUSE per attivare l'azione " +"di cambio filamento manuale." msgid "Purge in prime tower" msgstr "Spurga nella Prime tower" @@ -11424,35 +11628,36 @@ msgid "No sparse layers (EXPERIMENTAL)" msgstr "Nessun layer sparso (SPERIMENTALE)" msgid "" -"If enabled, the wipe tower will not be printed on layers with no toolchanges. On " -"layers with a toolchange, extruder will travel downward to print the wipe tower. " -"User is responsible for ensuring there is no collision with the print." +"If enabled, the wipe tower will not be printed on layers with no " +"toolchanges. On layers with a toolchange, extruder will travel downward to " +"print the wipe tower. User is responsible for ensuring there is no collision " +"with the print." msgstr "" "Se attiva, la torre di pulitura non verrà stampata sui layer senza cambio " -"strumento. Sui layer con un cambio strumento, l'estrusore si sposterà verso il " -"basso per stampare la torre di pulitura. L'utente dovrà accertarsi che non " -"avvengano collisioni con la stampa." +"strumento. Sui layer con un cambio strumento, l'estrusore si sposterà verso " +"il basso per stampare la torre di pulitura. L'utente dovrà accertarsi che " +"non avvengano collisioni con la stampa." msgid "Prime all printing extruders" msgstr "Prepara tutti gli estrusori di stampa" msgid "" -"If enabled, all printing extruders will be primed at the front edge of the print " -"bed at the start of the print." +"If enabled, all printing extruders will be primed at the front edge of the " +"print bed at the start of the print." msgstr "" -"Se attivata, tutti gli estrusori di stampa verranno preparati nel bordo frontale " -"del piano di stampa all'inizio della stampa." +"Se attivata, tutti gli estrusori di stampa verranno preparati nel bordo " +"frontale del piano di stampa all'inizio della stampa." msgid "Slice gap closing radius" msgstr "Raggio chiusura del gap" msgid "" -"Cracks smaller than 2x gap closing radius are being filled during the triangle " -"mesh slicing. The gap closing operation may reduce the final print resolution, " -"therefore it is advisable to keep the value reasonably low." +"Cracks smaller than 2x gap closing radius are being filled during the " +"triangle mesh slicing. The gap closing operation may reduce the final print " +"resolution, therefore it is advisable to keep the value reasonably low." msgstr "" -"Le fessure più piccole di 2X del gap vengono riempite durante lo slicing della " -"mesh del triangolo.\n" +"Le fessure più piccole di 2X del gap vengono riempite durante lo slicing " +"della mesh del triangolo.\n" "L'operazione di chiusura della fessura può ridurre la risoluzione di stampa " "finale.\n" "Si consiglia di mantenere un valore ragionevolmente basso." @@ -11461,8 +11666,8 @@ msgid "Slicing Mode" msgstr "Modalità slicing" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all " -"holes in the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " +"close all holes in the model." msgstr "" "Usa \"Pari-dispari\" per modelli di aeroplano 3DLabPrint. Utilizza \"Chiudi " "fori\" per chiudere tutti i fori del modello." @@ -11480,15 +11685,16 @@ msgid "Z offset" msgstr "Offset Z" msgid "" -"This value will be added (or subtracted) from all the Z coordinates in the output " -"G-code. It is used to compensate for bad Z endstop position: for example, if your " -"endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to " -"-0.3 (or fix your endstop)." +"This value will be added (or subtracted) from all the Z coordinates in the " +"output G-code. It is used to compensate for bad Z endstop position: for " +"example, if your endstop zero actually leaves the nozzle 0.3mm far from the " +"print bed, set this to -0.3 (or fix your endstop)." msgstr "" -"Questo valore sarà aggiunto (o sottratto) da tutte le coordinate Z nel G-code di " -"output. Viene utilizzato per compensare una posizione di finecorsa Z errata: per " -"esempio, se la posizione minima del finecorsa rimane in realtà 0.3mm lontano dal " -"piano, imposta questo valore a -0.3 (o sistema il finecorsa)." +"Questo valore sarà aggiunto (o sottratto) da tutte le coordinate Z nel G-" +"code di output. Viene utilizzato per compensare una posizione di finecorsa Z " +"errata: per esempio, se la posizione minima del finecorsa rimane in realtà " +"0.3mm lontano dal piano, imposta questo valore a -0.3 (o sistema il " +"finecorsa)." msgid "Enable support" msgstr "Abilita supporti" @@ -11498,11 +11704,12 @@ msgstr "Abilita la generazione dei supporti." msgid "" "normal(auto) and tree(auto) is used to generate support automatically. If " -"normal(manual) or tree(manual) is selected, only support enforcers are generated" +"normal(manual) or tree(manual) is selected, only support enforcers are " +"generated" msgstr "" -"normale(auto) e albero(auto) sono usati per generare automaticamente i supporti. " -"Se si seleziona normale(manuale) o albero(manuale), vengono generati solo gli " -"esecutori del supporto." +"normale(auto) e albero(auto) sono usati per generare automaticamente i " +"supporti. Se si seleziona normale(manuale) o albero(manuale), vengono " +"generati solo gli esecutori del supporto." msgid "normal(auto)" msgstr "normal(auto)" @@ -11538,10 +11745,11 @@ msgid "Support critical regions only" msgstr "Supporta solo aree critiche" msgid "" -"Only create support for critical regions including sharp tail, cantilever, etc." +"Only create support for critical regions including sharp tail, cantilever, " +"etc." msgstr "" -"Creare il supporto solo per le regioni critiche, tra cui una estremità tagliente, " -"sbalzo, ecc." +"Creare il supporto solo per le regioni critiche, tra cui una estremità " +"tagliente, sbalzo, ecc." msgid "Remove small overhangs" msgstr "Rimuovere piccole sporgenze" @@ -11567,24 +11775,25 @@ msgid "Support/raft base" msgstr "Base supporto/raft" msgid "" -"Filament to print support base and raft. \"Default\" means no specific filament " -"for support and current filament is used" +"Filament to print support base and raft. \"Default\" means no specific " +"filament for support and current filament is used" msgstr "" -"Filamento per stampare basi di supporto e raft. \"Predefinito\" indica che non " -"viene utilizzato alcun filamento specifico per il supporto e viene utilizzato il " -"filamento corrente" +"Filamento per stampare basi di supporto e raft. \"Predefinito\" indica che " +"non viene utilizzato alcun filamento specifico per il supporto e viene " +"utilizzato il filamento corrente" msgid "Avoid interface filament for base" msgstr "Ridurre il filamento di interfaccia per la base" -msgid "Avoid using support interface filament to print support base if possible." +msgid "" +"Avoid using support interface filament to print support base if possible." msgstr "" -"Evitare l'uso del filamento dell'interfaccia di supporto per stampare la base di " -"supporto" +"Evitare l'uso del filamento dell'interfaccia di supporto per stampare la " +"base di supporto" msgid "" -"Line width of support. If expressed as a %, it will be computed over the nozzle " -"diameter." +"Line width of support. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" "Larghezza della linea di supporto. Se espresso come %, verrà calcolato sul " "diametro dell'ugello." @@ -11592,7 +11801,8 @@ msgstr "" msgid "Interface use loop pattern" msgstr "Loop pattern interface" -msgid "Cover the top contact layer of the supports with loops. Disabled by default." +msgid "" +"Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" "Copre con anelli il layer superiore del supporto a contatto. Disattivato per " "impostazione predefinita." @@ -11601,12 +11811,12 @@ msgid "Support/raft interface" msgstr "Interfaccia supporto/raft" msgid "" -"Filament to print support interface. \"Default\" means no specific filament for " -"support interface and current filament is used" +"Filament to print support interface. \"Default\" means no specific filament " +"for support interface and current filament is used" msgstr "" -"Filamento per la stampa delle interfacce di supporto. \"Predefinito\" significa " -"che non esiste un filamento specifico per l'interfaccia di supporto e che verrà " -"utilizzato il filamento corrente." +"Filamento per la stampa delle interfacce di supporto. \"Predefinito\" " +"significa che non esiste un filamento specifico per l'interfaccia di " +"supporto e che verrà utilizzato il filamento corrente." msgid "Top interface layers" msgstr "Layer superiori di interfaccia " @@ -11655,12 +11865,12 @@ msgstr "Trama interfaccia" msgid "" "Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support interface is " -"Concentric" +"interface is Rectilinear, while default pattern for soluble support " +"interface is Concentric" msgstr "" -"Questo è la Trama lineare per le interfacce di supporto. Il modello predefinito " -"per le interfacce di supporto non solubili è rettilineo mentre il modello " -"predefinito per le interfacce di supporto solubili è concentrico." +"Questo è la Trama lineare per le interfacce di supporto. Il modello " +"predefinito per le interfacce di supporto non solubili è rettilineo mentre " +"il modello predefinito per le interfacce di supporto solubili è concentrico." msgid "Rectilinear Interlaced" msgstr "Rettilineo Interlacciato" @@ -11675,27 +11885,29 @@ msgid "Normal Support expansion" msgstr "Espansione normale dei supporti" msgid "Expand (+) or shrink (-) the horizontal span of normal support" -msgstr "Espandere (+) o restringere (-) la portata orizzontale del supporto normale" +msgstr "" +"Espandere (+) o restringere (-) la portata orizzontale del supporto normale" msgid "Speed of support" msgstr "E' la velocità del supporto." msgid "" -"Style and shape of the support. For normal support, projecting the supports into " -"a regular grid will create more stable supports (default), while snug support " -"towers will save material and reduce object scarring.\n" -"For tree support, slim and organic style will merge branches more aggressively " -"and save a lot of material (default organic), while hybrid style will create " -"similar structure to normal support under large flat overhangs." +"Style and shape of the support. For normal support, projecting the supports " +"into a regular grid will create more stable supports (default), while snug " +"support towers will save material and reduce object scarring.\n" +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"Stile e forma del supporto. Per il supporto normale, proiettare i supporti in una " -"griglia regolare creerà supporti più stabili (impostazione predefinita), mentre " -"le torri di supporto aderenti risparmieranno materiale e ridurranno le cicatrici " -"degli oggetti.\n" -"Per il supporto dell'albero, lo stile sottile e organico fonderà i rami in modo " -"più aggressivo e risparmierà molto materiale (organico predefinito), mentre lo " -"stile ibrido creerà una struttura simile al supporto normale sotto grandi " -"sporgenze piatte." +"Stile e forma del supporto. Per il supporto normale, proiettare i supporti " +"in una griglia regolare creerà supporti più stabili (impostazione " +"predefinita), mentre le torri di supporto aderenti risparmieranno materiale " +"e ridurranno le cicatrici degli oggetti.\n" +"Per il supporto dell'albero, lo stile sottile e organico fonderà i rami in " +"modo più aggressivo e risparmierà molto materiale (organico predefinito), " +"mentre lo stile ibrido creerà una struttura simile al supporto normale sotto " +"grandi sporgenze piatte." msgid "Snug" msgstr "Aderenti" @@ -11716,20 +11928,21 @@ msgid "Independent support layer height" msgstr "Altezza layer di supporto indipendente" msgid "" -"Support layer uses layer height independent with object layer. This is to support " -"customizing z-gap and save print time.This option will be invalid when the prime " -"tower is enabled." +"Support layer uses layer height independent with object layer. This is to " +"support customizing z-gap and save print time.This option will be invalid " +"when the prime tower is enabled." msgstr "" "Il layer di supporto utilizza l'altezza layer indipendentemente dal layer " -"dell'oggetto. Questo serve a supportare la personalizzazione di z-gap e ridurre " -"il tempo di stampa. Questa opzione non puó essere utilizzata quando la Prime " -"Tower è abilitata." +"dell'oggetto. Questo serve a supportare la personalizzazione di z-gap e " +"ridurre il tempo di stampa. Questa opzione non puó essere utilizzata quando " +"la Prime Tower è abilitata." msgid "Threshold angle" msgstr "Angolo di soglia" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold." +"Support will be generated for overhangs whose slope angle is below the " +"threshold." msgstr "" "Il supporto sarà generato per le sporgenze il cui angolo di inclinazione è " "inferiore alla soglia." @@ -11738,59 +11951,64 @@ msgid "Tree support branch angle" msgstr "Angolo ramo supporti ad albero" msgid "" -"This setting determines the maximum overhang angle that t he branches of tree " -"support allowed to make.If the angle is increased, the branches can be printed " -"more horizontally, allowing them to reach farther." +"This setting determines the maximum overhang angle that t he branches of " +"tree support allowed to make.If the angle is increased, the branches can be " +"printed more horizontally, allowing them to reach farther." msgstr "" -"Questa determina l'angolo massimo di sporgenza che i rami del supporto ad albero " -"possono raggiungere. Se l'angolo viene aumentato, i rami possono essere stampati " -"più orizzontalmente, permettendo loro di arrivare più lontano." +"Questa determina l'angolo massimo di sporgenza che i rami del supporto ad " +"albero possono raggiungere. Se l'angolo viene aumentato, i rami possono " +"essere stampati più orizzontalmente, permettendo loro di arrivare più " +"lontano." msgid "Preferred Branch Angle" msgstr "Angolo di diramazione preferito" #. TRN PrintSettings: "Organic supports" > "Preferred Branch Angle" msgid "" -"The preferred angle of the branches, when they do not have to avoid the model. " -"Use a lower angle to make them more vertical and more stable. Use a higher angle " -"for branches to merge faster." +"The preferred angle of the branches, when they do not have to avoid the " +"model. Use a lower angle to make them more vertical and more stable. Use a " +"higher angle for branches to merge faster." msgstr "" -"L'angolo di inclinazione preferito delle ramificazioni, quando non devono evitare " -"il modello. Utilizzare un angolo più basso per renderli più verticali e più " -"stabili. Utilizzare un angolo più alto per far sì che le ramificazioni si " -"uniscano più velocemente." +"L'angolo di inclinazione preferito delle ramificazioni, quando non devono " +"evitare il modello. Utilizzare un angolo più basso per renderli più " +"verticali e più stabili. Utilizzare un angolo più alto per far sì che le " +"ramificazioni si uniscano più velocemente." msgid "Tree support branch distance" msgstr "Distanza ramo supporti ad albero" -msgid "This setting determines the distance between neighboring tree support nodes." -msgstr "Questa determina la distanza tra i nodi di supporto dell'albero vicini." +msgid "" +"This setting determines the distance between neighboring tree support nodes." +msgstr "" +"Questa determina la distanza tra i nodi di supporto dell'albero vicini." msgid "Branch Density" msgstr "Densità Ramificazioni" #. TRN PrintSettings: "Organic supports" > "Branch Density" msgid "" -"Adjusts the density of the support structure used to generate the tips of the " -"branches. A higher value results in better overhangs but the supports are harder " -"to remove, thus it is recommended to enable top support interfaces instead of a " -"high branch density value if dense interfaces are needed." +"Adjusts the density of the support structure used to generate the tips of " +"the branches. A higher value results in better overhangs but the supports " +"are harder to remove, thus it is recommended to enable top support " +"interfaces instead of a high branch density value if dense interfaces are " +"needed." msgstr "" -"Regola la densità della struttura di supporto utilizzata per generare le punte " -"delle ramificazioni. Un valore più alto produce sporgenze migliori, ma i supporti " -"sono più difficili da rimuovere; si consiglia quindi di abilitare l'interfaccia " -"di supporto superiore invece di impostare un valore elevato di densità delle " -"ramificazioni, se sono necessarie interfacce dense." +"Regola la densità della struttura di supporto utilizzata per generare le " +"punte delle ramificazioni. Un valore più alto produce sporgenze migliori, ma " +"i supporti sono più difficili da rimuovere; si consiglia quindi di abilitare " +"l'interfaccia di supporto superiore invece di impostare un valore elevato di " +"densità delle ramificazioni, se sono necessarie interfacce dense." msgid "Adaptive layer height" msgstr "Altezza del livello adattivo" msgid "" -"Enabling this option means the height of tree support layer except the first " -"will be automatically calculated " +"Enabling this option means the height of tree support layer except the " +"first will be automatically calculated " msgstr "" -"L'attivazione di questa opzione significa che l'altezza del layer di supporto " -"dell'albero, ad eccezione del primo, verrà calcolata automaticamente " +"L'attivazione di questa opzione significa che l'altezza del layer di " +"supporto dell'albero, ad eccezione del primo, verrà calcolata " +"automaticamente " msgid "Auto brim width" msgstr "Larghezza automatica del bordo" @@ -11799,8 +12017,8 @@ msgid "" "Enabling this option means the width of the brim for tree support will be " "automatically calculated" msgstr "" -"Abilitando questa opzione, la larghezza della tesa per il supporto dell'albero " -"verrà calcolata automaticamente" +"Abilitando questa opzione, la larghezza della tesa per il supporto " +"dell'albero verrà calcolata automaticamente" msgid "Tree support brim width" msgstr "Larghezza brim supporto ad albero" @@ -11827,14 +12045,15 @@ msgstr "Angolo del diametro della diramazione" #. TRN PrintSettings: "Organic supports" > "Branch Diameter Angle" msgid "" -"The angle of the branches' diameter as they gradually become thicker towards the " -"bottom. An angle of 0 will cause the branches to have uniform thickness over " -"their length. A bit of an angle can increase stability of the organic support." +"The angle of the branches' diameter as they gradually become thicker towards " +"the bottom. An angle of 0 will cause the branches to have uniform thickness " +"over their length. A bit of an angle can increase stability of the organic " +"support." msgstr "" -"L'angolo del diametro delle ramificazioni che diventano gradualmente più spesse " -"verso il basso. Un angolo pari a 0 fa sì che le ramificazioni abbiano uno " -"spessore uniforme per tutta la loro lunghezza. Un angolo un po' più ampio può " -"aumentare la stabilità del supporto organico." +"L'angolo del diametro delle ramificazioni che diventano gradualmente più " +"spesse verso il basso. Un angolo pari a 0 fa sì che le ramificazioni abbiano " +"uno spessore uniforme per tutta la loro lunghezza. Un angolo un po' più " +"ampio può aumentare la stabilità del supporto organico." msgid "Branch Diameter with double walls" msgstr "Diametro diramazioni con pareti doppie" @@ -11842,12 +12061,12 @@ msgstr "Diametro diramazioni con pareti doppie" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" msgid "" "Branches with area larger than the area of a circle of this diameter will be " -"printed with double walls for stability. Set this value to zero for no double " -"walls." +"printed with double walls for stability. Set this value to zero for no " +"double walls." msgstr "" -"Le ramificazioni con un'area superiore all'area di un cerchio di questo diametro " -"verranno stampate con pareti doppie per garantire la stabilità. Imposta questo " -"valore a zero per non avere pareti doppie." +"Le ramificazioni con un'area superiore all'area di un cerchio di questo " +"diametro verranno stampate con pareti doppie per garantire la stabilità. " +"Imposta questo valore a zero per non avere pareti doppie." msgid "Support wall loops" msgstr "Loop parete supporto" @@ -11859,17 +12078,18 @@ msgid "Tree support with infill" msgstr "Riempimento supporti ad albero" msgid "" -"This setting specifies whether to add infill inside large hollows of tree support" +"This setting specifies whether to add infill inside large hollows of tree " +"support" msgstr "" -"Questa impostazione specifica se aggiungere il riempimento all'interno di grandi " -"cavità del supporto dell'albero" +"Questa impostazione specifica se aggiungere il riempimento all'interno di " +"grandi cavità del supporto dell'albero" msgid "Activate temperature control" msgstr "Attiva il controllo della temperatura" msgid "" -"Enable this option for chamber temperature control. An M191 command will be added " -"before \"machine_start_gcode\"\n" +"Enable this option for chamber temperature control. An M191 command will be " +"added before \"machine_start_gcode\"\n" "G-code commands: M141/M191 S(0-255)" msgstr "" "Abilitare questa opzione per il controllo della temperatura della camera. Un " @@ -11880,20 +12100,22 @@ msgid "Chamber temperature" msgstr "Temperatura della camera di stampa" msgid "" -"Higher chamber temperature can help suppress or reduce warping and potentially " -"lead to higher interlayer bonding strength for high temperature materials like " -"ABS, ASA, PC, PA and so on.At the same time, the air filtration of ABS and ASA " -"will get worse.While for PLA, PETG, TPU, PVA and other low temperature materials," -"the actual chamber temperature should not be high to avoid cloggings, so 0 which " -"stands for turning off is highly recommended" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" msgstr "" -"Una temperatura della camera più elevata può aiutare a sopprimere o ridurre la " -"deformazione e potenzialmente portare a una maggiore forza di adesione tra gli " -"strati per materiali ad alta temperatura come ABS, ASA, PC, PA e così via. Allo " -"stesso tempo, la filtrazione dell'aria di ABS e ASA peggiorerà. Mentre per PLA, " -"PETG, TPU, PVA e altri materiali a bassa temperatura, la temperatura effettiva " -"della camera non dovrebbe essere elevata per evitare intasamenti, quindi 0 che " -"sta per spegnimento è altamente raccomandato" +"Una temperatura della camera più elevata può aiutare a sopprimere o ridurre " +"la deformazione e potenzialmente portare a una maggiore forza di adesione " +"tra gli strati per materiali ad alta temperatura come ABS, ASA, PC, PA e " +"così via. Allo stesso tempo, la filtrazione dell'aria di ABS e ASA " +"peggiorerà. Mentre per PLA, PETG, TPU, PVA e altri materiali a bassa " +"temperatura, la temperatura effettiva della camera non dovrebbe essere " +"elevata per evitare intasamenti, quindi 0 che sta per spegnimento è " +"altamente raccomandato" msgid "Nozzle temperature for layers after the initial one" msgstr "Temperatura del nozzle dopo il primo layer" @@ -11905,23 +12127,24 @@ msgid "" "Detect thin wall which can't contain two line width. And use single line to " "print. Maybe printed not very well, because it's not closed loop" msgstr "" -"Questo rileva pareti sottili che non possono contenere due righe e utilizza una " -"sola riga per la stampa. Potrebbe non essere stampato altrettanto bene perché non " -"è un circuito chiuso." +"Questo rileva pareti sottili che non possono contenere due righe e utilizza " +"una sola riga per la stampa. Potrebbe non essere stampato altrettanto bene " +"perché non è un circuito chiuso." msgid "" -"This gcode is inserted when change filament, including T command to trigger tool " -"change" +"This gcode is inserted when change filament, including T command to trigger " +"tool change" msgstr "" "Questo G-code viene inserito al cambio filamento, compresi i comandi T per " "attivare il cambio utensile." msgid "This gcode is inserted when the extrusion role is changed" -msgstr "Questo gcode viene inserito quando viene modificato il ruolo di estrusione" +msgstr "" +"Questo gcode viene inserito quando viene modificato il ruolo di estrusione" msgid "" -"Line width for top surfaces. If expressed as a %, it will be computed over the " -"nozzle diameter." +"Line width for top surfaces. If expressed as a %, it will be computed over " +"the nozzle diameter." msgstr "" "Larghezza della linea per le superfici superiori. Se espresso come %, verrà " "calcolato sul diametro dell'ugello." @@ -11933,13 +12156,14 @@ msgid "Top shell layers" msgstr "Layer guscio superiore" msgid "" -"This is the number of solid layers of top shell, including the top surface layer. " -"When the thickness calculated by this value is thinner than top shell thickness, " -"the top shell layers will be increased" +"This is the number of solid layers of top shell, including the top surface " +"layer. When the thickness calculated by this value is thinner than top shell " +"thickness, the top shell layers will be increased" msgstr "" -"È il numero di layers solidi del guscio superiore, compreso il layer superficiale " -"superiore. Se lo spessore calcolato con questo valore è più sottile dello " -"spessore del guscio superiore, i layers del guscio superiore vengono aumentati." +"È il numero di layers solidi del guscio superiore, compreso il layer " +"superficiale superiore. Se lo spessore calcolato con questo valore è più " +"sottile dello spessore del guscio superiore, i layers del guscio superiore " +"vengono aumentati." msgid "Top solid layers" msgstr "Layer solidi superiori" @@ -11949,16 +12173,17 @@ msgstr "Spessore guscio superiore" msgid "" "The number of top solid layers is increased when slicing if the thickness " -"calculated by top shell layers is thinner than this value. This can avoid having " -"too thin shell when layer height is small. 0 means that this setting is disabled " -"and thickness of top shell is absolutely determained by top shell layers" +"calculated by top shell layers is thinner than this value. This can avoid " +"having too thin shell when layer height is small. 0 means that this setting " +"is disabled and thickness of top shell is absolutely determained by top " +"shell layers" msgstr "" "Il numero di layers solidi superiori aumenta durante l'elaborazione se lo " "spessore calcolato dai layers superiori del guscio è più sottile di questo " -"valore. Questo può evitare di avere un guscio troppo sottile quando l'altezza del " -"layer è ridotta. 0 significa che questa impostazione è disabilitata e lo spessore " -"del guscio superiore è determinato semplicemente dal numero di layers superiori " -"del guscio." +"valore. Questo può evitare di avere un guscio troppo sottile quando " +"l'altezza del layer è ridotta. 0 significa che questa impostazione è " +"disabilitata e lo spessore del guscio superiore è determinato semplicemente " +"dal numero di layers superiori del guscio." msgid "Speed of travel which is faster and without extrusion" msgstr "È la velocità con cui si viaggia." @@ -11970,42 +12195,45 @@ msgid "" "Move nozzle along the last extrusion path when retracting to clean leaked " "material on nozzle. This can minimize blob when print new part after travel" msgstr "" -"Questo sposta il nozzle lungo l'ultimo percorso di estrusione quando si ritrae " -"per pulire il materiale fuoriuscito dal nozzle. In questo modo è possibile " -"ridurre al minimo i blob quando si stampa una nuova parte dopo lo spostamento." +"Questo sposta il nozzle lungo l'ultimo percorso di estrusione quando si " +"ritrae per pulire il materiale fuoriuscito dal nozzle. In questo modo è " +"possibile ridurre al minimo i blob quando si stampa una nuova parte dopo lo " +"spostamento." msgid "Wipe Distance" msgstr "Distanza pulizia" msgid "" -"Discribe how long the nozzle will move along the last path when retracting. \n" +"Discribe how long the nozzle will move along the last path when " +"retracting. \n" "\n" -"Depending on how long the wipe operation lasts, how fast and long the extruder/" -"filament retraction settings are, a retraction move may be needed to retract the " -"remaining filament. \n" +"Depending on how long the wipe operation lasts, how fast and long the " +"extruder/filament retraction settings are, a retraction move may be needed " +"to retract the remaining filament. \n" "\n" -"Setting a value in the retract amount before wipe setting below will perform any " -"excess retraction before the wipe, else it will be performed after." +"Setting a value in the retract amount before wipe setting below will perform " +"any excess retraction before the wipe, else it will be performed after." msgstr "" -"Scrivi per quanto tempo l'ugello si sposterà lungo l'ultimo percorso quando si " -"ritrae. \n" +"Scrivi per quanto tempo l'ugello si sposterà lungo l'ultimo percorso quando " +"si ritrae. \n" "\n" -"A seconda della durata dell'operazione di pulizia, della velocità e della durata " -"delle impostazioni di retrazione dell'estrusore/filamento, potrebbe essere " -"necessario un movimento di retrazione per ritrarre il filamento rimanente. \n" +"A seconda della durata dell'operazione di pulizia, della velocità e della " +"durata delle impostazioni di retrazione dell'estrusore/filamento, potrebbe " +"essere necessario un movimento di retrazione per ritrarre il filamento " +"rimanente. \n" "\n" "L'impostazione di un valore nella quantità di retrazione prima della " -"cancellazione di seguito eseguirà qualsiasi retrazione in eccesso prima della " -"cancellazione, altrimenti verrà eseguita dopo." +"cancellazione di seguito eseguirà qualsiasi retrazione in eccesso prima " +"della cancellazione, altrimenti verrà eseguita dopo." msgid "" -"The wiping tower can be used to clean up the residue on the nozzle and stabilize " -"the chamber pressure inside the nozzle, in order to avoid appearance defects when " -"printing objects." +"The wiping tower can be used to clean up the residue on the nozzle and " +"stabilize the chamber pressure inside the nozzle, in order to avoid " +"appearance defects when printing objects." msgstr "" "La torre di pulizia può essere utilizzata per pulire i residui sul nozzle e " -"stabilizzare la pressione della camera all'interno del nozzle al fine di evitare " -"difetti estetici durante la stampa." +"stabilizzare la pressione della camera all'interno del nozzle al fine di " +"evitare difetti estetici durante la stampa." msgid "Purging volumes" msgstr "Volumi di spurgo" @@ -12014,11 +12242,11 @@ msgid "Flush multiplier" msgstr "Moltiplicatore spurgo" msgid "" -"The actual flushing volumes is equal to the flush multiplier multiplied by the " -"flushing volumes in the table." +"The actual flushing volumes is equal to the flush multiplier multiplied by " +"the flushing volumes in the table." msgstr "" -"I volumi di spurgo effettivi sono pari al moltiplicatore di spurgo moltiplicato " -"per i volumi di spurgo indicati nella tabella." +"I volumi di spurgo effettivi sono pari al moltiplicatore di spurgo " +"moltiplicato per i volumi di spurgo indicati nella tabella." msgid "Prime volume" msgstr "Volume primario" @@ -12039,11 +12267,11 @@ msgid "Stabilization cone apex angle" msgstr "Angolo del cono di stabilizzazione" msgid "" -"Angle at the apex of the cone that is used to stabilize the wipe tower. Larger " -"angle means wider base." +"Angle at the apex of the cone that is used to stabilize the wipe tower. " +"Larger angle means wider base." msgstr "" -"Angolo all'apice del cono utilizzato per stabilizzare la torre di pulitura. Un " -"angolo maggiore significa una base più ampia." +"Angolo all'apice del cono utilizzato per stabilizzare la torre di pulitura. " +"Un angolo maggiore significa una base più ampia." msgid "Wipe tower purge lines spacing" msgstr "Spaziatura delle linee di spurgo della torre di pulitura" @@ -12055,54 +12283,56 @@ msgid "Wipe tower extruder" msgstr "Estrusore torre di pulitura" msgid "" -"The extruder to use when printing perimeter of the wipe tower. Set to 0 to use " -"the one that is available (non-soluble would be preferred)." +"The extruder to use when printing perimeter of the wipe tower. Set to 0 to " +"use the one that is available (non-soluble would be preferred)." msgstr "" -"L'estrusore da utilizzare per la stampa del perimetro della torre di pulitura. " -"Impostare su 0 per utilizzare quello attualmente disponibile (sarebbe preferibile " -"quello non solubile)." +"L'estrusore da utilizzare per la stampa del perimetro della torre di " +"pulitura. Impostare su 0 per utilizzare quello attualmente disponibile " +"(sarebbe preferibile quello non solubile)." msgid "Purging volumes - load/unload volumes" msgstr "Volumi di spurgo - volumi di carico/scarico" msgid "" -"This vector saves required volumes to change from/to each tool used on the wipe " -"tower. These values are used to simplify creation of the full purging volumes " -"below." +"This vector saves required volumes to change from/to each tool used on the " +"wipe tower. These values are used to simplify creation of the full purging " +"volumes below." msgstr "" -"Questo vettore salva il volume necessario per cambiare da/a ogni strumento usato " -"per la torre di pulitura. Questi valori vengono usati per semplificare la " -"creazione dei volumi di spurgo completi." +"Questo vettore salva il volume necessario per cambiare da/a ogni strumento " +"usato per la torre di pulitura. Questi valori vengono usati per semplificare " +"la creazione dei volumi di spurgo completi." msgid "" "Purging after filament change will be done inside objects' infills. This may " -"lower the amount of waste and decrease the print time. If the walls are printed " -"with transparent filament, the mixed color infill will be seen outside. It will " -"not take effect, unless the prime tower is enabled." +"lower the amount of waste and decrease the print time. If the walls are " +"printed with transparent filament, the mixed color infill will be seen " +"outside. It will not take effect, unless the prime tower is enabled." msgstr "" -"Lo spurgo dopo il cambio del filamento verrà eseguito all'interno dei riempimenti " -"degli oggetti. Ciò può ridurre la quantità di rifiuti e ridurre il tempo di " -"stampa. Se le pareti sono stampate con filamenti trasparenti, il riempimento a " -"colori misti sarà visibile. Non avrà effetto a meno che la Prime Tower non sia " -"abilitata." +"Lo spurgo dopo il cambio del filamento verrà eseguito all'interno dei " +"riempimenti degli oggetti. Ciò può ridurre la quantità di rifiuti e ridurre " +"il tempo di stampa. Se le pareti sono stampate con filamenti trasparenti, il " +"riempimento a colori misti sarà visibile. Non avrà effetto a meno che la " +"Prime Tower non sia abilitata." msgid "" "Purging after filament change will be done inside objects' support. This may " -"lower the amount of waste and decrease the print time. It will not take effect, " -"unless the prime tower is enabled." +"lower the amount of waste and decrease the print time. It will not take " +"effect, unless the prime tower is enabled." msgstr "" -"Lo spurgo dopo il cambio del filamento verrà eseguito all'interno del supporto " -"degli oggetti. Ciò può ridurre la quantità di rifiuti e ridurre il tempo di " -"stampa. Non avrà effetto a meno che non sia abilitata la Prime Tower." +"Lo spurgo dopo il cambio del filamento verrà eseguito all'interno del " +"supporto degli oggetti. Ciò può ridurre la quantità di rifiuti e ridurre il " +"tempo di stampa. Non avrà effetto a meno che non sia abilitata la Prime " +"Tower." msgid "" "This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed as a " -"result. It will not take effect, unless the prime tower is enabled." +"filament and decrease the print time. Colours of the objects will be mixed " +"as a result. It will not take effect, unless the prime tower is enabled." msgstr "" -"Questo oggetto viene utilizzato per spurgare il nozzle dopo un cambio filamento " -"per risparmiare filamento e ridurre il tempo di stampa. I colori degli oggetti " -"saranno mescolati. Non avrà effetto se non è abilitata la Prime Tower." +"Questo oggetto viene utilizzato per spurgare il nozzle dopo un cambio " +"filamento per risparmiare filamento e ridurre il tempo di stampa. I colori " +"degli oggetti saranno mescolati. Non avrà effetto se non è abilitata la " +"Prime Tower." msgid "Maximal bridging distance" msgstr "Distanza massima bridging" @@ -12118,36 +12348,39 @@ msgid "" "Positive value makes holes bigger. Negative value makes holes smaller. This " "function is used to adjust size slightly when the object has assembling issue" msgstr "" -"I fori negli oggetti vengono ingranditi o rimpiccioliti nel piano XY in base al " -"valore impostato. Un valore positivo ingrandisce i fori mentre un valore negativo " -"rimpicciolisce i fori. Questa funzione viene utilizzata per regolare leggermente " -"le dimensioni quando gli oggetti presentano problemi di assemblaggio." +"I fori negli oggetti vengono ingranditi o rimpiccioliti nel piano XY in base " +"al valore impostato. Un valore positivo ingrandisce i fori mentre un valore " +"negativo rimpicciolisce i fori. Questa funzione viene utilizzata per " +"regolare leggermente le dimensioni quando gli oggetti presentano problemi di " +"assemblaggio." msgid "X-Y contour compensation" msgstr "Compensazione contorni X-Y" msgid "" -"Contour of object will be grown or shrunk in XY plane by the configured value. " -"Positive value makes contour bigger. Negative value makes contour smaller. This " -"function is used to adjust size slightly when the object has assembling issue" +"Contour of object will be grown or shrunk in XY plane by the configured " +"value. Positive value makes contour bigger. Negative value makes contour " +"smaller. This function is used to adjust size slightly when the object has " +"assembling issue" msgstr "" -"Il contorno degli oggetti viene ingrandito o rimpicciolito nel piano XY in base " -"al valore impostato. I valori positivi ingrandiscono i contorni e quelli negativi " -"li rimpiccioliscono. Questa funzione viene utilizzata per regolare leggermente le " -"dimensioni quando gli oggetti presentano problemi di assemblaggio." +"Il contorno degli oggetti viene ingrandito o rimpicciolito nel piano XY in " +"base al valore impostato. I valori positivi ingrandiscono i contorni e " +"quelli negativi li rimpiccioliscono. Questa funzione viene utilizzata per " +"regolare leggermente le dimensioni quando gli oggetti presentano problemi di " +"assemblaggio." msgid "Convert holes to polyholes" msgstr "Conversione di fori in polifori" msgid "" -"Search for almost-circular holes that span more than one layer and convert the " -"geometry to polyholes. Use the nozzle size and the (biggest) diameter to compute " -"the polyhole.\n" +"Search for almost-circular holes that span more than one layer and convert " +"the geometry to polyholes. Use the nozzle size and the (biggest) diameter to " +"compute the polyhole.\n" "See http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgstr "" -"Cercare fori quasi circolari che si estendono su più di un layer e convertire la " -"geometria in polifori. Utilizzare la dimensione dell'ugello e il diametro (più " -"grande) per calcolare il poliforo.\n" +"Cercare fori quasi circolari che si estendono su più di un layer e " +"convertire la geometria in polifori. Utilizzare la dimensione dell'ugello e " +"il diametro (più grande) per calcolare il poliforo.\n" "Vedi http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgid "Polyhole detection margin" @@ -12156,9 +12389,9 @@ msgstr "Margine di rilevamento poliforo" #, c-format, boost-format msgid "" "Maximum defection of a point to the estimated radius of the circle.\n" -"As cylinders are often exported as triangles of varying size, points may not be " -"on the circle circumference. This setting allows you some leway to broaden the " -"detection.\n" +"As cylinders are often exported as triangles of varying size, points may not " +"be on the circle circumference. This setting allows you some leway to " +"broaden the detection.\n" "In mm or in % of the radius." msgstr "" "Defezione massima di un punto rispetto al raggio stimato del cerchio.\n" @@ -12177,8 +12410,8 @@ msgid "G-code thumbnails" msgstr "Miniature G-code" msgid "" -"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following " -"format: \"XxY, XxY, ...\"" +"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " +"following format: \"XxY, XxY, ...\"" msgstr "" "Dimensioni delle immagini da memorizzare in file .gcode e .sl1 / .sl1s, nel " "seguente formato: \"XxY, XxY, ...\"" @@ -12187,8 +12420,8 @@ msgid "Format of G-code thumbnails" msgstr "Formato miniature del G-code" msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI for " -"low memory firmware" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " +"QOI for low memory firmware" msgstr "" "Formato delle miniature del G-code: PNG per la migliore qualità, JPG per la " "dimensione più piccola, QOI per il firmware con poca memoria" @@ -12198,24 +12431,25 @@ msgstr "Usa distanze E relative" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " -"extruders work better with this option unckecked (absolute extrusion mode). Wipe " -"tower is only compatible with relative mode. It is recommended on most printers. " -"Default is checked" +"extruders work better with this option unckecked (absolute extrusion mode). " +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" "L'estrusione relativa è consigliata quando si utilizza l'opzione " "\"label_objects\". Alcuni estrusori funzionano meglio con questa opzione " -"unckecked (modalità di estrusione assoluta). La torre di pulizia è compatibile " -"solo con la modalità relativa. È consigliato sulla maggior parte delle stampanti. " -"Il valore predefinito è selezionato" +"unckecked (modalità di estrusione assoluta). La torre di pulizia è " +"compatibile solo con la modalità relativa. È consigliato sulla maggior parte " +"delle stampanti. Il valore predefinito è selezionato" msgid "" -"Classic wall generator produces walls with constant extrusion width and for very " -"thin areas is used gap-fill. Arachne engine produces walls with variable " -"extrusion width" +"Classic wall generator produces walls with constant extrusion width and for " +"very thin areas is used gap-fill. Arachne engine produces walls with " +"variable extrusion width" msgstr "" "La classica generazione di pareti produce pareti con larghezza di estrusione " -"costante e per aree molto sottili viene utilizzato il riempimento degli spazi " -"vuoti. Il motore Arachne produce pareti con larghezza di estrusione variabile." +"costante e per aree molto sottili viene utilizzato il riempimento degli " +"spazi vuoti. Il motore Arachne produce pareti con larghezza di estrusione " +"variabile." msgid "Classic" msgstr "Classico" @@ -12232,79 +12466,82 @@ msgid "" "segments. It's expressed as a percentage over nozzle diameter" msgstr "" "Quando si passa da un numero pareti diverso all'altro, man mano che il pezzo " -"diventa più sottile, viene assegnata una certa quantità di spazio per dividere o " -"unire i segmenti di parete. Viene espressa in percentuale sul diametro del nozzle." +"diventa più sottile, viene assegnata una certa quantità di spazio per " +"dividere o unire i segmenti di parete. Viene espressa in percentuale sul " +"diametro del nozzle." msgid "Wall transitioning filter margin" msgstr "Margine filtro transizione parete" msgid "" -"Prevent transitioning back and forth between one extra wall and one less. This " -"margin extends the range of extrusion widths which follow to [Minimum wall width " -"- margin, 2 * Minimum wall width + margin]. Increasing this margin reduces the " -"number of transitions, which reduces the number of extrusion starts/stops and " -"travel time. However, large extrusion width variation can lead to under- or " -"overextrusion problems. It's expressed as a percentage over nozzle diameter" +"Prevent transitioning back and forth between one extra wall and one less. " +"This margin extends the range of extrusion widths which follow to [Minimum " +"wall width - margin, 2 * Minimum wall width + margin]. Increasing this " +"margin reduces the number of transitions, which reduces the number of " +"extrusion starts/stops and travel time. However, large extrusion width " +"variation can lead to under- or overextrusion problems. It's expressed as a " +"percentage over nozzle diameter" msgstr "" -"Evita la transizione avanti e indietro tra una parete extra e una in meno. Questo " -"margine estende l'intervallo di estrusione che segue a [Larghezza minima parete - " -"margine, 2 * Larghezza minima parete + margine]. L'aumento di questo margine " -"riduce il numero di transizioni, il che riduce il numero di avvii/arresti " -"dell'estrusione e il tempo di viaggio. Tuttavia, una grande variazione della " -"larghezza di estrusione può portare a problemi di sotto-estrusione o sovra-" -"estrusione. È espresso in percentuale rispetto al diametro delnozzle" +"Evita la transizione avanti e indietro tra una parete extra e una in meno. " +"Questo margine estende l'intervallo di estrusione che segue a [Larghezza " +"minima parete - margine, 2 * Larghezza minima parete + margine]. L'aumento " +"di questo margine riduce il numero di transizioni, il che riduce il numero " +"di avvii/arresti dell'estrusione e il tempo di viaggio. Tuttavia, una grande " +"variazione della larghezza di estrusione può portare a problemi di sotto-" +"estrusione o sovra-estrusione. È espresso in percentuale rispetto al " +"diametro delnozzle" msgid "Wall transitioning threshold angle" msgstr "Angolo soglia transizione parete" msgid "" -"When to create transitions between even and odd numbers of walls. A wedge shape " -"with an angle greater than this setting will not have transitions and no walls " -"will be printed in the center to fill the remaining space. Reducing this setting " -"reduces the number and length of these center walls, but may leave gaps or " -"overextrude" +"When to create transitions between even and odd numbers of walls. A wedge " +"shape with an angle greater than this setting will not have transitions and " +"no walls will be printed in the center to fill the remaining space. Reducing " +"this setting reduces the number and length of these center walls, but may " +"leave gaps or overextrude" msgstr "" -"Quando si creano transizioni tra pareti in numero pari e dispari. Una forma a " -"cuneo con un angolo superiore a questa impostazione non avrà transizioni e non " -"verranno stampate pareti al centro per riempire lo spazio rimanente. Riducendo " -"questa impostazione, si riduce il numero e la lunghezza delle pareti centrali, ma " -"si possono lasciare spazi vuoti o sovraestrusi" +"Quando si creano transizioni tra pareti in numero pari e dispari. Una forma " +"a cuneo con un angolo superiore a questa impostazione non avrà transizioni e " +"non verranno stampate pareti al centro per riempire lo spazio rimanente. " +"Riducendo questa impostazione, si riduce il numero e la lunghezza delle " +"pareti centrali, ma si possono lasciare spazi vuoti o sovraestrusi" msgid "Wall distribution count" msgstr "Conteggio distribuzione parete" msgid "" -"The number of walls, counted from the center, over which the variation needs to " -"be spread. Lower values mean that the outer walls don't change in width" +"The number of walls, counted from the center, over which the variation needs " +"to be spread. Lower values mean that the outer walls don't change in width" msgstr "" "Il numero di pareti, contati a partire dal centro, sui quali deve essere " -"distribuita la variazione. Valori più bassi indicano che le pareti esterne non " -"cambiano in larghezza" +"distribuita la variazione. Valori più bassi indicano che le pareti esterne " +"non cambiano in larghezza" msgid "Minimum feature size" msgstr "Dimensione minima caratteristica" msgid "" -"Minimum thickness of thin features. Model features that are thinner than this " -"value will not be printed, while features thicker than the Minimum feature size " -"will be widened to the Minimum wall width. It's expressed as a percentage over " -"nozzle diameter" +"Minimum thickness of thin features. Model features that are thinner than " +"this value will not be printed, while features thicker than the Minimum " +"feature size will be widened to the Minimum wall width. It's expressed as a " +"percentage over nozzle diameter" msgstr "" -"Spessore minimo elementi sottili. Gli elementi del modello più sottili di questo " -"valore non verranno stampati, mentre le più spesse della dimensione minima " -"verranno ampliate fino alla larghezza minima della parete. È espresso in " -"percentuale rispetto al diametro del nozzle" +"Spessore minimo elementi sottili. Gli elementi del modello più sottili di " +"questo valore non verranno stampati, mentre le più spesse della dimensione " +"minima verranno ampliate fino alla larghezza minima della parete. È " +"espresso in percentuale rispetto al diametro del nozzle" msgid "First layer minimum wall width" msgstr "Larghezza minima della parete del primo strato" msgid "" -"The minimum wall width that should be used for the first layer is recommended to " -"be set to the same size as the nozzle. This adjustment is expected to enhance " -"adhesion." +"The minimum wall width that should be used for the first layer is " +"recommended to be set to the same size as the nozzle. This adjustment is " +"expected to enhance adhesion." msgstr "" -"Si consiglia di impostare la larghezza minima della parete da utilizzare per il " -"primo strato alla stessa dimensione dell'ugello. Si prevede che questo " +"Si consiglia di impostare la larghezza minima della parete da utilizzare per " +"il primo strato alla stessa dimensione dell'ugello. Si prevede che questo " "aggiustamento migliorerà l'adesione." msgid "Minimum wall width" @@ -12313,26 +12550,27 @@ msgstr "Larghezza minima parete" msgid "" "Width of the wall that will replace thin features (according to the Minimum " "feature size) of the model. If the Minimum wall width is thinner than the " -"thickness of the feature, the wall will become as thick as the feature itself. " -"It's expressed as a percentage over nozzle diameter" +"thickness of the feature, the wall will become as thick as the feature " +"itself. It's expressed as a percentage over nozzle diameter" msgstr "" "Larghezza della parete che sostituirà gli elementi sottili (in base alla " -"dimensione minima dell'elemento) del modello. Se la larghezza minima della parete " -"è più sottile dello spessore dell'elemento, la parete diventerà spessa quanto " -"l'elemento stesso. È espresso in percentuale rispetto al diametro del nozzle" +"dimensione minima dell'elemento) del modello. Se la larghezza minima della " +"parete è più sottile dello spessore dell'elemento, la parete diventerà " +"spessa quanto l'elemento stesso. È espresso in percentuale rispetto al " +"diametro del nozzle" msgid "Detect narrow internal solid infill" msgstr "Rileva riempimento solido interno stretto" msgid "" "This option will auto detect narrow internal solid infill area. If enabled, " -"concentric pattern will be used for the area to speed printing up. Otherwise, " -"rectilinear pattern is used defaultly." +"concentric pattern will be used for the area to speed printing up. " +"Otherwise, rectilinear pattern is used defaultly." msgstr "" -"Questa rileva automaticamente le aree interne strette di riempimento solido. Se " -"abilitato, la trama concentrica verrà utilizzato per l'area per velocizzare la " -"stampa. Altrimenti, la trama rettilinea verrà utilizzata per impostazione " -"predefinita." +"Questa rileva automaticamente le aree interne strette di riempimento solido. " +"Se abilitato, la trama concentrica verrà utilizzato per l'area per " +"velocizzare la stampa. Altrimenti, la trama rettilinea verrà utilizzata per " +"impostazione predefinita." msgid "invalid value " msgstr "Valore non valido" @@ -12366,8 +12604,8 @@ msgstr "Accerta che sia sul piano" msgid "" "Lift the object above the bed when it is partially below. Disabled by default" msgstr "" -"Sollevare l'oggetto sopra il letto quando è parzialmente sotto. Disabilitato per " -"impostazione predefinita" +"Sollevare l'oggetto sopra il letto quando è parzialmente sotto. Disabilitato " +"per impostazione predefinita" msgid "Orient Options" msgstr "Opzioni di orientamento" @@ -12388,8 +12626,9 @@ msgid "Data directory" msgstr "Directory dati" msgid "" -"Load and store settings at the given directory. This is useful for maintaining " -"different profiles or including configurations from a network storage." +"Load and store settings at the given directory. This is useful for " +"maintaining different profiles or including configurations from a network " +"storage." msgstr "" "Carica e archivia le impostazione in una data cartella. Questo è utile per " "mantenere diversi profili o aggiungere configurazioni da un archivio di rete." @@ -12445,20 +12684,21 @@ msgid "Slicing mesh" msgstr "Slicing mesh" msgid "" -"No layers were detected. You might want to repair your STL file(s) or check their " -"size or thickness and retry.\n" +"No layers were detected. You might want to repair your STL file(s) or check " +"their size or thickness and retry.\n" msgstr "" -"Non sono stati rilevati layers. Ripara il file STL o controlla le dimensioni o lo " -"spessore e riprova.\n" +"Non sono stati rilevati layers. Ripara il file STL o controlla le dimensioni " +"o lo spessore e riprova.\n" msgid "" "An object's XY size compensation will not be used because it is also color-" "painted.\n" "XY Size compensation can not be combined with color-painting." msgstr "" -"La compensazione delle dimensioni XY di un oggetto non verrà utilizzata perché è " -"anche dipinta a colori.\n" -"La compensazione delle dimensioni XY non può essere combinata con la colorazione." +"La compensazione delle dimensioni XY di un oggetto non verrà utilizzata " +"perché è anche dipinta a colori.\n" +"La compensazione delle dimensioni XY non può essere combinata con la " +"colorazione." #, c-format, boost-format msgid "Support: generate toolpath at layer %d" @@ -12491,10 +12731,11 @@ msgstr "Supporto: correzione dei buchi nel layer %d" msgid "Support: propagate branches at layer %d" msgstr "Supporto: propagazione rami al layer %d" -msgid "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Formato file sconosciuto: il file di input deve avere estensione .stl, .obj o ." -"amf(.xml)." +"Formato file sconosciuto: il file di input deve avere estensione .stl, .obj " +"o .amf(.xml)." msgid "Loading of a model file failed." msgstr "Caricamento file del modello non riuscito." @@ -12504,7 +12745,8 @@ msgstr "Impossibile leggere il file fornito perché è vuoto." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Formato file sconosciuto: il file di input deve avere estensione .3mf o .zip.amf." +"Formato file sconosciuto: il file di input deve avere estensione .3mf o .zip." +"amf." msgid "Canceled" msgstr "Annullato" @@ -12560,16 +12802,18 @@ msgstr "Fine" msgid "How to use calibration result?" msgstr "Come utilizzare il risultato della calibrazione?" -msgid "You could change the Flow Dynamics Calibration Factor in material editing" +msgid "" +"You could change the Flow Dynamics Calibration Factor in material editing" msgstr "" -"È possibile modificare il fattore di calibrazione della dinamica del flusso nella " -"modifica del materiale" +"È possibile modificare il fattore di calibrazione della dinamica del flusso " +"nella modifica del materiale" msgid "" "The current firmware version of the printer does not support calibration.\n" "Please upgrade the printer firmware." msgstr "" -"La versione corrente del firmware della stampante non supporta la calibrazione.\n" +"La versione corrente del firmware della stampante non supporta la " +"calibrazione.\n" "Aggiornare il firmware della stampante." msgid "Calibration not supported" @@ -12618,7 +12862,8 @@ msgid "The selected preset: %s is not found." msgstr "Il preset selezionato: %s non è stato trovato." msgid "The name cannot be the same as the system preset name." -msgstr "Il nome non può essere uguale al nome della preimpostazione di sistema." +msgstr "" +"Il nome non può essere uguale al nome della preimpostazione di sistema." msgid "The name is the same as another existing preset name" msgstr "Il nome è lo stesso di un altro nome predefinito esistente" @@ -12626,8 +12871,10 @@ msgstr "Il nome è lo stesso di un altro nome predefinito esistente" msgid "create new preset failed." msgstr "La creazione di un nuovo predefinito non è riuscita." -msgid "Are you sure to cancel the current calibration and return to the home page?" -msgstr "Sei sicuro di annullare la calibrazione corrente e tornare alla home page?" +msgid "" +"Are you sure to cancel the current calibration and return to the home page?" +msgstr "" +"Sei sicuro di annullare la calibrazione corrente e tornare alla home page?" msgid "No Printer Connected!" msgstr "Nessuna stampante collegata!" @@ -12649,7 +12896,8 @@ msgstr "Il risultato del test non riuscito è stato eliminato." msgid "Flow Dynamics Calibration result has been saved to the printer" msgstr "" -"Il risultato della calibrazione di Flow Dynamics è stato salvato nella stampante" +"Il risultato della calibrazione di Flow Dynamics è stato salvato nella " +"stampante" msgid "Internal Error" msgstr "Errore interno" @@ -12671,21 +12919,21 @@ msgid "When do you need Flow Dynamics Calibration" msgstr "Quando è necessaria la calibrazione della dinamica del flusso" msgid "" -"We now have added the auto-calibration for different filaments, which is fully " -"automated and the result will be saved into the printer for future use. You only " -"need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the filament is " -"damp;\n" +"We now have added the auto-calibration for different filaments, which is " +"fully automated and the result will be saved into the printer for future " +"use. You only need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the " +"filament is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" -"3. If the max volumetric speed or print temperature is changed in the filament " -"setting." +"3. If the max volumetric speed or print temperature is changed in the " +"filament setting." msgstr "" "Ora abbiamo aggiunto la calibrazione automatica per diversi filamenti, che è " -"completamente automatizzata e il risultato verrà salvato nella stampante per un " -"uso futuro. È necessario eseguire la calibrazione solo nei seguenti casi " +"completamente automatizzata e il risultato verrà salvato nella stampante per " +"un uso futuro. È necessario eseguire la calibrazione solo nei seguenti casi " "limitati:\n" -"1. Se si introduce un nuovo filamento di marche/modelli diversi o il filamento è " -"umido;\n" +"1. Se si introduce un nuovo filamento di marche/modelli diversi o il " +"filamento è umido;\n" "2. se l'ugello è usurato o sostituito con uno nuovo;\n" "3. Se la velocità volumetrica massima o la temperatura di stampa vengono " "modificate nell'impostazione del filamento." @@ -12696,41 +12944,41 @@ msgstr "Informazioni su questa calibrazione" msgid "" "Please find the details of Flow Dynamics Calibration from our wiki.\n" "\n" -"Usually the calibration is unnecessary. When you start a single color/material " -"print, with the \"flow dynamics calibration\" option checked in the print start " -"menu, the printer will follow the old way, calibrate the filament before the " -"print; When you start a multi color/material print, the printer will use the " -"default compensation parameter for the filament during every filament switch " -"which will have a good result in most cases.\n" +"Usually the calibration is unnecessary. When you start a single color/" +"material print, with the \"flow dynamics calibration\" option checked in the " +"print start menu, the printer will follow the old way, calibrate the " +"filament before the print; When you start a multi color/material print, the " +"printer will use the default compensation parameter for the filament during " +"every filament switch which will have a good result in most cases.\n" "\n" "Please note there are a few cases that will make the calibration result not " -"reliable: using a texture plate to do the calibration; the build plate does not " -"have good adhesion (please wash the build plate or apply gluestick!) ...You can " -"find more from our wiki.\n" +"reliable: using a texture plate to do the calibration; the build plate does " +"not have good adhesion (please wash the build plate or apply gluestick!) ..." +"You can find more from our wiki.\n" "\n" -"The calibration results have about 10 percent jitter in our test, which may cause " -"the result not exactly the same in each calibration. We are still investigating " -"the root cause to do improvements with new updates." +"The calibration results have about 10 percent jitter in our test, which may " +"cause the result not exactly the same in each calibration. We are still " +"investigating the root cause to do improvements with new updates." msgstr "" -"I dettagli della calibrazione dinamica del flusso sono disponibili nel nostro " -"wiki.\n" +"I dettagli della calibrazione dinamica del flusso sono disponibili nel " +"nostro wiki.\n" "\n" -"Di solito la calibrazione non è necessaria. Quando si avvia una stampa a singolo " -"colore/materiale, con l'opzione \"calibrazione dinamica del flusso\" selezionata " -"nel menu di avvio della stampa, la stampante seguirà il vecchio modo, calibrando " -"il filamento prima della stampa; Quando si avvia una stampa multicolore/" -"materiale, la stampante utilizzerà il parametro di compensazione predefinito per " -"il filamento durante ogni cambio di filamento, che avrà un buon risultato nella " -"maggior parte dei casi.\n" +"Di solito la calibrazione non è necessaria. Quando si avvia una stampa a " +"singolo colore/materiale, con l'opzione \"calibrazione dinamica del flusso\" " +"selezionata nel menu di avvio della stampa, la stampante seguirà il vecchio " +"modo, calibrando il filamento prima della stampa; Quando si avvia una stampa " +"multicolore/materiale, la stampante utilizzerà il parametro di compensazione " +"predefinito per il filamento durante ogni cambio di filamento, che avrà un " +"buon risultato nella maggior parte dei casi.\n" "\n" "Si prega di notare che ci sono alcuni casi che renderanno il risultato della " -"calibrazione non affidabile: utilizzo di una piastra di texture per eseguire la " -"calibrazione; La piastra di costruzione non ha una buona adesione (si prega di " -"lavare la piastra di costruzione o applicare la colla stick!) ... Puoi trovare di " -"più dal nostro wiki.\n" +"calibrazione non affidabile: utilizzo di una piastra di texture per eseguire " +"la calibrazione; La piastra di costruzione non ha una buona adesione (si " +"prega di lavare la piastra di costruzione o applicare la colla stick!) ... " +"Puoi trovare di più dal nostro wiki.\n" "\n" -"I risultati della calibrazione hanno un jitter di circa il 10% nel nostro test, " -"il che potrebbe causare un risultato non esattamente lo stesso in ogni " +"I risultati della calibrazione hanno un jitter di circa il 10% nel nostro " +"test, il che potrebbe causare un risultato non esattamente lo stesso in ogni " "calibrazione. Stiamo ancora indagando sulla causa principale per apportare " "miglioramenti con i nuovi aggiornamenti." @@ -12740,85 +12988,88 @@ msgstr "Quando utilizzare la calibrazione della portata" msgid "" "After using Flow Dynamics Calibration, there might still be some extrusion " "issues, such as:\n" -"1. Over-Extrusion: Excess material on your printed object, forming blobs or zits, " -"or the layers seem thicker than expected and not uniform.\n" -"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top " -"layer of the model, even when printing slowly.\n" +"1. Over-Extrusion: Excess material on your printed object, forming blobs or " +"zits, or the layers seem thicker than expected and not uniform.\n" +"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " +"top layer of the model, even when printing slowly.\n" "3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" -"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they " -"should be." +"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " +"they should be." msgstr "" -"Dopo aver utilizzato la calibrazione di Flow Dynamics, potrebbero esserci ancora " -"alcuni problemi di estrusione, ad esempio:\n" -"1. Sovraestrusione: materiale in eccesso sull'oggetto stampato, formazione di " -"bolle o brufoli o strati che sembrano più spessi del previsto e non uniformi.\n" +"Dopo aver utilizzato la calibrazione di Flow Dynamics, potrebbero esserci " +"ancora alcuni problemi di estrusione, ad esempio:\n" +"1. Sovraestrusione: materiale in eccesso sull'oggetto stampato, formazione " +"di bolle o brufoli o strati che sembrano più spessi del previsto e non " +"uniformi.\n" "2. Sottoestrusione: strati molto sottili, resistenza al riempimento debole o " "spazi vuoti nello strato superiore del modello, anche quando si stampa " "lentamente.\n" -"3. Scarsa qualità della superficie: la superficie delle stampe sembra ruvida o " -"irregolare.\n" -"4. Integrità strutturale debole: le stampe si rompono facilmente o non sembrano " -"robuste come dovrebbero essere." +"3. Scarsa qualità della superficie: la superficie delle stampe sembra ruvida " +"o irregolare.\n" +"4. Integrità strutturale debole: le stampe si rompono facilmente o non " +"sembrano robuste come dovrebbero essere." msgid "" -"In addition, Flow Rate Calibration is crucial for foaming materials like LW-PLA " -"used in RC planes. These materials expand greatly when heated, and calibration " -"provides a useful reference flow rate." +"In addition, Flow Rate Calibration is crucial for foaming materials like LW-" +"PLA used in RC planes. These materials expand greatly when heated, and " +"calibration provides a useful reference flow rate." msgstr "" -"Inoltre, la calibrazione della portata è fondamentale per i materiali schiumogeni " -"come l'LW-PLA utilizzato negli aerei RC. Questi materiali si espandono " -"notevolmente quando vengono riscaldati e la calibrazione fornisce un'utile " -"portata di riferimento." +"Inoltre, la calibrazione della portata è fondamentale per i materiali " +"schiumogeni come l'LW-PLA utilizzato negli aerei RC. Questi materiali si " +"espandono notevolmente quando vengono riscaldati e la calibrazione fornisce " +"un'utile portata di riferimento." msgid "" -"Flow Rate Calibration measures the ratio of expected to actual extrusion volumes. " -"The default setting works well in Bambu Lab printers and official filaments as " -"they were pre-calibrated and fine-tuned. For a regular filament, you usually " -"won't need to perform a Flow Rate Calibration unless you still see the listed " -"defects after you have done other calibrations. For more details, please check " -"out the wiki article." +"Flow Rate Calibration measures the ratio of expected to actual extrusion " +"volumes. The default setting works well in Bambu Lab printers and official " +"filaments as they were pre-calibrated and fine-tuned. For a regular " +"filament, you usually won't need to perform a Flow Rate Calibration unless " +"you still see the listed defects after you have done other calibrations. For " +"more details, please check out the wiki article." msgstr "" "La calibrazione della portata misura il rapporto tra i volumi di estrusione " "previsti e quelli effettivi. L'impostazione predefinita funziona bene nelle " -"stampanti Bambu Lab e nei filamenti ufficiali in quanto sono stati pre-calibrati " -"e messi a punto. Per un filamento normale, di solito non è necessario eseguire " -"una calibrazione della portata, a meno che non si vedano ancora i difetti " -"elencati dopo aver eseguito altre calibrazioni. Per maggiori dettagli, consulta " -"l'articolo wiki." +"stampanti Bambu Lab e nei filamenti ufficiali in quanto sono stati pre-" +"calibrati e messi a punto. Per un filamento normale, di solito non è " +"necessario eseguire una calibrazione della portata, a meno che non si vedano " +"ancora i difetti elencati dopo aver eseguito altre calibrazioni. Per " +"maggiori dettagli, consulta l'articolo wiki." msgid "" -"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, directly " -"measuring the calibration patterns. However, please be advised that the efficacy " -"and accuracy of this method may be compromised with specific types of materials. " -"Particularly, filaments that are transparent or semi-transparent, sparkling-" -"particled, or have a high-reflective finish may not be suitable for this " -"calibration and can produce less-than-desirable results.\n" +"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, " +"directly measuring the calibration patterns. However, please be advised that " +"the efficacy and accuracy of this method may be compromised with specific " +"types of materials. Particularly, filaments that are transparent or semi-" +"transparent, sparkling-particled, or have a high-reflective finish may not " +"be suitable for this calibration and can produce less-than-desirable " +"results.\n" "\n" -"The calibration results may vary between each calibration or filament. We are " -"still improving the accuracy and compatibility of this calibration through " -"firmware updates over time.\n" +"The calibration results may vary between each calibration or filament. We " +"are still improving the accuracy and compatibility of this calibration " +"through firmware updates over time.\n" "\n" -"Caution: Flow Rate Calibration is an advanced process, to be attempted only by " -"those who fully understand its purpose and implications. Incorrect usage can lead " -"to sub-par prints or printer damage. Please make sure to carefully read and " -"understand the process before doing it." +"Caution: Flow Rate Calibration is an advanced process, to be attempted only " +"by those who fully understand its purpose and implications. Incorrect usage " +"can lead to sub-par prints or printer damage. Please make sure to carefully " +"read and understand the process before doing it." msgstr "" -"La calibrazione automatica della portata utilizza la tecnologia Micro-Lidar di " -"Bambu Lab, misurando direttamente i modelli di calibrazione. Tuttavia, si prega " -"di notare che l'efficacia e l'accuratezza di questo metodo possono essere " -"compromesse con tipi specifici di materiali. In particolare, i filamenti " -"trasparenti o semitrasparenti, con particelle scintillanti o con una finitura " -"altamente riflettente potrebbero non essere adatti a questa calibrazione e " -"possono produrre risultati tutt'altro che desiderabili.\n" +"La calibrazione automatica della portata utilizza la tecnologia Micro-Lidar " +"di Bambu Lab, misurando direttamente i modelli di calibrazione. Tuttavia, si " +"prega di notare che l'efficacia e l'accuratezza di questo metodo possono " +"essere compromesse con tipi specifici di materiali. In particolare, i " +"filamenti trasparenti o semitrasparenti, con particelle scintillanti o con " +"una finitura altamente riflettente potrebbero non essere adatti a questa " +"calibrazione e possono produrre risultati tutt'altro che desiderabili.\n" "\n" -"I risultati della calibrazione possono variare a seconda della calibrazione o del " -"filamento. Stiamo ancora migliorando l'accuratezza e la compatibilità di questa " -"calibrazione attraverso aggiornamenti del firmware nel tempo.\n" +"I risultati della calibrazione possono variare a seconda della calibrazione " +"o del filamento. Stiamo ancora migliorando l'accuratezza e la compatibilità " +"di questa calibrazione attraverso aggiornamenti del firmware nel tempo.\n" "\n" "Attenzione: La taratura della portata è un processo avanzato, che può essere " -"tentato solo da coloro che ne comprendono appieno lo scopo e le implicazioni. Un " -"uso errato può causare stampe scadenti o danni alla stampante. Assicurati di " -"leggere attentamente e comprendere il processo prima di farlo." +"tentato solo da coloro che ne comprendono appieno lo scopo e le " +"implicazioni. Un uso errato può causare stampe scadenti o danni alla " +"stampante. Assicurati di leggere attentamente e comprendere il processo " +"prima di farlo." msgid "When you need Max Volumetric Speed Calibration" msgstr "Quando è necessaria la calibrazione della velocità volumetrica massima" @@ -12828,8 +13079,8 @@ msgstr "Sovraestrusione o sottoestrusione" msgid "Max Volumetric Speed calibration is recommended when you print with:" msgstr "" -"La calibrazione della velocità volumetrica massima è consigliata quando si stampa " -"con:" +"La calibrazione della velocità volumetrica massima è consigliata quando si " +"stampa con:" msgid "material with significant thermal shrinkage/expansion, such as..." msgstr "materiale con notevole ritiro/dilatazione termica, come..." @@ -12842,37 +13093,38 @@ msgstr "" "Abbiamo trovato il miglior fattore di calibrazione della dinamica del flusso" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The failed " -"test result would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The " +"failed test result would be dropped." msgstr "" "Parte della calibrazione non è riuscita! È possibile pulire la piastra e " "riprovare. Il risultato del test non riuscito verrebbe eliminato." msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in the Name" +"*We recommend you to add brand, materia, type, and even humidity level in " +"the Name" msgstr "" -"*Ti consigliamo di aggiungere marca, materia, tipo e persino livello di umidità " -"nel Nome" +"*Ti consigliamo di aggiungere marca, materia, tipo e persino livello di " +"umidità nel Nome" msgid "Failed" msgstr "Fallito" msgid "" -"Only one of the results with the same name will be saved. Are you sure you want " -"to overrides the other results?" +"Only one of the results with the same name will be saved. Are you sure you " +"want to overrides the other results?" msgstr "" -"Verrà salvato solo uno dei risultati con lo stesso nome. Si è sicuri di voler " -"sovrascrivere gli altri risultati?" +"Verrà salvato solo uno dei risultati con lo stesso nome. Si è sicuri di " +"voler sovrascrivere gli altri risultati?" #, c-format, boost-format msgid "" -"There is already a historical calibration result with the same name: %s. Only one " -"of the results with the same name is saved. Are you sure you want to overrides " -"the historical result?" +"There is already a historical calibration result with the same name: %s. " +"Only one of the results with the same name is saved. Are you sure you want " +"to overrides the historical result?" msgstr "" -"Esiste già un risultato di calibrazione storico con lo stesso nome: %s. Viene " -"salvato solo uno dei risultati con lo stesso nome. Si è sicuri di voler eseguire " -"l'override del risultato cronologico?" +"Esiste già un risultato di calibrazione storico con lo stesso nome: %s. " +"Viene salvato solo uno dei risultati con lo stesso nome. Si è sicuri di " +"voler eseguire l'override del risultato cronologico?" msgid "Please find the best line on your plate" msgstr "Trova la linea migliore nel tuo piatto" @@ -12914,7 +13166,8 @@ msgid "Please find the best object on your plate" msgstr "Trova l'oggetto migliore nel tuo piatto" msgid "Fill in the value above the block with smoothest top surface" -msgstr "Riempi il valore sopra il blocco con la superficie superiore più liscia" +msgstr "" +"Riempi il valore sopra il blocco con la superficie superiore più liscia" msgid "Skip Calibration2" msgstr "Salta calibrazione2" @@ -12927,7 +13180,8 @@ msgid "Please choose a block with smoothest top surface" msgstr "Si prega di scegliere un blocco con la superficie superiore più liscia" msgid "Please choose a block with smoothest top surface." -msgstr "Si prega di scegliere un blocco con la superficie superiore più liscia." +msgstr "" +"Si prega di scegliere un blocco con la superficie superiore più liscia." msgid "Please input a valid value (0 <= Max Volumetric Speed <= 60)" msgstr "Inserire un valore valido (0 <= Velocità volumetrica massima <= 60)" @@ -12945,11 +13199,11 @@ msgid "Title" msgstr "Titolo" msgid "" -"A test model will be printed. Please clear the build plate and place it back to " -"the hot bed before calibration." +"A test model will be printed. Please clear the build plate and place it back " +"to the hot bed before calibration." msgstr "" -"Verrà stampato un modello di prova. Si prega di pulire la piastra di costruzione " -"e riposizionarla sul letto caldo prima della calibrazione." +"Verrà stampato un modello di prova. Si prega di pulire la piastra di " +"costruzione e riposizionarla sul letto caldo prima della calibrazione." msgid "Printing Parameters" msgstr "Parametri di stampa" @@ -12979,7 +13233,8 @@ msgid "" msgstr "" "Suggerimenti per il materiale di calibrazione: \n" "- Materiali che possono condividere la stessa temperatura del letto caldo\n" -"- Diverse marche e famiglie di filamenti (Marca = Bambu, Famiglia = Basic, Matte)" +"- Diverse marche e famiglie di filamenti (Marca = Bambu, Famiglia = Basic, " +"Matte)" msgid "Pattern" msgstr "Trama" @@ -12992,7 +13247,8 @@ msgid "%s is not compatible with %s" msgstr "%s non è compatibile con %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." -msgstr "Il TPU non è supportato per la calibrazione automatica di Flow Dynamics." +msgstr "" +"Il TPU non è supportato per la calibrazione automatica di Flow Dynamics." msgid "Connecting to printer" msgstr "Collegamento alla stampante" @@ -13014,7 +13270,8 @@ msgstr "0.005" msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "" -"Il diametro dell'ugello è stato sincronizzato dalle impostazioni della stampante" +"Il diametro dell'ugello è stato sincronizzato dalle impostazioni della " +"stampante" msgid "From Volumetric Speed" msgstr "Dalla velocità volumetrica" @@ -13429,10 +13686,11 @@ msgstr "Il fornitore non è selezionato, riseleziona il fornitore." msgid "Custom vendor is not input, please input custom vendor." msgstr "" -"Il fornitore personalizzato non viene inserito, si prega di inserire il fornitore " -"personalizzato." +"Il fornitore personalizzato non viene inserito, si prega di inserire il " +"fornitore personalizzato." -msgid "\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." msgstr "" "\"Bambu\" o \"Generico\" non possono essere utilizzati come Fornitore per " "filamenti personalizzati." @@ -13444,28 +13702,30 @@ msgid "Filament serial is not inputed, please input serial." msgstr "Il seriale del filamento non è inserito, inserire il seriale." msgid "" -"There may be escape characters in the vendor or serial input of filament. Please " -"delete and re-enter." +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." msgstr "" "Potrebbero essere presenti caratteri da evitare nel fornitore o nell'input " "seriale del filamento. Si prega di eliminare e inserire nuovamente." msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." msgstr "" -"Tutti gli input nel fornitore personalizzato o nel numero di serie sono spazi. Si " -"prega di inserire di nuovo." +"Tutti gli input nel fornitore personalizzato o nel numero di serie sono " +"spazi. Si prega di inserire di nuovo." msgid "The vendor can not be a number. Please re-enter." msgstr "Il venditore non può essere un numero. Si prega di inserire di nuovo." -msgid "You have not selected a printer or preset yet. Please select at least one." +msgid "" +"You have not selected a printer or preset yet. Please select at least one." msgstr "" "Non è stata ancora selezionata una stampante o un Preset. Si prega di " "selezionarne almeno uno." msgid "Some existing presets have failed to be created, as follows:\n" msgstr "" -"Non è stato possibile creare alcuni preset esistenti, come indicato di seguito:\n" +"Non è stato possibile creare alcuni preset esistenti, come indicato di " +"seguito:\n" msgid "" "\n" @@ -13475,13 +13735,14 @@ msgstr "" "Vuoi riscriverlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more prinetrs, Please go to printer selection" msgstr "" "Rinomineremo le impostazioni predefinite come \"Tipo di fornitore seriale " "@printer selezionato\". \n" -" Per aggiungere impostazioni predefinite per altre stampanti, vai alla selezione " -"della stampante." +" Per aggiungere impostazioni predefinite per altre stampanti, vai alla " +"selezione della stampante." msgid "Create Printer/Nozzle" msgstr "Crea stampante/ugello" @@ -13506,7 +13767,8 @@ msgstr "Crea tipo" msgid "The model is not fond, place reselect vendor." msgstr "" -"La modello non è stato trovato. Si prega di selezionare nuovamente il fornitore." +"La modello non è stato trovato. Si prega di selezionare nuovamente il " +"fornitore." msgid "Select Model" msgstr "Seleziona modello" @@ -13553,10 +13815,12 @@ msgstr "Il file supera i %d MB, si prega di importarlo di nuovo." msgid "Exception in obtaining file size, please import again." msgstr "" -"Eccezione nell'ottenere la dimensione del file, si prega di importare di nuovo." +"Eccezione nell'ottenere la dimensione del file, si prega di importare di " +"nuovo." msgid "Preset path is not find, please reselect vendor." -msgstr "Il percorso preimpostato non viene trovato, riselezionare il fornitore." +msgstr "" +"Il percorso preimpostato non viene trovato, riselezionare il fornitore." msgid "The printer model was not found, please reselect." msgstr "Il modello della stampante non è stato trovato, riselezionare." @@ -13566,8 +13830,8 @@ msgstr "Il diametro dell'ugello non trovato, riselezionare." msgid "The printer preset is not fond, place reselect." msgstr "" -"La configurazione predefinita della stampante non è stata trovata. Per favore, " -"seleziona nuovamente." +"La configurazione predefinita della stampante non è stata trovata. Per " +"favore, seleziona nuovamente." msgid "Printer Preset" msgstr "Preimpostazione stampante" @@ -13585,39 +13849,41 @@ msgid "Back Page 1" msgstr "Indietro Pagina 1" msgid "" -"You have not yet chosen which printer preset to create based on. Please choose " -"the vendor and model of the printer" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" msgstr "" -"Non avete ancora scelto l'impostazione predefinita della stampante in base alla " -"quale creare. Si prega di scegliere il fornitore e il modello della stampante" +"Non avete ancora scelto l'impostazione predefinita della stampante in base " +"alla quale creare. Si prega di scegliere il fornitore e il modello della " +"stampante" msgid "" "You have entered an illegal input in the printable area section on the first " "page. Please check before creating it." msgstr "" -"Hai inserito un input non valido nella sezione dell'area stampabile nella prima " -"pagina. Controlla prima di crearlo." +"Hai inserito un input non valido nella sezione dell'area stampabile nella " +"prima pagina. Controlla prima di crearlo." msgid "The custom printer or model is not inputed, place input." msgstr "" "La stampante o il modello personalizzato non viene immesso, inserire l'input." msgid "" -"The printer preset you created already has a preset with the same name. Do you " -"want to overwrite it?\n" -"\tYes: Overwrite the printer preset with the same name, and filament and process " -"presets with the same preset name will be recreated \n" -"and filament and process presets without the same preset name will be reserve.\n" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" "\tCancel: Do not create a preset, return to the creation interface." msgstr "" "La configurazione predefinita della stampante che hai creato ha già una " "configurazione predefinita con lo stesso nome. Vuoi sovrascriverla?\n" -"\tSì: Sovrascrivi la configurazione predefinita della stampante con lo stesso " -"nome, e le configurazioni predefinite del filamento e del processo con lo stesso " -"nome saranno ricreate,\n" +"\tSì: Sovrascrivi la configurazione predefinita della stampante con lo " +"stesso nome, e le configurazioni predefinite del filamento e del processo " +"con lo stesso nome saranno ricreate,\n" " mentre quelle senza lo stesso nome saranno conservate.\n" -" \tAnnulla: Non creare una configurazione predefinita, torna all'interfaccia di " -"creazione." +" \tAnnulla: Non creare una configurazione predefinita, torna all'interfaccia " +"di creazione." msgid "You need to select at least one filament preset." msgstr "È necessario selezionare almeno un preset filamento." @@ -13638,17 +13904,18 @@ msgid "Current vendor has no models, please reselect." msgstr "Il fornitore attuale non ha modelli, si prega di riselezionare." msgid "" -"You have not selected the vendor and model or inputed the custom vendor and model." +"You have not selected the vendor and model or inputed the custom vendor and " +"model." msgstr "" -"Non sono stati selezionati il fornitore e il modello o non sono stati immessi il " -"fornitore e il modello personalizzati." +"Non sono stati selezionati il fornitore e il modello o non sono stati " +"immessi il fornitore e il modello personalizzati." msgid "" "There may be escape characters in the custom printer vendor or model. Please " "delete and re-enter." msgstr "" -"Potrebbero essere presenti caratteri da evitare nel fornitore o nel modello di " -"stampante personalizzata. Si prega di eliminare e inserire nuovamente." +"Potrebbero essere presenti caratteri da evitare nel fornitore o nel modello " +"di stampante personalizzata. Si prega di eliminare e inserire nuovamente." msgid "" "All inputs in the custom printer vendor or model are spaces. Please re-enter." @@ -13660,8 +13927,10 @@ msgid "Please check bed printable shape and origin input." msgstr "" "Si prega di controllare la forma stampabile del letto e l'input dell'origine." -msgid "You have not yet selected the printer to replace the nozzle, please choose." -msgstr "Non hai ancora selezionato la stampante per sostituire l'ugello, scegli." +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" +"Non hai ancora selezionato la stampante per sostituire l'ugello, scegli." msgid "Create Printer Successful" msgstr "Creazione di una stampante riuscita" @@ -13673,21 +13942,23 @@ msgid "Printer Created" msgstr "Stampante creata" msgid "Please go to printer settings to edit your presets" -msgstr "Vai alle impostazioni della stampante per modificare le tue preimpostazioni" +msgstr "" +"Vai alle impostazioni della stampante per modificare le tue preimpostazioni" msgid "Filament Created" msgstr "Filamento creato" msgid "" "Please go to filament setting to edit your presets if you need.\n" -"Please note that nozzle temperature, hot bed temperature, and maximum volumetric " -"speed have a significant impact on printing quality. Please set them carefully." +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." msgstr "" "Vai alle impostazioni del filamento per modificare le tue impostazioni " "predefinite se necessario. \n" -"Nota che la temperatura della ugello, la temperatura del letto riscaldato e la " -"velocità volumetrica massima hanno un impatto significativo sulla qualità di " -"stampa. Impostale con attenzione." +"Nota che la temperatura della ugello, la temperatura del letto riscaldato e " +"la velocità volumetrica massima hanno un impatto significativo sulla qualità " +"di stampa. Impostale con attenzione." msgid "Printer Setting" msgstr "Impostazione della stampante" @@ -13695,11 +13966,11 @@ msgstr "Impostazione della stampante" msgid "Export Configs" msgstr "Esporta &Configurazioni" -msgid "Printer config bundle(.bbscfg)" -msgstr "Bundle di configurazione della stampante (.bbscfg)" +msgid "Printer config bundle(.orca_printer)" +msgstr "Bundle di configurazione della stampante (.orca_printer)" -msgid "Filament bundle(.bbsflmt)" -msgstr "Bundle filamenti (.bbsflmt)" +msgid "Filament bundle(.orca_filament)" +msgstr "Bundle filamenti (.orca_filament)" msgid "Printer presets(.zip)" msgstr "Preimpostazioni della stampante (.zip)" @@ -13730,9 +14001,10 @@ msgstr "Esportazione riuscita" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to clear it " -"and rebuild it.\n" -"If not, a time suffix will be added, and you can modify the name after creation." +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." msgstr "" "La cartella '%s' esiste già nella directory corrente. Vuoi cancellarla e " "ricostruirla.\n" @@ -13740,11 +14012,11 @@ msgstr "" "modificare il nome dopo la creazione." msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" -"Stampante e tutte le preimpostazioni di filamento e processo che appartengono " -"alla stampante. \n" +"Stampante e tutte le preimpostazioni di filamento e processo che " +"appartengono alla stampante. \n" "Può essere condiviso con altri." msgid "" @@ -13755,27 +14027,29 @@ msgstr "" "Può essere condiviso con altri." msgid "" -"Only display printer names with changes to printer, filament, and process presets." +"Only display printer names with changes to printer, filament, and process " +"presets." msgstr "" -"Mostrare solo i nomi delle stampanti con modifiche alle impostazioni predefinite " -"della stampante, del filamento e del processo." +"Mostrare solo i nomi delle stampanti con modifiche alle impostazioni " +"predefinite della stampante, del filamento e del processo." msgid "Only display the filament names with changes to filament presets." msgstr "" -"Mostrare solo i nomi dei filamenti con modifiche alle impostazioni predefinite " -"del filamento." +"Mostrare solo i nomi dei filamenti con modifiche alle impostazioni " +"predefinite del filamento." msgid "" -"Only printer names with user printer presets will be displayed, and each preset " -"you choose will be exported as a zip." +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." msgstr "" -"Verranno visualizzati solo i nomi delle stampanti con le preimpostazioni della " -"stampante dell'utente e ogni preimpostazione scelta verrà esportata come zip." +"Verranno visualizzati solo i nomi delle stampanti con le preimpostazioni " +"della stampante dell'utente e ogni preimpostazione scelta verrà esportata " +"come zip." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported " -"as a zip." +"and all user filament presets in each filament name you select will be " +"exported as a zip." msgstr "" "Verranno visualizzati solo i nomi dei filamenti con le preimpostazioni dei " "filamenti dell'utente, \n" @@ -13784,13 +14058,13 @@ msgstr "" msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as " -"a zip." +"and all user process presets in each printer name you select will be " +"exported as a zip." msgstr "" -"Verranno visualizzati solo i nomi delle stampanti con le impostazioni predefinite " -"del processo modificate,\n" -" e tutte le impostazioni predefinite del processo dell'utente in ogni nome della " -"stampante selezionato saranno esportate come un file zip" +"Verranno visualizzati solo i nomi delle stampanti con le impostazioni " +"predefinite del processo modificate,\n" +" e tutte le impostazioni predefinite del processo dell'utente in ogni nome " +"della stampante selezionato saranno esportate come un file zip" msgid "Please select at least one printer or filament." msgstr "Seleziona almeno una stampante o un filamento." @@ -13805,8 +14079,8 @@ msgid "Filament presets under this filament" msgstr "Filamento preimpostato sotto questo filamento" msgid "" -"Note: If the only preset under this filament is deleted, the filament will be " -"deleted after exiting the dialog." +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." msgstr "" "Nota: Se l'unico preset sotto questo filamento viene eliminato, il filamento " "verrà cancellato dopo aver chiuso la finestra di dialogo." @@ -13839,7 +14113,8 @@ msgid "" "If you are using this filament on your printer, please reset the filament " "information for that slot." msgstr "" -"Tutti i preset di filamento appartenenti a questo filamento verranno eliminati. \n" +"Tutti i preset di filamento appartenenti a questo filamento verranno " +"eliminati. \n" "Se stai utilizzando questo filamento sulla tua stampante, reimposta le " "informazioni sul filamento per quello slot." @@ -13879,8 +14154,8 @@ msgid "The start, end or step is not valid value." msgstr "L'inizio, la fine o il passo non sono valori validi." msgid "" -"Unable to calibrate: maybe because the set calibration value range is too large, " -"or the step is too small" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" msgstr "" "Impossibile calibrare: forse perché l'intervallo di valori di calibrazione " "impostato è troppo ampio o il passo è troppo piccolo" @@ -13901,8 +14176,8 @@ msgid "Refresh Printers" msgstr "Aggiorna Stampanti" msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed " -"certificate." +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." msgstr "" "File HTTPS CA opzionale. È necessario solo se si intende usare un HTTPS con " "certificato autofirmato." @@ -13915,8 +14190,8 @@ msgstr "Apri file di certificato CA" #, c-format, boost-format msgid "" -"On this system, %s uses HTTPS certificates from the system Certificate Store or " -"Keychain." +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." msgstr "" "Su questo sistema, %s utilizza certificati HTTPS provenienti dal sistema " "Certificate Store o da Keychain." @@ -13925,11 +14200,12 @@ msgid "" "To use a custom CA file, please import your CA file into Certificate Store / " "Keychain." msgstr "" -"Per utilizzare un file CA personalizzato, importa il tuo file CA sul Certificate " -"Store / Keychain." +"Per utilizzare un file CA personalizzato, importa il tuo file CA sul " +"Certificate Store / Keychain." msgid "Connection to printers connected via the print host failed." -msgstr "Collegamento alle stampanti collegate tramite l'host di stampa fallito." +msgstr "" +"Collegamento alle stampanti collegate tramite l'host di stampa fallito." #, c-format, boost-format msgid "Mismatched type of print host: %s" @@ -13963,14 +14239,15 @@ msgid "Upload not enabled on FlashAir card." msgstr "Caricamento non attivato sulla scheda FlashAir." msgid "Connection to FlashAir works correctly and upload is enabled." -msgstr "Connessione a FlashAir correttamente funzionante e caricamento abilitato." +msgstr "" +"Connessione a FlashAir correttamente funzionante e caricamento abilitato." msgid "Could not connect to FlashAir" msgstr "Impossibile connettersi a FlashAir" msgid "" -"Note: FlashAir with firmware 2.00.02 or newer and activated upload function is " -"required." +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." msgstr "" "Nota: è necessaria FlashAir con firmware 2.00.02 o successivo e funzione di " "caricamento attiva." @@ -14019,8 +14296,8 @@ msgstr "%1% : non c'è spazio libero" #, boost-format msgid "Upload has failed. There is no suitable storage found at %1%." msgstr "" -"Caricamento non riuscito. Non è stato trovato uno spazio di archiviazione adatto " -"su %1%." +"Caricamento non riuscito. Non è stato trovato uno spazio di archiviazione " +"adatto su %1%." msgid "Connection to Prusa Connect works correctly." msgstr "Il collegamento a Prusa Connect funziona correttamente." @@ -14079,12 +14356,13 @@ msgstr "" msgid "" "Sandwich mode\n" "Did you know that you can use sandwich mode (inner-outer-inner) to improve " -"precision and layer consistency if your model doesn't have very steep overhangs?" +"precision and layer consistency if your model doesn't have very steep " +"overhangs?" msgstr "" "Modalità sandwich\n" -"Sapevi che puoi utilizzare la modalità sandwich (interno-esterno-interno) per " -"migliorare la precisione e l'uniformità degli strati se il tuo modello non " -"presenta sporgenze molto ripide?" +"Sapevi che puoi utilizzare la modalità sandwich (interno-esterno-interno) " +"per migliorare la precisione e l'uniformità degli strati se il tuo modello " +"non presenta sporgenze molto ripide?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -14097,12 +14375,12 @@ msgstr "" #: resources/data/hints.ini: [hint:Calibration] msgid "" "Calibration\n" -"Did you know that calibrating your printer can do wonders? Check out our beloved " -"calibration solution in OrcaSlicer." +"Did you know that calibrating your printer can do wonders? Check out our " +"beloved calibration solution in OrcaSlicer." msgstr "" "Taratura\n" -"Sapevi che calibrare la tua stampante può fare miracoli? Dai un'occhiata alla " -"nostra amata soluzione di calibrazione in OrcaSlicer." +"Sapevi che calibrare la tua stampante può fare miracoli? Dai un'occhiata " +"alla nostra amata soluzione di calibrazione in OrcaSlicer." #: resources/data/hints.ini: [hint:Auxiliary fan] msgid "" @@ -14127,24 +14405,24 @@ msgid "" "You can turn on/off the G-code window by pressing the C key." msgstr "" "Finestra G-code\n" -"È possibile attivare/disattivare la finestra del codice G premendo il tasto C ." +"È possibile attivare/disattivare la finestra del codice G premendo il tasto " +"C ." #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can switch between Prepare and Preview workspaces by pressing " -"the Tab key." +"You can switch between Prepare and Preview workspaces by " +"pressing the Tab key." msgstr "" "Passare da un'area di lavoro all'altra\n" -"È possibile passare dall'area di lavoro Prepara a quella Anteprima " -"e viceversa premendo il tasto TAB ." +"È possibile passare dall'area di lavoro Prepara a quella " +"Anteprima e viceversa premendo il tasto TAB ." #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" -"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D " -"scene operations." +"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " +"3D scene operations." msgstr "" "Come utilizzare le scorciatoie da tastiera\n" "Sapevi che Orca Slicer offre un'ampia gamma di scorciatoie da tastiera e " @@ -14153,8 +14431,8 @@ msgstr "" #: resources/data/hints.ini: [hint:Reverse on odd] msgid "" "Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve the " -"surface quality of your overhangs?" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" msgstr "" "Retromarcia su dispari\n" "Sapevi che la retromarcia su elementi dispari può migliorare " @@ -14163,12 +14441,12 @@ msgstr "" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" -"Did you know that you can cut a model at any angle and position with the cutting " -"tool?" +"Did you know that you can cut a model at any angle and position with the " +"cutting tool?" msgstr "" "Strumento di taglio\n" -"Sapevate che è possibile tagliare un modello in qualsiasi angolazione e posizione " -"con l'utensile di taglio?" +"Sapevate che è possibile tagliare un modello in qualsiasi angolazione e " +"posizione con l'utensile di taglio?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" @@ -14177,8 +14455,8 @@ msgid "" "problems on the Windows system?" msgstr "" "Correggi modello\n" -"Sapevi che puoi riparare un modello 3D danneggiato per evitare molti problemi di " -"slicing sul sistema Windows?" +"Sapevi che puoi riparare un modello 3D danneggiato per evitare molti " +"problemi di slicing sul sistema Windows?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -14199,8 +14477,8 @@ msgstr "" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" "Auto-Orient\n" -"Did you know that you can rotate objects to an optimal orientation for printing " -"by a simple click?" +"Did you know that you can rotate objects to an optimal orientation for " +"printing by a simple click?" msgstr "" "Orientamento automatico\n" "Sapevi che puoi orientare gli oggetti in modo ottimale per la stampa con un " @@ -14209,19 +14487,20 @@ msgstr "" #: resources/data/hints.ini: [hint:Lay on Face] msgid "" "Lay on Face\n" -"Did you know that you can quickly orient a model so that one of its faces sits on " -"the print bed? Select the \"Place on face\" function or press the F key." +"Did you know that you can quickly orient a model so that one of its faces " +"sits on the print bed? Select the \"Place on face\" function or press the " +"F key." msgstr "" "Posiziona su faccia\n" -"Sapevate che è possibile orientare rapidamente un modello in modo che una delle " -"sue facce si trovi sul piatto di stampa? Selezionare la funzione \"Posiziona su " -"faccia\" o premere il tasto F ." +"Sapevate che è possibile orientare rapidamente un modello in modo che una " +"delle sue facce si trovi sul piatto di stampa? Selezionare la funzione " +"\"Posiziona su faccia\" o premere il tasto F ." #: resources/data/hints.ini: [hint:Object List] msgid "" "Object List\n" -"Did you know that you can view all objects/parts in a list and change settings " -"for each object/part?" +"Did you know that you can view all objects/parts in a list and change " +"settings for each object/part?" msgstr "" "Elenco oggetti\n" "Sapevate che è possibile visualizzare tutti gli oggetti/parti in un elenco e " @@ -14230,8 +14509,8 @@ msgstr "" #: resources/data/hints.ini: [hint:Search Functionality] msgid "" "Search Functionality\n" -"Did you know that you use the Search tool to quickly find a specific Orca Slicer " -"setting?" +"Did you know that you use the Search tool to quickly find a specific Orca " +"Slicer setting?" msgstr "" "Funzionalità di ricerca\n" "Sapevi che puoi usare lo strumento di ricerca per trovare rapidamente " @@ -14245,24 +14524,24 @@ msgid "" msgstr "" "Semplifica modello\n" "Sapevi che puoi ridurre il numero di triangoli in una mesh utilizzando la " -"funzione Semplifica mesh? Fare clic con il pulsante destro del mouse sul modello " -"e selezionare Semplifica modello." +"funzione Semplifica mesh? Fare clic con il pulsante destro del mouse sul " +"modello e selezionare Semplifica modello." #: resources/data/hints.ini: [hint:Slicing Parameter Table] msgid "" "Slicing Parameter Table\n" -"Did you know that you can view all objects/parts on a table and change settings " -"for each object/part?" +"Did you know that you can view all objects/parts on a table and change " +"settings for each object/part?" msgstr "" "Tabella Parametri Slicing\n" -"Sapevate che è possibile visualizzare tutti gli oggetti/parti di una tabella e " -"modificare le impostazioni di ciascun oggetto/parte?" +"Sapevate che è possibile visualizzare tutti gli oggetti/parti di una tabella " +"e modificare le impostazioni di ciascun oggetto/parte?" #: resources/data/hints.ini: [hint:Split to Objects/Parts] msgid "" "Split to Objects/Parts\n" -"Did you know that you can split a big object into small ones for easy colorizing " -"or printing?" +"Did you know that you can split a big object into small ones for easy " +"colorizing or printing?" msgstr "" "Dividi in oggetti/parti\n" "Sapevi che è possibile dividere un oggetto grande in piccoli oggetti per " @@ -14271,9 +14550,9 @@ msgstr "" #: resources/data/hints.ini: [hint:Subtract a Part] msgid "" "Subtract a Part\n" -"Did you know that you can subtract one mesh from another using the Negative part " -"modifier? That way you can, for example, create easily resizable holes directly " -"in Orca Slicer." +"Did you know that you can subtract one mesh from another using the Negative " +"part modifier? That way you can, for example, create easily resizable holes " +"directly in Orca Slicer." msgstr "" "Sottrazione di una parte\n" "Sapevi che puoi sottrarre una mesh da un'altra usando il modificatore Parte " @@ -14285,111 +14564,113 @@ msgid "" "STEP\n" "Did you know that you can improve your print quality by slicing a STEP file " "instead of an STL?\n" -"Orca Slicer supports slicing STEP files, providing smoother results than a lower " -"resolution STL. Give it a try!" +"Orca Slicer supports slicing STEP files, providing smoother results than a " +"lower resolution STL. Give it a try!" msgstr "" "PASSO\n" -"Sapevi che puoi migliorare la tua qualità di stampa tagliando un file STEP invece " -"di un STL?\n" +"Sapevi che puoi migliorare la tua qualità di stampa tagliando un file STEP " +"invece di un STL?\n" "Orca Slicer supporta il sezionamento dei file STEP, fornendo risultati più " "uniformi rispetto a un STL a risoluzione inferiore. Provateci!" #: resources/data/hints.ini: [hint:Z seam location] msgid "" "Z seam location\n" -"Did you know that you can customize the location of the Z seam, and even paint it " -"on your print, to have it in a less visible location? This improves the overall " -"look of your model. Check it out!" +"Did you know that you can customize the location of the Z seam, and even " +"paint it on your print, to have it in a less visible location? This improves " +"the overall look of your model. Check it out!" msgstr "" "Posizione giunzione Z\n" "Sapevi che puoi personalizzare la posizione della giunzione Z e persino " -"dipingerla sulla stampa, per averla in una posizione meno visibile? Ciò migliora " -"l'aspetto generale del modello. Dai un'occhiata!" +"dipingerla sulla stampa, per averla in una posizione meno visibile? Ciò " +"migliora l'aspetto generale del modello. Dai un'occhiata!" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking prints? " -"Depending on the material, you can improve the overall finish of the printed " -"model by doing some fine-tuning." +"Did you know that flow rate can be fine-tuned for even better-looking " +"prints? Depending on the material, you can improve the overall finish of the " +"printed model by doing some fine-tuning." msgstr "" "Regolazione precisa del flusso\n" -"Sapevi che la velocità del flusso può essere regolata con precisione per stampe " -"ancora più belle? A seconda del materiale, è possibile migliorare la finitura " -"complessiva del modello stampato effettuando regolazioni precise." +"Sapevi che la velocità del flusso può essere regolata con precisione per " +"stampe ancora più belle? A seconda del materiale, è possibile migliorare la " +"finitura complessiva del modello stampato effettuando regolazioni precise." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" "Split your prints into plates\n" -"Did you know that you can split a model that has a lot of parts into individual " -"plates ready to print? This will simplify the process of keeping track of all the " -"parts." +"Did you know that you can split a model that has a lot of parts into " +"individual plates ready to print? This will simplify the process of keeping " +"track of all the parts." msgstr "" "Dividi le stampe in piatti\n" -"Sapevi che puoi dividere un modello con molte parti in singoli piatti pronti per " -"la stampa? Ciò semplificherà il processo di elaborazione di tutte le parti." +"Sapevi che puoi dividere un modello con molte parti in singoli piatti pronti " +"per la stampa? Ciò semplificherà il processo di elaborazione di tutte le " +"parti." -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer +#: Height] msgid "" "Speed up your print with Adaptive Layer Height\n" -"Did you know that you can print a model even faster, by using the Adaptive Layer " -"Height option? Check it out!" +"Did you know that you can print a model even faster, by using the Adaptive " +"Layer Height option? Check it out!" msgstr "" "Accelera la stampa con l'opzione Layers Adattativo\n" -"Sapevi che puoi stampare un modello ancora più velocemente utilizzando l'opzione " -"Layer Adattativo? Scoprilo!" +"Sapevi che puoi stampare un modello ancora più velocemente utilizzando " +"l'opzione Layer Adattativo? Scoprilo!" #: resources/data/hints.ini: [hint:Support painting] msgid "" "Support painting\n" -"Did you know that you can paint the location of your supports? This feature makes " -"it easy to place the support material only on the sections of the model that " -"actually need it." +"Did you know that you can paint the location of your supports? This feature " +"makes it easy to place the support material only on the sections of the " +"model that actually need it." msgstr "" "Pitturare supporti\n" "Sapevi che è possibile pitturare la posizione dei supporti? Questa funzione " -"consente di posizionare facilmente il materiale di supporto solo sulle sezioni " -"del modello che ne hanno effettivamente bisogno." +"consente di posizionare facilmente il materiale di supporto solo sulle " +"sezioni del modello che ne hanno effettivamente bisogno." #: resources/data/hints.ini: [hint:Different types of supports] msgid "" "Different types of supports\n" -"Did you know that you can choose from multiple types of supports? Tree supports " -"work great for organic models, while saving filament and improving print speed. " -"Check them out!" +"Did you know that you can choose from multiple types of supports? Tree " +"supports work great for organic models, while saving filament and improving " +"print speed. Check them out!" msgstr "" "Diversi tipi di supporto\n" -"Sapevate che potete scegliere tra diversi tipi di supporto? I supporti ad albero " -"funzionano benissimo per i modelli organici, risparmiando filamento e migliorando " -"la velocità di stampa. Scopriteli!" +"Sapevate che potete scegliere tra diversi tipi di supporto? I supporti ad " +"albero funzionano benissimo per i modelli organici, risparmiando filamento e " +"migliorando la velocità di stampa. Scopriteli!" #: resources/data/hints.ini: [hint:Printing Silk Filament] msgid "" "Printing Silk Filament\n" "Did you know that Silk filament needs special consideration to print it " -"successfully? Higher temperature and lower speed are always recommended for the " -"best results." +"successfully? Higher temperature and lower speed are always recommended for " +"the best results." msgstr "" "Stampa di filamento Silk (seta)\n" -"Sapevi che il filamento seta richiede un'attenzione speciale per stampare con " -"successo? Una temperatura più alta e una velocità inferiore sono sempre " +"Sapevi che il filamento seta richiede un'attenzione speciale per stampare " +"con successo? Una temperatura più alta e una velocità inferiore sono sempre " "consigliate per ottenere i migliori risultati." #: resources/data/hints.ini: [hint:Brim for better adhesion] msgid "" "Brim for better adhesion\n" -"Did you know that when printing models have a small contact interface with the " -"printing surface, it's recommended to use a brim?" +"Did you know that when printing models have a small contact interface with " +"the printing surface, it's recommended to use a brim?" msgstr "" "Brim per una migliore adesione\n" -"Sapevate che quando i modelli stampati hanno una piccola interfaccia di contatto " -"con la superficie di stampa, si consiglia di utilizzare un brim?" +"Sapevate che quando i modelli stampati hanno una piccola interfaccia di " +"contatto con la superficie di stampa, si consiglia di utilizzare un brim?" #: resources/data/hints.ini: [hint:Set parameters for multiple objects] msgid "" "Set parameters for multiple objects\n" -"Did you know that you can set slicing parameters for all selected objects at one " -"time?" +"Did you know that you can set slicing parameters for all selected objects at " +"one time?" msgstr "" "Impostare i parametri per più oggetti\n" "Sapevi che puoi impostare i parametri di elaborazione per tutti gli oggetti " @@ -14406,64 +14687,65 @@ msgstr "" #: resources/data/hints.ini: [hint:Flush into support/objects/infill] msgid "" "Flush into support/objects/infill\n" -"Did you know that you can save the wasted filament by flushing them into support/" -"objects/infill during filament change?" +"Did you know that you can save the wasted filament by flushing them into " +"support/objects/infill during filament change?" msgstr "" "Spurga nei supporti/oggetti/riempimenti\n" -"Sapevi che puoi ridurre lo spreco di filamento spurgandolo nei supporti/oggetti/" -"riempimenti durante la sostituzione del filamento?" +"Sapevi che puoi ridurre lo spreco di filamento spurgandolo nei supporti/" +"oggetti/riempimenti durante la sostituzione del filamento?" #: resources/data/hints.ini: [hint:Improve strength] msgid "" "Improve strength\n" -"Did you know that you can use more wall loops and higher sparse infill density to " -"improve the strength of the model?" +"Did you know that you can use more wall loops and higher sparse infill " +"density to improve the strength of the model?" msgstr "" "Migliorare la resistenza\n" -"Sapevate che è possibile utilizzare un maggior numero di anelli a parete e una " -"maggiore densità riempimento per migliorare la resistenza del modello?" +"Sapevate che è possibile utilizzare un maggior numero di anelli a parete e " +"una maggiore densità riempimento per migliorare la resistenza del modello?" -#: resources/data/hints.ini: [hint:When need to print with the printer door opened] +#: resources/data/hints.ini: [hint:When need to print with the printer door +#: opened] msgid "" "When need to print with the printer door opened\n" -"Did you know that opening the printer door can reduce the probability of extruder/" -"hotend clogging when printing lower temperature filament with a higher enclosure " -"temperature. More info about this in the Wiki." +"Did you know that opening the printer door can reduce the probability of " +"extruder/hotend clogging when printing lower temperature filament with a " +"higher enclosure temperature. More info about this in the Wiki." msgstr "" "Quando è necessario stampare con lo sportello della stampante aperto\n" -"Sapevi che l'apertura dello sportello della stampante può ridurre la probabilità " -"di intasamento dell'estrusore/hotend quando si stampa filamento a temperatura " -"inferiore con una temperatura dell'involucro più elevata. Maggiori informazioni " -"su questo nel Wiki." +"Sapevi che l'apertura dello sportello della stampante può ridurre la " +"probabilità di intasamento dell'estrusore/hotend quando si stampa filamento " +"a temperatura inferiore con una temperatura dell'involucro più elevata. " +"Maggiori informazioni su questo nel Wiki." #: resources/data/hints.ini: [hint:Avoid warping] msgid "" "Avoid warping\n" -"Did you know that when printing materials that are prone to warping such as ABS, " -"appropriately increasing the heatbed temperature can reduce the probability of " -"warping." +"Did you know that when printing materials that are prone to warping such as " +"ABS, appropriately increasing the heatbed temperature can reduce the " +"probability of warping." msgstr "" "Evita la deformazione\n" "Sapevi che quando si stampano materiali soggetti a deformazioni come l'ABS, " -"aumentare in modo appropriato la temperatura del piano riscaldato può ridurre la " -"probabilità di deformazione." +"aumentare in modo appropriato la temperatura del piano riscaldato può " +"ridurre la probabilità di deformazione." #~ msgid "wiki" #~ msgstr "" -#~ "Darò i comandi per far funzionare EPEL su RHEL 8, ma se sei su RHEL 6 o RHEL 7 " -#~ "puoi trovare quelle istruzioni sul wiki." +#~ "Darò i comandi per far funzionare EPEL su RHEL 8, ma se sei su RHEL 6 o " +#~ "RHEL 7 puoi trovare quelle istruzioni sul wiki." #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" option.Some " -#~ "extruders work better with this option unckecked (absolute extrusion mode). " -#~ "Wipe tower is only compatible with relative mode. It is always enabled on " -#~ "BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unckecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" #~ "L'estrusione relativa è consigliata quando si utilizza l'opzione " #~ "\"label_objects\". Alcuni estrusori funzionano meglio con questa opzione " -#~ "unckecked (modalità di estrusione assoluta). La torre di pulizia è compatibile " -#~ "solo con la modalità relativa. È sempre abilitato sulle stampanti BambuLab. Il " -#~ "valore predefinito è selezionato" +#~ "unckecked (modalità di estrusione assoluta). La torre di pulizia è " +#~ "compatibile solo con la modalità relativa. È sempre abilitato sulle " +#~ "stampanti BambuLab. Il valore predefinito è selezionato" #~ msgid "Movement:" #~ msgstr "Movement:" @@ -14503,15 +14785,16 @@ msgstr "" #~ msgstr "Ricalcola" #~ msgid "" -#~ "Orca recalculates your flushing volumes everytime the filament colors change. " -#~ "You can change this behavior in Preferences." +#~ "Orca recalculates your flushing volumes everytime the filament colors " +#~ "change. You can change this behavior in Preferences." #~ msgstr "" -#~ "Orca ricalcola i volumi di risciacquo ogni volta che i colori del filamento " -#~ "cambiano. È possibile modificare questo comportamento in Preferenze." +#~ "Orca ricalcola i volumi di risciacquo ogni volta che i colori del " +#~ "filamento cambiano. È possibile modificare questo comportamento in " +#~ "Preferenze." #~ msgid "" -#~ "The printer timed out while receiving a print job. Please check if the network " -#~ "is functioning properly and send the print again." +#~ "The printer timed out while receiving a print job. Please check if the " +#~ "network is functioning properly and send the print again." #~ msgstr "" #~ "La stampante ha raggiunto il timeout durante la ricezione di un lavoro di " #~ "stampa. Controlla se la rete funziona correttamente e invia nuovamente la " @@ -14519,7 +14802,8 @@ msgstr "" #~ msgid "The beginning of the vendor can not be a number. Please re-enter." #~ msgstr "" -#~ "L'inizio del fornitore non può essere un numero. Si prega di inserire di nuovo." +#~ "L'inizio del fornitore non può essere un numero. Si prega di inserire di " +#~ "nuovo." #~ msgid "Edit Text" #~ msgstr "Modifica testo" @@ -14565,32 +14849,32 @@ msgstr "" #~ msgid "" #~ "Discribe how long the nozzle will move along the last path when retracting" #~ msgstr "" -#~ "Descrive per quanto tempo il nozzle si muoverà lungo l'ultimo percorso mentre " -#~ "si ritrae." +#~ "Descrive per quanto tempo il nozzle si muoverà lungo l'ultimo percorso " +#~ "mentre si ritrae." #~ msgid "" #~ "Simplify Model\n" -#~ "Did you know that you can reduce the number of triangles in a mesh using the " -#~ "Simplify mesh feature? Right-click the model and select Simplify model. Read " -#~ "more in the documentation." +#~ "Did you know that you can reduce the number of triangles in a mesh using " +#~ "the Simplify mesh feature? Right-click the model and select Simplify " +#~ "model. Read more in the documentation." #~ msgstr "" #~ "Semplifica Modello\n" #~ "Sapevate che è possibile ridurre il numero di triangoli in una mesh " -#~ "utilizzando la funzione Semplifica mesh? Fare clic con il tasto destro del " -#~ "mouse sul modello e selezionare Semplifica modello. Per saperne di più, " -#~ "consultare la documentazione." +#~ "utilizzando la funzione Semplifica mesh? Fare clic con il tasto destro " +#~ "del mouse sul modello e selezionare Semplifica modello. Per saperne di " +#~ "più, consultare la documentazione." #~ msgid "" #~ "Subtract a Part\n" -#~ "Did you know that you can subtract one mesh from another using the Negative " -#~ "part modifier? That way you can, for example, create easily resizable holes " -#~ "directly in Orca Slicer. Read more in the documentation." +#~ "Did you know that you can subtract one mesh from another using the " +#~ "Negative part modifier? That way you can, for example, create easily " +#~ "resizable holes directly in Orca Slicer. Read more in the documentation." #~ msgstr "" #~ "Sottrazione di una parte\n" -#~ "Sapevi che puoi sottrarre una mesh da un'altra usando il modificatore Parte " -#~ "negativa? In questo modo è possibile, ad esempio, creare fori facilmente " -#~ "ridimensionabili direttamente in Orca Slicer. Per ulteriori informazioni, " -#~ "consulta la documentazione." +#~ "Sapevi che puoi sottrarre una mesh da un'altra usando il modificatore " +#~ "Parte negativa? In questo modo è possibile, ad esempio, creare fori " +#~ "facilmente ridimensionabili direttamente in Orca Slicer. Per ulteriori " +#~ "informazioni, consulta la documentazione." #~ msgid "Filling bed " #~ msgstr "Riempi piano" @@ -14610,8 +14894,8 @@ msgstr "" #~ msgid "Please heat the nozzle to above 170 degree before loading filament." #~ msgstr "" -#~ "Riscaldare il nozzle a una temperatura superiore a 170 gradi prima di caricare " -#~ "il filamento." +#~ "Riscaldare il nozzle a una temperatura superiore a 170 gradi prima di " +#~ "caricare il filamento." #~ msgid "Newer 3mf version" #~ msgstr "Versione 3mf più recente" @@ -14625,8 +14909,8 @@ msgstr "" #, c-format #~ msgid "Density of internal sparse infill, 100% means solid throughout" #~ msgstr "" -#~ "Questa è la densità del riempimento interno. 100%% significa che l'oggetto " -#~ "sarà in ogni sua parte." +#~ "Questa è la densità del riempimento interno. 100%% significa che " +#~ "l'oggetto sarà in ogni sua parte." #~ msgid "Tree support wall loops" #~ msgstr "Loop parete supporto ad albero" @@ -14664,19 +14948,19 @@ msgstr "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " #~ "unrecognized:" #~ msgstr "" -#~ "Versione del 3mf %s è più recente %s della versione %s, trovate le seguenti " -#~ "chiavi non riconosciute:" +#~ "Versione del 3mf %s è più recente %s della versione %s, trovate le " +#~ "seguenti chiavi non riconosciute:" #~ msgid "You'd better upgrade your software.\n" #~ msgstr "Devi aggiornare il software.\n" #, c-format, boost-format #~ msgid "" -#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " -#~ "software." +#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade " +#~ "your software." #~ msgstr "" -#~ "Versione del 3mf %s è più recente della versione %s di %s, si consiglia di " -#~ "aggiornare il software." +#~ "Versione del 3mf %s è più recente della versione %s di %s, si consiglia " +#~ "di aggiornare il software." #~ msgid "The 3mf is not compatible, load geometry data only!" #~ msgstr "Il 3mf non è compatibile, carica solo i dati della geometria!" @@ -14688,11 +14972,11 @@ msgstr "" #~ msgstr "Aggiungi/Rimuovi stampanti" #~ msgid "" -#~ "When print by object, machines with I3 structure will not generate timelapse " -#~ "videos." +#~ "When print by object, machines with I3 structure will not generate " +#~ "timelapse videos." #~ msgstr "" -#~ "Quando si stampa per oggetto, le macchine con struttura I3 non genereranno " -#~ "video timelapse." +#~ "Quando si stampa per oggetto, le macchine con struttura I3 non " +#~ "genereranno video timelapse." #, c-format, boost-format #~ msgid "%s is not supported by AMS." @@ -14705,19 +14989,21 @@ msgstr "" #~ msgstr "Errore: l'IP o il codice di accesso non sono corretti" #~ msgid "" -#~ "Extrude perimeters that have a part over an overhang in the reverse direction " -#~ "on odd layers. This alternating pattern can drastically improve steep overhang." +#~ "Extrude perimeters that have a part over an overhang in the reverse " +#~ "direction on odd layers. This alternating pattern can drastically improve " +#~ "steep overhang." #~ msgstr "" -#~ "Estrudere i perimetri che hanno una parte su una sporgenza nella direzione " -#~ "inversa su layer dispari. Questo schema alternato può migliorare drasticamente " -#~ "lo strapiombo ripido." +#~ "Estrudere i perimetri che hanno una parte su una sporgenza nella " +#~ "direzione inversa su layer dispari. Questo schema alternato può " +#~ "migliorare drasticamente lo strapiombo ripido." #~ msgid "Order of inner wall/outer wall/infil" #~ msgstr "Ordine di parete interna/esterna/riempimento" #~ msgid "Print sequence of inner wall, outer wall and infill. " #~ msgstr "" -#~ "È la sequenza di stampa di pareti interne, pareti esterne e dei riempimenti." +#~ "È la sequenza di stampa di pareti interne, pareti esterne e dei " +#~ "riempimenti." #~ msgid "inner/outer/infill" #~ msgstr "interno/esterno/riempimento" @@ -14856,7 +15142,8 @@ msgstr "" #~ msgstr "Carica impostazioni filamento" #~ msgid "Load filament settings from the specified file list" -#~ msgstr "Carica le impostazioni del filamento dall'elenco di file specificato" +#~ msgstr "" +#~ "Carica le impostazioni del filamento dall'elenco di file specificato" #~ msgid "Skip Objects" #~ msgstr "Salta oggetti" @@ -14866,15 +15153,15 @@ msgstr "" #~ msgid "load uptodate process/machine settings when using uptodate" #~ msgstr "" -#~ "Caricare le impostazioni di processo/macchina aggiornate quando si utilizza " -#~ "UptoDate" +#~ "Caricare le impostazioni di processo/macchina aggiornate quando si " +#~ "utilizza UptoDate" #~ msgid "" #~ "load uptodate process/machine settings from the specified file when using " #~ "uptodate" #~ msgstr "" -#~ "Caricare le impostazioni di processo/macchina aggiornate dal file specificato " -#~ "quando si utilizza UptoDate" +#~ "Caricare le impostazioni di processo/macchina aggiornate dal file " +#~ "specificato quando si utilizza UptoDate" #~ msgid "Output directory" #~ msgstr "Output directory" @@ -14902,13 +15189,13 @@ msgstr "" #~ "touchpanel in the 3D scene?" #~ msgstr "" #~ "Operazioni sulla scena 3D\n" -#~ "Sapete come controllare la vista e la selezione di oggetti/parti con il mouse " -#~ "e il touch panel nella scena 3D?" +#~ "Sapete come controllare la vista e la selezione di oggetti/parti con il " +#~ "mouse e il touch panel nella scena 3D?" #~ msgid "" #~ "Fix Model\n" -#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " -#~ "problems?" +#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " +#~ "slicing problems?" #~ msgstr "" #~ "Correggi Modello\n" #~ "Sapevi che puoi correggere un modello 3D danneggiato per evitare molti " @@ -14922,9 +15209,9 @@ msgstr "" #~ msgstr "" #~ "Quando è necessario stampare con lo sportello della stampante aperto\n" #~ "L'apertura dello sportello della stampante può ridurre la probabilità di " -#~ "intasamento dell'estrusore/hotend quando si stampa un filamento a temperatura " -#~ "inferiore con una temperatura dell'involucro più elevata. Maggiori " -#~ "informazioni su questo nel Wiki." +#~ "intasamento dell'estrusore/hotend quando si stampa un filamento a " +#~ "temperatura inferiore con una temperatura dell'involucro più elevata. " +#~ "Maggiori informazioni su questo nel Wiki." #~ msgid "Embeded" #~ msgstr "Integrato" @@ -14939,34 +15226,34 @@ msgstr "" #~ msgstr "The minimum printing speed when slowing down for cooling." #~ msgid "" -#~ "The bed temperature exceeds filament's vitrification temperature. Please open " -#~ "the front door of printer before printing to avoid nozzle clog." +#~ "The bed temperature exceeds filament's vitrification temperature. Please " +#~ "open the front door of printer before printing to avoid nozzle clog." #~ msgstr "" #~ "La temperatura del piano supera la temperatura di vetrificazione del " -#~ "filamento. Aprire lo sportello anteriore della stampante prima di stampare per " -#~ "evitare l'intasamento del nozzle." +#~ "filamento. Aprire lo sportello anteriore della stampante prima di " +#~ "stampare per evitare l'intasamento del nozzle." #~ msgid "Temperature of vitrificaiton" #~ msgstr "Temperature of vitrification" #~ msgid "" -#~ "Material becomes soft at this temperature. Thus the heatbed cannot be hotter " -#~ "than this tempature" +#~ "Material becomes soft at this temperature. Thus the heatbed cannot be " +#~ "hotter than this tempature" #~ msgstr "" -#~ "Material becomes soft at this temperature. Thus, the heat bed cannot be hotter " -#~ "than this temperature." +#~ "Material becomes soft at this temperature. Thus, the heat bed cannot be " +#~ "hotter than this temperature." #~ msgid "Enable this option if machine has auxiliary part cooling fan" #~ msgstr "Enable this option if the machine has an auxiliary part cooling fan" #~ msgid "" #~ "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " -#~ "during printing except the first several layers which is defined by no cooling " -#~ "layers" +#~ "during printing except the first several layers which is defined by no " +#~ "cooling layers" #~ msgstr "" -#~ "This is the speed of auxiliary part cooling fan. The auxiliary fan will run at " -#~ "this speed during printing except for during the first several layers which " -#~ "may be set to have no part cooling." +#~ "This is the speed of auxiliary part cooling fan. The auxiliary fan will " +#~ "run at this speed during printing except for during the first several " +#~ "layers which may be set to have no part cooling." #~ msgid "Empty layers around bottom are replaced by nearest normal layers." #~ msgstr "Empty layers around bottom are replaced by nearest normal layers." @@ -14985,22 +15272,23 @@ msgstr "" #, c-format, boost-format #~ msgid "" -#~ "Bed temperature of other layer is lower than bed temperature of initial layer " -#~ "for more than %d degree centigrade.\n" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" #~ "This may cause model broken free from build plate during printing" #~ msgstr "" -#~ "The bed temperature of other layers is lower than the bed temperature of the " -#~ "first layer by more than %d degrees centigrade.\n" +#~ "The bed temperature of other layers is lower than the bed temperature of " +#~ "the first layer by more than %d degrees centigrade.\n" #~ "This may cause models to break free from the build plate during printing." #~ msgid "" -#~ "Bed temperature is higher than vitrification temperature of this filament.\n" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" #~ "This may cause nozzle blocked and printing failure\n" #~ "Please keep the printer open during the printing process to ensure air " #~ "circulation or reduce the temperature of the hot bed" #~ msgstr "" -#~ "La temperatura del piano è superiore alla temperatura di vetrificazione di " -#~ "questo filamento.\n" +#~ "La temperatura del piano è superiore alla temperatura di vetrificazione " +#~ "di questo filamento.\n" #~ "Ciò può causare il blocco del nozzle e il fallimento della stampa.\n" #~ "Si prega di tenere la stampante aperta durante il processo di stampa per " #~ "garantire la circolazione dell'aria o ridurre la temperatura del piano." @@ -15033,44 +15321,45 @@ msgstr "" #~ msgstr "High Temp Plate" #~ msgid "" -#~ "Bed temperature when high temperature plate is installed. Value 0 means the " -#~ "filament does not support to print on the High Temp Plate" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" #~ msgstr "" -#~ "This is the bed temperature when the high temperature plate is installed. A " -#~ "value of 0 means the filament does not support printing on the High Temp Plate." +#~ "This is the bed temperature when the high temperature plate is installed. " +#~ "A value of 0 means the filament does not support printing on the High " +#~ "Temp Plate." #~ msgid "Internal bridge support thickness" #~ msgstr "Spessore supporto interno del ponte" #~ msgid "" -#~ "Style and shape of the support. For normal support, projecting the supports " -#~ "into a regular grid will create more stable supports (default), while snug " -#~ "support towers will save material and reduce object scarring.\n" -#~ "For tree support, slim style will merge branches more aggressively and save a " -#~ "lot of material (default), while hybrid style will create similar structure to " -#~ "normal support under large flat overhangs." +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." #~ msgstr "" -#~ "Stile e forma del supporto. Per supporti normali, la proiezione dei supporti " -#~ "in una griglia regolare creerà supporti più stabili (impostazione " -#~ "predefinita), mentre le torri di supporto aderenti faranno risparmiare " -#~ "materiale e ridurranno le giunzioni oggetto.\n" -#~ "Per i supporti ad albero, lo stile slim unirà i rami in modo più aggressivo e " -#~ "risparmierà molto materiale (impostazione predefinita), mentre lo stile ibrido " -#~ "creerà una struttura simile a quella dei sostegni normali sotto grandi " -#~ "sporgenze piatte." +#~ "Stile e forma del supporto. Per supporti normali, la proiezione dei " +#~ "supporti in una griglia regolare creerà supporti più stabili " +#~ "(impostazione predefinita), mentre le torri di supporto aderenti faranno " +#~ "risparmiare materiale e ridurranno le giunzioni oggetto.\n" +#~ "Per i supporti ad albero, lo stile slim unirà i rami in modo più " +#~ "aggressivo e risparmierà molto materiale (impostazione predefinita), " +#~ "mentre lo stile ibrido creerà una struttura simile a quella dei sostegni " +#~ "normali sotto grandi sporgenze piatte." #~ msgid "Bed temperature difference" #~ msgstr "Bed temperature difference" #~ msgid "" -#~ "Do not recommend bed temperature of other layer to be lower than initial layer " -#~ "for more than this threshold. Too low bed temperature of other layer may cause " -#~ "the model broken free from build plate" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" #~ msgstr "" #~ "Non è consigliabile che la temperatura del piano degli altri layer sia " -#~ "inferiore a quella del primo layer di oltre questa soglia. Una temperatura del " -#~ "piano troppo bassa degli altri layer può causare il distacco dell'oggetto dal " -#~ "piatto." +#~ "inferiore a quella del primo layer di oltre questa soglia. Una " +#~ "temperatura del piano troppo bassa degli altri layer può causare il " +#~ "distacco dell'oggetto dal piatto." #~ msgid "Orient the model" #~ msgstr "Orient the model" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index d31f4823f3..9b01558b98 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -8162,11 +8162,11 @@ msgid "Hostname, IP or URL" msgstr "Hostname、IPまたはURL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" "ホスト名、IPアドレス、URLを入力してください。ユーザ名とパスワードがある場合、" "下記形式を参照してください https://username:password@your-octopi-address/" @@ -8182,8 +8182,8 @@ msgid "API Key / Password" msgstr "APIキー/パスワード" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "APIキーとパスワードを入力してください。" msgid "Name of the printer" @@ -9107,8 +9107,8 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" msgid "Speed of the last cooling move" @@ -9271,11 +9271,12 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -9292,11 +9293,12 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" @@ -10023,8 +10025,8 @@ msgid "Host Type" msgstr "ホストタイプ" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "ホストタイプを入力してください。" msgid "Nozzle volume" @@ -12572,10 +12574,10 @@ msgstr "" msgid "Export Configs" msgstr "" -msgid "Printer config bundle(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" msgstr "" -msgid "Filament bundle(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" msgstr "" msgid "Printer presets(.zip)" @@ -12614,7 +12616,7 @@ msgid "" msgstr "" msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 833085ca02..3f6b58bf29 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: 2023-12-25 12:35+0900\n" "Last-Translator: Hotsolidinfill <138652683+Hotsolidinfill@users.noreply." "github.com>, crwusiz \n" @@ -8361,17 +8361,17 @@ msgid "Hostname, IP or URL" msgstr "호스트 이름, IP 또는 URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer은 G코드 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드에는 프린" -"터 호스트 인스턴스의 호스트 이름, IP 주소 또는 URL이 포함되어야 합니다. 기본 " -"인증이 활성화된 HAProxy 뒤의 출력 호스트는 https://username:password@your-" -"octopi-address/ 형식의 URL에 사용자 이름과 암호를 입력하여 액세스할 수 있습니" -"다" +"Orca Slicer은 G코드 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드에는 " +"프린터 호스트 인스턴스의 호스트 이름, IP 주소 또는 URL이 포함되어야 합니다. " +"기본 인증이 활성화된 HAProxy 뒤의 출력 호스트는 https://username:" +"password@your-octopi-address/ 형식의 URL에 사용자 이름과 암호를 입력하여 액세" +"스할 수 있습니다" msgid "Device UI" msgstr "장치 UI" @@ -8385,11 +8385,11 @@ msgid "API Key / Password" msgstr "API 키 / 비밀번호" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer은 G코드 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드에는 인증" -"에 필요한 API 키 또는 비밀번호가 포함되어야 합니다." +"Orca Slicer은 G코드 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드에는 " +"인증에 필요한 API 키 또는 비밀번호가 포함되어야 합니다." msgid "Name of the printer" msgstr "프린터 이름" @@ -9416,13 +9416,13 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" "툴 교환 후 노즐 내부에 새로 로드된 필라멘트의 정확한 위치를 알 수 없으며 필라" "멘트 압력이 아직 안정적이지 않을 수 있습니다. 프린트 헤드를 채우기 또는 희생 " -"개체로 청소하기 전에 Orca Slicer은 항상 이 양의 재료를 닦기 타워로 프라이밍하여 연" -"속적인 채우기 또는 희생 물체 압출을 안정적으로 생성합니다." +"개체로 청소하기 전에 Orca Slicer은 항상 이 양의 재료를 닦기 타워로 프라이밍하" +"여 연속적인 채우기 또는 희생 물체 압출을 안정적으로 생성합니다." msgid "Speed of the last cooling move" msgstr "마지막 냉각 이동 속도" @@ -9601,18 +9601,19 @@ msgstr "드문 채우기 고정점 길이" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" "사용하여 채우기 선을 내부 둘레에 연결합니다. 백분율(예: 15%)로 표시되는 경우 " -"채우기 돌출 너비에 대해 계산됩니다. Orca Slicer은 두 개의 가까운 채우기 선을 짧은 " -"주변 세그먼트에 연결하려고 합니다. 내부 채우기 고정점 (infill_anchor_max) 최" -"대 길이보다 짧은 경계 세그먼트가 발견되지 않으면 \n" +"채우기 돌출 너비에 대해 계산됩니다. Orca Slicer은 두 개의 가까운 채우기 선을 " +"짧은 주변 세그먼트에 연결하려고 합니다. 내부 채우기 고정점 " +"(infill_anchor_max) 최대 길이보다 짧은 경계 세그먼트가 발견되지 않으면 \n" "채우기 선은 한쪽에서 경계 세그먼트에 연결되고 취해진 경계 세그먼트의 길이는 " "이 매개변수로 제한되지만 최대 고정점 길이(anchor_length_max) 보다 길지 않습니" "다.\n" @@ -9631,20 +9632,21 @@ msgstr "채우기 고정점 최대 길이" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" "추가 둘레의 짧은 세그먼트를 사용하여 채우기 선을 내부 둘레에 연결합니다. 백분" -"율(예: 15%)로 표시되는 경우 채우기 돌출 너비에 대해 계산됩니다. Orca Slicer은 두 " -"개의 가까운 채우기 선을 짧은 주변 세그먼트에 연결하려고 합니다. 이 매개변수보" -"다 짧은 주변 세그먼트가 발견되지 않으면 채우기 선은 한쪽 측면의 주변 세그먼트" -"에 연결되고 사용된 주변 세그먼트의 길이는 앵커 채우기(infill_anchor)로 제한되" -"지만 이 매개변수보다 길지 않습니다.\n" +"율(예: 15%)로 표시되는 경우 채우기 돌출 너비에 대해 계산됩니다. Orca Slicer" +"은 두 개의 가까운 채우기 선을 짧은 주변 세그먼트에 연결하려고 합니다. 이 매개" +"변수보다 짧은 주변 세그먼트가 발견되지 않으면 채우기 선은 한쪽 측면의 주변 세" +"그먼트에 연결되고 사용된 주변 세그먼트의 길이는 앵커 채우기(infill_anchor)로 " +"제한되지만 이 매개변수보다 길지 않습니다.\n" "0으로 설정하면 채우기 연결에 대한 이전 알고리즘이 사용되며 1000 & 0과 동일한 " "결과를 생성해야 합니다." @@ -10471,11 +10473,11 @@ msgid "Host Type" msgstr "호스트 유형" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" -"Orca Slicer은 G코드 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드는 호스트" -"의 종류를 포함해야 합니다." +"Orca Slicer은 G코드 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드는 호" +"스트의 종류를 포함해야 합니다." msgid "Nozzle volume" msgstr "노즐 부피" @@ -10640,8 +10642,8 @@ msgid "" msgstr "" "사용자 정의 스크립트를 통해 출력 G코드를 처리하려면 여기에 절대 경로를 나열하" "세요. 여러 스크립트는 세미콜론(;)으로 구분합니다. 스크립트는 G코드 파일의 절" -"대 경로를 첫 번째 값으로 전달하며 환경 변수를 읽어 Orca Slicer 구성 설정에 접근할 " -"수 있습니다." +"대 경로를 첫 번째 값으로 전달하며 환경 변수를 읽어 Orca Slicer 구성 설정에 접" +"근할 수 있습니다." msgid "Printer notes" msgstr "프린터 메모" @@ -13287,11 +13289,11 @@ msgstr "프린터 설정" msgid "Export Configs" msgstr "구성 내보내기" -msgid "Printer config bundle(.bbscfg)" -msgstr "프린터 구성 번들(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" +msgstr "프린터 구성 번들(.orca_printer)" -msgid "Filament bundle(.bbsflmt)" -msgstr "필라멘트 번들(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" +msgstr "필라멘트 번들(.orca_filament)" msgid "Printer presets(.zip)" msgstr "프린터 사전 설정(.zip)" @@ -13331,7 +13333,7 @@ msgstr "" "그렇지 않은 경우 시간 접미사가 추가되며 생성 후 이름을 수정할 수 있습니다." msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" "프린터와 프린터에 속한 모든 필라멘트 및 프로세스 사전 설정.\n" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 1fa3ca8940..409dfa75c2 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -8460,14 +8460,14 @@ msgid "Hostname, IP or URL" msgstr "Hostnaam, IP of URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet de " -"hostnaam, het IP-adres of de URL van de printerhostinstantie bevatten. " +"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet " +"de hostnaam, het IP-adres of de URL van de printerhostinstantie bevatten. " "Printhost achter HAProxy met ingeschakelde basisauthenticatie is " "toegankelijk door de gebruikersnaam en het wachtwoord in de volgende " "indeling in de URL te plaatsen: https://username:password@your-octopi-" @@ -8484,11 +8484,11 @@ msgid "API Key / Password" msgstr "API sleutel / wachtwoord" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet de " -"API-sleutel of het wachtwoord bevatten dat nodig is voor authenticatie." +"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet " +"de API-sleutel of het wachtwoord bevatten dat nodig is voor authenticatie." msgid "Name of the printer" msgstr "Naam van de printer" @@ -9465,8 +9465,8 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" msgid "Speed of the last cooling move" @@ -9635,11 +9635,12 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -9656,11 +9657,12 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" @@ -10421,11 +10423,11 @@ msgid "Host Type" msgstr "Hosttype" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" -"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet het " -"type host bevatten." +"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet " +"het type host bevatten." msgid "Nozzle volume" msgstr "Nozzle volume" @@ -13059,10 +13061,10 @@ msgstr "" msgid "Export Configs" msgstr "" -msgid "Printer config bundle(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" msgstr "" -msgid "Filament bundle(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" msgstr "" msgid "Printer presets(.zip)" @@ -13101,7 +13103,7 @@ msgid "" msgstr "" msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index c139c11ef6..c6183fc224 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V1.8.0 Official Release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: 2023-11-20 01:07+0700\n" "Last-Translator: Andylg \n" "Language-Team: \n" @@ -5953,7 +5953,7 @@ msgid "" "on Orca Slicer(windows) or CAD softwares." msgstr "" "Функция «Починить модель» в настоящее время доступна только в Windows. " -"Пожалуйста, почините модель с помощью Bambu Studio (Windows) или другой CAD " +"Пожалуйста, почините модель с помощью Orca Slicer (Windows) или другой CAD " "программой." #, c-format, boost-format @@ -8600,11 +8600,11 @@ msgid "Hostname, IP or URL" msgstr "Имя хоста, IP/URL-адрес" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" "Orca Slicer может загружать файл G-кода на хост принтера. В этом поле нужно " "указать имя хоста, IP-адрес или URL-адрес хост-экземпляра печати. Доступ к " @@ -8625,8 +8625,8 @@ msgid "API Key / Password" msgstr "API-ключ/Пароль" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" "Orca Slicer может загружать файл G-кода на хост принтера. Это поле должно " "содержать API ключ или пароль, необходимые для проверки подлинности." @@ -9669,14 +9669,15 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" "После смены инструмента, точное положение вновь загруженного прутка внутри " "него может быть неизвестно, и давление прутка, вероятно, ещё не стабильно. " "Перед тем, как очистить печатающую головку в заполнение или в «жертвенную» " -"модель Orca Slicer всегда будет выдавливать это количество материала на черновую " -"башню, чтобы обеспечить надёжную печать заполнения или «жертвенной» модели." +"модель Orca Slicer всегда будет выдавливать это количество материала на " +"черновую башню, чтобы обеспечить надёжную печать заполнения или «жертвенной» " +"модели." msgid "Speed of the last cooling move" msgstr "Скорость последнего охлаждающего движения" @@ -9862,11 +9863,12 @@ msgstr "Длина привязок разреженного заполнени msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -9894,19 +9896,20 @@ msgstr "Максимальная длина привязок разреженн msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" "Соединять линию заполнения с внутренним периметром с помощью короткого " "отрезка дополнительного периметра (привязок). Если выражено в процентах, то " -"она вычисляется по ширине экструзии заполнения. Orca Slicer пытается соединить " -"две ближайшие линии заполнения с коротким отрезком периметра. Если не " -"найдено такого отрезка периметра короче этого параметра, линия заполнения " +"она вычисляется по ширине экструзии заполнения. Orca Slicer пытается " +"соединить две ближайшие линии заполнения с коротким отрезком периметра. Если " +"не найдено такого отрезка периметра короче этого параметра, линия заполнения " "соединяется с отрезком периметра только с одной стороны, а длина отрезка " "периметра ограничена значением «Длина привязок разреженного " "заполнения» (infill_anchor), но не больше этого параметра. \n" @@ -10783,8 +10786,8 @@ msgid "Host Type" msgstr "Тип хоста" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" "Orca Slicer может загружать файл G-кода на хост принтера. Это поле должно " "содержать тип хоста." @@ -13699,10 +13702,10 @@ msgstr "" msgid "Export Configs" msgstr "" -msgid "Printer config bundle(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" msgstr "" -msgid "Filament bundle(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" msgstr "" msgid "Printer presets(.zip)" @@ -13741,7 +13744,7 @@ msgid "" msgstr "" msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" @@ -14629,11 +14632,11 @@ msgstr "" #~ msgid "" #~ "Another virtual camera is running.\n" -#~ "Bambu Studio supports only a single virtual camera.\n" +#~ "Orca Slicer supports only a single virtual camera.\n" #~ "Do you want to stop this virtual camera?" #~ msgstr "" #~ "Уже работает одна виртуальная камера.\n" -#~ "Bambu Studio поддерживает только одну виртуальную камеру.\n" +#~ "Orca Slicer поддерживает только одну виртуальную камеру.\n" #~ "Хотите остановить эту виртуальную камеру?" #~ msgid "Not supported by this model of printer!" @@ -14658,7 +14661,7 @@ msgstr "" #~ "Studio and export a new .gcode.3mf file." #~ msgstr "" #~ "Файл .gcode.3mf не содержит G-кода. Пожалуйста, нарежьте его в программе " -#~ "Bambu Studio и экспортируйте новый файл .gcode.3mf." +#~ "Orca Slicer и экспортируйте новый файл .gcode.3mf." #~ msgid "Immediately score" #~ msgstr "Оценить сейчас" @@ -14761,8 +14764,8 @@ msgstr "" #~ msgid "%s is not supported by AMS." #~ msgstr "%s не поддерживается АСПП." -#~ msgid "The printer is required to be in the same LAN as Bambu Studio." -#~ msgstr "Принтер должен находиться в одной локальной сети с Bambu Studio." +#~ msgid "The printer is required to be in the same LAN as Orca Slicer." +#~ msgstr "Принтер должен находиться в одной локальной сети с Orca Slicer." #~ msgid "Recommended temperature range" #~ msgstr "Рекомендуемый диапазон температур" @@ -14782,22 +14785,22 @@ msgstr "" #~ msgstr "Переключение между окном подготовки и окном предпросмотра нарезки" #~ msgid "" -#~ "Click OK to update the Network plug-in when Bambu Studio launches next " +#~ "Click OK to update the Network plug-in when Orca Slicer launches next " #~ "time." #~ msgstr "" #~ "Нажмите OK, чтобы обновить сетевой плагин при следующем запуске Bambu " #~ "Studio." -#~ msgid "New version of Bambu Studio" -#~ msgstr "Доступна новая версия Bambu Studio" +#~ msgid "New version of Orca Slicer" +#~ msgstr "Доступна новая версия Orca Slicer" #~ msgid "Don't remind me of this version again" #~ msgstr "Больше не напоминай об этой версии" #~ msgid "" -#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ "Step 1, please confirm Orca Slicer and your printer are in the same LAN." #~ msgstr "" -#~ "Шаг 1. Пожалуйста, убедитесь, что Bambu Studio и ваш принтер находятся в " +#~ "Шаг 1. Пожалуйста, убедитесь, что Orca Slicer и ваш принтер находятся в " #~ "одной локальной сети." #~ msgid "Error: IP or Access Code are not correct" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index b532ea992c..c0a9dda478 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -8331,15 +8331,15 @@ msgid "Hostname, IP or URL" msgstr "Värdnamn, IP eller URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer kan ladda upp G-kod filer till en printer värd. Det här fältet ska " -"innehålla värdnamn, IP-adress eller URL för printer värd platsen. Du kan få " -"tillgång till printer värd till HAProxy med grundläggande autentisering " +"Orca Slicer kan ladda upp G-kod filer till en printer värd. Det här fältet " +"ska innehålla värdnamn, IP-adress eller URL för printer värd platsen. Du kan " +"få tillgång till printer värd till HAProxy med grundläggande autentisering " "aktiverad genom att ange användarnamn och lösenord i URL:en i följande " "format: https://username:password@your-octopi-address/" @@ -8354,11 +8354,11 @@ msgid "API Key / Password" msgstr "API Nyckel/Lösenord" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer kan ladda upp G-kod filer till en printer värd. Det här fältet ska " -"innehålla API nyckeln eller lösenordet som krävs för autentisering." +"Orca Slicer kan ladda upp G-kod filer till en printer värd. Det här fältet " +"ska innehålla API nyckeln eller lösenordet som krävs för autentisering." msgid "Name of the printer" msgstr "Skrivarens namn" @@ -9314,8 +9314,8 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" msgid "Speed of the last cooling move" @@ -9484,11 +9484,12 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -9505,11 +9506,12 @@ msgstr "" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" @@ -10262,11 +10264,11 @@ msgid "Host Type" msgstr "Värd typ" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" -"Orca Slicer kan ladda upp G-kod filer till en skrivar värd. Det här fältet måste " -"innehålla typ av värd." +"Orca Slicer kan ladda upp G-kod filer till en skrivar värd. Det här fältet " +"måste innehålla typ av värd." msgid "Nozzle volume" msgstr "Nozzle volym" @@ -12871,10 +12873,10 @@ msgstr "" msgid "Export Configs" msgstr "" -msgid "Printer config bundle(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" msgstr "" -msgid "Filament bundle(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" msgstr "" msgid "Printer presets(.zip)" @@ -12913,7 +12915,7 @@ msgid "" msgstr "" msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 85ecd0f27c..769dac499f 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: 2023-12-25 01:15+0300\n" "Last-Translator: Olcay ÖREN\n" "Language-Team: Türkçe\n" @@ -8515,18 +8515,18 @@ msgid "Hostname, IP or URL" msgstr "Ana bilgisayar adı, IP veya URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini veya " -"URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu HAProxy'nin " -"arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve parolanın aşağıdaki " -"biçimdeki URL'ye girilmesiyle erişilebilir: https://username:password@your-" -"octopi-address/" +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " +"Bu alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini " +"veya URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu " +"HAProxy'nin arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve " +"parolanın aşağıdaki biçimdeki URL'ye girilmesiyle erişilebilir: https://" +"username:password@your-octopi-address/" msgid "Device UI" msgstr "Cihaz kullanıcı arayüzü" @@ -8541,11 +8541,12 @@ msgid "API Key / Password" msgstr "API Anahtarı / Şifre" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " +"Bu alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi " +"içermelidir." msgid "Name of the printer" msgstr "Yazıcı adı" @@ -9618,14 +9619,14 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Bir takım değişiminden sonra, yeni yüklenen filamentin nozul içindeki kesin " "konumu bilinmeyebilir ve filament basıncı muhtemelen henüz stabil değildir. " -"Yazdırma kafasını bir dolguya veya kurban nesneye boşaltmadan önce Orca Slicer, " -"ardışık dolgu veya kurban nesne ekstrüzyonlarını güvenilir bir şekilde " -"üretmek için her zaman bu miktardaki malzemeyi silme kulesine " +"Yazdırma kafasını bir dolguya veya kurban nesneye boşaltmadan önce Orca " +"Slicer, ardışık dolgu veya kurban nesne ekstrüzyonlarını güvenilir bir " +"şekilde üretmek için her zaman bu miktardaki malzemeyi silme kulesine " "hazırlayacaktır." msgid "Speed of the last cooling move" @@ -9812,11 +9813,12 @@ msgstr "Dolgu uzunluğu" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -9842,11 +9844,12 @@ msgstr "Dolgu maksimum uzunluk" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" @@ -10714,11 +10717,11 @@ msgid "Host Type" msgstr "Bağlantı Türü" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan ana bilgisayarın türünü içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " +"Bu alan ana bilgisayarın türünü içermelidir." msgid "Nozzle volume" msgstr "Nozul hacmi" @@ -13631,11 +13634,11 @@ msgstr "Yazıcı Ayarı" msgid "Export Configs" msgstr "Yapılandırmaları Dışa Aktar" -msgid "Printer config bundle(.bbscfg)" -msgstr "Yazıcı yapılandırma paketi(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" +msgstr "Yazıcı yapılandırma paketi(.orca_printer)" -msgid "Filament bundle(.bbsflmt)" -msgstr "Filament demeti(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" +msgstr "Filament demeti(.orca_filament)" msgid "Printer presets(.zip)" msgstr "Yazıcı ön ayarları (.zip)" @@ -13677,7 +13680,7 @@ msgstr "" "değiştirebilirsiniz." msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" "Yazıcı ve yazıcıya ait tüm filament ve işlem ön ayarları. \n" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index b13d619767..98174279eb 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: 2023-08-10 20:25-0400\n" "Last-Translator: \n" "Language-Team: \n" @@ -8382,17 +8382,17 @@ msgid "Hostname, IP or URL" msgstr "Ім'я хоста, IP або URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer може завантажувати файли G-коду на хост принтера. Це поле повинно " -"містити ім'я хоста, IP-адресу або URL-адресу екземпляра вузла принтера. " -"Вузол друку за HAProxy з увімкненою базовою авторизацією можна отримати " -"доступ, ввівши користувача ім'я та пароль в URL у наступному форматі: " -"https://username:\n" +"Orca Slicer може завантажувати файли G-коду на хост принтера. Це поле " +"повинно містити ім'я хоста, IP-адресу або URL-адресу екземпляра вузла " +"принтера. Вузол друку за HAProxy з увімкненою базовою авторизацією можна " +"отримати доступ, ввівши користувача ім'я та пароль в URL у наступному " +"форматі: https://username:\n" "password@your-octopi-address/" msgid "Device UI" @@ -8408,11 +8408,11 @@ msgid "API Key / Password" msgstr "Ключ API / Пароль" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer може завантажувати файли G-коду на хост принтера. Це поле повинно " -"утримувати \n" +"Orca Slicer може завантажувати файли G-коду на хост принтера. Це поле " +"повинно утримувати \n" "API-ключ або пароль, необхідний для автентифікації." msgid "Name of the printer" @@ -9397,8 +9397,8 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Після заміни інструменту точне положення новонавантаженої нитки " "напруженнявсередині сопла може бути невідомо, і тиск нитки розжарення, " @@ -9569,11 +9569,12 @@ msgstr "Довжина прив'язки заповнення" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -9600,11 +9601,12 @@ msgstr "Максимальна довжина прив'язки, що запов msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" @@ -10414,11 +10416,11 @@ msgid "Host Type" msgstr "Тип хоста" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" -"Orca Slicer може завантажувати файли G-коду на хост принтера. Це поле повинно " -"утримувати тип хоста." +"Orca Slicer може завантажувати файли G-коду на хост принтера. Це поле " +"повинно утримувати тип хоста." msgid "Nozzle volume" msgstr "Об'єм сопла" @@ -10565,8 +10567,8 @@ msgstr "" "Якщо ви хочете обробити вихідний G-код через користувацькі сценарії,Просто " "перерахуйте їх абсолютні шляхи тут. Розділіть кілька сценаріївточкою з " "комою. Сценаріям передається абсолютний шлях до файлу G-коду в як перший " -"аргумент, і вони можуть отримати доступ до налаштувань Orca Slicer конфігурації " -"шляхом читання змінних середовища." +"аргумент, і вони можуть отримати доступ до налаштувань Orca Slicer " +"конфігурації шляхом читання змінних середовища." msgid "Printer notes" msgstr "" @@ -13042,10 +13044,10 @@ msgstr "" msgid "Export Configs" msgstr "" -msgid "Printer config bundle(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" msgstr "" -msgid "Filament bundle(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" msgstr "" msgid "Printer presets(.zip)" @@ -13084,7 +13086,7 @@ msgid "" msgstr "" msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index bad89b2149..bd0b0f3266 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: 2023-04-01 13:21+0800\n" "Last-Translator: SoftFever \n" "Language-Team: \n" @@ -8127,15 +8127,15 @@ msgid "Hostname, IP or URL" msgstr "主机名,IP或者URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer可以将G-code文件上传到打印机主机。此字段应包含打印机主机实例的主机名、" -"IP地址或URL。启用基本身份验证的Print host可以通过将用户名和密码放入以下格式的" -"URL中来访问:https://username:password@your-octopi-address/" +"Orca Slicer可以将G-code文件上传到打印机主机。此字段应包含打印机主机实例的主机" +"名、IP地址或URL。启用基本身份验证的Print host可以通过将用户名和密码放入以下格" +"式的URL中来访问:https://username:password@your-octopi-address/" msgid "Device UI" msgstr "设备用户界面" @@ -8148,11 +8148,11 @@ msgid "API Key / Password" msgstr "API秘钥/密码" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer可以将G-code文件上传到打印机主机。此字段应包含用于身份验证的API密钥或密" -"码。" +"Orca Slicer可以将G-code文件上传到打印机主机。此字段应包含用于身份验证的API密" +"钥或密码。" msgid "Name of the printer" msgstr "打印机名称" @@ -9099,12 +9099,12 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" "换色后,新加载的耗材在喷嘴内的确切位置可能未知,耗材压力可能还不稳定。在冲刷" -"打印头到填充或作为挤出废料之前,Orca Slicer将始终将这些的耗材丝冲刷到擦拭塔中以产" -"生连续的填充或稳定的挤出废料。" +"打印头到填充或作为挤出废料之前,Orca Slicer将始终将这些的耗材丝冲刷到擦拭塔中" +"以产生连续的填充或稳定的挤出废料。" msgid "Speed of the last cooling move" msgstr "最后一次冷却移动的速度" @@ -9274,11 +9274,12 @@ msgstr "稀疏填充锚线长度" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -9300,11 +9301,12 @@ msgstr "填充锚线的最大长度" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" @@ -10058,8 +10060,8 @@ msgid "Host Type" msgstr "主机类型" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "Orca Slicer可以将G-code文件上传到打印机主机。此字段必须包含主机类型。" msgid "Nozzle volume" @@ -12714,11 +12716,11 @@ msgstr "打印机设置" msgid "Export Configs" msgstr "导出预设" -msgid "Printer config bundle(.bbscfg)" -msgstr "打印机预设集(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" +msgstr "打印机预设集(.orca_printer)" -msgid "Filament bundle(.bbsflmt)" -msgstr "材料预设集(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" +msgstr "材料预设集(.orca_filament)" msgid "Printer presets(.zip)" msgstr "打印机预设(.zip)" @@ -12758,7 +12760,7 @@ msgstr "" "如果不清除,将会在文件夹名后添加时间后缀,您可以在创建后进行修改。" msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" "打印机和属于打印机的所有的材料和工艺预设。\n" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 9ca6a23b8f..8a72a71dbc 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 12:07+0800\n" +"POT-Creation-Date: 2023-12-29 22:55+0800\n" "PO-Revision-Date: 2023-11-06 14:37+0800\n" "Last-Translator: ablegods \n" "Language-Team: \n" @@ -8552,11 +8552,11 @@ msgstr "主機名,IP 或者 URL" #, fuzzy msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" "Orca Slicer 可以將 G-code 檔案上傳到列印設備。此欄位應包含列印設備的主機名、" "IP 位址或 URL。啟用基本身份驗證的列印設備可以透過將使用者名稱和密碼放入以下格" @@ -8575,8 +8575,8 @@ msgstr "API Key / 密碼" #, fuzzy msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" "Orca slicer 可以將 G-code 檔案上傳到列印設備。此欄位應包含用於身份驗證的 API " "金鑰或密碼。" @@ -9571,8 +9571,8 @@ msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " "stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" "換色後,新載入的線材在噴嘴內的確切位置可能未知,耗材壓力可能還不穩定。在沖刷" "列印頭到填充或作為擠出廢料之前,將始終將這些的線材沖刷到擦拭塔中以產生連續的" @@ -9750,11 +9750,12 @@ msgstr "稀疏填充錨線長度" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than infill_anchor_max is found, the infill line is " +"connected to a perimeter segment at just one side and the length of the " +"perimeter segment taken is limited to this parameter, but no longer than " +"anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" @@ -9778,11 +9779,12 @@ msgstr "填充錨線的最大長度" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Orca Slicer tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" +"calculated over infill extrusion width. Orca Slicer tries to connect two " +"close infill lines to a short perimeter segment. If no such perimeter " +"segment shorter than this parameter is found, the infill line is connected " +"to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this " +"parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" @@ -10582,8 +10584,8 @@ msgstr "主機類型" #, fuzzy msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "切片軟體可以將 G-code 檔案上傳到列印設備。此欄位必須包含設備類型。" msgid "Nozzle volume" @@ -13302,10 +13304,10 @@ msgstr "" msgid "Export Configs" msgstr "" -msgid "Printer config bundle(.bbscfg)" +msgid "Printer config bundle(.orca_printer)" msgstr "" -msgid "Filament bundle(.bbsflmt)" +msgid "Filament bundle(.orca_filament)" msgstr "" msgid "Printer presets(.zip)" @@ -13344,7 +13346,7 @@ msgid "" msgstr "" msgid "" -"Printer and all the filament&process presets that belongs to the printer. \n" +"Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index bf9938bd85..3e1dfd343e 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -675,7 +675,7 @@ PresetsConfigSubstitutions PresetBundle::import_presets(std::vector import_json_presets(substitutions, file, override_confirm, rule, overwrite, result); } // Determine if it is a preset bundle - if (boost::iends_with(file, ".bbscfg") || boost::iends_with(file, ".bbsflmt") || boost::iends_with(file, ".zip")) { + if (boost::iends_with(file, ".orca_printer") || boost::iends_with(file, ".orca_filament") || boost::iends_with(file, ".zip")) { boost::system::error_code ec; // create user folder fs::path user_folder(data_dir() + "/" + PRESET_USER_DIR); diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index 81b1becaa8..d0a899fd4a 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -3266,8 +3266,8 @@ void CreatePresetSuccessfulDialog::on_dpi_changed(const wxRect &suggested_rect) ExportConfigsDialog::ExportConfigsDialog(wxWindow *parent) : DPIDialog(parent ? parent : nullptr, wxID_ANY, _L("Export Configs"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) { - m_exprot_type.preset_bundle = _L("Printer config bundle(.bbscfg)"); - m_exprot_type.filament_bundle = _L("Filament bundle(.bbsflmt)"); + m_exprot_type.preset_bundle = _L("Printer config bundle(.orca_printer)"); + m_exprot_type.filament_bundle = _L("Filament bundle(.orca_filament)"); m_exprot_type.printer_preset = _L("Printer presets(.zip)"); m_exprot_type.filament_preset = _L("Filament presets(.zip)"); m_exprot_type.process_preset = _L("Process presets(.zip)"); @@ -3519,7 +3519,7 @@ wxBoxSizer *ExportConfigsDialog::create_export_config_item(wxWindow *parent) radioBoxSizer->Add(create_radio_item(m_exprot_type.preset_bundle, parent, wxEmptyString, m_export_type_btns), 0, wxEXPAND | wxALL, 0); radioBoxSizer->Add(0, 0, 0, wxTOP, FromDIP(6)); - wxStaticText *static_export_printer_preset_bundle_text = new wxStaticText(parent, wxID_ANY, _L("Printer and all the filament&process presets that belongs to the printer. \nCan be shared with others."), wxDefaultPosition, wxDefaultSize); + wxStaticText *static_export_printer_preset_bundle_text = new wxStaticText(parent, wxID_ANY, _L("Printer and all the filament&&process presets that belongs to the printer. \nCan be shared with others."), wxDefaultPosition, wxDefaultSize); static_export_printer_preset_bundle_text->SetFont(Label::Body_12); static_export_printer_preset_bundle_text->SetForegroundColour(wxColour("#6B6B6B")); radioBoxSizer->Add(static_export_printer_preset_bundle_text, 0, wxEXPAND | wxLEFT, FromDIP(22)); @@ -3737,7 +3737,7 @@ ExportConfigsDialog::ExportCase ExportConfigsDialog::archive_preset_bundle_to_fi json process_configs = json::array(); mz_zip_archive zip_archive; - mz_bool status = initial_zip_archive(zip_archive, export_path + "/" + printer_preset->name + ".bbscfg"); + mz_bool status = initial_zip_archive(zip_archive, export_path + "/" + printer_preset->name + ".orca_printer"); if (MZ_FALSE == status) { BOOST_LOG_TRIVIAL(info) << "Failed to initialize ZIP archive"; return ExportCase::INITIALIZE_FAIL; @@ -3858,7 +3858,7 @@ ExportConfigsDialog::ExportCase ExportConfigsDialog::archive_filament_bundle_to_ std::unordered_map vendor_structure; mz_zip_archive zip_archive; - mz_bool status = initial_zip_archive(zip_archive, export_path + "/" + filament_name + ".bbsflmt"); + mz_bool status = initial_zip_archive(zip_archive, export_path + "/" + filament_name + ".orca_filament"); if (MZ_FALSE == status) { BOOST_LOG_TRIVIAL(info) << "Failed to initialize ZIP archive"; return ExportCase::INITIALIZE_FAIL; diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index ac0e8e1a71..17a753186a 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -3084,7 +3084,7 @@ void MainFrame::load_config_file() // return; wxFileDialog dlg(this, _L("Select profile to load:"), !m_last_config.IsEmpty() ? get_dir_name(m_last_config) : wxGetApp().app_config->get_last_dir(), - "config.json", "Config files (*.json;*.zip;*.bbscfg;*.bbsflmt)|*.json;*.zip;*.bbscfg;*.bbsflmt", wxFD_OPEN | wxFD_MULTIPLE | wxFD_FILE_MUST_EXIST); + "config.json", "Config files (*.json;*.zip;*.orca_printer;*.orca_filament)|*.json;*.zip;*.orca_printer;*.orca_filament", wxFD_OPEN | wxFD_MULTIPLE | wxFD_FILE_MUST_EXIST); wxArrayString files; if (dlg.ShowModal() != wxID_OK) return; @@ -3113,8 +3113,11 @@ void MainFrame::load_config_file() } wxGetApp().preset_bundle->update_compatible(PresetSelectCompatibleType::Always); update_side_preset_ui(); - MessageDialog dlg2(this, wxString::Format(_L_PLURAL("There is %d config imported. (Only non-system and compatible configs)", - "There are %d configs imported. (Only non-system and compatible configs)", cfiles.size()), cfiles.size()), + auto msg = wxString::Format(_L_PLURAL("There is %d config imported. (Only non-system and compatible configs)", + "There are %d configs imported. (Only non-system and compatible configs)", cfiles.size()), cfiles.size()); + if(cfiles.empty()) + msg += _L("\nHint: Make sure you have added the corresponding printer before importing the configs."); + MessageDialog dlg2(this,msg , _L("Import result"), wxOK); dlg2.ShowModal(); } From c08ace303a0a81f1c373da10dd5df5c009b6c7ce Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 30 Dec 2023 08:50:27 +0800 Subject: [PATCH 61/66] fix po errors --- localization/i18n/es/OrcaSlicer_es.po | 27 --------------------------- localization/i18n/ru/OrcaSlicer_ru.po | 27 --------------------------- 2 files changed, 54 deletions(-) diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 409a6530f9..24d16f3f63 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -15170,33 +15170,6 @@ msgstr "" #~ "Mostrar modelos en línea seleccionados por el personal en la página de " #~ "inicio" -#~ msgid "" -#~ "Another virtual camera is running.\n" -#~ "Orca Slicer supports only a single virtual camera.\n" -#~ "Do you want to stop this virtual camera?" -#~ msgstr "" -#~ "Hay otra cámara virtual en funcionamiento.\n" -#~ "Orca Slicer solo admite una cámara virtual.\n" -#~ "¿Quieres detener esta cámara virtual?" - -#~ msgid "The printer is required to be in the same LAN as Orca Slicer." -#~ msgstr "La impresora debe estar en la misma LAN que Orca Slicer." - -#~ msgid "" -#~ "Click OK to update the Network plug-in when Orca Slicer launches next " -#~ "time." -#~ msgstr "" -#~ "Haga clic en Aceptar para actualizar el complemento de red la próxima vez " -#~ "que se inicie Orca Slicer." - -#~ msgid "New version of Orca Slicer" -#~ msgstr "Nueva versión de Orca Slicer" - -#~ msgid "" -#~ "Step 1, please confirm Orca Slicer and your printer are in the same LAN." -#~ msgstr "" -#~ "Paso 1: confirme que Orca Slicer y su impresora estén en la misma LAN." - #~ msgid "Empty layers around bottom are replaced by nearest normal layers." #~ msgstr "" #~ "Las capas vacías del fondo se sustituyen por las capas normales más " diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index c6183fc224..102ab54d6a 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -14630,15 +14630,6 @@ msgstr "" #~ msgid "Initialize failed (Not supported by printer)!" #~ msgstr "Ошибка инициализации (не поддерживается принтером)!" -#~ msgid "" -#~ "Another virtual camera is running.\n" -#~ "Orca Slicer supports only a single virtual camera.\n" -#~ "Do you want to stop this virtual camera?" -#~ msgstr "" -#~ "Уже работает одна виртуальная камера.\n" -#~ "Orca Slicer поддерживает только одну виртуальную камеру.\n" -#~ "Хотите остановить эту виртуальную камеру?" - #~ msgid "Not supported by this model of printer!" #~ msgstr "Не поддерживается этой моделью принтера!" @@ -14764,8 +14755,6 @@ msgstr "" #~ msgid "%s is not supported by AMS." #~ msgstr "%s не поддерживается АСПП." -#~ msgid "The printer is required to be in the same LAN as Orca Slicer." -#~ msgstr "Принтер должен находиться в одной локальной сети с Orca Slicer." #~ msgid "Recommended temperature range" #~ msgstr "Рекомендуемый диапазон температур" @@ -14784,25 +14773,9 @@ msgstr "" #~ msgid "Switch between Prepare/Prewview" #~ msgstr "Переключение между окном подготовки и окном предпросмотра нарезки" -#~ msgid "" -#~ "Click OK to update the Network plug-in when Orca Slicer launches next " -#~ "time." -#~ msgstr "" -#~ "Нажмите OK, чтобы обновить сетевой плагин при следующем запуске Bambu " -#~ "Studio." - -#~ msgid "New version of Orca Slicer" -#~ msgstr "Доступна новая версия Orca Slicer" - #~ msgid "Don't remind me of this version again" #~ msgstr "Больше не напоминай об этой версии" -#~ msgid "" -#~ "Step 1, please confirm Orca Slicer and your printer are in the same LAN." -#~ msgstr "" -#~ "Шаг 1. Пожалуйста, убедитесь, что Orca Slicer и ваш принтер находятся в " -#~ "одной локальной сети." - #~ msgid "Error: IP or Access Code are not correct" #~ msgstr "Ошибка: неверный IP-адрес или код доступа" From 141e74a5d99efee479cf590360fa970671be0e9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olcay=20=C3=96REN?= <33813227+olcayoren@users.noreply.github.com> Date: Sat, 30 Dec 2023 03:52:26 +0300 Subject: [PATCH 62/66] Update OrcaSlicer_tr.po - TURKISH translation update (#3354) Co-authored-by: SoftFever --- localization/i18n/tr/OrcaSlicer_tr.po | 504 ++++++++++++++------------ 1 file changed, 270 insertions(+), 234 deletions(-) diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 769dac499f..1b371cc0c5 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: OrcaSlicer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-12-29 22:55+0800\n" -"PO-Revision-Date: 2023-12-25 01:15+0300\n" +"PO-Revision-Date: 2023-12-29 22:35+0300\n" "Last-Translator: Olcay ÖREN\n" "Language-Team: Türkçe\n" "Language: tr_TR\n" @@ -274,16 +274,16 @@ msgid "uniform scale" msgstr "düzgün ölçek" msgid "Planar" -msgstr "" +msgstr "Düzlemsel" msgid "Dovetail" -msgstr "" +msgstr "Kırlangıç Kuyruğu" msgid "Auto" msgstr "Otomatik" msgid "Manual" -msgstr "" +msgstr "Manual" msgid "Plug" msgstr "Tak" @@ -292,13 +292,13 @@ msgid "Dowel" msgstr "Dübel" msgid "Snap" -msgstr "" +msgstr "Çıt Çıt" msgid "Prism" -msgstr "" +msgstr "Prizma" msgid "Frustum" -msgstr "Frustum" +msgstr "Kesik" msgid "Square" msgstr "Kare" @@ -307,13 +307,13 @@ msgid "Hexagon" msgstr "Altıgen" msgid "Keep orientation" -msgstr "" +msgstr "Oryantasyonu koru" msgid "Place on cut" msgstr "Kesime yerleştirin" msgid "Flip upside down" -msgstr "" +msgstr "Baş aşağı çevir" msgid "Connectors" msgstr "Konektörler" @@ -331,19 +331,19 @@ msgstr "Şekil" #. Size in emboss direction #. TRN - Input label. Be short as possible msgid "Depth" -msgstr "" +msgstr "Derinlik" msgid "Groove" -msgstr "" +msgstr "Oluk" msgid "Width" msgstr "Genişlik" msgid "Flap Angle" -msgstr "" +msgstr "Kanat Açısı" msgid "Groove Angle" -msgstr "" +msgstr "Oluk Açısı" msgid "Part" msgstr "Parça" @@ -355,21 +355,26 @@ msgid "" "Click to flip the cut plane\n" "Drag to move the cut plane" msgstr "" +"Kesim düzlemini çevirmek için tıklayın\n" +"Kesim düzlemini taşımak için sürükleyin" msgid "" "Click to flip the cut plane\n" "Drag to move the cut plane\n" "Right-click a part to assign it to the other side" msgstr "" +"Kesim düzlemini çevirmek için tıklayın\n" +"Kesim düzlemini taşımak için sürükleyin\n" +"Bir parçayı diğer tarafa atamak için sağ tıklayın" msgid "Move cut plane" -msgstr "" +msgstr "Kesim düzlemini hareket ettir" msgid "Mode" -msgstr "" +msgstr "Mod" msgid "Change cut mode" -msgstr "" +msgstr "Kesme modunu değiştir" msgid "Tolerance" msgstr "Tolerans" @@ -378,7 +383,7 @@ msgid "Drag" msgstr "Sürükle" msgid "Draw cut line" -msgstr "" +msgstr "Kesim çizgisi çiz" msgid "Left click" msgstr "Sol tık" @@ -408,22 +413,22 @@ msgid "Cut" msgstr "Kes" msgid "Rotate cut plane" -msgstr "" +msgstr "Kesim düzlemini döndür" msgid "Remove connectors" -msgstr "Konektörleri kaldır" +msgstr "Bağlayıcıları kaldır" msgid "Bulge" -msgstr "" +msgstr "Çıkıntı" msgid "Bulge proportion related to radius" -msgstr "" +msgstr "Yarıçapla ilgili çıkıntı oranı" msgid "Space" msgstr "Boşluk" msgid "Space proportion related to radius" -msgstr "" +msgstr "Yarıçapla ilgili alan oranı" msgid "Confirm connectors" msgstr "Bağlayıcıları onayla" @@ -432,26 +437,26 @@ msgid "Cancel" msgstr "İptal" msgid "Build Volume" -msgstr "" +msgstr "Birim Oluştur" msgid "Flip cut plane" -msgstr "" +msgstr "Kesim düzlemini çevir" msgid "Groove change" -msgstr "" +msgstr "Oluk değişimi" msgid "Reset" msgstr "Sıfırla" #. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. msgid "Edited" -msgstr "" +msgstr "Düzenlendi" msgid "Cut position" -msgstr "" +msgstr "Kesim konumu" msgid "Reset cutting plane" -msgstr "" +msgstr "Kesme düzlemini sıfırla" msgid "Edit connectors" msgstr "Bağlayıcıları düzenle" @@ -460,10 +465,10 @@ msgid "Add connectors" msgstr "Bağlayıcı ekle" msgid "Reset cut" -msgstr "" +msgstr "Kesimi sıfırla" msgid "Reset cutting plane and remove connectors" -msgstr "" +msgstr "Kesme düzlemini sıfırlayın ve bağlayıcıları çıkarın" msgid "Upper part" msgstr "Üst parça" @@ -508,19 +513,19 @@ msgid "Some connectors are overlapped" msgstr "Bazı konektörler üst üste binmiş" msgid "Select at least one object to keep after cutting." -msgstr "" +msgstr "Kesimden sonra saklanacak en az bir nesne seçin." msgid "Cut plane is placed out of object" -msgstr "" +msgstr "Kesilen düzlem nesnenin dışına yerleştirilir" msgid "Cut plane with groove is invalid" -msgstr "" +msgstr "Oluklu kesme düzlemi geçersiz" msgid "Connector" msgstr "Bağlayıcı" msgid "Cut by Plane" -msgstr "" +msgstr "Düzlemsel Kes" msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" @@ -531,10 +536,10 @@ msgid "Repairing model object" msgstr "Model nesnesini onarma" msgid "Cut by line" -msgstr "" +msgstr "Satıra göre kes" msgid "Delete connector" -msgstr "" +msgstr "Bağlayıcıyı sil" msgid "Mesh name" msgstr "Mesh adı" @@ -671,46 +676,46 @@ msgid "Text shape" msgstr "Metin şekli" msgid "Set Mirror" -msgstr "" +msgstr "Aynayı Ayarla" msgid "Embossed text" -msgstr "" +msgstr "Kabartmalı metin" msgid "Enter emboss gizmo" -msgstr "" +msgstr "Kabartma aletine girin" msgid "Leave emboss gizmo" -msgstr "" +msgstr "Kabartma aletini bırak" msgid "Embossing actions" -msgstr "" +msgstr "Kabartma eylemleri" msgid "Emboss" -msgstr "" +msgstr "Kabartma" msgid "Text-Rotate" -msgstr "" +msgstr "Metin Döndürme" msgid "NORMAL" -msgstr "" +msgstr "NORMAL" msgid "SMALL" -msgstr "" +msgstr "KÜÇÜK" msgid "ITALIC" -msgstr "" +msgstr "YATIK" msgid "SWISS" -msgstr "" +msgstr "SWISS" msgid "MODERN" -msgstr "" +msgstr "MODERN" msgid "First font" -msgstr "" +msgstr "İlk yazı tipi" msgid "Default font" -msgstr "" +msgstr "Varsayılan yazı tipi" msgid "Advanced" msgstr "Gelişmiş" @@ -719,142 +724,144 @@ msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." msgstr "" +"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı " +"tipi seçmeyi deneyin." msgid "Embossed text cannot contain only white spaces." -msgstr "" +msgstr "Kabartmalı metin yalnızca beyaz boşluklardan oluşamaz." msgid "Text contains character glyph (represented by '?') unknown by font." -msgstr "" +msgstr "Metin, yazı tipi tarafından bilinmeyen karakter glifini ('?' ile temsil edilir) içeriyor." msgid "Text input doesn't show font skew." -msgstr "" +msgstr "Metin girişi yazı tipi çarpıklığını göstermiyor." msgid "Text input doesn't show font boldness." -msgstr "" +msgstr "Metin girişi yazı tipi kalınlığını göstermiyor." msgid "Text input doesn't show gap between lines." -msgstr "" +msgstr "Metin girişi satırlar arasındaki boşluğu göstermiyor." msgid "Too tall, diminished font height inside text input." -msgstr "" +msgstr "Çok uzun, metin girişi içindeki yazı tipi yüksekliği azalmış." msgid "Too small, enlarged font height inside text input." -msgstr "" +msgstr "Metin girişinde çok küçük, büyütülmüş yazı tipi yüksekliği." msgid "Text doesn't show current horizontal alignment." -msgstr "" +msgstr "Metin geçerli yatay hizalamayı göstermiyor." msgid "Revert font changes." -msgstr "" +msgstr "Yazı tipi değişikliklerini geri alın." #, boost-format msgid "Font \"%1%\" can't be selected." -msgstr "" +msgstr "\"%1%\" yazı tipi seçilemiyor." msgid "Operation" -msgstr "" +msgstr "Operasyon" msgid "Join" -msgstr "" +msgstr "Ekle" msgid "Click to change text into object part." -msgstr "" +msgstr "Metni nesne kısmına değiştirmek için tıklayın." msgid "You can't change a type of the last solid part of the object." -msgstr "" +msgstr "Nesnenin son katı kısmının türünü değiştiremezsiniz." msgctxt "EmbossOperation" msgid "Cut" -msgstr "" +msgstr "Kes" msgid "Click to change part type into negative volume." -msgstr "" +msgstr "Parça tipini negatif hacme değiştirmek için tıklayın." msgid "Modifier" -msgstr "Değiştirici" +msgstr "Değiştir" msgid "Click to change part type into modifier." -msgstr "" +msgstr "Parça tipini değiştiriciye değiştirmek için tıklayın." msgid "Change Text Type" -msgstr "" +msgstr "Metin Türünü Değiştir" #, boost-format msgid "Rename style(%1%) for embossing text" -msgstr "" +msgstr "Kabartma metni için stili yeniden adlandırın (%1%)" msgid "Name can't be empty." -msgstr "" +msgstr "Ad boş olamaz." msgid "Name has to be unique." -msgstr "" +msgstr "Adın benzersiz olması gerekiyor." msgid "OK" msgstr "TAMAM" msgid "Rename style" -msgstr "" +msgstr "Stili yeniden adlandır" msgid "Rename current style." -msgstr "" +msgstr "Geçerli stili yeniden adlandırın." msgid "Can't rename temporary style." -msgstr "" +msgstr "Geçici stil yeniden adlandırılamıyor." msgid "First Add style to list." -msgstr "" +msgstr "İlk önce listeye stil ekleyin." #, boost-format msgid "Save %1% style" -msgstr "" +msgstr "%1% stili kaydet" msgid "No changes to save." -msgstr "" +msgstr "Kaydedilecek değişiklik yok." msgid "New name of style" -msgstr "" +msgstr "Stilin yeni adı" msgid "Save as new style" -msgstr "" +msgstr "Yeni stil olarak kaydet" msgid "Only valid font can be added to style." -msgstr "" +msgstr "Stile yalnızca geçerli yazı tipi eklenebilir." msgid "Add style to my list." -msgstr "" +msgstr "Stilimi listeme ekle." msgid "Save as new style." -msgstr "" +msgstr "Yeni stil olarak kaydet." msgid "Remove style" -msgstr "" +msgstr "Stili kaldır" msgid "Can't remove the last existing style." -msgstr "" +msgstr "Mevcut son stil kaldırılamıyor." #, boost-format msgid "Are you sure you want to permanently remove the \"%1%\" style?" -msgstr "" +msgstr "\"%1%\" stilini kalıcı olarak kaldırmak istediğinizden emin misiniz?" #, boost-format msgid "Delete \"%1%\" style." -msgstr "" +msgstr "\"%1%\" stilini silin." #, boost-format msgid "Can't delete \"%1%\". It is last style." -msgstr "" +msgstr "\"%1%\" silinemiyor. Son stildir." #, boost-format msgid "Can't delete temporary style \"%1%\"." -msgstr "" +msgstr "\"%1%\" geçici stili silinemiyor." #, boost-format msgid "Modified style \"%1%\"" -msgstr "" +msgstr "Değiştirilen stil \"%1%\"" #, boost-format msgid "Current style is \"%1%\"" -msgstr "" +msgstr "Şu anki stil \"%1%\"" #, boost-format msgid "" @@ -862,145 +869,152 @@ msgid "" "\n" "Would you like to continue anyway?" msgstr "" +"Stilin \"%1%\" olarak değiştirilmesi mevcut stil değişikliğini iptal edecektir.\n" +"\n" +"Yine de devam etmek ister misin?" msgid "Not valid style." -msgstr "" +msgstr "Geçerli bir stil değil." #, boost-format msgid "Style \"%1%\" can't be used and will be removed from a list." -msgstr "" +msgstr "\"%1%\" stili kullanılamaz ve listeden kaldırılacaktır." msgid "Unset italic" -msgstr "" +msgstr "Yatık ayarı kaldır" msgid "Set italic" -msgstr "" +msgstr "Yatık olarak ayarla" msgid "Unset bold" -msgstr "" +msgstr "Kalın ayarı kaldır" msgid "Set bold" -msgstr "" +msgstr "Kalın olarak ayarla" msgid "Revert text size." -msgstr "" +msgstr "Metin boyutunu geri döndür." msgid "Revert embossed depth." -msgstr "" +msgstr "Kabartma derinliğini geri alın." msgid "" "Advanced options cannot be changed for the selected font.\n" "Select another font." msgstr "" +"Seçilen yazı tipi için gelişmiş seçenekler değiştirilemez.\n" +"Başka bir yazı tipi seçin." msgid "Revert using of model surface." -msgstr "" +msgstr "Model yüzeyinin kullanımını geri alın." msgid "Revert Transformation per glyph." -msgstr "" +msgstr "Glif başına Dönüşümü Geri Al." msgid "Set global orientation for whole text." -msgstr "" +msgstr "Tüm metnin genel yönünü ayarlayın." msgid "Set position and orientation per glyph." -msgstr "" +msgstr "Glif başına konum ve yönlendirmeyi ayarlayın." msgctxt "Alignment" msgid "Left" -msgstr "" +msgstr "Sol" msgctxt "Alignment" msgid "Center" -msgstr "" +msgstr "Merkez" msgctxt "Alignment" msgid "Right" -msgstr "" +msgstr "Sağ" msgctxt "Alignment" msgid "Top" -msgstr "" +msgstr "Üst" msgctxt "Alignment" msgid "Middle" -msgstr "" +msgstr "Orta" msgctxt "Alignment" msgid "Bottom" -msgstr "" +msgstr "Alt" msgid "Revert alignment." -msgstr "" +msgstr "Hizalamayı geri al." #. TRN EmbossGizmo: font units msgid "points" -msgstr "" +msgstr "noktalar" msgid "Revert gap between characters" -msgstr "" +msgstr "Karakterler arasındaki boşluğu geri döndür" msgid "Distance between characters" -msgstr "" +msgstr "Karakterler arasındaki mesafe" msgid "Revert gap between lines" -msgstr "" +msgstr "Satırlar arasındaki boşluğu geri döndür" msgid "Distance between lines" -msgstr "" +msgstr "Çizgiler arası mesafe" msgid "Undo boldness" -msgstr "" +msgstr "Geri al" msgid "Tiny / Wide glyphs" -msgstr "" +msgstr "Küçük / Geniş glifler" msgid "Undo letter's skew" -msgstr "" +msgstr "Harflerin eğrilmesini geri al" msgid "Italic strength ratio" -msgstr "" +msgstr "Yataylık güç oranı" msgid "Undo translation" -msgstr "" +msgstr "Çeviriyi geri al" msgid "Distance of the center of the text to the model surface." -msgstr "" +msgstr "Metnin merkezinin model yüzeyine uzaklığı." msgid "Undo rotation" -msgstr "" +msgstr "Döndürmeyi geri al" msgid "Rotate text Clock-wise." -msgstr "" +msgstr "Metni Saat yönünde döndürün." msgid "Unlock the text's rotation when moving text along the object's surface." -msgstr "" +msgstr "Metni nesnenin yüzeyi boyunca hareket ettirirken metnin dönüşünün kilidini açın." msgid "Lock the text's rotation when moving text along the object's surface." -msgstr "" +msgstr "Metni nesnenin yüzeyi boyunca taşırken metnin dönüşünü kilitleyin." msgid "Select from True Type Collection." -msgstr "" +msgstr "True Type Koleksiyonundan seçim yapın." msgid "Set text to face camera" -msgstr "" +msgstr "Metni yüz kamerasına ayarla" msgid "Orient the text towards the camera." -msgstr "" +msgstr "Metni kameraya doğru yönlendirin." #, boost-format msgid "" "Can't load exactly same font(\"%1%\"). Aplication selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" +"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir uygulama " +"seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini belirtmeniz gerekir." msgid "No symbol" -msgstr "" +msgstr "No symbol" msgid "Loading" msgstr "Yükleniyor" msgid "In queue" -msgstr "" +msgstr "Sırada" #. TRN - Input label. Be short as possible #. Height of one text line - Font Ascent @@ -1011,35 +1025,35 @@ msgstr "Yükseklik" #. Copy surface of model on surface of the embossed text #. TRN - Input label. Be short as possible msgid "Use surface" -msgstr "" +msgstr "Yüzeyi kullan" #. TRN - Input label. Be short as possible #. Option to change projection on curved surface #. for each character(glyph) in text separately msgid "Per glyph" -msgstr "" +msgstr "Glif başına" #. TRN - Input label. Be short as possible #. Align Top|Middle|Bottom and Left|Center|Right msgid "Alignment" -msgstr "" +msgstr "Hizalama" #. TRN - Input label. Be short as possible msgid "Char gap" -msgstr "" +msgstr "Karakter boşluğu" #. TRN - Input label. Be short as possible msgid "Line gap" -msgstr "" +msgstr "Satır boşluğu" #. TRN - Input label. Be short as possible msgid "Boldness" -msgstr "" +msgstr "Boldness" #. TRN - Input label. Be short as possible #. Like Font italic msgid "Skew ratio" -msgstr "" +msgstr "Eğrilik oranı" #. TRN - Input label. Be short as possible #. Distance from model surface to be able @@ -1047,110 +1061,108 @@ msgstr "" #. move text as modifier fully out of not flat surface #. TRN - Input label. Be short as possible msgid "From surface" -msgstr "" +msgstr "Yüzeyden" #. TRN - Input label. Be short as possible #. Keep vector from bottom to top of text aligned with printer Y axis msgid "Keep up" -msgstr "" +msgstr "Sürdür" #. TRN - Input label. Be short as possible. #. Some Font file contain multiple fonts inside and #. this is numerical selector of font inside font collections msgid "Collection" -msgstr "" +msgstr "Koleksiyon" msgid "Enter SVG gizmo" -msgstr "" +msgstr "SVG aletine girin" msgid "Leave SVG gizmo" -msgstr "" +msgstr "SVG aletinden ayrıl" msgid "SVG actions" -msgstr "" +msgstr "SVG eylemleri" msgid "SVG" msgstr "SVG" #. TRN This is an item label in the undo-redo stack. msgid "SVG-Rotate" -msgstr "" +msgstr "SVG-Döndürme" -#, boost-format msgid "Opacity (%1%)" -msgstr "" +msgstr "Opaklık (%1)" -#, boost-format msgid "Color gradient (%1%)" -msgstr "" +msgstr "Renk gradyanı (%1)" msgid "Undefined fill type" -msgstr "" +msgstr "Tanımsız dolgu türü" msgid "Linear gradient" -msgstr "" +msgstr "Doğrusal degrade" msgid "Radial gradient" -msgstr "" +msgstr "Radyal degrade" msgid "Open filled path" -msgstr "" +msgstr "Doldurulmuş yolu aç" msgid "Undefined stroke type" -msgstr "" +msgstr "Tanımlanmamış vuruş türü" msgid "Path can't be healed from selfintersection and multiple points." -msgstr "" +msgstr "Yol kendi kendine kesişmeden ve birden fazla noktadan iyileştirilemez." msgid "" "Final shape constains selfintersection or multiple points with same " "coordinate." msgstr "" +"Son şekil, aynı koordinata sahip birden fazla noktanın kendi kendine " +"kesişimini içerir." -#, boost-format msgid "Shape is marked as invisible (%1%)." -msgstr "" +msgstr "Şekil görünmez (%1) olarak işaretlendi." #. TRN: The first placeholder is shape identifier, the second one is text describing the problem. -#, boost-format msgid "Fill of shape (%1%) contains unsupported: %2%." -msgstr "" +msgstr "Şeklin dolgusu (%1) desteklenmeyenleri içeriyor: %2%." -#, boost-format msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." -msgstr "" +msgstr "Şeklin konturu (%1) çok ince (minimum genişlik %2 mm'dir)." -#, boost-format msgid "Stroke of shape (%1%) contains unsupported: %2%." -msgstr "" +msgstr "Şeklin konturu (%1) desteklenmeyenleri içeriyor: %2%." msgid "Face the camera" -msgstr "" +msgstr "Kameraya bak" #. TRN - Preview of filename after clear local filepath. msgid "Unknown filename" -msgstr "" +msgstr "Bilinmeyen dosya adı" #, boost-format msgid "SVG file path is \"%1%\"" -msgstr "" +msgstr "SVG dosya yolu \"%1%\"" msgid "Reload SVG file from disk." -msgstr "" +msgstr "SVG dosyasını diskten yeniden yükleyin." msgid "Change file" -msgstr "" +msgstr "Dosyayı değiştir" msgid "Change to another .svg file" -msgstr "" +msgstr "Başka bir .svg dosyasına geçin" msgid "Forget the file path" -msgstr "" +msgstr "Dosya yolunu unut" msgid "" "Do NOT save local path to 3MF file.\n" "Also disables 'reload from disk' option." msgstr "" +"Yerel yolu 3MF dosyasına kaydetmeyin.\n" +"Ayrıca 'diskten yeniden yükle' seçeneğini de devre dışı bırakır." #. TRN: An menu option to convert the SVG into an unmodifiable model part. msgid "Bake" @@ -1158,139 +1170,134 @@ msgstr "" #. TRN: Tooltip for the menu item. msgid "Bake into model as uneditable part" -msgstr "" +msgstr "Düzenlenemez parça olarak modele dönüştürün" msgid "Save as" -msgstr "" +msgstr "Farklı kaydet" msgid "Save SVG file" -msgstr "" +msgstr "SVG dosyasını kaydet" msgid "Save as '.svg' file" -msgstr "" +msgstr "'.svg' dosyası olarak kaydet" msgid "Size in emboss direction." -msgstr "" +msgstr "Kabartma yönünde boyut." #. TRN: The placeholder contains a number. -#, boost-format msgid "Scale also changes amount of curve samples (%1%)" -msgstr "" +msgstr "Ölçek ayrıca eğri örneklerinin miktarını da değiştirir (%1)" msgid "Width of SVG." -msgstr "" +msgstr "SVG'nin genişliği." msgid "Height of SVG." -msgstr "" +msgstr "SVG'nin yüksekliği." msgid "Lock/unlock the aspect ratio of the SVG." -msgstr "" +msgstr "SVG'nin en boy oranını kilitleyin/kilidini açın." msgid "Reset scale" -msgstr "" +msgstr "Ölçeği sıfırla" msgid "Resize" -msgstr "" +msgstr "Boyutlandır" msgid "Distance of the center of the SVG to the model surface." -msgstr "" +msgstr "SVG merkezinin model yüzeyine uzaklığı." msgid "Reset distance" -msgstr "" +msgstr "Mesafeyi sıfırla" msgid "Reset rotation" -msgstr "" +msgstr "Döndürmeyi sıfırla" msgid "Lock/unlock rotation angle when dragging above the surface." -msgstr "" +msgstr "Yüzeyin üzerinde sürüklerken dönüş açısını kilitleyin/kilidini açın." msgid "Mirror vertically" -msgstr "" +msgstr "Dikey olarak yansıt" msgid "Mirror horizontally" -msgstr "" +msgstr "Yatay olarak yansıt" #. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). msgid "Change SVG Type" -msgstr "" +msgstr "SVG Türünü Değiştir" #. TRN - Input label. Be short as possible msgid "Mirror" msgstr "Ayna" msgid "Choose SVG file for emboss:" -msgstr "" +msgstr "Kabartma için SVG dosyasını seçin:" -#, boost-format msgid "File does NOT exist (%1%)." -msgstr "" +msgstr "Dosya mevcut DEĞİL (%1)." -#, boost-format msgid "Filename has to end with \".svg\" but you selected %1%" -msgstr "" +msgstr "Dosya adının \".svg\" ile bitmesi gerekiyor ancak siz %1%'i seçtiniz" -#, boost-format msgid "Nano SVG parser can't load from file (%1%)." -msgstr "" +msgstr "Nano SVG ayrıştırıcı dosyadan (%1) yüklenemiyor." -#, boost-format msgid "SVG file does NOT contain a single path to be embossed (%1%)." -msgstr "" +msgstr "SVG dosyası kabartma yapılacak tek bir yol İÇERMEZ (%1)." msgid "Vertex" -msgstr "" +msgstr "Tepe noktası" msgid "Edge" -msgstr "" +msgstr "Edge" msgid "Plane" -msgstr "" +msgstr "Düzlem" msgid "Point on edge" -msgstr "" +msgstr "Kenarın noktası" msgid "Point on circle" -msgstr "" +msgstr "Çemberin noktası" msgid "Point on plane" -msgstr "" +msgstr "Düzlemin noktası" msgid "Center of edge" -msgstr "" +msgstr "Kenarın merkezi" msgid "Center of circle" -msgstr "" +msgstr "Çemberin merkezi" msgid "ShiftLeft mouse button" -msgstr "" +msgstr "Shift Sol fare düğmesi" msgid "Select feature" -msgstr "" +msgstr "Özellik seçin" msgid "Select point" -msgstr "" +msgstr "Nokta seç" msgid "Delete" msgstr "Sil" msgid "Restart selection" -msgstr "" +msgstr "Seçimi yeniden başlat" msgid "Esc" msgstr "Esc" msgid "Unselect" -msgstr "" +msgstr "Seçimi kaldır" msgid "Measure" -msgstr "" +msgstr "Ölçüm" msgid "Edit to scale" -msgstr "" +msgstr "Ölçeğe göre düzenleyin" msgctxt "Verb" msgid "Scale" -msgstr "" +msgstr "Ölçek" msgid "None" msgstr "Hiçbiri" @@ -1302,22 +1309,22 @@ msgid "Length" msgstr "Uzunluk" msgid "Selection" -msgstr "" +msgstr "Seçim" msgid "Copy to clipboard" msgstr "Panoya kopyala" msgid "Perpendicular distance" -msgstr "" +msgstr "Dikey mesafe" msgid "Distance" -msgstr "" +msgstr "Mesafe" msgid "Direct distance" -msgstr "" +msgstr "Doğrudan mesafe" msgid "Distance XYZ" -msgstr "" +msgstr "Uzaklık XYZ" msgid "Ctrl+" msgstr "Ctrl+" @@ -3338,6 +3345,8 @@ msgid "" "Alternate extra wall only works with ensure vertical shell thickness " "disabled. " msgstr "" +"Alternatif ekstra duvar yalnızca dikey kabuk kalınlığının devre dışı " +"bırakılmasıyla çalışır. " msgid "" "Change these settings automatically? \n" @@ -3345,6 +3354,10 @@ msgid "" "wall\n" "No - Dont use alternate extra wall" msgstr "" +"Bu ayarlar otomatik olarak değiştirilsin mi?\n" +"Evet - Dikey kabuk kalınlığını sağlamayı devre dışı bırakın ve alternatif ekstra " +"duvarı etkinleştirin\n" +"Hayır - Alternatif ekstra duvar kullanmayın" msgid "" "Prime tower does not work when Adaptive Layer Height or Independent Support " @@ -5969,7 +5982,7 @@ msgid "Stealth Mode" msgstr "Gizli mod" msgid "Check for stable updates only" -msgstr "" +msgstr "Yalnızca kararlı güncellemeleri kontrol edin" msgid "Metric" msgstr "Metrik" @@ -6864,6 +6877,8 @@ msgid "" "Layer height is too small.\n" "It will set to min_layer_height\n" msgstr "" +"Katman yüksekliği çok küçük.\n" +"min_layer_height olarak ayarlanacak\n" msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " @@ -7005,13 +7020,13 @@ msgid "Setting Overrides" msgstr "Ayarların Üzerine Yazma" msgid "Retraction" -msgstr "Geri çekme" +msgstr "Geri Çekme" msgid "Basic information" msgstr "Temel Bilgiler" msgid "Recommended nozzle temperature" -msgstr "Önerilen Nozul sıcaklığı" +msgstr "Önerilen nozul sıcaklığı" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" @@ -8600,7 +8615,7 @@ msgid "Detour and avoid to travel across wall which may cause blob on surface" msgstr "Yüzeyde lekelenmeye neden olabilecek duvar boyunca ilerlemekten kaçın" msgid "Avoid crossing wall - Max detour length" -msgstr "Duvarı geçmekten kaçının - Maksimum servis yolu uzunluğu" +msgstr "Duvarı geçmekten kaçının - maksimum servis yolu uzunluğu" msgid "" "Maximum detour distance for avoiding crossing wall. Don't detour if the " @@ -9419,7 +9434,7 @@ msgid "Only used as a visual help on UI" msgstr "Yalnızca kullanıcı arayüzünde görsel yardım olarak kullanılır" msgid "Extruder offset" -msgstr "Ekstruder Konum" +msgstr "Ekstruder konum" msgid "Flow ratio" msgstr "Akış oranı" @@ -11186,7 +11201,7 @@ msgstr "" "gerçekleştirilir." msgid "Wipe before external loop" -msgstr "" +msgstr "Harici döngüden önce silin" msgid "" "To minimise visibility of potential overextrusion at the start of an " @@ -11199,6 +11214,15 @@ msgid "" "print order as in these modes it is more likely an external perimeter is " "printed immediately after a deretraction move." msgstr "" +"Dış/İç veya İç/Dış/İç duvar baskı sırası ile yazdırırken, dış çevrenin " +"başlangıcında olası aşırı çıkıntının görünürlüğünü en aza indirmek " +"için, kaldırma işlemi dış çevrenin başlangıcından itibaren biraz " +"içeride gerçekleştirilir. Bu şekilde herhangi bir aşırı ekstrüzyon " +"potansiyeli dış yüzeyden gizlenir. \n" +"\n" +"Bu, Dış/İç veya İç/Dış/İç duvar yazdırma sırası ile yazdırırken " +"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin " +"hemen ardından bir dış çevrenin yazdırılması daha olasıdır." msgid "Wipe speed" msgstr "Temizleme hızı" @@ -11281,7 +11305,7 @@ msgstr "" "son modelde dikiş yok." msgid "Smooth Spiral" -msgstr "Pürüzsüz Spiral" +msgstr "Pürüzsüz spiral" msgid "" "Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam " @@ -11291,7 +11315,7 @@ msgstr "" "duvarlarda XY yönlerinde bile hiçbir görünür ek yeri oluşmamasını sağlar." msgid "Max XY Smoothing" -msgstr "Maksimum XY Yumuşatma" +msgstr "Maksimum xy yumuşatma" msgid "" "Maximum distance to move points in XY to try to achieve a smooth spiralIf " @@ -11335,13 +11359,13 @@ msgid "Start G-code when start the printing of this filament" msgstr "Bu filament ile baskı başladığında çalıştırılacak G-Kod" msgid "Single Extruder Multi Material" -msgstr "Tek Ekstruder Çoklu Malzeme" +msgstr "Tek ekstruder çoklu malzeme" msgid "Use single nozzle to print multi filament" msgstr "Çoklu filament basmak için tek nozul kullan" msgid "Manual Filament Change" -msgstr "Manuel Filament Değişimi" +msgstr "Manuel filament değişimi" msgid "" "Enable this option to omit the custom Change filament G-code only at the " @@ -11357,7 +11381,7 @@ msgstr "" "PAUSE kullanırız." msgid "Purge in prime tower" -msgstr "Prime Tower'da temizlik" +msgstr "Prime tower'da temizlik" msgid "Purge remaining filament into prime tower" msgstr "Kalan filamenti Prime Tower'da boşalt" @@ -11451,16 +11475,16 @@ msgstr "" "uygulayıcıları oluşturulur" msgid "normal(auto)" -msgstr "normal(otomatik)" +msgstr "Normal(Otomatik)" msgid "tree(auto)" -msgstr "ağaç(otomatik)" +msgstr "Ağaç(Otomatik)" msgid "normal(manual)" -msgstr "normal(manuel)" +msgstr "Normal(Manuel)" msgid "tree(manual)" -msgstr "ağaç(manuel)" +msgstr "Ağaç(Manuel)" msgid "Support/object xy distance" msgstr "Destek/nesne xy mesafesi" @@ -11924,7 +11948,7 @@ msgstr "" "damlamayı en aza indirebilir" msgid "Wipe Distance" -msgstr "Temizleme Mesafesi" +msgstr "Temizleme mesafesi" msgid "" "Discribe how long the nozzle will move along the last path when " @@ -12156,6 +12180,10 @@ msgid "" "Wipe tower is only compatible with relative mode. It is recommended on most " "printers. Default is checked" msgstr "" +"\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. Bazı " +"ekstrüderler bu seçenek işaretlenmediğinde daha iyi çalışır (mutlak ekstrüzyon modu). " +"Silme kulesi yalnızca göreceli modla uyumludur. Çoğu yazıcıda önerilir. " +"Varsayılan işaretlendi." msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -14063,6 +14091,8 @@ msgid "" "G-code window\n" "You can turn on/off the G-code window by pressing the C key." msgstr "" +"G-kodu penceresi\n" +"C tuşuna basarak G*kodu penceresini açabilir/kapatabilirsiniz." #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" @@ -14070,6 +14100,9 @@ msgid "" "You can switch between Prepare and Preview workspaces by " "pressing the Tab key." msgstr "" +"Çalışma alanlarını değiştir\n" +"Sekme tuşuna basarak Hazırlık ve Önizleme çalışma " +"alanları arasında geçiş yapabilirsiniz." #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" @@ -14087,6 +14120,9 @@ msgid "" "Did you know that Reverse on odd feature can significantly improve " "the surface quality of your overhangs?" msgstr "" +"Tek sayıyı tersine çevir\n" +"Tek sayıyı ters çevir özelliğinin çıkıntılarınızın yüzey kalitesini " +"önemli ölçüde artırabileceğini biliyor muydunuz?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" From 044e25d1cfb3890cd1c70a93f39c2f80f66e9e88 Mon Sep 17 00:00:00 2001 From: kpishere Date: Fri, 29 Dec 2023 20:12:06 -0500 Subject: [PATCH 63/66] Feature/build target 10.15 (#3252) * Set target to 10.15, make porter templates explicit * CMAKE_OSX_DEPLOYMENT_TARGET refactor * Update build_release_macos.sh fix typo --------- Co-authored-by: SoftFever --- .github/workflows/build_deps.yml | 2 +- .github/workflows/build_orca.yml | 2 +- CMakeLists.txt | 12 ++++++++++-- build_release_macos.sh | 14 +++++++++----- deps/CMakeLists.txt | 11 +++++++++-- src/slic3r/GUI/CalibrationPanel.cpp | 4 ++-- src/slic3r/GUI/GUI_App.cpp | 6 +++--- src/slic3r/GUI/GUI_ObjectTableSettings.cpp | 2 +- src/slic3r/GUI/SelectMachine.cpp | 4 ++-- src/slic3r/GUI/SendToPrinter.cpp | 4 ++-- 10 files changed, 40 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index c9e6d36c52..d63a038ee7 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -75,7 +75,7 @@ jobs: mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }} mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }}/OrcaSlicer_dep_${{ inputs.arch }} brew uninstall --ignore-dependencies zstd - ./build_release_macos.sh -dp -a ${{ inputs.arch }} + ./build_release_macos.sh -dp -a ${{ inputs.arch }} -t 10.15 brew install zstd diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index 58bd3e1b84..a2e1a54614 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -86,7 +86,7 @@ jobs: if: inputs.os == 'macos-12' working-directory: ${{ github.workspace }} run: | - ./build_release_macos.sh -s -n -a ${{inputs.arch}} + ./build_release_macos.sh -s -n -a ${{inputs.arch}} -t 10.15 # Thanks to RaySajuuk, it's working now - name: Sign app and notary diff --git a/CMakeLists.txt b/CMakeLists.txt index dffd6807d9..aa53ba06ec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,12 @@ cmake_minimum_required(VERSION 3.13) + +if (APPLE) + # if CMAKE_OSX_DEPLOYMENT_TARGET is not set, set it to 11.3 + if (NOT CMAKE_OSX_DEPLOYMENT_TARGET) + set(CMAKE_OSX_DEPLOYMENT_TARGET "11.3" CACHE STRING "Minimum OS X deployment version") + endif () +endif () + project(OrcaSlicer) include("version.inc") @@ -52,7 +60,7 @@ if (APPLE) if (CMAKE_MACOSX_BUNDLE) set(CMAKE_INSTALL_RPATH @executable_path/../Frameworks) endif() - set(CMAKE_OSX_DEPLOYMENT_TARGET "11.3" CACHE STRING "Minimum OS X deployment version" FORCE) + set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version" FORCE) SET(CMAKE_XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "com.softfever3d.orca-slicer") message(STATUS "Orca: IS_CROSS_COMPILE: ${IS_CROSS_COMPILE}") @@ -786,4 +794,4 @@ set (CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE.txt) # must also in set(CPACK_WIX_UPGRADE_GUID "058245e8-20e0-4a95-9ab7-1acfe17ad511") set(CPACK_GENERATOR NSIS) -include(CPack) \ No newline at end of file +include(CPack) diff --git a/build_release_macos.sh b/build_release_macos.sh index b7cac93c18..01ddefd833 100755 --- a/build_release_macos.sh +++ b/build_release_macos.sh @@ -1,6 +1,6 @@ #!/bin/sh -while getopts ":a:sdphn" opt; do +while getopts ":a:sdpt:hn" opt; do case ${opt} in d ) export BUILD_TARGET="deps" @@ -17,11 +17,15 @@ while getopts ":a:sdphn" opt; do n ) export NIGHTLY_BUILD="1" ;; + t ) + export OSX_DEPLOYMENT_TARGET="$OPTARG" + ;; h ) echo "Usage: ./build_release_macos.sh [-d]" echo " -d: Build deps only" echo " -a: Set ARCHITECTURE (arm64 or x86_64)" echo " -s: Build slicer only" echo " -n: Nightly build" + echo " -t: Specify minimum version of the target platform, default is 11.3" exit 0 ;; esac @@ -34,7 +38,7 @@ fi echo "Arch: $ARCH" echo "BUILD_TARGET: $BUILD_TARGET" - +echo "OSX_DEPLOYMENT_TARGET: $OSX_DEPLOYMENT_TARGET" # if which -s brew; then # brew --prefix libiconv # brew --prefix zstd @@ -58,8 +62,8 @@ mkdir -p $DEPS if [ "slicer." != $BUILD_TARGET. ]; then echo "building deps..." - echo "cmake ../ -DDESTDIR=$DEPS -DOPENSSL_ARCH=darwin64-${ARCH}-cc -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES:STRING=${ARCH}" - cmake ../ -DDESTDIR="$DEPS" -DOPENSSL_ARCH="darwin64-${ARCH}-cc" -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES:STRING=${ARCH} + echo "cmake ../ -DDESTDIR=$DEPS -DOPENSSL_ARCH=darwin64-${ARCH}-cc -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES:STRING=${ARCH} -DCMAKE_OSX_DEPLOYMENT_TARGET=${OSX_DEPLOYMENT_TARGET}" + cmake ../ -DDESTDIR="$DEPS" -DOPENSSL_ARCH="darwin64-${ARCH}-cc" -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES:STRING=${ARCH} -DCMAKE_OSX_DEPLOYMENT_TARGET=${OSX_DEPLOYMENT_TARGET} cmake --build . --config Release --target deps if [ "1." == "$PACK_DEPS". ]; then @@ -77,7 +81,7 @@ cd $WD mkdir -p build_$ARCH cd build_$ARCH echo "building slicer..." -cmake .. -GXcode -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="$DEPS/usr/local" -DCMAKE_INSTALL_PREFIX="$PWD/OrcaSlicer" -DCMAKE_BUILD_TYPE=Release -DCMAKE_MACOSX_RPATH=ON -DCMAKE_INSTALL_RPATH="$DEPS/usr/local" -DCMAKE_MACOSX_BUNDLE=ON -DCMAKE_OSX_ARCHITECTURES=${ARCH} +cmake .. -GXcode -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="$DEPS/usr/local" -DCMAKE_INSTALL_PREFIX="$PWD/OrcaSlicer" -DCMAKE_BUILD_TYPE=Release -DCMAKE_MACOSX_RPATH=ON -DCMAKE_INSTALL_RPATH="$DEPS/usr/local" -DCMAKE_MACOSX_BUNDLE=ON -DCMAKE_OSX_ARCHITECTURES=${ARCH} -DCMAKE_OSX_DEPLOYMENT_TARGET=${OSX_DEPLOYMENT_TARGET} cmake --build . --config Release --target ALL_BUILD cd .. ./run_gettext.sh diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 1f0c8e5bc1..4352668633 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -20,8 +20,15 @@ # therefore, unfortunatelly, the installation cannot be copied/moved elsewhere without re-installing wxWidgets. # -project(OrcaSlicer-deps) cmake_minimum_required(VERSION 3.2) +if (APPLE) + # if CMAKE_OSX_DEPLOYMENT_TARGET is not set, set it to 11.3 + if (NOT CMAKE_OSX_DEPLOYMENT_TARGET) + set(CMAKE_OSX_DEPLOYMENT_TARGET "11.3" CACHE STRING "Minimum OS X deployment version") + endif () +endif () + +project(OrcaSlicer-deps) include(ExternalProject) include(ProcessorCount) @@ -163,7 +170,7 @@ if (MSVC) endif () elseif (APPLE) message("OS X SDK Path: ${CMAKE_OSX_SYSROOT}") - set(CMAKE_OSX_DEPLOYMENT_TARGET "11.3" CACHE STRING "Minimum OS X deployment version" FORCE) + set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version" FORCE) if (CMAKE_OSX_DEPLOYMENT_TARGET) set(DEP_OSX_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}") message("OS X Deployment Target: ${DEP_OSX_TARGET}") diff --git a/src/slic3r/GUI/CalibrationPanel.cpp b/src/slic3r/GUI/CalibrationPanel.cpp index 88e107da84..9a16c13322 100644 --- a/src/slic3r/GUI/CalibrationPanel.cpp +++ b/src/slic3r/GUI/CalibrationPanel.cpp @@ -242,7 +242,7 @@ void SelectMObjectPopup::Popup(wxWindow* WXUNUSED(focus)) if (wxGetApp().is_user_login()) { if (!get_print_info_thread) { - get_print_info_thread = new boost::thread(Slic3r::create_thread([this, token = std::weak_ptr(m_token)] { + get_print_info_thread = new boost::thread(Slic3r::create_thread([this, token = std::weak_ptr(m_token)] { NetworkAgent* agent = wxGetApp().getAgent(); unsigned int http_code; std::string body; @@ -716,4 +716,4 @@ CalibrationPanel::~CalibrationPanel() { delete m_refresh_timer; } -}} \ No newline at end of file +}} diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 157b1e7dbb..81cc637bbc 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -4736,7 +4736,7 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg) cancelFn = [this, dlg]() { return m_is_closing || dlg->WasCanceled(); }; - finishFn = [this, userid = m_agent->get_user_id(), dlg, t = std::weak_ptr(m_user_sync_token)](bool ok) { + finishFn = [this, userid = m_agent->get_user_id(), dlg, t = std::weak_ptr(m_user_sync_token)](bool ok) { CallAfter([=]{ dlg->Destroy(); if (ok && m_agent && t.lock() == m_user_sync_token && userid == m_agent->get_user_id()) reload_settings(); @@ -4744,7 +4744,7 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg) }; } else { - finishFn = [this, userid = m_agent->get_user_id(), t = std::weak_ptr(m_user_sync_token)](bool ok) { + finishFn = [this, userid = m_agent->get_user_id(), t = std::weak_ptr(m_user_sync_token)](bool ok) { CallAfter([=] { if (ok && m_agent && t.lock() == m_user_sync_token && userid == m_agent->get_user_id()) reload_settings(); }); @@ -4752,7 +4752,7 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg) } m_sync_update_thread = Slic3r::create_thread( - [this, progressFn, cancelFn, finishFn, t = std::weak_ptr(m_user_sync_token)] { + [this, progressFn, cancelFn, finishFn, t = std::weak_ptr(m_user_sync_token)] { // get setting list, update setting list std::string version = preset_bundle->get_vendor_profile_version(PresetBundle::BBL_BUNDLE).to_string(); int ret = m_agent->get_setting_list2(version, [this](auto info) { diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp index 7468d9c1b4..10578be691 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp @@ -220,7 +220,7 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ optgroup->sidetext_width = 5; optgroup->set_config_category_and_type(GUI::from_u8(group_category), Preset::TYPE_PRINT); - std::weak_ptr weak_optgroup(optgroup); + std::weak_ptr weak_optgroup(optgroup); optgroup->m_on_change = [this, is_object, object, config, group_category](const t_config_option_key &opt_id, const boost::any &value) { this->m_parent->Freeze(); this->update_config_values(is_object, object, config, group_category); diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index eb922861cf..863fcaf1e8 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -433,7 +433,7 @@ void SelectMachinePopup::Popup(wxWindow *WXUNUSED(focus)) if (wxGetApp().is_user_login()) { if (!get_print_info_thread) { - get_print_info_thread = new boost::thread(Slic3r::create_thread([this, token = std::weak_ptr(m_token)] { + get_print_info_thread = new boost::thread(Slic3r::create_thread([this, token = std::weak_ptr(m_token)] { NetworkAgent* agent = wxGetApp().getAgent(); unsigned int http_code; std::string body; @@ -2833,7 +2833,7 @@ void SelectMachineDialog::update_user_machine_list() { NetworkAgent* m_agent = wxGetApp().getAgent(); if (m_agent && m_agent->is_user_login()) { - boost::thread get_print_info_thread = Slic3r::create_thread([this, token = std::weak_ptr(m_token)] { + boost::thread get_print_info_thread = Slic3r::create_thread([this, token = std::weak_ptr(m_token)] { NetworkAgent* agent = wxGetApp().getAgent(); unsigned int http_code; std::string body; diff --git a/src/slic3r/GUI/SendToPrinter.cpp b/src/slic3r/GUI/SendToPrinter.cpp index 1900e281bd..7d0fb5663c 100644 --- a/src/slic3r/GUI/SendToPrinter.cpp +++ b/src/slic3r/GUI/SendToPrinter.cpp @@ -813,7 +813,7 @@ void SendToPrinterDialog::update_user_machine_list() { NetworkAgent* m_agent = wxGetApp().getAgent(); if (m_agent && m_agent->is_user_login()) { - boost::thread get_print_info_thread = Slic3r::create_thread([this, token = std::weak_ptr(m_token)] { + boost::thread get_print_info_thread = Slic3r::create_thread([this, token = std::weak_ptr(m_token)] { NetworkAgent* agent = wxGetApp().getAgent(); unsigned int http_code; std::string body; @@ -1391,4 +1391,4 @@ SendToPrinterDialog::~SendToPrinterDialog() } } -} \ No newline at end of file +} From 527aefc6fbeabf2cdbb4c1a274afb28bcfed7230 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 30 Dec 2023 10:29:32 +0800 Subject: [PATCH 64/66] preset export small tweak --- src/libslic3r/PresetBundle.cpp | 3 +- src/slic3r/GUI/CreatePresetsDialog.cpp | 104 ++++++------------------- 2 files changed, 26 insertions(+), 81 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 3e1dfd343e..d3c5377ad2 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -5,6 +5,7 @@ #include "Utils.hpp" #include "Model.hpp" #include "format.hpp" +#include "libslic3r_version.h" #include #include @@ -767,7 +768,7 @@ bool PresetBundle::import_json_presets(PresetsConfigSubstitutions & s std::string version_str = key_values[BBL_JSON_KEY_VERSION]; boost::optional version = Semver::parse(version_str); if (!version) return false; - Semver app_version = *(Semver::parse(SLIC3R_VERSION)); + Semver app_version = *(Semver::parse(SoftFever_VERSION)); if (version->maj() != app_version.maj()) { BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << " Preset incompatibla, not loading: " << name; return false; diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index d0a899fd4a..8f48923c4e 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -13,6 +13,7 @@ #include "FileHelp.hpp" #include "Tab.hpp" #include "MainFrame.hpp" +#include "libslic3r_version.h" #define NAME_OPTION_COMBOBOX_SIZE wxSize(FromDIP(200), FromDIP(24)) #define FILAMENT_PRESET_COMBOBOX_SIZE wxSize(FromDIP(300), FromDIP(24)) @@ -179,7 +180,7 @@ static bool delete_filament_preset_by_name(std::string delete_preset_name, std:: return true; } -static std::string get_curr_time() +static std::string get_curr_time(const char* format = "%Y_%m_%d_%H_%M_%S") { std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); @@ -187,7 +188,7 @@ static std::string get_curr_time() std::tm local_time = *std::localtime(&time); std::ostringstream time_stream; - time_stream << std::put_time(&local_time, "%Y_%m_%d_%H_%M_%S"); + time_stream << std::put_time(&local_time, format); std::string current_time = time_stream.str(); return current_time; @@ -195,11 +196,12 @@ static std::string get_curr_time() static std::string get_curr_timestmp() { - std::time_t currentTime = std::time(nullptr); - std::ostringstream oss; - oss << currentTime; - std::string timestampString = oss.str(); - return timestampString; + return get_curr_time("%Y%m%d%H%M%S"); + // std::time_t currentTime = std::time(nullptr); + // std::ostringstream oss; + // oss << currentTime; + // std::string timestampString = oss.str(); + // return timestampString; } static void get_filament_compatible_printer(Preset* preset, vector& printers) @@ -3407,49 +3409,7 @@ std::string ExportConfigsDialog::initial_file_path(const wxString &path, const s std::string export_path = into_u8(path); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "initial file path and path is:" << export_path << " and sub path is: " << sub_file_path; boost::filesystem::path printer_export_path = (boost::filesystem::path(export_path) / sub_file_path).make_preferred(); - if (boost::filesystem::exists(printer_export_path)) { - MessageDialog dlg(this, wxString::Format(_L("The '%s' folder already exists in the current directory. Do you want to clear it and rebuild it.\nIf not, a time suffix will be " - "added, and you can modify the name after creation."), sub_file_path), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES_NO | wxYES_DEFAULT | wxCENTRE); - int res = dlg.ShowModal(); - if (wxID_YES == res) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "Same path exists, delete and need to rebuild, and path is: " << printer_export_path.string(); - try { - boost::filesystem::remove_all(printer_export_path); - } catch (...) { - MessageDialog dlg(this, _L(wxString::Format("The file: %s \nin the directory may have been opened by another program. \nPlease close it and try again.", - encode_path(printer_export_path.string().c_str()))), - wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), - wxYES | wxYES_DEFAULT | wxCENTRE); - dlg.ShowModal(); - return "initial_failed"; - } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "delete path"; - boost::filesystem::create_directories(printer_export_path); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "create path"; - export_path = printer_export_path.string(); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "Same path exists, delete and rebuild, and path is: " << export_path; - } else if (wxID_NO == res) { - export_path = printer_export_path.string(); - std::string export_path_with_time; - boost::filesystem::path *printer_export_path_with_time = nullptr; - do { - if (printer_export_path_with_time) { - delete printer_export_path_with_time; - printer_export_path_with_time = nullptr; - } - export_path_with_time = export_path + " " + get_curr_time(); - printer_export_path_with_time = new boost::filesystem::path(export_path_with_time); - } while (boost::filesystem::exists(*printer_export_path_with_time)); - export_path = export_path_with_time; - boost::filesystem::create_directories(*printer_export_path_with_time); - if (printer_export_path_with_time) { - delete printer_export_path_with_time; - printer_export_path_with_time = nullptr; - } - } else { - return ""; - } - } else { + if (!boost::filesystem::exists(printer_export_path)) { boost::filesystem::create_directories(printer_export_path); export_path = printer_export_path.string(); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "Same path exists, delete and rebuild, and path is: " << export_path; @@ -3707,7 +3667,7 @@ void ExportConfigsDialog::select_curr_radiobox(std::vectorname; json bundle_structure; - NetworkAgent *agent = wxGetApp().getAgent(); std::string clock = get_curr_timestmp(); - if (agent) { - bundle_structure["user_name"] = agent->get_user_name(); - bundle_structure["user_id"] = agent->get_user_id(); - bundle_structure["version"] = agent->get_version(); - bundle_structure["bundle_id"] = agent->get_user_id() + "_" + printer_preset_name_ + "_" + clock; - } else { - bundle_structure["user_name"] = ""; - bundle_structure["user_id"] = ""; - bundle_structure["version"] = ""; - bundle_structure["bundle_id"] = "offline_" + printer_preset_name_ + "_" + clock; - } + bundle_structure["user_name"] = ""; + bundle_structure["user_id"] = ""; + bundle_structure["version"] = SoftFever_VERSION; + bundle_structure["bundle_id"] = printer_preset_name_ + "_" + clock; bundle_structure["bundle_type"] = "printer config bundle"; bundle_structure["printer_preset_name"] = printer_preset_name_; json printer_config = json::array(); @@ -3743,15 +3695,15 @@ ExportConfigsDialog::ExportCase ExportConfigsDialog::archive_preset_bundle_to_fi return ExportCase::INITIALIZE_FAIL; } - boost::filesystem::path pronter_file_path = boost::filesystem::path(printer_preset->file); - std::string preset_path = pronter_file_path.make_preferred().string(); + boost::filesystem::path printer_file_path = boost::filesystem::path(printer_preset->file); + std::string preset_path = printer_file_path.make_preferred().string(); if (preset_path.empty()) { BOOST_LOG_TRIVIAL(info) << "Export printer preset: " << printer_preset->name << " skip because of the preset file path is empty."; continue; } // Add a file to the ZIP file - std::string printer_config_file_name = "printer/" + pronter_file_path.filename().string(); + std::string printer_config_file_name = "printer/" + printer_file_path.filename().string(); status = mz_zip_writer_add_file(&zip_archive, printer_config_file_name.c_str(), encode_path(preset_path.c_str()).c_str(), NULL, 0, MZ_DEFAULT_COMPRESSION); //status = mz_zip_writer_add_mem(&zip_archive, ("printer/" + printer_preset->name + ".json").c_str(), json_contents, strlen(json_contents), MZ_DEFAULT_COMPRESSION); if (MZ_FALSE == status) { @@ -3831,7 +3783,7 @@ ExportConfigsDialog::ExportCase ExportConfigsDialog::archive_preset_bundle_to_fi ExportConfigsDialog::ExportCase ExportConfigsDialog::archive_filament_bundle_to_file(const wxString &path) { - std::string export_path = initial_file_path(path, "Filament bundle"); + std::string export_path = initial_file_path(path, ""); if (export_path.empty() || "initial_failed" == export_path) return ExportCase::EXPORT_CANCEL; BOOST_LOG_TRIVIAL(info) << "Export filament preset bundle"; @@ -3840,19 +3792,11 @@ ExportConfigsDialog::ExportCase ExportConfigsDialog::archive_filament_bundle_to_ std::string filament_name = checkbox_filament_name.second; json bundle_structure; - NetworkAgent *agent = wxGetApp().getAgent(); std::string clock = get_curr_timestmp(); - if (agent) { - bundle_structure["user_name"] = agent->get_user_name(); - bundle_structure["user_id"] = agent->get_user_id(); - bundle_structure["version"] = agent->get_version(); - bundle_structure["bundle_id"] = agent->get_user_id() + "_" + filament_name + "_" + clock; - } else { - bundle_structure["user_name"] = ""; - bundle_structure["user_id"] = ""; - bundle_structure["version"] = ""; - bundle_structure["bundle_id"] = "offline_" + filament_name + "_" + clock; - } + bundle_structure["user_name"] = ""; + bundle_structure["user_id"] = ""; + bundle_structure["version"] = SoftFever_VERSION; + bundle_structure["bundle_id"] = filament_name + "_" + clock; bundle_structure["bundle_type"] = "filament config bundle"; bundle_structure["filament_name"] = filament_name; std::unordered_map vendor_structure; @@ -4070,7 +4014,7 @@ wxBoxSizer *ExportConfigsDialog::create_button_item(wxWindow* parent) return; } - wxDirDialog dlg(this, _L("Choose a directory"), from_u8(wxGetApp().app_config->get_last_dir()), wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST); + wxDirDialog dlg(this, _L("Choose a directory"), "", wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST); wxString path; if (dlg.ShowModal() == wxID_OK) path = dlg.GetPath(); ExportCase export_case = ExportCase::EXPORT_CANCEL; From d0cf699617b32def35dbf1d9ada3892bd32e7503 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 30 Dec 2023 10:29:48 +0800 Subject: [PATCH 65/66] bump dev branch version to 1.9.1-dev --- version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.inc b/version.inc index 81c5d61fb0..ac8f089327 100644 --- a/version.inc +++ b/version.inc @@ -10,7 +10,7 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "0") endif() -set(SoftFever_VERSION "1.9.0-alpha") +set(SoftFever_VERSION "1.9.0-beta") string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" SoftFever_VERSION_MATCH ${SoftFever_VERSION}) set(ORCA_VERSION_MAJOR ${CMAKE_MATCH_1}) From 1d8cdf04d27a57483d322cab8335dd246f349577 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 30 Dec 2023 15:22:18 +0800 Subject: [PATCH 66/66] remove P1P-P1S warning --- src/slic3r/GUI/DeviceManager.cpp | 21 ++++++--------------- src/slic3r/GUI/SelectMachine.cpp | 9 +++++++-- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index b3e9ea27ef..b654834c6e 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1378,9 +1378,13 @@ void MachineObject::parse_status(int flag) } if (!is_support_p1s_plus) { - is_support_p1s_plus = ((flag >> 27) & 0x1) != 0; - } + auto supported_plus = ((flag >> 27) & 0x1) != 0; + auto installed_plus = ((flag >> 26) & 0x1) != 0; + if (installed_plus && supported_plus) { + is_support_p1s_plus = true; + } + } sdcard_state = MachineObject::SdcardState((flag >> 8) & 0x11); @@ -4064,12 +4068,6 @@ int MachineObject::parse_json(std::string payload) } else if (jj["command"].get() == "gcode_line") { //ack of gcode_line BOOST_LOG_TRIVIAL(debug) << "parse_json, ack of gcode_line = " << j.dump(4); - if (m_agent && is_studio_cmd(sequence_id)) { - json t; - t["dev_id"] = this->dev_id; - t["signal"] = this->wifi_signal; - m_agent->track_event("ack_cmd_gcode_line", t.dump()); - } } else if (jj["command"].get() == "project_prepare") { //ack of project file BOOST_LOG_TRIVIAL(info) << "parse_json, ack of project_prepare = " << j.dump(4); @@ -4082,13 +4080,6 @@ int MachineObject::parse_json(std::string payload) } else if (jj["command"].get() == "project_file") { //ack of project file BOOST_LOG_TRIVIAL(debug) << "parse_json, ack of project_file = " << j.dump(4); - - if (m_agent && is_studio_cmd(sequence_id)) { - json t; - t["dev_id"] = this->dev_id; - t["signal"] = this->wifi_signal; - m_agent->track_event("ack_cmd_project_file", t.dump()); - } std::string result; if (jj.contains("result")) { result = jj["result"].get(); diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 863fcaf1e8..52227037f6 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -2347,14 +2347,19 @@ bool SelectMachineDialog::is_same_printer_model() const auto source_model = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); const auto target_model = obj_->printer_type; // Orca: ignore P1P -> P1S - if (source_model != target_model && !(preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle) == "C12") && !(target_model == "C11" && source_model == "C12")) { + if (source_model != target_model) { + if ((source_model == "C12" && target_model == "C11") || (source_model == "C11" && target_model == "C12") || + (obj_->is_support_p1s_plus && (source_model == "C12"))) { + return true; + } + BOOST_LOG_TRIVIAL(info) << "printer_model: source = " << source_model; BOOST_LOG_TRIVIAL(info) << "printer_model: target = " << target_model; return false; } if (obj_->is_support_p1s_plus) { - BOOST_LOG_TRIVIAL(info) << "printer_model: source = " << preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); + BOOST_LOG_TRIVIAL(info) << "printer_model: source = " << source_model; BOOST_LOG_TRIVIAL(info) << "printer_model: target = " << obj_->printer_type << " (plus)"; return false; }

v0l?Jk!G3(-11WbJ_j9fLj7S7eG+oSKQN1x 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