From 9dd31b0f7645f9319460a0cebfabd3c0ef4672b8 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Thu, 17 Apr 2025 09:59:51 -0300 Subject: [PATCH] Update Spanish translations for various UI elements and messages --- locale/es/LC_MESSAGES/django.mo | Bin 0 -> 46268 bytes locale/es/LC_MESSAGES/django.po | 898 +++++++++++++++++++------------- 2 files changed, 550 insertions(+), 348 deletions(-) create mode 100644 locale/es/LC_MESSAGES/django.mo diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..79eb150bb1ae5793f4b809728776519bc741067e GIT binary patch literal 46268 zcmeI5378#6b?@6d7I+6^gN@s=jU=oYS+?axmSvAeqXm!T@r-2S1;VHYhOh*K2{;gzM{q3Q1ri7e5S9@32P7m9cp*S|dGLP!bE>-g-nm*F z;zz#k<$mh)X1V_9(j@t%c?7=YvOpF9DANUmw!n2_DV${UEPNJ{GS33{<`^gR0`+gGYh~UgUTT z_z133@OW?;sPZobRn8XhPH;S=e-(Tj*Z%+>3m&p2Nlpe&03QRM2R;%U1yk@TAk9p6 zf@;Tez;}c9g6DzPUF`UBQ006Qge1xLz=OdP*LwY*0IHlp@FeiufLDg}I;eWLLDA_p z@G$UBQ0;#icsO_u_-OFnkp2Lu`hFICJor`cRPg8EDd6KSNs`BctHIO3aqtXqK3u;6 zJeTVS!Lz}i1$@$_NkZ2rPX+bdt)TknEuiTCe(*%_mtW z{W1dT`RhSFKMU%;yTD=aJ>ZkUe*xEnmtGe51yp-q0;-*F2KC-|hwD!U`~tX`^lySH z|6mH$`;G%o1y2vx>jPd5iq12j_@@CP3dzl&=yf}&=idOn7rYNt`%3G)eN&+N<7QC( zdK;+zyCdMMLACq$LDlEOp!nxg;r>rS@!P>8-p`K%7jeB9RJjA7`u%)R_1OTz`pFHT z>U9_R1n^!^&wUD1d0zna-XDOxA~_IZUJY&luLSP~ZvcM`UJhQl!R6`=px*a>Q2hA` zQ2g|5Q1t&5sCGPhqvL5HB9xpBs$c4$>TwIG{I`Q=fp>-UKL=HhzX6{E4sP;%_kpKy zy&F6O{5B{#Ivi%u`<8%`)AK;_)h1B=d>xpA&jwEi?*`R>9|I2q{|XeHz6?I`0OTE1 zJ&zgnemog`1lNnfL%=h^Mc_&h7EIQFE5K)i(rfnx{1$j1*T--6_nio;oF{@Re+8)b zUIZQvj)KR5SAnY6jo_tV6BNDg5BGP2bV>3>Q2qLZE#Cf%LFF3-mxI@Xs^^`c+WkuK ziQor8(d`>x3jPvQy-vBp>$MbAz0L(yj}h=Fa5H!s_*78$p9|`_mxFrG>p->Zt)S@i z-f;baaQ|cAQKbJRsDA%CC_ViXP<(X6n798)0oQ`+$8k{oSOy;jK0lG9^gIJR6C4cb*M{^dQ2866`sdl8%DEFf6nq(|{(B9m@%ruH@!)Q775EiU z`se7U_;aJ6%G(Ma4Nih5fNfCy@M7>d@SULe<^k{?@GGF&x$7E#-%CJU{~oA(e+Y_C zJ_V{>Ujjvs?|`D;Bd_)QM}w;G6F{|l5LEv2!SldjQ0=@0RQqlRMZXt;%J*teeElX+ z{r*u<`9BUyKYkVz9e)H$&QH3|+qoK4d6$E#&p4?5yBd59SOzZ!ZvmeNegM1;y!d(_ zA07Zd%=IBprCsRBKLwX@{r#u;cyla+#f4mN2G0PW4_3f;flmUDdpf!iTniq;^Zx{@ z-v3VM9jJQ$GpKSO0kPDcV*)M)RsVCqo59VX-t!4ieD`Hg@B0C$ z=Y9pMyrZX_-_HQmpCwTIemD3;@ILT%@C)EU;C0hpzZ(M1f-3)+;K|^NL5fc91y2Ew znSmeZzm?!&6tJU8-+<4q!Mg`ycQ>%lxE^T2uZK|g4rPGPy9IgVxnpm2J+kq+^aIz= z1*K2kcAN9<--3s6eb{e#KOO~&UZ;RcUj?e27l-TdaD6TKSkfEd>EQE0_0Ky&>4QH8 z#TTCe)z4o8)i1vQsb2Dk=V7~pM}lhq9pGZ{E>Lv%2q^vVx1jpr7og~R#O=<%CxNQp zT2OMa9()cs2QCMH1TFKo-c;$pMlaJkGsRiiS?lB zzXMc#-wdt>zX7fTAAhH}=jq@8*DnOsUmpZT$G-$m1HTC_0}pwD%f$*%^}7%}AG{Jg z9lR5ioZbhX0Dcm@1pF3wIk@G|9|c|m9tKW< z>c={`2z)Up`n(1dUEU6=-k%ETUjOC# z1J`ps2&x}Cpy>ZX@F?)zpy={ZP;&59P~*3siWQ0;jtDE`?Air-!dE(QMtTnT;;d^C9CtDKI5;4xgE z2R`BeY$)(ZuCIKxkCRUabzK3~e{Jvx@D}jN;2q!-!Owwu&o98`;Ay|><&S~Kas3of z?XCsf0jj@m1;t;l1s?;xDct`6xQgosLDlc)p!#vqYuwHo1f`eeLEV2$}p!(&bp!oB<;0Ex}*L(kL0SCE$CMdaj2dMseU%-!oD*uz9 z>i5}z-v-6UKLt+$4}1eUA3OyVJ)Z`i1-=M882kvR_B;qa3H&m6E_m?odA%wqV=NeG$egUZGUkZxeUjRj?uYp&BKLJIT^>6fk zd^&gr*LQ%Ig7<;z!5@N>uk-G4y>KHaI@|+Z48A?!cR{u5^f!6GT?DHA*Ms8!7l69| z$Dru?8BlubOQ7W88=&~%C*l49Z+5Yz|+B(fNIbEpz?njRQaC=CD&g8PX>Pgj)RB4 z9UcU)2P@!*!SldV|A4*(p8}qI0MEX|`ET&v5N`rkasMvx3E*eJGWbJK^x67OXbV0A zydOOBUEUuLf{VHS45)tpF?bO8D{wP-(0wikSAvrBNl^XY0@bc(2Yd}Ed3i4=z4I|p z_4vDh{|27I_2b{|_RU40%9{oyfAgU3zX%i^-w6(Ye+@1JlRxx+d=etVro;U^LGky?1Ktfjm+NFR zUc|AULv=cz`|Gy;icY8cFZ?w58Ymek{!Zb(=4}uk`yI&NmvV^r^jpEb4IIVa z4O~3PaS7?ibBG_eaeR#9Dz2{pi@$Ps{u*!-hvYy08l1d@2mUR1U3gAeFh!CXt{WB8Q6=r~z+=H-j&aW4%JF#4F9birp`T=3zb|t9FOJK& zuiqw)A96gID4nUhy>Jd^wSUG9){xc)#mzaCu1bp>1% z(*7;rk)%J4<5Z4m(vIXfnDZ?h1Dvk`58^nQ<4fTg!I>PFllHWb_77m4>#=aXlXLwZ z>yZ6@MRw*Vk0Rf-95-_L=y2~!u3sL`-xlyIV2$)ogzG`hpU(O19OrSofa9qg&msM( z9EWmzj_XS};%_Z!_r{BWXOngt=ZAy(%{bV&`wq_MNPjHHBg6d@z|WAr3;ZtlT8T6bzZ~qFM+rNCO z+t!(CE3MYsmF84wvXZtc%^j6iTH;?i*_fScR%R;oR&_@uZ8sXVbgI!zXG`_cbhSR6 zPQ_|AJGDw{d0MHLw%2r{Ln$pDNUO7RwaRRz-cC!geeGsxYN|S!&NXV)$tthfUTM!) zDs^l4TtyF->gBXfYNL5mYcSo^PFpIcI;Gr|R$DJ=&Gf6lTxs&AN}GDsXbu^cTTxqv zw$hXWA*m|FZOmH{G>Aq{R$CQiYByTI+n%+(R(xiISXw)uMYg8iAWr~W4 zlr7#0DN9}fe@jJ_tBRa~Jjzk2@2EB#by0b6|F~ntezM2@bMLxB^Cv2`inZ?H;n!;# zoph!oew?YKjX9A~oK~8ftL-EWW)?SEQreoMW5sNFm!yz75KkSkLX>Z$vz=PI3ah4p z0qGb@FLdhQn(fWCI`)gglBB3R!WmIu!u-blBzG+{k3a9R;!edh`W0A=uea3_GW3WT2||uRsqsfLcKG) zot8DGdUQ@YU8z^lj+OFqdTWjnB@w)PC!*Oc^bfrUx2of|G}>u_yR$Bj1Ju(E)%M2D_J`iT zK~cdlTZhNa+_r8Ei9*_PZZs+CF!D^gVu$@Qelso8dgw0|vw-$;N3JyYdm{OHCVzWtgSq>eLiU9;?+9*mBeKvmJ&9Jc*83JC$;^ zZ3XOCtz|$rE6tAE2J5VexJuT#fxX!?YY+K6)UE( zoftEq%Zf_5Lv0(=t!iyYX~jIl&$JS5n6GRvm1nEug%YSTdUpdxM{y;MQQEen!TCY-oLruuyyBLWpz4+ov_c27CS(KGL^Nr`N%cb ztTu2}s<(J&;GRKal~=TXF(9kcB29_$*z)g`U3G1x+4%QV7t4Ccot^!wbb&d{Ym8&A zH%08EQ8ynLbIW}&9mkb4J5X$eP0X z`t|J!qS7oicVd~>I_5#mGZ#4P0oMh2F@j5g~Hg(NUPsu(U&yU6&RFX0q#YA@lA z%4?U9aA=dEOXpRx)ghWr(>h!`+IeLm^18r-NVZd?oIb7eqmI=XP@8vX$C+ zK4O+)?@w9E)yTyL39(6};wpQmYwqZ-nK^f@{QPvZvZGRKLECe4m(K-uduQ6BA4Bz0 zZD*^;j7A9$O-|zatBTu8Equ=wnJTl?1g4OGhs7!dRzu@hIE9cyXFKtenMOk_Fqm$E zyR$N88>mk@D)5K+dq=f0PXbYyw&F5y6y|aVVn9giz?&*N10!YLs;YjKo|Apv%`sGY zeFyqlvHs%a)K>1NWFjlkYTezN(uG85hD&v^OQ>q8-d)|UNBY%EBARYiP^nk*QMIv3 za~4ZK21^L65FBB&@GwfVGE1<=>gZvkoEKEFb&-=ZZ@QPR3pu6RYix<&Gu3Ill!2O9 zBI^m~s4fDlFdIAe*cvp(j8rs{3Oc!OTe`_5=3iLHepDRNScOZ4H{9qMKw=LEt}0D7 z8)8uDS>sLX!O;J3X6#3JBC_4`UaE+LEe=@mVBcVBiYq5aF;pU-A7Awl-Nt#5jSV+Qi z*A5erYna|I3jN$#v-NQ`QH|9W(Z@=PZ6Jy$ca&A6JFo8o<~Wx^Fq0JEU2oCJ9?c@# zjkbn(7IKv-!=bTFj2ESL2mi0qn&YJ?Wg@E~K4jjtHHfzpr%|t3<7dzYS+fy^Vsym1 zUSC?&q5GKN<=SQ zd^JQHuT0U3nRJr^&O1uA#cB(NOouqCGUb6Dg#w5w_V!azRj)Fx5Y*)umzF>`ICG27WED~&qet{DpdVZ`>T9+kDtUf7 z8Paq{GK8E;7?=z4llfp{D>{xSmxwUW8{b`$47F3mN82WBs0(#hZptH@m6BAl(RO}1 z#oU~ShiB15Wx3099ZV`8flbvDNe}K7Oj*LblO&psv>{ni4X10StVY?o^wwsB&_dZ$ zNAV_kKq7y1p3K);ozHoqcgz*aI-t8V_W4+`qvEXEg14Ci9eA!-7x|>CQ)i8As`$e zi6p}{Vl@6&I&K&pm-yoX85Ll0e;Glcm8)p!Y8W&;?K%2LzGS?hV6Zt z9Mmuo2D3sJJj6884y;mUO%>@N5LrfNXSwM6VA>;wu^!o7d$D+cmq$WcXi={2EL@B5 zLs!-)pd$tuQs`Z3xjNl@QTwb?;2+gULJ}ZF7vzgVVxoz(=PQ_Gncy>pX>V+Y{ke%eNC&Ekf5T>b$O~Ew@10M`nSREk6+m)cGXR@wJK$eU_&UFGY zccxpghO&!ng52lcl6AonO)u-T+vvwUL1sd(lOD2Nnhs6DQqdx{kWFrs_FAFl7RH+B z#ikbGnjH_bV;2M)Gfqvrc|4em5X!JW9;Y>{3cgXYtv5+VW>K5|HyzQE0+ha`rJJ4c zx~~`uoDD;A987yIcg6H{q0*sJdS^P(*?uE7Nw|V1=4NEhx`&ozbz!D{r>(*usXW(U zB~gpBE?>9zI?W#r`P|`^fe?A#*Cj;*g&UH;%*3OPav*)6MyTOSPw=W!*{gAeTUb%) z7F#+HZW}+1G@E3YWU$rvTxI!8yRte7sZwBhGVk%sF?kN_Zr%fvZG2Fr{qYNnNhIu+K2r+)WLAm^sca zpeC6THS6H)W;OWtt7YW)JwmPK?N%ffkwoSi^3s^6-7qWIFU7`_i~_J|rM$~aLEFo~ zQ9aEaW*uDvt3F$KhnqJ-p|-Y7GJf-1)tCJhPSd5hQ@C%fWqlJ_n#0)6AQhL?tu!xo z<+G#QyG1^$#v?kTw5+wUoCfNw`-AJ#U4fCP-!bF?a6$;Y=ynz;V73d zZheVOD^9bxj~CMnbIhe}i}YJh|9I6VWfr$FiwBcDafZ9P$s5$1l4+yUCNer|2j*GiZ{<>qV2NSV>o3GS(b&GIxizL;`(Kh zcN+co4YppYmIO?*>TImwk}hAg=$b}niLs@$qIL6)=yd$HW(*wVtfDYTSW7pUhE)cW z*mgIWlc`9L2YS?JArxs*6at8?2D2wbAbq`S7tgI;wCI_xlyB%XYtLG=XbX$bR>yU! zRLkd3taytaz>{z`oRB`#Pj3iP@+?A=CN9~Ob-ltH-Dk1qOE%EkQ(>47i;P0_G4p)A zLW9XhY)E(n&%c$(Ua~(jn(U;N6zrz_RKYCiZ6s5n2aERL9fpv#n5|SWSE2?QRAF&w z0nsGA2?Y_Z?d-}Q_^J3rKNjnHCO8+xXZraYJX7aiY9ZVy)(mrjJmME-C+Vhj`T15~ z@Jj;fFy!Zq{@2(U88Zw5$1x@%`~3RuE~jx1q9Qfa4oCZB(^&( z486M|1IxN@&bpJx=-qz?#)gOZDyfq`hI71)u0nC?rP3Uk#PwY7-6RW{w~dd+aya$Y zGdg+vaLJ0Qy<)`@qk>+RWpagSamXcc4Md*JrVtm}SmCA8qo~6dkQFSW}1^wXh)7_672rW;cO*l)l!k! zQtPHIU&O9YbHRH=32BvXkLui2&`yCHTV6F4ubaCaVy z$HN<9m0dJ)F{#%j6sY@@juaF!_&fVnVcF?VKbKIcpLLoBPHT|uQ&WY@x6yY>YU ze#$UWNv`O$b)>oO8S_sBChYcD3_ZjX_pM`0Crh>QDVpfWNm!;@Hd|jISk1U$z-15Y zPo8M3W#Nnq7KSsV@e)&e!(C3lC7H7rgIT*4CSlwZ5(|z)U+;k0%W1JfTYjFaXY5AB ziNjzYZkq)5PUvMCIcwG`84iTv!&5FOp;d8guvhC1`6~;9W}Mnp#m#Xkx&mYbschY@ zg~n}e$c+J17NH5n+$bnp<)HHx>@SsZd4);48Zw#WgHu~mus#{(3rlQ~8V}gSe_Hj0 z)J(8dS*`%NU`75BtFOq>ffBxon&Rp0QV2_$YZKMt9`Y33e`EaUVrTh7Kr1UX*OXb7 zwmi=zPWvTp%i9VLt0&`b?(KFza((btuMZQ(*|LxBaLax?WN+G2&BR@jWgE?-0+Ur? zV~Z*GGn}4bhK})s{F)an(W#mvDXK*`i~MO;a-Vfpy0kqxw@e*^52G)wT!qZja9cPs z5EmVWXM*c(ua8qzspPIZWzQ}|aXj)5WBPaqmZ_k!^m0a7#n=37+gvi%tPI%Xav84N z$)(TE!QVQ!H7(gmrURxe9ISN_nk#Ci%t;cbO3^ew&7m9iN=#=nM`N*!Yl+bAx=M3M%3E0Ha$_1Zj4 zl~Ma*WfoKc?$Uj;pNJ*zofd(3UP$m^D8S^C=?!-VHTbC*DWyWl(^phf|Q~FX= z8L2|1$c;?2NDibAC^9aQy1pCrMQ7J2< zJRle=Dq{{JPTmwp$Dm)VhxHaX8KUqvF4J0Q1kRyhLe{8*GV#ae-;bp@wdze3Elu-v zI9?Tul1Np(fPusedn!|0hhqkA>>0Gwey_-}mYG#bvHY_L!~bvJ3DCc$c~}pXY?ZmB znRjSNcgq6GA`)_BRwwwc^%fsDC5lKX*!J%pv9{H3s$*}vmzHc}BLW2~%1H>SIiy2z z+A*Z}tOW?UG``{dhpT88#_N38%M6#0QySH0%}@<)b9UW9jx=o)Z*f8>uZ5=3LP)~X z+j>(}38mS`6n+}re@l;!d+{PZ6P%Xq!QMJU2T z_A0uSXz21tXW=xB>y`4mxgC0yJap#KvJWZ}S^9a5>FS~JEt|G%h!JIKD-H_5i!4}X zlcP>%foz_G?I}=e ztWL3yq_zEod;QJIoa{;pVy;)~vBwnu6d%OT)-1I*sFOrjKRe0Xmv|>L=Xw)zlkRG* zyy+gYqKaLdyLyY4r;EFtO;S)}BxW8XDWO5OPli*bd&EOtC$YRC3k}8p*;sE0*-P^2UB(fzqM1wyE7Ihgv6M>z4nFU!i#8D`LlWcvPg3+12*swPiUa%*KZpgO}7kf z9!b}XY#!P)dg;)*b>kxw6Kl!pD^mxyR!Xz0)6t99{yEB|G)a8 zjmr5-xXJ47`-!Hqh0-mhGG83?omLjpKvKKE5b0l@r}8yI_6^hC^68$IYsC1@Eo|RF zFaVu1+ekZgJ~t-ZTAJ0wkME;|8Nuh3rDlmOB;Yruzx64{bPbijjB>0jf~B}Xo974? zln`5e|AgwQa>5ca-%N=|**$6ZyR=t~J>G8azK3mYcp^|h3sBmO5zf=RKC5^o zZbBt#Uz}13p)}?oc9T`BtxTT26*H37FiWTyS>{Tt;MWEy=oTuGN&h5GBb6L%yF_zX zWVO9oW71v?;)`uE+8#^3=aLmw)5j@zl+`j}F&^ZaiVmiu#m3KdsC(FXsj3gLQ0?Je z*uOl5`^^`)REH)K>1pt8J~3!F3VSb69&TfN%sQiVBf$mesn*pxH(GrnHT7kx>J_UF zNgGXE3tlGg*X}hakMyqY;PC);K^lx$^`;EJWM~Pen3syt|-t=GGKfRw~FsW z$4DIIml&n^Y^^f6`(4IxJ6DLWXLoeQaO{n-o-{E3o$$1PbA;!SO`7xZs zMoZ>tRuL0-w0GYl+0pm=*ba>{3@j$r=NLi$lvJ{jz|NSALakVt=KPBDBnZD=wYS2r z{G05UmO!51DFo39XL;B{8nJNMsPC;&&5$eHdI|~bZx!M)kWw-LN06ULuHJ&u*?kW? zEQPki_VwK#n&pEe=W5eO{vkW1XL~A{Hlmz1-(_{F+=t#(qa{9abXHxsw-VnqO{4Tm z^u%)G9RJLdZIcR=DL4KzY@;N>cLnqC$k{}r)}Ya53o&`3fdEU$wvgj=cK1CdGaYoT z^f{c);zG16!vz{D7dX^lX*&Y}n%DPBf;WDx{gMK6#vPN&zCDrzOA-`Dw2XruI)4QH zVlA*Cim}f1xC>igS4Kl3Bdq9WLJ4)W6t^a2ZiaD<7Kc5PEGz}FdT;*bw@q>>mySfJ zTyh^CE(+BA57yQXy;pxz3i_ef^uKg+JM{^t#p!=Sbu6nNrj}iYK4ffT-hdTBjKw`4 zWcM2H81^GI;wFP|gg-e3^+2F}uB5 zYDzTWoLe8s1txG5 z>~J?dwV-9X!^heCv;EQ5>YPzBm@E6a`w=z-UGE-1P@>)y?1iF{$mhT0O_(vkB^Hj1 z3VOo*e3>zYY?J%7`O$*PuFI>iiEXoryAbqYztMbrwA%B@6P3klwRN!hfLCs4rz4EQ zCMG94$V|&sthB8DZcoe7He=MkpznQGyq2sC?S4-QO8LO-HXeID?0#2cpVjph;tS1X z8ToGT)89?L2~cV7*#>6{t3^I<=9-&BXci0Jf;K*a5Ih@w-hDS>q|U_DB)&5{fSQ-L z&&p#xb==6*gcEZZ%rthQALp(C-Y7K1)|6{(X0!1SR(?^flx#a5T4XyG$t^Ff4ub4< zs#+3kZ_aXGg7&i##F{SKg!gcpzaeVGmJC@;YVQQdqaoTxWebbJWbjZ}hzmfA;%+7C zb1kixUq&W2C&Pg?QgjmyeQ4VW$Quh=6FI@QV_GUQplHD~#W1hxy;~?sCZ{-1OBh1m zd&rPZN{tJsBA>kCg0bF{0&KS;i|rYuCu=OGutumay!~0&MQm%h9IbbeFuf*PR~3AH_*YNY~3JS%F=t=n0wM4_HBtdcQMaREaoZCFPI+V8c} z8Q(1=EZ^396vksCd#?H3>jh=9m-MMhz9~ex&rU^wE87ir1CegDwUD#O;h1%hc#4m1 zwJR1}%Is$5z4z8>XCcxSV`#m#>D{GhL$gD~s@Szf*$O+$mrby4L3Y3N8Y(f z%X&1Q4Z~#eD%oMOr{K`CE`c~Hej6KCz_J>_^dOSO6l?>_rnlAz{IKl@Alc}yU~Xtj zE?9pb10z|9=pZP?(yEf}Vq`ttRllB%oOpr0<0nEeTe%TUTGr6f{n8ONPoHoqlQ!*P zu;m2}_gW<*1*hCyc*v;a3a2BykR>0Ep>?m0d zF-w?3kyYP_$PBDf$HEk$&dNMw@G3gp>>rVt4hyLvZ4~SU<;&pt5~K$dOUv0Esi`z z`E*XL!;a0YVtQVKR+JjaLteEm?HaTj%D!8xdHtg$k}MrYS!-s~s{#YUBdrPw#$QAb zj88GN-x%>$$%fdn-0;nbE`v>Wu;-0O#Jfz3VEw@*9_9DFiq`S5JKx;c=+5j_u8h2= z$<4?9icIslgNX_4Q`iJhk5uYfiV}Jrea>8q!VS={R%!+|#IDxR$gV_sS6vG_V71BJ z_m`{q23L;f`wZc1gq(1bRm-wQW1n{x6c_EupES|*@5bddp!Tp>(0JBZCsoPl%yI!6 zOI+w&^`J@UQ5kEPy}Y5<+D)#(d(iem78^32%haCb*K}XKF-!1>{ZX|2(9pPVIV3u1 z_w#Zi87}lA4RIZ#T$+wa9=s=@)SOe2u0e{GAjpLN!U<9k5L8>%bEXCUP)Zx9 z$@egGo~c}IS;Xijs@!@+q8iZ5Bv84 zZL{Ou;LcOxY=!hBfxfIQ`Z~d;lHeFhWVBSAIGYsea~FEc7REAV52Gx29|&A7k%U_C zGND6p4P}r}n;5Z-s?!W`|(B;;@(vsq9Z;ThW;z2tQ=rRIqWhl6o|HSb16; z0%5YS^u%Xb`sOVdXZw{uC*gh+F6H7*24(L`M`IIQI>?)Ze(J3Xxv81{yuo$ z26qP>OffDfnLU$yzMpy)qMoJ!qYS8`xmnefjn8=cKhM{?8qD_a7}VgKbvGr@tFD^) zA_n73n=WA^@g0xUgIl|MDX3MI)@H6oOI8Segt0I8P^4b=UKjY%s>7ow5QYKwny?^i zOoFn42Om+3PShAo#Y&x}elQ@jW}$)_boSiT{x!_mne8ot-=3YQxPnT}(@j&w?D>#f zFfU}HvIUnLN?d5g0=1R7C1#YEFj85>l54+hSAIGc2HEVEzWgxrfD|5J4D87SF%c(F{=O5MFYTQM@5Ka4cXdtpHgonmoZ5hR)Fv(Gk8^^ zofr@N`wjARt1NN&$doxoy3EYXAlEw<8sbnfR%7pWcNivoCv(hg`ddNzW`MNYmV~$b zc65?_n!Ko+n`)4_1Bu1?k%>V z5e@K8tZs2XC&aq8`wylX@ZH8ZJTrJ!rzAaS%D9))`flf+Jx98N0mY_{Xw_BsU6=Dr zim-!6a@B-T= z+wRE+lWaU?xl@d*Llk)wrfqiL->=k7V|y-UM2ZEioo(-Al53iZQJk+5vbHU(WYH?! z^BW#QMU8OA+Y2oSvBLgVH5=%=`moRzTmyOhNNeo5taZ7q-=nW3!wYg}c4A=zDEPqr zJ7>PaYuRy~9V-fN)r2IDw-<~mjFTjuTatN7eF-Nv6oG}#MVzH@3SilNt18ju!c#reSlB91|iYSck=D7okweHHC zPQo}IK1Q~&mWqSUU~LP-kA zPtl>&O+hKTg*4O^pLiC}w#MKK`C#R&O<4hK4vOk`?MKT@i`G>_a4}_i%C=T7nB$5C z!gjWblX-N=Ea?W{F%^m-&=KsD>?yY5_LU=4#KzLx^2+n(4;={OKwEWir@R){k0?YahugMFPFi`Q_V-TWjNNtw73yf zF%whqm0MtbsE`(Sq2g-?#+>fb6(G&+ECxk=5H34bJsF!uN$7bg5(d>m*b4Ub*w^m6 zSY`~lGY)l%c(Uxd!X8!H(v2;t0M@-mU#K@>dBOQ*eDw{hP;jQpnL+8E5VTJMsWPl< zLr%;VCsx?-!a`P?+>AhmTNXL*xmK%9wIu9iMSy`wyi8;Mf8fdLTuGbx!Q=TC1gjsd#-G<>?32D`)U=` zepqmYYv1l-On+g;MYkZg-}3kS;1sRB!T26u5t@IySGL`xgH{6=<-<<^t6p2t=jd-Rd~A!A{C0rIMEPZX2O z!!yK-V1Yf)O=q>UrfPyVYpC|rV#R7Fsb)Q~M8vm@V;_us$crw%1aaA?&%uR$FnjM%Tlj)QRy!hGo9d zmLkIvn6Nel6n*GgO>iM`5<5+8RpfXu7&2o-eCYA)M*o+n}($ zG~%auE_X=^J8hW&hTg#XL@9XiP9hM;ihczY_TB0(f*}p+6r!I-5Hb5hD#mKEX{_Hf z(AUE_s$*O-VwF(0p!O8Z2m>gRW267g|%Qy-htxu!3f+Zd-OqEzLiSws@k1jrL zSSA`V4@)3QYe(RAd-FUaq4`jSjk?DBE=A2F{Rq8}pD`>N2GGnq%Q9#jh!WE~q0vA0 z9{f3{ikL80!kR@^RJm(cuVF33gQxW0G19=cCU#7S!nC!v=|X|ClvbezEDpbbekfmQ zq;K8%7B=&W#V}e@08;|~ol4O-pWFQ*?d`>Y;;+muvn3PB_{i|ap=&X2h703DHf2Dn z*8AP4%BcUu1YwZM=M~uavrZ7Zv$q`G!$?-Xw`s3)9pe?gf0h9ohhp@Ct8^%%rn7R0 zan_a{is_J%U>4kBbL!*l02b$JDa)3qWTDX#?z$xvzRk{)#D#>K3j3PmvkgTvLS{=0 z|0lLsRJ00bW#jtyv2l5e=*nGdtw!>oe{44~6AzJC^HeeV7WNU_pp6JhO%tQAk9MqT!$&;kZ^D1$CG?=>38OdMt1# zP4&g-&@HSvRKQj4E&Dz&!kYmAg(vB;f;zB%q|stmD1(^_e@kw)b{{d7>1;O(@fPa0 ze+%Cvb{^9-3CxNNi>y^a-suD-E-Q7rm%eq*h9xt`(CRq2^!9mU*%{)UA9U*8PkXuZ5GqpK71>pVl$EXhF%1F2u5jFFNwTq ze#JWJj$cpd`&5)h1t#9%x`xGhq+!BRcFc>gK%M_(GM&@irt}gY%sKSWXtfT zp<*zWromsvNjI0wsvvd=+zJeZsM%EIfq=dUoboyD?~g0WPz*0RMOUCU^))FISb z6r1kBY;m{eseQ(x-&$~g7o!@pbaU#+NGz1^Y3+Ycrf-6U16LOv5FDJ0Tuus`%u;7& z23#Rnm#1Y0tK_v9meyFnIM`J{4_6h6&I*jOinyV>qCDm~HL%XeaWRROUN1iCa=g!H zV>TbLdTY5+!z{rsRX@yWWV8uE#jX5*=J89xVhgDn@ko8^5x?;w$jNwX&P>>JMjvT} zkRN>$ds{<5PoHFZOQYRFN(?3pDUB9ejV&-Ni{Tq{XQ^Y{pG*M`eV(P&9sUKj&nnse zWWy{#w&l*Mu=7tS9UqyBMNz^kw<6zqUT&Hi\n" "Language-Team: LANGUAGE \n" -"Language: \n" +"Language: es\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 != 0 && n % 1000000 == 0 ? " -"1 : 2;\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + #: console/views.py:25 console/views.py:57 user_manager/forms.py:16 msgid "Console" -msgstr "" +msgstr "Consola" #: console/views.py:27 msgid "iptables list" -msgstr "" +msgstr "Lista de reglas de iptables" #: console/views.py:33 msgid "running processes" -msgstr "" +msgstr "Procesos en ejecución" #: console/views.py:36 msgid "WireGuard show" -msgstr "" +msgstr "Estado de WireGuard" #: console/views.py:39 msgid "Memory usage" -msgstr "" +msgstr "Uso de memoria" #: console/views.py:42 msgid "Routing table" -msgstr "" +msgstr "Tabla de enrutamiento" #: console/views.py:54 msgid "DNS container test script" -msgstr "" +msgstr "Script de prueba del contenedor DNS" #: console/views.py:57 msgid "Invalid command" -msgstr "" +msgstr "Comando inválido" #: console/views.py:64 msgid "Invalid target" -msgstr "" +msgstr "Destino inválido" #: console/views.py:69 msgid "Enhanced filter is enabled. This command is not available." -msgstr "" +msgstr "El filtro mejorado está habilitado. Este comando no está disponible." #: dns/forms.py:22 wireguard/forms.py:22 msgid "Primary DNS" -msgstr "" +msgstr "DNS primario" #: dns/forms.py:23 wireguard/forms.py:23 msgid "Secondary DNS" -msgstr "" +msgstr "DNS secundario" #: dns/forms.py:25 dns/forms.py:67 dns/forms.py:109 #: templates/firewall/manage_firewall_rule.html:380 @@ -75,11 +76,11 @@ msgstr "" #: templates/wireguard/wireguard_peer_list.html:166 user_manager/forms.py:49 #: user_manager/forms.py:180 vpn_invite/forms.py:192 vpn_invite/forms.py:326 msgid "Back" -msgstr "" +msgstr "Volver" #: dns/forms.py:29 msgid "Resolver Settings" -msgstr "" +msgstr "Configuración de resolución" #: dns/forms.py:37 dns/forms.py:83 dns/forms.py:134 #: templates/firewall/manage_firewall_rule.html:379 @@ -91,11 +92,11 @@ msgstr "" #: user_manager/forms.py:98 user_manager/forms.py:205 vpn_invite/forms.py:191 #: vpn_invite/forms.py:325 msgid "Save" -msgstr "" +msgstr "Guardar" #: dns/forms.py:65 templates/dns/static_host_list.html:17 msgid "Hostname" -msgstr "" +msgstr "Nombre de host" #: dns/forms.py:66 templates/dns/static_host_list.html:18 #: templates/firewall/manage_redirect_rule.html:43 @@ -103,7 +104,7 @@ msgstr "" #: templates/firewall/manage_redirect_rule.html:68 #: templates/wireguard/wireguard_status.html:45 msgid "IP Address" -msgstr "" +msgstr "Dirección IP" #: dns/forms.py:68 dns/forms.py:110 #: templates/firewall/manage_firewall_rule.html:382 @@ -112,242 +113,245 @@ msgstr "" #: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48 #: user_manager/forms.py:181 msgid "Delete" -msgstr "" +msgstr "Eliminar" #: dns/forms.py:75 msgid "Static DNS" -msgstr "" +msgstr "DNS estático" #: dns/forms.py:111 templates/dns/static_host_list.html:68 #: templates/user_manager/peer_group_list.html:8 user_manager/forms.py:177 #: wireguard_peer/forms.py:10 msgid "Name" -msgstr "" +msgstr "Nombre" #: dns/forms.py:112 firewall/forms.py:111 #: templates/dns/static_host_list.html:69 #: templates/firewall/manage_redirect_rule.html:18 #: templates/firewall/manage_redirect_rule.html:19 msgid "Description" -msgstr "" +msgstr "Descripción" #: dns/forms.py:113 msgid "List URL" -msgstr "" +msgstr "URL de la lista" #: dns/forms.py:125 msgid "DNS Filter List Details" -msgstr "" +msgstr "Detalles de la lista de filtro DNS" #: dns/views.py:33 msgid "DNS settings applied successfully" -msgstr "" +msgstr "Configuración DNS aplicada correctamente" #: dns/views.py:68 msgid "Default DNS Filter List created successfully" -msgstr "" +msgstr "Lista de filtro DNS predeterminada creada correctamente" #: dns/views.py:71 msgid "" "Pending Changes|There are pending DNS changes that have not been applied" -msgstr "" +msgstr "Cambios pendientes|Hay cambios DNS pendientes que no se han aplicado" #: dns/views.py:90 msgid "DNS Forwarders" -msgstr "" +msgstr "Encaminadores DNS" #: dns/views.py:91 msgid "" "All DNS queries will be forwarded to the primary resolver. If the primary " "resolver is not available, the secondary resolver will be used." msgstr "" +"Todas las consultas DNS se enviarán al resolvedor primario. Si el primario " +"no está disponible, se usará el secundario." #: dns/views.py:118 msgid "Static DNS deleted successfully" -msgstr "" +msgstr "DNS estático eliminado correctamente" #: dns/views.py:121 msgid "Static DNS not deleted|Invalid confirmation" -msgstr "" +msgstr "DNS estático no eliminado|Confirmación inválida" #: dns/views.py:131 msgid "Static DNS saved successfully" -msgstr "" +msgstr "DNS estático guardado correctamente" #: dns/views.py:154 msgid "DNS Filter List not deleted | Filter List is enabled" -msgstr "" +msgstr "Lista de filtro DNS no eliminada | La lista está habilitada" #: dns/views.py:161 msgid "Error removing config file: " -msgstr "" +msgstr "Error al eliminar archivo de configuración: " #: dns/views.py:164 msgid "DNS Filter List deleted successfully" -msgstr "" +msgstr "Lista de filtro DNS eliminada correctamente" #: dns/views.py:167 msgid "DNS Filter List not deleted | Invalid confirmation" -msgstr "" +msgstr "Lista de filtro DNS no eliminada | Confirmación inválida" #: dns/views.py:177 msgid "DNS Filter List saved successfully" -msgstr "" +msgstr "Lista de filtro DNS guardada correctamente" #: dns/views.py:204 msgid "Failed to read existing config file: " -msgstr "" +msgstr "Error al leer archivo de configuración existente: " #: dns/views.py:222 msgid "Failed to fetch the host list: " -msgstr "" +msgstr "Error al obtener lista de hosts: " #: dns/views.py:232 msgid "Failed to write config file: " -msgstr "" +msgstr "Error al escribir archivo de configuración: " #: dns/views.py:257 msgid "DNS Filter List updated successfully" -msgstr "" +msgstr "Lista de filtro DNS actualizada correctamente" #: dns/views.py:274 msgid "DNS Filter List enabled successfully" -msgstr "" +msgstr "Lista de filtro DNS habilitada correctamente" #: dns/views.py:276 msgid "DNS Filter List not enabled | No valid hosts found" -msgstr "" +msgstr "Lista de filtro DNS no habilitada | No se encontraron hosts válidos" #: dns/views.py:281 msgid "DNS Filter List disabled successfully" -msgstr "" +msgstr "Lista de filtro DNS deshabilitada correctamente" #: firewall/forms.py:41 msgid "Port is required." -msgstr "" +msgstr "Puerto es obligatorio." #: firewall/forms.py:44 msgid "Port 8000 (tcp) is reserved for wireguard-webadmin." -msgstr "" +msgstr "El puerto 8000 (TCP) está reservado para wireguard-webadmin." #: firewall/forms.py:48 #, python-format msgid "Port %s is already in use by another WireGuard instance." -msgstr "" +msgstr "El puerto %s ya está en uso por otra instancia de WireGuard." #: firewall/forms.py:51 msgid "Invalid Destination. Either Peer or IP Address must be informed." -msgstr "" +msgstr "Destino inválido. Debe indicar Peer o Dirección IP." #: firewall/forms.py:54 msgid "Peer and IP Address cannot be selected at the same time." -msgstr "" +msgstr "Peer y Dirección IP no se pueden seleccionar simultáneamente." #: firewall/forms.py:57 msgid "IP Address cannot be used without selecting a WireGuard instance." msgstr "" +"No se puede usar Dirección IP sin seleccionar una instancia de WireGuard." #: firewall/forms.py:81 msgid "wg+ (Any WireGuard Interface)" -msgstr "" +msgstr "wg+ (Cualquier interfaz WireGuard)" #: firewall/forms.py:112 msgid "Firewall Chain" -msgstr "" +msgstr "Cadena de firewall" #: firewall/forms.py:113 msgid "In Interface" -msgstr "" +msgstr "Interfaz de entrada" #: firewall/forms.py:114 msgid "Out Interface" -msgstr "" +msgstr "Interfaz de salida" #: firewall/forms.py:115 msgid "Source IP" -msgstr "" +msgstr "IP origen" #: firewall/forms.py:116 firewall/forms.py:121 wireguard/forms.py:18 #: wireguard_peer/forms.py:30 msgid "Netmask" -msgstr "" +msgstr "Máscara de red" #: firewall/forms.py:117 msgid "Source Peer" -msgstr "" +msgstr "Peer de origen" #: firewall/forms.py:118 msgid "Source Peer Include Networks" -msgstr "" +msgstr "Incluir redes del peer de origen" #: firewall/forms.py:119 msgid "Not Source" -msgstr "" +msgstr "No origen" #: firewall/forms.py:120 msgid "Destination IP" -msgstr "" +msgstr "IP destino" #: firewall/forms.py:122 msgid "Destination Peer" -msgstr "" +msgstr "Peer de destino" #: firewall/forms.py:123 msgid "Destination Peer Include Networks" -msgstr "" +msgstr "Incluir redes del peer de destino" #: firewall/forms.py:124 msgid "Not Destination" -msgstr "" +msgstr "No destino" #: firewall/forms.py:125 templates/firewall/firewall_rule_list.html:44 #: templates/firewall/manage_firewall_rule.html:263 #: templates/firewall/manage_redirect_rule.html:22 #: templates/firewall/redirect_rule_list.html:13 msgid "Protocol" -msgstr "" +msgstr "Protocolo" #: firewall/forms.py:126 templates/firewall/manage_redirect_rule.html:35 msgid "Destination Port" -msgstr "" +msgstr "Puerto de destino" #: firewall/forms.py:127 templates/firewall/firewall_rule_list.html:141 msgid "New" -msgstr "" +msgstr "Nuevo" #: firewall/forms.py:128 templates/firewall/firewall_rule_list.html:60 #: templates/firewall/firewall_rule_list.html:142 msgid "Related" -msgstr "" +msgstr "Relacionado" #: firewall/forms.py:129 templates/firewall/firewall_rule_list.html:61 #: templates/firewall/firewall_rule_list.html:143 msgid "Established" -msgstr "" +msgstr "Establecido" #: firewall/forms.py:130 templates/firewall/firewall_rule_list.html:144 msgid "Invalid" -msgstr "" +msgstr "Inválido" #: firewall/forms.py:131 templates/firewall/firewall_rule_list.html:145 msgid "Untracked" -msgstr "" +msgstr "Sin seguimiento" #: firewall/forms.py:132 msgid "Not State" -msgstr "" +msgstr "No estado" #: firewall/forms.py:133 msgid "Rule Action" -msgstr "" +msgstr "Acción de la regla" #: firewall/forms.py:134 msgid "Sort Order" -msgstr "" +msgstr "Orden" #: firewall/forms.py:182 msgid "Default Forward Policy" -msgstr "" +msgstr "Política predeterminada de reenvío" #: firewall/forms.py:182 firewall/models.py:62 firewall/models.py:75 #: firewall/models.py:76 templates/firewall/firewall_rule_list.html:63 @@ -355,315 +359,323 @@ msgstr "" #: templates/firewall/firewall_rule_list.html:168 #: templates/firewall/firewall_rule_list.html:187 msgid "ACCEPT" -msgstr "" +msgstr "ACEPTAR" #: firewall/forms.py:182 firewall/models.py:62 firewall/models.py:75 #: firewall/models.py:76 templates/firewall/firewall_rule_list.html:170 #: templates/firewall/firewall_rule_list.html:187 msgid "REJECT" -msgstr "" +msgstr "RECHAZAR" #: firewall/forms.py:182 firewall/models.py:62 firewall/models.py:75 #: firewall/models.py:76 msgid "DROP" -msgstr "" +msgstr "DESCARTAR" #: firewall/forms.py:183 msgid "Allow Peer to Peer" -msgstr "" +msgstr "Permitir tráfico entre peers" #: firewall/forms.py:184 msgid "Allow Instance to Instance" -msgstr "" +msgstr "Permitir tráfico entre instancias" #: firewall/forms.py:185 msgid "WAN Interface" -msgstr "" +msgstr "Interfaz WAN" #: firewall/models.py:62 msgid "MASQUERADE" -msgstr "" +msgstr "MASCARAR" #: firewall/tools.py:44 msgid "Masquerade traffic from VPN to WAN" -msgstr "" +msgstr "Mascarar tráfico de VPN a WAN" #: firewall/tools.py:54 firewall/tools.py:58 firewall/tools.py:62 msgid "Reject traffic to private networks exiting on WAN interface" -msgstr "" +msgstr "Rechazar tráfico a redes privadas saliendo por la interfaz WAN" #: firewall/tools.py:66 msgid "Allow traffic from VPN to WAN" -msgstr "" +msgstr "Permitir tráfico de VPN a WAN" #: firewall/views.py:21 msgid "Port Forward List" -msgstr "" +msgstr "Lista de redirecciones de puerto" #: firewall/views.py:32 msgid "Manage Port Forward" -msgstr "" +msgstr "Gestionar redirección de puerto" #: firewall/views.py:42 msgid "Port Forward rule deleted successfully" -msgstr "" +msgstr "Regla de redirección eliminada correctamente" #: firewall/views.py:44 msgid "" "Error deleting Port Forward rule|Confirmation did not match. Port Forward " "rule was not deleted." msgstr "" +"Error al eliminar regla de redirección|Confirmación inválida. La regla no se " +"eliminó." #: firewall/views.py:54 msgid "Port Forward rule saved successfully" -msgstr "" +msgstr "Regla de redirección guardada correctamente" #: firewall/views.py:79 msgid "Firewall Rule List" -msgstr "" +msgstr "Lista de reglas de firewall" #: firewall/views.py:93 msgid "Manage Firewall Rule" -msgstr "" +msgstr "Gestionar regla de firewall" #: firewall/views.py:111 msgid "Firewall rule deleted successfully" -msgstr "" +msgstr "Regla de firewall eliminada correctamente" #: firewall/views.py:113 msgid "" "Error deleting Firewall rule|Confirmation did not match. Firewall rule was " "not deleted." msgstr "" +"Error al eliminar regla de firewall|Confirmación inválida. La regla no se " +"eliminó." #: firewall/views.py:125 msgid "Firewall rule saved successfully" -msgstr "" +msgstr "Regla de firewall guardada correctamente" #: firewall/views.py:157 msgid "Manage Firewall Settings" -msgstr "" +msgstr "Gestionar configuración de firewall" #: firewall/views.py:173 msgid "Firewall settings saved successfully" -msgstr "" +msgstr "Configuración de firewall guardada correctamente" #: intl_tools/forms.py:11 templates/accounts/login.html:36 msgid "Language" -msgstr "" +msgstr "Idioma" #: intl_tools/forms.py:22 templates/base.html:80 msgid "Change Language" -msgstr "" +msgstr "Cambiar idioma" #: templates/access_denied.html:9 msgid "Access Denied" -msgstr "" +msgstr "Acceso denegado" #: templates/access_denied.html:12 msgid "Sorry, you do not have permission to access this page." -msgstr "" +msgstr "Lo siento, no tienes permiso para acceder a esta página." #: templates/access_denied.html:12 msgid "" "Please contact your system administrator if you believe this is an error." msgstr "" +"Por favor, contacta a tu administrador del sistema si crees que esto es un " +"error." #: templates/accounts/login.html:14 templates/user_manager/list.html:8 #: user_manager/forms.py:13 vpn_invite/forms.py:281 msgid "Username" -msgstr "" +msgstr "Usuario" #: templates/accounts/login.html:23 #: templates/vpn_invite/invite_settings.html:19 user_manager/forms.py:14 #: vpn_invite/forms.py:282 msgid "Password" -msgstr "" +msgstr "Contraseña" #: templates/accounts/login.html:32 msgid "Login" -msgstr "" +msgstr "Iniciar sesión" #: templates/accounts/logout.html:11 msgid "You have been successfully logged out." -msgstr "" +msgstr "Has cerrado sesión correctamente." #: templates/accounts/logout.html:14 msgid "Login again" -msgstr "" +msgstr "Iniciar sesión de nuevo" #: templates/base.html:112 templates/dns/static_host_list.html:72 #: vpn_invite/forms.py:78 vpn_invite/forms.py:79 vpn_invite/forms.py:80 #: vpn_invite/forms.py:81 vpn_invite/forms.py:82 msgid "Status" -msgstr "" +msgstr "Estado" #: templates/base.html:158 user_manager/views.py:74 msgid "User Manager" -msgstr "" +msgstr "Gestión de usuarios" #: templates/base.html:176 templates/wireguard/wireguard_peer_list.html:195 #: vpn_invite/views.py:37 msgid "VPN Invite" -msgstr "" +msgstr "Invitación VPN" #: templates/base.html:254 msgid "Update Required" -msgstr "" +msgstr "Actualización requerida" #: templates/base.html:256 msgid "" "Your WireGuard settings have been modified. To apply these changes, please " "update the configuration and reload the WireGuard service." msgstr "" +"Tus ajustes de WireGuard han sido modificados. Para aplicar los cambios, " +"actualiza la configuración y recarga el servicio WireGuard." #: templates/base.html:265 msgid "Update and restart service" -msgstr "" +msgstr "Actualizar y reiniciar servicio" #: templates/base.html:273 msgid "Update and reload service" -msgstr "" +msgstr "Actualizar y recargar servicio" #: templates/base.html:286 msgid "Update Available" -msgstr "" +msgstr "Actualización disponible" #: templates/base.html:288 msgid "Version" -msgstr "" +msgstr "Versión" #: templates/console/console.html:12 msgid "Clear" -msgstr "" +msgstr "Limpiar" #: templates/console/console.html:27 msgid "Destination Hostname or IP Address" -msgstr "" +msgstr "Nombre de host o IP de destino" #: templates/dns/static_host_list.html:9 msgid "Static Host List" -msgstr "" +msgstr "Lista de hosts estáticos" #: templates/dns/static_host_list.html:45 msgid "Add" -msgstr "" +msgstr "Añadir" #: templates/dns/static_host_list.html:46 msgid "Settings" -msgstr "" +msgstr "Configuración" #: templates/dns/static_host_list.html:47 msgid "Apply" -msgstr "" +msgstr "Aplicar" #: templates/dns/static_host_list.html:59 msgid "DNS Filter Lists" -msgstr "" +msgstr "Listas de filtros DNS" #: templates/dns/static_host_list.html:70 msgid "Hosts" -msgstr "" +msgstr "Hosts" #: templates/dns/static_host_list.html:71 msgid "Last Update" -msgstr "" +msgstr "Última actualización" #: templates/dns/static_host_list.html:73 msgid "Update" -msgstr "" +msgstr "Actualizar" #: templates/dns/static_host_list.html:74 templates/user_manager/list.html:53 #: templates/user_manager/peer_group_list.html:35 #: templates/wireguard/wireguard_peer_list.html:196 msgid "Edit" -msgstr "" +msgstr "Editar" #: templates/dns/static_host_list.html:116 msgid "Add Filter List" -msgstr "" +msgstr "Añadir lista de filtro" #: templates/firewall/firewall_nav_tabs.html:11 msgid "Port Forward" -msgstr "" +msgstr "Redirección de puerto" #: templates/firewall/firewall_nav_tabs.html:15 msgid "Default Policy" -msgstr "" +msgstr "Política predeterminada" #: templates/firewall/firewall_rule_list.html:40 msgid "In" -msgstr "" +msgstr "Entrada" #: templates/firewall/firewall_rule_list.html:41 msgid "Out" -msgstr "" +msgstr "Salida" #: templates/firewall/firewall_rule_list.html:42 #: templates/firewall/manage_firewall_rule.html:141 msgid "Source" -msgstr "" +msgstr "Origen" #: templates/firewall/firewall_rule_list.html:43 #: templates/firewall/manage_firewall_rule.html:202 #: templates/firewall/redirect_rule_list.html:15 msgid "Destination" -msgstr "" +msgstr "Destino" #: templates/firewall/firewall_rule_list.html:45 #: templates/firewall/manage_redirect_rule.html:30 #: templates/firewall/redirect_rule_list.html:14 #: templates/wireguard/wireguard_status.html:47 vpn_invite/forms.py:284 msgid "Port" -msgstr "" +msgstr "Puerto" #: templates/firewall/firewall_rule_list.html:46 msgid "State" -msgstr "" +msgstr "Estado" #: templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 msgid "Action" -msgstr "" +msgstr "Acción" #: templates/firewall/firewall_rule_list.html:53 msgid "Automatic rule: Allow established/related traffic" -msgstr "" +msgstr "Regla automática: permitir tráfico establecido/relacionado" #: templates/firewall/firewall_rule_list.html:58 #: templates/firewall/firewall_rule_list.html:138 msgid "all" -msgstr "" +msgstr "todos" #: templates/firewall/firewall_rule_list.html:71 #: templates/firewall/firewall_rule_list.html:97 msgid "Automatic Rule: Port forward." -msgstr "" +msgstr "Regla automática: redirección de puerto." #: templates/firewall/firewall_rule_list.html:158 msgid "Automatic Rule: Firewall Settings Peer to Peer traffic" -msgstr "" +msgstr "Regla automática: tráfico peer-to-peer" #: templates/firewall/firewall_rule_list.html:179 msgid "Automatic Rule: Firewall Settings Instance to Instance" -msgstr "" +msgstr "Regla automática: tráfico entre instancias" #: templates/firewall/firewall_rule_list.html:194 msgid "Create Firewall Rule" -msgstr "" +msgstr "Crear regla de firewall" #: templates/firewall/firewall_rule_list.html:195 #: templates/firewall/redirect_rule_list.html:59 msgid "Firewall Settings" -msgstr "" +msgstr "Configuración de firewall" #: templates/firewall/firewall_rule_list.html:196 msgid "Display automatic rules" -msgstr "" +msgstr "Mostrar reglas automáticas" #: templates/firewall/manage_firewall_rule.html:18 msgid "General" -msgstr "" +msgstr "General" #: templates/firewall/manage_firewall_rule.html:79 msgid "" @@ -681,10 +693,24 @@ msgid "" "

