From 6ab39935864179d80989394058fc51412a665c8b Mon Sep 17 00:00:00 2001 From: sallbet Date: Sat, 7 Oct 2023 00:03:16 +0300 Subject: [PATCH 01/11] Completely remove meme names and add custom flag --- src/core/ChatProvider.js | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/core/ChatProvider.js b/src/core/ChatProvider.js index 80dc734b..6cab36a4 100644 --- a/src/core/ChatProvider.js +++ b/src/core/ChatProvider.js @@ -474,20 +474,14 @@ export class ChatProvider { let displayCountry = country; if (user.userlvl !== 0) { displayCountry = 'zz'; - /* - * meme names disabled for now - * TODO think about activating it again after fixing accounts and - * mute evasions - * - } else if (name.endsWith('berg') || name.endsWith('stein')) { - displayCountry = 'il'; - / */ } else if (user.id === 2927) { /* - * hard coded flag for Manchukuo_1940 + * hard coded flags * TODO make it possible to modify user flags */ displayCountry = 'bt'; + } else if (user.id === 41030) { + displayCountry = 'to'; } if (USE_MAILER && !user.regUser.verified) { From 5d5eb38fc21b3e02cfaf3b94c4d462de31116aeb Mon Sep 17 00:00:00 2001 From: sallbet Date: Sat, 7 Oct 2023 00:03:45 +0300 Subject: [PATCH 02/11] Replace r/place canvas with Thoia canvas Remove r/place from constants.js Change preview for new canvas Change top10 canvas size --- public/preview9.png | Bin 1544 -> 3823 bytes src/canvases.json | 95 ++++++++++++++++++++++++------------------ src/canvasesDesc.js | 4 +- src/core/constants.js | 47 +-------------------- 4 files changed, 58 insertions(+), 88 deletions(-) diff --git a/public/preview9.png b/public/preview9.png index 597c92bebf812728e066f628786de67a6197e181..d5a53c41b97125a0b0bab8232a668cb46770505d 100644 GIT binary patch literal 3823 zcmVt0dwA42<<8k7dnKeBi`?DMt+eE-Ag^sldd zj1u3|6g_!q?4@`Yw0-|;#b(iZMDfSJoGuL@VCO~nYG{(z?|yoEIRy<88h&TqZ2&JN z+$hO++HoNY8+Kdvb? z$Gic0rs8^R%g%q5;{WweJ<(09SprOn0}>lI+Pnd%GkT`#w)1;}0;@3rfO*)lW}_MP zoi~6!HhN`6Kg9LI6`Yy`^t8JbR&dRQ8;xsAjqt6l;uv8!On_zZdU{x_-O{4X6!Dx` z57huT4bsJn5|##e5J4x_`4#XWu{68s?1t(FYIbCMfVT$VJ7Rmk#(1C$uXhFbnm)#x z@u(7y6${n+SXV%lQWRHYBq>&6Kxf$qbI&})fYI^wIU0bIU=>~`M`Tz>^B-Z2I59dt zAHM;(kcDK-a&)97m<2Xp9J>Ly`182)s~#AhHNhT<@7X2#u^WH_HSc`pTl1O|!_t2M z+Ho78=g#Vh#Z4g%wsDgkw*ffO?{hZ;?+xIl<~bP8(*R43@g+K?z8Qg8vKjE7rvZW_ z3}tb_F~>O6a1K1*06TIz7usA(zAPeNOi90b#mf(Qm}5*kGfptw0QhRxI9EC&QwzKn`vA2FDxf)&7k9cP(wX)Bz-=?2)#PH>YIFs5%Lt7M8e8Um`*F5A-;x55dW zeh5U8HXU(yFLC0WOy2pr_%q0@cmB+o%OdpGkk69xCqNc)q+DZRZhxELG}4VfGKQtt zjj?-XAFBbpC~E0WGN+#cR`>&!T6agvKh_m6C=+-{90b2>*nKsC9L>)0JTi-2j{c2& zZ_UfT8lW|rcm3)NY}){Ox69q^+|SjKRVZ}10!qH?SS$P+DY|U~Y*6gxWG*e_PGjA+ z0dzH%CRgJ$tc#~XrjR>`Bb$PKH9#i0*~mz)SX7ejG35`Odf<)3c#6*fx;*8Vs&L)) zD84k^?bEwKja_mn!+(kf$Rwg!=33-O`_1XTu7Kt$*Z^x^0k@rRyR$3m)1ClBn_|aD zzV5!KI01CfR`D&G);r?*sTx3voGElh<|xf@xdM9p+}Z=f%c_NK(LDV#y}GEC_<`wq z)>^jD|FNh`1GL^*;&3a5l_n%YW7pbK-wU)%Y1;Jdpe=qiTpOEqymEc`E1-JkQvzFb z31-*R!#6-{_K)5KPxB1W)CjnWnm{U)*Rpqh26#UKD(Z4X(Ze@D>!)(9`g?Dh!+sKo zU&=@U<&AZ1LA2h{8sd;Y2J(ZOE?{i~XnDaK`rE~oe++z?{+~g={;1=8*mduMM~Qg& z)8IE>9_t}+&EiXAtZgr9#-+T?9|9jeiI498<_*y67_BWtFS{)#L9NeAcX_0@c>`>f z1hFekfOnLnQM{f_xYWnZ8(_;MaPy%Ndif*RjBgdF#J6;M(;ohFfSyV0g~d3S_iC)( z4Y2tM&=L@m+kzpwg42SPDQ*jXYkZOZ<_(ZdOly&J5^&^a?Q4Ckx%f+bY_$(RYDd`J zya6(f!&#BV9Aie`lWE1!#rN#&jm~lJ_8EYk)Cr7uTGm^)Vo33qVl373VyU5P+jl2` z2;f}PjM%vl4Bbi^|LY_ur95pQXpG^Sn) z?yLc{AxlBaEL}6UH(!d~tS2W4-pyd!0B}wt55fkB6kB+na~?fy>ld$SQB%+=dhctc zH=YqlO&*I6fegk^y@uT)iLtbB#M82?ucc_M%>}0e9LYg#jyZ3&y5dr?0pPccFt)@H zbQ!PfJX0jS`?wgIr=4Ry>uI^ty5MI`6X=}kb;%Xs->!ff1 zHXJ2iUe3Vt__c0Vod66j4&WrPoQZgh(`CMPA$b?G?Us|lNCf9t*jAnmwJOqd0xSg< zJx|x8S9#Yb8Lu}a&Y;}proZa@E z6XS-MM)5t}`V(Mj#d_&U6JFobvx90%4s@wW!B~o8=~=W|-!ulVWzK8H_IQx5dj??S zHRk$RKoxuD0?EqmK!7uug^O^vDa^>O#$nlrr%Z%P#$kL@>7385C%`BF`1eV_O~Y9t z7o6voKJklzTly=|*e{-oX<2Jp(IttQ;s(x4&yZn$-7^4d(p-w}y@dD855MQJ%XA5V zc6X>yBO3zQOshb=<7};as)YlohzFTzoX=k!~1#nSI1!URDIpd!a zhM}^YghZ%dmo}0VIVudAAd*=g%vlq0cyVcPk%NxrskM0p=z{9C!r151N`OU6cwZ{4 z@JliYGqwo(%yV1%Le0vZrSBTRE4D|E{9vBww_-3}IFAw#@j}oIn3k^=t--Zf11v32 z&GEj}MnjB`soJ^FUJ`B(fm|3}Q1E2bJOKvZGotB?!@3r>)@@!}_b6x{xD=x#I zE^u#bvWfh9xpf}`31gZ9NEQs{(M67VvW{NBgbvn`&LW;9o0AU^E&}*WgIs2WK4dkH z=0gr6Ya$SXFORrPd!W5 z`Gg*F=<&6jtj%WtVE|0#yS(s1ZqV9?r}uWLw%OQcP@UE%P1BvUeJN-VcebpAn1)2fHvak zu1(MQ#qnh1N5^3Kz&?t7mWg=mtCnM)%+n2^6=f~p?35*wp=l>QOvrisj4hD?4&-~q z0X#iwdzx>>!#WmUFg&{OSYOuOYjFca#>JTDfY!6*gvN4OM)SSkEV{;m4Aa>*__ZVB zMY@(P*0uP8=h217`m&B*)eR6ChM~v-;niSxvRRyxPmB-0Yq4PiBXF>eM##bstVIX3 zNMCrYQ^qCG7^WDtBp-?Q$Ge~fFozT05Z5)naF+? zqgJlfrp}AtS(sT`jsM^L?a!0=bOp%blOO-2M&FdR95n?85!t>@ZmUVgZo#tr%3xg353PXJNu zaXs`ZmJ|d#Nk*$c;FoM_T}zK?TE2uYeAd_UOYk&?S6G&dWNs$_E9kiZL?Bvz^qLcA zC0O|Uw)|lX@GTm6GFrBnujigTeADu^>r72bGM6ue{7(MMUYD2N?F^uK(8-K~)1n{Q zkVMxMuOw^P;$kk*w=kE|xF&+(DdN_JToOY~&P29G{;mPU!3=;UW6`XD zvvQX1QE8GBD=!v}bHE$4B+Gi3zcs-5KHygd3^Eu+pXZFH=UF+eceJ(S0lDB}N}Ql) zVy=-rQLWz^z_0>P?HG$frbJ^t=9Vsa&oD;uM?B7r$Yo_&5A)RL01&Pj#VKwanOly6 z#+curJs#$l>Ia=*Orv#4S=FM!lXB3iey^5DB=xqrT_|mSWNqE$*}zDbECfV z23XxA+aMB$gkmkyJO|%K8AoLwV1<3L_>kM%IBx*n`8*e|(LF0hP)a2DocvMl!B&Ky zk%{!X@^t+K+@Rh4E}*Lu8-ev|h+P$QL@v(_acO`N;P03Zk%9jMXI%c{&2?bb0000E lWmrjOO-%qQ00008000000002eQ;TYSr2#|{f*;<7%K(;x!0AY8bVM#R~s9QEnI4=wSJ zhu?|FcP;T|)mH7OL5F^OH>NjsH+s(Qwqv^DrHkl7ia|g?IYDVK3KN`K;!G}veMVM9 zG=uPMOI*toqAk0N8Z4%$E^Csbsw%3RGIfdGH@tU{uIiei!C#Ry9UCgH=qUe0P#3!% z-fUjYmBGmphnz=PQO4u3JT_z&4;0NbO-0oeU6%kMC6kboR0@;Rg@h(eoY;@J&q9<* zBz?BSEfGwe`w&E>*f7cC1QAnG5-FOjW};?m7w`(SU|L0jySHqaoug z8M1#7U0y$@0Ag#~rH(^w34&5Z!dth%jXWTSqLbbvqRJ*s*iP)w)-5pebmmQj8!;uE z#XZJG#Y=SylaX%78d|;Shb|i@XAdyYCgIc);nfUDJuj(xPpjZc4Qusts)1E?4z-!< zdy_+@zkdj)@!IXhVj6#VZ0%*Bp}6omdqUd&+$^Z1y=bZr39dSTuvV7!tQ?A#CKpDxbs z4it9*hmMhL%U%VCvfI%RT3ighY`c1=4}EabX|DCs`%iydTYQ9$x4v&be)jc~g`Zoi z%h!LG8h@>Sd+*q+U&6Ha>960c=7+s|!WR#2zgt}Wa6~+s?|(Xe>VbFpOo4m2u>a+9 iet2|t@0Wr@cv%h>9jVQUtRg=lfMD}VbM$g diff --git a/src/canvases.json b/src/canvases.json index 4f2276eb..dd7fb1e8 100644 --- a/src/canvases.json +++ b/src/canvases.json @@ -297,11 +297,15 @@ [ 67, 52, 85 ], [ 0, 0, 0 ] ], - "size": 2048, + "size": 4096, "historicalSizes": [ [ "20220627", 1024 + ], + [ + "20231007", + 2048 ] ], "bcd": 15000, @@ -310,48 +314,59 @@ "sd": "2022-01-06" }, "9": { - "ident": "r", + "ident": "e", "colors": [ - [ 196, 196, 196 ], - [ 109, 0, 26 ], - [ 190, 0, 57 ], - [ 255, 69, 0 ], - [ 255, 168, 0 ], - [ 255, 214, 53 ], - [ 255, 248, 184 ], - [ 0, 163, 104 ], - [ 0, 204, 120 ], - [ 126, 237, 86 ], - [ 0, 117, 111 ], - [ 0, 158, 170 ], - [ 0, 204, 192 ], - [ 36, 80, 164 ], - [ 54, 144, 234 ], - [ 81, 233, 244 ], - [ 73, 58, 193 ], - [ 106, 92, 255 ], - [ 148, 179, 255 ], - [ 129, 30, 159 ], - [ 180, 74, 192 ], - [ 228, 171, 255 ], - [ 222, 16, 127 ], - [ 255, 56 , 129 ], - [ 255, 153, 170 ], - [ 109, 72, 47 ], - [ 156, 105, 38 ], - [ 255, 180, 112 ], + [ 255, 255, 255 ], + [ 163, 198, 238 ], + [ 255, 255, 255 ], + [ 221, 221, 221 ], + [ 172, 172, 172 ], + [ 109, 109, 109 ], + [ 58, 58, 58 ], [ 0, 0, 0 ], - [ 81, 82, 82 ], - [ 137, 141, 144 ], - [ 212, 215, 217 ], - [ 255, 255, 255 ] + [ 255, 125, 120 ], + [ 255, 40, 40 ], + [ 191, 6, 6 ], + [ 127, 0, 0 ], + [ 163, 198, 238 ], + [ 0, 255, 240 ], + [ 0, 185, 255 ], + [ 0, 141, 240 ], + [ 22, 100, 197 ], + [ 17, 17, 84 ], + [ 167, 237, 0 ], + [ 69, 171, 5 ], + [ 79, 105, 32 ], + [ 0, 79, 13 ], + [ 109, 247, 177 ], + [ 0, 193, 154 ], + [ 1, 118, 135 ], + [ 172, 104, 39 ], + [ 114, 69, 36 ], + [ 84, 50, 24 ], + [ 255, 239, 92 ], + [ 255, 218, 8 ], + [ 227, 170, 0 ], + [ 255, 182, 113 ], + [ 229, 113, 3 ], + [ 244, 81, 38 ], + [ 230, 116, 255 ], + [ 191, 56, 222 ], + [ 145, 25, 141 ], + [ 71, 23, 70 ], + [ 255, 116, 225 ], + [ 255, 34, 169 ], + [ 172, 0, 109 ], + [ 252, 225, 184 ], + [ 213, 162, 115 ], + [ 152, 107, 70 ] ], - "cli": 1, - "size": 4096, - "bcd": 300000, - "cds": 300000, + "cli": 2, + "size": 16384, + "bcd": 5000, + "cds": 600000, "ranked": false, - "req": 0, - "sd": "2023-08-01" + "req": 500000, + "sd": "2023-10-07" } } diff --git a/src/canvasesDesc.js b/src/canvasesDesc.js index 55d314c0..9ef47938 100644 --- a/src/canvasesDesc.js +++ b/src/canvasesDesc.js @@ -24,7 +24,7 @@ function getCanvases(t) { 6: t`PixelCanvas`, 7: t`1bit`, 8: t`Top10`, - 9: t`r/place`, + 9: t`Thoia`, }; const canvasDesc = { 0: t`Our main canvas, a huge map of the world. Place everywhere you like`, @@ -35,7 +35,7 @@ function getCanvases(t) { 6: t`Mirror of PixelCanvas`, 7: t`Black and White canvas`, 8: t`A canvas for the most active players from the the previous day. Daily ranking updates at 00:00 UTC.`, - 9: t`Copy of r/place 2023 canvas. Will be present for a while.`, + 9: t`Thoia World Canvas. Advanced fictional worldbuilding and arts. Abandon the old world and all it entails.`, }; /* * no edit below here needed when adding/removing canvas diff --git a/src/core/constants.js b/src/core/constants.js index de2616d3..62a862ab 100644 --- a/src/core/constants.js +++ b/src/core/constants.js @@ -11,7 +11,7 @@ export const DEFAULT_SCALE = 3; // default canvas that is first assumed, before real canvas data // gets fetched via api/me -export const DEFAULT_CANVAS_ID = '9'; +export const DEFAULT_CANVAS_ID = '0'; export const DEFAULT_CANVASES = { 0: { ident: 'd', @@ -57,51 +57,6 @@ export const DEFAULT_CANVASES = { ranked: true, req: -1, sd: '2020-01-08', - }, - 9: { - "ident": "r", - "colors": [ - [ 196, 196, 196 ], - [ 109, 0, 26 ], - [ 190, 0, 57 ], - [ 255, 69, 0 ], - [ 255, 168, 0 ], - [ 255, 214, 53 ], - [ 255, 248, 184 ], - [ 0, 163, 104 ], - [ 0, 204, 120 ], - [ 126, 237, 86 ], - [ 0, 117, 111 ], - [ 0, 158, 170 ], - [ 0, 204, 192 ], - [ 36, 80, 164 ], - [ 54, 144, 234 ], - [ 81, 233, 244 ], - [ 73, 58, 193 ], - [ 106, 92, 255 ], - [ 148, 179, 255 ], - [ 129, 30, 159 ], - [ 180, 74, 192 ], - [ 228, 171, 255 ], - [ 222, 16, 127 ], - [ 255, 56 , 129 ], - [ 255, 153, 170 ], - [ 109, 72, 47 ], - [ 156, 105, 38 ], - [ 255, 180, 112 ], - [ 0, 0, 0 ], - [ 81, 82, 82 ], - [ 137, 141, 144 ], - [ 212, 215, 217 ], - [ 255, 255, 255 ] - ], - "cli": 1, - "size": 4096, - "bcd": 300000, - "cds": 300000, - "ranked": false, - "req": 0, - "sd": "2023-08-01" } }; From 7fe938bad2e93fb5f9562d01e06c920641fd8f43 Mon Sep 17 00:00:00 2001 From: HF Date: Fri, 4 Aug 2023 18:45:03 +0200 Subject: [PATCH 03/11] decodeURIComponent hash --- src/store/reducers/canvas.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/store/reducers/canvas.js b/src/store/reducers/canvas.js index 60cea03f..96f43efe 100644 --- a/src/store/reducers/canvas.js +++ b/src/store/reducers/canvas.js @@ -52,7 +52,7 @@ export type CanvasState = { function getViewFromURL(canvases) { const { hash } = window.location; try { - const almost = hash.substring(1) + const almost = decodeURIComponent(hash).substring(1) .split(','); const canvasIdent = almost[0]; From cb6603805820ea51f424b35b63f50f81d195cebf Mon Sep 17 00:00:00 2001 From: sallbet Date: Fri, 11 Aug 2023 15:22:07 +0300 Subject: [PATCH 04/11] Fix country mute/unmute message in channels --- src/core/ChatProvider.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/ChatProvider.js b/src/core/ChatProvider.js index 6cab36a4..cb810862 100644 --- a/src/core/ChatProvider.js +++ b/src/core/ChatProvider.js @@ -310,7 +310,7 @@ export class ChatProvider { if (ret) { this.broadcastChatMessage( 'info', - `Country ${cc} has been muted from en by ${initiator}`, + `Country ${cc} has been muted from this channel by ${initiator}`, channelId, this.infoUserId, ); @@ -332,7 +332,7 @@ export class ChatProvider { } this.broadcastChatMessage( 'info', - `Country ${cc} has been unmuted from en by ${initiator}`, + `Country ${cc} has been unmuted from this channel by ${initiator}`, channelId, this.infoUserId, ); From e3ef515a9037d0b07ffb7a065fcdb0a06f3b9ec8 Mon Sep 17 00:00:00 2001 From: sallbet Date: Tue, 29 Aug 2023 10:46:08 +0300 Subject: [PATCH 05/11] Add cz and gr translations, update ru translation --- i18n/cz.po | 1567 +++++++++++++++++++++++++++++++++++++++++++++++ i18n/gr.po | 1598 ++++++++++++++++++++++++++++++++++++++++++++++++ i18n/ru.po | 4 +- i18n/ssr-cz.po | 466 ++++++++++++++ i18n/ssr-gr.po | 479 +++++++++++++++ 5 files changed, 4112 insertions(+), 2 deletions(-) create mode 100644 i18n/cz.po create mode 100644 i18n/gr.po create mode 100644 i18n/ssr-cz.po create mode 100644 i18n/ssr-gr.po diff --git a/i18n/cz.po b/i18n/cz.po new file mode 100644 index 00000000..1c875c24 --- /dev/null +++ b/i18n/cz.po @@ -0,0 +1,1567 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n>=2 && n<=4 ? 1 : 2);\n" +"X-Generator: Poedit 3.3.1\n" + +#: src/controls/keypress.js:41 +#, javascript-format +msgid "Switched to ${ canvasName }" +msgstr "Změněno na ${ canvasName }" + +#: src/controls/keypress.js:64 +msgid "Grid ON" +msgstr "Mřížka Zaplá" + +#: src/controls/keypress.js:65 +msgid "Grid OFF" +msgstr "Mřížka Vyplá" + +#: src/controls/keypress.js:75 +msgid "Pixel Notify ON" +msgstr "Oznámení na Pixely Zaplí" + +#: src/controls/keypress.js:76 +msgid "Pixel Notify OFF" +msgstr "Oznámení na Pixely Vyplí" + +#: src/controls/keypress.js:81 +msgid "Muted Sound" +msgstr "Ztlumenej Zvuk" + +#: src/controls/keypress.js:82 +msgid "Unmuted Sound" +msgstr "Zaplej Zvuk" + +#: src/components/CoordinatesBox.jsx:28 src/components/GetIID.jsx:51 +#: src/controls/keypress.js:88 +msgid "Copied!" +msgstr "Kopírováno!" + +#: src/controls/keypress.js:94 +msgid "Show Hidden Canvases" +msgstr "Ukázat Skryté Plátna" + +#: src/controls/keypress.js:95 +msgid "Hide Hidden Canvases" +msgstr "Schovat Skryté Plátna" + +#: src/ui/PixelTransferController.js:70 +msgid "Error :(" +msgstr "Chyba :(" + +#: src/ui/PixelTransferController.js:71 +msgid "Didn't get an answer from pixelplanet. Maybe try to refresh?" +msgstr "Nezískali jsme odpověď od pixelplanet. Zkuste obnovit stránku?" + +#: src/ui/PixelTransferController.js:103 +msgid "Invalid Canvas" +msgstr "Neplatné Plátno" + +#: src/ui/PixelTransferController.js:104 +msgid "This canvas doesn't exist" +msgstr "Tohle plátno neexistuje" + +#: src/ui/PixelTransferController.js:107 src/ui/PixelTransferController.js:111 +#: src/ui/PixelTransferController.js:115 +msgid "Invalid Coordinates" +msgstr "Neplatné Souřadnice" + +#: src/ui/PixelTransferController.js:108 +msgid "x out of bounds" +msgstr "x mimo meze" + +#: src/ui/PixelTransferController.js:112 +msgid "y out of bounds" +msgstr "y mimo meze" + +#: src/ui/PixelTransferController.js:116 +msgid "z out of bounds" +msgstr "z mimo meze" + +#: src/ui/PixelTransferController.js:119 +msgid "Wrong Color" +msgstr "Špatná Barva" + +#: src/ui/PixelTransferController.js:120 +msgid "Invalid color selected" +msgstr "Neplatná barva vybrána" + +#: src/ui/PixelTransferController.js:123 +msgid "Just for registered Users" +msgstr "Pouze pro registrovaný uživatele" + +#: src/ui/PixelTransferController.js:124 +msgid "You have to be logged in to place on this canvas" +msgstr "Musíte být přihlášení aby jste mohli pokládat na tomhle plátnu" + +#: src/ui/PixelTransferController.js:127 +msgid "Place more :)" +msgstr "Polož víc :)" + +#: src/ui/PixelTransferController.js:129 +msgid "You can not access this canvas yet. You need to place more pixels" +msgstr "" +"Nemůžeš získat přístup na tohle plátno zatím. Musíš položit více pixelů" + +#: src/ui/PixelTransferController.js:132 +msgid "Pixel protected!" +msgstr "Chráněný pixel!" + +#: src/ui/PixelTransferController.js:139 +msgid "Please prove that you are human" +msgstr "Prosím potvrďte že jste člověk" + +#: src/ui/PixelTransferController.js:143 +msgid "No Proxies Allowed :(" +msgstr "Není povoleno používat Proxy" + +#: src/ui/PixelTransferController.js:144 +msgid "You are using a Proxy." +msgstr "Používáš proxy." + +#: src/ui/PixelTransferController.js:147 +msgid "Not allowed" +msgstr "Nepovoleno" + +#: src/ui/PixelTransferController.js:148 +msgid "Just the Top10 of yesterday can place here" +msgstr "Pouze top 10 ze včerejška můžou tady pokládat" + +#: src/ui/PixelTransferController.js:151 +msgid "You are weird" +msgstr "Si divný" + +#: src/ui/PixelTransferController.js:153 +msgid "" +"Server got confused by your pixels. Are you playing on multiple devices?" +msgstr "Server byl zmatén tvejma pixelamá. Hrajeté na více zařízení?" + +#: src/ui/PixelTransferController.js:156 +msgid "Banned" +msgstr "Zabanován" + +#: src/ui/PixelTransferController.js:160 +msgid "Range Banned" +msgstr "Rozsahově zabanován" + +#: src/ui/PixelTransferController.js:161 +msgid "Your Internet Provider is banned from playing this game" +msgstr "Váš poskytovatel internetu je zakázan hrát tuhle hru" + +#: src/ui/PixelTransferController.js:164 +msgid "Timeout" +msgstr "Pauza" + +#: src/ui/PixelTransferController.js:166 +msgid "" +"Didn't get an answer from pixelplanet. Maybe try to refresh if problem " +"persists?" +msgstr "" +"Nezískali jsme odpověď od pixelplanet. Zkuste obnovit stránku jestli se " +"problém bude opakovat?" + +#: src/ui/PixelTransferController.js:169 +msgid "Weird" +msgstr "Divný" + +#: src/ui/PixelTransferController.js:170 +msgid "Couldn't set Pixel" +msgstr "Nemohl se položit pixel" + +#: src/ui/PixelTransferController.js:175 +#, javascript-format +msgid "Error ${ retCode }" +msgstr "Chyba ${ retCode }" + +#: src/ui/rendererFactory.js:30 +msgid "Canvas Error" +msgstr "Plátnová chyba" + +#: src/ui/rendererFactory.js:31 +msgid "Can't render 3D canvas, do you have WebGL2 disabled?" +msgstr "Nemožnó poskytnout 3D plátno, máte WebGL2 vyplej?" + +#: src/components/BanInfo.jsx:136 src/store/actions/index.js:7 +msgid "OK" +msgstr "OK" + +#: src/store/actions/fetch.js:55 +msgid "You made too many requests" +msgstr "Udělali jste až moc požadavek" + +#: src/store/actions/fetch.js:59 +#, javascript-format +msgid "try again after ${ ti }min" +msgstr "Zkuste znovu po ${ ti }min" + +#: src/store/actions/fetch.js:70 +msgid "Connection error ${ code } :(" +msgstr "Chyba připojení ${ code } :(" + +#: src/store/actions/fetch.js:103 src/store/actions/fetch.js:129 +msgid "Could not connect to server, please try again later :(" +msgstr "Nemohlo se připojit na server, zkuste znovu později :(" + +#: src/store/actions/fetch.js:151 src/store/actions/fetch.js:170 +#: src/store/actions/fetch.js:189 src/store/actions/fetch.js:208 +#: src/store/actions/fetch.js:227 +msgid "Unknown Error" +msgstr "Neznáma chyba" + +#: src/store/actions/fetch.js:237 +msgid "Server answered with gibberish :(" +msgstr "Server odpověděl s nesmyslem :(" + +#: src/store/middleware/notifications.js:33 +msgid "Your next pixels are ready" +msgstr "Tvoje další pixely jsou připraveny" + +#: src/store/middleware/notifications.js:37 +msgid "You can now place more on pixelplanet.fun :)" +msgstr "Už můžete pokládat víc na pixelplanet.fun :)" + +#: src/store/middleware/notifications.js:54 +msgid "mentioned you" +msgstr "vás zmínil" + +#: src/store/middleware/notifications.js:58 +msgid "You have new messages in chat" +msgstr "Máte nové zprávy v chatu" + +#: src/components/Converter.jsx:561 src/components/CoordinatesBox.jsx:31 +#: src/components/ModWatchtools.jsx:371 +msgid "Copy to Clipboard" +msgstr "Zkopírovanó na schránku" + +#: src/components/OnlineBox.jsx:40 +msgid "Online Users on Canvas" +msgstr "Online Uživatele na Plátnu" + +#: src/components/OnlineBox.jsx:47 +msgid "Total Online Users" +msgstr "Celkově Online Uživatelů" + +#: src/components/OnlineBox.jsx:55 +msgid "Pixels placed" +msgstr "Pixelů položenó" + +#: src/components/buttons/CanvasSwitchButton.jsx:20 +#: src/components/windows/index.js:19 +msgid "Canvas Selection" +msgstr "Výběr Plátna" + +#: src/components/buttons/ChatButton.jsx:88 +msgid "Close Chat" +msgstr "Zavřít Chat" + +#: src/components/buttons/ChatButton.jsx:88 +msgid "Open Chat" +msgstr "Otevřít Chat" + +#: src/components/buttons/ExpandMenuButton.jsx:22 +msgid "Close Menu" +msgstr "Zavřít Menu" + +#: src/components/buttons/ExpandMenuButton.jsx:22 +msgid "Open Menu" +msgstr "Otevřít Chat" + +#: src/components/HistorySelect.jsx:144 +msgid "Loading" +msgstr "Načítaní" + +#: src/components/HistorySelect.jsx:145 +msgid "Select Date above" +msgstr "Nad Vyberte Datum" + +#: src/components/Admintools.jsx:103 src/components/ModCanvastools.jsx:222 +#: src/components/ModWatchtools.jsx:118 src/components/Window.jsx:157 +#: src/components/Window.jsx:260 +#: src/components/contextmenus/ChannelContextMenu.jsx:59 +msgid "Close" +msgstr "Zavřít" + +#: src/components/Window.jsx:173 +msgid "PopUp" +msgstr "Vyskočit" + +#: src/components/Window.jsx:184 +msgid "Restore" +msgstr "Obnovit" + +#: src/components/Window.jsx:221 +msgid "Clone" +msgstr "Klonovat" + +#: src/components/Window.jsx:229 +msgid "Move" +msgstr "Hejbnout" + +#: src/components/Window.jsx:252 +msgid "Maximize" +msgstr "Maximizovat" + +#: src/components/Window.jsx:268 +msgid "Resize" +msgstr "Změnit velikost" + +#: src/components/buttons/GlobeButton.jsx:34 +msgid "Globe View" +msgstr "Pohled na Zeměkouli" + +#: src/components/buttons/PalselButton.jsx:30 +msgid "Close Palette" +msgstr "Zavřít Paletu" + +#: src/components/buttons/PalselButton.jsx:30 +msgid "Open Palette" +msgstr "Otevřít Paletu" + +#: src/components/buttons/SettingsButton.jsx:21 +#: src/components/windows/index.js:14 +msgid "Settings" +msgstr "Nastavení" + +#: src/components/BanInfo.jsx:75 src/components/buttons/HelpButton.jsx:20 +#: src/components/windows/index.js:13 +msgid "Help" +msgstr "Pomoc" + +#: src/components/buttons/LogInButton.jsx:20 src/components/windows/index.js:15 +msgid "User Area" +msgstr "Uživatelská Oblast" + +#: src/components/buttons/DownloadButton.jsx:36 +msgid "Make Screenshot" +msgstr "Udělat Snímek" + +#: src/components/windows/index.js:16 +msgid "Registration" +msgstr "Registrace" + +#: src/components/windows/index.js:17 +msgid "Forgot Password" +msgstr "Zapomenuté Heslo" + +#: src/components/windows/index.js:18 +msgid "Chat" +msgstr "Chat" + +#: src/components/windows/index.js:20 +msgid "Canvas Archive" +msgstr "Archiv Plochy" + +#: src/components/GlobalCaptcha.jsx:47 +msgid "You took too long, try again." +msgstr "Trvalo vám to až moc dlouho, zkuste znovu." + +#: src/components/GlobalCaptcha.jsx:50 +msgid "You failed your captcha" +msgstr "Nepodařila se vám captcha" + +#: src/components/GlobalCaptcha.jsx:53 +msgid "No or invalid captcha text" +msgstr "Žádnej nebo neplatný captcha text" + +#: src/components/GlobalCaptcha.jsx:56 +msgid "No captcha id given" +msgstr "Nebylo uvedeno captcha id " + +#: src/components/GlobalCaptcha.jsx:59 +msgid "Unknown Captcha Error" +msgstr "Neznámej Captcha Chyba" + +#: src/components/BanInfo.jsx:80 src/components/Captcha.jsx:77 +#: src/components/ChangeMail.jsx:72 src/components/ChangeName.jsx:58 +#: src/components/ChangePassword.jsx:79 src/components/DeleteAccount.jsx:55 +#: src/components/GlobalCaptcha.jsx:71 src/components/LogInForm.jsx:70 +#: src/components/windows/ForgotPassword.jsx:73 +#: src/components/windows/Register.jsx:89 +msgid "Error" +msgstr "Chyba" + +#: src/components/ChangeMail.jsx:93 src/components/ChangeName.jsx:70 +#: src/components/ChangePassword.jsx:115 src/components/DeleteAccount.jsx:68 +#: src/components/GlobalCaptcha.jsx:80 +#: src/components/windows/ForgotPassword.jsx:89 +#: src/components/windows/Register.jsx:133 +msgid "Cancel" +msgstr "Zrušit" + +#: src/components/GlobalCaptcha.jsx:86 +msgid "Send" +msgstr "Poslat" + +#: src/components/BanInfo.jsx:66 +msgid "You are banned. You think it is unjustifed? Check out the " +msgstr "Byli jste zabanovaný. Myslíte že si to nezasloužíte? Podívejte se na" + +#: src/components/BanInfo.jsx:76 +msgid " on how to appeal." +msgstr "o tom jak získat unban." + +#: src/components/BanInfo.jsx:85 src/components/ModIIDtools.jsx:73 +msgid "Reason" +msgstr "Důvod" + +#: src/components/BanInfo.jsx:91 +msgid "By Mod" +msgstr "Moderátorem" + +#: src/components/BanInfo.jsx:97 src/components/ModIIDtools.jsx:84 +msgid "Duration" +msgstr "Trvalost" + +#: src/components/BanInfo.jsx:99 +msgid "Your ban expires at " +msgstr "Váš ban skončí" + +#: src/components/BanInfo.jsx:101 +msgid " which is in " +msgstr "Což je za" + +#: src/components/BanInfo.jsx:112 +msgid "Unbanned" +msgstr "Váš ban byl odvolán" + +#: src/components/BanInfo.jsx:113 +msgid "Now that you have seen this message, you are no longer banned." +msgstr "Teď jak vidíte tuhle zprávu, už nemáte ban." + +#: src/components/BanInfo.jsx:127 +msgid "Why?" +msgstr "Proč?" + +#: src/components/windows/Settings.jsx:86 +msgid "Show Grid" +msgstr "Ukázat Mřížku" + +#: src/components/windows/Settings.jsx:91 +msgid "Turn on grid to highlight pixel borders." +msgstr "Zapněte mřížky aby jste mohli zvýraznit hranice pixelu." + +#: src/components/windows/Settings.jsx:94 +msgid "Show Pixel Activity" +msgstr "Ukázat Aktivitu Pixelu" + +#: src/components/windows/Settings.jsx:99 +msgid "Show circles where pixels are placed." +msgstr "Ukazuje kruhy kde byli před chvilkou položený pixely." + +#: src/components/windows/Settings.jsx:102 +msgid "Disable Game Sounds" +msgstr "Vypnout Zvuky Hry" + +#: src/components/windows/Settings.jsx:108 +msgid "All sound effects will be disabled." +msgstr "Všechny zvukový efekty budou vypnutý." + +#: src/components/windows/Settings.jsx:112 +msgid "" +"Your Browser doesn't allow us to use AudioContext to play sounds. Do you " +"have some privacy feature blocking us?" +msgstr "" +"Váš Prohlížeč nepovoluje nám použít AudioContext pro hraní zvuku. Máte " +"nějakou funkci ochrany osobních údajů?" + +#: src/components/windows/Settings.jsx:118 +msgid "Enable chat notifications" +msgstr "Zapnout oznamení chatu" + +#: src/components/windows/Settings.jsx:122 +msgid "Play a sound when new chat messages arrive" +msgstr "Hraje zvuk když se pošlou nové zprávy" + +#: src/components/windows/Settings.jsx:125 +msgid "Auto Zoom In" +msgstr "Automatické přiblížení" + +#: src/components/windows/Settings.jsx:130 +msgid "" +"Zoom in instead of placing a pixel when you tap the canvas and your zoom is " +"small." +msgstr "" +"Při klepnutí na plátno místo umístění pixelu přibližte a vaše přiblížení je " +"malé." + +#: src/components/windows/Settings.jsx:133 +msgid "Compact Palette" +msgstr "Kompaktní Paleta" + +#: src/components/windows/Settings.jsx:138 +msgid "Display Palette in a compact form that takes less screen space." +msgstr "Zobrazit Paletu v kompaktní formě která zabírá míň obrazovky." + +#: src/components/windows/Settings.jsx:141 +msgid "Potato Mode" +msgstr "Bramborový mod" + +#: src/components/windows/Settings.jsx:145 +msgid "For when you are playing on a potato." +msgstr "Pro to když hrajete na bramboře." + +#: src/components/Converter.jsx:376 src/components/windows/Settings.jsx:148 +msgid "Light Grid" +msgstr "Rozsvítit Mřížku" + +#: src/components/windows/Settings.jsx:152 +msgid "Show Grid in white instead of black." +msgstr "Zobrazuje Mřížku v bíle místo černé barvě." + +#: src/components/windows/Settings.jsx:156 +msgid "Historical View" +msgstr "Historický Pohled" + +#: src/components/windows/Settings.jsx:161 +msgid "Check out past versions of the canvas." +msgstr "Ukazuje jak vypadala mapa dříve." + +#: src/components/windows/Settings.jsx:166 +msgid "Themes" +msgstr "Témata" + +#: src/components/windows/Settings.jsx:171 +msgid "How pixelplanet should look like." +msgstr "Jak pixelplanet by měl vypadat." + +#: src/components/windows/Settings.jsx:178 +msgid "Select Language" +msgstr "Vybrat Jazyk" + +#: src/components/windows/Help.jsx:42 +msgid "Place color pixels on a large canvas with other players online!" +msgstr "Položte barevný pixely na velkém plátnu s ostatními online hráči! " + +#: src/components/windows/Help.jsx:43 +msgid "" +"Our main canvas is a huge worldmap, you can place wherever you like, but you " +"will have to wait a specific Cooldown between pixels. You can check out the " +"cooldown and requirements on the Canvas Selection menu (globe button on " +"top). Some canvases have a different cooldown for replacing a user-set " +"pixels than placing on a unset pixel. i.e. 4s/7s means 4s on fresh pixels " +"and 7s on already set pixels." +msgstr "" +"Naše hlavní Plátno je velká mapa země, můžete pokládat kde chcete, ale " +"budete muset počkat konkrétní cooldown mezi pixelama. Můžete se podívat na " +"cooldown a požadavky na nabídce výběru pláten (tlačítko zeměkoule nahoře). " +"Nějaký plátna mají jinačí cooldown pro nahrazení uživatelem položených " +"pixelů než umístění na nepoložených pixel. Což znamená že 4s/7s znamená 4s " +"na čerstvých pixelech a 7s na pixely kde už někdo něco položil." + +#: src/components/windows/Help.jsx:47 +msgid "" +"Higher zoomlevels take some time to update, the 3D globe gets updated at " +"least once per day." +msgstr "" +"Větší přibližovací úrovně trvají větší dobu se aktualizovat, 3D zeměkoule se " +"aktualizuje aspoň jednou denně." + +#: src/components/windows/Help.jsx:48 +msgid "Have fun!" +msgstr "Bavte se!" + +#: src/components/windows/Help.jsx:50 +msgid "recommended" +msgstr "doporučene" + +#: src/components/windows/Help.jsx:51 +msgid "Source on " +msgstr "Zdroj zapnutý" + +#: src/components/windows/Help.jsx:52 +msgid "Map Data" +msgstr "Mapové data" + +#: src/components/windows/Help.jsx:53 +msgid "" +"The bare map data that we use, together with converted OpenStreetMap tiles " +"for orientation, can be downloaded from mega.nz here: " +msgstr "" +"Holá mapová data, kterou používáme, spolu s převedenými dlaždicemi " +"OpenStreetMap pro orientaci, si můžete stáhnout z mega.nz zde:" + +#: src/components/windows/Help.jsx:55 +msgid "Banned? Detected as Proxy?" +msgstr "Zabanován? Detektován jako Proxy?" + +#: src/components/windows/Help.jsx:57 +#, javascript-format +msgid "" +"If you got detected as proxy, but you are none, or think that you got " +"wrongfully banned, please go to our ${ guildedLink } or send us an e-mail to " +"${ mailLink } and include the following IID:" +msgstr "" +"Jestli jste byli detektovaný jako proxy, ale nejste, nebo si myslíte že jste " +"byli zabanovaní omylem, prosím běžte na náš ${ guildedLink } nebo pošlete " +"nám e-mail na ${ mailLink } a dejte tam následující IID:" + +#: src/components/windows/Help.jsx:60 src/components/windows/Help.jsx:77 +msgid "Controls" +msgstr "Ovládaní" + +#: src/components/windows/Help.jsx:62 +msgid "Click a color in palette to select it" +msgstr "Klikněte na barvu v paletě aby jste si jí vybrali" + +#: src/components/windows/Help.jsx:63 +#, javascript-format +msgid "Press ${ bindG } to toggle grid" +msgstr "Stiskněte ${ bindG } aby jste si zapnuli mřížky" + +#: src/components/windows/Help.jsx:64 +msgid "Press ${ bindX } to toggle showing of pixel activity" +msgstr "Stiskněte ${ bindX } aby jste si zapnuli aktivitu pixelů" + +#: src/components/windows/Help.jsx:65 +#, javascript-format +msgid "Press ${ bindH } to toggle historical view" +msgstr "Stiskněte ${ bindH } aby jste si zapnuli historický pohled" + +#: src/components/windows/Help.jsx:66 +msgid "Press ${ bindR } to copy coordinates" +msgstr "Stiskněte ${ bindR } pro zkopírovaní souřadnic" + +#: src/components/windows/Help.jsx:67 +#, javascript-format +msgid "Press ${ bindQ } or ${ bindE } to zoom" +msgstr "Stiskněte ${ bindQ } nebo ${ bindE } pro přiblížení" + +#: src/components/windows/Help.jsx:68 src/components/windows/Help.jsx:79 +#, javascript-format +msgid "Press ${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } to move" +msgstr "" +"Stiskněte ${ bindW }, ${ bindA } ${ bindS }, ${ bindD } pro pohyb na mapě" + +#: src/components/windows/Help.jsx:69 src/components/windows/Help.jsx:80 +#, javascript-format +msgid "" +"Press ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } to move" +msgstr "" +"Stiskněte ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } pro " +"pohyb na mapě" + +#: src/components/windows/Help.jsx:70 +msgid "Drag ${ mouseSymbol } mouse or ${ touchSymbol } pan to move" +msgstr "Táhněte ${ mouseSymbol } myší nebo ${ touchSymbol } pro pohyb na mapě" + +#: src/components/windows/Help.jsx:71 +#, javascript-format +msgid "Scroll ${ mouseSymbol } mouse wheel or ${ touchSymbol } pinch to zoom" +msgstr "" +"Skrolujte ${ mouseSymbol } myšové kolečko nebo ${ touchSymbol } zatáhněte " +"pro přiblížení" + +#: src/components/windows/Help.jsx:72 +msgid "Hold left ${ bindShift } for placing while moving mouse" +msgstr "Držte levej ${ bindShift } pro pokládaní pixelu při pohybu myši" + +#: src/components/windows/Help.jsx:73 +#, javascript-format +msgid "" +"Hold right ${ bindShift } for placing while moving mouse according to " +"historical view" +msgstr "" +"Držte pravej ${ bindShift } pro pokládaní při pohybování myši podle " +"historického pohledu" + +#: src/components/windows/Help.jsx:74 src/components/windows/Help.jsx:85 +#, javascript-format +msgid "${ mouseSymbol } Left click or ${ touchSymbol } tap to place a pixel" +msgstr "" +"${ mouseSymbol } Levé kliknutí nebo ${ touchSymbol } klepněte pro položení " +"pixelu" + +#: src/components/windows/Help.jsx:75 src/components/windows/Help.jsx:87 +msgid "" +"Click ${ mouseSymbol } middle mouse button or ${ touchSymbol } long-tap to " +"select current hovering color" +msgstr "" +"Klikněte ${ mouseSymbol } střední tlačítko na myši nebo ${ touchSymbol } " +"dlouhej potisk aby jste si vybrali barvu na kterej máte myš" + +#: src/components/windows/Help.jsx:81 +msgid "Press ${ bindE } and ${ bindC } to fly up and down" +msgstr "Stiskněte ${ bindE } a ${ bindC } aby jste letěli nahoru a dolu" + +#: src/components/windows/Help.jsx:82 +#, javascript-format +msgid "${ mouseSymbol } Hold left mouse button and drag mouse to rotate" +msgstr "" +"${ mouseSymbol } Držte levé tlačítko myši a tahejte myš proto aby jste se " +"točili " + +#: src/components/windows/Help.jsx:83 +#, javascript-format +msgid "" +"${ mouseSymbol } Scroll mouse wheel or hold ${ mouseSymbol } middle mouse " +"button and drag to zoom" +msgstr "" +"${ mouseSymbol } Skrolovací myšoví kolečko nebo držte ${ mouseSymbol } " +"střední tlačítko myši a tahejte pro přiblížení" + +#: src/components/windows/Help.jsx:84 +msgid "${ mouseSymbol } Right click and drag mouse to pan" +msgstr "" +"${ mouseSymbol } Pravým klikněte a tahejte myš aby jste sledovali kamerou" + +#: src/components/windows/Help.jsx:86 +#, javascript-format +msgid "" +"${ mouseSymbol } Right click or ${ touchSymbol } double-tap to remove a pixel" +msgstr "" +"${ mouseSymbol } Pravým kliknutím nebo ${ touchSymbol } dvakrát stiskněte " +"aby jste odstranili pixel" + +#: src/components/windows/Help.jsx:91 +msgid "" +"We thanks those artists very much, they offered their palettes to the public " +"on" +msgstr "Děkujeme těm malířům velmi moc, nabídli jejich palety pro ostatní na" + +#: src/components/windows/Help.jsx:94 +#, javascript-format +msgid "Credit for the Palette of the Moon goes to ${ starhouseLink }." +msgstr "Čest za Moon Paletu jde ${ starhouseLink }." + +#: src/components/windows/Help.jsx:97 +msgid "Credit for the Palette of the Top10 canvas goes to ${ vinikLink }." +msgstr "Čest za Top10 Paletu jde ${ vinikLink }." + +#: src/components/windows/UserArea.jsx:36 +#: src/components/windows/UserArea.jsx:56 +msgid "Profile" +msgstr "Profil" + +#: src/components/windows/UserArea.jsx:59 +msgid "Statistics" +msgstr "Statistiky" + +#: src/components/windows/UserArea.jsx:64 +msgid "Converter" +msgstr "Konvertor" + +#: src/components/windows/UserArea.jsx:70 +msgid "Modtools" +msgstr "Modtools" + +#: src/components/windows/UserArea.jsx:71 +msgid "Loading..." +msgstr "Načítaní..." + +#: src/components/windows/UserArea.jsx:78 +msgid "Consider joining us on Guilded:" +msgstr "Uvažujte o připojení se k nám na Guilded:" + +#: src/components/windows/Register.jsx:87 +msgid "Register new account here" +msgstr "Registrujte si nový účet tady" + +#: src/components/windows/Register.jsx:92 +#: src/components/windows/Register.jsx:98 +msgid "Name" +msgstr "Jméno" + +#: src/components/windows/ForgotPassword.jsx:80 +#: src/components/windows/Register.jsx:100 +#: src/components/windows/Register.jsx:106 +msgid "Email" +msgstr "Email" + +#: src/components/ChangeMail.jsx:80 src/components/DeleteAccount.jsx:62 +#: src/components/LogInForm.jsx:84 src/components/windows/Register.jsx:108 +#: src/components/windows/Register.jsx:114 +msgid "Password" +msgstr "Heslo" + +#: src/components/windows/Register.jsx:116 +#: src/components/windows/Register.jsx:122 +msgid "Confirm Password" +msgstr "Potvrďte heslo" + +#: src/components/windows/Register.jsx:124 +msgid "Captcha" +msgstr "Captcha" + +#: src/components/Admintools.jsx:154 src/components/Admintools.jsx:238 +#: src/components/ModCanvastools.jsx:302 src/components/ModCanvastools.jsx:382 +#: src/components/ModCanvastools.jsx:455 src/components/ModCanvastools.jsx:546 +#: src/components/ModIIDtools.jsx:135 +#: src/components/windows/ForgotPassword.jsx:84 +#: src/components/windows/Register.jsx:127 +msgid "Submit" +msgstr "Vytvořit" + +#: src/components/windows/CanvasSelect.jsx:29 +msgid "" +"Select the canvas you want to use. Every canvas is unique and has different " +"palettes, cooldown and requirements. Archive of closed canvases can be " +"accessed here:" +msgstr "" +"Vyberte si plátno které chcete použít. Každý plátno je unikátní a má jinačí " +"barvy, cooldown a požadavky. Archiv zavřených pláten můžete najít tady:" + +#: src/components/windows/CanvasSelect.jsx:37 +msgid "Archive" +msgstr "Archiv" + +#: src/components/windows/Archive.jsx:16 +msgid "" +"While we tend to not delete canvases, some canvases are started for fun or " +"as a request by users who currently like a meme. Those canvases can get " +"boring after a while and after weeks of no major change and if they really " +"aren't worth being kept active, we decide to remove them." +msgstr "" +"Zatím co nemažeme plátna, nějaký plátna začali jen pro zábavů a nebo od " +"požadavku uživatelů kdo mají rádi meme. Tamty plátna můžou začít být nudný " +"po nějaký době a po týdnech bez žádnéj velkej změny a nemají cenu být " +"nechaný aktivní, se rozhodujeme o tom je odstranit." + +#: src/components/windows/Archive.jsx:18 +msgid "" +"Here we collect those canvases to archive them in a proper way (which is " +"currently just one)." +msgstr "" +"Tady sbíráme plátna pro to abychom je mohli archivovat ve správným způsobů " +"(Což je zatím jenom jeden)." + +#: src/components/windows/Archive.jsx:20 +msgid "Political Compass Canvas" +msgstr "Politický Kompas Plátno" + +#: src/components/windows/Archive.jsx:27 +msgid "" +"This canvas got requested during a time of political conflicts on the main " +"Earth canvas. It was a 1024x1024 representation of the political compass " +"with a 5s cooldown and 60s stacking. It got launched on May 11th and " +"remained active for months till it got shut down on November 30th." +msgstr "" +"Tohle plátno bylo požadováno v době politických konfliktu na hlavním zemským " +"plátnu. Byla to 1024x1024 reprezentace politického kompasu s 5s cooldownem a " +"60s zásobníkem. Bylo to puštěno 11. Května a zůstalo to být aktivní několik " +"měsíců než to bylo uzavřeno 30. Listopadu." + +#: src/components/windows/Archive.jsx:28 +msgid "" +"We decided to archive it as a timelapse with lossless encoded webm. Taking a " +"screenshot from the timelapse results in a perfect 1:1 representation of how " +"the canvas was at that time." +msgstr "" +"Rozhodli jsme se to archivovat jako timelapse s bezztrátově zakódovaným " +"webm. Pořízení snímku obrazovky z timelapsu vede k dokonalému zobrazení 1:1 " +"toho, jak vypadalo plátno v té době." + +#: src/components/windows/ForgotPassword.jsx:58 +msgid "Sent you a mail with instructions to reset your password." +msgstr "Poslal vám mail s instrukcemi jak si resetovat heslo." + +#: src/components/windows/ForgotPassword.jsx:69 +msgid "Enter your mail address and we will send you a new password:" +msgstr "Zadejte svojí emailovou adresu a pošleme vám nové heslo:" + +#: src/components/windows/Chat.jsx:180 +msgid "Start chatting here" +msgstr "Začněte se tady bavit" + +#: src/components/windows/Chat.jsx:217 +msgid "Chat here" +msgstr "Bavte se tu" + +#: src/components/windows/Chat.jsx:243 +msgid "You must be logged in to chat" +msgstr "Musíte být přihlášení aby jste mohli chatovat" + +#: src/components/windows/Chat.jsx:273 +msgid "Channel settings" +msgstr "Nastavení kanálu" + +#: src/components/Captcha.jsx:51 src/components/Captcha.jsx:105 +msgid "Could not load captcha" +msgstr "Nemohlo se načíst captcha" + +#: src/components/Captcha.jsx:69 +msgid "Type the characters from the following image:" +msgstr "Zadejte znaky z následujícího obrázku:" + +#: src/components/Captcha.jsx:72 +msgid "Tip: Not case-sensitive; I and l are the same" +msgstr "Tip: Nerozlišují se malá a velká písmena; I a l je stejný" + +#: src/components/Captcha.jsx:114 +msgid "Load Captcha" +msgstr "Načíst Captcha" + +#: src/components/Captcha.jsx:119 +msgid "Click to Load Captcha" +msgstr "Klikněte aby jste načetli Captcha" + +#: src/components/Captcha.jsx:124 +msgid "Can't read? Reload:" +msgstr "Nemůžeté to přečíst? Znovu načíst:\v" + +#: src/components/Captcha.jsx:128 +msgid "Reload" +msgstr "Znovu načíst" + +#: src/components/Captcha.jsx:138 +msgid "Enter Characters" +msgstr "Zadejte Znaky" + +#: src/utils/validation.js:17 +msgid "Email can't be empty." +msgstr "Email nemůže být prázdný." + +#: src/utils/validation.js:18 +msgid "Email should be at least 5 characters long." +msgstr "Email musí mít aspoň 5 znaků dlouhej." + +#: src/utils/validation.js:19 +msgid "Email can't be longer than 40 characters." +msgstr "Email nemůže být delší jak 40 znaků." + +#: src/utils/validation.js:20 +msgid "Email should at least contain a dot" +msgstr "Email musí obsahovat tečku" + +#: src/utils/validation.js:22 +msgid "Email should contain a @" +msgstr "Email musí obsahovat @" + +#: src/utils/validation.js:29 +msgid "Name can't be empty." +msgstr "Jméno nemůže být prázdný." + +#: src/utils/validation.js:30 +msgid "Name must be at least 2 characters long" +msgstr "Jméno musí obsahovat aspoň dva znaky" + +#: src/utils/validation.js:31 +msgid "Name must be shorter than 26 characters" +msgstr "Jméno musí být menší jak 26 znaků" + +#: src/utils/validation.js:38 +msgid "Name contains invalid character like @, /, \\ or #" +msgstr "Jméno obsahuje neplatný znaky jako @, /, \\ nebo #" + +#: src/utils/validation.js:53 +msgid "No password given." +msgstr "Nebylo zadané heslo" + +#: src/utils/validation.js:56 +msgid "Password must be at least 6 characters long." +msgstr "Heslo musí obsahovat aspoň 6 znaků." + +#: src/utils/validation.js:59 +msgid "Password must be shorter than 60 characters." +msgstr "Heslo musí být kratší jak 60 znaků." + +#: src/components/ChangeMail.jsx:91 src/components/ChangeName.jsx:68 +#: src/components/ChangePassword.jsx:109 src/components/LanguageSelect.jsx:80 +msgid "Save" +msgstr "Uložit" + +#: src/components/GetIID.jsx:44 +msgid "Get IID" +msgstr "Získat IID" + +#: src/components/GetIID.jsx:53 +msgid "Copy" +msgstr "Kopírovat" + +#: src/components/LogInArea.jsx:19 +msgid "Login to access more features and stats." +msgstr "Přihlaste se aby jste měli přístup k více funkcím a statistikám" + +#: src/components/LogInArea.jsx:21 +msgid "Login with Name or Mail:" +msgstr "Přihlaste se s Jménem nebo Mailem:" + +#: src/components/LogInArea.jsx:28 +msgid "I forgot my Password." +msgstr "Zapomenul jsem svoje Heslo." + +#: src/components/LogInArea.jsx:29 +msgid "or login with:" +msgstr "nebo přihlaste se s:" + +#: src/components/LogInArea.jsx:70 +msgid "or register here:" +msgstr "nebo registrujte se tady:" + +#: src/components/LogInArea.jsx:75 +msgid "Register" +msgstr "Registrovat:" + +#: src/components/UserAreaContent.jsx:62 +msgid "Todays Placed Pixels" +msgstr "Dnešní Počet Pixelů" + +#: src/components/UserAreaContent.jsx:66 +msgid "Daily Rank" +msgstr "Denní Hodnocení" + +#: src/components/UserAreaContent.jsx:71 +msgid "Placed Pixels" +msgstr "Položeno Pixelů" + +#: src/components/UserAreaContent.jsx:75 +msgid "Total Rank" +msgstr "Celkové Hodnocení" + +#: src/components/UserAreaContent.jsx:80 +#, javascript-format +msgid "Your name is: ${ name }" +msgstr "Tvoje jméno je: ${ name }" + +#: src/components/UserAreaContent.jsx:86 +msgid "Log out" +msgstr "Odhlásit se" + +#: src/components/UserAreaContent.jsx:93 +msgid "Change Username" +msgstr "Změnit Jméno" + +#: src/components/UserAreaContent.jsx:103 +msgid "Change Mail" +msgstr "Změnit Mail" + +#: src/components/UserAreaContent.jsx:112 +msgid "Change Password" +msgstr "Změnit Heslo" + +#: src/components/UserAreaContent.jsx:119 +msgid "Delete Account" +msgstr "Odstranit Účet" + +#: src/components/UserAreaContent.jsx:126 +msgid "Social Settings" +msgstr "Sociální Nastavení" + +#: src/components/Converter.jsx:190 src/components/ModCanvastools.jsx:226 +msgid "Choose Canvas" +msgstr "Vyberte si Plátno" + +#: src/components/Converter.jsx:216 +msgid "Palette Download" +msgstr "Stažení Plátna" + +#: src/components/Converter.jsx:218 +#, javascript-format +msgid "Palette for ${ gimpLink }" +msgstr "Plátno pro ${ gimpLink }" + +#: src/components/Converter.jsx:236 +msgid "Image Converter" +msgstr "Konvertor Obrázků" + +#: src/components/Converter.jsx:237 +msgid "Convert an image to canvas colors" +msgstr "Konvertujte obrázek do barev plátna" + +#: src/components/Converter.jsx:256 +msgid "Choose Strategy" +msgstr "Vyberte Strategii" + +#: src/components/Converter.jsx:294 +msgid "Serpentine" +msgstr "Serpentine" + +#: src/components/Converter.jsx:296 +msgid "Minimum Color Distance" +msgstr "Minimální Vzdálenost Barvy" + +#: src/components/Converter.jsx:323 +msgid "Calculate like GIMP" +msgstr "Kalkulovat jako GIMP" + +#: src/components/Converter.jsx:327 +msgid "Choose Color Mode" +msgstr "Vyberte Mod Barvy" + +#: src/components/Converter.jsx:356 +msgid "Add Grid (uncheck if you need a 1:1 template)" +msgstr "Přidat mřížku (zrušte zaškrtnutí jestli chcete 1:1 šablonu)" + +#: src/components/Converter.jsx:378 src/components/Converter.jsx:394 +msgid "Offset" +msgstr "Posunutí" + +#: src/components/Converter.jsx:423 +msgid "Scale Image" +msgstr "Měřítko Obrazu" + +#: src/components/Converter.jsx:434 +msgid "Width" +msgstr "Šířka" + +#: src/components/Converter.jsx:465 +msgid "Height" +msgstr "Výška" + +#: src/components/Converter.jsx:504 +msgid "Keep Ratio" +msgstr "Zanechat Poměr" + +#: src/components/Converter.jsx:517 +msgid "Anti Aliasing" +msgstr "Anti Aliasing" + +#: src/components/Converter.jsx:531 +msgid "Reset" +msgstr "Resetovat" + +#: src/components/Converter.jsx:549 +msgid "Download Template" +msgstr "Stáhnout Šabnlonu" + +#: src/components/Rankings.jsx:147 +msgid "Total" +msgstr "Celkem" + +#: src/components/Rankings.jsx:156 +msgid "Today" +msgstr "Dnes" + +#: src/components/Rankings.jsx:165 +msgid "Yesterday" +msgstr "Včera" + +#: src/components/Rankings.jsx:174 +msgid "Countries Today" +msgstr "Státy dnes" + +#: src/components/Rankings.jsx:183 +msgid "Charts" +msgstr "Grafy" + +#: src/components/Rankings.jsx:201 src/components/Rankings.jsx:210 +#: src/components/Rankings.jsx:219 +msgid "User" +msgstr "Uživatel" + +#: src/components/Rankings.jsx:226 +msgid "Country" +msgstr "Stát" + +#: src/components/Rankings.jsx:286 +msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC." +msgstr "" +"Hodnocení se aktualizuje každých 5 min. Denní hodnocení se resetuje o " +"půlnoci UTC" + +#: src/components/CanvasItem.jsx:29 +msgid "Online Users" +msgstr "Online Uživatelů" + +#: src/components/CanvasItem.jsx:34 +msgid "Cooldown" +msgstr "Cooldown" + +#: src/components/CanvasItem.jsx:40 +msgid "Stacking till" +msgstr "Zásobuje do" + +#: src/components/CanvasItem.jsx:42 +msgid "Ranked" +msgstr "Hodnoceno" + +#: src/components/CanvasItem.jsx:44 +msgid "Yes" +msgstr "Ano" + +#: src/components/CanvasItem.jsx:44 +msgid "No" +msgstr "Ne" + +#: src/components/CanvasItem.jsx:50 +msgid "Requirements" +msgstr "Požadavky" + +#: src/components/CanvasItem.jsx:53 +msgid "User Account" +msgstr "Uživatelskej Účet" + +#: src/components/CanvasItem.jsx:55 +#, javascript-format +msgid "and ${ canvas.req } Pixels set" +msgstr "a ${ canvas.req } Položenejch pixelů" + +#: src/components/CanvasItem.jsx:58 +msgid "Top 10 Daily Ranking" +msgstr "Top 10 denní Hodnocení" + +#: src/components/CanvasItem.jsx:64 +msgid "Dimensions" +msgstr "Rozměry" + +#: src/core/chartSettings.js:30 +msgid "Top 10 Countries [pxls / day]" +msgstr "Top 10 Států [pxls / den]" + +#: src/core/chartSettings.js:127 +msgid "Players and Pixels per hour" +msgstr "Hráči a Pixely za hodinu" + +#: src/core/chartSettings.js:221 +msgid "Top 10 Players [pxls / day]" +msgstr "Top 10 Hráčů [pxls / den]" + +#: src/core/chartSettings.js:294 +msgid "Countries by Pixels Today" +msgstr "Státy podle Pixelů Dnes" + +#: src/core/chartSettings.js:352 +msgid "Total Pixels placed per day" +msgstr "Celkem Pixelů položeno denně" + +#: src/components/LogInForm.jsx:77 +msgid "Name or Email" +msgstr "Jméno a Email" + +#: src/components/LogInForm.jsx:88 +msgid "LogIn" +msgstr "Přihlásit se" + +#: src/components/UserMessages.jsx:28 +msgid "" +"Please verify your mail address or your account could get deleted after a " +"few days." +msgstr "" +"Prosím ověřte svojí emailovou adresu nebo váš účet bude odstraněn za pár dní." + +#: src/components/UserMessages.jsx:49 +msgid "A new verification mail is getting sent to you." +msgstr "Novej ověřující mail se vám posílá" + +#: src/components/UserMessages.jsx:53 +msgid "Click here to request a new verification mail." +msgstr "Klikněte tu aby jste požádali o nový ověřující mail." + +#: src/components/ChangeName.jsx:64 +msgid "New Username" +msgstr "Nové Jméno" + +#: src/components/ChangePassword.jsx:21 +msgid "Passwords do not match." +msgstr "Hesla nejsou stejná." + +#: src/components/ChangePassword.jsx:44 +msgid "Changed Password successfully." +msgstr "Heslo změněnó úspěšně" + +#: src/components/ChangePassword.jsx:88 +msgid "Old Password" +msgstr "Staré Heslo" + +#: src/components/ChangePassword.jsx:96 +msgid "New Password" +msgstr "Nové Heslo" + +#: src/components/ChangePassword.jsx:103 +msgid "Confirm New Password" +msgstr "Potvrďte Nové Heslo" + +#: src/components/ChangeMail.jsx:59 +msgid "" +"Changed Mail successfully. We sent you a verification mail, " +"please verify your new mail address." +msgstr "" +"Byl Úspěšně změněn Mail. Poslali jsme vám ověřující mail, prosím " +"ověřte svojí novou mailovou adresu." + +#: src/components/ChangeMail.jsx:87 +msgid "New Mail" +msgstr "Novej Mail." + +#: src/components/DeleteAccount.jsx:66 +msgid "Yes, Delete My Account!" +msgstr "Ano, Odstraňte Mi Účet!" + +#: src/components/SocialSettings.jsx:35 +msgid "Block DMs" +msgstr "Blokovat DMs" + +#: src/components/SocialSettings.jsx:42 +msgid "Block all Private Messages" +msgstr "Blokovat všechny Privátní Zprávy" + +#: src/components/SocialSettings.jsx:44 +msgid "Private" +msgstr "Privát" + +#: src/components/SocialSettings.jsx:51 +msgid "Don't show me in global stats" +msgstr "Neukazujte mě v globálních statistik" + +#: src/components/SocialSettings.jsx:57 +msgid "Unblock Users" +msgstr "Unblokovat Uživatele" + +#: src/components/SocialSettings.jsx:82 +msgid "You have no users blocked" +msgstr "Nemáté žádný blokovaný uživatele" + +#: src/components/ModCanvastools.jsx:168 +msgid "Build image on canvas." +msgstr "Postavit obraz na plátně" + +#: src/components/ModCanvastools.jsx:171 +msgid "Build image and set it to protected." +msgstr "Postavit obraz na plátně a nastavit to na chráněnej" + +#: src/components/ModCanvastools.jsx:174 +msgid "Build image, but reset cooldown to unset-pixel cd." +msgstr "Postavit obraz, ale resetovat cooldown na nenastavené pixely." + +#: src/components/ModCanvastools.jsx:184 +msgid "Clean spare pixels that are surrounded by unset pixels" +msgstr "Vyčistit náhradní pixely který jsou obklopený nenastavenýma pixelamá" + +#: src/components/ModCanvastools.jsx:188 +msgid "" +"Clean spare pixels that are surrounded by unset pixels and up to 1 other set " +"pixels" +msgstr "" +"Vyčistit náhradní pixely který jsou obklopený nenastavenýma pixelamá a až 1 " +"další nastavený pixel" + +#: src/components/ModCanvastools.jsx:192 +msgid "" +"Clean spare pixels that are surrounded by a single other color or unset " +"pixels (VERY AGGRESSIVE ON CANVASES THAT ALLOW UNSET PIXELS (where there are " +"two cooldowns)!)" +msgstr "" +"Vyčistit náhradní pixely který jsou obklopený jednou jinačí barvou nebo " +"nenastavenýma pixelama (VELMI AGGRESIVNÍ NA PLÁTNECH KTERÝ POVOLUJÍ " +"NENASTAVENÝ PIXELY (kde jsou dva cooldowny)!)" + +#: src/components/ModCanvastools.jsx:203 +msgid "Status: Not running" +msgstr "Status: Neběží" + +#: src/components/ModCanvastools.jsx:245 +msgid "Image Upload" +msgstr "Nahrát Obrázek" + +#: src/components/ModCanvastools.jsx:246 +msgid "Upload images to canvas" +msgstr "Nahrát obrázky na plátno" + +#: src/components/ModCanvastools.jsx:248 +msgid "File" +msgstr "Složka" + +#: src/components/ModCanvastools.jsx:269 +msgid "Coordinates in X_Y format:" +msgstr "Souřadnice v X_Y formátu" + +#: src/components/ModCanvastools.jsx:307 +msgid "Pixel Protection" +msgstr "Chránění pixely" + +#: src/components/ModCanvastools.jsx:309 +msgid "" +"Set protection of areas (if you need finer grained control, " +"use protect with image upload and alpha layers)" +msgstr "" +"Nastavit ochranu oblastí (pokud potřebuješ jemnější " +"kontrolu, použíj ochránit s nahratí obrázku a alfa vrstvy)" + +#: src/components/ModCanvastools.jsx:330 src/components/ModCanvastools.jsx:403 +#: src/components/ModCanvastools.jsx:486 src/components/ModWatchtools.jsx:174 +msgid "Top-left corner" +msgstr "Horní-levej roh" + +#: src/components/ModCanvastools.jsx:347 src/components/ModCanvastools.jsx:420 +#: src/components/ModCanvastools.jsx:503 src/components/ModWatchtools.jsx:191 +msgid "Bottom-right corner" +msgstr "Dolní-pravej roh" + +#: src/components/ModCanvastools.jsx:388 +msgid "Rollback to Date" +msgstr "Nahrát zpátky na Datum" + +#: src/components/ModCanvastools.jsx:390 +msgid "Rollback an area of the canvas to a set date (00:00 UTC)" +msgstr "Nahrát zpátky oblast Plátna na nastavenej datum (00:00 UTC)" + +#: src/components/ModCanvastools.jsx:461 +msgid "Canvas Cleaner" +msgstr "Čistič Plátna" + +#: src/components/ModCanvastools.jsx:463 +msgid "Apply a filter to clean trash in large canvas areas." +msgstr "Přidat filter na vyčištění odpadků ve velkých oblastech plátna." + +#: src/components/ModCanvastools.jsx:564 +msgid "Stop Cleaner" +msgstr "Vypnout Čistič" + +#: src/components/ModWatchtools.jsx:48 +msgid "Interval is invalid" +msgstr "Interval je neplatný" + +#: src/components/ModWatchtools.jsx:122 +msgid "Check who placed in an area" +msgstr "Zkontrolovat kdo položil v oblasti" + +#: src/components/ModWatchtools.jsx:123 +msgid "Canvas" +msgstr "Plátno" + +#: src/components/ModWatchtools.jsx:142 +msgid "Interval" +msgstr "Interval" + +#: src/components/ModWatchtools.jsx:157 +msgid "IID (optional)" +msgstr "IID (dobrovolný)" + +#: src/components/ModWatchtools.jsx:236 +msgid "Get Pixels" +msgstr "Získat Pixely" + +#: src/components/ModWatchtools.jsx:267 +msgid "Get Users" +msgstr "Získat Uživatele" + +#: src/components/ModIIDtools.jsx:20 +msgid "You must enter a duration" +msgstr "Musíš nastavit dobu" + +#: src/components/ModIIDtools.jsx:24 +msgid "You must enter an IID" +msgstr "Musíš vložit IID" + +#: src/components/ModIIDtools.jsx:53 +msgid "IID Actions" +msgstr "IID akce" + +#: src/components/ModIIDtools.jsx:80 +msgid "Enter Reason" +msgstr "Vložit Důvod" + +#: src/components/ModIIDtools.jsx:97 +msgid "(0 = infinite)" +msgstr "(0 = nekonečno)" + +#: src/components/Admintools.jsx:109 +msgid "IP Actions" +msgstr "IP akce" + +#: src/components/Admintools.jsx:111 +msgid "Do stuff with IPs (one IP per line)" +msgstr "Udělat věci s IP (jedno IP na řádek)" + +#: src/components/Admintools.jsx:158 +msgid "Manage Moderators" +msgstr "Spravovat Moderátory" + +#: src/components/Admintools.jsx:160 +msgid "Remove Moderator" +msgstr "Odstranit Moderátora" + +#: src/components/Admintools.jsx:193 +msgid "There are no mods" +msgstr "Nejsou tu moderátoři" + +#: src/components/Admintools.jsx:198 +msgid "Assign new Mod" +msgstr "Přidat nového Moderátora" + +#: src/components/Admintools.jsx:201 +msgid "Enter UserName of new Mod" +msgstr "Vlož Jméno nového Moderátora" + +#: src/components/Admintools.jsx:210 +msgid "User Name" +msgstr "Uživatelské Jméno" + +#: src/components/contextmenus/ChannelContextMenu.jsx:46 +msgid "Mute" +msgstr "Mute" + +#: src/components/contextmenus/UserContextMenu.jsx:49 +msgid "Ping" +msgstr "Ping" + +#: src/components/contextmenus/UserContextMenu.jsx:75 +msgid "DM" +msgstr "DM" + +#: src/components/contextmenus/UserContextMenu.jsx:86 +msgid "Block" +msgstr "Block" + +#: src/components/windows/Help.jsx:15 src/components/windows/Settings.jsx:87 +msgctxt "keybinds" +msgid "G" +msgstr "" + +#: src/components/windows/Help.jsx:16 src/components/windows/Settings.jsx:95 +msgctxt "keybinds" +msgid "X" +msgstr "" + +#: src/components/windows/Settings.jsx:103 +msgctxt "keybinds" +msgid "M" +msgstr "" + +#: src/components/windows/Help.jsx:17 src/components/windows/Settings.jsx:158 +msgctxt "keybinds" +msgid "H" +msgstr "" + +#: src/components/windows/Help.jsx:18 +msgctxt "keybinds" +msgid "R" +msgstr "" + +#: src/components/windows/Help.jsx:19 +msgctxt "keybinds" +msgid "Q" +msgstr "" + +#: src/components/windows/Help.jsx:20 +msgctxt "keybinds" +msgid "E" +msgstr "" + +#: src/components/windows/Help.jsx:21 +msgctxt "keybinds" +msgid "W" +msgstr "" + +#: src/components/windows/Help.jsx:22 +msgctxt "keybinds" +msgid "A" +msgstr "" + +#: src/components/windows/Help.jsx:23 +msgctxt "keybinds" +msgid "S" +msgstr "" + +#: src/components/windows/Help.jsx:24 +msgctxt "keybinds" +msgid "D" +msgstr "" + +#: src/components/windows/Help.jsx:31 +msgctxt "keybinds" +msgid "Shift" +msgstr "" + +#: src/components/windows/Help.jsx:32 +msgctxt "keybinds" +msgid "C" +msgstr "" diff --git a/i18n/gr.po b/i18n/gr.po new file mode 100644 index 00000000..2a4963cf --- /dev/null +++ b/i18n/gr.po @@ -0,0 +1,1598 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: el_GR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.3.2\n" + +#: src/controls/keypress.js:41 +#, javascript-format +msgid "Switched to ${ canvasName }" +msgstr "Έγινε εναλλαγή σε ${ canvasName }" + +#: src/controls/keypress.js:64 +msgid "Grid ON" +msgstr "Πλέγμα Ενεργο" + +#: src/controls/keypress.js:65 +msgid "Grid OFF" +msgstr "Πλέγμα Ενενεργό" + +#: src/controls/keypress.js:75 +msgid "Pixel Notify ON" +msgstr "Ειδοποίηση Pixel Ενεργό" + +#: src/controls/keypress.js:76 +msgid "Pixel Notify OFF" +msgstr "Ειδοποίηση Pixel Ανενεργό" + +#: src/controls/keypress.js:81 +msgid "Muted Sound" +msgstr "Σίγαση ήχου" + +#: src/controls/keypress.js:82 +msgid "Unmuted Sound" +msgstr "Διακοπή σίγασης ήχου" + +#: src/components/CoordinatesBox.jsx:28 src/components/GetIID.jsx:51 +#: src/controls/keypress.js:88 +msgid "Copied!" +msgstr "Αντιγράφηκε!" + +#: src/controls/keypress.js:94 +msgid "Show Hidden Canvases" +msgstr "Εμφάνιση κρυφών καμβάς" + +#: src/controls/keypress.js:95 +msgid "Hide Hidden Canvases" +msgstr "Απόκρυψη κρυμμένων καμβάς" + +#: src/ui/PixelTransferController.js:70 +msgid "Error :(" +msgstr "Κάτι πήγε λάθος:(" + +#: src/ui/PixelTransferController.js:71 +msgid "Didn't get an answer from pixelplanet. Maybe try to refresh?" +msgstr "" +"Δεν λάβατε απάντηση από το pixelplanet; Ίσως προσπαθήσετε να ανανεώσετε την " +"σελίδα;" + +#: src/ui/PixelTransferController.js:103 +msgid "Invalid Canvas" +msgstr "Μη έγκυρος καμβάς" + +#: src/ui/PixelTransferController.js:104 +msgid "This canvas doesn't exist" +msgstr "Αυτός ο καμβάς δεν υπάρχει" + +#: src/ui/PixelTransferController.js:107 src/ui/PixelTransferController.js:111 +#: src/ui/PixelTransferController.js:115 +msgid "Invalid Coordinates" +msgstr "Μη έγκυρες συντεταγμένες" + +#: src/ui/PixelTransferController.js:108 +msgid "x out of bounds" +msgstr "x εκτός ορίων" + +#: src/ui/PixelTransferController.js:112 +msgid "y out of bounds" +msgstr "y εκτός ορίων" + +#: src/ui/PixelTransferController.js:116 +msgid "z out of bounds" +msgstr "z εκτός ορίων" + +#: src/ui/PixelTransferController.js:119 +msgid "Wrong Color" +msgstr "Λάθος χρώμα" + +#: src/ui/PixelTransferController.js:120 +msgid "Invalid color selected" +msgstr "Επιλέχθηκε μη έγκυρο χρώμα" + +#: src/ui/PixelTransferController.js:123 +msgid "Just for registered Users" +msgstr "Μόνο για εγγεγραμμένους χρήστες" + +#: src/ui/PixelTransferController.js:124 +msgid "You have to be logged in to place on this canvas" +msgstr "Πρέπει να είστε συνδεδεμένοι για να τοποθετήσετε σε αυτόν τον καμβά" + +#: src/ui/PixelTransferController.js:127 +msgid "Place more :)" +msgstr "Τοποθετήστε περισσότερα pixel :)" + +#: src/ui/PixelTransferController.js:129 +msgid "You can not access this canvas yet. You need to place more pixels" +msgstr "" +"Δεν μπορείτε ακόμη να αποκτήσετε πρόσβαση σε αυτόν τον καμβά. Πρέπει να " +"τοποθετήσετε περισσότερα pixel" + +#: src/ui/PixelTransferController.js:132 +msgid "Pixel protected!" +msgstr "Προστατευμένα pixel!" + +#: src/ui/PixelTransferController.js:139 +msgid "Please prove that you are human" +msgstr "Παρακαλώ αποδείξτε ότι είστε άνθρωπος" + +#: src/ui/PixelTransferController.js:143 +msgid "No Proxies Allowed :(" +msgstr "Δεν επιτρέπονται proxies :(" + +#: src/ui/PixelTransferController.js:144 +msgid "You are using a Proxy." +msgstr "Χρησιμοποιείτε Proxy." + +#: src/ui/PixelTransferController.js:147 +msgid "Not allowed" +msgstr "Δεν επιτρέπεται" + +#: src/ui/PixelTransferController.js:148 +msgid "Just the Top10 of yesterday can place here" +msgstr "Μόνο το Top10 απο χθες μπορεί να τοποθετηθεί εδώ" + +#: src/ui/PixelTransferController.js:151 +msgid "You are weird" +msgstr "Είσαι περίεργος" + +#: src/ui/PixelTransferController.js:153 +msgid "" +"Server got confused by your pixels. Are you playing on multiple devices?" +msgstr "" +"Ο διακομιστής μπερδεύτηκε με τα pixel σας. Παίζετε απο πολλές συσκευές;" + +#: src/ui/PixelTransferController.js:156 +msgid "Banned" +msgstr "Αποκλείστηκες" + +#: src/ui/PixelTransferController.js:160 +msgid "Range Banned" +msgstr "Απαγόρευση εύρους" + +#: src/ui/PixelTransferController.js:161 +msgid "Your Internet Provider is banned from playing this game" +msgstr "Ο πάροχος Διαδικτύου σας έχει απαγορευτεί να παίξει αυτό το παιχνίδι" + +#: src/ui/PixelTransferController.js:164 +msgid "Timeout" +msgstr "Τέλος χρόνου" + +#: src/ui/PixelTransferController.js:166 +msgid "" +"Didn't get an answer from pixelplanet. Maybe try to refresh if problem " +"persists?" +msgstr "" +"Δεν λάβατε απάντηση από το pixelplanet; Ίσως προσπαθήσετε να ανανεώσετε την " +"σελίδα;" + +#: src/ui/PixelTransferController.js:169 +msgid "Weird" +msgstr "Είσαι περίεργος" + +#: src/ui/PixelTransferController.js:170 +msgid "Couldn't set Pixel" +msgstr "Ειδοποίηση Pixel Ενεργό" + +#: src/ui/PixelTransferController.js:175 +#, javascript-format +msgid "Error ${ retCode }" +msgstr "Κάτι πήγε λάθος ${ retCode }" + +#: src/ui/rendererFactory.js:30 +msgid "Canvas Error" +msgstr "Κάτι πήγε λάθος με τους κανβας:(" + +#: src/ui/rendererFactory.js:31 +msgid "Can't render 3D canvas, do you have WebGL2 disabled?" +msgstr "" +"Δεν είναι δυνατή η απόδοση του τρισδιάστατου καμβά, έχετε απενεργοποιήσει το " +"WebGL2;" + +#: src/components/BanInfo.jsx:136 src/store/actions/index.js:7 +msgid "OK" +msgstr "OK" + +#: src/store/actions/fetch.js:55 +msgid "You made too many requests" +msgstr "Κάνατε πάρα πολλά αιτήματα" + +#: src/store/actions/fetch.js:59 +#, javascript-format +msgid "try again after ${ ti }min" +msgstr "δοκιμάστε ξανά μετά από ${ ti }min" + +#: src/store/actions/fetch.js:70 +msgid "Connection error ${ code } :(" +msgstr "Κάτι πήγε λάθος ${ code } :(" + +#: src/store/actions/fetch.js:103 src/store/actions/fetch.js:129 +msgid "Could not connect to server, please try again later :(" +msgstr "" +"Δεν ήταν δυνατή η σύνδεση με τον διακομιστή, δοκιμάστε ξανά αργότερα :(" + +#: src/store/actions/fetch.js:151 src/store/actions/fetch.js:170 +#: src/store/actions/fetch.js:189 src/store/actions/fetch.js:208 +#: src/store/actions/fetch.js:227 +msgid "Unknown Error" +msgstr "Κάτι πήγε λάθος:(" + +#: src/store/actions/fetch.js:237 +msgid "Server answered with gibberish :(" +msgstr "Ο διακομιστής απάντησε με ασυναρτησίες :(" + +#: src/store/middleware/notifications.js:33 +msgid "Your next pixels are ready" +msgstr "Τα επόμενα pixel σας είναι έτοιμα" + +#: src/store/middleware/notifications.js:37 +msgid "You can now place more on pixelplanet.fun :)" +msgstr "Τώρα μπορείτε να τοποθετήσετε περισσότερα στο pixelplanet.fun :)" + +#: src/store/middleware/notifications.js:54 +msgid "mentioned you" +msgstr "είσαι περίεργος" + +#: src/store/middleware/notifications.js:58 +msgid "You have new messages in chat" +msgstr "Έχετε νέα μηνύματα στο Chat" + +#: src/components/Converter.jsx:561 src/components/CoordinatesBox.jsx:31 +#: src/components/ModWatchtools.jsx:371 +msgid "Copy to Clipboard" +msgstr "Αντιγραφή στο πρόχειρο" + +#: src/components/OnlineBox.jsx:40 +msgid "Online Users on Canvas" +msgstr "Μόνο για εγγεγραμμένους χρήστες" + +#: src/components/OnlineBox.jsx:47 +msgid "Total Online Users" +msgstr "Μόνο για εγγεγραμμένους χρήστες" + +#: src/components/OnlineBox.jsx:55 +msgid "Pixels placed" +msgstr "Pixels τοποθετήθηκαν" + +#: src/components/buttons/CanvasSwitchButton.jsx:20 +#: src/components/windows/index.js:19 +msgid "Canvas Selection" +msgstr "Μη έγκυρος καμβάς" + +#: src/components/buttons/ChatButton.jsx:88 +msgid "Close Chat" +msgstr "Κλείσιμο συνομιλίας" + +#: src/components/buttons/ChatButton.jsx:88 +msgid "Open Chat" +msgstr "Άνοιγμα συνομιλίας" + +#: src/components/buttons/ExpandMenuButton.jsx:22 +msgid "Close Menu" +msgstr "Κλείσιμο μενού" + +#: src/components/buttons/ExpandMenuButton.jsx:22 +msgid "Open Menu" +msgstr "Άνοιγμα Μενού" + +#: src/components/HistorySelect.jsx:144 +msgid "Loading" +msgstr "Φόρτωση" + +#: src/components/HistorySelect.jsx:145 +msgid "Select Date above" +msgstr "Επιλέξτε Ημερομηνία παραπάνω" + +#: src/components/Admintools.jsx:103 src/components/ModCanvastools.jsx:222 +#: src/components/ModWatchtools.jsx:118 src/components/Window.jsx:157 +#: src/components/Window.jsx:260 +#: src/components/contextmenus/ChannelContextMenu.jsx:59 +msgid "Close" +msgstr "Κλείσιμο" + +#: src/components/Window.jsx:173 +msgid "PopUp" +msgstr "Αναδυόμενο παράθυρο" + +#: src/components/Window.jsx:184 +msgid "Restore" +msgstr "Επαναφωρά" + +#: src/components/Window.jsx:221 +msgid "Clone" +msgstr "Κλώνος" + +#: src/components/Window.jsx:229 +msgid "Move" +msgstr "Κίνηση" + +#: src/components/Window.jsx:252 +msgid "Maximize" +msgstr "Αύξηση ανώτερου βαθμού" + +#: src/components/Window.jsx:268 +msgid "Resize" +msgstr "Αλλαγή μεγέθους" + +#: src/components/buttons/GlobeButton.jsx:34 +msgid "Globe View" +msgstr "Προβολή Υδρόγειου" + +#: src/components/buttons/PalselButton.jsx:30 +msgid "Close Palette" +msgstr "Κλείσιμο παλέτας" + +#: src/components/buttons/PalselButton.jsx:30 +msgid "Open Palette" +msgstr "Άνοιγμα Παλέτας" + +#: src/components/buttons/SettingsButton.jsx:21 +#: src/components/windows/index.js:14 +msgid "Settings" +msgstr "Ρυθμίσεις" + +#: src/components/BanInfo.jsx:75 src/components/buttons/HelpButton.jsx:20 +#: src/components/windows/index.js:13 +msgid "Help" +msgstr "Βοήθεια" + +#: src/components/buttons/LogInButton.jsx:20 src/components/windows/index.js:15 +msgid "User Area" +msgstr "Περιοχή χρήστη" + +#: src/components/buttons/DownloadButton.jsx:36 +msgid "Make Screenshot" +msgstr "Δημιουργία στιγμιότυπου οθόνης" + +#: src/components/windows/index.js:16 +msgid "Registration" +msgstr "Εγγραφή" + +#: src/components/windows/index.js:17 +msgid "Forgot Password" +msgstr "Ξεχάσατε τον κωδικό" + +#: src/components/windows/index.js:18 +msgid "Chat" +msgstr "Συνομιλία" + +#: src/components/windows/index.js:20 +msgid "Canvas Archive" +msgstr "Αρχείο καμβά" + +#: src/components/GlobalCaptcha.jsx:47 +msgid "You took too long, try again." +msgstr "Χρειάστηκε πολύς χρόνος, δοκιμάστε ξανά." + +#: src/components/GlobalCaptcha.jsx:50 +msgid "You failed your captcha" +msgstr "Απέτυχες το captcha σου" + +#: src/components/GlobalCaptcha.jsx:53 +msgid "No or invalid captcha text" +msgstr "Χωρίς ή μη έγκυρο κείμενο captch" + +#: src/components/GlobalCaptcha.jsx:56 +msgid "No captcha id given" +msgstr "Δεν δόθηκε αναγνωριστικό captcha" + +#: src/components/GlobalCaptcha.jsx:59 +msgid "Unknown Captcha Error" +msgstr "Άγνωστο σφάλμα Captcha" + +#: src/components/BanInfo.jsx:80 src/components/Captcha.jsx:77 +#: src/components/ChangeMail.jsx:72 src/components/ChangeName.jsx:58 +#: src/components/ChangePassword.jsx:79 src/components/DeleteAccount.jsx:55 +#: src/components/GlobalCaptcha.jsx:71 src/components/LogInForm.jsx:70 +#: src/components/windows/ForgotPassword.jsx:73 +#: src/components/windows/Register.jsx:89 +msgid "Error" +msgstr "Λάθος" + +#: src/components/ChangeMail.jsx:93 src/components/ChangeName.jsx:70 +#: src/components/ChangePassword.jsx:115 src/components/DeleteAccount.jsx:68 +#: src/components/GlobalCaptcha.jsx:80 +#: src/components/windows/ForgotPassword.jsx:89 +#: src/components/windows/Register.jsx:133 +msgid "Cancel" +msgstr "Ματαίωση" + +#: src/components/GlobalCaptcha.jsx:86 +msgid "Send" +msgstr "Αποστολή" + +#: src/components/BanInfo.jsx:66 +msgid "You are banned. You think it is unjustifed? Check out the " +msgstr "Είστε απαγορευμένοι. Πιστεύετε ότι είναι αδικαιολόγητο; Ελέγξτε τo " + +#: src/components/BanInfo.jsx:76 +msgid " on how to appeal." +msgstr " πώς να ασκήσετε έφεση." + +#: src/components/BanInfo.jsx:85 src/components/ModIIDtools.jsx:73 +msgid "Reason" +msgstr "Λόγος" + +#: src/components/BanInfo.jsx:91 +msgid "By Mod" +msgstr "Από τον Mod" + +#: src/components/BanInfo.jsx:97 src/components/ModIIDtools.jsx:84 +msgid "Duration" +msgstr "Διάρκεια" + +#: src/components/BanInfo.jsx:99 +msgid "Your ban expires at " +msgstr "Η απαγόρευσή σας λήγει στις " + +#: src/components/BanInfo.jsx:101 +msgid " which is in " +msgstr " που είναι μέσα " + +#: src/components/BanInfo.jsx:112 +msgid "Unbanned" +msgstr "Επαναφορά Αποκλησμού" + +#: src/components/BanInfo.jsx:113 +msgid "Now that you have seen this message, you are no longer banned." +msgstr "Τώρα που είδατε αυτό το μήνυμα, δεν είστε πλέον αποκλεισμένοι." + +#: src/components/BanInfo.jsx:127 +msgid "Why?" +msgstr "Γιατί;" + +#: src/components/windows/Settings.jsx:86 +msgid "Show Grid" +msgstr "Εμφάνιση πλέγματος" + +#: src/components/windows/Settings.jsx:91 +msgid "Turn on grid to highlight pixel borders." +msgstr "Ενεργοποιήστε το πλέγμα για να επισημάνετε τα περιγράμματα των pixel." + +#: src/components/windows/Settings.jsx:94 +msgid "Show Pixel Activity" +msgstr "Ειδοποίηση Pixel Ενεργό" + +#: src/components/windows/Settings.jsx:99 +msgid "Show circles where pixels are placed." +msgstr "Εμφάνιση κύκλων όπου τοποθετούνται τα pixel." + +#: src/components/windows/Settings.jsx:102 +msgid "Disable Game Sounds" +msgstr "Απενεργοποιήστε τους ήχους παιχνιδιού" + +#: src/components/windows/Settings.jsx:108 +msgid "All sound effects will be disabled." +msgstr "Όλα τα ηχητικά εφέ θα απενεργοποιηθούν." + +#: src/components/windows/Settings.jsx:112 +msgid "" +"Your Browser doesn't allow us to use AudioContext to play sounds. Do you " +"have some privacy feature blocking us?" +msgstr "" +"Το πρόγραμμα περιήγησής σας δεν μας επιτρέπει να χρησιμοποιούμε το " +"AudioContext για την αναπαραγωγή ήχων. Έχετε κάποια λειτουργία απορρήτου που " +"μας αποκλείει;" + +#: src/components/windows/Settings.jsx:118 +msgid "Enable chat notifications" +msgstr "Ενεργοποίηση ειδοποιήσεων συνομιλίας" + +#: src/components/windows/Settings.jsx:122 +msgid "Play a sound when new chat messages arrive" +msgstr "Παίξτε έναν ήχο όταν φτάνουν νέα μηνύματα συνομιλίας" + +#: src/components/windows/Settings.jsx:125 +msgid "Auto Zoom In" +msgstr "Αυτόματο ζουμ" + +#: src/components/windows/Settings.jsx:130 +msgid "" +"Zoom in instead of placing a pixel when you tap the canvas and your zoom is " +"small." +msgstr "" +"Κάντε μεγέθυνση αντί να τοποθετήσετε ένα pixel όταν αγγίζετε τον καμβά και " +"το ζουμ σας είναι μικρό." + +#: src/components/windows/Settings.jsx:133 +msgid "Compact Palette" +msgstr "Συμπαγής παλέτα" + +#: src/components/windows/Settings.jsx:138 +msgid "Display Palette in a compact form that takes less screen space." +msgstr "" +"Εμφάνιση παλέτας σε συμπαγή μορφή που καταλαμβάνει λιγότερο χώρο στην οθόνη." + +#: src/components/windows/Settings.jsx:141 +msgid "Potato Mode" +msgstr "Λειτουργία πατάτας" + +#: src/components/windows/Settings.jsx:145 +msgid "For when you are playing on a potato." +msgstr "Για όταν παίζετε σε μια πατάτα." + +#: src/components/Converter.jsx:376 src/components/windows/Settings.jsx:148 +msgid "Light Grid" +msgstr "Πλέγμα φωτός" + +#: src/components/windows/Settings.jsx:152 +msgid "Show Grid in white instead of black." +msgstr "Εμφάνιση Πλέγματος σε λευκό αντί για μαύρο." + +#: src/components/windows/Settings.jsx:156 +msgid "Historical View" +msgstr "Ιστορική Προβολή" + +#: src/components/windows/Settings.jsx:161 +msgid "Check out past versions of the canvas." +msgstr "Δείτε προηγούμενες εκδόσεις του καμβά." + +#: src/components/windows/Settings.jsx:166 +msgid "Themes" +msgstr "Θέματα" + +#: src/components/windows/Settings.jsx:171 +msgid "How pixelplanet should look like." +msgstr "Πώς πρέπει να μοιάζει το pixelplanet." + +#: src/components/windows/Settings.jsx:178 +msgid "Select Language" +msgstr "Επιλογή γλώσσας" + +#: src/components/windows/Help.jsx:42 +msgid "Place color pixels on a large canvas with other players online!" +msgstr "" +"Τοποθετήστε έγχρωμα pixel σε έναν μεγάλο καμβά με άλλους παίκτες στο " +"διαδίκτυο!" + +#: src/components/windows/Help.jsx:43 +msgid "" +"Our main canvas is a huge worldmap, you can place wherever you like, but you " +"will have to wait a specific Cooldown between pixels. You can check out the " +"cooldown and requirements on the Canvas Selection menu (globe button on " +"top). Some canvases have a different cooldown for replacing a user-set " +"pixels than placing on a unset pixel. i.e. 4s/7s means 4s on fresh pixels " +"and 7s on already set pixels." +msgstr "" +"Ο καμβάς μας είναι ένας τεράστιος παγκόσμιος χάρτης, τον οποίο μπορείτε να " +"τοποθετήσετε όπου θέλετε, αλλά θα πρέπει να περιμένετε ένα συγκεκριμένο " +"Cooldown μεταξύ των pixel. Μπορείτε να δείτε το cooldown και τις απαιτήσεις " +"στο μενού Επιλογή καμβά (κουμπί υδρόγειου στο επάνω μέρος). Ορισμένοι κάνβας " +"έχουν διαφορετικό cooldown για την αντικατάσταση των πιξελ που έχει ορίσει ο " +"χρήστης σε σχέση με την τοποθέτηση σε μη καθορισμένο pixel. δηλ. 4δευτ/7δευτ " +"σημαίνει 4s σε φρέσκα pixel και 7s σε ήδη ρυθμισμένα pixel." + +#: src/components/windows/Help.jsx:47 +msgid "" +"Higher zoomlevels take some time to update, the 3D globe gets updated at " +"least once per day." +msgstr "" +"Τα υψηλότερα επίπεδα ζουμ χρειάζονται λίγο χρόνο για να ενημερωθούν, η " +"τρισδιάστατη σφαίρα ενημερώνεται τουλάχιστον μία φορά την ημέρα." + +#: src/components/windows/Help.jsx:48 +msgid "Have fun!" +msgstr "Καλα να περάσεις!" + +#: src/components/windows/Help.jsx:50 +msgid "recommended" +msgstr "συνιστάται" + +#: src/components/windows/Help.jsx:51 +msgid "Source on " +msgstr "Συνιστάται " + +#: src/components/windows/Help.jsx:52 +msgid "Map Data" +msgstr "Δεδομένα χάρτη" + +#: src/components/windows/Help.jsx:53 +msgid "" +"The bare map data that we use, together with converted OpenStreetMap tiles " +"for orientation, can be downloaded from mega.nz here: " +msgstr "" +"Τα δεδομένα χάρτη που χρησιμοποιούμε, μαζί με τα πλακίδια OpenStreetMap που " +"έχουν μετατραπεί για προσανατολισμό, μπορούν να ληφθούν από το mega.nz εδώ: " + +#: src/components/windows/Help.jsx:55 +msgid "Banned? Detected as Proxy?" +msgstr "Αποκλείστηκες; Εντοπίστηκε διακομιστής μεσολάβησης; (proxy)" + +#: src/components/windows/Help.jsx:57 +#, javascript-format +msgid "" +"If you got detected as proxy, but you are none, or think that you got " +"wrongfully banned, please go to our ${ guildedLink } or send us an e-mail to " +"${ mailLink } and include the following IID:" +msgstr "" +"Αν εντοπίστηκες ως διακομιστής μεσολάβησης, αλλά δεν είσαι κανένας ή " +"πιστεύεις ότι αποκλείστηκες εσφαλμένα, μεταβείτε στο ${ guildedLink } ή " +"στείλτε μας ένα μήνυμα ηλεκτρονικού ταχυδρομείου στη διεύθυνση ${ mailLink } " +"και συμπεριλάβετε το ακόλουθο αναγνωριστικό:" + +#: src/components/windows/Help.jsx:60 src/components/windows/Help.jsx:77 +msgid "Controls" +msgstr "Κοντρολ" + +#: src/components/windows/Help.jsx:62 +msgid "Click a color in palette to select it" +msgstr "Κάντε κλικ σε ένα χρώμα στην παλέτα για να το επιλέξετε" + +#: src/components/windows/Help.jsx:63 +#, javascript-format +msgid "Press ${ bindG } to toggle grid" +msgstr "Πατήστε ${ bindG } για εναλλαγή πλέγματος" + +#: src/components/windows/Help.jsx:64 +msgid "Press ${ bindX } to toggle showing of pixel activity" +msgstr "" +"Πατήστε ${ bindX } για να αλλάξετε την εμφάνιση της δραστηριότητας Pixel" + +#: src/components/windows/Help.jsx:65 +#, javascript-format +msgid "Press ${ bindH } to toggle historical view" +msgstr "Πατήστε ${ bindH } για εναλλαγή ιστορικής προβολής" + +#: src/components/windows/Help.jsx:66 +msgid "Press ${ bindR } to copy coordinates" +msgstr "Πατήστε ${ bindR } για να αντιγράψετε συντεταγμένες" + +#: src/components/windows/Help.jsx:67 +#, javascript-format +msgid "Press ${ bindQ } or ${ bindE } to zoom" +msgstr "Πατήστε ${ bindQ } ή ${ bindE } για μεγέθυνση" + +#: src/components/windows/Help.jsx:68 src/components/windows/Help.jsx:79 +#, javascript-format +msgid "Press ${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } to move" +msgstr "" +"Πατήστε ${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } για να μετακινηθείτε" + +#: src/components/windows/Help.jsx:69 src/components/windows/Help.jsx:80 +#, javascript-format +msgid "" +"Press ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } to move" +msgstr "" +"Πατήστε ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } για να " +"μετακινηθείτε" + +#: src/components/windows/Help.jsx:70 +msgid "Drag ${ mouseSymbol } mouse or ${ touchSymbol } pan to move" +msgstr "" +"Σύρετε το ${ mouseSymbol } το ποντίκι ή το πανό ${ touchSymbol } για να " +"μετακινηθείτε" + +#: src/components/windows/Help.jsx:71 +#, javascript-format +msgid "Scroll ${ mouseSymbol } mouse wheel or ${ touchSymbol } pinch to zoom" +msgstr "" +"Κάντε κύλιση ${ mouseSymbol } τροχό του ποντικιού ή πιέστε ${ touchSymbol } " +"για μεγέθυνση" + +#: src/components/windows/Help.jsx:72 +msgid "Hold left ${ bindShift } for placing while moving mouse" +msgstr "" +"Κρατήστε το ${ bindShift } αριστερά για τοποθέτηση ενώ μετακινείτε το ποντίκι" + +#: src/components/windows/Help.jsx:73 +#, javascript-format +msgid "" +"Hold right ${ bindShift } for placing while moving mouse according to " +"historical view" +msgstr "" +"Κρατήστε το δεξί ${ bindShift } για τοποθέτηση ενώ μετακινείτε το ποντίκι " +"σύμφωνα με την ιστορική προβολή" + +#: src/components/windows/Help.jsx:74 src/components/windows/Help.jsx:85 +#, javascript-format +msgid "${ mouseSymbol } Left click or ${ touchSymbol } tap to place a pixel" +msgstr "" +"${ mouseSymbol } Αριστερό κλικ ή ${ touchSymbol } tap για να τοποθετήσετε " +"ένα pixel" + +#: src/components/windows/Help.jsx:75 src/components/windows/Help.jsx:87 +msgid "" +"Click ${ mouseSymbol } middle mouse button or ${ touchSymbol } long-tap to " +"select current hovering color" +msgstr "" +"Κάντε κλικ στο μεσαίο κουμπί του ποντικιού ${ mouseSymbol } ή πατήστε " +"παρατεταμένα το ${ touchSymbol } για να επιλέξετε το τρέχον χρώμα αιώρησης" + +#: src/components/windows/Help.jsx:81 +msgid "Press ${ bindE } and ${ bindC } to fly up and down" +msgstr "Πατήστε ${ bindE } και ${ bindC } για να πετάξετε πάνω και κάτω" + +#: src/components/windows/Help.jsx:82 +#, javascript-format +msgid "${ mouseSymbol } Hold left mouse button and drag mouse to rotate" +msgstr "" +"${ mouseSymbol } Κρατήστε πατημένο το αριστερό κουμπί του ποντικιού και " +"σύρετε το ποντίκι για περιστροφή" + +#: src/components/windows/Help.jsx:83 +#, javascript-format +msgid "" +"${ mouseSymbol } Scroll mouse wheel or hold ${ mouseSymbol } middle mouse " +"button and drag to zoom" +msgstr "" +"${ mouseSymbol } Τροχός κύλισης του ποντικιού ή κρατήστε πατημένο το μεσαίο " +"κουμπί του ποντικιού ${ mouseSymbol } και σύρετε για μεγέθυνση" + +#: src/components/windows/Help.jsx:84 +msgid "${ mouseSymbol } Right click and drag mouse to pan" +msgstr "${ mouseSymbol } Δεξί κλικ και σύρετε το ποντίκι για να μετακινηθείτε" + +#: src/components/windows/Help.jsx:86 +#, javascript-format +msgid "" +"${ mouseSymbol } Right click or ${ touchSymbol } double-tap to remove a pixel" +msgstr "" +"${ mouseSymbol } Δεξί κλικ ή ${ touchSymbol } διπλό πάτημα για να αφαιρέσετε " +"ένα Pixel" + +#: src/components/windows/Help.jsx:91 +msgid "" +"We thanks those artists very much, they offered their palettes to the public " +"on" +msgstr "" +"Ευχαριστούμε πολύ αυτούς τους καλλιτέχνες, που προσέφεραν τις παλέτες τους " +"στο κοινό στις" + +#: src/components/windows/Help.jsx:94 +#, javascript-format +msgid "Credit for the Palette of the Moon goes to ${ starhouseLink }." +msgstr "Η πίστωση για την Παλέτα της Σελήνης πηγαίνει στο ${ starhouseLink }." + +#: src/components/windows/Help.jsx:97 +msgid "Credit for the Palette of the Top10 canvas goes to ${ vinikLink }." +msgstr "Τα εύσημα για την Παλέτα του καμβά Top10 πηγαίνουν στο ${ vinikLink }." + +#: src/components/windows/UserArea.jsx:36 +#: src/components/windows/UserArea.jsx:56 +msgid "Profile" +msgstr "Προφιλ" + +#: src/components/windows/UserArea.jsx:59 +msgid "Statistics" +msgstr "Στατιστικά" + +#: src/components/windows/UserArea.jsx:64 +msgid "Converter" +msgstr "Μετατροπέας" + +#: src/components/windows/UserArea.jsx:70 +msgid "Modtools" +msgstr "Υλικά διαχειριστή" + +#: src/components/windows/UserArea.jsx:71 +msgid "Loading..." +msgstr "Φόρτωση.." + +#: src/components/windows/UserArea.jsx:78 +msgid "Consider joining us on Guilded:" +msgstr "Σκεφτείτε να συμμετάσχετε μαζί μας στο Guilded:" + +#: src/components/windows/Register.jsx:87 +msgid "Register new account here" +msgstr "Εγγραφή νέου λογαριασμού εδώ" + +#: src/components/windows/Register.jsx:92 +#: src/components/windows/Register.jsx:98 +msgid "Name" +msgstr "Όνομα" + +#: src/components/windows/ForgotPassword.jsx:80 +#: src/components/windows/Register.jsx:100 +#: src/components/windows/Register.jsx:106 +msgid "Email" +msgstr "Μail" + +#: src/components/ChangeMail.jsx:80 src/components/DeleteAccount.jsx:62 +#: src/components/LogInForm.jsx:84 src/components/windows/Register.jsx:108 +#: src/components/windows/Register.jsx:114 +msgid "Password" +msgstr "Κωδικός" + +#: src/components/windows/Register.jsx:116 +#: src/components/windows/Register.jsx:122 +msgid "Confirm Password" +msgstr "Επιβεβαίωση Κωδικού" + +#: src/components/windows/Register.jsx:124 +msgid "Captcha" +msgstr "Captcha" + +#: src/components/Admintools.jsx:154 src/components/Admintools.jsx:238 +#: src/components/ModCanvastools.jsx:302 src/components/ModCanvastools.jsx:382 +#: src/components/ModCanvastools.jsx:455 src/components/ModCanvastools.jsx:546 +#: src/components/ModIIDtools.jsx:135 +#: src/components/windows/ForgotPassword.jsx:84 +#: src/components/windows/Register.jsx:127 +msgid "Submit" +msgstr "Yπέβαλλε" + +#: src/components/windows/CanvasSelect.jsx:29 +msgid "" +"Select the canvas you want to use. Every canvas is unique and has different " +"palettes, cooldown and requirements. Archive of closed canvases can be " +"accessed here:" +msgstr "" +"Επιλέξτε τον καμβά που θέλετε να χρησιμοποιήσετε. Κάθε καμβάς είναι " +"μοναδικός και έχει διαφορετικές παλέτες, cooldown και απαιτήσεις. Το αρχείο " +"των κλειστών καμβάδων μπορείτε να το προσπελάσετε εδώ:" + +#: src/components/windows/CanvasSelect.jsx:37 +msgid "Archive" +msgstr "Αρχείο" + +#: src/components/windows/Archive.jsx:16 +msgid "" +"While we tend to not delete canvases, some canvases are started for fun or " +"as a request by users who currently like a meme. Those canvases can get " +"boring after a while and after weeks of no major change and if they really " +"aren't worth being kept active, we decide to remove them." +msgstr "" +"Αν και τείνουμε να μην διαγράφουμε καμβας, ορισμένοι καμβάδες ξεκινούν για " +"διασκέδαση ή ως αίτημα από χρήστες που αυτή τη στιγμή τους αρέσει ένα " +"μιμίδιο. Αυτοί οι καμβάδες μπορεί να γίνουν βαρετοί μετά από λίγο και μετά " +"από εβδομάδες χωρίς σημαντικές αλλαγές και αν πραγματικά δεν αξίζει να " +"διατηρηθούν ενεργοί, αποφασίζουμε να τους αφαιρέσουμε." + +#: src/components/windows/Archive.jsx:18 +msgid "" +"Here we collect those canvases to archive them in a proper way (which is " +"currently just one)." +msgstr "" +"Εδώ συλλέγουμε αυτούς τους καμβάς για να τους αρχειοθετήσουμε με τον " +"κατάλληλο τρόπο (ο οποίος αυτή τη στιγμή είναι μόνο ένας)." + +#: src/components/windows/Archive.jsx:20 +msgid "Political Compass Canvas" +msgstr "Καμβάς Πολιτικής Πυξίδας" + +#: src/components/windows/Archive.jsx:27 +msgid "" +"This canvas got requested during a time of political conflicts on the main " +"Earth canvas. It was a 1024x1024 representation of the political compass " +"with a 5s cooldown and 60s stacking. It got launched on May 11th and " +"remained active for months till it got shut down on November 30th." +msgstr "" +"Αυτός ο καμβάς ζητήθηκε σε μια περίοδο πολιτικών συγκρούσεων στον κύριο " +"καμβά της Γης. Ήταν μια αναπαράσταση 1024x1024 της πολιτικής πυξίδας με 5 " +"cooldown και 60s stacking. Κυκλοφόρησε στις 11 Μαΐου και παρέμεινε ενεργό " +"για μήνες μέχρι να κλείσει στις 30 Νοεμβρίου." + +#: src/components/windows/Archive.jsx:28 +msgid "" +"We decided to archive it as a timelapse with lossless encoded webm. Taking a " +"screenshot from the timelapse results in a perfect 1:1 representation of how " +"the canvas was at that time." +msgstr "" +"Αποφασίσαμε να το αρχειοθετήσουμε ως timelapse με κωδικοποιημένο webm χωρίς " +"απώλειες. Η λήψη ενός στιγμιότυπου οθόνης από το timelapse έχει ως " +"αποτέλεσμα μια τέλεια αναπαράσταση 1:1 του πώς ήταν ο καμβάς εκείνη τη " +"στιγμή." + +#: src/components/windows/ForgotPassword.jsx:58 +msgid "Sent you a mail with instructions to reset your password." +msgstr "" +"Σας στείλαμε ένα mail με οδηγίες για να επαναφέρετε τον κωδικό πρόσβασής σας." + +#: src/components/windows/ForgotPassword.jsx:69 +msgid "Enter your mail address and we will send you a new password:" +msgstr "" +"Εισαγάγετε τη διεύθυνση mail σας και θα σας στείλουμε έναν νέο κωδικό " +"πρόσβασης:" + +#: src/components/windows/Chat.jsx:180 +msgid "Start chatting here" +msgstr "Ξεκινήστε τη συνομιλία εδώ" + +#: src/components/windows/Chat.jsx:217 +msgid "Chat here" +msgstr "Άνοιγμα συνομιλίας" + +#: src/components/windows/Chat.jsx:243 +msgid "You must be logged in to chat" +msgstr "Πρέπει να είστε συνδεδεμένοι για να τοποθετήσετε σε αυτόν τον καμβά" + +#: src/components/windows/Chat.jsx:273 +msgid "Channel settings" +msgstr "Ρυθμίσεις καναλιού" + +#: src/components/Captcha.jsx:51 src/components/Captcha.jsx:105 +msgid "Could not load captcha" +msgstr "Δεν ήταν δυνατή η φόρτωση της captcha" + +#: src/components/Captcha.jsx:69 +msgid "Type the characters from the following image:" +msgstr "Πληκτρολογήστε τους χαρακτήρες από την παρακάτω εικόνα:" + +#: src/components/Captcha.jsx:72 +msgid "Tip: Not case-sensitive; I and l are the same" +msgstr "" +"Συμβουλή: Δεν γίνεται διάκριση πεζών-κεφαλαίων. Εγώ και εγώ είμαστε το ίδιο" + +#: src/components/Captcha.jsx:114 +msgid "Load Captcha" +msgstr "Φόρτωση Captcha" + +#: src/components/Captcha.jsx:119 +msgid "Click to Load Captcha" +msgstr "Κάντε κλικ για να φορτώσετε το Captcha" + +#: src/components/Captcha.jsx:124 +msgid "Can't read? Reload:" +msgstr "Δεν μπορείτε να διαβάσετε; Ξαναδοκιμάστε :" + +#: src/components/Captcha.jsx:128 +msgid "Reload" +msgstr "Ξαναφώρτηση" + +#: src/components/Captcha.jsx:138 +msgid "Enter Characters" +msgstr "Εισαγάγετε τον λόγο" + +#: src/utils/validation.js:17 +msgid "Email can't be empty." +msgstr "Το email δεν μπορεί να είναι κενό." + +#: src/utils/validation.js:18 +msgid "Email should be at least 5 characters long." +msgstr "Το email πρέπει να αποτελείται από τουλάχιστον 5 χαρακτήρες." + +#: src/utils/validation.js:19 +msgid "Email can't be longer than 40 characters." +msgstr "Το email δεν μπορεί να είναι μεγαλύτερο από 40 χαρακτήρες." + +#: src/utils/validation.js:20 +msgid "Email should at least contain a dot" +msgstr "Το email πρέπει να περιέχει τουλάχιστον μια τελεία" + +#: src/utils/validation.js:22 +msgid "Email should contain a @" +msgstr "Το email πρέπει να περιέχει ένα @" + +#: src/utils/validation.js:29 +msgid "Name can't be empty." +msgstr "Το όνομα δεν μπορεί να είναι κενό." + +#: src/utils/validation.js:30 +msgid "Name must be at least 2 characters long" +msgstr "Το όνομα πρέπει να αποτελείται από τουλάχιστον 2 χαρακτήρες" + +#: src/utils/validation.js:31 +msgid "Name must be shorter than 26 characters" +msgstr "Το όνομα πρέπει να είναι μικρότερο από 26 χαρακτήρες" + +#: src/utils/validation.js:38 +msgid "Name contains invalid character like @, /, \\ or #" +msgstr "Το όνομα περιέχει μη έγκυρο χαρακτήρα όπως @, /, \\ ή #" + +#: src/utils/validation.js:53 +msgid "No password given." +msgstr "Δεν δόθηκε κωδικός πρόσβασης." + +#: src/utils/validation.js:56 +msgid "Password must be at least 6 characters long." +msgstr "Ο κωδικός θα πρέπει να είναι τουλάχιστον 6 χαρακτήρες." + +#: src/utils/validation.js:59 +msgid "Password must be shorter than 60 characters." +msgstr "Ο κωδικός πρόσβασης πρέπει να είναι μικρότερος από 60 χαρακτήρες." + +#: src/components/ChangeMail.jsx:91 src/components/ChangeName.jsx:68 +#: src/components/ChangePassword.jsx:109 src/components/LanguageSelect.jsx:80 +msgid "Save" +msgstr "Αποθήκευση" + +#: src/components/GetIID.jsx:44 +msgid "Get IID" +msgstr "Παρε το iid" + +#: src/components/GetIID.jsx:53 +msgid "Copy" +msgstr "Αντιγραφή" + +#: src/components/LogInArea.jsx:19 +msgid "Login to access more features and stats." +msgstr "" +"Συνδεθείτε για να αποκτήσετε πρόσβαση σε περισσότερες δυνατότητες και " +"στατιστικά στοιχεία." + +#: src/components/LogInArea.jsx:21 +msgid "Login with Name or Mail:" +msgstr "Είσοδος με όνομα ή αλληλογραφία:" + +#: src/components/LogInArea.jsx:28 +msgid "I forgot my Password." +msgstr "Ξεχάσα τον κωδικό." + +#: src/components/LogInArea.jsx:29 +msgid "or login with:" +msgstr "ή σύνδεση με:" + +#: src/components/LogInArea.jsx:70 +msgid "or register here:" +msgstr "ή εγγραφείτε εδώ:" + +#: src/components/LogInArea.jsx:75 +msgid "Register" +msgstr "Εγγραφείτε" + +#: src/components/UserAreaContent.jsx:62 +msgid "Todays Placed Pixels" +msgstr "Pixels τοποθετήθηκαν σήμερα" + +#: src/components/UserAreaContent.jsx:66 +msgid "Daily Rank" +msgstr "Top 10 Ημερήσια Κατάταξη" + +#: src/components/UserAreaContent.jsx:71 +msgid "Placed Pixels" +msgstr "Pixels τοποθετήθηκαν" + +#: src/components/UserAreaContent.jsx:75 +msgid "Total Rank" +msgstr "Σύνολο" + +#: src/components/UserAreaContent.jsx:80 +#, javascript-format +msgid "Your name is: ${ name }" +msgstr "Το όνομά σας είναι: ${ name }" + +#: src/components/UserAreaContent.jsx:86 +msgid "Log out" +msgstr "Έξοδος" + +#: src/components/UserAreaContent.jsx:93 +msgid "Change Username" +msgstr "Νέο όνομα χρήστη" + +#: src/components/UserAreaContent.jsx:103 +msgid "Change Mail" +msgstr "Άλλαξτε Mail" + +#: src/components/UserAreaContent.jsx:112 +msgid "Change Password" +msgstr "Άλλαξτε κωδικό" + +#: src/components/UserAreaContent.jsx:119 +msgid "Delete Account" +msgstr "Διαγραφή λογαριασμού" + +#: src/components/UserAreaContent.jsx:126 +msgid "Social Settings" +msgstr "Ρυθμίσεις κοινωνικής δικτύωσης" + +#: src/components/Converter.jsx:190 src/components/ModCanvastools.jsx:226 +msgid "Choose Canvas" +msgstr "Επιλέξτε Καμβάς" + +#: src/components/Converter.jsx:216 +msgid "Palette Download" +msgstr "Λήψη προτύπου" + +#: src/components/Converter.jsx:218 +#, javascript-format +msgid "Palette for ${ gimpLink }" +msgstr "Παλέτα για ${ gimpLink }" + +#: src/components/Converter.jsx:236 +msgid "Image Converter" +msgstr "Μεταφόρτωση εικόνας" + +#: src/components/Converter.jsx:237 +msgid "Convert an image to canvas colors" +msgstr "Δημιουργία εικόνας σε καμβά" + +#: src/components/Converter.jsx:256 +msgid "Choose Strategy" +msgstr "Επιλέξτε Λειτουργία χρώματος" + +#: src/components/Converter.jsx:294 +msgid "Serpentine" +msgstr "Οφιοειδής" + +#: src/components/Converter.jsx:296 +msgid "Minimum Color Distance" +msgstr "Επιλέχθηκε μη έγκυρο χρώμα" + +#: src/components/Converter.jsx:323 +msgid "Calculate like GIMP" +msgstr "Υπολογίστε όπως το GIMP" + +#: src/components/Converter.jsx:327 +msgid "Choose Color Mode" +msgstr "Επιλέξτε Λειτουργία χρώματος" + +#: src/components/Converter.jsx:356 +msgid "Add Grid (uncheck if you need a 1:1 template)" +msgstr "Προσθήκη πλέγματος (αποεπιλέξτε εάν χρειάζεστε ένα πρότυπο 1:1)" + +#: src/components/Converter.jsx:378 src/components/Converter.jsx:394 +msgid "Offset" +msgstr "Αντισταθμίζεται" + +#: src/components/Converter.jsx:423 +msgid "Scale Image" +msgstr "Κλίμακα εικόνας" + +#: src/components/Converter.jsx:434 +msgid "Width" +msgstr "Πλάτος" + +#: src/components/Converter.jsx:465 +msgid "Height" +msgstr "Υψος" + +#: src/components/Converter.jsx:504 +msgid "Keep Ratio" +msgstr "Διατήρηση αναλογίας" + +#: src/components/Converter.jsx:517 +msgid "Anti Aliasing" +msgstr "Anti Aliasing" + +#: src/components/Converter.jsx:531 +msgid "Reset" +msgstr "Επαναφορά" + +#: src/components/Converter.jsx:549 +msgid "Download Template" +msgstr "Λήψη προτύπου" + +#: src/components/Rankings.jsx:147 +msgid "Total" +msgstr "Σύνολο" + +#: src/components/Rankings.jsx:156 +msgid "Today" +msgstr "Σήμερα" + +#: src/components/Rankings.jsx:165 +msgid "Yesterday" +msgstr "Μόνο οι Top10 απο χθες μπορούν να τοποθετήσουν εδώ" + +#: src/components/Rankings.jsx:174 +msgid "Countries Today" +msgstr "Χώρες σήμερα" + +#: src/components/Rankings.jsx:183 +msgid "Charts" +msgstr "Διαγράμματα­" + +#: src/components/Rankings.jsx:201 src/components/Rankings.jsx:210 +#: src/components/Rankings.jsx:219 +msgid "User" +msgstr "Χρήστης" + +#: src/components/Rankings.jsx:226 +msgid "Country" +msgstr "Χώρα" + +#: src/components/Rankings.jsx:286 +msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC." +msgstr "" +"Ενημερώσεις κατάταξης κάθε 5 λεπτά. Οι ημερήσιες κατατάξεις επαναφέρονται τα " +"μεσάνυχτα UTC." + +#: src/components/CanvasItem.jsx:29 +msgid "Online Users" +msgstr "Ενεργοί χρήστες" + +#: src/components/CanvasItem.jsx:34 +msgid "Cooldown" +msgstr "Αργή Λειτουργία" + +#: src/components/CanvasItem.jsx:40 +msgid "Stacking till" +msgstr "Στοίβαξη μέχρι" + +#: src/components/CanvasItem.jsx:42 +msgid "Ranked" +msgstr "Κατάταξη" + +#: src/components/CanvasItem.jsx:44 +msgid "Yes" +msgstr "Ναι" + +#: src/components/CanvasItem.jsx:44 +msgid "No" +msgstr "Όχι" + +#: src/components/CanvasItem.jsx:50 +msgid "Requirements" +msgstr "Απαιτήσεις" + +#: src/components/CanvasItem.jsx:53 +msgid "User Account" +msgstr "Λογαριασμός χρήστη" + +#: src/components/CanvasItem.jsx:55 +#, javascript-format +msgid "and ${ canvas.req } Pixels set" +msgstr "και ${ canvas.req } Pixel set" + +#: src/components/CanvasItem.jsx:58 +msgid "Top 10 Daily Ranking" +msgstr "Top 10 Ημερήσια Κατάταξη" + +#: src/components/CanvasItem.jsx:64 +msgid "Dimensions" +msgstr "Διαστάσεις" + +#: src/core/chartSettings.js:30 +msgid "Top 10 Countries [pxls / day]" +msgstr "Οι 10 κορυφαίες χώρες [pxls / ημέρα]" + +#: src/core/chartSettings.js:127 +msgid "Players and Pixels per hour" +msgstr "Παίκτες και pixel ανά ώρα" + +#: src/core/chartSettings.js:221 +msgid "Top 10 Players [pxls / day]" +msgstr "Οι 10 κορυφαίοι παίκτες [pxls / ημέρα]" + +#: src/core/chartSettings.js:294 +msgid "Countries by Pixels Today" +msgstr "Χώρες ανά Pixels Σήμερα" + +#: src/core/chartSettings.js:352 +msgid "Total Pixels placed per day" +msgstr "Σύνολο pixel που τοποθετούνται ανά ημέρα" + +#: src/components/LogInForm.jsx:77 +msgid "Name or Email" +msgstr "Όνομα ή Mail" + +#: src/components/LogInForm.jsx:88 +msgid "LogIn" +msgstr "Σύνδεση" + +#: src/components/UserMessages.jsx:28 +msgid "" +"Please verify your mail address or your account could get deleted after a " +"few days." +msgstr "" +"Επαληθεύστε τη διεύθυνση αλληλογραφίας σας, διαφορετικά ο λογαριασμός σας " +"μπορεί να διαγραφεί μετά από μερικές ημέρες." + +#: src/components/UserMessages.jsx:49 +msgid "A new verification mail is getting sent to you." +msgstr "Σας αποστέλλεται ένα νέο μήνυμα επαλήθευσης." + +#: src/components/UserMessages.jsx:53 +msgid "Click here to request a new verification mail." +msgstr "Κάντε κλικ εδώ για να ζητήσετε νέο μήνυμα επαλήθευσης." + +#: src/components/ChangeName.jsx:64 +msgid "New Username" +msgstr "Νέο όνομα χρήστη" + +#: src/components/ChangePassword.jsx:21 +msgid "Passwords do not match." +msgstr "Οι κωδικοί πρόσβασης δεν ταιριάζουν." + +#: src/components/ChangePassword.jsx:44 +msgid "Changed Password successfully." +msgstr "Ο κωδικός πρόσβασης άλλαξε με επιτυχία." + +#: src/components/ChangePassword.jsx:88 +msgid "Old Password" +msgstr "Παλιός Κωδικός" + +#: src/components/ChangePassword.jsx:96 +msgid "New Password" +msgstr "Νέος Κωδικός" + +#: src/components/ChangePassword.jsx:103 +msgid "Confirm New Password" +msgstr "Επιβεβαιώστε τον καινούριο σας κωδικό" + +#: src/components/ChangeMail.jsx:59 +msgid "" +"Changed Mail successfully. We sent you a verification mail, " +"please verify your new mail address." +msgstr "" +"Το mail σας άλλαξε με επιτυχία. Σας στείλαμε ένα μήνυμα επαλήθευσης, " +"επαληθεύστε τη νέα σας διεύθυνση ηλεκτρονικού ταχυδρομείου." + +#: src/components/ChangeMail.jsx:87 +msgid "New Mail" +msgstr "Νέo Mail" + +#: src/components/DeleteAccount.jsx:66 +msgid "Yes, Delete My Account!" +msgstr "Ναι, Διαγραφή του λογαριασμού μου!" + +#: src/components/SocialSettings.jsx:35 +msgid "Block DMs" +msgstr "Αποκλεισμός DM" + +#: src/components/SocialSettings.jsx:42 +msgid "Block all Private Messages" +msgstr "Αποκλεισμός όλων των προσωπικών μηνυμάτων" + +#: src/components/SocialSettings.jsx:44 +msgid "Private" +msgstr "Ιδιωτικό" + +#: src/components/SocialSettings.jsx:51 +msgid "Don't show me in global stats" +msgstr "Μην με εμφανίζετε στα παγκόσμια στατιστικά" + +#: src/components/SocialSettings.jsx:57 +msgid "Unblock Users" +msgstr "Ξεμπλοκάρισμα χρηστών" + +#: src/components/SocialSettings.jsx:82 +msgid "You have no users blocked" +msgstr "Δεν έχετε αποκλεισμένους χρήστες" + +#: src/components/ModCanvastools.jsx:168 +msgid "Build image on canvas." +msgstr "Δημιουργία εικόνας σε καμβά." + +#: src/components/ModCanvastools.jsx:171 +msgid "Build image and set it to protected." +msgstr "Δημιουργήστε εικόνα και ρυθμίστε την σε προστατευμένη." + +#: src/components/ModCanvastools.jsx:174 +msgid "Build image, but reset cooldown to unset-pixel cd." +msgstr "Δημιουργία εικόνας, αλλά επαναφέρετε το cooldown σε cd unset-pixel." + +#: src/components/ModCanvastools.jsx:184 +msgid "Clean spare pixels that are surrounded by unset pixels" +msgstr "Καθαρίστε τα εφεδρικά pixel που περιβάλλονται από μη καθορισμένα pixel" + +#: src/components/ModCanvastools.jsx:188 +msgid "" +"Clean spare pixels that are surrounded by unset pixels and up to 1 other set " +"pixels" +msgstr "" +"Καθαρίστε τα εφεδρικά pixel που περιβάλλονται από τα μη καθορισμένα pixel " +"και έως και 1 άλλο σύνολο pixel" + +#: src/components/ModCanvastools.jsx:192 +msgid "" +"Clean spare pixels that are surrounded by a single other color or unset " +"pixels (VERY AGGRESSIVE ON CANVASES THAT ALLOW UNSET PIXELS (where there are " +"two cooldowns)!)" +msgstr "" +"Καθαρίστε τα εφεδρικά pixel που περιβάλλονται από ένα μόνο άλλο χρώμα ή μη " +"καθορισμένα pixel (ΠΟΛΥ ΕΠΙΘΕΤΙΚΟ ΣΕ ΚΑΜΒΑΔΕΣ ΠΟΥ ΕΠΙΤΡΕΠΟΥΝ ΤΑ ΑΠΑΡΑΙΤΗΜΕΝΑ " +"PIXEL (όπου υπάρχουν δύο αργές λειτουργίες)!)" + +#: src/components/ModCanvastools.jsx:203 +msgid "Status: Not running" +msgstr "Κατάσταση: Δεν εκτελείται" + +#: src/components/ModCanvastools.jsx:245 +msgid "Image Upload" +msgstr "Μεταφόρτωση εικόνας" + +#: src/components/ModCanvastools.jsx:246 +msgid "Upload images to canvas" +msgstr "Ανεβάστε εικόνες σε καμβά" + +#: src/components/ModCanvastools.jsx:248 +msgid "File" +msgstr "Αρχείο" + +#: src/components/ModCanvastools.jsx:269 +msgid "Coordinates in X_Y format:" +msgstr "Συντεταγμένες σε μορφή X_Y:" + +#: src/components/ModCanvastools.jsx:307 +msgid "Pixel Protection" +msgstr "Προστασία Pixel" + +#: src/components/ModCanvastools.jsx:309 +msgid "" +"Set protection of areas (if you need finer grained control, " +"use protect with image upload and alpha layers)" +msgstr "" +"Ορίστε την προστασία των περιοχών (εάν χρειάζεστε πιο λεπτό έλεγχο, " +"χρησιμοποιήστε προστασία με μεταφόρτωση εικόνας και επίπεδα άλφα)" + +#: src/components/ModCanvastools.jsx:330 src/components/ModCanvastools.jsx:403 +#: src/components/ModCanvastools.jsx:486 src/components/ModWatchtools.jsx:174 +msgid "Top-left corner" +msgstr "Πάνω-αριστερή γωνία" + +#: src/components/ModCanvastools.jsx:347 src/components/ModCanvastools.jsx:420 +#: src/components/ModCanvastools.jsx:503 src/components/ModWatchtools.jsx:191 +msgid "Bottom-right corner" +msgstr "Κάτω δεξιά γωνία" + +#: src/components/ModCanvastools.jsx:388 +msgid "Rollback to Date" +msgstr "Επαναφορά στην ημερομηνία" + +#: src/components/ModCanvastools.jsx:390 +msgid "Rollback an area of the canvas to a set date (00:00 UTC)" +msgstr "" +"Επαναφορά μιας περιοχής του καμβά σε μια καθορισμένη ημερομηνία (00:00 UTC)" + +#: src/components/ModCanvastools.jsx:461 +msgid "Canvas Cleaner" +msgstr "Καθαριστικό καμβά" + +#: src/components/ModCanvastools.jsx:463 +msgid "Apply a filter to clean trash in large canvas areas." +msgstr "" +"Εφαρμόστε ένα φίλτρο για να καθαρίσετε τα σκουπίδια σε μεγάλες επιφάνειες " +"καμβά." + +#: src/components/ModCanvastools.jsx:564 +msgid "Stop Cleaner" +msgstr "Stop Cleaner" + +#: src/components/ModWatchtools.jsx:48 +msgid "Interval is invalid" +msgstr "Το διάστημα δεν είναι έγκυρο" + +#: src/components/ModWatchtools.jsx:122 +msgid "Check who placed in an area" +msgstr "Ελέγξτε ποιος τοποθέτησε σε μια περιοχή" + +#: src/components/ModWatchtools.jsx:123 +msgid "Canvas" +msgstr "Κανβας" + +#: src/components/ModWatchtools.jsx:142 +msgid "Interval" +msgstr "Διάστημα" + +#: src/components/ModWatchtools.jsx:157 +msgid "IID (optional)" +msgstr "Ενέργειες IID" + +#: src/components/ModWatchtools.jsx:236 +msgid "Get Pixels" +msgstr "Pixels τοποθετήθηκαν" + +#: src/components/ModWatchtools.jsx:267 +msgid "Get Users" +msgstr "Λήψη χρηστών" + +#: src/components/ModIIDtools.jsx:20 +msgid "You must enter a duration" +msgstr "Πρέπει να εισαγάγετε μια διάρκεια" + +#: src/components/ModIIDtools.jsx:24 +msgid "You must enter an IID" +msgstr "Πρέπει να εισαγάγετε ένα αναγνωριστικό (IID)" + +#: src/components/ModIIDtools.jsx:53 +msgid "IID Actions" +msgstr "Ενέργειες IID" + +#: src/components/ModIIDtools.jsx:80 +msgid "Enter Reason" +msgstr "Εισαγάγετε τον λόγο" + +#: src/components/ModIIDtools.jsx:97 +msgid "(0 = infinite)" +msgstr "(0 = άπειρο)" + +#: src/components/Admintools.jsx:109 +msgid "IP Actions" +msgstr "Ενέργειες IP" + +#: src/components/Admintools.jsx:111 +msgid "Do stuff with IPs (one IP per line)" +msgstr "Κάντε πράγματα με IP (μία IP ανά γραμμή)" + +#: src/components/Admintools.jsx:158 +msgid "Manage Moderators" +msgstr "Διαχείριση συντονιστών" + +#: src/components/Admintools.jsx:160 +msgid "Remove Moderator" +msgstr "Κατάργηση Επόπτη" + +#: src/components/Admintools.jsx:193 +msgid "There are no mods" +msgstr "Δεν υπάρχουν mods" + +#: src/components/Admintools.jsx:198 +msgid "Assign new Mod" +msgstr "Εκχώρηση νέου Mod" + +#: src/components/Admintools.jsx:201 +msgid "Enter UserName of new Mod" +msgstr "Εισαγάγετε Όνομα χρήστη του νέου Mod" + +#: src/components/Admintools.jsx:210 +msgid "User Name" +msgstr "Ονομα χρήστη" + +#: src/components/contextmenus/ChannelContextMenu.jsx:46 +msgid "Mute" +msgstr "Σίγαση" + +#: src/components/contextmenus/UserContextMenu.jsx:49 +msgid "Ping" +msgstr "Ανέφερε τον χρήστη (ping)" + +#: src/components/contextmenus/UserContextMenu.jsx:75 +msgid "DM" +msgstr "Προσωπικά Μηνύματα (DM)" + +#: src/components/contextmenus/UserContextMenu.jsx:86 +msgid "Block" +msgstr "Μπλοκάρισμα" + +#: src/components/windows/Help.jsx:15 src/components/windows/Settings.jsx:87 +msgctxt "keybinds" +msgid "G" +msgstr "" + +#: src/components/windows/Help.jsx:16 src/components/windows/Settings.jsx:95 +msgctxt "keybinds" +msgid "X" +msgstr "x εκτός ορίων" + +#: src/components/windows/Settings.jsx:103 +msgctxt "keybinds" +msgid "M" +msgstr "" + +#: src/components/windows/Help.jsx:17 src/components/windows/Settings.jsx:158 +msgctxt "keybinds" +msgid "H" +msgstr "" + +#: src/components/windows/Help.jsx:18 +msgctxt "keybinds" +msgid "R" +msgstr "" + +#: src/components/windows/Help.jsx:19 +msgctxt "keybinds" +msgid "Q" +msgstr "" + +#: src/components/windows/Help.jsx:20 +msgctxt "keybinds" +msgid "E" +msgstr "" + +#: src/components/windows/Help.jsx:21 +msgctxt "keybinds" +msgid "W" +msgstr "" + +#: src/components/windows/Help.jsx:22 +msgctxt "keybinds" +msgid "A" +msgstr "" + +#: src/components/windows/Help.jsx:23 +msgctxt "keybinds" +msgid "S" +msgstr "" + +#: src/components/windows/Help.jsx:24 +msgctxt "keybinds" +msgid "D" +msgstr "" + +#: src/components/windows/Help.jsx:31 +msgctxt "keybinds" +msgid "Shift" +msgstr "" + +#: src/components/windows/Help.jsx:32 +msgctxt "keybinds" +msgid "C" +msgstr "" diff --git a/i18n/ru.po b/i18n/ru.po index 0439a59f..a7b1fb6f 100644 --- a/i18n/ru.po +++ b/i18n/ru.po @@ -11,7 +11,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.3.1\n" #: src/controls/keypress.js:41 #, javascript-format @@ -664,7 +664,7 @@ msgstr "Статистика" #: src/components/windows/UserArea.jsx:64 msgid "Converter" -msgstr "Преобразователь" +msgstr "Пикселизатор" #: src/components/windows/UserArea.jsx:70 msgid "Modtools" diff --git a/i18n/ssr-cz.po b/i18n/ssr-cz.po new file mode 100644 index 00000000..5271cd75 --- /dev/null +++ b/i18n/ssr-cz.po @@ -0,0 +1,466 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n>=2 && n<=4 ? 1 : 2);\n" +"X-Generator: Poedit 3.3.2\n" + +#: src/core/ChatProvider.js:434 +msgid "You can not send chat messages with proxy" +msgstr "Nemůžeš posílat zprávy s proxy" + +#: src/core/ChatProvider.js:436 +msgid "Your country is temporary muted from this chat channel" +msgstr "Tvůj stát je prozatím mutelej z tohodle chat kanálů" + +#: src/core/ChatProvider.js:439 +msgid "You are permanently muted, join our guilded to apppeal the mute" +msgstr "" +"Jseš permanentně mutelej, připoj se na náš guilded aby sis mohl appealnout " +"mute" + +#: src/core/ChatProvider.js:441 +msgid "You are banned" +msgstr "Jsi zabanován" + +#: src/core/ChatProvider.js:443 +msgid "Your Internet Provider is banned" +msgstr "Tvůj poskytovatel internetu je zabanován" + +#: src/core/ChatProvider.js:448 +#, javascript-format +msgid "You are muted for another ${ timeMin } minutes" +msgstr "Jseš mutelej na dalších ${ timeMin } minut" + +#: src/core/ChatProvider.js:450 +msgid "You are muted for another ${ ttl } seconds" +msgstr "Jseš mutelej na dalších ${ ttl } sekund" + +#: src/core/ChatProvider.js:467 +#, javascript-format +msgid "You are sending messages too fast, you have to wait ${ waitTime }s :(" +msgstr "Posíláš zprávy příliš rychlo, musíš počkat ${ waitTime }s :(" + +#: src/core/ChatProvider.js:471 +msgid "You don't have access to this channel" +msgstr "Nemáš přístup na tenhle kanál" + +#: src/core/ChatProvider.js:488 +msgid "Your mail has to be verified in order to chat" +msgstr "Tvůj email musí bejt ověřen aby ses mohl bavit" + +#: src/core/ChatProvider.js:498 +msgid "You can't send a message this long :(" +msgstr "Nemůžeš posílat zprávy takhle dlouhý :(" + +#: src/core/ChatProvider.js:502 +msgid "Please use int channel" +msgstr "Prosím použíj int kanál" + +#: src/core/ChatProvider.js:510 +msgid "Stop flooding." +msgstr "Přestaň spamovat." + +#: src/routes/reset_password.js:39 +msgid "You sent an empty password or invalid data :(" +msgstr "Si poslal prázdné heslo nebo chybný data :(" + +#: src/routes/reset_password.js:51 +msgid "This password-reset link isn't valid anymore :(" +msgstr "Tohle heslo-resetující odkaz už je neplatný :(" + +#: src/routes/reset_password.js:62 +msgid "Your passwords do not match :(" +msgstr "Tvoje hesla nejsou stejná :(" + +#: src/routes/reset_password.js:77 +msgid "User doesn't exist in our database :(" +msgstr "Uživatelské jméno neexistuje v naší database :(" + +#: src/routes/reset_password.js:89 +msgid "Passowrd successfully changed." +msgstr "Heslo úspěšně změněno." + +#: src/routes/reset_password.js:108 +msgid "Invalid url :( Please check your mail again." +msgstr "Neplatný URL :( Prosím zkontroluj svůj mail zase." + +#: src/ssr/Globe.jsx:32 +msgid "PixelPlanet.Fun 3DGlobe" +msgstr "PixelPlanet.Fun 3DGlobe" + +#: src/ssr/Globe.jsx:33 +msgid "A 3D globe of our whole map" +msgstr "3D mapa naší celej mapy" + +#: src/ssr/Globe.jsx:46 +msgid "Double click on globe to go back." +msgstr "Dvakrát klikní na globus aby si šel zpátky" + +#: src/ssr/Globe.jsx:47 +msgid "Loading..." +msgstr "Načítaní..." + +#: src/ssr/PopUp.jsx:58 +msgid "ppfun" +msgstr "ppfun" + +#: src/ssr/PopUp.jsx:59 +msgid "PixelPlanet.Fun PopUp" +msgstr "PixelPlanet.Fun PopUp" + +#: src/ssr/Main.jsx:67 +msgid "PixelPlanet.Fun" +msgstr "PixelPlanet.Fun" + +#: src/ssr/Main.jsx:68 +msgid "Place color pixels on an map styled canvas with other players online" +msgstr "" +"Polož barevné pixely na mapově stylované plátno s ostatníma online hráčema" + +#: src/utils/validation.js:17 +msgid "Email can't be empty." +msgstr "Email nemůže bejt prázdnej" + +#: src/utils/validation.js:18 +msgid "Email should be at least 5 characters long." +msgstr "Email musí obsahovat 5 znaků." + +#: src/utils/validation.js:19 +msgid "Email can't be longer than 40 characters." +msgstr "Email nemůže být delší jak 40 znaků" + +#: src/utils/validation.js:20 +msgid "Email should at least contain a dot" +msgstr "Email musí obsahovat tečku" + +#: src/utils/validation.js:22 +msgid "Email should contain a @" +msgstr "Email musí obsahovat @" + +#: src/utils/validation.js:29 +msgid "Name can't be empty." +msgstr "Jméno nemůže být prázdný" + +#: src/utils/validation.js:30 +msgid "Name must be at least 2 characters long" +msgstr "Jméno musí mít aspoň 2 znaky." + +#: src/utils/validation.js:31 +msgid "Name must be shorter than 26 characters" +msgstr "Jméno musí být kratší jak 26 znaků" + +#: src/utils/validation.js:38 +msgid "Name contains invalid character like @, /, \\ or #" +msgstr "Jméno obsahuje chybné znaky jako @, /, \\ or #" + +#: src/utils/validation.js:53 +msgid "No password given." +msgstr "Nebylo zadané heslo" + +#: src/utils/validation.js:56 +msgid "Password must be at least 6 characters long." +msgstr "Heslo musí obsahovat aspoň 6 znaků." + +#: src/utils/validation.js:59 +msgid "Password must be shorter than 60 characters." +msgstr "Heslo musí být kratší jak 60 znaků." + +#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40 +msgid "PixelPlanet.fun Password Reset" +msgstr "PixelPlanet.fun Heslo reset" + +#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41 +msgid "Reset your password here" +msgstr "Resetuj si heslo tu" + +#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28 +#: src/ssr/PasswordReset.jsx:49 +msgid "Reset Password" +msgstr "Resetovat Heslo" + +#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12 +msgid "Click here" +msgstr "Klikni tu" + +#: src/ssr/PasswordReset.jsx:30 +msgid "to go back to pixelplanet" +msgstr "aby si šel zpátky na pixelplanet" + +#: src/ssr/PasswordReset.jsx:50 +#, javascript-format +msgid "Hello ${ name }, you can set your new password here:" +msgstr "Ahoj ${ name }, můžeš si nastavit svoje nové heslo tady:" + +#: src/ssr/PasswordReset.jsx:54 +msgid "New Password" +msgstr "Nový heslo" + +#: src/ssr/PasswordReset.jsx:60 +msgid "Confirm New Password" +msgstr "Potvrdit Nový Heslo" + +#: src/ssr/PasswordReset.jsx:65 +msgid "Submit" +msgstr "Potvrdit" + +#: src/routes/api/modtools.js:53 +msgid "You are not logged in" +msgstr "Nejsi přihlášenej" + +#: src/routes/api/modtools.js:65 +msgid "You are not allowed to access this page" +msgstr "Nejste povolen na tuhle stránků" + +#: src/routes/api/modtools.js:207 +msgid "Just admins can do that" +msgstr "Pouze admini to můžou dělat" + +#: src/routes/api/baninfo.js:32 +msgid "You are not banned" +msgstr "Nejste zabanován" + +#: src/routes/api/auth/logout.js:11 +msgid "You are not even logged in." +msgstr "Nejste ani přihlášen" + +#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20 +msgid "Server error when logging out." +msgstr "Serverová chyba při odhlašování" + +#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35 +msgid "Mail verification" +msgstr "Ověřování mailu" + +#: src/routes/api/auth/verify.js:27 +msgid "You are now verified :)" +msgstr "Od teď jste ověřen" + +#: src/routes/api/auth/verify.js:35 +msgid "" +"Your mail verification code is invalid or already expired :(, please request " +"a new one." +msgstr "" +"Váš mailovej ověřující kód je již neplatný :(, prosím poproste o novej." + +#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24 +msgid "This email provider is not allowed" +msgstr "Tenhle email dodavatel tu není povolen" + +#: src/routes/api/auth/register.js:31 +msgid "No Captcha given" +msgstr "Žádná captcha zadaná" + +#: src/routes/api/auth/register.js:34 +msgid "E-Mail already in use." +msgstr "E-mail je už používán" + +#: src/routes/api/auth/register.js:36 +msgid "Username already in use." +msgstr "Jméno je už používáno" + +#: src/routes/api/auth/register.js:59 +msgid "You took too long, try again." +msgstr "Trvalo vám to až moc dlouho, zkuste znovu." + +#: src/routes/api/auth/register.js:62 +msgid "You failed your captcha" +msgstr "Nepodařila se vám vaše captcha" + +#: src/routes/api/auth/register.js:65 +msgid "Unknown Captcha Error" +msgstr "Neznáma chyba captcha" + +#: src/routes/api/auth/register.js:89 +msgid "Failed to create new user :(" +msgstr "Nepodařilo se udělat nového uživatele :(" + +#: src/routes/api/auth/register.js:105 +msgid "Failed to establish session after register :(" +msgstr "Nepodařilo se vytvořit schůzi hned po registraci :(" + +#: src/routes/api/auth/change_mail.js:43 +#: src/routes/api/auth/change_passwd.js:34 +#: src/routes/api/auth/delete_account.js:35 +msgid "You are not authenticated." +msgstr "Nejste ověřený" + +#: src/routes/api/auth/change_mail.js:52 +#: src/routes/api/auth/change_passwd.js:43 +#: src/routes/api/auth/delete_account.js:45 +msgid "Incorrect password!" +msgstr "Nesprávné heslo!" + +#: src/ssr/RedirectionPage.jsx:19 +msgid "PixelPlanet.fun Accounts" +msgstr "PixelPlanet.fun účty" + +#: src/ssr/RedirectionPage.jsx:29 +msgid "You will be automatically redirected after 15s" +msgstr "Budete automaticky přesměrováný po 15s" + +#: src/ssr/RedirectionPage.jsx:30 +#, javascript-format +msgid "Or ${ clickHere } to go back to pixelplanet" +msgstr "Nebo ${ clickHere } aby ses dostal zpátky na pixelplanet" + +#: src/canvasesDesc.js:19 +msgid "Earth" +msgstr "Zem" + +#: src/canvasesDesc.js:20 +msgid "Moon" +msgstr "Měsíc" + +#: src/canvasesDesc.js:21 +msgid "3D Canvas" +msgstr "3D Plátno" + +#: src/canvasesDesc.js:22 +msgid "Coronavirus" +msgstr "Coronavirus" + +#: src/canvasesDesc.js:23 +msgid "PixelZone" +msgstr "Pixelzone" + +#: src/canvasesDesc.js:24 +msgid "PixelCanvas" +msgstr "PixelCanvas" + +#: src/canvasesDesc.js:25 +msgid "1bit" +msgstr "1bit" + +#: src/canvasesDesc.js:26 +msgid "Top10" +msgstr "Top10" + +#: src/canvasesDesc.js:29 +msgid "Our main canvas, a huge map of the world. Place everywhere you like" +msgstr "Naše hlavní plátno, velká mapa země. Pokládejte kde chcete" + +#: src/canvasesDesc.js:30 +msgid "" +"Moon canvas. Safe space for art. No flags or large text (unless part of art) " +"or art larger than 1.5k x 1.5k pixels." +msgstr "" +"Plátno měsíce. Bezpečný místo pro obrazy. Žádné vlajky nebo velký texty " +"(pouze jestli to není část obrazu) nebo obrazy větší jak 1,5k x 1,5k pixelu." + +#: src/canvasesDesc.js:31 +msgid "Place Voxels on a 3D canvas with others" +msgstr "Polož Voxely na 3D plátno s ostatníma" + +#: src/canvasesDesc.js:32 +msgid "Special canvas to spread awareness of SARS-CoV2" +msgstr "Speciální plátno pro zvýšení pozornosti o SARS-CoV2" + +#: src/canvasesDesc.js:33 +msgid "Mirror of PixelZone" +msgstr "Zrcadlo PixelZone" + +#: src/canvasesDesc.js:34 +msgid "Mirror of PixelCanvas" +msgstr "Zrcadlo PixelCanvasu" + +#: src/canvasesDesc.js:35 +msgid "Black and White canvas" +msgstr "Černo-Bíle plátno" + +#: src/canvasesDesc.js:36 +msgid "" +"A canvas for the most active players from the the previous day. Daily " +"ranking updates at 00:00 UTC." +msgstr "" +"Plátno pro nejvíc aktivní hráče ze včerejška. Denní hodnocení se aktualizuje " +"v 00:00 UTC." + +#: src/core/MailProvider.js:66 +#, javascript-format +msgid "Welcome ${ name } to PixelPlanet, plese verify your mail" +msgstr "Vítej ${ name } na PixelPlanet, prosím ověř svůj mail" + +#: src/core/MailProvider.js:67 +msgid "Hello ${ name }" +msgstr "Ahoj ${ name }" + +#: src/core/MailProvider.js:68 +msgid "" +"welcome to our little community of pixelplacers, to use your account, you " +"have to verify your mail. You can do that here: " +msgstr "" +"vítej na naší malou komunitu pixelplacerů, pro použití tvého účtu, musíš si " +"ověřit mail. Můžeš to udělat zde:" + +#: src/core/MailProvider.js:68 +msgid "Click to Verify" +msgstr "Klikni pro ověření" + +#: src/core/MailProvider.js:68 src/core/MailProvider.js:105 +msgid "Or by copying following url:" +msgstr "Nebo zkopírůj tohle URL:" + +#: src/core/MailProvider.js:69 +msgid "" +"Have fun and don't hesitate to contact us if you encouter any problems :)" +msgstr "Měj zábavů a neboj se nás kontaktovat jestli najdeš nějaký problémy :)" + +#: src/core/MailProvider.js:70 src/core/MailProvider.js:107 +msgid "Thanks" +msgstr "Dík" + +#: src/core/MailProvider.js:87 +#, javascript-format +msgid "" +"We already sent you a verification mail, you can request another one in " +"${ minLeft } minutes." +msgstr "" +"Už jsme vám poslali ověřující email, můžeš poprosit o novej za ${ minLeft } " +"minut" + +#: src/core/MailProvider.js:103 +msgid "You forgot your password for PixelPlanet? Get a new one here" +msgstr "Zapomenul sis heslo na PixelPlanet? Získej nový tady" + +#: src/core/MailProvider.js:104 +msgid "Hello" +msgstr "Ahoj" + +#: src/core/MailProvider.js:105 +msgid "" +"You requested to get a new password. You can change your password within the " +"next 30min here: " +msgstr "Požádal si o nový heslo. Můžeš si změnit heslo v rámci 30 minut tady:" + +#: src/core/MailProvider.js:106 +#, javascript-format +msgid "" +"If you did not request this mail, please just ignore it (the ip that " +"requested this mail was ${ ip })." +msgstr "" +"Jestli si o tenhle email nepožadoval, prosím to ignoruj (ip které o tenhle " +"mail požadoval je ${ ip })." + +#: src/core/MailProvider.js:114 +msgid "Mail is not configured on the server" +msgstr "Mail není konfigurován na servru" + +#: src/core/MailProvider.js:122 +msgid "" +"We already sent you a mail with instructions. Please wait before requesting " +"another mail." +msgstr "" +"Už jsme vám poslali mail s instrukcemi. Prosím počkej než budete požádat o " +"další mail." + +#: src/core/MailProvider.js:130 +msgid "Couldn't find this mail in our database" +msgstr "Nemohli jsme najít tenhle mail v naší database" diff --git a/i18n/ssr-gr.po b/i18n/ssr-gr.po new file mode 100644 index 00000000..04eed1bb --- /dev/null +++ b/i18n/ssr-gr.po @@ -0,0 +1,479 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: el_GR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.3.2\n" + +#: src/core/ChatProvider.js:434 +msgid "You can not send chat messages with proxy" +msgstr "Δεν μπορείτε να στείλετε μηνύματα συνομιλίας με proxy" + +#: src/core/ChatProvider.js:436 +msgid "Your country is temporary muted from this chat channel" +msgstr "" +"Η χώρα σας έχει τεθεί προσωρινά σε σίγαση από αυτό το κανάλι συνομιλίας" + +#: src/core/ChatProvider.js:439 +msgid "You are permanently muted, join our guilded to apppeal the mute" +msgstr "" +"Βρίσκεστε σε μόνιμη σίγαση, εγγραφείτε στο guilded μας για να υποβάλετε " +"έκκληση για τη σίγαση" + +#: src/core/ChatProvider.js:441 +msgid "You are banned" +msgstr "Είστε απαγορευμένοι" + +#: src/core/ChatProvider.js:443 +msgid "Your Internet Provider is banned" +msgstr "Ο πάροχος Διαδικτύου σας έχει απαγορευτεί" + +#: src/core/ChatProvider.js:448 +#, javascript-format +msgid "You are muted for another ${ timeMin } minutes" +msgstr "Έχετε τεθεί σε σίγαση για άλλα ${ timeMin } λεπτά" + +#: src/core/ChatProvider.js:450 +msgid "You are muted for another ${ ttl } seconds" +msgstr "Βρίσκεστε σε σίγαση για άλλα ${ ttl } δευτερόλεπτα" + +#: src/core/ChatProvider.js:467 +#, javascript-format +msgid "You are sending messages too fast, you have to wait ${ waitTime }s :(" +msgstr "Στέλνετε μηνύματα πολύ γρήγορα, πρέπει να περιμένετε ${ waitTime }s :(" + +#: src/core/ChatProvider.js:471 +msgid "You don't have access to this channel" +msgstr "Δεν έχετε πρόσβαση σε αυτό το κανάλι" + +#: src/core/ChatProvider.js:488 +msgid "Your mail has to be verified in order to chat" +msgstr "Το mail σας πρέπει να επαληθευτεί για να συνομιλήσετε" + +#: src/core/ChatProvider.js:498 +msgid "You can't send a message this long :(" +msgstr "Δεν μπορείς να στείλεις τόσο μεγάλο μήνυμα :(" + +#: src/core/ChatProvider.js:502 +msgid "Please use int channel" +msgstr "Χρησιμοποιήστε το κανάλι int" + +#: src/core/ChatProvider.js:510 +msgid "Stop flooding." +msgstr "Σταματήστε το σπαμ." + +#: src/routes/reset_password.js:39 +msgid "You sent an empty password or invalid data :(" +msgstr "Στείλατε έναν κενό κωδικό πρόσβασης ή μη έγκυρα δεδομένα :(" + +#: src/routes/reset_password.js:51 +msgid "This password-reset link isn't valid anymore :(" +msgstr "" +"Αυτός ο σύνδεσμος επαναφοράς κωδικού πρόσβασης δεν είναι πλέον έγκυρος :(" + +#: src/routes/reset_password.js:62 +msgid "Your passwords do not match :(" +msgstr "Οι κωδικοί πρόσβασης δεν ταιριάζουν" + +#: src/routes/reset_password.js:77 +msgid "User doesn't exist in our database :(" +msgstr "Ο χρήστης δεν υπάρχει στη βάση δεδομένων μας :(" + +#: src/routes/reset_password.js:89 +msgid "Passowrd successfully changed." +msgstr "Ο κωδικός πρόσβασης άλλαξε με επιτυχία." + +#: src/routes/reset_password.js:108 +msgid "Invalid url :( Please check your mail again." +msgstr "Μη έγκυρη διεύθυνση url :( Ελέγξτε ξανά το mail σας." + +#: src/ssr/Globe.jsx:32 +msgid "PixelPlanet.Fun 3DGlobe" +msgstr "PixelPlanet.Fun 3DGlobe" + +#: src/ssr/Globe.jsx:33 +msgid "A 3D globe of our whole map" +msgstr "Μια τρισδιάστατη σφαίρα ολόκληρου του χάρτη μας" + +#: src/ssr/Globe.jsx:46 +msgid "Double click on globe to go back." +msgstr "Κάντε διπλό κλικ στο globe για να επιστρέψετε." + +#: src/ssr/Globe.jsx:47 +msgid "Loading..." +msgstr "Φόρτωση.." + +#: src/ssr/PopUp.jsx:58 +msgid "ppfun" +msgstr "ppfun" + +#: src/ssr/PopUp.jsx:59 +msgid "PixelPlanet.Fun PopUp" +msgstr "PixelPlanet.Fun PopUp" + +#: src/ssr/Main.jsx:67 +msgid "PixelPlanet.Fun" +msgstr "PixelPlanet.Fun" + +#: src/ssr/Main.jsx:68 +msgid "Place color pixels on an map styled canvas with other players online" +msgstr "" +"Τοποθετήστε έγχρωμα pixel σε έναν μεγάλο καμβά με άλλους παίκτες στο " +"διαδίκτυο" + +#: src/utils/validation.js:17 +msgid "Email can't be empty." +msgstr "Το email δεν μπορεί να είναι κενό." + +#: src/utils/validation.js:18 +msgid "Email should be at least 5 characters long." +msgstr "Το email πρέπει να αποτελείται από τουλάχιστον 5 χαρακτήρες." + +#: src/utils/validation.js:19 +msgid "Email can't be longer than 40 characters." +msgstr "Το email δεν μπορεί να είναι μεγαλύτερο από 40 χαρακτήρες." + +#: src/utils/validation.js:20 +msgid "Email should at least contain a dot" +msgstr "Το email πρέπει να περιέχει τουλάχιστον μια τελεία" + +#: src/utils/validation.js:22 +msgid "Email should contain a @" +msgstr "Το email πρέπει να περιέχει ένα @" + +#: src/utils/validation.js:29 +msgid "Name can't be empty." +msgstr "Το όνομα δεν μπορεί να είναι κενό." + +#: src/utils/validation.js:30 +msgid "Name must be at least 2 characters long" +msgstr "Το όνομα πρέπει να αποτελείται από τουλάχιστον 2 χαρακτήρες" + +#: src/utils/validation.js:31 +msgid "Name must be shorter than 26 characters" +msgstr "Το όνομα πρέπει να είναι μικρότερο από 26 χαρακτήρες" + +#: src/utils/validation.js:38 +msgid "Name contains invalid character like @, /, \\ or #" +msgstr "Το όνομα περιέχει μη έγκυρο χαρακτήρα όπως @, /, \\ ή #" + +#: src/utils/validation.js:53 +msgid "No password given." +msgstr "Δεν δόθηκε κωδικός πρόσβασης." + +#: src/utils/validation.js:56 +msgid "Password must be at least 6 characters long." +msgstr "Ο κωδικός θα πρέπει να είναι τουλάχιστον 6 χαρακτήρες." + +#: src/utils/validation.js:59 +msgid "Password must be shorter than 60 characters." +msgstr "Ο κωδικός πρόσβασης πρέπει να είναι μικρότερος από 60 χαρακτήρες." + +#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40 +msgid "PixelPlanet.fun Password Reset" +msgstr "PixelPlanet.fun Επαναφορά κωδικού πρόσβασης" + +#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41 +msgid "Reset your password here" +msgstr "Επαναφέρετε τον κωδικό πρόσβασής σας εδώ" + +#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28 +#: src/ssr/PasswordReset.jsx:49 +msgid "Reset Password" +msgstr "Επαναφέρετε τον κωδικό πρόσβασης" + +#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12 +msgid "Click here" +msgstr "Κάντε κλικ εδώ" + +#: src/ssr/PasswordReset.jsx:30 +msgid "to go back to pixelplanet" +msgstr "για να επιστρέψετε στο pixelplanet" + +#: src/ssr/PasswordReset.jsx:50 +#, javascript-format +msgid "Hello ${ name }, you can set your new password here:" +msgstr "" +"Γεια σας ${ name }, μπορείτε να ορίσετε τον νέο σας κωδικό πρόσβασης εδώ:" + +#: src/ssr/PasswordReset.jsx:54 +msgid "New Password" +msgstr "Νέος Κωδικός" + +#: src/ssr/PasswordReset.jsx:60 +msgid "Confirm New Password" +msgstr "Επιβεβαιώστε τον καινούριο σας κωδικό" + +#: src/ssr/PasswordReset.jsx:65 +msgid "Submit" +msgstr "Yπέβαλλε" + +#: src/routes/api/modtools.js:53 +msgid "You are not logged in" +msgstr "Δεν είσται συνδεμένοι" + +#: src/routes/api/modtools.js:65 +msgid "You are not allowed to access this page" +msgstr "Δεν επιτρέπεται η πρόσβαση σε αυτή τη σελίδα" + +#: src/routes/api/modtools.js:207 +msgid "Just admins can do that" +msgstr "Μόνο οι διαχειριστές μπορούν να το κάνουν αυτό" + +#: src/routes/api/baninfo.js:32 +msgid "You are not banned" +msgstr "Δεν είσαι απαγορευμένος" + +#: src/routes/api/auth/logout.js:11 +msgid "You are not even logged in." +msgstr "Δεν είστε καν συνδεδεμένος." + +#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20 +msgid "Server error when logging out." +msgstr "Σφάλμα διακομιστή κατά την αποσύνδεση." + +#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35 +msgid "Mail verification" +msgstr "Επαλήθευση mail" + +#: src/routes/api/auth/verify.js:27 +msgid "You are now verified :)" +msgstr "Είσαι πλέον επαληθευμένος :)" + +#: src/routes/api/auth/verify.js:35 +msgid "" +"Your mail verification code is invalid or already expired :(, please request " +"a new one." +msgstr "" +"Ο κωδικός επαλήθευσης της αλληλογραφίας σας δεν είναι έγκυρος ή έχει ήδη " +"λήξει :(, ζητήστε νέο." + +#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24 +msgid "This email provider is not allowed" +msgstr "Αυτός ο πάροχος email δεν επιτρέπεται" + +#: src/routes/api/auth/register.js:31 +msgid "No Captcha given" +msgstr "Δεν δόθηκε αναγνωριστικό captcha" + +#: src/routes/api/auth/register.js:34 +msgid "E-Mail already in use." +msgstr "Email είναι ήδη σε χρήση." + +#: src/routes/api/auth/register.js:36 +msgid "Username already in use." +msgstr "Το όνομα χρήστη χρησιμοποιείται ήδη." + +#: src/routes/api/auth/register.js:59 +msgid "You took too long, try again." +msgstr "Χρειάστηκε πολύς χρόνος, δοκιμάστε ξανά." + +#: src/routes/api/auth/register.js:62 +msgid "You failed your captcha" +msgstr "Απέτυχες το captcha σου" + +#: src/routes/api/auth/register.js:65 +msgid "Unknown Captcha Error" +msgstr "Άγνωστο σφάλμα Captcha" + +#: src/routes/api/auth/register.js:89 +msgid "Failed to create new user :(" +msgstr "Αποτυχία δημιουργίας νέου χρήστη :(" + +#: src/routes/api/auth/register.js:105 +msgid "Failed to establish session after register :(" +msgstr "Απέτυχε η δημιουργία συνεδρίας μετά την εγγραφή :(" + +#: src/routes/api/auth/change_mail.js:43 +#: src/routes/api/auth/change_passwd.js:34 +#: src/routes/api/auth/delete_account.js:35 +msgid "You are not authenticated." +msgstr "Δεν έχετε πιστοποιηθεί." + +#: src/routes/api/auth/change_mail.js:52 +#: src/routes/api/auth/change_passwd.js:43 +#: src/routes/api/auth/delete_account.js:45 +msgid "Incorrect password!" +msgstr "Λάθος κωδικός!" + +#: src/ssr/RedirectionPage.jsx:19 +msgid "PixelPlanet.fun Accounts" +msgstr "Λογαριασμοί PixelPlanet.fun" + +#: src/ssr/RedirectionPage.jsx:29 +msgid "You will be automatically redirected after 15s" +msgstr "Θα ανακατευθυνθείτε αυτόματα μετά από 15 δευτερόλεπτα" + +#: src/ssr/RedirectionPage.jsx:30 +#, javascript-format +msgid "Or ${ clickHere } to go back to pixelplanet" +msgstr "Ή ${ clickHere } για να επιστρέψετε στο pixelplanet" + +#: src/canvasesDesc.js:19 +msgid "Earth" +msgstr "Gh" + +#: src/canvasesDesc.js:20 +msgid "Moon" +msgstr "Φεγγάρι" + +#: src/canvasesDesc.js:21 +msgid "3D Canvas" +msgstr "3D Canvas" + +#: src/canvasesDesc.js:22 +msgid "Coronavirus" +msgstr "Coronavirus" + +#: src/canvasesDesc.js:23 +msgid "PixelZone" +msgstr "PixelZone" + +#: src/canvasesDesc.js:24 +msgid "PixelCanvas" +msgstr "PixelCanvas" + +#: src/canvasesDesc.js:25 +msgid "1bit" +msgstr "1bit" + +#: src/canvasesDesc.js:26 +msgid "Top10" +msgstr "Top 10" + +#: src/canvasesDesc.js:29 +msgid "Our main canvas, a huge map of the world. Place everywhere you like" +msgstr "" +"Ο κύριος καμβάς μας, ένας τεράστιος χάρτης του κόσμου. Τοποθετήστε όπου " +"θέλετε" + +#: src/canvasesDesc.js:30 +msgid "" +"Moon canvas. Safe space for art. No flags or large text (unless part of art) " +"or art larger than 1.5k x 1.5k pixels." +msgstr "" +"Καμβάς φεγγαριού. Ασφαλής χώρος για τέχνη. Χωρίς σημαίες ή μεγάλο κείμενο " +"(εκτός αν είναι μέρος της τέχνης) ή τέχνη μεγαλύτερη από 1,5k x 1,5k pixel." + +#: src/canvasesDesc.js:31 +msgid "Place Voxels on a 3D canvas with others" +msgstr "Τοποθετήστε Voxel σε έναν τρισδιάστατο καμβά μαζί με άλλους" + +#: src/canvasesDesc.js:32 +msgid "Special canvas to spread awareness of SARS-CoV2" +msgstr "Ειδικός καμβάς για τη διάδοση της ευαισθητοποίησης του SARS-CoV2" + +#: src/canvasesDesc.js:33 +msgid "Mirror of PixelZone" +msgstr "Καθρέφτης του PixelZone" + +#: src/canvasesDesc.js:34 +msgid "Mirror of PixelCanvas" +msgstr "Καθρέφτης του PixelCanvas" + +#: src/canvasesDesc.js:35 +msgid "Black and White canvas" +msgstr "Ασπρόμαυρος καμβάς" + +#: src/canvasesDesc.js:36 +msgid "" +"A canvas for the most active players from the the previous day. Daily " +"ranking updates at 00:00 UTC." +msgstr "" +"Ένας καμβάς για τους πιο δραστήριους παίκτες από την προηγούμενη μέρα. " +"Καθημερινές ενημερώσεις κατάταξης στις 00:00 UTC." + +#: src/core/MailProvider.js:66 +#, javascript-format +msgid "Welcome ${ name } to PixelPlanet, plese verify your mail" +msgstr "Καλώς ορίσατε το ${ name } στο PixelPlanet, επαληθεύστε τo mail σας" + +#: src/core/MailProvider.js:67 +msgid "Hello ${ name }" +msgstr "Γεια σας ${ name }" + +#: src/core/MailProvider.js:68 +msgid "" +"welcome to our little community of pixelplacers, to use your account, you " +"have to verify your mail. You can do that here: " +msgstr "" +"καλώς ήρθατε στη μικρή μας κοινότητα των pixelplacers, για να " +"χρησιμοποιήσετε τον λογαριασμό σας, πρέπει να επαληθεύσετε την αλληλογραφία " +"σας. Μπορείτε να το κάνετε εδώ: " + +#: src/core/MailProvider.js:68 +msgid "Click to Verify" +msgstr "Κάντε κλικ για επαλήθευση" + +#: src/core/MailProvider.js:68 src/core/MailProvider.js:105 +msgid "Or by copying following url:" +msgstr "Ή αντιγράφοντας την παρακάτω διεύθυνση url:" + +#: src/core/MailProvider.js:69 +msgid "" +"Have fun and don't hesitate to contact us if you encouter any problems :)" +msgstr "" +"Διασκεδάστε και μη διστάσετε να επικοινωνήσετε μαζί μας αν αντιμετωπίσετε " +"οποιοδήποτε πρόβλημα :)" + +#: src/core/MailProvider.js:70 src/core/MailProvider.js:107 +msgid "Thanks" +msgstr "Ευχαριστούμε" + +#: src/core/MailProvider.js:87 +#, javascript-format +msgid "" +"We already sent you a verification mail, you can request another one in " +"${ minLeft } minutes." +msgstr "" +"Σας έχουμε ήδη στείλει ένα μήνυμα επαλήθευσης, μπορείτε να ζητήσετε ένα άλλο " +"σε ${ minLeft } λεπτά." + +#: src/core/MailProvider.js:103 +msgid "You forgot your password for PixelPlanet? Get a new one here" +msgstr "" +"Ξεχάσατε τον κωδικό πρόσβασής σας για το PixelPlanet; Αποκτήστε ένα νέο εδώ" + +#: src/core/MailProvider.js:104 +msgid "Hello" +msgstr "Γεια" + +#: src/core/MailProvider.js:105 +msgid "" +"You requested to get a new password. You can change your password within the " +"next 30min here: " +msgstr "" +"Ζητήσατε να λάβετε νέο κωδικό πρόσβασης. Μπορείτε να αλλάξετε τον κωδικό " +"πρόσβασής σας μέσα στα επόμενα 30 λεπτά εδώ: " + +#: src/core/MailProvider.js:106 +#, javascript-format +msgid "" +"If you did not request this mail, please just ignore it (the ip that " +"requested this mail was ${ ip })." +msgstr "" +"Εάν δεν ζητήσατε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου, απλώς αγνοήστε το " +"(η διεύθυνση IP που ζήτησε αυτό το μήνυμα ήταν ${ ip })." + +#: src/core/MailProvider.js:114 +msgid "Mail is not configured on the server" +msgstr "Το mail δεν έχει ρυθμιστεί στον διακομιστή" + +#: src/core/MailProvider.js:122 +msgid "" +"We already sent you a mail with instructions. Please wait before requesting " +"another mail." +msgstr "" +"Σας έχουμε ήδη στείλει ένα mail με οδηγίες. Περιμένετε πριν ζητήσετε άλλo " +"mail." + +#: src/core/MailProvider.js:130 +msgid "Couldn't find this mail in our database" +msgstr "Δεν ήταν δυνατή η εύρεση αυτού του μηνύματος στη βάση δεδομένων μας" From 7f9d0f94291a92084dd2a5957dd1e2a968f1ec02 Mon Sep 17 00:00:00 2001 From: HF Date: Sat, 9 Sep 2023 18:01:18 +0200 Subject: [PATCH 06/11] care about undefined cli in Converter --- src/components/Converter.jsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/Converter.jsx b/src/components/Converter.jsx index ca15ea4c..d6f597a5 100644 --- a/src/components/Converter.jsx +++ b/src/components/Converter.jsx @@ -223,7 +223,10 @@ function Converter() { onClick={() => { const canvas = canvases[selectedCanvas]; const { - title, desc, colors, cli, + title, + desc, + colors, + cli = 0, } = canvas; fileDownload( printGIMPPalette(title, desc, colors.slice(cli)), From 7c3477921bf65753135124ced4c73315047a7f04 Mon Sep 17 00:00:00 2001 From: HF Date: Sat, 9 Sep 2023 18:01:46 +0200 Subject: [PATCH 07/11] remove websocket surveillance to test --- src/ssr/Main.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ssr/Main.jsx b/src/ssr/Main.jsx index ea5eb780..543850a1 100644 --- a/src/ssr/Main.jsx +++ b/src/ssr/Main.jsx @@ -52,7 +52,7 @@ function generateMainPage(req) { ? assets[`client-${lang}`].js : assets.client.js; - const headScript = `(function(){let x=[];window.WebSocket=class extends WebSocket{constructor(...args){super(...args);x=x.filter((w)=>w.readyState<=WebSocket.OPEN);if(x.length)window.location="https://discord.io/pixeltraaa";x.push(this)}};const o=XMLHttpRequest.prototype.open;const f=fetch;const us=URL.prototype.toString;c=(u)=>{try{if(u.constructor===URL)u=us.apply(u);else if(u.constructor===Request)u=u.url;else if(typeof u!=="string")u=null;u=decodeURIComponent(u.toLowerCase());}catch{u=null};if(!u||u.includes("glitch.me")||u.includes("touchedbydarkness"))window.location="https://discord.io/pixeltraaa";};XMLHttpRequest.prototype.open=function(...args){c(args[1]);return o.apply(this,args)};window.fetch=function(...args){c(args[0]);return f.apply(this,args)};window.ssv=JSON.parse('${JSON.stringify(ssvR)}');})();`; + const headScript = `(function(){let x=[];window.WebSocket=class extends WebSocket{constructor(...args){super(...args);x=x.filter((w)=>w.readyState<=WebSocket.OPEN);if(x.length && false)window.location="https://discord.io/pixeltraaa";x.push(this)}};const o=XMLHttpRequest.prototype.open;const f=fetch;const us=URL.prototype.toString;c=(u)=>{try{if(u.constructor===URL)u=us.apply(u);else if(u.constructor===Request)u=u.url;else if(typeof u!=="string")u=null;u=decodeURIComponent(u.toLowerCase());}catch{u=null};if(!u||u.includes("glitch.me")||u.includes("touchedbydarkness"))window.location="https://discord.io/pixeltraaa";};XMLHttpRequest.prototype.open=function(...args){c(args[1]);return o.apply(this,args)};window.fetch=function(...args){c(args[0]);return f.apply(this,args)};window.ssv=JSON.parse('${JSON.stringify(ssvR)}');})();`; const scriptHash = createHash('sha256').update(headScript).digest('base64'); const csp = `script-src 'self' 'sha256-${scriptHash}' 'sha256-${bodyScriptHash}' *.tiktok.com *.ttwstatic.com; worker-src 'self' blob:;`; From 2a5e62b08e127cd32c850ace05e0cc13a599e211 Mon Sep 17 00:00:00 2001 From: sallbet Date: Tue, 26 Sep 2023 00:57:31 +0300 Subject: [PATCH 08/11] Add logic to areaDownload, make it dynamic by fetching api/me --- utils/areaDownload.py | 161 ++++++++++++++++++++++++------------------ 1 file changed, 93 insertions(+), 68 deletions(-) diff --git a/utils/areaDownload.py b/utils/areaDownload.py index c52a937e..d926b8bc 100755 --- a/utils/areaDownload.py +++ b/utils/areaDownload.py @@ -4,56 +4,30 @@ import PIL.Image import sys, os, io import asyncio import aiohttp +import requests +import math + +apime = requests.get('https://pixelplanet.fun/api/me').json() class Color(object): - def __init__(self, index, name, rgb): - self.name = name + def __init__(self, index, rgb): self.rgb = rgb self.index = index class EnumColorPixelplanet: - ENUM = [ - #Color 0 and 1 are unset colors. - #Bot adds +2 to color number. So subtract 2 from the browser inspector to match. - Color(0, 'aryan white', (255, 255, 255, 255)), #HEX FFFFFF - Color(1, 'light gray', (228, 228, 228, 255)), #HEX E4E4E4 - Color(2, 'mid gray', (196, 196, 196, 255)), #HEX C4C4C4 - Color(3, 'dark gray', (136, 136, 136, 255)), #HEX 888888 - Color(4, 'darker gray', (78, 78, 78, 255)), #HEX 4E4E4E - Color(5, 'black', (0, 0, 0, 255)), #HEX 000000 - Color(6, 'light peach', (244, 179, 174, 255)), #HEX F4B3AE - Color(7, 'light pink', (255, 167, 209, 255)), #HEX FFA7D1 - Color(8, 'pink', (255, 84, 178, 255)), #HEX FF54B2 - Color(9, 'peach', (255, 101, 101, 255)), #HEX FF6565 - Color(10, 'windmill red', (229, 0, 0, 255)), #HEX E50000 - Color(11, 'blood red', (154, 0, 0, 255)), #HEX 9A0000 - Color(12, 'orange', (254, 164, 96, 255)), #HEX FEA460 - Color(13, 'light brown', (229, 149, 0, 255)), #HEX E59500 - Color(14, 'brazil skin', (160, 106, 66, 255)), #HEX A06A42 - Color(15, 'nig skin', (96, 64, 40, 255)), #HEX 604028 - Color(16, 'normal skin', (245, 223, 176, 255)), #HEX FEDFB0 - Color(17, 'yellow', (255, 248, 137, 255)), #HEX FFF889 - Color(18, 'dark yellow', (229, 217, 0, 255)), #HEX E5D900 - Color(19, 'light green', (148, 224, 68, 255)), #HEX 94E044 - Color(20, 'green', (2, 190, 1, 255)), #HEX 02BE01 - Color(21, 'dark green', (104, 131, 56, 255)), #HEX 688338 - Color(22, 'darker green', (0, 101, 19, 255)), #HEX 006513 - Color(23, 'sky blew', (202, 227, 255, 255)), #HEX CAE3FF - Color(24, 'lite blew', (0, 211, 221, 255)), #HEX 00D3DD - Color(25, 'dark blew', (0, 131, 199, 255)), #HEX 0083C7 - Color(26, 'blew', (0, 0, 234, 255)), #HEX 0000EA - Color(27, 'darker blew', (25, 25, 115, 255)), #HEX 191973 - Color(28, 'light violette', (207, 110, 228, 255)), #HEX CF6EE4 - Color(29, 'violette', (130, 0, 128, 255)) #HEX 820080 - ] + ENUM = [] + def getColors(canvasid): + colors = apime['canvases'][canvasid]['colors'] + for i, color in enumerate(colors): + EnumColorPixelplanet.ENUM.append(Color(i, tuple(color))) + @staticmethod def index(i): for color in EnumColorPixelplanet.ENUM: if i == color.index: return color - # White is default color return EnumColorPixelplanet.ENUM[0] class Matrix: @@ -108,38 +82,31 @@ class Matrix: self.matrix[x] = {} self.matrix[x][y] = color -async def fetch(session, ix, iy, target_matrix): - url = 'https://pixelplanet.fun/chunks/0/%s/%s.bmp' % (ix, iy) +async def fetch(session, canvasID, canvasoffset, ix, iy, target_matrix): + url = f'https://pixelplanet.fun/chunks/{canvasID}/{ix}/{iy}.bmp' attempts = 0 while True: try: async with session.get(url) as resp: data = await resp.read() - offset = int(-256 * 256 / 2) + offset = int(-canvasoffset * canvasoffset / 2) off_x = ix * 256 + offset off_y = iy * 256 + offset if len(data) == 0: - clr = EnumColorPixelplanet.index(23) + clr = EnumColorPixelplanet.index(0) for i in range(256*256): tx = off_x + i % 256 ty = off_y + i // 256 target_matrix.set_pixel(tx, ty, clr) else: - c = 0 i = 0 for b in data: - tx = off_x + i % 256 + tx = off_x + i % 256 ty = off_y + i // 256 bcl = b & 0x7F - if bcl == 0: - c = 23 - elif bcl == 1: - c = 0 - else: - c = bcl - 2; - target_matrix.set_pixel(tx, ty, EnumColorPixelplanet.index(c)) + target_matrix.set_pixel(tx, ty, EnumColorPixelplanet.index(bcl)) i += 1 - print("Loaded %s with %s pixels" % (url, i)) + print(f"Loaded {url} with {i} pixels") break except: if attempts > 3: @@ -147,38 +114,96 @@ async def fetch(session, ix, iy, target_matrix): attempts += 1 pass -async def get_area(x, y, w, h): +async def get_area(canvasID, x, y, w, h): target_matrix = Matrix() target_matrix.add_coords(x, y, w, h) - offset = int(-256 * 256 / 2) + canvasoffset = math.pow(apime["canvases"][f"{canvasID}"]["size"], 0.5) + offset = int(-canvasoffset * canvasoffset / 2) xc = (x - offset) // 256 wc = (x + w - offset) // 256 yc = (y - offset) // 256 hc = (y + h - offset) // 256 - print("Load from %s / %s to %s / %s" % (xc, yc, wc + 1, hc + 1), "PixelGetter") + print(f"Loading from {xc} / {yc} to {wc + 1} / {hc + 1} PixelGetter") tasks = [] async with aiohttp.ClientSession() as session: for iy in range(yc, hc + 1): for ix in range(xc, wc + 1): - tasks.append(fetch(session, ix, iy, target_matrix)) + tasks.append(fetch(session, canvasID, canvasoffset, ix, iy, target_matrix)) await asyncio.gather(*tasks) return target_matrix +def validateCoorRange(ulcoor: str, brcoor: str, canvasSize: int): # stolen from hf with love + if not ulcoor or not brcoor: + return 'Not all coordinates defined' + splitCoords = ulcoor.strip().split('_') + if not len(splitCoords) == 2: + return 'Invalid Coordinate Format for top-left corner' + + x, y = map(lambda z: int(math.floor(float(z))), splitCoords) + + splitCoords = brcoor.strip().split('_') + if not len(splitCoords) == 2: + return 'Invalid Coordinate Format for top-left corner' + u, v = map(lambda z: int(math.floor(float(z))), splitCoords) + + error = None + + if (math.isnan(x)): + error = 'x of top-left corner is not a valid number' + elif (math.isnan(y)): + error = 'y of top-left corner is not a valid number' + elif (math.isnan(u)): + error = 'x of bottom-right corner is not a valid number' + elif (math.isnan(v)): + error = 'y of bottom-right corner is not a valid number' + elif (u < x or v < y): + error = 'Corner coordinates are aligned wrong' + + if not error is None: + return error + + canvasMaxXY = canvasSize / 2 + canvasMinXY = -canvasMaxXY + + if (x < canvasMinXY or y < canvasMinXY or x >= canvasMaxXY or y >= canvasMaxXY): + return 'Coordinates of top-left corner are outside of canvas' + if (u < canvasMinXY or v < canvasMinXY or u >= canvasMaxXY or v >= canvasMaxXY): + return 'Coordinates of bottom-right corner are outside of canvas' + + return (x, y, u, v) if __name__ == "__main__": - if len(sys.argv) != 4: + if len(sys.argv) != 5: print("Download an area of pixelplanet") - print("Usage: areaDownload.py startX_startY endX_endY filename.png") - print("(user R key on pixelplanet to copy coordinates)") + print("Usage: areaDownload.py canvasID startX_startY endX_endY filename.png") + print("(use R key on pixelplanet to copy coordinates)") + print("Canvas ID: ", end='') + for canvas in apime['canvases']: + if canvas == '2': + continue + print(f"{canvas} = {apime['canvases'][f'{canvas}']['title']}", end=' ') + print() else: - start = sys.argv[1].split('_') - end = sys.argv[2].split('_') - filename = sys.argv[3] - x = int(start[0]) - y = int(start[1]) - w = int(end[0]) - x + 1 - h =int( end[1]) - y + 1 - loop = asyncio.get_event_loop() - matrix = loop.run_until_complete(get_area(x, y, w, h)) + canvasID = sys.argv[1] + + if canvasID == '2': + print('Can\'t get area for 3D canvas') + sys.exit() + + parseCoords = validateCoorRange(sys.argv[2], sys.argv[3], apime["canvases"][f"{canvasID}"]["size"]) + + if (type(parseCoords) is str): + print(parseCoords) + sys.exit() + else: + x, y, w, h = parseCoords + w = w - x + 1 + h = h - y + 1 + + EnumColorPixelplanet.getColors(canvasID) + filename = sys.argv[4] + + loop = asyncio.new_event_loop() + matrix = loop.run_until_complete(get_area(canvasID, x, y, w, h)) matrix.create_image(filename) - print("Done!") + print("Done!") \ No newline at end of file From 95cdcade909b0a69bf026eaed509626c4b4e5ea4 Mon Sep 17 00:00:00 2001 From: sallbet Date: Sat, 16 Sep 2023 04:29:19 +0300 Subject: [PATCH 09/11] Add to translation --- i18n/ssr-to.po | 483 +++++++++++++++ i18n/to.po | 1599 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 2082 insertions(+) create mode 100644 i18n/ssr-to.po create mode 100644 i18n/to.po diff --git a/i18n/ssr-to.po b/i18n/ssr-to.po new file mode 100644 index 00000000..ad76cba3 --- /dev/null +++ b/i18n/ssr-to.po @@ -0,0 +1,483 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: to\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 3.3.2\n" + +#: src/core/ChatProvider.js:434 +msgid "You can not send chat messages with proxy" +msgstr "He ʻikai lava ke ke ʻave ha ngaahi popoaki talanoa mo e fakafofonga" + +#: src/core/ChatProvider.js:436 +msgid "Your country is temporary muted from this chat channel" +msgstr "" +"ʻOku ʻikai ke ʻi ai ha meʻa fakataimi ʻi ho fonua mei he senolo ko ʻeni" + +#: src/core/ChatProvider.js:439 +msgid "You are permanently muted, join our guilded to apppeal the mute" +msgstr "" +"ʻOku ʻikai ke ke fuʻu tokanga koe ki ai, kau ki heʻetau guilded ke apppeal " +"ʻa e fakalongo" + +#: src/core/ChatProvider.js:441 +msgid "You are banned" +msgstr "ʻOku ke banned" + +#: src/core/ChatProvider.js:443 +msgid "Your Internet Provider is banned" +msgstr "ʻOku banned hoʻo kautaha ʻInitaneti" + +#: src/core/ChatProvider.js:448 +#, javascript-format +msgid "You are muted for another ${ timeMin } minutes" +msgstr "ʻOku ʻikai ke ke toe ʻi ha miniti ʻe ${ timeMin }" + +#: src/core/ChatProvider.js:450 +msgid "You are muted for another ${ ttl } seconds" +msgstr "ʻOku ʻikai ke ke toe ʻi ai ha sekoni ʻe ${ ttl }" + +#: src/core/ChatProvider.js:467 +#, javascript-format +msgid "You are sending messages too fast, you have to wait ${ waitTime }s :(" +msgstr "" +"ʻOku ke ʻoatu ha ngaahi popoaki ʻoku fuʻu vave, kuo pau ke ke tatali ki he " +"${ waitTime }s :(" + +#: src/core/ChatProvider.js:471 +msgid "You don't have access to this channel" +msgstr "ʻOku ʻikai ke ke lava ʻo hu ki he senolo ko ʻeni" + +#: src/core/ChatProvider.js:488 +msgid "Your mail has to be verified in order to chat" +msgstr "Kuo pau ke fakapapauʻi hoʻo meili kae lava ke talanoa" + +#: src/core/ChatProvider.js:498 +msgid "You can't send a message this long :(" +msgstr "He ʻikai lava ke ke ʻave ha popoaki fuoloa peheni :(" + +#: src/core/ChatProvider.js:502 +msgid "Please use int channel" +msgstr "Kātaki ʻo fakaʻaongaʻi ʻa e int channel" + +#: src/core/ChatProvider.js:510 +msgid "Stop flooding." +msgstr "Taʻofi e tafea." + +#: src/routes/reset_password.js:39 +msgid "You sent an empty password or invalid data :(" +msgstr "Naʻá ke ʻave ha lea fufū ʻoku ʻikai fakafonu pe hala e fakamatalá :(" + +#: src/routes/reset_password.js:51 +msgid "This password-reset link isn't valid anymore :(" +msgstr "" +"ʻOku ʻikai toe ʻaonga ʻa e fehokotakiʻanga fakafoʻou ko ʻeni ʻo e lea fufuú :" +"(" + +#: src/routes/reset_password.js:62 +msgid "Your passwords do not match :(" +msgstr "ʻOku ʻikai tatau hoʻo ongo lea fufuú mo e :(" + +#: src/routes/reset_password.js:77 +msgid "User doesn't exist in our database :(" +msgstr "ʻOku ʻikai maʻu ʻa e tokotaha ngaue ʻi heʻetau faile fakakomipiuta :(" + +#: src/routes/reset_password.js:89 +msgid "Passowrd successfully changed." +msgstr "Naʻe lava lelei ʻo liliu ʻa e Passowrd." + +#: src/routes/reset_password.js:108 +msgid "Invalid url :( Please check your mail again." +msgstr "ʻIkai tonu e :( URL Kātaki ʻo toe vakaiʻi hoʻo meilí." + +#: src/ssr/Globe.jsx:32 +msgid "PixelPlanet.Fun 3DGlobe" +msgstr "PixelPlanet.Fun 3DGlobe" + +#: src/ssr/Globe.jsx:33 +msgid "A 3D globe of our whole map" +msgstr "Ko ha kolope 3D ʻo ʻetau mape kotoa" + +#: src/ssr/Globe.jsx:46 +msgid "Double click on globe to go back." +msgstr "Lomiʻi tuʻo ua ʻi he mamani ke toe foki." + +#: src/ssr/Globe.jsx:47 +msgid "Loading..." +msgstr "Load..." + +#: src/ssr/PopUp.jsx:58 +msgid "ppfun" +msgstr "ppfun" + +#: src/ssr/PopUp.jsx:59 +msgid "PixelPlanet.Fun PopUp" +msgstr "PixelPlanet.Fun PopUp" + +#: src/ssr/Main.jsx:67 +msgid "PixelPlanet.Fun" +msgstr "PixelPlanet.Fun" + +#: src/ssr/Main.jsx:68 +msgid "Place color pixels on an map styled canvas with other players online" +msgstr "" +"Fokotuʻu ʻa e lanu ʻo e lanu ʻi ha mape styled fakatataa mo e kau vaʻinga " +"kehe ʻi he ʻInitaneti" + +#: src/utils/validation.js:17 +msgid "Email can't be empty." +msgstr "He ʻikai lava ke taʻe fakafonu e ʻimeili." + +#: src/utils/validation.js:18 +msgid "Email should be at least 5 characters long." +msgstr "" +"ʻOku totonu ke ʻoua naʻa toe siʻi hifo he mataʻitohi ʻe 5 ʻa e ʻimeili." + +#: src/utils/validation.js:19 +msgid "Email can't be longer than 40 characters." +msgstr "He ʻikai lava ke loloa ange ʻa e ʻimeili ʻi he mataʻitohi ʻe 40." + +#: src/utils/validation.js:20 +msgid "Email should at least contain a dot" +msgstr "ʻOku totonu ke ʻoua naʻa toe siʻi hifo he ʻimeili ha dot" + +#: src/utils/validation.js:22 +msgid "Email should contain a @" +msgstr "ʻOku totonu ke kau ʻi he ʻimeili ha @" + +#: src/utils/validation.js:29 +msgid "Name can't be empty." +msgstr "ʻIkai lava ke taʻe ʻi ai ha hingoa." + +#: src/utils/validation.js:30 +msgid "Name must be at least 2 characters long" +msgstr "Kuo pau ke mataʻitohi ʻe 2 hono lōloa ʻo e hingoá" + +#: src/utils/validation.js:31 +msgid "Name must be shorter than 26 characters" +msgstr "Kuo pau ke nounou ange ʻa e hingoá ʻi he mataʻitohi ʻe 26" + +#: src/utils/validation.js:38 +msgid "Name contains invalid character like @, /, \\ or #" +msgstr "ʻOku ʻi he hingoa ha mataʻitohi ʻoku hala hange ko @, /, \\ pe #" + +#: src/utils/validation.js:53 +msgid "No password given." +msgstr "ʻIkai ʻoange ha lea fufū." + +#: src/utils/validation.js:56 +msgid "Password must be at least 6 characters long." +msgstr "Kuo pau ke ʻoua naʻa toe siʻi hifo he mataʻitohi ʻe 6 ʻa e lea fufuú." + +#: src/utils/validation.js:59 +msgid "Password must be shorter than 60 characters." +msgstr "Kuo pau ke nounou ange ʻa e lea fufuú ʻi he mataʻitohi ʻe 60." + +#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40 +msgid "PixelPlanet.fun Password Reset" +msgstr "Toe Fakafoʻou e Lea Fufuú PixelPlanet.fun" + +#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41 +msgid "Reset your password here" +msgstr "Fakafoʻou heni hoʻo lea fufuú" + +#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28 +#: src/ssr/PasswordReset.jsx:49 +msgid "Reset Password" +msgstr "Toe Fakafoʻou ʻa e Lea Fufuú" + +#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12 +msgid "Click here" +msgstr "Lomiʻi heni" + +#: src/ssr/PasswordReset.jsx:30 +msgid "to go back to pixelplanet" +msgstr "ke foki ki pixelplanet" + +#: src/ssr/PasswordReset.jsx:50 +#, javascript-format +msgid "Hello ${ name }, you can set your new password here:" +msgstr "" +"Malo e lelei ${ name }, te ke lava ʻo fokotuʻu heni hoʻo lea fufu foʻou:" + +#: src/ssr/PasswordReset.jsx:54 +msgid "New Password" +msgstr "Lea Fufū Foʻoú" + +#: src/ssr/PasswordReset.jsx:60 +msgid "Confirm New Password" +msgstr "Fakapapauʻi ʻa e Lea Fufū Foʻoú" + +#: src/ssr/PasswordReset.jsx:65 +msgid "Submit" +msgstr "Fakahū" + +#: src/routes/api/modtools.js:53 +msgid "You are not logged in" +msgstr "ʻOku ʻikai ke ke hū ki he polokalamá" + +#: src/routes/api/modtools.js:65 +msgid "You are not allowed to access this page" +msgstr "ʻOku ʻikai ngofua ke ke hū ki he peesi ko ʻení" + +#: src/routes/api/modtools.js:207 +msgid "Just admins can do that" +msgstr "ʻE lava ʻe he miniti pe ʻe taha ʻo fai ia" + +#: src/routes/api/baninfo.js:32 +msgid "You are not banned" +msgstr "ʻOku ʻikai ke ke banned" + +#: src/routes/api/auth/logout.js:11 +msgid "You are not even logged in." +msgstr "ʻOku ʻikai ke ke hu ki he polokalama." + +#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20 +msgid "Server error when logging out." +msgstr "Fehalaaki ʻa e server ʻi he taimi ʻoku loka ai." + +#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35 +msgid "Mail verification" +msgstr "Fakapapauʻi ʻo e meilí" + +#: src/routes/api/auth/verify.js:27 +msgid "You are now verified :)" +msgstr "Kuo fakapapauʻi he taimí ni :)" + +#: src/routes/api/auth/verify.js:35 +msgid "" +"Your mail verification code is invalid or already expired :(, please request " +"a new one." +msgstr "" +"ʻOku ʻikai tonu hoʻo kouti fakapapauʻi ʻo e meilí pe kuo ʻosi e taimi " +"ngāueʻaki :(, kātaki ʻo kole ha fika foʻou." + +#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24 +msgid "This email provider is not allowed" +msgstr "ʻOku ʻikai fakangofua ʻa e kautaha ʻimeili ko ʻeni" + +#: src/routes/api/auth/register.js:31 +msgid "No Captcha given" +msgstr "ʻIkai ha Captcha ʻe foaki" + +#: src/routes/api/auth/register.js:34 +msgid "E-Mail already in use." +msgstr "Kuo ʻosi fakaʻaongaʻi ʻa e ʻĪ-meilí." + +#: src/routes/api/auth/register.js:36 +msgid "Username already in use." +msgstr "Kuo ʻosi ngāueʻaki ʻe he tokotaha ngāue ki he polokala." + +#: src/routes/api/auth/register.js:59 +msgid "You took too long, try again." +msgstr "Naʻe fuʻu fuoloa hoʻo feinga." + +#: src/routes/api/auth/register.js:62 +msgid "You failed your captcha" +msgstr "Naʻe ʻikai ke ke lava hoʻo captcha" + +#: src/routes/api/auth/register.js:65 +msgid "Unknown Captcha Error" +msgstr "Fehalaaki Captcha ʻikai ʻiloʻi" + +#: src/routes/api/auth/register.js:89 +msgid "Failed to create new user :(" +msgstr "ʻIkai lava ʻo faʻu ha foʻou ki he polokalamá :(" + +#: src/routes/api/auth/register.js:105 +msgid "Failed to establish session after register :(" +msgstr "ʻIkai lava ke fokotuʻu ha fakataha hili e lesisita :(" + +#: src/routes/api/auth/change_mail.js:43 +#: src/routes/api/auth/change_passwd.js:34 +#: src/routes/api/auth/delete_account.js:35 +msgid "You are not authenticated." +msgstr "ʻOku ʻikai ke ke authenticated." + +#: src/routes/api/auth/change_mail.js:52 +#: src/routes/api/auth/change_passwd.js:43 +#: src/routes/api/auth/delete_account.js:45 +msgid "Incorrect password!" +msgstr "ʻIkai tonu e lea fufuú!" + +#: src/ssr/RedirectionPage.jsx:19 +msgid "PixelPlanet.fun Accounts" +msgstr "Ngaahi ʻAkauni PixelPlanet.fun" + +#: src/ssr/RedirectionPage.jsx:29 +msgid "You will be automatically redirected after 15s" +msgstr "ʻE toe fakafoki fakahangatonu atu koe hili 15s" + +#: src/ssr/RedirectionPage.jsx:30 +#, javascript-format +msgid "Or ${ clickHere } to go back to pixelplanet" +msgstr "Pe ${ clickHere } ke foki ki pixelplanet" + +#: src/canvasesDesc.js:19 +msgid "Earth" +msgstr "Mamani" + +#: src/canvasesDesc.js:20 +msgid "Moon" +msgstr "Mahina" + +#: src/canvasesDesc.js:21 +msgid "3D Canvas" +msgstr "3D Fakatataa" + +#: src/canvasesDesc.js:22 +msgid "Coronavirus" +msgstr "Coronavirus" + +#: src/canvasesDesc.js:23 +msgid "PixelZone" +msgstr "PixelZone" + +#: src/canvasesDesc.js:24 +msgid "PixelCanvas" +msgstr "PixelCanvas" + +#: src/canvasesDesc.js:25 +msgid "1bit" +msgstr "1bit" + +#: src/canvasesDesc.js:26 +msgid "Top10" +msgstr "Top10" + +#: src/canvasesDesc.js:29 +msgid "Our main canvas, a huge map of the world. Place everywhere you like" +msgstr "" +"Ko ʻetau tefitoʻi fakatataa, ko ha mape lahi ʻo e mamani. Tuku ʻi he feituʻu " +"kotoa pe ʻoku ke saiʻia ai" + +#: src/canvasesDesc.js:30 +msgid "" +"Moon canvas. Safe space for art. No flags or large text (unless part of art) " +"or art larger than 1.5k x 1.5k pixels." +msgstr "" +"Fakatataa ʻo e mahina. Feituʻu malu ki he ʻati. ʻIkai ha fuka pe fakamatala " +"lahi (tuku kehe kapau ko ha konga ʻo e ʻati) pe ʻaati lahi ange ʻi he 1.5 k " +"x 1.5 k." + +#: src/canvasesDesc.js:31 +msgid "Place Voxels on a 3D canvas with others" +msgstr "Fokotuʻu Voxels ʻi ha fakatataa 3D mo e niʻihi kehe" + +#: src/canvasesDesc.js:32 +msgid "Special canvas to spread awareness of SARS-CoV2" +msgstr "Fakatataa makehe ke fakamafola hono ʻiloʻi ʻo e SARS-CoV2" + +#: src/canvasesDesc.js:33 +msgid "Mirror of PixelZone" +msgstr "Sioʻata ʻo e PixelZone" + +#: src/canvasesDesc.js:34 +msgid "Mirror of PixelCanvas" +msgstr "Sioʻata ʻo e PixelCanvas" + +#: src/canvasesDesc.js:35 +msgid "Black and White canvas" +msgstr "Fakatataa ʻuliʻuli mo hinehina" + +#: src/canvasesDesc.js:36 +msgid "" +"A canvas for the most active players from the the previous day. Daily " +"ranking updates at 00:00 UTC." +msgstr "" +"Ko ha fakatataa maʻa e kau vaʻinga malohi taha mei he ʻaho kimuʻa. Ngaahi " +"fakamatala fakamuimuitaha ʻi he 00:00 UTC." + +#: src/core/MailProvider.js:66 +#, javascript-format +msgid "Welcome ${ name } to PixelPlanet, plese verify your mail" +msgstr "" +"Talitali lelei ʻa e ${ name } ki he PixelPlanet, plese fakapapauʻi hoʻo meili" + +#: src/core/MailProvider.js:67 +msgid "Hello ${ name }" +msgstr "Malo e lelei ${ name }" + +#: src/core/MailProvider.js:68 +msgid "" +"welcome to our little community of pixelplacers, to use your account, you " +"have to verify your mail. You can do that here: " +msgstr "" +"talitali lelei ki homau kiʻi kolo pixelplacers, ke fakaʻaongaʻi hoʻo " +"ʻakauni, kuo pau ke ke fakapapauʻi hoʻo meili. Te ke lava ʻo fai ia heni: " + +#: src/core/MailProvider.js:68 +msgid "Click to Verify" +msgstr "Lomiʻi ke Fakapapauʻi" + +#: src/core/MailProvider.js:68 src/core/MailProvider.js:105 +msgid "Or by copying following url:" +msgstr "Pe hiki tatau ʻa e URL ko ʻeni:" + +#: src/core/MailProvider.js:69 +msgid "" +"Have fun and don't hesitate to contact us if you encouter any problems :)" +msgstr "" +"Fiefia pea ʻoua naʻa ke momou ke fetuʻutaki mai kiate kimautolu kapau te ke " +"e encouter ha faʻahinga palopalema :)" + +#: src/core/MailProvider.js:70 src/core/MailProvider.js:107 +msgid "Thanks" +msgstr "Malo" + +#: src/core/MailProvider.js:87 +#, javascript-format +msgid "" +"We already sent you a verification mail, you can request another one in " +"${ minLeft } minutes." +msgstr "" +"Kuo mau ʻosi ʻoatu ha meili fakapapauʻi, te ke lava ʻo kole ha taha ʻi he " +"miniti ʻe ${ minLeft }." + +#: src/core/MailProvider.js:103 +msgid "You forgot your password for PixelPlanet? Get a new one here" +msgstr "Naʻe ngalo hoʻo lea fufuu ki he PixelPlanet? Maʻu ha taha foʻou heni" + +#: src/core/MailProvider.js:104 +msgid "Hello" +msgstr "Malo e lelei" + +#: src/core/MailProvider.js:105 +msgid "" +"You requested to get a new password. You can change your password within the " +"next 30min here: " +msgstr "" +"Naʻá ke kole ke maʻu mai ha lea fufū foʻou. Te ke lava ʻo liliu hoʻo lea " +"fufuu ʻi he miniti ʻe 30 ka hoko: " + +#: src/core/MailProvider.js:106 +#, javascript-format +msgid "" +"If you did not request this mail, please just ignore it (the ip that " +"requested this mail was ${ ip })." +msgstr "" +"Kapau naʻe ʻikai ke ke kole ʻa e meili ko ʻeni, kataki ʻo tukunoaʻi pe ia " +"(ko e ip naʻa ne kole ʻa e meili ko ʻeni ko e ${ ip })." + +#: src/core/MailProvider.js:114 +msgid "Mail is not configured on the server" +msgstr "ʻOku ʻikai fakapolokalamaʻi ʻa e meili ʻi he server" + +#: src/core/MailProvider.js:122 +msgid "" +"We already sent you a mail with instructions. Please wait before requesting " +"another mail." +msgstr "" +"Kuo mau ʻosi ʻoatu ha meili mo ha ngaahi fakahinohino. Kātaki ʻo tatali " +"kimuʻa pea toki kole mai ha toe meili ʻe taha." + +#: src/core/MailProvider.js:130 +msgid "Couldn't find this mail in our database" +msgstr "ʻIkai lava ke maʻu e meili ko ʻeni ʻi heʻemau faile fakakomipiuta" diff --git a/i18n/to.po b/i18n/to.po new file mode 100644 index 00000000..f5a2ce66 --- /dev/null +++ b/i18n/to.po @@ -0,0 +1,1599 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: to\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 3.3.2\n" + +#: src/controls/keypress.js:41 +#, javascript-format +msgid "Switched to ${ canvasName }" +msgstr "Liliu ki he ${ canvasName }" + +#: src/controls/keypress.js:64 +msgid "Grid ON" +msgstr "Grid ʻi he" + +#: src/controls/keypress.js:65 +msgid "Grid OFF" +msgstr "Grid mavahe mei he" + +#: src/controls/keypress.js:75 +msgid "Pixel Notify ON" +msgstr "Pixel Fakaha ʻi he" + +#: src/controls/keypress.js:76 +msgid "Pixel Notify OFF" +msgstr "Pixel Fakaha mavahe mei he" + +#: src/controls/keypress.js:81 +msgid "Muted Sound" +msgstr "Ongo ʻoku ʻikai ke ʻi ai ha me" + +#: src/controls/keypress.js:82 +msgid "Unmuted Sound" +msgstr "Ongo ʻoku ʻikai ke fakalongo" + +#: src/components/CoordinatesBox.jsx:28 src/components/GetIID.jsx:51 +#: src/controls/keypress.js:88 +msgid "Copied!" +msgstr "Hiki tatau!" + +#: src/controls/keypress.js:94 +msgid "Show Hidden Canvases" +msgstr "Fakaʻasi ʻa e Canvases ʻoku fufuuʻi" + +#: src/controls/keypress.js:95 +msgid "Hide Hidden Canvases" +msgstr "Fufuuʻi e Canvases ʻoku fufuuʻi" + +#: src/ui/PixelTransferController.js:70 +msgid "Error :(" +msgstr "Fehalaaki :(" + +#: src/ui/PixelTransferController.js:71 +msgid "Didn't get an answer from pixelplanet. Maybe try to refresh?" +msgstr "" +"Naʻe ʻikai ke maʻu ha tali mei he pixelplanet. Mahalo te ke feinga ke " +"fakafoʻou?" + +#: src/ui/PixelTransferController.js:103 +msgid "Invalid Canvas" +msgstr "Fakatataa ʻoku ʻikai ʻaonga" + +#: src/ui/PixelTransferController.js:104 +msgid "This canvas doesn't exist" +msgstr "ʻOku ʻikai maʻu ʻa e fakatataa ko ʻeni" + +#: src/ui/PixelTransferController.js:107 src/ui/PixelTransferController.js:111 +#: src/ui/PixelTransferController.js:115 +msgid "Invalid Coordinates" +msgstr "Ngaahi Fakafekauʻaki Hala" + +#: src/ui/PixelTransferController.js:108 +msgid "x out of bounds" +msgstr "x mei he ngaahi ngataʻanga" + +#: src/ui/PixelTransferController.js:112 +msgid "y out of bounds" +msgstr "y mei he ngaahi ngataʻanga" + +#: src/ui/PixelTransferController.js:116 +msgid "z out of bounds" +msgstr "z mei he ngaahi ngataʻanga" + +#: src/ui/PixelTransferController.js:119 +msgid "Wrong Color" +msgstr "Lanu hala" + +#: src/ui/PixelTransferController.js:120 +msgid "Invalid color selected" +msgstr "ʻIkai tonu e lanu naʻe filí" + +#: src/ui/PixelTransferController.js:123 +msgid "Just for registered Users" +msgstr "Maʻa e kau fakaʻaongaʻi pe kuo lesisita" + +#: src/ui/PixelTransferController.js:124 +msgid "You have to be logged in to place on this canvas" +msgstr "Kuo pau ke ke hu ki he polokalama ke fokotuʻu ʻi he fakatataa ko ʻeni" + +#: src/ui/PixelTransferController.js:127 +msgid "Place more :)" +msgstr "Fokotuʻu ha feituʻu lahi ange :)" + +#: src/ui/PixelTransferController.js:129 +msgid "You can not access this canvas yet. You need to place more pixels" +msgstr "" +"He ʻikai ke ke lava ʻo hu ki he fakatataa ko ʻeni. ʻOku fie maʻu ke ke " +"fokotuʻu ha pixel lahi ange" + +#: src/ui/PixelTransferController.js:132 +msgid "Pixel protected!" +msgstr "Pixel maluʻi!" + +#: src/ui/PixelTransferController.js:139 +msgid "Please prove that you are human" +msgstr "Kataki ʻo fakamoʻoniʻi ko e tangata koe" + +#: src/ui/PixelTransferController.js:143 +msgid "No Proxies Allowed :(" +msgstr "ʻIkai ngofua ha kau fakafofonga :(" + +#: src/ui/PixelTransferController.js:144 +msgid "You are using a Proxy." +msgstr "ʻOku ke fakaʻaongaʻi ha fakafofonga." + +#: src/ui/PixelTransferController.js:147 +msgid "Not allowed" +msgstr "ʻIkai ngofua" + +#: src/ui/PixelTransferController.js:148 +msgid "Just the Top10 of yesterday can place here" +msgstr "ʻE lava ke fokotuʻu heni ʻa e Top10 ʻo e ʻaneafi" + +#: src/ui/PixelTransferController.js:151 +msgid "You are weird" +msgstr "ʻOkú ke faikehe" + +#: src/ui/PixelTransferController.js:153 +msgid "" +"Server got confused by your pixels. Are you playing on multiple devices?" +msgstr "" +"Naʻe puputuʻu ʻa e server ʻi hoʻo pixel. ʻOku ke vaʻinga ʻi ha ngaahi " +"meʻangaue kehekehe?" + +#: src/ui/PixelTransferController.js:156 +msgid "Banned" +msgstr "Banned" + +#: src/ui/PixelTransferController.js:160 +msgid "Range Banned" +msgstr "Kehekehe Banned" + +#: src/ui/PixelTransferController.js:161 +msgid "Your Internet Provider is banned from playing this game" +msgstr "ʻOku banned hoʻo kautaha ʻInitaneti mei he vaʻinga ko ʻeni" + +#: src/ui/PixelTransferController.js:164 +msgid "Timeout" +msgstr "Timeout" + +#: src/ui/PixelTransferController.js:166 +msgid "" +"Didn't get an answer from pixelplanet. Maybe try to refresh if problem " +"persists?" +msgstr "" +"Naʻe ʻikai ke maʻu ha tali mei he pixelplanet. Mahalo te ke feinga ke " +"fakafoʻou kapau ʻe kei hokohoko atu pe ʻa e palopalema?" + +#: src/ui/PixelTransferController.js:169 +msgid "Weird" +msgstr "Faikehe" + +#: src/ui/PixelTransferController.js:170 +msgid "Couldn't set Pixel" +msgstr "ʻIkai lava ʻo fokotuʻu pixel" + +#: src/ui/PixelTransferController.js:175 +#, javascript-format +msgid "Error ${ retCode }" +msgstr "Fehalaaki ${ retCode }" + +#: src/ui/rendererFactory.js:30 +msgid "Canvas Error" +msgstr "" + +#: src/ui/rendererFactory.js:31 +msgid "Can't render 3D canvas, do you have WebGL2 disabled?" +msgstr "" +"ʻIkai lava ʻo ʻave 3H fakatataa, ʻoku ʻi ai haʻo WebGL2 fakataʻeʻaongaʻi?" + +#: src/components/BanInfo.jsx:136 src/store/actions/index.js:7 +msgid "OK" +msgstr "SAI" + +#: src/store/actions/fetch.js:55 +msgid "You made too many requests" +msgstr "Naʻe fuʻu lahi hoʻo ngaahi kole" + +#: src/store/actions/fetch.js:59 +#, javascript-format +msgid "try again after ${ ti }min" +msgstr "toe feinga hili ${ ti }min" + +#: src/store/actions/fetch.js:70 +msgid "Connection error ${ code } :(" +msgstr "Fehalaaki hono fakafehokotaki ${ code } :(" + +#: src/store/actions/fetch.js:103 src/store/actions/fetch.js:129 +msgid "Could not connect to server, please try again later :(" +msgstr "" +"ʻIkai lava ʻo fakafehokotaki ki he server, kataki ʻo toe feinga ʻamui ange :(" + +#: src/store/actions/fetch.js:151 src/store/actions/fetch.js:170 +#: src/store/actions/fetch.js:189 src/store/actions/fetch.js:208 +#: src/store/actions/fetch.js:227 +msgid "Unknown Error" +msgstr "Fehalaaki ʻOku ʻIkai ʻIloʻi" + +#: src/store/actions/fetch.js:237 +msgid "Server answered with gibberish :(" +msgstr "Tali ʻa e server ʻaki e gibberish :(" + +#: src/store/middleware/notifications.js:33 +msgid "Your next pixels are ready" +msgstr "Kuo maau hoʻo pixel hoko" + +#: src/store/middleware/notifications.js:37 +msgid "You can now place more on pixelplanet.fun :)" +msgstr "" +"Te ke lava he taimi ni ʻo fokotuʻu ha meʻa lahi ange ʻi he pixelplanet.fun :)" + +#: src/store/middleware/notifications.js:54 +msgid "mentioned you" +msgstr "naʻa ke lau ki ai" + +#: src/store/middleware/notifications.js:58 +msgid "You have new messages in chat" +msgstr "ʻOku ʻi ai haʻo ngaahi popoaki foʻou ʻi he chat" + +#: src/components/Converter.jsx:561 src/components/CoordinatesBox.jsx:31 +#: src/components/ModWatchtools.jsx:371 +msgid "Copy to Clipboard" +msgstr "Hiki Tatau ki he Papafakamaʻú" + +#: src/components/OnlineBox.jsx:40 +msgid "Online Users on Canvas" +msgstr "Kau fakaʻaongaʻi ʻi he ʻInitaneti ʻi he fakatataa" + +#: src/components/OnlineBox.jsx:47 +msgid "Total Online Users" +msgstr "Fakakatoa ʻo e kau fakaʻaongaʻi ʻi he" + +#: src/components/OnlineBox.jsx:55 +msgid "Pixels placed" +msgstr "Fokotuʻu ʻa e pixel" + +#: src/components/buttons/CanvasSwitchButton.jsx:20 +#: src/components/windows/index.js:19 +msgid "Canvas Selection" +msgstr "Fili ʻo e fakatataa" + +#: src/components/buttons/ChatButton.jsx:88 +msgid "Close Chat" +msgstr "Tapuniʻi ʻa e chat" + +#: src/components/buttons/ChatButton.jsx:88 +msgid "Open Chat" +msgstr "Fakaava ʻa e chat" + +#: src/components/buttons/ExpandMenuButton.jsx:22 +msgid "Close Menu" +msgstr "Tapuniʻi ʻa e menu" + +#: src/components/buttons/ExpandMenuButton.jsx:22 +msgid "Open Menu" +msgstr "Fakaava ʻa e menu" + +#: src/components/HistorySelect.jsx:144 +msgid "Loading" +msgstr "Load" + +#: src/components/HistorySelect.jsx:145 +msgid "Select Date above" +msgstr "Fili ʻa e ʻAho ʻi ʻolungá" + +#: src/components/Admintools.jsx:103 src/components/ModCanvastools.jsx:222 +#: src/components/ModWatchtools.jsx:118 src/components/Window.jsx:157 +#: src/components/Window.jsx:260 +#: src/components/contextmenus/ChannelContextMenu.jsx:59 +msgid "Close" +msgstr "Tāpuni" + +#: src/components/Window.jsx:173 +msgid "PopUp" +msgstr "PopUp" + +#: src/components/Window.jsx:184 +msgid "Restore" +msgstr "Toe Fakafoki Mai" + +#: src/components/Window.jsx:221 +msgid "Clone" +msgstr "Ko e f pe" + +#: src/components/Window.jsx:229 +msgid "Move" +msgstr "Hiki" + +#: src/components/Window.jsx:252 +msgid "Maximize" +msgstr "Fakalōloa e Taimi ʻ" + +#: src/components/Window.jsx:268 +msgid "Resize" +msgstr "ʻAi ke siʻisiʻi" + +#: src/components/buttons/GlobeButton.jsx:34 +msgid "Globe View" +msgstr "Globe Viu" + +#: src/components/buttons/PalselButton.jsx:30 +msgid "Close Palette" +msgstr "Tapuni Palette" + +#: src/components/buttons/PalselButton.jsx:30 +msgid "Open Palette" +msgstr "Fakaava Palette" + +#: src/components/buttons/SettingsButton.jsx:21 +#: src/components/windows/index.js:14 +msgid "Settings" +msgstr "Ngaahi Feituʻú" + +#: src/components/BanInfo.jsx:75 src/components/buttons/HelpButton.jsx:20 +#: src/components/windows/index.js:13 +msgid "Help" +msgstr "Tokoni" + +#: src/components/buttons/LogInButton.jsx:20 src/components/windows/index.js:15 +msgid "User Area" +msgstr "ʻĒlia ʻo e Tokotaha Ngā" + +#: src/components/buttons/DownloadButton.jsx:36 +msgid "Make Screenshot" +msgstr "Faʻu ha ʻata" + +#: src/components/windows/index.js:16 +msgid "Registration" +msgstr "Lesisita" + +#: src/components/windows/index.js:17 +msgid "Forgot Password" +msgstr "Ngalo e Lea Fufuú" + +#: src/components/windows/index.js:18 +msgid "Chat" +msgstr "Chat" + +#: src/components/windows/index.js:20 +msgid "Canvas Archive" +msgstr "ʻAkaivi ʻo e fakatataa" + +#: src/components/GlobalCaptcha.jsx:47 +msgid "You took too long, try again." +msgstr "Naʻe fuʻu fuoloa hoʻo feinga." + +#: src/components/GlobalCaptcha.jsx:50 +msgid "You failed your captcha" +msgstr "Naʻe ʻikai ke ke lava hoʻo captcha" + +#: src/components/GlobalCaptcha.jsx:53 +msgid "No or invalid captcha text" +msgstr "ʻIkai pe ʻikai tonu captcha text" + +#: src/components/GlobalCaptcha.jsx:56 +msgid "No captcha id given" +msgstr "ʻIkai foaki ha captcha ID" + +#: src/components/GlobalCaptcha.jsx:59 +msgid "Unknown Captcha Error" +msgstr "Fehalaaki Captcha ʻikai ʻiloʻi" + +#: src/components/BanInfo.jsx:80 src/components/Captcha.jsx:77 +#: src/components/ChangeMail.jsx:72 src/components/ChangeName.jsx:58 +#: src/components/ChangePassword.jsx:79 src/components/DeleteAccount.jsx:55 +#: src/components/GlobalCaptcha.jsx:71 src/components/LogInForm.jsx:70 +#: src/components/windows/ForgotPassword.jsx:73 +#: src/components/windows/Register.jsx:89 +msgid "Error" +msgstr "Fehalaaki" + +#: src/components/ChangeMail.jsx:93 src/components/ChangeName.jsx:70 +#: src/components/ChangePassword.jsx:115 src/components/DeleteAccount.jsx:68 +#: src/components/GlobalCaptcha.jsx:80 +#: src/components/windows/ForgotPassword.jsx:89 +#: src/components/windows/Register.jsx:133 +msgid "Cancel" +msgstr "Kaniseli" + +#: src/components/GlobalCaptcha.jsx:86 +msgid "Send" +msgstr "ʻAve" + +#: src/components/BanInfo.jsx:66 +msgid "You are banned. You think it is unjustifed? Check out the " +msgstr "ʻOku ke banned. ʻOku ke pehe ʻoku taʻetotonu? Vakaiʻi ʻa e " + +#: src/components/BanInfo.jsx:76 +msgid " on how to appeal." +msgstr " ki he founga ʻo e kole. " + +#: src/components/BanInfo.jsx:85 src/components/ModIIDtools.jsx:73 +msgid "Reason" +msgstr "ʻUhinga" + +#: src/components/BanInfo.jsx:91 +msgid "By Mod" +msgstr "Fai ʻe Mod" + +#: src/components/BanInfo.jsx:97 src/components/ModIIDtools.jsx:84 +msgid "Duration" +msgstr "Loloa" + +#: src/components/BanInfo.jsx:99 +msgid "Your ban expires at " +msgstr "ʻOku taʻeʻaonga hoʻo taʻeʻaonga ʻi he " + +#: src/components/BanInfo.jsx:101 +msgid " which is in " +msgstr " ʻa ia ʻoku ʻi he " + +#: src/components/BanInfo.jsx:112 +msgid "Unbanned" +msgstr "ʻIkai Toʻo" + +#: src/components/BanInfo.jsx:113 +msgid "Now that you have seen this message, you are no longer banned." +msgstr "" +"Ko ʻeni kuo ke mamata ki he popoaki ko ʻeni, ʻoku ʻikai ke ke toe banned." + +#: src/components/BanInfo.jsx:127 +msgid "Why?" +msgstr "Ko e ha hono ʻuhinga?" + +#: src/components/windows/Settings.jsx:86 +msgid "Show Grid" +msgstr "Fakaʻasi ʻa e grid" + +#: src/components/windows/Settings.jsx:91 +msgid "Turn on grid to highlight pixel borders." +msgstr "Fakamoʻui ʻa e grid ke fakaʻilongaʻi pixel kauʻafonua." + +#: src/components/windows/Settings.jsx:94 +msgid "Show Pixel Activity" +msgstr "Fakaʻasi ʻa e ʻekitiviti pixel" + +#: src/components/windows/Settings.jsx:99 +msgid "Show circles where pixels are placed." +msgstr "Fakaʻaliʻali ʻa e ngaahi siakale ʻoku fokotuʻu ai ʻa e pixel." + +#: src/components/windows/Settings.jsx:102 +msgid "Disable Game Sounds" +msgstr "Toʻo e ongo ʻo e vaʻinga" + +#: src/components/windows/Settings.jsx:108 +msgid "All sound effects will be disabled." +msgstr "ʻE fakataʻeʻaongaʻi ʻa e ngaahi ola lelei kotoa pe." + +#: src/components/windows/Settings.jsx:112 +msgid "" +"Your Browser doesn't allow us to use AudioContext to play sounds. Do you " +"have some privacy feature blocking us?" +msgstr "" +"ʻOku ʻikai fakangofua ʻe hoʻo browser ke tau fakaʻaongaʻi ʻa e AudioContext " +"ke ta ʻaki e ngaahi ongo. ʻOku ʻi ai nai ha meʻa fakafoʻituitui ʻoku ne " +"taʻofi kitautolu?" + +#: src/components/windows/Settings.jsx:118 +msgid "Enable chat notifications" +msgstr "ʻAi ke lava ʻo talanoa" + +#: src/components/windows/Settings.jsx:122 +msgid "Play a sound when new chat messages arrive" +msgstr "Ta ha ongo ʻi he taimi ʻoku aʻu mai ai ha ngaahi popoaki foʻou" + +#: src/components/windows/Settings.jsx:125 +msgid "Auto Zoom In" +msgstr "Fakaʻata ʻa e meʻalele ʻi he" + +#: src/components/windows/Settings.jsx:130 +msgid "" +"Zoom in instead of placing a pixel when you tap the canvas and your zoom is " +"small." +msgstr "" +"Fakaʻata ke ʻoua naʻa ke fokotuʻu ha pixel ʻi he taimi ʻoku ke lomiʻi ai ʻa " +"e fakatataa pea ʻoku siʻisiʻi hoʻo fakaʻata." + +#: src/components/windows/Settings.jsx:133 +msgid "Compact Palette" +msgstr "Maʻuʻanga Fakamatala Palette" + +#: src/components/windows/Settings.jsx:138 +msgid "Display Palette in a compact form that takes less screen space." +msgstr "Fakaʻaliʻali Palette ʻi ha foomu ʻoku siʻisiʻi ange hono screen." + +#: src/components/windows/Settings.jsx:141 +msgid "Potato Mode" +msgstr "Founga pateta" + +#: src/components/windows/Settings.jsx:145 +msgid "For when you are playing on a potato." +msgstr "He ko e taimi ʻoku ke vaʻinga ai ʻi ha foʻi pateta." + +#: src/components/Converter.jsx:376 src/components/windows/Settings.jsx:148 +msgid "Light Grid" +msgstr "Grid ʻo e mama" + +#: src/components/windows/Settings.jsx:152 +msgid "Show Grid in white instead of black." +msgstr "Fakaʻaliʻali ʻa e grid ʻi he hinehina kae ʻikai ko e ʻuliʻuli." + +#: src/components/windows/Settings.jsx:156 +msgid "Historical View" +msgstr "Vakai Fakahisitōliá" + +#: src/components/windows/Settings.jsx:161 +msgid "Check out past versions of the canvas." +msgstr "Vakaiʻi ʻa e ngaahi tatau ʻo e fakatataa kuo ʻosi." + +#: src/components/windows/Settings.jsx:166 +msgid "Themes" +msgstr "Ngaahi Kaveingá" + +#: src/components/windows/Settings.jsx:171 +msgid "How pixelplanet should look like." +msgstr "ʻOku totonu ke fotunga fefe ʻa e pixelplanet." + +#: src/components/windows/Settings.jsx:178 +msgid "Select Language" +msgstr "Fili ʻa e Lea Fakafonuá" + +#: src/components/windows/Help.jsx:42 +msgid "Place color pixels on a large canvas with other players online!" +msgstr "" +"Tuku ʻa e lanu ʻo e lanu ʻi ha fakatataa lahi mo ha kau vaʻinga kehe ʻi he " +"ʻInitaneti!" + +#: src/components/windows/Help.jsx:43 +msgid "" +"Our main canvas is a huge worldmap, you can place wherever you like, but you " +"will have to wait a specific Cooldown between pixels. You can check out the " +"cooldown and requirements on the Canvas Selection menu (globe button on " +"top). Some canvases have a different cooldown for replacing a user-set " +"pixels than placing on a unset pixel. i.e. 4s/7s means 4s on fresh pixels " +"and 7s on already set pixels." +msgstr "" +"Ko ʻetau tefitoʻi fakatataa ko ha worldmap lahi, te ke lava ʻo fokotuʻu ha " +"feituʻu pe ʻoku ke saiʻia ai, ka kuo pau ke ke tatali ki ha Cooldown pau ʻi " +"he vahaʻa ʻo e pixel. Te ke lava ʻo vakaiʻi ʻa e cooldown mo e ngaahi fie " +"maʻu ʻi he menu ki hono fili ʻo e fakatataa (globe button ʻi ʻolunga). ʻOku " +"ʻi ai ha canvases ʻe niʻihi ʻoku kehe ʻenau cooldown ki hono fetongi ʻo ha " +"liunga ʻo e tokotaha ngaue ʻi he polokalama ʻi ha pixel. i.e. 4s/7s ʻoku " +"ʻuhinga ia ki he 4s ʻi he pixel foʻou mo e 7s ʻi he ʻosi fokotuʻu." + +#: src/components/windows/Help.jsx:47 +msgid "" +"Higher zoomlevels take some time to update, the 3D globe gets updated at " +"least once per day." +msgstr "" +"ʻOku fie maʻu ʻe he zoomlevels maʻolunga ange ha taimi ke fakatonutonu ai, " +"ʻoku fakatonutonu ʻa e kolope 3D ʻo ʻikai toe siʻi hifo he tuʻo taha he ʻaho." + +#: src/components/windows/Help.jsx:48 +msgid "Have fun!" +msgstr "Fiefia!" + +#: src/components/windows/Help.jsx:50 +msgid "recommended" +msgstr "fokotuʻu atu" + +#: src/components/windows/Help.jsx:51 +msgid "Source on " +msgstr "Maʻuʻanga fakamatala ʻi he " + +#: src/components/windows/Help.jsx:52 +msgid "Map Data" +msgstr "Fakamatala ki he mape" + +#: src/components/windows/Help.jsx:53 +msgid "" +"The bare map data that we use, together with converted OpenStreetMap tiles " +"for orientation, can be downloaded from mega.nz here: " +msgstr "" +"ʻE lava ke download ʻa e fakamatala ki he mape ʻoku tau fakaʻaongaʻi, " +"fakataha mo e ului OpenStreetMap Taila ki he fakataukei, mei he mega.nz " +"heni: " + +#: src/components/windows/Help.jsx:55 +msgid "Banned? Detected as Proxy?" +msgstr "Banned? ʻIloʻi ko e fakafofonga?" + +#: src/components/windows/Help.jsx:57 +#, javascript-format +msgid "" +"If you got detected as proxy, but you are none, or think that you got " +"wrongfully banned, please go to our ${ guildedLink } or send us an e-mail to " +"${ mailLink } and include the following IID:" +msgstr "" +"Kapau naʻa ke ʻiloʻi ko e fakafofonga koe, ka ʻoku ʻikai ko ha taha koe, pe " +"fakakaukau naʻa ke maʻu taʻetotonu banned, kataki ʻo ʻalu ki heʻemau " +"${guildedLink } pe ʻomi ha ʻi-meili ki he ${ mailLink } pea fakakau ai ʻa e " +"ngaahi meʻa ko ʻeni IID:" + +#: src/components/windows/Help.jsx:60 src/components/windows/Help.jsx:77 +msgid "Controls" +msgstr "Puleʻi" + +#: src/components/windows/Help.jsx:62 +msgid "Click a color in palette to select it" +msgstr "Lomiʻi ʻi ha lanu ʻi palette ke fili ia" + +#: src/components/windows/Help.jsx:63 +#, javascript-format +msgid "Press ${ bindG } to toggle grid" +msgstr "Lomiʻi ʻa e ${bindG } ke tuʻu maʻu ʻi he grid" + +#: src/components/windows/Help.jsx:64 +msgid "Press ${ bindX } to toggle showing of pixel activity" +msgstr "" +"Lomiʻi ʻa e ${bindX } ke tuʻu maʻu ʻi hono fakahaaʻi ʻo e ʻekitiviti pixel" + +#: src/components/windows/Help.jsx:65 +#, javascript-format +msgid "Press ${ bindH } to toggle historical view" +msgstr "Lomiʻi ʻa e ${bindH } ke tuʻu maʻu ʻi he vakai fakahisitolia" + +#: src/components/windows/Help.jsx:66 +msgid "Press ${ bindR } to copy coordinates" +msgstr "Lomiʻi ʻa e ${bindR } ke hiki tatau e fakafekauʻaki" + +#: src/components/windows/Help.jsx:67 +#, javascript-format +msgid "Press ${ bindQ } or ${ bindE } to zoom" +msgstr "Lomiʻi ʻa e ${bindQ } pe ${bindE } ke fakaʻata" + +#: src/components/windows/Help.jsx:68 src/components/windows/Help.jsx:79 +#, javascript-format +msgid "Press ${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } to move" +msgstr "Lomiʻi ʻa e ${bindW}, ${bindA }, ${bindS }, ${bindD } ke hiki" + +#: src/components/windows/Help.jsx:69 src/components/windows/Help.jsx:80 +#, javascript-format +msgid "" +"Press ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } to move" +msgstr "" +"Lomiʻi ʻa e ${bindAUp }, ${bindALeft }, ${bindADown }, ${bindARight } ke hiki" + +#: src/components/windows/Help.jsx:70 +msgid "Drag ${ mouseSymbol } mouse or ${ touchSymbol } pan to move" +msgstr "Tohoʻi ʻa e ${mouseSymbol } mausi pe ${touchSymbol } kulo ke hiki" + +#: src/components/windows/Help.jsx:71 +#, javascript-format +msgid "Scroll ${ mouseSymbol } mouse wheel or ${ touchSymbol } pinch to zoom" +msgstr "" +"Scroll ${mouseSymbol } veʻeteka ʻo e mausi pe ${touchSymbol } fefaʻuhi ke " +"fakaʻata" + +#: src/components/windows/Help.jsx:72 +msgid "Hold left ${ bindShift } for placing while moving mouse" +msgstr "" +"Puke ʻa e toʻohema ${bindShift } ki hono fokotuʻu lolotonga hono hiki ʻo e " +"mausi" + +#: src/components/windows/Help.jsx:73 +#, javascript-format +msgid "" +"Hold right ${ bindShift } for placing while moving mouse according to " +"historical view" +msgstr "" +"Puke ʻa e toʻomataʻu ${ bindShift } ki hono fokotuʻu lolotonga hono ʻave ʻo " +"e mausi ʻo fakatatau ki he vakai fakahisitolia" + +#: src/components/windows/Help.jsx:74 src/components/windows/Help.jsx:85 +#, javascript-format +msgid "${ mouseSymbol } Left click or ${ touchSymbol } tap to place a pixel" +msgstr "" +"${mouseSymbol } toʻohema lomiʻi pe ${touchSymbol } lomiʻi ke fokotuʻu ha " +"pixel" + +#: src/components/windows/Help.jsx:75 src/components/windows/Help.jsx:87 +msgid "" +"Click ${ mouseSymbol } middle mouse button or ${ touchSymbol } long-tap to " +"select current hovering color" +msgstr "" +"Lomiʻi ʻi he ${mouseSymbol } meʻa lomi mausi pe ${touchSymbol } loloa ke " +"fili ʻa e lanu nau lolotonga" + +#: src/components/windows/Help.jsx:81 +msgid "Press ${ bindE } and ${ bindC } to fly up and down" +msgstr "Lomiʻi ʻa e ${bindE } mo e ${bindC } ke puna ki ʻolunga mo lalo" + +#: src/components/windows/Help.jsx:82 +#, javascript-format +msgid "${ mouseSymbol } Hold left mouse button and drag mouse to rotate" +msgstr "" +"${mouseSymbol } puke ʻa e meʻa lomi toʻohema ʻo e mausi pea tohoʻi ʻa e " +"mausi ke vilo" + +#: src/components/windows/Help.jsx:83 +#, javascript-format +msgid "" +"${ mouseSymbol } Scroll mouse wheel or hold ${ mouseSymbol } middle mouse " +"button and drag to zoom" +msgstr "" +"${mouseSymbol } scroll e veʻeteka ʻo e mausi pe puke ʻa e ${mouseSymbol } " +"meʻa lomi ʻo e mausi pea tohoʻi ke fakaʻata" + +#: src/components/windows/Help.jsx:84 +msgid "${ mouseSymbol } Right click and drag mouse to pan" +msgstr "${mouseSymbol } lomiʻi fakatoʻomataʻu pea tohoʻi ʻa e mausi ki he kulo" + +#: src/components/windows/Help.jsx:86 +#, javascript-format +msgid "" +"${ mouseSymbol } Right click or ${ touchSymbol } double-tap to remove a pixel" +msgstr "" +"${mouseSymbol } lomiʻi fakatoʻomataʻu pe ${touchSymbol } lomiʻi tuʻo ua ke " +"toʻo ha pixel" + +#: src/components/windows/Help.jsx:91 +msgid "" +"We thanks those artists very much, they offered their palettes to the public " +"on" +msgstr "" +"ʻOku mau fakamalo lahi ki he kau ʻaati ko ia, naʻa nau foaki ʻenau palettes " +"ki he kakai ʻi he" + +#: src/components/windows/Help.jsx:94 +#, javascript-format +msgid "Credit for the Palette of the Moon goes to ${ starhouseLink }." +msgstr "" +"ʻOku ʻalu ʻa e credit ki he Palette ʻo e mahina ki he ${ starhouseLink }." + +#: src/components/windows/Help.jsx:97 +msgid "Credit for the Palette of the Top10 canvas goes to ${ vinikLink }." +msgstr "" +"ʻOku ʻalu ʻa e credit ki he Palette ʻo e Top10 fakatataa ki he " +"${ vinikLink }." + +#: src/components/windows/UserArea.jsx:36 +#: src/components/windows/UserArea.jsx:56 +msgid "Profile" +msgstr "Fakamatala Fakafoʻituituí" + +#: src/components/windows/UserArea.jsx:59 +msgid "Statistics" +msgstr "Ngaahi Fakamatala Fakasitetisitiká" + +#: src/components/windows/UserArea.jsx:64 +msgid "Converter" +msgstr "Fakaului" + +#: src/components/windows/UserArea.jsx:70 +msgid "Modtools" +msgstr "Modtools" + +#: src/components/windows/UserArea.jsx:71 +msgid "Loading..." +msgstr "Load..." + +#: src/components/windows/UserArea.jsx:78 +msgid "Consider joining us on Guilded:" +msgstr "Fakakaukau ke ke kau fakataha mo kimautolu ʻi he Guilded:" + +#: src/components/windows/Register.jsx:87 +msgid "Register new account here" +msgstr "Lesisita heni ha ʻakauni foʻou" + +#: src/components/windows/Register.jsx:92 +#: src/components/windows/Register.jsx:98 +msgid "Name" +msgstr "Hingoa" + +#: src/components/windows/ForgotPassword.jsx:80 +#: src/components/windows/Register.jsx:100 +#: src/components/windows/Register.jsx:106 +msgid "Email" +msgstr "ʻĪmeili" + +#: src/components/ChangeMail.jsx:80 src/components/DeleteAccount.jsx:62 +#: src/components/LogInForm.jsx:84 src/components/windows/Register.jsx:108 +#: src/components/windows/Register.jsx:114 +msgid "Password" +msgstr "Lea Fufuú" + +#: src/components/windows/Register.jsx:116 +#: src/components/windows/Register.jsx:122 +msgid "Confirm Password" +msgstr "Fakapapauʻi ʻa e Lea Fufuú" + +#: src/components/windows/Register.jsx:124 +msgid "Captcha" +msgstr "Captcha" + +#: src/components/Admintools.jsx:154 src/components/Admintools.jsx:238 +#: src/components/ModCanvastools.jsx:302 src/components/ModCanvastools.jsx:382 +#: src/components/ModCanvastools.jsx:455 src/components/ModCanvastools.jsx:546 +#: src/components/ModIIDtools.jsx:135 +#: src/components/windows/ForgotPassword.jsx:84 +#: src/components/windows/Register.jsx:127 +msgid "Submit" +msgstr "Fakahū" + +#: src/components/windows/CanvasSelect.jsx:29 +msgid "" +"Select the canvas you want to use. Every canvas is unique and has different " +"palettes, cooldown and requirements. Archive of closed canvases can be " +"accessed here:" +msgstr "" +"Fili ʻa e fakatataa ʻoku ke fie fakaʻaongaʻi. ʻOku makehe ʻa e fakatataa " +"kotoa pe pea ʻoku kehekehe ʻa e palettes, cooldown mo e ngaahi fie maʻu. ʻE " +"lava ke maʻu heni ʻa e ʻakaivi ʻo e canvases kuo tapuni:" + +#: src/components/windows/CanvasSelect.jsx:37 +msgid "Archive" +msgstr "ʻAkaivi" + +#: src/components/windows/Archive.jsx:16 +msgid "" +"While we tend to not delete canvases, some canvases are started for fun or " +"as a request by users who currently like a meme. Those canvases can get " +"boring after a while and after weeks of no major change and if they really " +"aren't worth being kept active, we decide to remove them." +msgstr "" +"Neongo ʻoku ʻikai ke tau fakahehema ke tamateʻi canvases, ka ʻoku kamata ke " +"fiefia ha canvases ʻe niʻihi pe ko ha kole ʻa e kau fakaʻaongaʻi ʻoku nau " +"lolotonga hange ha meme. ʻE lava ke taʻeoli ʻa e ngaahi canvases ko ia hili " +"ha kiʻi vahaʻa taimi pea hili ha ngaahi uike ʻo e ʻikai ha liliu lahi pea " +"kapau ʻoku ʻikai ke nau mahuʻinga ke tauhi malohi, ʻoku tau fili ke toʻo " +"kinautolu." + +#: src/components/windows/Archive.jsx:18 +msgid "" +"Here we collect those canvases to archive them in a proper way (which is " +"currently just one)." +msgstr "" +"ʻOku tau tanaki heni ʻa e ngaahi canvases ko ia ke ʻakaivi kinautolu ʻi ha " +"founga totonu (ʻa ia ʻoku lolotonga taha pe)." + +#: src/components/windows/Archive.jsx:20 +msgid "Political Compass Canvas" +msgstr "Kapasa fakapolitikale fakatataa" + +#: src/components/windows/Archive.jsx:27 +msgid "" +"This canvas got requested during a time of political conflicts on the main " +"Earth canvas. It was a 1024x1024 representation of the political compass " +"with a 5s cooldown and 60s stacking. It got launched on May 11th and " +"remained active for months till it got shut down on November 30th." +msgstr "" +"Naʻe kole ʻa e fakatataa ko ʻeni lolotonga ha taimi ʻo e ngaahi fepakipaki " +"fakapolitikale ʻi he tefitoʻi mamani. Ko ha fakatata 1024x1024 ia ʻo e " +"kapasa fakapolitikale mo ha 5s cooldown mo e 60 tupu. Naʻe kamata ia ʻi he " +"ʻaho 11 ʻo Mee pea kei malohi pe ʻi ha ngaahi mahina kae ʻoua kuo tapuni ʻi " +"he ʻaho 30 ʻo Novema." + +#: src/components/windows/Archive.jsx:28 +msgid "" +"We decided to archive it as a timelapse with lossless encoded webm. Taking a " +"screenshot from the timelapse results in a perfect 1:1 representation of how " +"the canvas was at that time." +msgstr "" +"Naʻa mau fakakaukau ke ʻakaivi ia ko ha timelapse mo lossless encoded webm. " +"Toʻo ha ʻata mei he ngaahi ola timelapse ʻi ha fakatata haohaoa 1:1 ʻo e " +"founga naʻe ʻi ai ʻa e fakatataa ʻi he taimi ko ia." + +#: src/components/windows/ForgotPassword.jsx:58 +msgid "Sent you a mail with instructions to reset your password." +msgstr "" +"Ne ʻoatu ha meili mo ha ngaahi fakahinohino ke fakafoʻou hoʻo lea fufuú." + +#: src/components/windows/ForgotPassword.jsx:69 +msgid "Enter your mail address and we will send you a new password:" +msgstr "Fakahū ho tuʻasila meilí pea te mau ʻoatu ha lea fufū foʻou kiate koe:" + +#: src/components/windows/Chat.jsx:180 +msgid "Start chatting here" +msgstr "Kamata talanoa heni" + +#: src/components/windows/Chat.jsx:217 +msgid "Chat here" +msgstr "Talanoa heni" + +#: src/components/windows/Chat.jsx:243 +msgid "You must be logged in to chat" +msgstr "Kuo pau ke ke hu ki he polokalama ke talanoa" + +#: src/components/windows/Chat.jsx:273 +msgid "Channel settings" +msgstr "Fokotuʻutuʻu ʻo e senolo" + +#: src/components/Captcha.jsx:51 src/components/Captcha.jsx:105 +msgid "Could not load captcha" +msgstr "ʻIkai lava ʻo load captcha" + +#: src/components/Captcha.jsx:69 +msgid "Type the characters from the following image:" +msgstr "Taipeʻi ʻa e ngaahi mataʻitohi mei he ʻimisi ko ʻeni:" + +#: src/components/Captcha.jsx:72 +msgid "Tip: Not case-sensitive; I and l are the same" +msgstr "Tokoni: ʻikai ke pelepelengesi; ʻOku ou tatau pe mo l" + +#: src/components/Captcha.jsx:114 +msgid "Load Captcha" +msgstr "Load Captcha" + +#: src/components/Captcha.jsx:119 +msgid "Click to Load Captcha" +msgstr "Lomiʻi ke load Captcha" + +#: src/components/Captcha.jsx:124 +msgid "Can't read? Reload:" +msgstr "ʻIkai lava ʻo laukonga? Reload:" + +#: src/components/Captcha.jsx:128 +msgid "Reload" +msgstr "Reload" + +#: src/components/Captcha.jsx:138 +msgid "Enter Characters" +msgstr "Fakahū ha Ngaahi Mataʻitohi" + +#: src/utils/validation.js:17 +msgid "Email can't be empty." +msgstr "He ʻikai lava ke taʻe fakafonu e ʻimeili." + +#: src/utils/validation.js:18 +msgid "Email should be at least 5 characters long." +msgstr "" +"ʻOku totonu ke ʻoua naʻa toe siʻi hifo he mataʻitohi ʻe 5 ʻa e ʻimeili." + +#: src/utils/validation.js:19 +msgid "Email can't be longer than 40 characters." +msgstr "He ʻikai lava ke loloa ange ʻa e ʻimeili ʻi he mataʻitohi ʻe 40." + +#: src/utils/validation.js:20 +msgid "Email should at least contain a dot" +msgstr "ʻOku totonu ke ʻoua naʻa toe siʻi hifo he ʻimeili ha dot" + +#: src/utils/validation.js:22 +msgid "Email should contain a @" +msgstr "ʻOku totonu ke kau ʻi he ʻimeili ha @" + +#: src/utils/validation.js:29 +msgid "Name can't be empty." +msgstr "ʻIkai lava ke taʻe ʻi ai ha hingoa." + +#: src/utils/validation.js:30 +msgid "Name must be at least 2 characters long" +msgstr "Kuo pau ke mataʻitohi ʻe 2 hono lōloa ʻo e hingoá" + +#: src/utils/validation.js:31 +msgid "Name must be shorter than 26 characters" +msgstr "Kuo pau ke nounou ange ʻa e hingoá ʻi he mataʻitohi ʻe 26" + +#: src/utils/validation.js:38 +msgid "Name contains invalid character like @, /, \\ or #" +msgstr "ʻOku ʻi he hingoa ha mataʻitohi ʻoku hala hange ko @, /, \\ pe #" + +#: src/utils/validation.js:53 +msgid "No password given." +msgstr "ʻIkai ʻoange ha lea fufū." + +#: src/utils/validation.js:56 +msgid "Password must be at least 6 characters long." +msgstr "Kuo pau ke ʻoua naʻa toe siʻi hifo he mataʻitohi ʻe 6 ʻa e lea fufuú." + +#: src/utils/validation.js:59 +msgid "Password must be shorter than 60 characters." +msgstr "Kuo pau ke nounou ange ʻa e lea fufuú ʻi he mataʻitohi ʻe 60." + +#: src/components/ChangeMail.jsx:91 src/components/ChangeName.jsx:68 +#: src/components/ChangePassword.jsx:109 src/components/LanguageSelect.jsx:80 +msgid "Save" +msgstr "Seivi" + +#: src/components/GetIID.jsx:44 +msgid "Get IID" +msgstr "Maʻu IID" + +#: src/components/GetIID.jsx:53 +msgid "Copy" +msgstr "Hiki Tatau" + +#: src/components/LogInArea.jsx:19 +msgid "Login to access more features and stats." +msgstr "" +"Login ke maʻu ha ngaahi fotunga mo ha stats.allblacks.comaspprofile.asp lahi " +"ange." + +#: src/components/LogInArea.jsx:21 +msgid "Login with Name or Mail:" +msgstr "Login ʻaki e Hingoá pe Meilí:" + +#: src/components/LogInArea.jsx:28 +msgid "I forgot my Password." +msgstr "Kuo ngalo ʻeku Lea Fufuú." + +#: src/components/LogInArea.jsx:29 +msgid "or login with:" +msgstr "pe login mo e:" + +#: src/components/LogInArea.jsx:70 +msgid "or register here:" +msgstr "pe lesisita heni:" + +#: src/components/LogInArea.jsx:75 +msgid "Register" +msgstr "Lesisita" + +#: src/components/UserAreaContent.jsx:62 +msgid "Todays Placed Pixels" +msgstr "Todays fokotuʻu ʻa e pixel" + +#: src/components/UserAreaContent.jsx:66 +msgid "Daily Rank" +msgstr "Tuʻunga fakaʻaho" + +#: src/components/UserAreaContent.jsx:71 +msgid "Placed Pixels" +msgstr "Fokotuʻu ʻa e pixel" + +#: src/components/UserAreaContent.jsx:75 +msgid "Total Rank" +msgstr "Tuʻunga fakakatoa" + +#: src/components/UserAreaContent.jsx:80 +#, javascript-format +msgid "Your name is: ${ name }" +msgstr "Ko ho hingoa ko e: ${ name }" + +#: src/components/UserAreaContent.jsx:86 +msgid "Log out" +msgstr "Hu ki tuʻa" + +#: src/components/UserAreaContent.jsx:93 +msgid "Change Username" +msgstr "Liliu e Hingoa Ngāue ki he Polokala" + +#: src/components/UserAreaContent.jsx:103 +msgid "Change Mail" +msgstr "Liliu e Meilí" + +#: src/components/UserAreaContent.jsx:112 +msgid "Change Password" +msgstr "Liliu ʻa e Lea Fufuú" + +#: src/components/UserAreaContent.jsx:119 +msgid "Delete Account" +msgstr "Tāmateʻi e ʻAkauní" + +#: src/components/UserAreaContent.jsx:126 +msgid "Social Settings" +msgstr "Ngaahi Feituʻu Fakasōsialé" + +#: src/components/Converter.jsx:190 src/components/ModCanvastools.jsx:226 +msgid "Choose Canvas" +msgstr "Fili ʻa e fakatataa" + +#: src/components/Converter.jsx:216 +msgid "Palette Download" +msgstr "Palette Download" + +#: src/components/Converter.jsx:218 +#, javascript-format +msgid "Palette for ${ gimpLink }" +msgstr "Palette ki he ${ gimpLink }" + +#: src/components/Converter.jsx:236 +msgid "Image Converter" +msgstr "ʻImisi ʻo e fakaului" + +#: src/components/Converter.jsx:237 +msgid "Convert an image to canvas colors" +msgstr "Papi ului ha ʻimisi ki he ngaahi lanu fakatataa" + +#: src/components/Converter.jsx:256 +msgid "Choose Strategy" +msgstr "Fili ʻa e founga palani" + +#: src/components/Converter.jsx:294 +msgid "Serpentine" +msgstr "Serpentine" + +#: src/components/Converter.jsx:296 +msgid "Minimum Color Distance" +msgstr "Mamaʻo siʻisiʻi taha ʻo e lanu" + +#: src/components/Converter.jsx:323 +msgid "Calculate like GIMP" +msgstr "Fikaʻi hange ko GIMP" + +#: src/components/Converter.jsx:327 +msgid "Choose Color Mode" +msgstr "Fili ʻa e founga lanu" + +#: src/components/Converter.jsx:356 +msgid "Add Grid (uncheck if you need a 1:1 template)" +msgstr "Tanaki atu ʻa e grid (uncheck kapau ʻoku ke fie maʻu ha template 1:1)" + +#: src/components/Converter.jsx:378 src/components/Converter.jsx:394 +msgid "Offset" +msgstr "Seti" + +#: src/components/Converter.jsx:423 +msgid "Scale Image" +msgstr "Meʻafua ʻo e ʻimisi" + +#: src/components/Converter.jsx:434 +msgid "Width" +msgstr "Laulahi" + +#: src/components/Converter.jsx:465 +msgid "Height" +msgstr "Maʻolunga" + +#: src/components/Converter.jsx:504 +msgid "Keep Ratio" +msgstr "Tauhi ʻa e fika fehangahangai" + +#: src/components/Converter.jsx:517 +msgid "Anti Aliasing" +msgstr "ʻAnitai Aliasing" + +#: src/components/Converter.jsx:531 +msgid "Reset" +msgstr "Fakafoʻou" + +#: src/components/Converter.jsx:549 +msgid "Download Template" +msgstr "Download Template" + +#: src/components/Rankings.jsx:147 +msgid "Total" +msgstr "Fakakatoa" + +#: src/components/Rankings.jsx:156 +msgid "Today" +msgstr "ʻI he ʻAho ni" + +#: src/components/Rankings.jsx:165 +msgid "Yesterday" +msgstr "ʻAneafi" + +#: src/components/Rankings.jsx:174 +msgid "Countries Today" +msgstr "Ngaahi Fonua he ʻAho Ní" + +#: src/components/Rankings.jsx:183 +msgid "Charts" +msgstr "Ngaahi Sātí" + +#: src/components/Rankings.jsx:201 src/components/Rankings.jsx:210 +#: src/components/Rankings.jsx:219 +msgid "User" +msgstr "Tokotaha Ngāue ki he Polo" + +#: src/components/Rankings.jsx:226 +msgid "Country" +msgstr "Fonua" + +#: src/components/Rankings.jsx:286 +msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC." +msgstr "" +"Fakamatala fakamuimuitaha ʻi he miniti ʻe 5 kotoa pe. Muimuitaha " +"fakahokohoko fakafoʻou fakaʻaho ʻi he tuʻuapoo UTC." + +#: src/components/CanvasItem.jsx:29 +msgid "Online Users" +msgstr "Kau Fakaʻaongaʻi ʻi he ʻ" + +#: src/components/CanvasItem.jsx:34 +msgid "Cooldown" +msgstr "Cooldown" + +#: src/components/CanvasItem.jsx:40 +msgid "Stacking till" +msgstr "Fokotuʻutuʻu ʻo aʻu ki he" + +#: src/components/CanvasItem.jsx:42 +msgid "Ranked" +msgstr "Fakahokohoko" + +#: src/components/CanvasItem.jsx:44 +msgid "Yes" +msgstr "ʻIo" + +#: src/components/CanvasItem.jsx:44 +msgid "No" +msgstr "ʻIkai" + +#: src/components/CanvasItem.jsx:50 +msgid "Requirements" +msgstr "Ngaahi Fie Maʻú" + +#: src/components/CanvasItem.jsx:53 +msgid "User Account" +msgstr "ʻAkauni ʻa e Tokotaha Ngāue" + +#: src/components/CanvasItem.jsx:55 +#, javascript-format +msgid "and ${ canvas.req } Pixels set" +msgstr "mo e ${ canvas.req } pixel" + +#: src/components/CanvasItem.jsx:58 +msgid "Top 10 Daily Ranking" +msgstr "Tuʻunga fakaʻaho ʻe 10" + +#: src/components/CanvasItem.jsx:64 +msgid "Dimensions" +msgstr "Fua" + +#: src/core/chartSettings.js:30 +msgid "Top 10 Countries [pxls / day]" +msgstr "Ngaahi fonua ʻe 10 ki ʻolunga [pxls/ʻaho]" + +#: src/core/chartSettings.js:127 +msgid "Players and Pixels per hour" +msgstr "Kau vaʻinga mo e pixel ʻi he houa" + +#: src/core/chartSettings.js:221 +msgid "Top 10 Players [pxls / day]" +msgstr "Kau vaʻinga ʻe toko 10 [pxls/ʻaho]" + +#: src/core/chartSettings.js:294 +msgid "Countries by Pixels Today" +msgstr "Ngaahi fonua naʻe fai ʻe pixel he ʻaho ni" + +#: src/core/chartSettings.js:352 +msgid "Total Pixels placed per day" +msgstr "Fakakatoa ʻo e pixel ʻi he ʻaho" + +#: src/components/LogInForm.jsx:77 +msgid "Name or Email" +msgstr "Hingoa pe ʻĪmeilí" + +#: src/components/LogInForm.jsx:88 +msgid "LogIn" +msgstr "LogIn" + +#: src/components/UserMessages.jsx:28 +msgid "" +"Please verify your mail address or your account could get deleted after a " +"few days." +msgstr "" +"Kātaki ʻo fakapapauʻi ho tuʻasila meilí pe ʻe lava ke tāmateʻi hoʻo ʻakauní " +"hili ha ngaahi ʻaho siʻi." + +#: src/components/UserMessages.jsx:49 +msgid "A new verification mail is getting sent to you." +msgstr "ʻOku ʻoatu ha meili fakapapauʻi foʻou kiate koe." + +#: src/components/UserMessages.jsx:53 +msgid "Click here to request a new verification mail." +msgstr "Lomiʻi heni ke kole ha meili fakapapauʻi foʻou." + +#: src/components/ChangeName.jsx:64 +msgid "New Username" +msgstr "Hingoa Ngāue Foʻou ki he Polo" + +#: src/components/ChangePassword.jsx:21 +msgid "Passwords do not match." +msgstr "ʻOku ʻikai tatau ʻa e ongo lea fufuú." + +#: src/components/ChangePassword.jsx:44 +msgid "Changed Password successfully." +msgstr "Lava lelei hono liliu ʻo e Lea Fufuú." + +#: src/components/ChangePassword.jsx:88 +msgid "Old Password" +msgstr "Lea Fufū Motuʻá" + +#: src/components/ChangePassword.jsx:96 +msgid "New Password" +msgstr "Lea Fufū Foʻoú" + +#: src/components/ChangePassword.jsx:103 +msgid "Confirm New Password" +msgstr "Fakapapauʻi ʻa e Lea Fufū Foʻoú" + +#: src/components/ChangeMail.jsx:59 +msgid "" +"Changed Mail successfully. We sent you a verification mail, " +"please verify your new mail address." +msgstr "" +"Lava lelei hono liliu ʻo e meili. Ne mau ʻoatu ha meili fakapapauʻi, kātaki " +"ʻo fakapapauʻi ho tuʻasila meili foʻoú." + +#: src/components/ChangeMail.jsx:87 +msgid "New Mail" +msgstr "Meili Foʻoú" + +#: src/components/DeleteAccount.jsx:66 +msgid "Yes, Delete My Account!" +msgstr "ʻIo, tamateʻi ʻeku ʻakauni!" + +#: src/components/SocialSettings.jsx:35 +msgid "Block DMs" +msgstr "Poloka DMs" + +#: src/components/SocialSettings.jsx:42 +msgid "Block all Private Messages" +msgstr "Taʻofi kotoa e ngaahi popoaki fakatautaha" + +#: src/components/SocialSettings.jsx:44 +msgid "Private" +msgstr "Fakafoʻituitui" + +#: src/components/SocialSettings.jsx:51 +msgid "Don't show me in global stats" +msgstr "ʻOua te ke fakaʻaliʻali mai kiate au ʻi he fakamāmani lahí stats" + +#: src/components/SocialSettings.jsx:57 +msgid "Unblock Users" +msgstr "Taʻofi e kau fakaʻaongaʻi" + +#: src/components/SocialSettings.jsx:82 +msgid "You have no users blocked" +msgstr "ʻOku ʻikai ke ʻi ai haʻo loka" + +#: src/components/ModCanvastools.jsx:168 +msgid "Build image on canvas." +msgstr "Langa ha ʻimisi ʻi he fakatataa." + +#: src/components/ModCanvastools.jsx:171 +msgid "Build image and set it to protected." +msgstr "Langa ha ʻimisi pea fokotuʻu ia ke maluʻi." + +#: src/components/ModCanvastools.jsx:174 +msgid "Build image, but reset cooldown to unset-pixel cd." +msgstr "Langa ʻa e ʻimisi, kae fakafoʻou ʻa e cooldown ki he t-pixel cd." + +#: src/components/ModCanvastools.jsx:184 +msgid "Clean spare pixels that are surrounded by unset pixels" +msgstr "ʻOku maʻa ʻa e ngaahi liunga ʻoku ʻatakaiʻi ʻe he ngaahi liunga" + +#: src/components/ModCanvastools.jsx:188 +msgid "" +"Clean spare pixels that are surrounded by unset pixels and up to 1 other set " +"pixels" +msgstr "" +"ʻOku ʻi ai ha ngaahi liunga maʻa ʻoku ʻatakaiʻi ʻe he ngaahi pixel ʻoku " +"ʻikai ke ʻi ai ha liunga pea aʻu ki he 1 ngaahi liunga kehe" + +#: src/components/ModCanvastools.jsx:192 +msgid "" +"Clean spare pixels that are surrounded by a single other color or unset " +"pixels (VERY AGGRESSIVE ON CANVASES THAT ALLOW UNSET PIXELS (where there are " +"two cooldowns)!)" +msgstr "" +"ʻOku ʻi ai ha ngaahi liunga maʻa ʻoku ʻatakaiʻi ʻe ha lanu kehe pe ko ha " +"liunga ua (ʻoku ʻikai ke ʻi ai ha MEʻA ʻi he CANVASES ʻoku ne fakaʻata ʻa e " +"PIXELS (ʻa ia ʻoku ʻi ai ha cooldowns ʻe ua)!)" + +#: src/components/ModCanvastools.jsx:203 +msgid "Status: Not running" +msgstr "Tuʻunga: ʻikai lele" + +#: src/components/ModCanvastools.jsx:245 +msgid "Image Upload" +msgstr "Upload e ʻĪmisí" + +#: src/components/ModCanvastools.jsx:246 +msgid "Upload images to canvas" +msgstr "Upload e ngaahi ʻata ki he fakatataa" + +#: src/components/ModCanvastools.jsx:248 +msgid "File" +msgstr "Faile" + +#: src/components/ModCanvastools.jsx:269 +msgid "Coordinates in X_Y format:" +msgstr "Fakafekauʻaki ʻi he founga X_Y:" + +#: src/components/ModCanvastools.jsx:307 +msgid "Pixel Protection" +msgstr "Pixel maluʻi" + +#: src/components/ModCanvastools.jsx:309 +msgid "" +"Set protection of areas (if you need finer grained control, " +"use protect with image upload and alpha layers)" +msgstr "" +"Fokotuʻu ha maluʻi ʻo e ngaahi feituʻu (Kapau ʻoku ke fie maʻu ha " +"mapuleʻi grained lelei ange, fakaʻaongaʻi ʻa e maluʻi ʻaki ʻa e " +"ʻimisi upload mo e ʻAlifa)" + +#: src/components/ModCanvastools.jsx:330 src/components/ModCanvastools.jsx:403 +#: src/components/ModCanvastools.jsx:486 src/components/ModWatchtools.jsx:174 +msgid "Top-left corner" +msgstr "Tuliki toʻohema ʻi ʻolunga" + +#: src/components/ModCanvastools.jsx:347 src/components/ModCanvastools.jsx:420 +#: src/components/ModCanvastools.jsx:503 src/components/ModWatchtools.jsx:191 +msgid "Bottom-right corner" +msgstr "Tuliki toʻomataʻu ki lalo" + +#: src/components/ModCanvastools.jsx:388 +msgid "Rollback to Date" +msgstr "Rollback ki he ʻaho" + +#: src/components/ModCanvastools.jsx:390 +msgid "Rollback an area of the canvas to a set date (00:00 UTC)" +msgstr "Rollback ha feituʻu ʻo e fakatataa ki ha ʻaho kuo fokotuʻu (00:00 UTC)" + +#: src/components/ModCanvastools.jsx:461 +msgid "Canvas Cleaner" +msgstr "Fakamaʻa ʻo e fakatataa" + +#: src/components/ModCanvastools.jsx:463 +msgid "Apply a filter to clean trash in large canvas areas." +msgstr "" +"Fakaʻaongaʻi ha filter ke fakamaʻa ʻaki e veve ʻi he ngaahi feituʻu " +"fakatataa lalahi." + +#: src/components/ModCanvastools.jsx:564 +msgid "Stop Cleaner" +msgstr "Taʻofi e fakamaʻa" + +#: src/components/ModWatchtools.jsx:48 +msgid "Interval is invalid" +msgstr "ʻIkai tonu ʻa e vahaʻa taimi" + +#: src/components/ModWatchtools.jsx:122 +msgid "Check who placed in an area" +msgstr "Vakaiʻi pe ko hai naʻe tuku ʻi ha feituʻu" + +#: src/components/ModWatchtools.jsx:123 +msgid "Canvas" +msgstr "Fakatataa" + +#: src/components/ModWatchtools.jsx:142 +msgid "Interval" +msgstr "ʻI he vahaʻa ʻo" + +#: src/components/ModWatchtools.jsx:157 +msgid "IID (optional)" +msgstr "IID (fili pē)" + +#: src/components/ModWatchtools.jsx:236 +msgid "Get Pixels" +msgstr "Maʻu ʻa e pixel" + +#: src/components/ModWatchtools.jsx:267 +msgid "Get Users" +msgstr "Maʻu e kau fakaʻaongaʻi" + +#: src/components/ModIIDtools.jsx:20 +msgid "You must enter a duration" +msgstr "Kuo pau ke ke fakahū ha taimi" + +#: src/components/ModIIDtools.jsx:24 +msgid "You must enter an IID" +msgstr "Kuo pau ke ke fakahu ha IID" + +#: src/components/ModIIDtools.jsx:53 +msgid "IID Actions" +msgstr "Ngaahi ngaue IID" + +#: src/components/ModIIDtools.jsx:80 +msgid "Enter Reason" +msgstr "Fakahū ʻa e ʻUhingá" + +#: src/components/ModIIDtools.jsx:97 +msgid "(0 = infinite)" +msgstr "(0 = taʻe fakangatangata)" + +#: src/components/Admintools.jsx:109 +msgid "IP Actions" +msgstr "Ngaahi ngaue IP" + +#: src/components/Admintools.jsx:111 +msgid "Do stuff with IPs (one IP per line)" +msgstr "Fai ha ngaahi meʻa mo e IPs (taha IP ki he laine)" + +#: src/components/Admintools.jsx:158 +msgid "Manage Moderators" +msgstr "Tokangaʻi ʻo e moderators" + +#: src/components/Admintools.jsx:160 +msgid "Remove Moderator" +msgstr "Toʻo ʻa e tokotaha ʻoku ne" + +#: src/components/Admintools.jsx:193 +msgid "There are no mods" +msgstr "ʻOku ʻikai ke ʻi ai ha ngaahi meʻa ke fai" + +#: src/components/Admintools.jsx:198 +msgid "Assign new Mod" +msgstr "Vahe ha Mod foʻou" + +#: src/components/Admintools.jsx:201 +msgid "Enter UserName of new Mod" +msgstr "Fakahu ʻa e hingoa ngaue ʻo e Mod foʻou" + +#: src/components/Admintools.jsx:210 +msgid "User Name" +msgstr "Hingoa Ngāue ʻi he Polokalam" + +#: src/components/contextmenus/ChannelContextMenu.jsx:46 +msgid "Mute" +msgstr "Fakalongo" + +#: src/components/contextmenus/UserContextMenu.jsx:49 +msgid "Ping" +msgstr "Ping" + +#: src/components/contextmenus/UserContextMenu.jsx:75 +msgid "DM" +msgstr "DM" + +#: src/components/contextmenus/UserContextMenu.jsx:86 +msgid "Block" +msgstr "Poloka" + +#: src/components/windows/Help.jsx:15 src/components/windows/Settings.jsx:87 +msgctxt "keybinds" +msgid "G" +msgstr "G" + +#: src/components/windows/Help.jsx:16 src/components/windows/Settings.jsx:95 +msgctxt "keybinds" +msgid "X" +msgstr "X" + +#: src/components/windows/Settings.jsx:103 +msgctxt "keybinds" +msgid "M" +msgstr "M" + +#: src/components/windows/Help.jsx:17 src/components/windows/Settings.jsx:158 +msgctxt "keybinds" +msgid "H" +msgstr "H" + +#: src/components/windows/Help.jsx:18 +msgctxt "keybinds" +msgid "R" +msgstr "R" + +#: src/components/windows/Help.jsx:19 +msgctxt "keybinds" +msgid "Q" +msgstr "Q" + +#: src/components/windows/Help.jsx:20 +msgctxt "keybinds" +msgid "E" +msgstr "E" + +#: src/components/windows/Help.jsx:21 +msgctxt "keybinds" +msgid "W" +msgstr "W" + +#: src/components/windows/Help.jsx:22 +msgctxt "keybinds" +msgid "A" +msgstr "A" + +#: src/components/windows/Help.jsx:23 +msgctxt "keybinds" +msgid "S" +msgstr "S" + +#: src/components/windows/Help.jsx:24 +msgctxt "keybinds" +msgid "D" +msgstr "D" + +#: src/components/windows/Help.jsx:31 +msgctxt "keybinds" +msgid "Shift" +msgstr "Shift" + +#: src/components/windows/Help.jsx:32 +msgctxt "keybinds" +msgid "C" +msgstr "C" From 249fabfd91ab703221e4a7cfc7b9f34c2241349c Mon Sep 17 00:00:00 2001 From: HF Date: Sun, 1 Oct 2023 00:03:57 +0200 Subject: [PATCH 10/11] remove requests dependency from areaDownload.py --- utils/README.md | 1 + utils/areaDownload.py | 127 +++++++++++++++++++++++++++--------------- 2 files changed, 83 insertions(+), 45 deletions(-) diff --git a/utils/README.md b/utils/README.md index 1f7d4d88..46b6003d 100644 --- a/utils/README.md +++ b/utils/README.md @@ -30,6 +30,7 @@ Script to move canvas chunks, i.e. for resizing canvas downloads an area of the canvas into a png file. Usage: `areaDownload.py startX_startY endX_endY filename.png` (note that you can copy the current coordinates in this format on the site by pressing R) +**Requires:** aiohttp, asyncio and PIL python3 packages ## historyDownload.py downloads the history from an canvas area between two dates. diff --git a/utils/areaDownload.py b/utils/areaDownload.py index d926b8bc..8f7849cc 100755 --- a/utils/areaDownload.py +++ b/utils/areaDownload.py @@ -1,13 +1,12 @@ #!/usr/bin/python3 import PIL.Image -import sys, os, io +import sys, os, io, math import asyncio import aiohttp -import requests -import math -apime = requests.get('https://pixelplanet.fun/api/me').json() +USER_AGENT = "ppfun areaDownload 1.0" +PPFUN_URL = "https://pixelplanet.fun" class Color(object): def __init__(self, index, rgb): @@ -18,8 +17,8 @@ class EnumColorPixelplanet: ENUM = [] - def getColors(canvasid): - colors = apime['canvases'][canvasid]['colors'] + def getColors(canvas): + colors = canvas['colors'] for i, color in enumerate(colors): EnumColorPixelplanet.ENUM.append(Color(i, tuple(color))) @@ -82,12 +81,36 @@ class Matrix: self.matrix[x] = {} self.matrix[x][y] = color +async def fetchMe(): + url = f"{PPFUN_URL}/api/me" + headers = { + 'User-Agent': USER_AGENT + } + async with aiohttp.ClientSession() as session: + attempts = 0 + while True: + try: + async with session.get(url, headers=headers) as resp: + data = await resp.json() + return data + except: + if attempts > 3: + print(f"Could not get {url} in three tries, cancelling") + raise + attempts += 1 + print(f"Failed to load {url}, trying again in 5s") + await asyncio.sleep(5) + pass + async def fetch(session, canvasID, canvasoffset, ix, iy, target_matrix): - url = f'https://pixelplanet.fun/chunks/{canvasID}/{ix}/{iy}.bmp' + url = f"{PPFUN_URL}/chunks/{canvasID}/{ix}/{iy}.bmp" + headers = { + 'User-Agent': USER_AGENT + } attempts = 0 while True: try: - async with session.get(url) as resp: + async with session.get(url, headers=headers) as resp: data = await resp.read() offset = int(-canvasoffset * canvasoffset / 2) off_x = ix * 256 + offset @@ -110,14 +133,17 @@ async def fetch(session, canvasID, canvasoffset, ix, iy, target_matrix): break except: if attempts > 3: + print(f"Could not get {url} in three tries, cancelling") raise attempts += 1 + print(f"Failed to load {url}, trying again in 3s") + await asyncio.sleep(3) pass -async def get_area(canvasID, x, y, w, h): +async def get_area(canvasID, canvas, x, y, w, h): target_matrix = Matrix() target_matrix.add_coords(x, y, w, h) - canvasoffset = math.pow(apime["canvases"][f"{canvasID}"]["size"], 0.5) + canvasoffset = math.pow(canvas['size'], 0.5) offset = int(-canvasoffset * canvasoffset / 2) xc = (x - offset) // 256 wc = (x + w - offset) // 256 @@ -134,30 +160,30 @@ async def get_area(canvasID, x, y, w, h): def validateCoorRange(ulcoor: str, brcoor: str, canvasSize: int): # stolen from hf with love if not ulcoor or not brcoor: - return 'Not all coordinates defined' + return "Not all coordinates defined" splitCoords = ulcoor.strip().split('_') if not len(splitCoords) == 2: - return 'Invalid Coordinate Format for top-left corner' + return "Invalid Coordinate Format for top-left corner" x, y = map(lambda z: int(math.floor(float(z))), splitCoords) splitCoords = brcoor.strip().split('_') if not len(splitCoords) == 2: - return 'Invalid Coordinate Format for top-left corner' + return "Invalid Coordinate Format for top-left corner" u, v = map(lambda z: int(math.floor(float(z))), splitCoords) error = None if (math.isnan(x)): - error = 'x of top-left corner is not a valid number' + error = "x of top-left corner is not a valid number" elif (math.isnan(y)): - error = 'y of top-left corner is not a valid number' + error = "y of top-left corner is not a valid number" elif (math.isnan(u)): - error = 'x of bottom-right corner is not a valid number' + error = "x of bottom-right corner is not a valid number" elif (math.isnan(v)): - error = 'y of bottom-right corner is not a valid number' + error = "y of bottom-right corner is not a valid number" elif (u < x or v < y): - error = 'Corner coordinates are aligned wrong' + error = "Corner coordinates are aligned wrong" if not error is None: return error @@ -166,44 +192,55 @@ def validateCoorRange(ulcoor: str, brcoor: str, canvasSize: int): # stolen from canvasMinXY = -canvasMaxXY if (x < canvasMinXY or y < canvasMinXY or x >= canvasMaxXY or y >= canvasMaxXY): - return 'Coordinates of top-left corner are outside of canvas' + return "Coordinates of top-left corner are outside of canvas" if (u < canvasMinXY or v < canvasMinXY or u >= canvasMaxXY or v >= canvasMaxXY): - return 'Coordinates of bottom-right corner are outside of canvas' + return "Coordinates of bottom-right corner are outside of canvas" return (x, y, u, v) -if __name__ == "__main__": +async def main(): + apime = await fetchMe() + if len(sys.argv) != 5: print("Download an area of pixelplanet") print("Usage: areaDownload.py canvasID startX_startY endX_endY filename.png") print("(use R key on pixelplanet to copy coordinates)") - print("Canvas ID: ", end='') - for canvas in apime['canvases']: - if canvas == '2': + print("canvasID: ", end='') + for canvasID, canvas in apime['canvases'].items(): + if 'v' in canvas and canvas['v']: continue - print(f"{canvas} = {apime['canvases'][f'{canvas}']['title']}", end=' ') + print(f"{canvasID} = {canvas['title']}", end=', ') print() + return + + canvasID = sys.argv[1] + + if canvasID not in apime['canvases']: + print("Invalid canvas selected") + return + + canvas = apime['canvases'][canvasID] + + if 'v' in canvas and canvas['v']: + print("Can\'t get area for 3D canvas") + return + + parseCoords = validateCoorRange(sys.argv[2], sys.argv[3], canvas['size']) + + if (type(parseCoords) is str): + print(parseCoords) + sys.exit() else: - canvasID = sys.argv[1] + x, y, w, h = parseCoords + w = w - x + 1 + h = h - y + 1 - if canvasID == '2': - print('Can\'t get area for 3D canvas') - sys.exit() + EnumColorPixelplanet.getColors(canvas) + filename = sys.argv[4] - parseCoords = validateCoorRange(sys.argv[2], sys.argv[3], apime["canvases"][f"{canvasID}"]["size"]) + matrix = await get_area(canvasID, canvas, x, y, w, h) + matrix.create_image(filename) + print("Done!") - if (type(parseCoords) is str): - print(parseCoords) - sys.exit() - else: - x, y, w, h = parseCoords - w = w - x + 1 - h = h - y + 1 - - EnumColorPixelplanet.getColors(canvasID) - filename = sys.argv[4] - - loop = asyncio.new_event_loop() - matrix = loop.run_until_complete(get_area(canvasID, x, y, w, h)) - matrix.create_image(filename) - print("Done!") \ No newline at end of file +if __name__ == "__main__": + asyncio.run(main()) From e2e35971c7e55d6ad69129b5ed77676e61439942 Mon Sep 17 00:00:00 2001 From: HF Date: Sun, 1 Oct 2023 01:48:40 +0200 Subject: [PATCH 11/11] use api/me for historyDownload.py camel_case canvasID in areaDownload.py add parameters to USER_AGENT in both --- utils/README.md | 1 + utils/areaDownload.py | 22 ++--- utils/historyDownload.py | 179 +++++++++++++++++++-------------------- 3 files changed, 101 insertions(+), 101 deletions(-) diff --git a/utils/README.md b/utils/README.md index 46b6003d..68c1edca 100644 --- a/utils/README.md +++ b/utils/README.md @@ -36,6 +36,7 @@ Usage: `areaDownload.py startX_startY endX_endY filename.png` downloads the history from an canvas area between two dates. Useage: `historyDownload.py canvasId startX_startY endX_endY start_date end_date This is used for creating timelapses, see the cmd help to know how +**Requires:** aiohttp, asyncio and PIL python3 packages ## pp-center\*.png center logo of pixelplanet diff --git a/utils/areaDownload.py b/utils/areaDownload.py index 8f7849cc..9af03e09 100755 --- a/utils/areaDownload.py +++ b/utils/areaDownload.py @@ -5,7 +5,7 @@ import sys, os, io, math import asyncio import aiohttp -USER_AGENT = "ppfun areaDownload 1.0" +USER_AGENT = "ppfun areaDownload 1.0 " + ' '.join(sys.argv[1:]) PPFUN_URL = "https://pixelplanet.fun" class Color(object): @@ -102,8 +102,8 @@ async def fetchMe(): await asyncio.sleep(5) pass -async def fetch(session, canvasID, canvasoffset, ix, iy, target_matrix): - url = f"{PPFUN_URL}/chunks/{canvasID}/{ix}/{iy}.bmp" +async def fetch(session, canvas_id, canvasoffset, ix, iy, target_matrix): + url = f"{PPFUN_URL}/chunks/{canvas_id}/{ix}/{iy}.bmp" headers = { 'User-Agent': USER_AGENT } @@ -140,7 +140,7 @@ async def fetch(session, canvasID, canvasoffset, ix, iy, target_matrix): await asyncio.sleep(3) pass -async def get_area(canvasID, canvas, x, y, w, h): +async def get_area(canvas_id, canvas, x, y, w, h): target_matrix = Matrix() target_matrix.add_coords(x, y, w, h) canvasoffset = math.pow(canvas['size'], 0.5) @@ -154,7 +154,7 @@ async def get_area(canvasID, canvas, x, y, w, h): async with aiohttp.ClientSession() as session: for iy in range(yc, hc + 1): for ix in range(xc, wc + 1): - tasks.append(fetch(session, canvasID, canvasoffset, ix, iy, target_matrix)) + tasks.append(fetch(session, canvas_id, canvasoffset, ix, iy, target_matrix)) await asyncio.gather(*tasks) return target_matrix @@ -206,20 +206,20 @@ async def main(): print("Usage: areaDownload.py canvasID startX_startY endX_endY filename.png") print("(use R key on pixelplanet to copy coordinates)") print("canvasID: ", end='') - for canvasID, canvas in apime['canvases'].items(): + for canvas_id, canvas in apime['canvases'].items(): if 'v' in canvas and canvas['v']: continue - print(f"{canvasID} = {canvas['title']}", end=', ') + print(f"{canvas_id} = {canvas['title']}", end=', ') print() return - canvasID = sys.argv[1] + canvas_id = sys.argv[1] - if canvasID not in apime['canvases']: + if canvas_id not in apime['canvases']: print("Invalid canvas selected") return - canvas = apime['canvases'][canvasID] + canvas = apime['canvases'][canvas_id] if 'v' in canvas and canvas['v']: print("Can\'t get area for 3D canvas") @@ -238,7 +238,7 @@ async def main(): EnumColorPixelplanet.getColors(canvas) filename = sys.argv[4] - matrix = await get_area(canvasID, canvas, x, y, w, h) + matrix = await get_area(canvas_id, canvas, x, y, w, h) matrix.create_image(filename) print("Done!") diff --git a/utils/historyDownload.py b/utils/historyDownload.py index fd0a08fa..abd693e9 100755 --- a/utils/historyDownload.py +++ b/utils/historyDownload.py @@ -5,7 +5,10 @@ import sys, io, os import datetime import asyncio import aiohttp -import json + +USER_AGENT = "ppfun historyDownload 1.0 " + ' '.join(sys.argv[1:]) +PPFUN_URL = "https://pixelplanet.fun" +PPFUN_STORAGE_URL = "https://storage.pixelplanet.fun" # how many frames to skip # 1 means none @@ -14,62 +17,35 @@ import json # [...] frameskip = 1 -canvases = [ - { - "canvas_name": "earth", - "canvas_size": 256*256, - "canvas_id": 0, - "bkg": (202, 227, 255), - }, - { - "canvas_name": "moon", - "canvas_size": 16384, - "canvas_id": 1, - "bkg": (49, 46, 47), - "historical_sizes" : [ - ["20210417", 4096], - ] - }, - { - }, - { - "canvas_name": "corona", - "canvas_size": 256, - "canvas_id": 3, - "bkg": (33, 28, 15), - }, - { - "canvas_name": "compass", - "canvas_size": 1024, - "canvas_id": 4, - "bkg": (196, 196, 196), - }, - { - }, - { - }, - { - "canvas_name": "1bit", - "canvas_size": 256*256, - "canvas_id": 7, - "bkg": (0, 0, 0), - }, - { - "canvas_name": "top10", - "canvas_size": 2048, - "canvas_id": 8, - "bkg": (197, 204, 184), - "historical_sizes" : [ - ["20220626", 1024], - ] - }, - ] - +async def fetchMe(): + url = f"{PPFUN_URL}/api/me" + headers = { + 'User-Agent': USER_AGENT + } + async with aiohttp.ClientSession() as session: + attempts = 0 + while True: + try: + async with session.get(url, headers=headers) as resp: + data = await resp.json() + return data + except: + if attempts > 3: + print(f"Could not get {url} in three tries, cancelling") + raise + attempts += 1 + print(f"Failed to load {url}, trying again in 5s") + await asyncio.sleep(5) + pass + async def fetch(session, url, offx, offy, image, bkg, needed = False): attempts = 0 + headers = { + 'User-Agent': USER_AGENT + } while True: try: - async with session.get(url) as resp: + async with session.get(url, headers=headers) as resp: if resp.status == 404: if needed: img = PIL.Image.new('RGB', (256, 256), color=bkg) @@ -91,11 +67,9 @@ async def fetch(session, url, offx, offy, image, bkg, needed = False): attempts += 1 pass -async def get_area(canvas, x, y, w, h, start_date, end_date): - canvas_data = canvases[canvas] - canvas_id = canvas_data["canvas_id"] - canvas_size = canvas_data["canvas_size"] - bkg = canvas_data["bkg"] +async def get_area(canvas_id, canvas, x, y, w, h, start_date, end_date): + canvas_size = canvas["size"] + bkg = tuple(canvas['colors'][0]) delta = datetime.timedelta(days=1) end_date = end_date.strftime("%Y%m%d") @@ -110,8 +84,8 @@ async def get_area(canvas, x, y, w, h, start_date, end_date): start_date = start_date + delta fetch_canvas_size = canvas_size - if 'historical_sizes' in canvas_data: - for ts in canvas_data['historical_sizes']: + if 'historicalSizes' in canvas: + for ts in canvas['historicalSizes']: date = ts[0] size = ts[1] if iter_date <= date: @@ -122,14 +96,14 @@ async def get_area(canvas, x, y, w, h, start_date, end_date): wc = (x + w - offset) // 256 yc = (y - offset) // 256 hc = (y + h - offset) // 256 - print("Load from %s / %s to %s / %s" % (xc, yc, wc + 1, hc + 1)) + print("Load from %s / %s to %s / %s with canvas size %s" % (xc, yc, wc + 1, hc + 1, fetch_canvas_size)) tasks = [] async with aiohttp.ClientSession() as session: image = PIL.Image.new('RGBA', (w, h)) for iy in range(yc, hc + 1): for ix in range(xc, wc + 1): - url = 'https://storage.pixelplanet.fun/%s/%s/%s/%s/tiles/%s/%s.png' % (iter_date[0:4], iter_date[4:6] , iter_date[6:], canvas_id, ix, iy) + url = '%s/%s/%s/%s/%s/tiles/%s/%s.png' % (PPFUN_STORAGE_URL, iter_date[0:4], iter_date[4:6] , iter_date[6:], canvas_id, ix, iy) offx = ix * 256 + offset - x offy = iy * 256 + offset - y tasks.append(fetch(session, url, offx, offy, image, bkg, True)) @@ -143,10 +117,13 @@ async def get_area(canvas, x, y, w, h, start_date, end_date): cnt += 1 #frames.append(image.copy()) image.save('./timelapse/t%s.png' % (cnt)) + headers = { + 'User-Agent': USER_AGENT + } while True: - async with session.get('https://pixelplanet.fun/history?day=%s&id=%s' % (iter_date, canvas_id)) as resp: + async with session.get('%s/history?day=%s&id=%s' % (PPFUN_URL, iter_date, canvas_id), headers=headers) as resp: try: - time_list = json.loads(await resp.text()) + time_list = await resp.json() break except: print('Couldn\'t decode json for day %s, trying again' % (iter_date)) @@ -162,7 +139,7 @@ async def get_area(canvas, x, y, w, h, start_date, end_date): image_rel = image.copy() for iy in range(yc, hc + 1): for ix in range(xc, wc + 1): - url = 'https://storage.pixelplanet.fun/%s/%s/%s/%s/%s/%s/%s.png' % (iter_date[0:4], iter_date[4:6] , iter_date[6:], canvas_id, time, ix, iy) + url = '%s/%s/%s/%s/%s/%s/%s/%s.png' % (PPFUN_STORAGE_URL, iter_date[0:4], iter_date[4:6] , iter_date[6:], canvas_id, time, ix, iy) offx = ix * 256 + offset - x offy = iy * 256 + offset - y tasks.append(fetch(session, url, offx, offy, image_rel, bkg)) @@ -183,41 +160,63 @@ async def get_area(canvas, x, y, w, h, start_date, end_date): #frames[0].save('timelapse.png', save_all=True, append_images=frames[1:], duration=100, loop=0, default_image=False, blend=1) -if __name__ == "__main__": +async def main(): + apime = await fetchMe() + if len(sys.argv) != 5 and len(sys.argv) != 6: print("Download history of an area of pixelplanet - useful for timelapses") print("") - print("Usage: historyDownload.py canvasId startX_startY endX_endY start_date [end_date]") + print("Usage: historyDownload.py canvasID startX_startY endX_endY start_date [end_date]") print("") print("→start_date and end_date are in YYYY-MM-dd formate") print("→user R key on pixelplanet to copy coordinates)") print("→images will be saved into timelapse folder)") + print("canvasID: ", end='') + for canvas_id, canvas in apime['canvases'].items(): + if 'v' in canvas and canvas['v']: + continue + print(f"{canvas_id} = {canvas['title']}", end=', ') + print() print("-----------") print("You can create a timelapse from the resulting files with ffmpeg like that:") print("ffmpeg -framerate 15 -f image2 -i timelapse/t%d.png -c:v libvpx-vp9 -pix_fmt yuva420p output.webm") print("or lossless example:") print("ffmpeg -framerate 15 -f image2 -i timelapse/t%d.png -c:v libvpx-vp9 -pix_fmt yuv444p -qmin 0 -qmax 0 -lossless 1 -an output.webm") + return + + canvas_id = sys.argv[1] + + if canvas_id not in apime['canvases']: + print("Invalid canvas selected") + return + + canvas = apime['canvases'][canvas_id] + + if 'v' in canvas and canvas['v']: + print("Can\'t get area for 3D canvas") + return + + start = sys.argv[2].split('_') + end = sys.argv[3].split('_') + start_date = datetime.date.fromisoformat(sys.argv[4]) + if len(sys.argv) == 6: + end_date = datetime.date.fromisoformat(sys.argv[5]) else: - canvas = int(sys.argv[1]) - start = sys.argv[2].split('_') - end = sys.argv[3].split('_') - start_date = datetime.date.fromisoformat(sys.argv[4]) - if len(sys.argv) == 6: - end_date = datetime.date.fromisoformat(sys.argv[5]) - else: - end_date = datetime.date.today() - x = int(start[0]) - y = int(start[1]) - w = int(end[0]) - x + 1 - h = int( end[1]) - y + 1 - loop = asyncio.get_event_loop() - if not os.path.exists('./timelapse'): - os.mkdir('./timelapse') - loop.run_until_complete(get_area(canvas, x, y, w, h, start_date, end_date)) - print("Done!") - print("to create a timelapse from it:") - print("ffmpeg -framerate 15 -f image2 -i timelapse/t%d.png -c:v libvpx-vp9 -pix_fmt yuva420p output.webm") - print("example with scaling *3 and audio track:") - print("ffmpeg -i ./audio.mp3 -framerate 8 -f image2 -i timelapse/t%d.png -map 0:a -map 1:v -vf scale=iw*3:-1 -shortest -c:v libvpx-vp9 -c:a libvorbis -pix_fmt yuva420p output.webm") - print("lossless example:") - print("ffmpeg -framerate 15 -f image2 -i timelapse/t%d.png -c:v libvpx-vp9 -pix_fmt yuv444p -qmin 0 -qmax 0 -lossless 1 -an output.webm") + end_date = datetime.date.today() + x = int(start[0]) + y = int(start[1]) + w = int(end[0]) - x + 1 + h = int( end[1]) - y + 1 + if not os.path.exists('./timelapse'): + os.mkdir('./timelapse') + await get_area(canvas_id, canvas, x, y, w, h, start_date, end_date) + print("Done!") + print("to create a timelapse from it:") + print("ffmpeg -framerate 15 -f image2 -i timelapse/t%d.png -c:v libvpx-vp9 -pix_fmt yuva420p output.webm") + print("example with scaling *3 and audio track:") + print("ffmpeg -i ./audio.mp3 -framerate 8 -f image2 -i timelapse/t%d.png -map 0:a -map 1:v -vf scale=iw*3:-1 -shortest -c:v libvpx-vp9 -c:a libvorbis -pix_fmt yuva420p output.webm") + print("lossless example:") + print("ffmpeg -framerate 15 -f image2 -i timelapse/t%d.png -c:v libvpx-vp9 -pix_fmt yuv444p -qmin 0 -qmax 0 -lossless 1 -an output.webm") + +if __name__ == "__main__": + asyncio.run(main())