From fa35187795734ad4f4dc33f74cc0fe020dd9ff32 Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Wed, 9 Oct 2019 13:54:04 +0200 Subject: [PATCH] Removed .mo translation files from version control, use .po as fallback --- .gitignore | 1 + README.md | 5 ++++ resources/lang/de_DE/default.mo | Bin 46693 -> 0 bytes resources/lang/en_US/default.mo | Bin 1240 -> 0 bytes resources/lang/pt_BR/default.mo | Bin 41132 -> 0 bytes .../TranslationServiceProvider.php | 25 ++++++++++++++++-- .../Translation/Assets/ba_RR/default.po | 3 +++ .../TranslationServiceProviderTest.php | 22 ++++++++++++--- 8 files changed, 51 insertions(+), 5 deletions(-) delete mode 100644 resources/lang/de_DE/default.mo delete mode 100644 resources/lang/en_US/default.mo delete mode 100644 resources/lang/pt_BR/default.mo create mode 100644 tests/Unit/Helpers/Translation/Assets/ba_RR/default.po diff --git a/.gitignore b/.gitignore index 77a62c1e..cda5cf92 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ _vimrc_local.vim /public/coverage /coverage /unittests.xml +/resources/lang/*/*.mo # Composer files /vendor/ diff --git a/README.md b/README.md index 02508157..594011b7 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,11 @@ The following instructions explain how to get, build and run the latest engelsys ```bash yarn build ``` + * Optionally (for better performance) + * Generate translation files + ```bash + find resources/lang/ -type f -name '*.po' -exec sh -c 'file="{}"; msgfmt "${file%.*}.po" -o "${file%.*}.mo"' \; + ``` ### Configuration and Setup * The webserver must have write access to the ```import``` and ```storage``` directories and read access for all other directories diff --git a/resources/lang/de_DE/default.mo b/resources/lang/de_DE/default.mo deleted file mode 100644 index d4b7885bdb60dad5663232db1d20a4ced7afa4b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46693 zcmb`Q37lO;mH)4@2L)u29d3Y-1k#;_y;(w*&O%m52m%Vc?!Mjq$XnXCBqS<|Gl~oD zD6Y5xZiC{6sEFglaa?ep8P}O{$7OWJZEyx0{@>p@RrlTZx;w%7{NE?lzgv6NsZ*y; zovM5DuZQma+JxWwCnm{p;4OzH$zgjX$)l$zG)Y!1Op=qp)!+$W1ys~a!6$?FfKLG* z01pPg2F?V30G4pe#11XbUy;DO)=!9&1Lfiu9bfTw}q3ApzeNwP2g z`2o)cRo{i6+OZDY54;+r`N=SNC^!Zl4(ME=cq4cs_-0V`-VYuDehxea{647k4})soA!mCz$AYTwBv5od15`g3 zgX;HX!GA3%`Zd6Vz@4Dz`eJZ@@U{^CHc<5W0Js|b4ER*=z;nF5lR(jVE~s{%2dds> zA$$Xc=}l zrGFo&@%sp8VH38oRYTP~vY94$YRK7oeqSIajK8^_D<$2Wtb``>^n z?^B@Y_aG=f{AW;f{0X=h_$N@~@hGTvJb}ikoc%$K>rtS}p9P)@E&xUMD?)q~R6RRE zrF$``@^1yzj(3A9=i}fzz|VoIw|udWQx!ZC{|->~zY0`2uLni1cYqVGpT`~%=#_&*Qs13m~U-8Vp$`yEj6KLbUdUxMO`-v$2@R(N>_fXa6$ zsB}kzYUj-0p9iYmGePzLLU3R3GH`G3N>J^;CiurerK^JC@8^T6_m#o_R#5G_8&o?# z7{VV2_+Y^Af~xoDpz8T;2>&lo{Ji%{$D=^CcOIzv&H zF2LUc)&Dy~_JsnI0#M_0DX4s-;8EaTfh<+Yn}h!!!MXT<4XXV|uJLxP0_Wf# z1{Z<1fQaJc)1c(&BVY=i#pG4_TR_dHFzTU2~h3&E_fRFJ5c>PejRHzcn(+x z-wWOf9<$!leE?Lt?}C!^e+d3lH+cCMgOZEm0dEA4#eXX(I^GlfUkd(*z|#qT;zn<8 zKdAPu0S^JM2i5Lpf&Jh+LG}L|py=}mcqurGKcd5Sa6jv2KP`kW0@dI1LDB1SQ2DCCecgI9toZ#$^^ zZv+nmZvhVn-v;gveiT$W4}gb)Ujfz6AA$#gj|7}?xtDV^sChCQJRH0zgl_^x-xByF z@KvDl-yZyTgQC|bK=uDiA^x91wezPT{@(-sIp9HCd^}DBk09M#Q1vbbRnF#s*Mchl zdQkm&7WfqKrJ%;~EuiRgCn!3;7gW9Xg!qqvk_(>(m2MX(KKMMSdcFawoPPmDx1WNu zz~6-M!>{o69S5r3MWE=u9Av3WE(1rw*Met)kAi1`3!mnC(HM9U{yV`%;7`B-@W?BD zK3@iEzTN^V{BOX8;6tGJ|LCh+Z(as!9A5^C{%-?Wa*_{#%Kt}jC3wWu&UeoMX-e`f zunNw9I(sPaE#L<5;Ai-JycWC}|Fgj}z`bGKdEmL=(O?Fu{O5uy|E(eXAyD*u!nID9 zeL>OxC{Xl2A^2y38sF1F(RT?bzP|)K4cr21d~XWjuLda20RDLCp>p{(*4}u!MuY#I4{{pI?zXio#2cm?i{$m54 z3W`4#f){}2fuiF!@NDqs;5zWcA#YC=RJ)%C9tpkz6u-R-RJk7v@%M-LF9rN@z(+u} z@33L-_e@ayI~!Cvr-P#BS>SAN4XAcCLGj-`;Q8QBL5=6k5p+NBa{g#sKLMT$J_Mcs z9+;uif~SEq!8<{P{{zSnCqDy^1qWgB>%kIu68Ipfa{dE66+CRr`#k_o;9m{)fu8`& z;Lky|=dy99%L~CK{@X#(>rfIs6`UFHTu|e+0n~h`f|5gT1=oOI1?Par(kPX?92DJd z02hES1TO?X1}+Bw2&x}vZS`@u6cqnF9o!47gZqF@a6fPdcp!KasP?@K+#7r|xG(s2 zQ0d+c9thq89tPeID*kJr@_h?bzMp~ngTDgBXMX_Ip1ms`pMq-7EKuz@7d#NWDBvZa z%Gnb9SA(MaSn$6*;2S}uy9-qN-WTx0pvwIusB%98J_-CXsCvH(D*dkm{xRU6LA86I zs?Vc?K=p4nD0=sU>gNTZ%3lMj{!76b;1*E%OQ6R0dQkK2rhsn(HO?OeHDA679tZvk zoD1$>^YRvfPr-i6b|($58z z?ov?oYy-tlZv$1%7ef56!2|Fg+VJv@1J$2CQ2EXVH4fK-qRY*o=peK+)?V@I>%ep!$7a%h$ODpu)F+DYy+({kH}G-Js^(S3vdme?j$gPTTomKB)3m zfv1C2Q1p2NsQ$bI)Ode9;5R|F@7JLC?N8vLV6x5Wau|3R-V;H!{|r#^OF-q@42rJT zf*Rjvf}-d1LCvd|gHHu-2RDHq1;tMXYD?<_rZ(7!*2BTZ!;*m zz7iB2Zv#b_J45*Uz>D#J2vk3R4=UYp&vpN4p!jSPcqEvC>i2U%(djl&{Bk#_@%U7T z{|2aW_;*nC{Wjpkpy>B!Q0Zqp&&U5nP;@#CJQjQ!D0;R)@%M{Bjnf-Ih2IIPT^|S4 z-Y{XBRj_-$|&xahAPp9apxe7c=xDfvX;5_g@!M(xbZ+7~h1gf61LDA=8Q2kyDs{L1k>d#2Rqr*R(l-Kb5BO|Q>2Crx58nhT z-v@*L??U{yLAB?1;9T$tFL6FO9aO(JgUWXmcmlW;6yLlA+#kFXR6pJy@BvWc`W5g( z@cW>~>6n)~f6oM!?`%-*S`4b4mj{16;0r*_^EU2fWPnfs;YS4}zC~*MOqud%$_%r$EWuUxFurC%xR|>mYa@ z{vF^J@WbHc;EY%J`hFd#^e+H4uigzR{evNV-&cCS=7OU4AgFY8a2$LMcpdmChzLlY z@hTsWAAq9A0k3v@^ej;R1~?ylIVgU806Y%-K6oPd-vN()jq5Gvff~oFK&=Nmg8v>+ z?f5Eq82Eco^LxKr9nS;%@NWedfo}lUf)9er!J}X6^XwW><2wqf9d+=@;4R>R;2S~l z^If3$>j7{E_*w7}@T=gHz#o8W|F1!f+mm1C^J+FI|9POw*#wG?TZ8|#;1T%m22Tff zfvWdEz^lMVKuDWxxy||VAyD(@H{hY*??KJqeP8eGI|>y4o&YL-7I-*#E_eXA4%B#G z0jfVcLAC#R;8Ebq0^S9R4xa|aw_gUI3jQ3N1wIB^`ET(0&jm$~OF)g+)!@+q zKLCoKJ_eo*{%r_<7*u_afuhqfEKVBd)4`SCIbaQZE_g2Zn}D<5;_~4-@B+eb2gN7f z0|&tUZg*S?o`U~5;41JP;5p#0K&3zVtv+8jfNIBmpy>TgQ1kI2@C5M4w>jUP4c?6Z zRp6E2(Qjw2gH7Yim$Dqo&`U5V1ZUVR9zZHBE_$x34{{)Kfj=sm+aSnJo{!L&X_*`%WcsDo) z`~#@|9{)k-m#aX{-*NCF@U7rt@Lxf-_k<65x>ewz__u(2fn{)iunNuqw}FR%H-WDP zUk!@>vp($n&<7rf{~S>1mVx5W&7jJ;9y}Cm2LB7eC*yxbz_);h;eQ{f`aTVceqRLl z1%CvJF24X(-hY9b2akcOckholJq`iozbN1(-~srz1iUWb^#NM}Zv@re7lGox+d-9c zU%=0TYS-65wdZ@F){!59D*wO1gTTE$>is_yRR2x}6~7QvdFO*_|4LBfzY&z&*#=5( zy&lxKd<+yn{t%R$+y7qY)008beI+P*ZU8kOhQKF)@58Mk;I-gCDuCZx0=f^{g@?}* zeiH7TIJNzkxZ_nAzazk9;6*)oufs37ek3@bG&d?Szf16IzO2M;<@v90lIt@=d3WJI z4gbf%{{%Pm=H%Ry*+@pkF2&&IN3Ta*+P<$4D+X)-Pm0|$+Zv5wy z_g}%waPx3K5Am=~vKqgBZv>AaUHnO&okH02L%>A9Iba{*AHzKfr{5oO=i}ave?G1( z#D59pWjx=5JAmi^0{6iU;r@(!4le%I@leJ69qvTZet@`#3i1EW^Jj6A+j|lJI-c8w zc!HCE#a*Wde!sviC4O(xt^-fN9Y)wEaN@Z?;Qtct2A=mJjeaS3dU%$9HqVdgf!|X? z_$55E>?LQC_pfpKU5;DG^S^)_aVLeeO`hLC_)|drHuC(CKPI06Q~bXJH{+g%tKr^C z*voNe^L$7s=VuDTuV0nt<8ZydGYSEtJbx2+IO)C@!k2|SKLlSv*f>sW#Vz>%4Bj5% z-vk~Qo(WE#7@pq+eir|^!C&V272)}3JfF|=Bf+!u8YI+fQG9OxPIDe~UX9 z|M&23!AaKYr?v5?_JsT){BY9j0uRRR4B>)9@V^Z=kLNGo_9dOz@1e{cRkNv#XUy&>JYvU_)^^dgvHs=iokv|GT&WxzL_};`w*DChkw9c~S`f6#gIM zUmX1Vfqx=QKLuqtt?T+d2X{1q&oCc+PrA>AXMyhYUW|K$=bsSwKHPJ0GgJ`2r{P|O zdof}9y$3uT{4MSqxPQdG9`{SacYyE5{T1#ST>O2AxS!&liTe)j36#A&L@vgEUQ7tK za7&4Q3E}tfd;u7Lzu@_5JfFw?FYdGu_jR7X!t?uszaRgK@Vu61{oae4N4ZbL{Ws5l zk6VbloOD0O-OTd~aWCWf4%{_3{hkJX9NgP{>`}pQ5%w>*XW_ma!oLW<9d{~W{{y}V zT!hnaEAAsaA4=W-#`7O=|AYUPxU&hn3;(A>S|07UHu#@R{QvU&8bVj{{3~z`cp6T> zQ@}HbpB2)divMh$*Wi9l{MW!axIV%g;0?I=+dn*PAZ#RrZz60pX@3L$En%Mq`*6SF z`GvSw;eL-hfiV5vft!Ilmpsb}*KYyO-vKMQQ*r-*({E;ocOUv|@Si|>{qDmx>@u_^$*%jC%{uzsJ3U=hJZ)gtUTNaM$V~l(mHTg*?9oY!kc$_bBcoxNqU~dn$2% z4PK0UFVFhjifi$FQ1IW2e{CppPzm_mN!%*%BEsw7umbtL755-I+{3u|TfxKKxJyIWNj(3N z=MUn}p&cXm--Nrckmn}+#os51y9u|Rz<&ex1)qgG8uxA7@i_giCGKx%{-);4%cg= zRH_AgKY}M1&c$PND%cCtN zn%zvd)!W14S)++>UOL*SSIMt*vpl5PDm7Z=+L-*OrJIy79juL{!{e%us=IQ;6l?3l zrB=CK+e5NVDtr%VTIE(H+fy2Kd+HYTU6j`9t#reh{&Zs{D>bvU)!31i#!BT{f3k4V zyt7*A=099y-uq_La&S5Nvvyr*cZ^POQzQxIskrBDHTCTNQnGIA{n-pY&=IQD* zHs2120bWmuAd8?(yR;q$-CCIfcqmXG6G#Vrr*-Z*@ z!sKGc6q>gBm=z6XMW=j4)R-~dF)C!V-mc{pIX5(%;hXK@;jGylZC7T7lA7c7c4Y*f z8O~^)$R$2(rRl7ZeDcLwHGiAw_VM!YxJ~r5G%?YrZ!1-ru#5T~0ETNf8jM9{N2+mR zf_i+E4@UT!4Y8&yv^8P}>5-OeCI@QS4XyNybX>GoysGa!X>bFxhW43w8L4N@+U!=E z-M}13`_n>(uBbvD72n*RH3Fp1Y-dgJehfEW3Xwb)qBW$YN;*<%(XilwyIWLU9wxgF zdBmL4Jvg$a`TS!r8V!`m#6)u<2FH^G)HiDN_0OHMFNcb}3X9) zqqTN*h^Zq1;E`jEjFvX&dK)=gqm9lL*$oqAq=g078_CkrFfFO4jO}Q-k|j&C;d)hq zJ3f`{xjoiQ=cg+uvfaptYnLk{?FlDF^w?AprDRUr@*ekn6?mk%!6oGcgr z>(9J&dD|t;0RA0v>8Yja#QABfTqTLEEdj(s9?+5Og|NJ?LRggfLCi1DYUMo;lq4*t z`G_sgoR74y6`s@jXnK8pC{@?gs63G(q>&Jb*0Ma?mR0H#Vj5QKQcEnHEUz0QLeYw( zU5PlRPKkAkS<2I_=HlI?+3kunUB=0O+v;X!Yjt_2~XNMoyW zxi(yBkJ$8u);3>Ft~0VDDO5wJsgt;oPLx?^L{+6hY?h|4p*V1RXm=y4)>*rzBW7=B z;vj`y6sKU`oSrm|x@n%%MHiWMx-=q|r7O_4he3KORSvN{T8?vkFBxKbEff%SG%tDT zdL&y5>^Ld6(a8khU!EVqFJ3g!?zwkU8Hv@m(R!s)-!85(Ci?%IpJ9-`)d-MQ%EMW$ zi3|z?DjDosS1MP4Dxe9=BGyb{%Tk5OJhDTLG9|KvN+sS^Bm1XFFO6%sj=nRDdNznu zgvb%o5gMT$hU!_RBsFZ=^)zFRdV9hjC7gq3vtpc%NE=kzPJl^d^Qu7}k?)c$yhlv3 zA4+fo{HeFc#sTdy8rd`3TJ&cIe-otxopBJ=qm`~NA+0-)q6&KAc9_gHGh5cviP9J= zfhW5ntC*6o4k8j9LQMdT1rIv`R}MS}UdUwCb??$V%&RcXst`bq8?;04by_VlA~pNd z3rZ-8+31BQ&1#->QF$3!nG^bg`K60eII}DMl1&@d7voFY-~n4M=diwN8@4seCeRgz z8(C|f%dYKZg1btAVKSsWoLrhHlVgYKn%keOSaNBy0>vr4e4jreohp406j@AgK$ zHb%N~MLW3_clPmGnCW?@sg3ehx-Lbxh}loT=#a|U!CMwygO z2?Ma0RGpE1iFE;B3q@1eCZe5Vl`=9r!~_*>IHWLSr7FV&w-Z`MCZdbNpsPo%^l=rQ zZz1L}523!Y!!`YsO?hgB8socmXZ5H^?k0%|(UGhLE2FIRlvJ<7y(Zg-d(_}*6ISSN zo4GuYtSXC2$tsP9hLC-RWDHEOs=hs~VxbBABq^cYWWEtu%4IN=@fn$u0%8W{g%fvT}7uT$DT`aOl)G&r4|~-DE724?9G`e^?KVWqCFu| zsK&85rd_fUO-!(=_zte!6mg``yT(dCyaG63wa@+4wXg*fr&lWTFw(HYBv%mG>FVXA zoi5R(VNV=Vjn+xZ*0(InfpIf=TiEMHXv56J6$W`o7W z9!>t)lg;pCt?yf+sV<2R13Zn%DPw)C-fku9N;TLtm5$cLGa;8=e%V^ktuwY)?oZZb zw*QPs+Dsed0MSeJln|D&fW!r2xgbroFQ&lykoL#x>LdKw5kymBi>LmCt&gS(D?U4m z^=2*&bEVri5WQ3{S-C#jE|-Q)s-m}hMqB^oiyZE8MzuW7R09%OL9)e~bPqnJ3hd+B zFYAbs1^v>w%)&6e_&}_e6~-RZS;NVCW~cqJ@mgO`*4NX>K*8)p$RE z`phb`O5u&-uMlJvNZ7_S&5BlF^Q(l8ZXagCm{t}VUuUZ;HoT!)nSTR}Z9^l|#kMl5 zloHf3{xH*mF{bdG&S4u@!^Sdze4CrBcY6slC<>p{YDvXp8-|D56Q$blj${J@u0wlU zFT+L)fw*CU^)B|WnQTCe6pi0*Fvo0y6sFY~)->(b5l&8kWW)AavQgYDtG7uplU0l|X#*vUYK1H@d?cH|IF8{b zFKjm<-4&RAg=t1cCWNdQsXtv;+QFiMc#GP%+3%2E!7N@#Uz|jc2vN;~%K-MIb)j3E zXuCWQl=n5qtte@DXJM{7th(NAiV&nA{<5n)P8(!*fmYbdOO>rGM?)NiASJrV^f>cEgPxp2!Nl3woAe}b zg+aQF=E;!W5;kP)c3S}1Y_a8&b2Gkh}HOzj!UXaomdd+3ifrnkym*l0&; zDWYB1cBSG0iEj4n@B&&@MQjyhg;Q_1G*KEZx5`;ZZul(PeSK4QvMWoVhEqrCUC9XX ze5Qt+YR%>|xPMZJz`Ol=8u|O-5;mb<74t=1ft|b{QkKE7O54 z)XH7|Q&MB5iJKQq`_`SkP3Z6M6ef+RJuxpW`;H-6-~#dUfo!7K`$!o*`oc!g zCojjE+QQX3W2Ie-mIjjw#^g*obPGE&!PK4CzpdP)Tz1V&kDx60e3&^&r{U$hMWyh&MLMbW{YebCQ%h z2+ewJK7HM4oT%D6+81@}d=8aOh^9W4HIt3)A$Cpa@=|krsE#B}E)6@IRc-P1)nx%{pk{Ih3rI7`ejgwRZz3lC=YY)UwHJP z_d^kr6lRD*4S~wRFdCA;&Ww`?qC@vmL0O+OQitB`N+()<z=`%M`3+DBYo!R%Vx#JALl54$B|%;vylexu+rNy?DfhP09kh%@1~qliN+3Z^HnlzGN1V*K}P+S|^BgU&uT zFz#F{qNIB_7*B%~)qMq#*u=mXTTE0a9R|izc2pOnTc3>j(qT&IkV@WtkE|<4|6fpz z=wmhfC7FC!)h^F9g|gSVg%R~$i0Au-;+8-peZ0A+(43W>iI;DpI<>kMD#>Wo#T4G& z?tM$)#z>*9)754tIGrv`ow>ULue5XgXG7~YV&_;JuPRnN8Bk#_TX8gZ%cw@&DZp%8 z9&O0P77nD0tNlDmB#7ppblIlMRxs(e!g~}`4kk-DM})ybYS&(rBaEQ-RJ}CQp^Np; zn{DQN?Q__IVcbDO!f~uuX=gRA#%Z+@m5b~OmtJ2l>n=~QZp^d}2BDQQb4ObP3Zg@~ zsT6N0e1R7hFHhxH1%1C_mDygHJ1e8zQ{Gw}N@>@y!*k1tRzx!aTL-TN+RWmj9md~y zXESepv54u?po-chojj9>jX6B%6e5Z10e!9q_=*lgA&H_e%X=lt>cofLsdbI(JvxCJ zgT}2!eWY#6IcEoE%bi?vIM>v^uUjk1D=2L9x>INr^1o;dW+FRb;xd+JbSpaLH-D^9UNQZe_ZO z+iDN|3T53yx#F@VOXHb>8K+Z5HZp?(q&!xkDSeTdG}KsiJGU#;Wz?lro7b&HO|&g5 zE3=6SO{hB7dfQieF?Ns3+KG};Au`ZQ+PbQURy=x0-$P}ZpVXuSA}5@yCsB~2p>l7} z4r|cs?Q}x38v`$@Kc+#aE>n95Rda_YB-T_0>S0nx(lU^EM^GJ!*Iim&5~HV~k=70x zX$MzT*&wiw(=R)Lbc5{moCy2=DYV__O}e7hR{KU~T-^R~kFhJUD?ot~T`>g$)n!)Z z7E^CLZ5H>B>Wr%`JFAU4yu=wO%9f+@^`ywvp9? z`Cx8D z8c@Cn9|OBM90Ha{bxVzz>hfTujm=B9nbXY467vPEy0g8rh>lF{xxQ+#xk~T8;@#KK zAb3rKs5uZ7s1T#zus^Weta0pcw&*m)2$5{@yZ6ZzERP6HmtZv84s0PFC(Y9IokG!s z5Dg1E*p1dO36t66gq`@BzD5at=f>G1KTGM!nFgb6n?cl6@M_~d9hF3kAH({*clA*< z4lz914{If_)wym_Ze@K1nW9~y9g3n*umx+?8#|QEZ?Hs>2;qE@cg?ADb2^BbP+h(o zRXeM}3ezc#kyhhpA$zVENBnBvx|-E+v3oJTsVC78WZ@han(;8XLQlT6vqw%#eFNq( zxi@T1ks;m5I@{Zx@Su2*UKdg9;)tw7SN2u=Mv^Pp%ix$Rk_1-<4Lb^SUHv6x2o(zz zRDYMUzW7PVPM0oBT4lA}p-(hhGYd>QO(ik2C5Pykq4u09te^j<3Paw%s6L;|P6=N+ zm_TruZh;_kwCXmvBcNN#j6d=wszF-D#_a;Qgaqu-tWQgB8F@Mx-JUdkVz)i|9;HZH z@vKxD$ml1e-9=1}juUe%7>+T4)O7NX5pJGclCU1xn509c5!QTU`F#4-;=YY$LzO>F z1(L-oqrT9oTB|y(3O9d@_D07-iu}DHT@f$UjFK~RmMbc=65~DG)!hkA(Ju8;IgsxR zfo^>SmeVRN$}xw<_<=9fTdYr`9v4puMbT(qrXW|>`d!tJ3pNslMHu4es%ep=PEj>M zCbycWjIRc%8KxF0`wwrWS)8 zEJ0d!yX!Cpiu*6qmxBEZ8oNpnUT4tSWrG`+_}Drdc9}O~DcWj{VW`QM;`l~{<;3?H& z>Llddv}iFH%39m?8sjYA6$+{d484)k+RmNhK;@_&IbovDjS}(laFj{1yfQ(;TYyHF zVg@nWxbBX{yQN)dwn;XxCcKHp zdpGQ<5;V0$SJZYSVO@#HnpI8MPmlK_Mf?1Y%Mh;|CCJs`tdaz28&O(9;#OQ}YsXjU z(zBY0PmBPF1HX98eb^m@`P&0Y4}bLfi~N#ED%l^G-B7~ov3*=(Ye=w`@?7o5-pCdx zk-$%E%kP%g#LPDEUMV&y?jl^VcWrPWu`9~qikvqEUAwRh(z!H^QPU}2t2;(jv;BEiST=LTyC7HFT40pg|N zsLzBxV%woCO~gb>NVs`yJ8@n^;0yC{57BR0yZ@aW9F~faVhma>H#Vkpi{l;OK8^4d_O?RyH9>&#Ksl0L3#XX%`NJx~%ejt4I2_Fw>B-1L>gM zGu(mdT%ECT!{)waIx`}sZ#f&QfppP=h3EAxIJ0ljx#_~Q1{R%h`hrCZ7Lc&-G7dLY zLRY%8`xc&&E?hWp)|sA8S0npu2hE{ay)lqho6l^^^msvdxR@bsa5Gz+(La)1G$Y=% z?8A&-9Y}Nk0Gi9S%LiwyTfJ_u)A)t`3uY{1Psj4srw#Z3>e>yh`IuYFwew9TFwz%Z zzIjF8xt(;f1B_;kzCrfkT7L%8bBD^U8Bgn5>83KZb7S3>`-T1I_AgvWl>7U*7P=i9 zO>-@V|AF+{YtO$nJD>K~nmY6AJZ-FSXQ|T3wzSmb=2>feAnos;AOFqpRDCO$m(78+ zHes2X7cM%Vl~4IEoKs6@UYIVNdw!>+O{{jq*)oJB9UDl!XL>|NLV4bK@Qbe-fO$=ZI#DbQ-`rD+I4@! zxr!qu>7xjnGKbhmXx<#KSLD;}Z46z~Ge*i;x@lPN=Axr878%sUV%eXpY`63#BuTch z@kMaz#``uu03AY5g%I8nfO+IQEiY$~Bf^l2dwN{+rVV4+t~&_kfU1*j1FMl2F70ue zL`!uSD>h=c#bJ@+lsXi+n|ei+kc!@QRm+R@>x~q8wSK8gRhV0985dwM46v8yG%CJe zzjn$1U#{(J!we+gBC=ksuQ~lTbIXm%#~_VQkz^a27)uc- zUre(;!whAWbY;!Y7BP#AL$k3ACgrtX>f8wdcD6h0*jrj7UD6oJI4pry%~ES8Z#@^i zUDXWo#tWOloN4U-X2Jl9t^jY8r+HJDCtL0QGVd+NH}rYINWxaHT=3>~1>qdqD4$1$ zsiCq;BC1(u$}lePEGcs_9>3SIn?&e`Os%PlQoHGQ8jfKLO%60Be(UZMc;RE&DEFVm znwE`~K^IUOG#c)JfjKhc9d6p8x3<)UCI)GSi8T+|0$bQQPCnr|O3X=T>6tLFjwHnp z$#>l$;lnFQND$6ucirE_NT=7tDB1Xww;Omf&W2G+P--#a1{YhAflN%TM?6T*h)B*d z-H9NMYN_qIV|ZLG<;DI@E$ggTNYnBMpUPpz1X^gWn;lytC|!L#j^l1)Xv&gWiF5+!eb;gwh#*8AX%G}Mb@H#~lFGcCC>7I{l(+409SckD`LsqNp6l2s_7SiPmFqhe@ z%-Cw1mm0?!yYAifR(zV9%p%UR8fYBORWMju8e+&x?NN1Ek;zr<#;*I>4()7LQ&b%e zkg$(xp%D+$lP=HFo-Y9`X^#$-+FY?RqPfQoP|+FJv9W>wnyfTht=kn2ID+|>_Ry5& zWTYP^0*v42PCM|icHh*$1~sK_OCDXaG<{S#Rzg%E+_$qfGF!ZxbO)wJ*bgLY{2ho= zqw|!`sj=fV_Env{-Iif~PCVM!!&}4;Ju+oW^*a*YLaL)Sef2 zbrWf$H~CtlC0=f%gxb#1cqLhv;Y0Nc%RNjj(lJ@pxbVd8qc;)T6%0w*7&1+>5v($L zIbki!Ii^~B3#3%jB{|6et!1J3Lg7$Rz#N*a3$^j?TJT@_j(Y!sN?TPwWOrWgIF)+HAZ2A5{m?#jCu9zl2A<(Mgzrs?bXMhJb>-+* zxBqYD7-QQ?leZ^S51UL~J=BzfB~^zP*L1`ia!7Y65c4l6AhsfJLm}@9$#hMvN*(`+U>xix?3ea-z$|k+q z&={%NTFFqM7X?iZnH3(b+g%OpTg@GrIIhXc2KH1blX+GxBYlHT;bM54xYNc+?iR`k z{m9GBb=qR0CEYuWLU!$mkgp?L99Ri4#*&Sr5~PTqioSRdTESL&LQ0eG3G5=(t||5J!EsJVR=&(3W0} z3o4Qai0xvAu4xl8Smj+gqE6*jMARn=6gNa>V;|A|!2+{0O6@AO{Idv}tzGZp+l#w} z6zEg1@YoPq+MKn>P!DyC1)BQDtl~N%rFV}nXQVNe+RJevASE=x> zu|Cn&gc917XK}OHq}7~&LF(=?phWexZ?k&hpH`TcvdWlxZGtJJfIzU#&UQ2y!L9@q zXPh&3f|STZJA2E5fyo6++;j%cS{{I0Q@FT3-Q4Fj-5Ydca z4aRI>vt$HwBiYe~`2?EeNLYJxb%)?NJNuXNi3ZsuH>0*<_wO(RA3>lERaag;je6*k zO@q!&Hb$WqUrjbM9O9RvE$28q%8mv4%D`F6L>w}W5L~t~j71ZpJ*lmoEZ1sGry}kC zLR%SLL^n*~jLxS&T3flMNHF%yO_?${>E*n{RAu2wTg%*tABN)tmVllofAZnYE zQcdl%4)ap`rh^M&Ywr?$&S3@D?`MkBv{(uQ`aE!->< z;%C07V3(9&2&i;vU9$W5QT2jcw6w;2%hY%o*4%z!eZ7MYCp;J7Za zRkJN8R^tRW#TOm6_%=REFWYrTn+16d>u&gqX2zEtoSRJO~FE0Avg93~Q=uPHr=8`E!Z*ut`6Esrk zRHTg`g~-eE&3~@7752zo+FX~mv_9DJ@-giV(5pnOwf?aPYK0xv7^!kHV_c5bPQ|3W z|1`uI*I-o7l^v5}PqJW}n-m&)%LMNftM5h>J|khZ_%+cW7UFGy+}dp`Ykz2|9b;yl zFH3Zk7Fo-T6Rb<#P*m{T7U)VwCm@}(GSe%}oHOY|6K=*Sh)-6tu*5D!R*xY7usX0O zD~>74`%v7ZGZ{9B(F=x3?SXTSfC~Bg$j2tO!h>Z*7lu>WIV5LEky8wPSTdJa%%s`+ z8Xk$53+()%Xwu3*K9L)`I)u5#R>o{OJY4SX_quXtRdO8v+DfHDzs)IhA z-A+2}V-~Y}%a3>>fgfkFHJ0yAxezZLGw!ieS8nYPps;K0VUv#9W+fwB(d#<1L*(it z*-bHzYx0?ic#6`O4C$m|$_5PjG3H2USJ$i$>b30_Y&#u3r15O=QCCWJ!#CxwO!q}Y zP7kBn-eSxb2_{_>j zHH3FG{ttazRjzGkB^cnFS@vCwc%tc>9b5gh;h7o4uU2sN(X24R7!mv7FM>(&_T92A z6DGYj+o9=Jt(010%UU&fLdS1&_{xVIw1M&+Z7fW6$kfI$TfTjZalY-dW+20)P)@x9 z#PnX4C!AcG$C@d5y2y@Fn1(H9chS3#XJ3gXZX#>y3UU!UIXZN;a8&KhT~V}u+SMbr zr}`3!OR12pcS-DtHYSP&k#wb>cg8e@w)Dra&Y7bRF`KYp6$oP(Hk|fm8~ZQVq_ALY z=XL~lzMFo4ZAz6oQ#Bo(&#rjWX|t|P@NKL3ZH_pLmKM&AI;rhi3QN3OX(+I>_69rJ z&bC|9dMZ%M;$|SL^|>C0H0=(DRhy~y0NO%JkxdRc4sOSrXCim=_w?dXAFfY`h0k-y+O_L-QfymxIN8M98DEgMoXKEy zV$|0BMuKSrZ429NJo)TgmY|r9C+w!}L{BZF&+HVt;|n({l1Rw>h@|tHeb^@C$5=AW zMIAys8}D2tv-~E@_1X;wg<8k4jIA9hX=LmVzdhVJ<9W8v&BfQAV1>-#x-JC#TGW^nve2(m) zihc>xXcIJ^TY}i+*qh7zUKA5Uy82+zsveCg8d=nKzSO~in*9;c3tL)~j$K<4h48%( zw=|$)@jnKzX0kYhpsV;Kte-a*0yl+&gLo!Siy8&Zj~WX{3!8M`3^tMp&xVWx_MDN6 zs{-PwcNd(Ss=KROOD~~-a-bpjvNRWqS#mj18xy=16^7cQNaJ`8QS(;al z{>;)ZTNaup49`(Q6wjR~7&DMD7VEbU6H^^z<7&xB$82Cv>VK#Fq)BW|#Kp<3H?s+^ zW#gFEdbI(QE|LkF%d#MK=0*}W-iCeiX}Mh#8Y-;7N$)No1Q>hU(G()Yj+JB?cRe0$ zT+z`gZpwpQ2sPtMfo2F`n3s#4%cVVczI4JX61ql8Pn=y*DZ7_f=ILme&!3p$%GXXb z1(1w7t(Yckru=tz%pHgG!x=d}K@TeTxv9XML!4x`Ob)6#nv z?m1E6%4+%SoQt-GYFHa9kIgiy6a*qmP^gwWs__J^a27GhB^tlcx*+IBIf3I%aG#TC z^d+_#q-T>Zs&IcG+zh1-*HpPH5Td!Z?`ux?9ek#5r~P|Q-IW+>>yk;#?@Wk_kCwC3 zu6=cMCJC{=Jt|JV?J!HSpHTT}m#N_{tq_gq;p4ha%pDv%EU_8i)sCEA-8!jX{fIO) zAs=v^I}MO1hKil#X{5NkWsN zijoV#5s@zz9xV~t$MN5JASgM>MQnHWd3>qG4%GtH{cH{GYG>9SD;)EwCE<=>Pyp>b zFXwbtIvoRV)h?QtNMZZdeMy-;Qw<47QTIsR*_EE2q7W^CIQOg3A4^+9^*|46g-#R=ZE z#@K>XORs8=HOix-e4$x-RO)wgF*j9Xj5v*bnC&Iwh(QC24J@dFjDsHwb*N9y5H0^yre|y%dIq zD*0>oV}pH~o4Y7`Oc9@~%|NDR+yO~}wQFYN3)+|cmq7H&i5?|RS3Q!+;sn3SirNz! z(HG@7R>kgl#TsM#^uoR;W}2MTTBModQxYi_%k5M(Nv*detQ;*Qle3B+F2O+YWH-F*%73`N-q&@1ON7xh-Ab=jT3BYqgXxq-d1?*2>JYt| zRV=!b>{@Qsigweq+kA$|!-U5F&*N7hUDco-S?7`_kV0%gjpeXgCEo+$!A(azgB(74;aBwdW6(UJ?sjod8A zm`Ic`X*)HkcUr*sYz!@vBubeMTy@Y?;o~s`<`zno86yS@rxx+@doWW*FU_6m{VcW7 z75ScPl?Aq)6yur{{IG&!J(^}Gd-|5lNPo5e%H)!gBpBwOT0$Fb_a0Xyon#W0Z`-w& z`?BGTkFv}47DQktQHaoh;1I2V|rqCvV4 z62B4J-egq?ul?|UIq|NI>80sX|M<+1*0}km+hn{?A&WCt0#Pe;*u~pXsyUqQ7h0yq zbQ<5`kzDzJoYCIfNmmR+6Rd6JKf}p;*0D-;iYsvKP=323>ezWV2RmxJ+tFEp(7-x5 zwEVd^wzfp`sYHfzETK>WMRZR-fy-nBmX|lf$WtZ?QUr)nrk3g}gLSolgu{@F3{LiBFRoCE2hsnbdc3wI# zBZw<$meM+jD%Ixu|2lr5q%<17#&}sCrtAzK6hQ8(CX9SOb&V<2md@lxgcMT2MG$sH z*D01?l1Hxljju=?Yu0Y|OtycfF8}Hc-PD#yUzm)#SJvdBgWqJM*6=lQU~$T&u-oouAC2(Zd=Lq)Ij`3|wO-sCrRM@sOw@5pUwpC=to zFUPTYk;bVz>FSz`GA}l4;b8)!M_^&H_rAH^lc1*&-o&Zf7jjND_Ew5!QP@l7ZJL5l z^0aZc7YIWSrbunpl>EKLTsoT~Z}vr)L86vB`>K@9pzf~peAlLU*Td3VAlk7RG#QyRkE!<7{1!RA=Wm`(1P59O^I0&NRO&>@K?UXRes;x)&oqubipn zblwH1T>*fT^xudTB$L-01t}K#_nwrIjvPNlu7c>oC_fMP&6eMJzPwZ%6_Njxq~I#!N6D86IoW#zsuPEWdgZcw5f z`O850V^6(q1xQ9E=cCzw2_J*BfsoxU(d-YODN0P*il{c8ou+C{(Ov~Ev65u+nBsdq zZuLpn*|_e_M|yPk**@FjPkeR<#iW9c0qIO3PFD?-6RAK_wWW$y{pvFD&Q()&Jiaoo zlJjT#q)%Mkp^Y?m&Y6N*r9IqWv{fXzZkRv$m6(nkL&iBZ zv&;5eY7#Ylx&#YzTpIGrZ#@~h?|W$=YJPXTri+-&l_;4^FzjJsnh4N*bF+70n^}-1 lJuT{NMXj#5*8`z$czW~}kg({mpgts3D1AtRh5d?Wbvi*SnY zn{b@K4ls6x=mhaO;;UnB5nrV93*xiH1+mxrKzxJv3-Nct4?;rcPlp&gO#Fu!i09`R zyF`4A_&jl&*z1Y$`8~1E_nG(#@mFG!Di=wV>nQC<2*(IyF4sKm2MNAEpO1;crGe6p z4|JhoHqa&yY_XL~$F@Z#W8tJ$0p>zx)xQ6?!MBAp7|&WVok$h@%Q6(!?r0MSeXR!4 z!At4#ftc>OM~FF@l?v_O6h@>>%sDMW(2 ziz1Jpw!XUFo~92e<+4@|mE+yfkg_>^=WY)(AypIlsW28@YqPt;7pHzkC_6yI+p4c) zsgej5x1_7Rmuki6Ldb|F87qy!>RXu zVR0y28bMI&WQ7qKU!l3M5vXB#w5>)Hs?XMS1(#b8-e^waH*{h8xLkD+LDj~Zu+*#X zA*)KATu}t5dYc=><*06G~`>EO%= zL_${?!0G@-x&UDitdm&=so18ggQ3w|8RqsD2>S*eq1Z+hu#IZ)yD3SQBM%~u4O;7S z&?ABJNd&B$;(q(?yjAA%0e})Y`q-)M72VCGbXykYh3N^2EMR-AKG10mHr2*esY5OhU?3=KK+(mBZ6FxdfGfCS!re8Yh$6cN{@>p@RrlT3VSxYpQ2o1Aw{C?~r%s)7 zs%m&-*Dc?X@Z0kFNwPn9;?7BOC(jqAN==fPMJfm?%H z^(4s_;Ev#~;I82A;0#dh>I?DH!99py3?2fu!54t<0rmZj0Y3<;9k+tpf_H)`_yth? zdj!i+|H0Qgr>_3kmx>pKwKm-t+8XYdSg z26!Q;e6ImD4%dKtf^P*yw_8Eg{{v9p{Tx)k{uJWLe5c1Qpz1#a+!CA}a2}}k9RsSp zOF{MbbWr^~3)~I7AYdI7pI-s0zaIughfjkVpL+s63?5AU3Gg^@uOp!uxC(@%$)*s$ z4J;A=9tf)@M;(bplkwf{FE{s&O>{~M_9k6>_w$AIepLQwh709EcPa5;DpD7xMbs{i+a zD*qu+bp91c)05wa^h1tEb`hToieD}VMV}9V;)DA``V*k~vuB^T`v6dK;81WOcp5kh zyc*mc{1hmDxet6lc*F_*{r%t}#J>w_-aHA4zWbl({p$hGCw?5LcE1f&z3&Ir&kup> z|0hAwM3yQ8k3h6%wHBP?;H81}FD&Jo~mG^g0iZN_zF8rC zE~xsB3-Lvu@|^*yziU9{FM}GFQBdt{hxn^N<+~CT-(Cl*-djTaE>P|KDyVkd8`2*P z_{)HggR1vwQ1xuHz{}eK6u<5la85{H1S;QIpuRg7d_H(FsP^@PyMPr?{PIdr?Rqn~ zEBHQeU-08#3O)d;yx)NupU1&{z<+@IgL|Fq;nl;9TNsLAB?4a8K}q zpxW^{Q0@2@sPXzqi2o8)JDvdd0(X3o*Lx_a?_LC|{!UHya7ZMBoBZ+;PYVC z6r2NUJXV4FE(4ir$!oy9!Mnj(;P*kb_aER)u=fp z1BosG4+Ad(UkJVy6umwKHoz}|b#VS-bOi8b@Nn?hC7!PzlpMV*#QzmkdG~^nUw;g^ z)l$Zu`2L{ibXPR@ z`u#MxHF&~lj*9}G0cxJC2DbuV3T^{tp!lr@>bs30{c=#_`36w!xGBUx35x&j2WNsm z3F%ucbG|wdJc#t!pz2!*z7%{3xC#6>Q1u^qy7OxvsPaz+#kZ>hUI@N`_(;GSDE?~& zyb=_@za2aPybe^kp8>_+Uj#Mpz6pw-eg{smMy{|va}8Qz}*L5=@BQ1jvpQ02S? z)b}GH{t8g#UIR)V+yJV)kAl;{&x88@8=%_rLs0$uNx;VfJ`HY5`p(OpU-ku6&sn@KB6^Z5LCwoCkR>O1 z64bn$x68Yd}~d`7|j0dK%mj+;tVS0H=eRr^Dc>;8mdb={w+g;4&sb6}$<& z1l;LtpHHs_k0kzna5nfoP~-eGD7x&k+WU7PC_2ssMaN@6_5UPrJ8(64ICwF*GkA4K zzaA7lZvoZbPl77v9#Hb?8=&zYsB-=S?g~C{jn}_BsQ3GT%HIo$pHBsM05fnmunF!2 zUInVYcLlr|)HvP&o(O&#RR8}3N}m`!CrKEZp|E}=AFPABgKq>=@Fr06;wzx|>QPX1 z*&}n@FW_`g?Klin`;Gxs?ov?Wdog$b_;OHue;ug#@NrP{_FhnO?h#OQdkQ=PoH69} zoCT`==YcAB5IhikMM!@ysPViF6#sn^RC~S-s{98*wd=Q_>iHYE6}ZQ+^TYn2^3MUc z1{Z*$!%|T5-~wd845)T}6BM651S<=h9VeLn;b1OEuByuA@7n&-1XjoU?_+CL16jx}%&_&QMe?*i4IZ-6TIhoIW? zOHlp#E4VGVJ;H2DaL<7If%-lLw*cpXs^@4>`A-DZ{-vPmy$DpjZBXO#Ay9PqBB*}c z5AF*-3eE(d1{Z)c*E!!0gOX!!180EW0uhzT6W}r6ii*?ywcw$|?+0H9J`ReXcBwkQ z%mLND3qg(d5U6%v2CDum!u$7wM-aai+#dV^D8BePsQx?-iay)cJpI6cy`bo^02IAW z0oC7ALCKSsfjffDfUg02iN6)p{P{Ad{J#Lzp1*+_k3H*N-{GL>buy^*^TAJmRZ#W5 zaMb&KFt{V}MWE)@*`WGa1J$lJsP^ zcLMeOzTor0LqN6bFmM%k0(dz1MsR2FGvF@Zy`a8(7*x5Bf;)jPY`ES(2TX~-8axub z89W;NA*k`)zUlorGGHHg25OmmSu7y@!J8M-R9)crv&Hcq*uVofGh4P;@MVqJJIKIIR!qmxlDq zLG}NtfbRmgA$|*}@;(mg`@2EacTb4l2P)scgUa_1sDA$vRK95&e7tuBw8b%GrIR zx9iY=y`btj1{7bN0BU_%3TplifO~;gfa2rp!P($vz+UiCP;}W1;i-1*3o75CpytUb zpvt`vR6B=3^|K9%AKw5T3%&=`IDHRPeLn(4hd+X9|JIi}o%aXTj~Sr&?O1Rh@Ir83 za6PDU-wGZK-V7cEejQXje*+hTN50(S8^Kw`KMty#hrty5Gk83>$7L?RR)X`0S3&Xj z4WP>XC3p(B_bYtfTmYU;{0?vqn7q>IG#3x`h-pzE^=N=XP)i{15O9aKV+%M^}TIN7sVlha14{!Hi;#U@kn0le7G;Daqk1w?&YBRdl@Kxx(+-DyaTlP2v&$c z1k#mc>Fc~b_kmjye-Ko84})s&??AQZ@8Ao-t*>(20Te&&1}gs{;8x%<;J)BVA^u`e z{k$058?1o)fv*Ks{!O6x`V*kayARYjJq)VdPl3v}-|M|UM}T_}KN%GNp93oYT2S@8 z9@PAQ2dH^nqUU5;D{GKG`RgBte}-s0t-2hJt_ zW>Ea{B~bkLFepCxDX4xw1&WTzTmAcOL8Z?CReukt@jeR_pA3R(XDi?ppy>TJa2EJ( zQ1yKURQ{iU8qeQ@s%PuBIh}U~)!rWPaBvy8E7$_nzNwqN`&w`d@EzdJ;C0~H;O*e4;6K1K z!6onT@%$HXG4Y4MOTYu)iBAZ83wQ{)$GeOK_j^P9W^fkqPk=jsKMwe7Q04p;+!FjJsB*Tr(fMNs za6jS)f@)u1z*9h#b2=zKdNHW?Wl-f^0_y!nQ02Z36yIF~ir=pd@ms;?5%1NX@Ov~q zfUhQquHPoyPo7cmI|TiD3A>PXOZc{Fsf=leE80)kND%MF-!b9+Wrcjd;5j3lO%VO` zdlk>4gk1^xy$jrz0IS#!)=oY`{77(S$W!Hc7s8qlzm(_ShG)sS+XWz;7dIuOoca}pk25O97M*5!!-y-~x_(JeE z;QtbS#`795{+h(6g~%2>znjoU_yA#$^jit9r5MK)(NBFd! z3Ht3we2j1b;bh{E5SUuYeT1(N^m~JY{e3JvF9r|hn?Dkc;`vhWB*N)D-%B{1=QgNc ziRYUMKj-<=;AP-ELYZg%KIf4CJwBvA3SLF(#o#%F2MMpwb0G(bA6|&xPW;D&FOW6> z{+#f<=QG#9LkWoB~QIvd;@Jqr^3Hp7Na2{b_!cPcK6XuaO{=OF;jt%%Y zxFvP5tZ1pUx&1rxZ%eo$eD`_M|BvV0LY!zaOxT|I7Yb?Dh3AKPcak#kTSEA_J-J-c z<4VFK+N$9zgh%Uh;bn&;LVs6VIQp6y_dr{muvL;N2m<9nW>14+(MQc~F1& zeT=k+2^&0We?LxKakcp9g=Hzs0`i`C!6a(vK;mYps0= zVIiTyy9#(8sNVv@7xkb9@!Ns)JHb~F-pcdq37KB-yOZa~2=Cx|EAWeiMLhoq{5NIb z_jbZJ2wETYdllhNgog-6k#8wD3;b8Yn+c~8*YB?m$yZ4`matcde}m`v+nwjV2|prX zT1X!VFJA=ynDC_#9|F%IY!%`S@D{?m35OB>K=^mcxRJ0M&t<|E&|p3Ba|y2`uHPGZ z*6$v|+X(9j|0Mj4@ZY?9A$U3A44!WU-$N+=z8Ah z5MEB$Ksc9oF9iQgSVTCP5Pwhb{Leys2G8>eClKx?(@o&33Hp5kyv-jc{5_9%zb5s? zgx7}rH-%jLhxmtypBA3OE3=38Bkej8en!}V@O;MU+oXM&=YzoCgBK7!%<~oC-$4ED za7bz#?Z3fafk%V;fG-1YCLBa45k5)U?%+$o8Q@pIQwj0+Q64@>{2hcJ^88cq-^0s6 zo_`UZFX4GL;XjG*0e%zw5V(?{-xGvu!t<5j((pW=^qI=Q?{U)p4_r-nuinoXOh>ZH zXx2z;SvHsrb`qL-N;4g(*M`cCYBrb-)f;K4Hk?&jn?|#AMzc4W(LAh~uCKQTMzThe z*z9zuQLpkUZPoc}Da}@?(JI%56+b*(JyITOrAumq>A;A}qSUT0VvgnYfl{knuRTMy z)hhfM^0dmWO7={7)T7B;)UzP1)m!PxGkViim8{gv(pFCkqD$71C_zv zUtg*;8Ef@Bfbw}ln2C`kLP3@~SkIcZ!&+&!5l$<-5RID~U{8nil6KY<8^v_U-M=Zk zNyf1WP&f7>(bUpmY$ZC)@L=M&GK-K z`rs;)5y`?xDfp*kY+^G9AvECG`k|&XMY@K9YVB%2T&cN48N3{BWVEzF*W0a;dLucd zG(eU06p{{=D_L?%Hc+ohj>V^vJ-5r1!S<;4@{|y<=|R3tNWfDm9Wt^$K#hnYGji7-LbrTFq*$i0Mp;X$ozm*(SKDUaM@HmFH@b&BS?H z%BNhOA|e~>s02;NJo9L&+1yZX48{ZoApd@nWq}fDTstE>T}l>tN2~2hs|@i{X4(*f zWb$Na(;7+Fmm1|#KY1%zZMZcO^VYHr>amwsuZ5ywLU*|qvzg-gkxr^tDG(CLTc!<* zmn>S7EEYrS&+K$@+b41#@lDBM6SM)u9G=h-dxf;Ta8Ik1pMge;vl^>NJ_w65XAQ~o z!gE?5O4ru=Q?**v=b7|E(}$O=!;9<2M$n~F*_3W5!AFwLh;JqjPcxb)Zzj)XrS?=G z2DLyHh+U?xA!f|``V9Gfb+d9^GnlFcA)}~Z>ruHjP-zd^+l7Xp8PuG-syIlY7dGE*@)amKE>ELwy46%g z6ghCJJR+9mE6_J*5Urn$WU)b7DGy||W|l1JIkQx*098ON)nI)~A)FS%fqH|5jn!od zvxy=jrh^oskqD(A)g&lwjr2UjjXLKY>@!X36baVY{Aw`eZ`r z#d9V~&=FksF@v zysTnN$C;3VRaW<_Q@YEL7#|MV>nl;M?flN|pY$0xDm7x@sf-y>)QaQpfQkW)9R0GFFRhKECIhUWRITN(- z(@-!5&<0M+Diz81*_d*uAOmO;QYaW#WKq@m(oHDvdU4wx{8KyDI!=brh%|h)0yX^n6efQ z)2c>RuJ*SZO?shBL+z|W1ARO@bDMcR+X`qmDr&J&TLPxXm_eeXCv%}B=CIeL7R%BQ z9)vL1&FLxidfO?YJt~7ijYGAiT{50WM_Cx$Vrn-<9O-hd(a;aCfbn1E(|lPiXx-xP zN@X^-EY<>F1^JsUTTI@mGMyFdn~)0&rYv*J*q6^*crXU3e!4%l>h-ju_G+lRCUAYo zH7=XHHWg}_8GEG$G?St(!Vi|4qotPoAvWL?QtwSn0=q0vPA~OirX*)%*b;8?_a@78 zE?q9uuu>n!Otwdphs#|DjxLcTKJ@W4tf1WW;d;B3oLQ>D?Wr_{CJ{HD&3Nif&dkhi ziOBm*7E^#2rF)|!`N9^EcY)$AcvIO=6j<+<9d%}XkUyJ(R7-3*)t~gxQg!r%6uV&^ zD?jS%3iC3B3D+I#i&3hVm|c-=P)LJuqt_e!L(>Bki>r*kvr)<4nTkLrD@ZOZTMa^t z`34WV-h~pNY_5I;R<*Q^E$>e{V<1_FBl+}{=tHnI$ zj4FpzOeUTA42VX-SxD+AjbXM7Yt5l;bu1zA>&9wj&PJHuC@%|keVIi|8EP4S@L&Yv zyYQUOT!r|W_oOJ%wXM{kXV?I6N(I;84=(8ILKCLGtsvfNE2&{ zj5eVO#!cy9u+_D$1n=gAs(tpbWZMc{MkvJ<(m8U94>~Q5b7hK*rl&v4vhnd$&BX&D z3f@>*=@0}LWT~=_#i$?GFjK#q7SHlqIy&yl{-OuVER1m(TvL!zqnR-2%Z_z2?sYc{ z8fC}vpbup$D>VkC!%R_)adu`F=C~T{&8UkpYoHiCOkvhw3F%yI8xjL+0#58Rj3?EO z7P7EEo5qZ)2hR+GQa>w; z4TzjnqMBI*gJwZ#;|XfzUtlBQNPu{iu<6l&yW73 zK>U0lo2cVHQbv!SV6-u{8ptC#y({bw3jtuLd3 zuEJm|p%e*Gb%#-6SGD`GU6QkcRgs*X4U};xV#Dzyodxv0z3?z$XNYw36y_DjgpL*% zjC{`+wn$gYnHjQ9z0(%FOTAojF*Cme_rxt)6lX zS5l{@uHrQp%!*d|xh`r}TEnX9l-X;7YrNmVWebcMH&>{U7;Zj9j`8c+zO{KaG9u9* z@oa7&Sb}Q={xYbdO7F9jrvDXN;zL7JcH&-2vKo(x{c%6ZWctNwR*Hd<#K8&BN6f?` zlgF7%le=hMqzm0ML89*m;74no{a&(vmkOtOVkLl2pQwc?p`N_dn- zyeYFN#=5L2PsE$V7HB18X|!uK*26h`2orgZuGYD?vs0$oah}iZq1f)Ge{BLKP};It zLL{|2{TU1Y)<5YKsi&^-wGu2zNe=Y0=Ruz;GHr6{&&16lFRRL09qjhq!rnC-=qT52ywn#%<8g-CljT;Px z%{iyDVN?*uO6^v^x>BeVu?xd9XwU5D+AyMB`DoAu7sf0rqNLq@{D(o{X(Ltyb+qMW(@7^AvUz`Fm;Z#@d`wh>Oa04?7(_Ayd-lnOQXk9z_EZXKw#&n($0`x zwtlGNMGk^-*4E29HxSJ1=~icu8Yz=$sMV(=EWg~{Ml=*YH@4Z^o1gFrW{WB_lZ|ck zq3&5|Ee@r$Yxs#dQ9&!B$%>NfwJ@n>45n?IlkpT)-uz+_Q{_SFvU3CZN1CO$Yr~4H z<+iaLp5bmYW=HbaJ?ajQ`uY};apZ`<626Kf8eXtHp+ zb&9-#fv2f3ZP@Q?em zfs%C5C_V~@s=_G>`B1F3;I}NCyO`rVGRId9_n2DkfnTAlyT_KEz3`Oi^ESU{%E(4$ zP=aidDm0}pa?ynvrAN9*b@vY~qOIYj*^K134T!3&Qe2c2WBW($G+WCyoom$L8*7(T z@q%YfmIRy`4FXP8gv?Tl;f%~ha5w_A274vZAM0l{v`FE6od0F2)Yn0Dn&zTAZ11jV zz~R+$OG;q=EY8t!G|X-Uzm1-``%wLsG#Yh|t60`>dQ7L|NZ_DcYKP{+v(CsRYqTV5 zei+i~bR?{SV!v*?c&Iy^3L8U>3zVxn)~ z=f@Gli_W|ocbv*T%M~M!bsxC0G*K~V6c$Ioq8*+qpRTz)lXLy>WO5z?o$2Ge9JiL} z5<6kioqUL+*%XbbO=$JCb-nu7INSE7Y&KAWZ`k{Y23FoBS$? zH@;z1Jm#hv`yr<63SZ{g%q_RF9?p{5-VCa?v~AnIVM_${wN-Cy(r3PLUiJM2@tKQz zU)DOO=V+&lC|4yqTD{sCEzeGAjHDVr1EG7~2oq8I|1!A$WRK!-P*0-qYw6m0wjE|! ztLOJrdj^y9QT5Ibib(X?>O>gtL#hU|pdkf@Gxd*#VV=4zOs8_TdB%@TocY(!{85lq zv_a$Y+$s#;KBxL*Ddx*aIR80ik8HOr>~dQzCa|I-+@%+!kzF92FOoPI2i?VLjI|g* zN#EDVmzd$;JwhbZv~!m=*Uh&5O@=sZMWp?uL0odklR0u8ut6^NsPYHi5GRB(V-q@6 z`&y$VG9O9rM9u;o?NkT)O0{(=aC-i_xX$NAbjCGKH}8aawrl0p7l$2WO?GTFefJW+dGL1`D! zL8iAFg9y^r0dv-S8n*~ELeZy1yNy&F5?C#z%SwfiRLw%eU`{%MK7gu3u7jHAjAyIQ zXQ-@Cb`qGKBhv(wxfB({ktIcOAyLQE9c+JQ(Iswvk3BSD&&q!oW)42UWV5TsWBS$?-s| z^4kc8)iS)bouEyefv@J8KxVvLzJ9 z@`xQXHX8ZB!P}D@PNS;O+Q3ZD;fo^W#<_R9Sc55H-ZFVd<^R&O&!w!^4yKh%Y3Cg- zXR!U89(qZ;-a27M(=m#!d{fcJXR?e`rXvlkvhcu6O6^VOYxo*?^;tpix`j_U+aG2y zqt)7=!}l{>9T!v)M>?I{+Q6~E@J-Z4yo4CjjOQd~I2afuo_s`1n{aEwsw{q>so^aQ z!={Bkmo3Lk(%|l|H~TrFX<~=t_edZUo>d*%2puy)mY@YCI;gTK3F}2f2CJH2wT$%E z>OG>lxr}2%EI8(9^_c#b^mF<=aW`BNM0-SO5Q)39Orp|YtdAMZ#Ai%^c$$l7ZIk`6 z@5XUjGA>@^yhNhQ{v6}NEm*;kBoUvOx#f9%t9T`Vu>f z7*4v_v!CTjBykfvl$KQI49+<}9qB8lr9|tzR(Y9730|dfjZf-2mcU8s#AjmwQ{3>U zdSbkwK@`!MXci_?T>Nf8VyhcxcM@~x%RuX~Q;9Qs^*k%#j6ClBx_omz%LaSSWl|tN z`naNmH@xWrYJTtBX{%PQ=~*P_E^m7lqs8~7^XJYxwrB29J@b!F=N{cR|Hvce&Y!D{ zJ!i9fpi(;dj_a8>uV?D;+}^N&Ab?mY78d{2*ANSrsSH~KJhs{N((M1vQ>PIj%L z+{?MJ1!VSfY(4n$s(oo5?@LEp7oT$Wv@@5Txunzfd9-&CwgYQJk8G1uBzMW2R(Y{@y4S) zoMqDGfaY>q+?QT_0@{n}i+FLZULWn`KBd&;s6}g}FYWD}WB*NCRbeZialwvm_NBE^ zi#AW1e*#imZ%&$7OBbZ`W}VO}Wi<=ZK(+`$Mpyb$?@QhyccQPNmY%uPGc7@eaas!v zrp!?swh>Ef+k>U9)M_DFCx-l33bq5sLP{xGXL*#9JW?yyy5SfsH>oh1t2%;dPyRtj z!K}~5Zb78$8?L{t8M{r!G9^)ByTL=Lf*dXp?f&@ibU7QLT()_}e9LNMcMO!DO^Iv9 z?r60u&njo=>}H#&i*aKgsQb-0*07<{dj5*(1+y&3!JGSD7?W2Wb zx6m-I8kN`cmyt!l>6v><0^Ob~L)%)3+fwn#&u%CujVMEO%O>K&kD zx(>z+tB&1KE7N{tK<6~i8mQ@{Qy;`=quOLc_}V1b(S{Pt0eyAnZY>O^FYFz$t_U-m zp)-!+fhur1m>$M62WvY>sg?C2I_$XO-Ad)JwJiATyIi1MV;A zS$IJv)*%yT946D4P&@vmu{(4hk5v_k5?*lGiX8QJ;Bj@=-ZVk$!*EvR{BID0g|vmnxu}#X7$$L7ZM))A zsv}t%V>i*BoRcN3jpN%@IHtmQ*ay9-4X!(7jRWSe%MG)F znV7NhU=<}j<8jzyyB$JIV-y!U~b$ViUeZI}CKm`QKiJ9)ZI zS)JT-lIWh_*iGxRO32T;foBx2j&Av>V1~d74AHK_<23UOacWu21q36|7`qLn7jYMF z`ju?b_)R}+16TdZrDUNdFp}3m%od(v9VS^OCVOSZn;MkjxL8leeU1{Mg$FvW;2{oW z@vCsh&stV|M%+SL?!J^NBkGNvwh3%ieACN3(t?SmTCoLKvW-cYuU-r&QdXDDCe1iV ztC)N8;%Zewgyd^Wmx40I=aE;;k!1`xWlf!|&d^0F#KmihT1?tn71pNB=i(edSkyQN zrRA}#`R#Q!GY;%IPo+A<2a%`I4oij&>r+ul!#LUKJwvFn2JuebjiHcwi za)}Vq;~eZtj64xPj+z1Y(5ec4l~BcbC!z*ovYma6U{08D_FIL@3(eP)V}&kx!DO~w zuImEDXgYQqtCsdQ$Wen8#%|)kZwcN+)ztRkncTb7lBTZr*BL`@QVs&00ujPP<-)p> z*A(@ER>8~&jaV646SwP-0)8RUCV6L!O+2dVpu!fa&5K}hlvQIz*kvFFR63nGPAxUt`cNo(u1_>>x)p~Es* zs&uK6;rb#Y5nlQAMV5Mvu`Ve>7QRE}@dYj@z+oRQUY?XwA*}XiSY>*;;2psL)?wfAF^o%al+5q z$T8#w#b^n)l{fkU+zGHyWw?-%E~gui^pyNM!wYdRFqnMEtZb;H-Hm9H%2*j3yIcAS zrhg?XBci9-1xPE=wM%PN6<>o~yn)S7c*ix{Gf<^3JgBRc5vry`QA|zz#tt=_X=)|g zYFZEpI#GbCIliXiS6MqP50>lIQePlvvdDC=!(n zYufD<__ND^(_{eQJJr!vWTKApsU5)?RGQB8kQNtgQhU{Eb86sHb%QD?4{e19{b!dc z5dm@r$h4#PI`T`NY3-)@p2XNJ?(lDvJQyD%C3JeNJBV|$k@(k}Xn>qu%NA=vjth}& z{_%MSOXG7#)3q1V75;9PT_}}n>&I@=aR=GP(gcPysaY~DQf-Tem|XCBlqU#uL?pX3 z^dm?#n|AKNGjRwn*#cCehs?sxol7gj)U2`F8E@*0>(jUqi1#q*8LLC?NTQX?!kid; z4;Bq>1HX;Ay57&(a0z++6Cu_$?p)%b^S_f^#XOY}sIj6m^QDOe(H=Z148+-4yH;ji zvDm;@l2EMt)qaGVLm}$=KvWF$FZKAsvOKBeGsY5EAt5$uG_3}mG-ervD{*NAT%n;@4VRS6 zorHl_lUR#u2_mha0?K3I>t5h;BfZ&8EgBm>W)4Ybi{CLIvCyz?bl$1mp~Begd`-^{ zuyBaZI%%1s7Sg#M>T}J#qX-;^hd#!#6ZO#?KX`%)&wf!98v{Qo3olnib4N{Fk6Da( z%Z*Q66Ls!it?^?~ZIy=^#?_{)Xw}J`1}DJs&lmtS8>qH*T5!2Y`UA*OVUplz0~u~_|7_c zg2OHU2Cj2I8lRi$-Ff4}tb{AJ#JPV#r2B#N z={jG4>dSSdoF;>43oH)gG>T02MhZJy z2F47NR01tKTyCl%Yqm*ew2<80-9?*Fsd^A5aIs0D@w|%*giI%wH;5IK7lcMvdGydv zeySgAf4inH`bP6DPUkoRJ|7CbnT-f36cW1>zoV>Z*cLwO{-#)QwE5!qQ`Rft7lta< zNnN3j&R!jt6W-!jFqtG&M@tnJ_eK}TKF1Ps8f~V?FklQx@RR4w=s1asbeWL9Q%Tet zH=8{#ezM%5f0Iv0IuRz-W-CA?iVp9BT|Qx2XzJ$IY4bVLVNg*c7d1XwHZ6S@0YA6d zdcjGrEea$M#f;sU6EbfF7B;5%_}7JYPSPKnK;3Pi|1JaN5z+hT72$=6vS8Xs#T8Rd zqfYz`#!R((E?h7|nsOwKa@CdvO9r9T$k^J=wIy%Cv*~`=RzZs|@^*)*n3m5>7ZjCJ zU$kC*^NHg}{F55yAnRPVoiKoAV*7$z?2(zEP3ft!3WCAvTU%N$zN!~Dn3x#ebbCeEtB`=T-ZBjO=$SXlNsZX;|dV%1R z3Wj3VNOTqztTEZXC>6F{IytHQu3%s=GzD#j#zDt`%Gs*3^Tj`clk);rmGo{Y5OIYt zkA!>`H97xaDPP=F()zJG*q<~5vr~c&aj~NMJz?WIeWm@g2@GX7g*&chW`n781+Ph= zWg&BykdXAW_Gu}XHxQ<@Ekw!5XiGTj4@bjnn(LUwFN^ek=4z}@d2!|fEf$6;g1w08 zaa#{%nfZ<}=68xsJcWD3W48^L>u7vqck60#9sdi9qs$RBTfg?nh0;h7p8RBdyl8BG zWHc7Urduv&+x6nG;n`((#W!ZCu)!l~$}pDVxdVHz9p|XHB&()4XJ95aIfE*RF6hS$ zWctHsld?T6*M@)YJCRS;)1qv`R7n?V{LGw^kd-r*&$#Z?@=f>77~>(eWV~i$cf!tt zC|S~pad}v~;7Y`kvBM=ewCECNs@S}^G=DAMLF{`vlYjJ;sheL$UQ--N8W<}p9utVh zj;}wRg%X+;itdfh97*A6MQ30ICx%Qit$E?`u$7~vF))Y0iXGx(LsVo)urNdGg0UNQ zSQnX|!)zUU#4a=6gZ*{x*U5>7Cwqc#2`Pom*hx)4m4^{|O1sIp2C#9W_^@6us#?M9 zB77#nV;1r9 zpMu)rhob%MB?j_QpvR?4Xa@!c!Z8qw(E+1Q&X}s1c@sV%d<`&UJg5YFm1MBg=L}Jh zmdyNZAf9LSJ)TgJI84*8rBXs!rRcMWjpNjVUWa++gI7%P7B;$a#X?B!uA&$#@R923 zdSw*sq8qPm=7qM7TYs3<6Kz^sne^sN+Yc&ims%msf*@Pt<;61`5piEPo1DJDFN2r5 zHFhVgYmdB$A}c;*Y?lPDRQ@0*wf1Rgx*K>!#RP$c_{P)7DjLo>6j)Gcj9dxwyNzr( zXK`osGQJD@@oxOHSQd0mZP7=)Gw!+hj1Eq7oe0c5=94?jgWST!-Pv4Y3RGvoq@CN= zoES?v*h%#+HiMH|YoInU3hQE1*R8e3BHywPve@*=Ni10-)rY7mc6iw)qGQq0cY;m1B3*FJq(l7@f^gjUbsbHr&it|Bo zFS;G#^53bbv$mBu<)mE>KW@d4bxe)0@ypaHX@kqEh}XAuTn{0Jc07S65rOh!IakV? zHB`FP<|gW>i8^*jTzS$tPxb)uI)+2D{1c(%*DY>sn-;qxCt2Jrj+XaCk5AVZ>=oGY zEh&!Stex>WYrmhwD{=ox^>L6;6&9wOosL3^<`>J!QoIY6UjbuPn|MNy0|8OLFtwcN z7jARAP9g={rlgJ$xVna-l=p9%_HRlJ+Yr%f-Rd?Myykz9;ym#x+%^l^_r!+i_S00_ zTcJWs1M|L_&tS4c8=XT)I)sTYLPziXZYh1yVEZzfA0363eyDnhHebVrhU-RUZGPFh zHz%?|V@_E0Ttw^Sj<1m&k)ChRr>WiF_H7^?LX6vRg`wAp48OTe^*Xx@oz1IiYdtct zt$)PRniky>I>TXGR~%vV)r0#rc92cZLtLBj@^%<*Qxve7qj#I(l#*%&NZ6kCJ_P>A zEf$y3#+WdBoudQ%aYrHlT5r)lPuBSH?uhK_vPY=f+#N|z?Do@M zFiY03Gc@W1Z6qe;KzSHA={$|`hqnDtx7J=iPQkA}0)9aI7lHn_k$MX00W3ZcX)OOYPU224=`$h5Dg z({yo2g2(h&pWtzm%BHkdiZIEc$V$p-;8cK#He~%y7x4mXMYKra5QuMD7J>kwpv&W? z`Pqx2WRSLi&OPZ-sm>8A)(TszwGojUBV865_M%QAyPE5yoob&kyfvSn`=}WTEJ~5al7#rv`Nr4FF zS%_?2P@N<9**2)8D3h$fqtBtpde?_EzsTI(<&51vv2EcX;Uq^lDGBCyPOXaK{5iA< zaz%^M$!!!H%&@;u=_4h_IXJRsra4VFM$w@c6bkE#gm-Vc23eI|3fG&UHrjJ4(=9=1 z)nUcZQB5^2T7)3Vy+JUHwlvmJJ|<2Rb=Hi`Yvhenl}qLvao=fk*OwPuA|Cr(%$JR>&)Li@RW zQ3fp5aR;-&Xvq)De7Z80%R(8>xFg_=?9Dd!#B1mr({dfp2sZ_DI6*}+re1%gPA@dN z+WoZ7MG|T7OYs7SDU@RDzA&PCTU-EH5Ui>3J%m^*TbzGBp&+|R#iv#yRrw2pZc_8v z>XUXXo3lKo4*7XtSrC4I-U%GsZcxas&~v}VbmF-AXxHhXKL6T-?eF7KL%Y(!J!2zT z_5<>&O`oZ&?-L!VPs4;nwUvHTbEJ+U0a+1LoH;==;EJmM8nJW24{lnCYsL@VcI0Yjp3uq zNKNV@mUhk!tjLFm>&39LzM3MxdDo<>GO*BUX2wfX^VKiAil6B&KHX>*oIRXycf-bM zJ7aK!mg%pN*iK2H7S+pYWYqIIPeGdKe4mv5;#$N1F^tK)gP59)Gnz?Q z8=;LZHRW1z(#Y0w_>ywtLo8!5BR&aJb&9EH|Be7fWx9MZz5&sYtS3IXSQ_l4QDP_C z6O)h#SedVNhqQ}nr zooR=NCzTKUa|4`iLzbHS$wVgoL%po^y26;p@^(vq5jEY4h3c++dTwh69~W->B2IJ! MNM{CgakxqNe_0Tk+yDRo diff --git a/src/Helpers/Translation/TranslationServiceProvider.php b/src/Helpers/Translation/TranslationServiceProvider.php index 05e782ec..6df9b0fe 100644 --- a/src/Helpers/Translation/TranslationServiceProvider.php +++ b/src/Helpers/Translation/TranslationServiceProvider.php @@ -5,6 +5,7 @@ namespace Engelsystem\Helpers\Translation; use Engelsystem\Config\Config; use Engelsystem\Container\ServiceProvider; use Gettext\Translations; +use Illuminate\Support\Str; use Symfony\Component\HttpFoundation\Session\Session; class TranslationServiceProvider extends ServiceProvider @@ -69,14 +70,18 @@ class TranslationServiceProvider extends ServiceProvider public function getTranslator(string $locale): GettextTranslator { if (!isset($this->translators[$locale])) { - $file = $this->app->get('path.lang') . '/' . $locale . '/default.mo'; + $file = $this->getFile($locale); /** @var GettextTranslator $translator */ $translator = $this->app->make(GettextTranslator::class); /** @var Translations $translations */ $translations = $this->app->make(Translations::class); - $translations->addFromMoFile($file); + if (Str::endsWith($file, '.mo')) { + $translations->addFromMoFile($file); + } else { + $translations->addFromPoFile($file); + } $translator->loadTranslations($translations); @@ -85,4 +90,20 @@ class TranslationServiceProvider extends ServiceProvider return $this->translators[$locale]; } + + /** + * @param string $locale + * @return string + */ + protected function getFile(string $locale): string + { + $filepath = $file = $this->app->get('path.lang') . '/' . $locale . '/default'; + $file = $filepath . '.mo'; + + if (!file_exists($file)) { + $file = $filepath . '.po'; + } + + return $file; + } } diff --git a/tests/Unit/Helpers/Translation/Assets/ba_RR/default.po b/tests/Unit/Helpers/Translation/Assets/ba_RR/default.po new file mode 100644 index 00000000..887e2daa --- /dev/null +++ b/tests/Unit/Helpers/Translation/Assets/ba_RR/default.po @@ -0,0 +1,3 @@ +# Testing content +msgid "foo.bar" +msgstr "B Arr!" diff --git a/tests/Unit/Helpers/Translation/TranslationServiceProviderTest.php b/tests/Unit/Helpers/Translation/TranslationServiceProviderTest.php index 1822f353..e55fdf02 100644 --- a/tests/Unit/Helpers/Translation/TranslationServiceProviderTest.php +++ b/tests/Unit/Helpers/Translation/TranslationServiceProviderTest.php @@ -12,7 +12,7 @@ use Symfony\Component\HttpFoundation\Session\Session; class TranslationServiceProviderTest extends ServiceProviderTest { /** - * @covers \Engelsystem\Helpers\Translation\TranslationServiceProvider::register() + * @covers \Engelsystem\Helpers\Translation\TranslationServiceProvider::register */ public function testRegister(): void { @@ -30,7 +30,7 @@ class TranslationServiceProviderTest extends ServiceProviderTest /** @var TranslationServiceProvider|MockObject $serviceProvider */ $serviceProvider = $this->getMockBuilder(TranslationServiceProvider::class) ->setConstructorArgs([$app]) - ->setMethods(['setLocale']) + ->onlyMethods(['setLocale']) ->getMock(); $app->expects($this->exactly(2)) @@ -75,7 +75,7 @@ class TranslationServiceProviderTest extends ServiceProviderTest } /** - * @covers \Engelsystem\Helpers\Translation\TranslationServiceProvider::getTranslator() + * @covers \Engelsystem\Helpers\Translation\TranslationServiceProvider::getTranslator */ public function testGetTranslator(): void { @@ -91,4 +91,20 @@ class TranslationServiceProviderTest extends ServiceProviderTest // Retry from cache $serviceProvider->getTranslator('fo_OO'); } + + /** + * @covers \Engelsystem\Helpers\Translation\TranslationServiceProvider::getTranslator + * @covers \Engelsystem\Helpers\Translation\TranslationServiceProvider::getFile + */ + public function testGetTranslatorFromPo(): void + { + $app = $this->getApp(['get']); + $this->setExpects($app, 'get', ['path.lang'], __DIR__ . '/Assets'); + + $serviceProvider = new TranslationServiceProvider($app); + + // Get translator using a .po file + $translator = $serviceProvider->getTranslator('ba_RR'); + $this->assertEquals('B Arr!', $translator->gettext('foo.bar')); + } }