\n" " " msgstr "" +"\n" +"
Configuración avanzada del firewall " +"VPN
\n" +"

\n" +" Esta interfaz sirve como una " +"herramienta completa para gestionar reglas de firewall, permitiendo a los " +"usuarios implementar políticas de tráfico avanzadas entre peers de VPN y " +"redes. Simplifica el establecimiento de reglas de firewall, el filtrado de " +"paquetes y las configuraciones de NAT, posibilitando un control preciso de " +"la seguridad de la red. Los usuarios pueden definir direcciones IP de origen " +"y destino, puertos, protocolos y acciones para ajustar el flujo de tráfico, " +"asegurando un entorno de red seguro y eficiente.\n" +"

\n" +" " #: templates/firewall/manage_firewall_rule.html:100 msgid "Interface" -msgstr "" +msgstr "Interfaz" #: templates/firewall/manage_firewall_rule.html:179 msgid "" @@ -705,6 +731,22 @@ msgid "" "

\n" " " msgstr "" +"\n" +"
Selección de origen
\n" +"

\n" +" Puedes aplicar esta regla a una " +"dirección IP o red específica y/o a múltiples peers.

\n" +" Habilitar \"Include peer networks\" " +"incluirá automáticamente todas las IPs permitidas asociadas a cada peer " +"seleccionado.

