From fcdd116f14651c05412985e2169ad00ba052a558 Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Sun, 6 Oct 2019 15:50:45 +0200 Subject: [PATCH 1/2] CI: Build translation files for container and release archive --- contrib/Dockerfile | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/contrib/Dockerfile b/contrib/Dockerfile index a7fd403b..013ccf1d 100644 --- a/contrib/Dockerfile +++ b/contrib/Dockerfile @@ -4,7 +4,12 @@ COPY ./ /app/ RUN composer --no-ansi install --no-dev --ignore-platform-reqs RUN composer --no-ansi dump-autoload --optimize -# Intermediate container for less layers +# Intermediate containers for less layers +FROM alpine as translation +RUN apk add gettext +COPY resources/lang/ /data +RUN find /data -type f -name '*.po' -exec sh -c 'file="{}"; msgfmt "${file%.*}.po" -o "${file%.*}.mo"' \; + FROM alpine as data COPY .babelrc .browserslistrc composer.json LICENSE package.json README.md webpack.config.js yarn.lock /app/ COPY bin/ /app/bin @@ -13,11 +18,11 @@ COPY db/ /app/db RUN mkdir /app/import/ COPY includes/ /app/includes COPY public/ /app/public -COPY resources/lang /app/resources/lang COPY resources/views /app/resources/views COPY src/ /app/src COPY storage/ /app/storage +COPY --from=translation /data/ /app/resources/lang COPY --from=composer /app/vendor/ /app/vendor COPY --from=composer /app/composer.lock /app/ From d2e3ce27f0a0e4c36fd12ed451e6c829ba510e49 Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Wed, 9 Oct 2019 13:54:04 +0200 Subject: [PATCH 2/2] Removed .mo translation files from version control, use .po as fallback --- .gitignore | 1 + README.md | 5 ++++ resources/lang/de_DE/default.mo | Bin 46206 -> 0 bytes resources/lang/en_US/default.mo | Bin 770 -> 0 bytes resources/lang/pt_BR/default.mo | Bin 41129 -> 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 fb93d59098f243fc9f3d8f04dc65da27eb7ce8d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46206 zcmb`Q37lO;mH+R^9zbN@;RXmKknWJMH*5BUtdNC80bh6D?tbL;d(B%C5>eDaQ4}{6 zkVQoi*AaCTa0F*CD(>63J8q*QF6f91jyl5s`#Y!VzWZKx2bjosQQt)W-o#2t+7Xm&Cs=Phtczq{=yW&3&d>(iSI0dYN$AX&!-U;rA|7!ui z1FF6sfojL2;7;J*K$@RycS4fv1?~jy10Dn_{jA_W8{8NFT5vb;a!~0vfqR12f$HaN z;11w}pvrv+RQtXJ?gD-X+#dWXn1a6q)&Ct&^!(Go1Msf^4+Mum_4B2m==nzQIPk-u z^8E*>em)5*-wr1w$)Vt3;NjpIpz3`AxGy*a9t2(mD*a8M+V^2l<$MxUeV+zJ=YI#) z&!2$m_hZ5T6e#-bb#jtC7d!|QU1xwhgQtY>b3oB&6}S{Ef%}0U09D_oLDBgOpxXI; zQ1$*ig#Q6ly-$IvXSY+J1$Zzh`rZaA|2sgn=fj}-e;=rJdLD?qj5c2N1>530YP4E`^GqSFsRmG>y9asKase+AXf zr$DuPkJG$AdxN6G5uo}%1Kb-tA>d+gU;NJpH4m-;MTa+oqSL#;1HiijejeNh|Iff9 z!6!hfOb+TxlIh?Ya29w~@P802;r})`6FlYgBsmit1eO1tp!n`{!T(E;DVgkYhL>|X zsPr4av%&X)D(Bb1zaNn_Az2TqpKk!w{+mG2`>qgvH>h^q1FF7xD8Z0?f_NJdqIuseW1$!EO<2dbx?Hw zbBN!a&Z(Y*K&6`js{9i{wPOjWaxMbj2@Zj(cb9W~oOTEI$A2KG`e%bG=TuPinh&b| zW1z~}0xI3Lpy>2EP~&|QsD8XF_}>ePZXW|x-Y)|F0aST^1(kmLxgNg@sPgv#mxEKm z!@w#idRz~xp4&mu|9v1+FZoCae*|2G|8Y?KxL}^sYZw%Ny$)3Py`b9v15oqgXW&%u zageOZe)FLrcp)f$eK}YHZvx*2{smP2n-{oTd^@Q5`WaCD`3)$#{{d9LlZD>yT|xD4 ze^C8D3RHY=@Shg^^Ffur5)^&ch4@Rs?eLF)JAf5X>FS`$-3%)Jm7wTz9VotdQ}Evb zs=W7s%JZg)`peFUg_j}QK{ zLA7fIsCJ$g!Y>V23AhDRy{`gQ&l^MdjiC7X&VcuUYVVgr{C7d6|0SsWzX6{E{t1+P zeF7B!?7Z09bpWVwKL*q|^@Z?d;6eB=22-#Fs@xkv@!hT9f#7?ApPvO)|BpbW|1+p| z?6TD7+0o!}_}7Chfyv83<+~3|!LNfF&p(37x8u1kpN|AtdXh7OzX{I3e?6%7-wUc8 zkATy`?Up6U9B?Lx$W1N-B}Z=sQ}ElM%6|gX{N0<$d<-}TJRH0jRJ*o-$AWJH)vpJ@ zI{00%2A;cuwFLYZQ0Z2!^mJQ5$@w=2|K~uJ|5H$Mac6{p@G$UT@I+AUUmg4#g8y3Z zIKtlvs=Z$Y)!yHN;)^M(z1)MrUi|Yx^}h~^KDUDBfu99MhyC&F1g;7Ad~g>2f#AOZ zoPz&W@Oj`};LhN^;4a|5fy)2I5dKY2bon7Ddi^)3e7m3T{=>k%@ShB-T}wlF9TY!a z2Oa_5465Ewf|r7y12==y*7&@BJ19QC3sm_Z0CxrN2X_EJAMmT-9{9f%@E4%+Jq{iU z{sr6-+<&dte;Bwo{+ZxD;5nfByAD)2mx6nNRZ#tW8TefA)`0H^)sIhrnkNr|`+z?V z;eP@}-+x%=a%DEC{AUIK3Q+yI7*zi^g!ql1+WCqQ|Js1J2mBDI@%UG8U+@c{>ir3* zavl%(6sYp2toQyL4DN~lI8ftwCMfzW1VzVlLDjoD#9shPE?fpG-2kY1M?lq62UX6C zLDB6M;56`cA^c~tZt0vCdF zz-z!h@LupV@G(&Hb>>ALz8sv5|5{M|{|Rs@_;XO>*mJSd{~VB|Az1|~|69Pt;K#wu z;NL--kZgK>l8l011Frzje1WgucY~UbPl4Bhhg^cr3Em0L1iuF!2<`wgtNg=3m47y< z@M}TQ^A1pSxeFBi?*m2uPX+&HLDBC^py>NEP<;Oz@L2E(P~$uGG7p~vYFy3&#b--F zm3tv5{b7{T4h0OkU{n_f+suyyt-$zZ$4{^I}l_c_XO# z@&Qowe=^|bK=H>nz*E8RgQDYJC@Uv}*MKX)Pl9UCF8$u_L%{v<9|wxx=7TDCMToyJ z#199&I^a#9+IKgoem?+;f471v=OIw^{04Xo_$%-XaE}4!zvZChAeTI6aIa{UBN>^ zwQmNvJ$Nd(BX}mLbPK>;!R6rI;Dw;#E1>cWMB4l4bN z1HK~Q^`P4O7VrS@ZJ_#fFDN>H3RM5T466Jef~x;#py>NBsQiBfHNXA}O5W@<>gi^K zk{c(3qW==`wC6xa@EH8BtT}&u2s{e^H$lmXKZDA*GfcKSco3-c(?O+M4bA{tp!nnM zp!oFjA^vyZF8KFk5=YCet)<7O3!bU<$TC$%`9<|AXKx{9ggp-@k+E$1zPG=U!0dEe4MRE1>9e zGpPRD0ct$&3;0b??fV@lKKe7b7x)w?y6n~Rd2tx1_Rj$oe-5a8Yrs9hOF@mt7^r+N z1NQ*02UYLw;2Q8_p!jI#jZUX&pvpTA)VQ1#a2crl7Y6?bD1L2$mxI@UqVFF-@x$W* zp9D27J8$y#9SN$xy`aW-3Ahiq0qg}|3aa0CgX+({py>H&Q1kl>;3?oQLG}O8E4@F* zfqUbh2dcdF0XKju@1>yH_bSl%4^;ba05$&a4F0=7jnBtH(d|>9%Kaj^FZg3n?SCB9 ze0c6=um2QK^jZlj{`sK#-2#>W4WP#VPViXp>tGM~H&FeV!J?t?5?BUb3!Vr*0V@8u z7kPaHpwhiI;Jx4p`2Q0;4czZ4*P~X0i}Bw8o(%pFJO|wC#lD`c0Y%r>gQDY&py+aE z2!B6#4*rjT>gQvi(jEK~_s;;uXXk_agM;9K;8mdLbR#H!`5>tAxIe^y1JpSD7F2!z z74QjA^!r~>>36x>$Nw-;beaJk3|;_=o()j^eJ!YQx;cd3394Q9foks;!4HAo12xXq zzSP_G8c^eLD=0cV1d30-3W^WE11kRxFZ1+!gW~HWLAA37RK0zm`m-qbmw_6G3xfZR z;1v9~gW|XMf@;UTp!n>Qp!)k6a3%PCa27cI`~$c>c*rY#T&9Am=Oj?{IU7{Jmw{^k#i05#5d2q!_$}a$gufcx4txWs za^D>MZv}V2e>=D%_%2ZWe}4%77f^KmH*i1jOQ6Q{KLh>-RQ->EO7}NV?b`8LZ|}aK z+Iu*7D0m#G`j!S<1**PvpxTvz;={{9@!?BA@!jh~_#L47@$nG<2~hQY5mY(f58=NC z)t-xYEpyC&R=Yp4jqUU?Tnc)4P$o`(NQa6R}@a2>eI z>wJB`3{?7SK+UW7fJ*uOZDkm>^gOA5gK+$98 zH@bcKC{X?@z**q+p!oFx@DT8a;Njr^1U%qPuD6^DY8)>DwH{m<{C9(D$5%no;W2PF zxZ@3ur-D8BF9+v=IDpn}KRa72F+s4Y(`#R#5!>ZczO705}EQ z3Tj-x3hoB}1XTNf2Ws4QdyCJjqe1yk1y#=Zpy+sc@V^<{7yk#rg-Jt03DNua-WpF?6SKu`8Nzlr_+3P-rFW1E_qr1iTYe{ttoTr+dJY!G8_m zPk;yEe-ad(4!qUJ`B-o<{*%Ef_!96`@X>%rvxrGPTn3&2-VTaSegO7?JKpX%7d#68 zRp1iv4)7H4H=xoV@iw2YD?zp6UQqP@CaC%NFnAca-`kzc zYH-IpnCsvx!KvWS!Arp%-s$si5bVW&BX}tIS@2+`16P1gfd_&s-sSu}3~Ib8pz$TB zakx78UkM(L|Ft3fgP`dA&*1Uk{h;XjD5!CHGQ{tEr}Ocipytitp!n)2Q1$f%|6=fR z{Fi_#_w%6Y`v$1-`6GA;c-p&N?yLt@-xg5)cnzrjy&DuCJ_xG(9|ZgrsCGRLE(Mj)+i_IDv%oz_cOkd~ zI08Ngtb#j%SAZJ-&EQes_24<+N5OgEpTIM~li%lhTLY{q9yES>ztdqQcr@X45K)!9 z6+8x<^#P~H1)%aZz-i#m!8d`se9+U~2F}3$nc)9DsQJ0yKe-;)3(mp+0dN!eV^HO+ z|B%a{tHAa6Uk~mEJ`ASdpFr{5K6iUN=77iHUkUbrTfjx&d%@}8A3*i@fDb#rtOGTF z2f(wyTfnoy?}KXZfgka7^FhhM^T6%EL2zeq1e^k10X`4B3fu@@4~qWVf7JP5H*i<{ z`+-V#1StMI0aQ6l!M(uqgFgdz$6pP26{vB%4pe<_14Y00fjfc^f}+dk!R^6sgR1Wb zpy=>$@bB}_9-e}`5I!^D$pOy^cy7S8pxSvUDE@DPD))5(ZvoYwyFj($BjA4EeW1$! z8u(oB`=I*$2&jJjCB*OaF)wdVP;@vHlzciGl>Axc^S_i#_huM6W|WGe%#-2FUG~+3LZvrpT-?d+PjJSRU!U& zJbwl!IlLY5H}c#n#1owS823Uw@cT7x9`W0gb_IACZg0Z=1t%HuIQ}o;uH<ee16FDGw}6< zjo>8vUyJ|m;M+p{t>CWVnc(C(;rTt_XYijI{AHeBAD$oP`E;KD7W@x__u!ThuAkP@ z9{Tcg!iIVNH{2fhe~5oQPO?)!t#!Y&C*%s@`;cZUxCd@a2p2pL|2uFqdHw=!N76|S z=!b|+=HNet__taJbB*Vp;$DK=1-C!(`c2{aKHS&cYkwtQzJ$Ap@Oh+L3I1n@*Bbu< z{Q9lOeLOrL&+|>VSKz-N_ZQrW`1QLgr1=idTXBC@Aio1bxclHs{6EDr6<6ZJDsrG{L%jsejHCf0zZrUIM1I3$8aYV(p}E;*Kkh}zBGjI z0KNvdGhy+!Gv&|6>Gukp)))P>E-ohBH*m+`_Q3y@knd+aU(54i@*Ro082^9Z&f)n5 z;O@k24r%wrzY)h$l>8H6KL8)V>Gvw!bn>hTX^+HzCT<2{@mCFT=ZAm`z$;>8!2JTE zUL+5Ze%Ii?7u33b0bwJ!i$ht8em>8i3jP`3o5S-h#GQis9R45R`fxh4(C^zkKZa}I z{s;eVA^ZXSKgWMo@b3iv4`KQ#D8p%;*6+o*0|~sueDFQ#J{O(^x^sIr?r%K*g18Uh zuEtGKLHsVny%G0n!t{F|xDWV8+&6LG!rhGf4dI)?58?h1cPTFZK1$p#aaZ8JkNXG8 zUJxSB#(!E&2sUwZiNB8U5A%Em7=OR!`T2N0k9!h#Y>4{?&tK*FL&4vRe^Gc|&a-~+ zcSxQ?*?-~rv$)x~b)Zlj zbS%&M9R;31{Irn%X#6MhybSj!@m~k0<7N_G2d~7%-_GG-6=8!Rd`$@ZJ@{{g{VUjm z`z_C}#Jv&sC){Bn-8;c4xKk*90pa@1;`#ev1$Q*=A)J0wL%jRgBL)9qq}T60T-~1F zFXDE>eG30Y;6LMT=lM^#ck+B3?u?LD@LJqudI)9BCH{DxZva~a&&B;O?qj&`;`G~( zxNE?3aPQ|?zc=HWJU=)1@4>$)l(|p|_`RFBCE%Ha*T4Y<@_Re(%fy{Z_(eRQ2+jeI z3}x*d%6S`Mug2;3CgM`?lep7(J_&c8!g2cj4tFSF`h5+23vMB9JKS}I9Rx1HeFt|v z{$Jo;!*loV4I$vA#GRmagNNfT!S&+w+Z+5gct36<&xeHeDz0CD3ctOGe+T{pNV8ud z-S&j9Dx}*JfBfys^FQGJ5W>Dn#Ev|FGx)y%UL6v@oacjazsLO<7k`U*_$SNwN zYXhZbxmJCeWNTFT)1+yZo0aV8(x}@Lx2Wf=v|4MXtCsbqt1DTlk)_T0=Cm|iDpz}x z*>h%|)J)gbTLT-C6a2AMZH(3G&8(iB(vF)OI=;EqN=x-Dt!KmK25IO&eH5WX<$cMv zlWrpEU{=YR*&s;=L?VNYS%7ppV>yrw&WL^+)<*E1oy;8^luJj;)mAgJfy%1mf^5({ zU5)0(GRW6xjd}OddU<%HNx=lR8gLpzp0kjJZmQKcq?OumhbPUd&`&}1y??WKrPLH} zcu05g#+i|ydPzjPlev|OTsl`AOHLlu0(*iE3T-p*XsNz|s-Rm5a&62gWYPrnItd21 zkwTm>zL;T!rp+E^MV(pEE?*Hf28m+`z1%eI{N8Ygwau zOf$`{WDcagX(2;LR3VRwZ*0oy0n#g4Swp-Z!;P0hB+rFt4QZ*84wjlUEO_AVCRLXQ z$nHZPG3Rs-j;!fECQoC7b$dxx+L%@GHp;_Q>Vx%7uqAWj*wFKm6HL?Hr=*hgGk(s7 z>00DywKdw$)R6%2$l-cMOY3yKg`BO@M(2v`%CR!i!h*SVGp{s2OKK@&J5;V@$-Hc! zHY&j#pGx-J8g8Vs(nS>6s%ONt%9X*^m=hy zJik;==GQ7LM2)PeM!>Q2YontOA)?7P61!Pt_oqt!HT|7YKPsWKLsi z35z`OSgFxq1`NgkhBMD^sja#Bx=4vlMo_6~WGmx=t|jxm!=tTAvkVb^fuuzf21BFf zNV>69FPHjBTgj@!&5@Y4nr%|gJ!7pJii!cY@aE;3&*q$`M?7n?Dg=VUFJ&g~f`#+f zCJV&>`ZF_K&~i!BhkvtNdUR=Y?DVu*9wmvbEdj(s9?+KTg|NJ?LRggfLCi16s^zC4 zC`njO^ATH+IUi|ZD?F#Qq4e@vf2yvjQF$UoNFyNj-rOF|eN6T@J?&?*wN2t0W1|1R`56Z3TlD~G zr96;T8_1v_ppu0>D@x@GFbZhGvWPWO*s@e%G7oN6qfCh`p;C!=)yUon(o5qSsG;u+ zpq?#6DnjIl=^%|z4@32=Qj!|B?0TBvdW{RYmQBJrh&J;(9g#MuwCwmIRsv6UK~^y(VFg4aIE0!28V(+I0_m0>flTdpNl?Rwl=0)it9xSv2>&WD$x}x^ApeD-HT{%bwFs zBJZYptvXD)az#72Mddo0YE>j(L_-JRqoBIMi)cquMA8$FPY27xthiduYMV4vB z)2ZqSsp_hqd#F@`gXKC|R4?_X&n7$XPH zRS69V14ffxW+s29XT8I{#&_&WHZZN?$jwNWrlnC+{3S=pE0Ic04WVa%c$wq~DPde~ zi$^yjoPy@Plns!^6BPt;p-iSATjglu9YsUJ6!|Uo*N|AL>GX@(rJ&Xf)2ez_9_<%b zx>akal~rhXJHHma+MBb6jt-Jm;z9 zGBTjqU~#cWlYjPPGdx-D`<7^`OX5QxPs4J`SR1ajn#qb%6*f(!qc!l1$))SgUk%V-F!#&QZmdBZDKq4zhwpf$y z!N*jAeO&ux9Z|BNUpkjr7^W8=h?TO!*kd|vAX&-mv_CdpD{INhS{fNBn4Jh&BdNVc zTIsqmrI4o2tTL+<-YEVGK~{l;ZA{asXazREN@(l$VI~Y~Wufskwz^`&D@QA{u7t5| zXk@zBSZ0+{f@;PeW?C@D6rR)RY~!lfSo)A}Gm@2VFJT5n;geb|shDilz(8xPR2|ry ztU|!GX>aRg*k~aTSBk(8n1=+VF7(n#P^u(d{ zW@8w~G5q9(Z6l@@_D-D#J<*Y3?d=_oHz6m?oktI;W zsU!8SWQ6#?5`lFf>+4VjZJ#G)kiFRk+MiGMu;`_>Pl5wV`QX_mqtwqjW&{ zm(AzNgi-N0MQU@Gou<2(ZFbT5PkI~s)-Byl=KY@pct zNEtnP!bZ?1FUOkN!d2U2rCp1b29pZL|9HIjl!h@TLtyir%eJ-nUi8I;)0Y=rE{%ON7_L9)7@Z7ib^udbKr zs0d)^Bq?_g8nx;y`nth5QMI?VFY4C$94ea-O?^0PB&%Ef?3&UArN&5q4N01u7j`zu z`Po1j`!xGVo}@^Devlp>!WpV8*X4$+6|4`QWZda0;bxM~I}-!idTcO8c*1Z~VU4Wj zA?f(jaO)zY7tCd<+-!KXM_b~0G%^w{!_?f>OJ$S_K5fi;)4AFT*@>X^%b*ggphmM^ z9^l-+@aRMDhax5^%n*ed0+oYdG$etY87C1$hwi0bRb z1q5wb&wZAp;eW;6n6qe0+wVD(HJBFckK1sYqQJ_^B7628c z$M!{lH5kwB7_wotk^n!vI#`NQ$TrLBDho)mM$4K1g;iSpm&3#0sGI`AC7Je9BU#&H zm4Z}JZ=Rj3Ep1?L)wx&FWvIGXKPpSfTHiVuHfEj68E9eMP-v&B*%3me%rj;YMmA`BK%yY`|SVFb0O z>ZX|vU95lJY%}L;pTiam;|>}Uj$^$_E30xfPOFuuTx3_c^zvF+cX@(!W2$v92(6Tv zJJjq`5FN@*rFcW($9rM%@>G6R(Dy4=neBzSvoh2<<*mh`lvWixJhz-^MKlwzb?{oC z%``6BVf>AEHuL5eimflVZL{1Ph*73!d=COUwyb8yexpAD4Y-&|G|Zf6EnMW!pOEf|*zmz-uf zkD%e|R;HV{t@gmLP}WV9i_V`rFP}U%hc{i)!gg}i8YmhdYIIav6e{AxIgE^hz0$JmkB6`(+g zj+g?0YBDQxi>W)FHjDd*bjH<^oz+GiUg8WC^5*B&G}|cP6DH>*)46ot(I{=URBF&2 zEd8;v;>Mm3t}y#wgivjeds}Ox#PoGI+-+D}gIM+2retj$Q8HR?YQK;_i&b=i7>%9f z+@^`ywvp8f$;H(POB(L?>OM08Ty0M6nsa#8t>$E{R4+R}^_Jo7OV&*wz6i`ER6L9sB6R9w$xH) zoll6tThkZ^yJ$@LB76+&;BW|79?~r}W~$4B!4@_z-DXZRCriv1wCeWu&LY|}wd?w- z#pWu#`-*p8LxbQo4Wi~iRG>nPg2Vp6a6eC2k-tXQg7qC1cG_A>YSPS7e zWtNuj)QRSUXjItDPPB?Sn2aVP?6lW(H9GD0ZJagobCj-}X)xHf7(h(}r(C?Fqmqd6 zBUqpFt~#p5euhSSVXflT8dojK&8(*&Pqag{15uO-wqMO!eY3Lp?Ug7FA(}7nt~Ir9 zO$QMZs>^qxYUgOMz_d$al-2lY$ejyD5WU*7E@dS=+r1dx)RSlgvT%+H&2X4ppeNtf z*&`>VzWMT)+#5Eg$dArs?X7KBcu+b>uS+O)X+##Hi+VzN1RCVf)0dA&Ukgy)vn56xsLDqZZ_$>O> zj|)?TwCw6!|+tx*lGt8YQRZELT)yCBnP7tFsfD zq8+NGav<9o0^RrsET?qv!~N_Z)xOZnCU5iUOF-OO}BQgrJ!xfiu>+gRyP-U(~gK`0>^Gba6e)Glt= zDK4YeB?2rp)M$)hT^o`;QkT@zu@Ut%Sm;;|tqsu-GBsY$Dk!1Fd^6L_TWG+(bvUNy zm_oZcYHBjr!3v}$x3dmopt$!kT`AbUps}kH;Z+8$T{gIJd5^8LVV7wmmZELeFh-hu zDUNSLSWfJoGt)7@&}eHmCps=*to`*g+P?eLw0huB)gE@C#o)rrVICZ->Ta#aPQJCW zrP;cd+YznyXOg2xFr_bWSO@~Yo8$ZHnStECeM#Zvi;d;sW~tb z$~MX7)r7auc;|-wRD!0K=z7}bB&;hDS+hnH_R=H0NYNg@-_pfMN-(4ZEmD{xleoW3f*A1e@cF>HfyLP;VSspv zIO;H=kJxf3OOr2=;t_5d+s>QU4idXFVta;O6jLr-gmqxB7!%pJ5UC?Q86$eQ37w_W zd-Xgc;pHn1>}oQ4_beUkSr0QK$okTSc8zZ{+Ue+&)vMO_%-4|&F+B^|xAdiRj-P#6 z&+#Yr%sDlkeNx|?6OKE6&hf{Su;+Zv4pl-&x|4fmpODU;-FMQ7o=!Ipdu)TsnNzLa zmyR~BXvwm7MtC>}iq^UKtbynq%+8t;uQK*vB_HiebAKPo!DR~;PFb;Z#lm*uXZIdI zWj@;`R*)X;Z~M@Qu58Z2npv)%Zqp9Jp1E%AqMlRR>9oxr%IZA}+2%^b_ob)ymzz^A z>{;xVD7ABS%~sUey{Goho=uedd$@JE2@^uNzbreQ_E#G^Qfoi0u5cx& z(#|%o)Zk)QbEGfr?VT0>P4QGci?ARy`qJu{Won!`=X4eq>5Ru+)uNGW9eHh1l7dC7a!sHtGWtM$PGCF6#xP ztT81)2y;OjsuH}h!KKZ%(pkt(@ibxNLtDV z%UQZ+K(D@{1~3*G)Wjgzn=EcM^`aq3HnO)wHt9n7Mn7NdM=pdAF5$yG@*SI(vycegG zz4etw3ca~LPnIC88P$yYCG5S~E_2uu-(O$8?1D+&URTUQ%;FG+zx7BK7F2B!8hXn( zrv`7YOqkNghePeH_b>`r(dTZEOfcB!f79v1*_KT$hOEka>qK)e$YhCoxT0RJZfU^` zB;cN}-dwLb{nm1cjLF9!jZBbaBl`qP5h!0wvogcVW0iDd&5!P|Jd8lI;S46_ty=2b z0s*$P+U(d}T0Nax@6R}kfL4uCa|7xv_mgNsS6G4 zy$lnIBC-Xxuw#;Z!gErWlg`pJVPG9eihh!By;H)6H-3;H9DQ!RzkwZ0Z(&ig@hLA4 z@Zy;bqx6i_V#EzDwju+Wm|BT=kem^boMk!_K^)am-FoN1h+4{f^J|*cS+9_$0;_;_l!OS~is2BHcak*O=2kbf zs+i5OH=-6sU(cFwaK3?{$T)?^NT_zC)NTZ8JK$_yL@Es%MV6Gg`d;B}g(zN%(p%F# zAK8WvKpe0(W7CGLTHPYXsIn}i3m9PTijOj5M_arzI9%U)&(^o&)7)ehaa2@C<8ZEm z!O~JcLtbhPsmqE?E^gJg-p`I>OKUVm)!}>w6QmXz@i0B<@XYIa(SB}gsK3Fg3!yFIncV7?kSmr*wLiO{KA~>g4sYJW-caY0no(WL1jm zEN2uv9Z6REeKma#fDh2rM{2y~-YKV^esNbfkv4i!t~pfV-9bvIZYhmak`);~RKKv? z!_*=jlU0oiPbmA{i8v6!R-?Ta(=;2z@S(f^%URB`hT2OOrK;|rNd{;w3&j@-pQyqR zX0tGF#rQyGEBbK9EBQ>RwRRT6Tlu9{R_Ac1G%Oe1OSzcUBylM~$5GRC;kt!%@>@CoHA>L$FXoav*V0Le)@Xnat zqoZ1vTtFCHlCgAHlx%zuoDc~&l4!G4%~@r#nkMW_9NWnKUDODU6iRxKkv3!TEn@HlZNjgj0floR@qmz(Rf#YA&EcNm52+7lsP2RWBt3^9h2 z)k6}bh@Xl+C=gn~R(ecIlkW-ap4dv==3baTYCa-oT0 zhC58vQ4UwTW#K`8G(8dv%a*KK`1*i^beZGhfsqO(E3rK{d!o;1?J2~q%#3n2G|VxA z$d`YWV12D_SMSB+c775x-oa9xV@&iqzDR%up`AY0wAntn^1D*wf=YwB+uscP@2tK> zU-_UNi{nN-SzPMp>uSvsW=VZN0P9G2O?eShj{xMoFI5Swy$Kyk`{P`FOsB7mnq@(9 z^epTASixec5SEwQvw10nM=dJca*(T3c$HUQz-mAV?aH&b*=*2i4w)cz=NM3;`r5Nr zJ@GFW%uHEjOuaV26jDGS*k(&B8jN69f{HWF89PBrGYf+cP`gLtUAEg@OL z9$32z9`er`z_jTGPApyDi9*a&fGQvP2-AqxKqyE~xA|~D8S5EhAR5n>s1PxVC@piM z>@`?EuzGSa6E&eM`I>8Fz3ByPmb9txO`cAB_=E-(po4PtLf<(s>xydXXr3llnrrrM z1+(^yOQnfupE*b;OU1=%TI72Z#FC2p-RfFzhKv5&Y~<@N$}CNqd=Mz98BHn3STh`EvM=)!zqOmZZwJ-Qu3@boRc z^Y{XSY?5nHTQRe@nSpN%(1uZ0UOkO^=#ou?&P6dsp&H-(H8ULIm!d7_2t3M;1^UXs zS&#!S9dfk4uRcAhQVEED2qK3HJ)fM5uyw63}l86cw#x2K0m&JLsA z8seLynHYyLFHRSID&gsKgbCo^Rp5&W>#DOMtg8vm)NS=mJ_RSf}7xj3G00upQYz-y|cxFyo_}> z{6#b4!wJsKrVPQaoOnPa2)33F?8t}_5o^P6g{`j44)%a7kB>H6n$|{Ns|)lCl(z$! za!{ABrgD*kiGW-HH|whkEq#-rW5uOB+N(cd6T3{CG%YQRZHGl{TtHtjBp4F)L4=kZ zG|d+meNRCFMg;UG^EPtH6rIY&T+e0}6w z4jbUXGNKE^sq7q*v!uu=hCVEr%NtzMY<&%nM9c+t{!lb&<==M54P9+RRK8Gl@J*nD zlI89u%=JhO@ z73q$;jxKExa#D+STvJhr3TW`nvq5-KV5)k&&@KAqi;JM3c?vwO>rcp`zHVX;+~?{>KmFB~&I zZKSm?)?gP~m= zvp%TTwp;MGR{T2^SBZ~0QmPxiDR*VMCmM3P7}fR`!@fu`>7sCqwfCkAxu?nekbsWE zf(A(I?F%Aq4~=|ay~;FRC_jkyA`5m`AMn;5r-@CwBLp^r<-)lIAfeSDJ2K06UlG<~yU ztDiPJQ-k=`3a&ny6($%XVn6&nD=FT-TefAwq}N(IG~J+;Qfq8ks|HW#_$>}!`A&j1 zP`;y$g{cmi+Bjy*w{J1dw|&+OWSA7niC2J_-plfY<4f~cGbK+J*;WeEu;uJ5dfV~r zE78PFWKCQ_E@H<=hprZms=c|3iuO;tdc^irANp`96|!|NiCxjgMA0CUF81@zn5NK{ z-Wb+CbMzr*6BeujVGP5D(_S27{{@>A7K}~Yj^J8#!w;}csZwV~O-JXeCf;<~tZNf| zIx2qpBF>_Dg|nk}YP*)g67NW=8OW+VuE!xwJHuhsMyfr4 zw$M^!bW++D4zabJnF@uehlOgo3W?@8upv`QGME1eLVC46!=-Z>6Cu9i4Bx$IHpbY8 z>kD1s>ld(te9QY!mWhESct_4k4b6cdn9Yev{>L?S_Lwt>ak6){YeN z6FSB|?h4b6d5}zKK#j-pXw)hhQ7YZaR8-g6+dB@GOmFKDizDR1bH@;dJ0FE}guH28 zcg>=X7QUAe-jn4H@6#3C7(-$*{L+kkjyz2jy%MI;CTKi27qQ8)H}~beC?wI^@8R{jfJCyHM(yG8_9%cL&gDn&d9}80rAwm3(if|9o^LtM*B#it2W>F2N}hd z$8XsL$-x_MpLZi_l%ZHrMaJdGebXA!V%>HI$Q)Dp(muujbyx@+3>6*W80MC=o zttziJ69#_8)|By@?H3npckg%+fDg7Mdpv&rw1Y&+RA}GmtSB>$eXR zQypaEYRX8*Y+z67e<%E6NNi2Svy-j2u?eqcBbe5@wE>eZk_np2vLLnRMiMsOhCQ=r zxm^_MFRZ{x_bwm=7<=2%6e7fqm1G%rJsxdb(a|by%7a}9HRDQwW(Z)Imy4YXq&>Gk zB*I$=x<*P*oLx~VJC|4H=}?)kiL5m?Vd-K&CIjeUnvJ%YeQvY4R>fuXE)H|&cqJ{iqUb0@=S7fk5j(AQJWWr z&ArtZ_7B`e$Q9ONMcqfRosFEln*2zk*nbp+L+vxJccfQXoShx^6BYAAzi?>qM3hWB)&4QJ7B@g?@U#={P(Qr zNRM(ha61I&wEitwwIf;`I9lTlqs>s$(z_S#=~3azs`>1kfwqQfSRF18Pc^C(1R_gN zsFpjb@dT}K7O{{^G=8J?_@E!<1dcbseNLj$m)K^Io=v)_!u^48Gn6`9Q{}Eei00b9 zuQ{D}@R`2t_CI~J$~mrP=QXF^nbw45z=?W?UbNr?44t>Wa{4znct36-CAnHuiW z3ekujKBDWy+`+NK5}WZI?a1lXsgwHEk4Qrk^1-yxp}K|}B5I)>$I%SF5h%aYx8KZq&taD>3CO>Bs3|iD7g?E6!~J|(GsD39RFJef|8S5#CCh1 z$A?htP%Tj1&(_ecwq&j0!ZDv(67C2F1<=m(a!zNZ(=m|gvh~!yY7&n95O-M_?G+)B zQxHCK`;ZhD|E!7CkD)o7ZOe#2iQ1KfZ=1v;Nz@3vB8ptr9tUFSCWCj{3uU%3js&uo zav%O>-aW7tdmNDsEz6P?!|9dQ*MWcb{A2Z>j8=*l#rR+MYkS&Q0=G3?3(Q7?~ zkJwqbo;Z1Ih40C9RwTh}U!Bmp>bDZmn-IH}#{CbtiPpGsV;eVrCt}>C z^oubLCHiCK=#bOiXYs!r@beOi{--HU(Zfef;uaBEo?pmX!T%G0qO}+nm)h;hkLqT` z!zD10R^-t+Ge^KkUT$&s*U^2osUP?MG5UYjs8?F-e`eIfT2x2zduZS0F@42k0x4*r z@qK|L42Ja1g4orOt(vM?CYIoXCiB?vH27vs#vP%H*}w^5)qY)RS4s+kwPa3GlX<C%${Xa#WZAQI}@V#u@!&+#+i5v^A|q9;=*LYYkjVn znT{y}U@C9FnFD=0ZA;R_C>jm9VA#k_f{cg62ottllX|Dci?6cKGD)G7slYV{O%uM& zLSSy4RGBeiVd2CgUVING%IKxJ6TO?IHo6kub)~Yvvg2Z0i-I2(aimAn>{L&mY8mVu z?Y$^Dw>8F~|M%%f^)kvq9gymayt>eCAIMbu(a(mqjt`!+fVL85 zW-D3~Oq=Zj;3TEXGkby0s)&i&AaP(tx94e;4I0#^tN+<%U*pRp!>F|&$bsA**~`5s z?g+8PM`R9bC%7Wd8CIBOzukHrEAWu5pIx(!OC^Olu3|1U45- z<0c#Um*Wq;i3g{df?B+`1C^dZvLG6y2O;h2q3sP;l<>+A|4kC_*_ck6&hu}(^lN>a zWqM72L7L!yk~8T zRJ*tW*Y@W(JEDG_cXMG|Wp^7os}I^&JBOA&7su9?XgZb1aE|4qf==c}OiN{Egu+=2 zg+|`e;TeFO-x(qWbw%^~Nh7}=NdPL6=Hj$OJSZ|wLaDY_B)@E#1Kq{O!AOTiRzzf76R`Y+R&m>OQ)<=Az7t4cm8^z~~WJnC#te zZFeQ;YJ@j&;`W7{6OFx4Xon?Ym47g=36Vg_)&?Y z81H&H!J?0k((-O=&}8F0(C0C23`@dNG7j03Y0bWVHsW5EO8G( zTO1zZV&{hL!s;ixl5?9@TG#R6m~bId@7(58au&Dsm87DV&ka+iNmoHUVf3Kc?0!sO zWFr_f?A!z0g!!5;^u0+?>XTBxslYTcmoPk=y}uX`PFE4OW=-+UPZE#AlC~8i4~p;5 zd0DxygPW5MpBs#5NB*);{@7Ko@A8u&$?|B{mpLxc#10?$NlcK6g>0zWE!1+MZ3qlt z1;~;y!B=nGn3J$+akZLH-RMfQef-9s_;?LEM+Nl(ikYsPF6k>L(r%wr2~Y2_nhWzWm8=y0pEKBpo|BE^8bAqnF#( xD`YD58^ctCJdd~4s(zKbs(X>JZxr_-y1kiG6d!Mqjmp26W7e?zlR0b#{vSgE03!eZ diff --git a/resources/lang/en_US/default.mo b/resources/lang/en_US/default.mo deleted file mode 100644 index 7ef9c3b2c086aec2c1c210507ed820614e9f409d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 770 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 UT)6FvIMERxof*)@;U?k#0R=vo82|tP diff --git a/src/Helpers/Translation/TranslationServiceProvider.php b/src/Helpers/Translation/TranslationServiceProvider.php index 09337dad..62247000 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 @@ -67,14 +68,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); @@ -83,4 +88,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 91307bdd..dc8e8af5 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)) @@ -71,7 +71,7 @@ class TranslationServiceProviderTest extends ServiceProviderTest } /** - * @covers \Engelsystem\Helpers\Translation\TranslationServiceProvider::getTranslator() + * @covers \Engelsystem\Helpers\Translation\TranslationServiceProvider::getTranslator */ public function testGetTranslator(): void { @@ -87,4 +87,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')); + } }