\n" +" Ten en cuenta que seleccionar " +"múltiples peers con redes incluidas tanto en origen como en destino puede " +"incrementar rápidamente el número de reglas generadas, dependiendo de tu " +"configuración.

\n" +" La opción \"Not Source\" niega la " +"IP, red o peer(s) seleccionado(s).\n" +"

\n" +" " #: templates/firewall/manage_firewall_rule.html:240 msgid "" @@ -726,6 +768,22 @@ msgid "" "

\n" " " msgstr "" +"\n" +"
Selección de destino
\n" +"

\n" +" Puedes aplicar esta regla a una " +"dirección IP o red específica y/o a múltiples peers como destino.

\n" +" Habilitar \"Include peer networks\" " +"incluirá automáticamente todas las IPs permitidas asociadas a cada peer " +"seleccionado como destino.

\n" +" Ten en cuenta que seleccionar " +"múltiples peers con redes incluidas tanto en origen como en destino puede " +"incrementar rápidamente el número de reglas generadas, dependiendo de tu " +"configuración.

\n" +" La opción \"Not Destination\" niega " +"la IP, red o peer(s) seleccionado(s).\n" +"

\n" +" " #: templates/firewall/manage_firewall_rule.html:297 msgid "" @@ -742,18 +800,29 @@ msgid "" "

\n" " " msgstr "" +"\n" +"
Protocolo y puerto
\n" +"

\n" +" Solo se listan los protocolos más " +"comunes. Si necesitas uno específico, abre un issue en GitHub.

\n" +" Seleccionar TCP+UDP duplicará las " +"reglas generadas.

\n" +" Puedes especificar puertos como " +"números individuales (por ejemplo, 8080) o rangos (por ejemplo, 8001:8999).\n" +"

\n" +" " #: templates/firewall/manage_firewall_rule.html:320 msgid "Packet State" -msgstr "" +msgstr "Estado del paquete" #: templates/firewall/manage_firewall_rule.html:471 msgid "Please type 'delete' to remove this firewall rule." -msgstr "" +msgstr "Por favor escribe 'delete' para eliminar esta regla de firewall." #: templates/firewall/manage_firewall_settings.html:61 msgid "Reset firewall to default" -msgstr "" +msgstr "Restablecer firewall a valores predeterminados" #: templates/firewall/manage_firewall_settings.html:77 msgid "" @@ -761,29 +830,31 @@ msgid "" "sure you want to continue?\\n\\nType 'delete all rules and reset firewall' " "to confirm." msgstr "" +"Restablecer el firewall eliminará todas las reglas y ajustes. ¿Deseas " +"continuar?\\n\\nEscribe 'delete all rules and reset firewall' para confirmar." #: templates/firewall/manage_redirect_rule.html:40 msgid "Destination Type" -msgstr "" +msgstr "Tipo de destino" #: templates/firewall/manage_redirect_rule.html:42 #: templates/firewall/manage_redirect_rule.html:48 #: templates/vpn_invite/invite_settings.html:17 user_manager/forms.py:178 msgid "Peer" -msgstr "" +msgstr "Peer" #: templates/firewall/manage_redirect_rule.html:57 msgid "WireGuard Instance" -msgstr "" +msgstr "Instancia de WireGuard" #: templates/firewall/manage_redirect_rule.html:74 msgid "Add Forward Rule (allow)" -msgstr "" +msgstr "Añadir regla de reenvío (permitir)" #: templates/firewall/manage_redirect_rule.html:80 #: templates/firewall/redirect_rule_list.html:17 msgid "Masquerade Source" -msgstr "" +msgstr "Enmascarar origen" #: templates/firewall/manage_redirect_rule.html:91 msgid "" @@ -813,18 +884,40 @@ msgid "" "all connections to match the IP address of the WireGuard instance.

\n" " " msgstr "" +"\n" +"
Puertos predeterminados
\n" +"

El archivo docker-compose.yml " +"predeterminado especifica el rango de puertos TCP 8080-8089. " +"Si deseas cambiarlo, edita manualmente el archivo docker-compose.yml y vuelve a ejecutar Docker Compose según las instrucciones de despliegue.

\n" +"
Tipo de destino: Peer
\n" +"

La redirección de puerto dará prioridad a la " +"primera IP del peer con prioridad cero.

\n" +"
Tipo de destino: Dirección IP
\n" +"

Las reglas redirigirán al IP especificado. " +"Recuerda asignar esa IP o red a un peer.

\n" +"
Añadir regla de reenvío
\n" +"

Genera automáticamente una regla de reenvío para " +"ajustarse a configuraciones más estrictas de firewall.

\n" +"
Enmascarar origen
\n" +"

Solución temporal cuando un peer no usa la VPN " +"como puerta predeterminada. No se recomienda: cambia la IP de origen de " +"todas las conexiones por la de la instancia WireGuard.

\n" +" " #: templates/firewall/manage_redirect_rule.html:143 msgid "To delete this rule, please type:" -msgstr "" +msgstr "Para eliminar esta regla, escribe:" #: templates/firewall/redirect_rule_list.html:12 msgid "Instance" -msgstr "" +msgstr "Instancia" #: templates/firewall/redirect_rule_list.html:16 msgid "Allow Forward" -msgstr "" +msgstr "Permitir reenvío" #: templates/firewall/redirect_rule_list.html:46 msgid "" @@ -833,169 +926,172 @@ msgid "" "recommended, as it alters the source address of all connections to match the " "IP address of the WireGuard instance." msgstr "" +"Solución temporal cuando un peer no usa la VPN como puerta predeterminada. " +"No se recomienda, ya que altera la IP de origen de todas las conexiones a la " +"de la instancia WireGuard." #: templates/firewall/redirect_rule_list.html:58 msgid "Create Port forwarding Rule" -msgstr "" +msgstr "Crear regla de reenvío de puerto" #: templates/user_manager/list.html:9 user_manager/forms.py:20 msgid "User Level" -msgstr "" +msgstr "Nivel de acceso" #: templates/user_manager/list.html:10 user_manager/forms.py:24 #: user_manager/views.py:17 msgid "Peer Groups" -msgstr "" +msgstr "Grupos de peers" #: templates/user_manager/list.html:11 msgid "Permissions" -msgstr "" +msgstr "Permisos" #: templates/user_manager/list.html:26 msgid "All" -msgstr "" +msgstr "Todos" #: templates/user_manager/list.html:31 msgid "Restart Enabled" -msgstr "" +msgstr "Reinicio habilitado" #: templates/user_manager/list.html:36 msgid "Reload Enabled" -msgstr "" +msgstr "Recarga habilitada" #: templates/user_manager/list.html:42 msgid "Console Enabled" -msgstr "" +msgstr "Consola habilitada" #: templates/user_manager/list.html:48 msgid "Enhanced Filter Enabled" -msgstr "" +msgstr "Filtro mejorado habilitado" #: templates/user_manager/list_buttons.html:2 user_manager/views.py:111 msgid "Add User" -msgstr "" +msgstr "Añadir usuario" #: templates/user_manager/list_buttons.html:3 msgid "List Users" -msgstr "" +msgstr "Listar usuarios" #: templates/user_manager/list_buttons.html:4 msgid "List Peer Groups" -msgstr "" +msgstr "Listar grupos de peers" #: templates/user_manager/list_buttons.html:5 user_manager/views.py:43 msgid "Add Peer Group" -msgstr "" +msgstr "Añadir grupo de peers" #: templates/user_manager/peer_group_list.html:9 #: templates/wireguard/wireguard_status.html:48 msgid "Peers" -msgstr "" +msgstr "Peers" #: templates/user_manager/peer_group_list.html:10 user_manager/forms.py:179 msgid "Server Instance" -msgstr "" +msgstr "Instancia de WireGuard" #: templates/user_manager/peer_group_list.html:11 msgid "Users" -msgstr "" +msgstr "Usuarios" #: templates/vpn_invite/invite_settings.html:18 msgid "Expiration" -msgstr "" +msgstr "Caduca en" #: templates/vpn_invite/invite_settings.html:31 msgid "Remove VPN invitation for peer" -msgstr "" +msgstr "Eliminar invitación VPN del peer" #: templates/vpn_invite/invite_settings.html:38 msgid "No active VPN invitations" -msgstr "" +msgstr "No hay invitaciones VPN activas" #: templates/vpn_invite/invite_settings.html:49 vpn_invite/views.py:77 msgid "Email Settings" -msgstr "" +msgstr "Configuración de correo" #: templates/vpn_invite/invite_settings.html:50 msgid "Invite Settings" -msgstr "" +msgstr "Configuración de invitación" #: templates/wireguard/wireguard_manage_ip.html:18 msgid "Enter Allowed IP" -msgstr "" +msgstr "Ingresar IP permitida" #: templates/wireguard/wireguard_manage_ip.html:34 #: templates/wireguard/wireguard_manage_peer.html:103 #: templates/wireguard/wireguard_manage_peer.html:153 #: wireguard_peer/forms.py:31 msgid "Priority" -msgstr "" +msgstr "Prioridad" #: templates/wireguard/wireguard_manage_ip.html:58 msgid "Please type \\\"delete\\\" to remove this IP address." -msgstr "" +msgstr "Por favor escribe \\\"delete\\\" para eliminar esta IP." #: templates/wireguard/wireguard_manage_peer.html:8 msgid "Peer Configuration" -msgstr "" +msgstr "Configuración de peer" #: templates/wireguard/wireguard_manage_peer.html:17 msgid "Enter Name" -msgstr "" +msgstr "Ingresar nombre" #: templates/wireguard/wireguard_manage_peer.html:23 wireguard_peer/forms.py:14 msgid "Persistent Keepalive" -msgstr "" +msgstr "Keepalive persistente" #: templates/wireguard/wireguard_manage_peer.html:29 wireguard/forms.py:14 #: wireguard_peer/forms.py:11 msgid "Public Key" -msgstr "" +msgstr "Clave pública" #: templates/wireguard/wireguard_manage_peer.html:36 wireguard/forms.py:13 #: wireguard_peer/forms.py:12 msgid "Private Key" -msgstr "" +msgstr "Clave privada" #: templates/wireguard/wireguard_manage_peer.html:46 wireguard_peer/forms.py:13 msgid "Pre-Shared Key" -msgstr "" +msgstr "Clave precompartida" #: templates/wireguard/wireguard_manage_peer.html:57 #: templates/wireguard/wireguard_peer_list.html:136 msgid "Peer Traffic" -msgstr "" +msgstr "Tráfico del peer" #: templates/wireguard/wireguard_manage_peer.html:73 #: templates/wireguard/wireguard_peer_list.html:151 msgid "No traffic history, please wait a few minutes" -msgstr "" +msgstr "Sin historial de tráfico, espera unos minutos" #: templates/wireguard/wireguard_manage_peer.html:85 msgid "AllowedIPs at Peer section of wg" -msgstr "" +msgstr "AllowedIPs en sección peer de wg" #: templates/wireguard/wireguard_manage_peer.html:86 msgid "Peer IP Addresses and networks" -msgstr "" +msgstr "IPs y redes del peer" #: templates/wireguard/wireguard_manage_peer.html:88 #: templates/wireguard/wireguard_manage_peer.html:169 msgid "Add IP Address" -msgstr "" +msgstr "Añadir IP" #: templates/wireguard/wireguard_manage_peer.html:101 #: templates/wireguard/wireguard_manage_peer.html:151 msgid "Main ip address" -msgstr "" +msgstr "IP principal" #: templates/wireguard/wireguard_manage_peer.html:116 msgid "Client Routing Configuration" -msgstr "" +msgstr "Configuración de rutas cliente" #: templates/wireguard/wireguard_manage_peer.html:118 msgid "Add Client route" -msgstr "" +msgstr "Añadir ruta cliente" #: templates/wireguard/wireguard_manage_peer.html:124 msgid "" @@ -1005,6 +1101,10 @@ msgid "" "will need to manually update the client configuration file to reflect these " "settings." msgstr "" +"El cliente no está configurado para usar la VPN como puerta predeterminada." +"\\n\\nSolo las redes específicas listadas abajo se enrutan por la VPN." +"\\n\\nNota: Estas rutas no se envían automáticamente al cliente. Debes " +"actualizar manualmente su archivo de configuración para reflejarlas." #: templates/wireguard/wireguard_manage_peer.html:127 msgid "" @@ -1012,133 +1112,141 @@ msgid "" "setting routes all client internet traffic through the VPN, enhancing " "privacy and security across all connections." msgstr "" +"El cliente está configurado para usar la VPN como puerta predeterminada." +"\\n\\nEsta opción enruta todo el tráfico de Internet del cliente por la VPN, " +"mejorando privacidad y seguridad." #: templates/wireguard/wireguard_manage_peer.html:136 msgid "default route" -msgstr "" +msgstr "ruta predeterminada" #: templates/wireguard/wireguard_manage_peer.html:171 msgid "Delete Peer" -msgstr "" +msgstr "Eliminar peer" #: templates/wireguard/wireguard_manage_peer.html:188 msgid "Action Required!" -msgstr "" +msgstr "¡Acción requerida!" #: templates/wireguard/wireguard_manage_peer.html:189 msgid "" "When manually updating the \"Public Key\", \"Pre-Shared Key\", or \"Private " "Key\", please ensure the configuration is correct." msgstr "" +"Al actualizar manualmente \"Clave pública\", \"Clave precompartida\" o " +"\"Clave privada\", asegúrate de que la configuración sea correcta." #: templates/wireguard/wireguard_manage_peer.html:209 msgid "Please type \\\"delete\\\" to remove peer configuration." msgstr "" +"Por favor escribe \\\"delete\\\" para eliminar la configuración del peer." #: templates/wireguard/wireguard_manage_server.html:18 msgid "Create Instance" -msgstr "" +msgstr "Crear instancia" #: templates/wireguard/wireguard_manage_server.html:132 msgid "Delete Configuration" -msgstr "" +msgstr "Eliminar configuración" #: templates/wireguard/wireguard_peer_list.html:75 #: templates/wireguard/wireguard_peer_list.html:125 msgid "Throughput" -msgstr "" +msgstr "Rendimiento" #: templates/wireguard/wireguard_peer_list.html:76 #: templates/wireguard/wireguard_peer_list.html:126 msgid "Transfer" -msgstr "" +msgstr "Transferencia" #: templates/wireguard/wireguard_peer_list.html:77 #: templates/wireguard/wireguard_peer_list.html:127 msgid "Latest Handshake" -msgstr "" +msgstr "Último handshake" #: templates/wireguard/wireguard_peer_list.html:79 #: templates/wireguard/wireguard_peer_list.html:128 msgid "Endpoints" -msgstr "" +msgstr "Endpoints" #: templates/wireguard/wireguard_peer_list.html:81 #: templates/wireguard/wireguard_peer_list.html:129 msgid "Allowed IPs" -msgstr "" +msgstr "IPs permitidas" #: templates/wireguard/wireguard_peer_list.html:102 msgid "Are you sure you want to create a new peer?" -msgstr "" +msgstr "¿Seguro que quieres crear un nuevo peer?" #: templates/wireguard/wireguard_peer_list.html:102 #: templates/wireguard/wireguard_peer_list.html:104 msgid "Create Peer" -msgstr "" +msgstr "Crear peer" #: templates/wireguard/wireguard_peer_list.html:106 #: templates/wireguard/wireguard_peer_list.html:617 msgid "Show extras" -msgstr "" +msgstr "Mostrar extras" #: templates/wireguard/wireguard_peer_list.html:158 msgid "Close QR Code" -msgstr "" +msgstr "Cerrar código QR" #: templates/wireguard/wireguard_peer_list.html:168 msgid "VPN Invite Details" -msgstr "" +msgstr "Detalles de invitación VPN" #: templates/wireguard/wireguard_peer_list.html:174 msgid "Expires on" -msgstr "" +msgstr "Caduca el" #: templates/wireguard/wireguard_peer_list.html:178 msgid "Enter Email or WhatsApp Number" -msgstr "" +msgstr "Ingresa email o número de WhatsApp" #: templates/wireguard/wireguard_peer_list.html:179 msgid "Email or phone number" -msgstr "" +msgstr "Email o teléfono" #: templates/wireguard/wireguard_peer_list.html:182 msgid "Copy Text" -msgstr "" +msgstr "Copiar texto" #: templates/wireguard/wireguard_peer_list.html:183 msgid "Email" -msgstr "" +msgstr "Email" #: templates/wireguard/wireguard_peer_list.html:184 msgid "WhatsApp" -msgstr "" +msgstr "WhatsApp" #: templates/wireguard/wireguard_peer_list.html:192 msgid "Close" -msgstr "" +msgstr "Cerrar" #: templates/wireguard/wireguard_peer_list.html:193 msgid "Config" -msgstr "" +msgstr "Configuración" #: templates/wireguard/wireguard_peer_list.html:194 msgid "QR Code" -msgstr "" +msgstr "Código QR" #: templates/wireguard/wireguard_peer_list.html:204 msgid "No WireGuard Instances Found" -msgstr "" +msgstr "No se encontraron instancias WireGuard" #: templates/wireguard/wireguard_peer_list.html:205 msgid "" "There are no WireGuard instances configured. You can add a new instance by " "clicking the button below." msgstr "" +"No hay instancias WireGuard configuradas. Puedes añadir una nueva haciendo " +"clic en el botón abajo." #: templates/wireguard/wireguard_peer_list.html:208 msgid "Add WireGuard Instance" -msgstr "" +msgstr "Añadir instancia WireGuard" #: templates/wireguard/wireguard_peer_list.html:570 msgid "" @@ -1146,6 +1254,8 @@ msgid "" "indicating that another peer has an IP overlapping this network or that the " "configuration file is outdated." msgstr "" +"Esta dirección no aparece en la salida de 'wg show', lo que indica que otro " +"peer tiene una IP solapada o el archivo de configuración está desactualizado." #: templates/wireguard/wireguard_peer_list.html:585 msgid "" @@ -1153,158 +1263,160 @@ msgid "" "may indicate that another peer is using an overlapping IP or that the " "configuration file is outdated." msgstr "" +"Al menos una dirección no aparece en la salida de 'wg show', lo cual puede " +"indicar un IP solapada o un archivo desactualizado." #: templates/wireguard/wireguard_peer_list.html:614 msgid "Hide extras" -msgstr "" +msgstr "Ocultar extras" #: templates/wireguard/wireguard_peer_list.html:658 #: templates/wireguard/wireguard_peer_list.html:792 msgid "Access Password" -msgstr "" +msgstr "Contraseña de acceso" #: templates/wireguard/wireguard_peer_list.html:658 #: templates/wireguard/wireguard_peer_list.html:792 msgid "(Share this password via a separate secure channel)" -msgstr "" +msgstr "(Comparte esta contraseña por un canal seguro separado)" #: templates/wireguard/wireguard_peer_list.html:661 msgid "Unknown error" -msgstr "" +msgstr "Error desconocido" #: templates/wireguard/wireguard_peer_list.html:665 msgid "Error creating invite." -msgstr "" +msgstr "Error al crear invitación." #: templates/wireguard/wireguard_peer_list.html:702 msgid "Invite text copied to clipboard." -msgstr "" +msgstr "Texto de invitación copiado al portapapeles." #: templates/wireguard/wireguard_peer_list.html:704 msgid "Failed to copy text." -msgstr "" +msgstr "Error al copiar texto." #: templates/wireguard/wireguard_peer_list.html:707 msgid "Clipboard API not supported." -msgstr "" +msgstr "API del portapapeles no soportada." #: templates/wireguard/wireguard_peer_list.html:716 msgid "Please enter a valid phone number for WhatsApp." -msgstr "" +msgstr "Ingresa un número de WhatsApp válido." #: templates/wireguard/wireguard_peer_list.html:728 #: templates/wireguard/wireguard_peer_list.html:774 msgid "Invite data is not available." -msgstr "" +msgstr "Datos de invitación no disponibles." #: templates/wireguard/wireguard_peer_list.html:737 msgid "Please enter a valid email address." -msgstr "" +msgstr "Ingresa un email válido." #: templates/wireguard/wireguard_peer_list.html:759 msgid "Error sending email." -msgstr "" +msgstr "Error al enviar email." #: templates/wireguard/wireguard_peer_list.html:796 #: templates/wireguard/wireguard_peer_list.html:800 msgid "Error refreshing invite." -msgstr "" +msgstr "Error al actualizar invitación." #: templates/wireguard/wireguard_peer_list.html:815 msgid "No invite data available to refresh." -msgstr "" +msgstr "No hay datos de invitación para actualizar." #: templates/wireguard/wireguard_peer_list.html:835 msgid "Error closing invite:" -msgstr "" +msgstr "Error al cerrar invitación:" #: templates/wireguard/wireguard_status.html:9 msgid "Update Configuration" -msgstr "" +msgstr "Actualizar configuración" #: templates/wireguard/wireguard_status.html:16 msgid "Restart Wireguard service" -msgstr "" +msgstr "Reiniciar servicio WireGuard" #: templates/wireguard/wireguard_status.html:24 msgid "Reload Wireguard service" -msgstr "" +msgstr "Recargar servicio WireGuard" #: templates/wireguard/wireguard_status.html:42 msgid "Instance Traffic" -msgstr "" +msgstr "Tráfico de la instancia" #: templates/wireguard/wireguard_status.html:46 wireguard/forms.py:15 msgid "Public Address" -msgstr "" +msgstr "Dirección pública" #: user_manager/forms.py:15 msgid "Password Confirmation" -msgstr "" +msgstr "Confirmación de contraseña" #: user_manager/forms.py:17 msgid "Reload WireGuard" -msgstr "" +msgstr "Recargar WireGuard" #: user_manager/forms.py:18 msgid "Restart WireGuard" -msgstr "" +msgstr "Reiniciar WireGuard" #: user_manager/forms.py:19 msgid "Enhanced Filter" -msgstr "" +msgstr "Filtro mejorado" #: user_manager/forms.py:119 msgid "Password is required for new users." -msgstr "" +msgstr "Contraseña obligatoria para nuevos usuarios." #: user_manager/forms.py:121 msgid "Password confirmation is required for new users." -msgstr "" +msgstr "Confirmación de contraseña obligatoria para nuevos usuarios." #: user_manager/forms.py:125 msgid "The two password fields didn't match." -msgstr "" +msgstr "Las contraseñas no coinciden." #: user_manager/forms.py:127 msgid "Password must be at least 8 characters long." -msgstr "" +msgstr "La contraseña debe tener al menos 8 caracteres." #: user_manager/forms.py:220 msgid "A peer group with that name already exists." -msgstr "" +msgstr "Ya existe un grupo de peers con ese nombre." #: user_manager/models.py:13 msgid "Debugging Analyst" -msgstr "" +msgstr "Analista de depuración" #: user_manager/models.py:14 vpn_invite/models.py:25 msgid "View Only" -msgstr "" +msgstr "Solo lectura" #: user_manager/models.py:15 vpn_invite/models.py:25 msgid "Peer Manager" -msgstr "" +msgstr "Gestor de peers" #: user_manager/models.py:16 vpn_invite/models.py:25 msgid "WireGuard Manager" -msgstr "" +msgstr "Gestor de WireGuard" #: user_manager/models.py:17 vpn_invite/models.py:25 msgid "Administrator" -msgstr "" +msgstr "Administrador" #: user_manager/views.py:31 msgid "Edit Peer Group: " -msgstr "" +msgstr "Editar grupo de peers: " #: user_manager/views.py:36 msgid "Peer Group deleted|Peer Group deleted: " -msgstr "" +msgstr "Grupo de peers eliminado|Grupo eliminado: " #: user_manager/views.py:39 msgid "Peer Group not deleted|Invalid confirmation." -msgstr "" +msgstr "Grupo de peers no eliminado|Confirmación inválida." #: user_manager/views.py:58 msgid "" @@ -1318,30 +1430,40 @@ msgid "" "this peer group, including adding or removing peers.

\n" " " msgstr "" +"\n" +"
Peers
\n" +"

Selecciona los peers que pueden gestionar los usuarios de este " +"grupo.

\n" +"\n" +"
Instancias de WireGuard
\n" +"

Todos los peers en esta instancia de WireGuard pueden ser " +"gestionados por usuarios de este grupo, incluyendo añadir o eliminar peers.\n" +" " #: user_manager/views.py:98 msgid "Edit User" -msgstr "" +msgstr "Editar usuario" #: user_manager/views.py:104 msgid "User deleted|User deleted: " -msgstr "" +msgstr "Usuario eliminado|Usuario eliminado: " #: user_manager/views.py:107 msgid "User not deleted|Invalid confirmation." -msgstr "" +msgstr "Usuario no eliminado|Confirmación inválida." #: user_manager/views.py:128 msgid "User Disconnected|User Disconnected: " -msgstr "" +msgstr "Usuario desconectado|Usuario desconectado: " #: user_manager/views.py:132 msgid "User updated|User updated: " -msgstr "" +msgstr "Usuario actualizado|Usuario actualizado: " #: user_manager/views.py:134 msgid "User created|User created: " -msgstr "" +msgstr "Usuario creado|Usuario creado: " #: user_manager/views.py:139 msgid "" @@ -1385,170 +1507,216 @@ msgid "" "\n" " " msgstr "" +"\n" +"

Niveles de usuario

\n" +"
Analista de depuración
\n" +"

Acceso a información básica y registros para depuración. Sin " +"permiso para modificar ajustes o ver datos sensibles como claves de peer.\n" +"\n" +"

Solo lectura
\n" +"

Acceso completo de visualización, incluyendo claves y archivos de " +"configuración. No puede modificar ajustes.

\n" +"\n" +"
Gestor de peers
\n" +"

Permisos para añadir, editar y eliminar peers e IPs. No incluye " +"modificar configuraciones de instancias WireGuard u otros ajustes.

\n" +"\n" +"
Gestor de WireGuard
\n" +"

Autoridad para añadir, editar y eliminar configuraciones de " +"instancias de WireGuard.

\n" +"\n" +"
Administrador
\n" +"

Acceso total al sistema. Puede ver y modificar todas las " +"configuraciones y gestionar usuarios.

\n" +"\n" +"
\n" +"

Grupos de peers

\n" +"

Selecciona los grupos de peers a los que puede acceder este " +"usuario. Si no seleccionas ninguno, tendrá acceso a todos.

\n" +"\n" +"

Consola

\n" +"

Habilitar o deshabilitar acceso a la consola web para este " +"usuario.

\n" +"\n" +"

Filtro mejorado

\n" +"

Este filtro muestra solo los peers a los que el usuario tiene " +"acceso. Según el tamaño de tu entorno, puede impactar rendimiento. Para " +"mitigarlo, aumenta el \"Intervalo de actualización web\" para reducir las " +"solicitudes.

\n" +"\n" +" " #: user_manager/views.py:175 msgid "Please type the username to proceed." -msgstr "" +msgstr "Por favor escribe el nombre de usuario para continuar." #: vpn_invite/forms.py:49 vpn_invite/forms.py:294 msgid "Enabled" -msgstr "" +msgstr "Habilitado" #: vpn_invite/forms.py:49 msgid "Disabled" -msgstr "" +msgstr "Deshabilitado" #: vpn_invite/forms.py:68 vpn_invite/forms.py:69 vpn_invite/forms.py:70 #: vpn_invite/forms.py:71 vpn_invite/forms.py:72 msgid "URL" -msgstr "" +msgstr "URL" #: vpn_invite/forms.py:73 vpn_invite/forms.py:74 vpn_invite/forms.py:75 #: vpn_invite/forms.py:76 vpn_invite/forms.py:77 msgid "Text" -msgstr "" +msgstr "Texto" #: vpn_invite/forms.py:83 msgid "Web Page Instructions" -msgstr "" +msgstr "Instrucciones en página web" #: vpn_invite/forms.py:84 msgid "Email Subject" -msgstr "" +msgstr "Asunto del correo" #: vpn_invite/forms.py:85 msgid "Email Message" -msgstr "" +msgstr "Mensaje de correo" #: vpn_invite/forms.py:86 msgid "Email Enabled" -msgstr "" +msgstr "Correo habilitado" #: vpn_invite/forms.py:87 msgid "WhatsApp Message" -msgstr "" +msgstr "Mensaje de WhatsApp" #: vpn_invite/forms.py:88 msgid "WhatsApp Enabled" -msgstr "" +msgstr "WhatsApp habilitado" #: vpn_invite/forms.py:89 msgid "Text Message" -msgstr "" +msgstr "Mensaje de texto" #: vpn_invite/forms.py:90 msgid "Expiration (minutes)" -msgstr "" +msgstr "Expira en (minutos)" #: vpn_invite/forms.py:91 msgid "Random Password" -msgstr "" +msgstr "Contraseña aleatoria" #: vpn_invite/forms.py:92 msgid "Invite URL" -msgstr "" +msgstr "URL de invitación" #: vpn_invite/forms.py:93 msgid "Required User Level" -msgstr "" +msgstr "Nivel de acceso requerido" #: vpn_invite/forms.py:94 msgid "Default Password" -msgstr "" +msgstr "Contraseña predeterminada" #: vpn_invite/forms.py:95 msgid "Random Password Length" -msgstr "" +msgstr "Longitud de contraseña aleatoria" #: vpn_invite/forms.py:96 msgid "Random Password Complexity" -msgstr "" +msgstr "Complejidad de contraseña aleatoria" #: vpn_invite/forms.py:103 msgid "General Settings" -msgstr "" +msgstr "Ajustes generales" #: vpn_invite/forms.py:125 msgid "Download Buttons" -msgstr "" +msgstr "Botones de descarga" #: vpn_invite/forms.py:158 msgid "Message templates" -msgstr "" +msgstr "Plantillas de mensaje" #: vpn_invite/forms.py:165 msgid "Email Message Template" -msgstr "" +msgstr "Plantilla de correo" #: vpn_invite/forms.py:176 msgid "WhatsApp Message Template" -msgstr "" +msgstr "Plantilla de WhatsApp" #: vpn_invite/forms.py:183 msgid "Text Message Template" -msgstr "" +msgstr "Plantilla de mensaje de texto" #: vpn_invite/forms.py:205 msgid "Invite URL must start with 'https://'." -msgstr "" +msgstr "La URL debe empezar con 'https://'." #: vpn_invite/forms.py:207 msgid "Invite URL must end with '/invite/'." -msgstr "" +msgstr "La URL debe terminar con '/invite/'." #: vpn_invite/forms.py:213 msgid "Expiration (minutes) must be between 1 and 1440." -msgstr "" +msgstr "La expiración (minutos) debe estar entre 1 y 1440." #: vpn_invite/forms.py:222 msgid "Default password must not be provided when random password is enabled." msgstr "" +"No proporciones contraseña predeterminada si la aleatoria está habilitada." #: vpn_invite/forms.py:224 msgid "Random password length must be at least 6 characters." -msgstr "" +msgstr "La contraseña aleatoria debe tener al menos 6 caracteres." #: vpn_invite/forms.py:229 msgid "Default password must be provided when random password is disabled." msgstr "" +"Proporciona contraseña predeterminada si la aleatoria está deshabilitada." #: vpn_invite/forms.py:231 msgid "Default password must be at least 6 characters long." -msgstr "" +msgstr "La contraseña predeterminada debe tener al menos 6 caracteres." #: vpn_invite/forms.py:241 msgid "Text field must not be empty when download button is enabled." msgstr "" +"El campo de texto no puede estar vacío si el botón de descarga está " +"habilitado." #: vpn_invite/forms.py:243 msgid "URL field must not be empty when download button is enabled." msgstr "" +"El campo URL no puede estar vacío si el botón de descarga está habilitado." #: vpn_invite/forms.py:252 msgid "" "Default password must not be contained in any message template. Found at: " msgstr "" +"La contraseña predeterminada no debe estar en ninguna plantilla. Encontrado " +"en: " #: vpn_invite/forms.py:259 #, python-brace-format msgid "The template must include the placeholder '{invite_url}'." -msgstr "" +msgstr "La plantilla debe incluir el marcador '{invite_url}'." #: vpn_invite/forms.py:283 msgid "Host" -msgstr "" +msgstr "Host" #: vpn_invite/forms.py:285 msgid "Encryption" -msgstr "" +msgstr "Cifrado" #: vpn_invite/forms.py:286 msgid "From Address" -msgstr "" +msgstr "Dirección de origen" #: vpn_invite/forms.py:337 msgid "SMTP port must be between 1 and 65535." -msgstr "" +msgstr "El puerto SMTP debe estar entre 1 y 65535." #: vpn_invite/models.py:8 #, python-brace-format @@ -1563,6 +1731,15 @@ msgid "" "Note: This invitation link will expire in {expire_minutes} minutes. If you " "need a new link after expiration, please request another invite." msgstr "" +"Hola,\n" +"\n" +"Estás invitado a unirte a nuestra red VPN WireGuard segura. Haz clic en el " +"enlace para acceder a tu configuración VPN personalizada:\n" +"\n" +"{invite_url}\n" +"\n" +"Nota: Este enlace expirará en {expire_minutes} minutos. Si necesitas uno " +"nuevo, solicita otra invitación." #: vpn_invite/models.py:16 msgid "" @@ -1573,22 +1750,28 @@ msgid "" "download the configuration file to quickly import your " "settings and start using your secure VPN connection.

" msgstr "" +"

Bienvenido a la configuración de tu VPN

\n" +"

Descarga la app WireGuard para tu dispositivo desde uno de los enlaces.\n" +"

Tras instalar, puedes escanear el código QR o " +"descargar el archivo de configuración para importarlo y " +"usar tu VPN segura.

" #: vpn_invite/models.py:30 msgid "Letters, Digits, Special Characters" -msgstr "" +msgstr "Letras, dígitos, caracteres especiales" #: vpn_invite/models.py:31 msgid "Letters, Digits" -msgstr "" +msgstr "Letras, dígitos" #: vpn_invite/models.py:31 msgid "Letters" -msgstr "" +msgstr "Letras" #: vpn_invite/models.py:31 msgid "Digits" -msgstr "" +msgstr "Dígitos" #: vpn_invite/models.py:55 msgid "" @@ -1596,227 +1779,243 @@ msgid "" "After installation, you can scan the QR code or download the configuration " "file to import on your device." msgstr "" +"Descarga la app WireGuard para tu dispositivo desde uno de los enlaces. Tras " +"la instalación, puedes escanear el código QR o descargar el archivo de " +"configuración para importarlo." #: vpn_invite/models.py:61 msgid "WireGuard VPN Invite" -msgstr "" +msgstr "Invitación VPN WireGuard" #: vpn_invite/views.py:53 msgid "Invite Settings|Settings saved successfully." -msgstr "" +msgstr "Configuración de invitación|Configuración guardada correctamente." #: vpn_invite/views.py:57 msgid "VPN Invite Settings" -msgstr "" +msgstr "Configuración de invitación VPN" #: vpn_invite/views.py:73 msgid "Email Settings|Settings saved successfully." -msgstr "" +msgstr "Configuración de correo|Configuración guardada correctamente." #: wireguard/forms.py:11 msgid "Display Name" -msgstr "" +msgstr "Nombre para mostrar" #: wireguard/forms.py:12 msgid "Instance ID" -msgstr "" +msgstr "Instancia" #: wireguard/forms.py:16 msgid "Listen Port" -msgstr "" +msgstr "Puerto" #: wireguard/forms.py:17 msgid "Internal IP Address" -msgstr "" +msgstr "Dirección IP interna" #: wireguard/forms.py:19 msgid "Post Up" -msgstr "" +msgstr "Post Up" #: wireguard/forms.py:20 msgid "Post Down" -msgstr "" +msgstr "Post Down" #: wireguard/forms.py:21 msgid "Web Refresh Interval" -msgstr "" +msgstr "Intervalo de actualización web" #: wireguard/forms.py:42 msgid "Peer List Refresh Interval must be at least 5 seconds" -msgstr "" +msgstr "El intervalo de actualización de peers debe ser al menos 5 segundos" #: wireguard/forms.py:45 msgid "Invalid hostname or IP Address" -msgstr "" +msgstr "Nombre de host o IP inválido" #: wireguard/forms.py:54 msgid "The selected network range overlaps with another instance." -msgstr "" +msgstr "El rango de red seleccionado se solapa con otra instancia." #: wireguard/views.py:97 msgid "WireGuard Status" -msgstr "" +msgstr "Estado de WireGuard" #: wireguard/views.py:129 msgid "Update WireGuard Instance" -msgstr "" +msgstr "Actualizar instancia WireGuard" #: wireguard/views.py:133 msgid "Delete WireGuard Instance" -msgstr "" +msgstr "Eliminar instancia WireGuard" #: wireguard/views.py:136 msgid "Error removing instance: wg" -msgstr "" +msgstr "Error al eliminar instancia: wg" #: wireguard/views.py:136 msgid "" "|Cannot delete the requested WireGuard instance. There are still peers " "associated with this instance." msgstr "" +"|No se puede eliminar la instancia solicitada. Aún hay peers asociados." #: wireguard/views.py:139 msgid "|WireGuard instance deleted: wg" -msgstr "" +msgstr "|Instancia WireGuard eliminada: wg" #: wireguard/views.py:142 msgid "Invalid confirmation|Please confirm deletion of WireGuard instance: wg" -msgstr "" +msgstr "Confirmación inválida|Por favor confirma eliminación de instancia: wg" #: wireguard/views.py:146 msgid "Create a new WireGuard Instance" -msgstr "" +msgstr "Crear nueva instancia WireGuard" #: wireguard/views.py:147 msgid "New WireGuard Instance" -msgstr "" +msgstr "Nueva instancia WireGuard" #: wireguard_peer/forms.py:29 msgid "Allowed IP or Network" -msgstr "" +msgstr "IP o red permitida" #: wireguard_peer/forms.py:39 msgid "Please provide a valid IP address." -msgstr "" +msgstr "Por favor proporciona una IP válida." #: wireguard_peer/forms.py:48 msgid "A peer can have only one IP with priority zero." -msgstr "" +msgstr "Un peer solo puede tener una IP con prioridad cero." #: wireguard_peer/forms.py:54 msgid "This IP is already in use by another peer." -msgstr "" +msgstr "Esta IP ya la usa otro peer." #: wireguard_peer/forms.py:56 msgid "" "The IP address does not belong to the Peer's WireGuard instance network " "range. Please check the IP address or change the priority." msgstr "" +"La IP no pertenece al rango de la instancia WireGuard del peer. Verifica la " +"IP o cambia la prioridad." #: wireguard_peer/forms.py:58 msgid "The netmask for priority 0 IP must be 32." -msgstr "" +msgstr "La máscara para IP con prioridad 0 debe ser 32." #: wireguard_peer/forms.py:60 msgid "The IP address is the same as the Peer's WireGuard instance address." -msgstr "" +msgstr "La IP es la misma que la instancia WireGuard del peer." #: wireguard_peer/forms.py:63 msgid "" "The IP address belongs to the Peer's WireGuard instance network range. " "Please check the IP address or change use priority 0 instead." msgstr "" +"La IP pertenece al rango de la instancia WireGuard del peer. Verifica la IP " +"o usa prioridad 0." #: wireguard_peer/forms.py:66 msgid "Priority must be greater than or equal to 1" -msgstr "" +msgstr "La prioridad debe ser ≥ 1" #: wireguard_peer/forms.py:68 msgid "Invalid config file" -msgstr "" +msgstr "Archivo de configuración inválido" #: wireguard_peer/views.py:50 msgid "WireGuard Peer List" -msgstr "" +msgstr "Lista de peers WireGuard" #: wireguard_peer/views.py:129 msgid "Create a new Peer for instance wg" -msgstr "" +msgstr "Crear nuevo peer para instancia wg" #: wireguard_peer/views.py:148 msgid "Peer created|Peer created successfully." -msgstr "" +msgstr "Peer creado|Peer creado correctamente." #: wireguard_peer/views.py:153 msgid "Error creating peer|No available IP address found for peer creation." -msgstr "" +msgstr "Error al crear peer|No hay IP disponible para asignar." #: wireguard_peer/views.py:166 msgid "Peer deleted|Peer deleted successfully." -msgstr "" +msgstr "Peer eliminado|Peer eliminado correctamente." #: wireguard_peer/views.py:169 msgid "" "Error deleting peer|Invalid confirmation message. Type \"delete\" to confirm." msgstr "" +"Error al eliminar peer|Confirmación inválida. Escribe \"delete\" para " +"confirmar." #: wireguard_peer/views.py:171 msgid "Update Peer: " -msgstr "" +msgstr "Actualizar peer: " #: wireguard_peer/views.py:182 msgid "Peer updated|Peer updated successfully." -msgstr "" +msgstr "Peer actualizado|Peer actualizado correctamente." #: wireguard_peer/views.py:220 msgid "IP address deleted|IP address deleted successfully." -msgstr "" +msgstr "IP eliminada|IP eliminada correctamente." #: wireguard_peer/views.py:225 msgid "" "Error deleting IP address|Invalid confirmation message. Type \"delete\" to " "confirm." msgstr "" +"Error al eliminar IP|Confirmación inválida. Escribe \"delete\" para " +"confirmar." #: wireguard_peer/views.py:230 msgid "Manage client route" -msgstr "" +msgstr "Gestionar ruta cliente" #: wireguard_peer/views.py:232 msgid "Manage IP address or Network" -msgstr "" +msgstr "Gestionar IP o red" #: wireguard_peer/views.py:245 msgid "IP address updated|IP address updated successfully." -msgstr "" +msgstr "IP actualizada|IP actualizada correctamente." #: wireguard_peer/views.py:247 msgid "IP address added|IP address added successfully." -msgstr "" +msgstr "IP añadida|IP añadida correctamente." #: wireguard_tools/views.py:160 msgid "" "Export successful!|WireGuard configuration files have been exported to /etc/" "wireguard/." msgstr "" +"Exportación exitosa!|Los archivos de configuración se exportaron a /etc/" +"wireguard/." #: wireguard_tools/views.py:162 msgid "" "Export successful!|WireGuard configuration files have been exported to /etc/" "wireguard/. Don't forget to restart the interfaces." msgstr "" +"Exportación exitosa!|Los archivos de configuración se exportaron a /etc/" +"wireguard/. No olvides reiniciar las interfaces." #: wireguard_tools/views.py:255 msgid "Error reloading" -msgstr "" +msgstr "Error al recargar" #: wireguard_tools/views.py:267 msgid "Error stopping" -msgstr "" +msgstr "Error al detener" #: wireguard_tools/views.py:272 msgid "Error starting" -msgstr "" +msgstr "Error al iniciar" #: wireguard_tools/views.py:279 msgid "" @@ -1824,19 +2023,22 @@ msgid "" "check if the the peers are working as expected. If you find any issues, " "please report them." msgstr "" +"ADVERTENCIA|La interfaz se recargó, no reinició. Verifica que los peers " +"funcionen correctamente. Si hay problemas, repórtalos." #: wireguard_tools/views.py:280 msgid "WireGuard reloaded|The WireGuard service has been reloaded." -msgstr "" +msgstr "WireGuard recargado|El servicio WireGuard se ha recargado." #: wireguard_tools/views.py:282 msgid "WireGuard restarted|The WireGuard service has been restarted." -msgstr "" +msgstr "WireGuard reiniciado|El servicio WireGuard se ha reiniciado." #: wireguard_tools/views.py:285 msgid "Errors encountered|Error processing one or more interfaces." -msgstr "" +msgstr "Errores encontrados|Error al procesar una o más interfaces." #: wireguard_tools/views.py:288 msgid "No interfaces found|No WireGuard interfaces were found to process." msgstr "" +"No se encontraron interfaces|No hay interfaces WireGuard para procesar."