O3tu.솟~qy>`1fѢTXXZ 龊=CG#BiVB=5OK+b`@=詯s?;FܸP<'zI`$,hKXN s7'b @s񹼩jdHa(,%g?hbɵ~~˪"AA/ӒA~+(&jRé3M׆ϝWM6x5n_Ov 䔪\)ԱO0S{L0,LLϕ<)p/t|OɅ'ZZĉ70c-i-#"W%GVm3Xvg ƟLvIyYT2al"t[lS ău&5MPc' 20~.H?#-,աUA>:8 BsBٝ>"QӦa,w_z>9j` 3T <-C%>CD}`@@O 4Ф q O3mZOkp?]#uLx@J+ v4: ǂl߄hH9E}gG !28u*lԭ rSi ?droLظK }eỏNf8l 2WM?죩n)ف*7W<$vѢ*t !övoU(Cs9 (/JIżPΩ-q"gEA2-g:[ TFRR7\^,P}C*]x54CpYP= Ęl' '[kţxq3=7#ߋR4 W$RN AV)6qy#SDF{@c*۹OnrN; F[>hKt#Z4dU>dw R](۸2_l>6!!rʛnDP"ɨtW  ?i(6@:vGMb(FpS"R~[/_Crt 9{e^"ўɱ ֨O=c\i5=&(}X*X1  W{h3fz7Z;7~qXIN7n[^{&aAׄ;/j˕A.33?C+rAM8sE-˛\'~wS~';uT%0Q-R:&yȠv"S+ʧSR^QkYަ7Yɥ_8C${[J[&h+Z pQ|%&:Ӏ^phYcvgwGa<̫9Sm-6ќNMSFO]MD*x%ҕL<8[w]bwNwxp x}:IԌ1@@NC᫴ݗj8rL'&b9_*W?-Lјhq 'GSM7 ;*(\/\%ni )Ja©Dŕʔ| ۤ{8-0J̎ٚc9\ݢ M=ަ`\Mǟw} ݿjVҜ$yo`% !E"h)]~fqضG̺v7ӷ& ,1IwЌ埑e= kշfJ04Zx06 s+_·.qr'')M_ZW.\m9;`0nB,խioנ[Q.S^[Q^bsNj&^އՔ]?qFkڏE2ugM6`ylVP>).,pw\mGܠi@Ϲ'm]j'Z=GZ'hB|C!SYn9;ƺ[1Ҕ`ulSV*И̝/1 d7(M1X]:@?Ta8;g%\G@%"qm ?x [,P|2g9J#x9u9ˁAc\ &$`n6&-`vԌ9N6YBwArwƴ^w,Yy%ȃ5 NY##:0j"[0 b)3'SxHFȄ9g綦D{U3OSkfzPޣ*pui }Dp}K::~٢2enqL, !1dz Ӫt~hI$0:(OJ "/t|*SǒXnTLҾ 72pwZ-ܢBsPT$c]ndD4$a<1a4|KIohqȅE_j!]e?6 ̊|ZK8],wӜ1GDf+MZM3Jv>1ȍ]VrzdgCimfۗi^Ꝡ (T/7AU_XS UOJyㅣg,0WNRCCs^[#X r[u}4Md4 Lr}e {P߹=VJLB~m=&*}gx#n-Ğ"-8vHs8O3 *Kh^U I0̑npe:.%O,.kYJB¹ޖ:jsyt `Px<KCk}ЀI=A;Yҙw?MOl,c@#_ejA\iEOΝ|L،qG!2rKvc{O4"FtWO?ذaRq{5cKR;PgȶiXP{ec %kQ*>{U q  b dp_;q Tϐ Ij&AҘu<䣂Bmjxa잃Xp1Mqݚ9+MD  巗#) >5k}TYD k2 ij{|=/v"lTMx+}s]+fv?G6nQuTB:~jD&S,*X ;WFƤ,vAtއԢ[(BopR\ɏ9ϞO1R`,WXSU@mbx ɥCGC)khvh4|#ߏNt7lop^ZAC2W#k{sL%JV6VH/l Wd#g :"܄w)Q:qE1xX}7s΁ġrsgqvԫLaiN˘/m62φRW*5ȩeG\@7{npjW>PFNst7t97$@=2o[tg(jWՌ# {$"؈rjQp$. QI |6st#]QS?kӼ:=FػfLĊ7ZÚ<4!QB2lm$ W4q{^,evm=\`tgx<|,з7y0ۨc[~ҁ[--kyv$SqqVz!91B)ɸE\ )p~M/;Rn+W6#7r3?]|.W$Y kL$Gos_Q[? &-Ȣ|~9_f{9[ށf1 )t5ˣ\Z%pe HnpC'D3IqraAfeKyDsvsJpG v^hlDaD;A!q t/.9_1.G鵨1nE|1ѵk:/ֽ -ݣFP*JWhr% `u T[/߀4njAəsk#g A-d<;ۍMM';0(tCD+ts7J sz |hFdoV k*Cz^0.c+&=";?ǐTDU[+I=.vܪ΅ XmXu'q@0 AޗqgJ1wBP&*ʯ[sU-OBY9kMU9 B_i11FmC;i|5Sݢnf\tCwBbRς1~!7fr*u1 {E/N9ys|vd^62BGCA;dJ12:Nj.\0\cHE43oc#8vLw.zn9u%5f,&3Z1ՅA"䏖-&Ѿ?k\s-Vo)](ix XE~iŠ(&֨1} :)@dJ]Z>n @S@AZ#oaVf}7S?Th }P~m2Q;\"'&v:@")Ti:YCf*ɒ8V>f17W+>62=;M3dުlSJcǷ|$8:Us$'gށƸ]X =;c18'>Xtp){Nn*$*I ùWѿ3_H1);~aHb^Lh[ȽP=g w脚ot e#ʝ2' GH$?͇כkP^˘{ ژVNH*ݤ#/3.hޟt ЀUqo QQ)rFZ5F L!'"D&Z6)n (; *Jyз6vpk> rfIӉ 2G|֗H52YٱjsgA0/j[ч(|h=`,rmv9G}l~X۵^Y)` 70HdXonP Wt2WUT U Z`| u18),q}758N)ny[Z'ϑ. J9k>nb!xT]xeC4L,Z\R@T?MShݫɭm2Xz ̠ D mt!é)ԿΞSdNƀݐK0;gvZ?,  <'l_ w%Vf3pnPB7& F_.;K!.Κ]s:suGǪ?Q ]6|4OgO/:wXԍȕWVЗ,E?UdOE5ܐUb'D*W Ý o;䵎t5ִtU@Pp|+CV>I|'ZϷN42U< ꂜ.u pjw5Ǘi`Cտ.ؿq¨8scʙV[ ښ_f5 j9%WvO#ik[ j\8+W !`eg2XQ8YRY߂B/)!#K;̴؈8EN}nr[aq!p|PU-x4"{DnaWDznt&Ѽ6uUݞ3FC?N1ZGdء^UvS;Iј+"0Zz P bbW :@JƖ(pgj㲃.̿ ZyĴ$>8^5lSeeι` >Kj4;nrN tmy|LjJLyܳev6)ˋc'5ԬNw((T@`#VdXzcoOx3V ܋ӋXơXO5 Sh &̺̀t޽4d FX `NPc] /T3ۻ0ƺ5otĊt9.TtbS"=Fٙ4㋡Н_9o*f|־BcVcfuvhU)M#4c $h ,h"gPnmd- D5 fUxE助((vyv'Un.p*W݊\Ipfz5 /b۾[@Sی~sGI/F3c64,&Am=. xH|Dƃ4YKKn)32ß;-LOCc$=tciK3#+JȠT*pVif1-p?F g,U9BB$^VBLJp_KRK;NЪJ-^( Tے/6Gs7T+eŝgRtQMzURpPo}I̱ ЮGgD閥'erb"Ň}EQ w#k Pˊ~Ap\Kzky7`L>x-m؅cӨYE|mFP>qb`FTy٫hHGOݗu;al#ʋN[=N:sTɩDñca+/̋f̸ I:CfYuwzC#4axB~ovaRu*]"1î]j'pVa2g =ImyRx,:qn/VG98fwϗdښAKF *J._=IB控,Y'RG柹@©btFjfݜ6Mل}?YkXQ'h焻81#,ll3 I@9q)A߄2{#{ >܌gOnP#M ?*&aڦ~+Q+Mv\Q=M cmq*Vaw/=COe sfhSCj%杇6GI”-1HMh;i[YJ4OP-"q!^-򟳾[z8BtP)݊=́;bP\C]cVWC=6CG -ִ!R5쪹OT X@_*HF-ll3uk\zTI˱X7K4 c-af q̺-uJZU؞~!aa@Q[zѐ&[jyno֏D؅1T!JpF_U vT/4NdRC[ab΄Qml5?D,tePTˠɪDe~ hg$"W8!l`³-6?MYzx[c4Ze(#|~7Ě"͏9סp|C \A"pl;7+L%)UIkvhv`os6!Y|fiD۔pTWnn{y>;Dpc⟈y!UUkW5Τ~&ps}vjÌaήBpL(X|Y))+`H!,LnW9Prh C.T2Z@k,C [n|kLTDL-h}GIVaD; &ʷs'~bhU5Hl-Y:S+-DY<+xd+f2xeD=-&Î!m[{""UtCSdJ@sOCFr=_#%F2fDP[JeKhμOT%Y+?Dldu cxGF(}U_?ˆvٟ MF{I{s;Ti@ jΠR| 6gM9tn_Yv;|#Fu`m7Lߊ:ze N{Pȶc|`Ԝ5+-Gb,4\knhhABP7_mSQT)2lw^w}%AlBXʖΙ{J{9>%V2SGa:K}8f >k1"X)\; H{MOB&&?_ip{$vb断ipY?Y>X ?olj+tjȎ6)kR\_Kh_=ْ.ʩ!YC%5 6O*`a7dgD=$L|wyYogu+!˟;Wīr4;z<FV ˧8nTzі9r"BtBg" (6.c*{iGr)R0W1QAw[ wDN[Y=ɖ71Moxv1dZ:0B1R.r7YVJBxѿz^%NnuB` :^3gS8?e<$[w@CloEQ:0{wHW}U 2|՛QuA,"X,+ٿ1,h\~!_Fy+o] !)L3:doQn;sAؑ,ĹRKpo%,ӵ4QcM$VlG \讏Q"AW}`cfC[6u_gK//a%+w}{WE3p_ gT2m+E:._$r+C|7>x(|4MѺ~K-_ ZՎAC6>dL5|`FEr=h1[]^dޗIdo֩윸^ fAD nÔX·pSUM/}B0Lu\nv|Ra+;s hZX`szALJT7:aʉ57bh3S/PwEQ5/-K]9!5GY~?UOڻV%<3.@uXy =E!nNر$Ozt$L[ \u yT̻7E977 S,YӁ!4sY6TtC1UcK=:I+[m/v(YJ,dJ՘ 8$،g6sZ%$J5 ?6 F>\]4"+zt*Pʽ3# =6^Wm1WmU HuSn8#`֜Wb dHJ ꜋-Юo@롘1M;(;c.:ݸ(\6x-8*Gw[ⲞE?t<Ɏ#xL~t9i鰙rwg$\i?-wrP0!Q.fcެA-h9J 0prѣ}`-W.y]G8OkP(ECEr >H|#ۥi r)E/` x`C&jSۣ}bHdz,CE-;/;N󅿲[%?}c߷IPƊCm13nlLtRܕ$K ~濞!vEЋƂ6ת$]rƭfNYIjRaOv%ߜU64prYT.⌾1 ]6͓q9;vZm2yῃ5]k2Z'^EtW0{ 3+ Ť/sN۶}~\KC0m̟knQ;LG3X( h +SյRK /Lx`~wF ,>E<+n[Uuvj)X|swRI#0'pSDŽ>~:xѠ*#slzW&)V >)F( ҏ+*lLv<%IcWF ]3 Q6A+P6%{F^+FOwRYR.K'j#hBYljZX1LP9<hV7!),L)1 XR@6ز+/W\R Zg{7&AnC#߀ifZwGw߰NUapTkk%u wznol%7hI>ܲ?+?[敫!c]'C $jR^&<|0!8i)ϔ(YM7P/TO [8!t-_Dj1]&P3^Nx B 7(Q*9kn~->],3^d<3ԥijTn]+q4Oe#5һc &ݐq *hm,$xԊ5%ef n@m^q.gj)GƉߜ!+f_WE8CTg۸a4qҫFpO>s 7y,#[UbC'  hi~iʉj`.p)sѫ5-r բ_fQ 'f&5QzQ Za:3 r CSLu(\욋gXIܟMY'|LY??Z(=+zt1\ڼEYD}~©0Fi-zt/Vj2U k+(%jRU$+'nx[!َAER؟/koŧRåW]ǗAۉ3GsLeߑwyi#iCXoa \iy;d.ҵ*51 R2D'O{d U]#Tw]My(^DI2EՂPY@U!%-%ǵѺkM k?z94(ETw%Xn^=IrXXI~F;v #Ç|o<}&r )*2ybZ3ݧ [y5?(NDTԾ/vqIxʌ[}6#v5X}XXڶռLvPLA|dg8㎥bt@ll)f~֗ <g}gY_<ψ)o jejj& ˷rˍ ׸8L8:^Zu *=*;a*b]uֳ,'r1x|Y9Zewt?w;f=g=߉SDo}NՊ3 Z?xʳSy" Hj2ZV}00߃cR3od^$i<&'J+ d[ h^(4vi4%<6CR>pBM;U`Aj\J̶Ha;!(ȓ)/,IGwx3Ɗ4>,=H_t1E sS 0 z??|6y"!`B(`7S`DK^lVx;C( RT WHMkkL4o0/~ ȦEsp6D(zXS', ߱s2%_IKͮğ>s_ G{RSq杤`.vbQ!5KH/UKZB01nckBVկ~wO xp&pʬ#:^r8&Q<.KOy4}T1~~{*w@?a(tFS} ̓r k"YpL=@?o"s?2ytb gN=*W<]Awʯ vr̄9H_bp6 UX(cox>~h 1ӾnBL9<^lX~N%g 9N3֯K7MI4EZr1F}Q"SA. W())}5ϕ0z4NHB=A,Z eb>K

BqV٬vK5P + )'DX xPR"ߠ|U+n6+6m[~_T+2JMNKi%=7=%g>E"\Q@ LdP8'Mbrgdq*!+;ʔ-s0K*z-́8$\b4dPdEmvBRaDP-<[" Gqsۨ!f*l8IpPZh. \̥&0=VE5 r _r)U;W6kuc v/?_nAHq *h#aӼSPT$nNU+n O='a;A草FZEK>q%?]eͣhTT7{3CUl~A{y㵚}_]9>Q'h[foh)qJ/<9pbrvM)g;iF9fQ[f* &o nVZ>)(otcܳL.H%0g]lSq:~8v>Xi7h>H`Qܖ2hĚ*Yw: XG51bi6Fu@NY'W`%}|U.VcxRu]J$3VHahz1|p[n8'hI09NjLְ} mQÔ0WM5W( Qt`*|͛XJx%Y\1'Cs>ejN?xQi8)Goi|_\' .쇫\>wPvh],L/l&[!#$D.ϪEzv-0GɁ;tCB6Î y,Qj:N<0K yF0`xus /V"wA0[ɭ}!_}_bO&s6\V@QTԓK竷1%Mn^/]һ2̷3lAy fd1ˁI9ݮO!֧NΉ]L[͓<@Sş ~`2.` 5WO͹SIJ@] ΌʪҴN֖,uYT"H;G{F?--*TkOԫ.+ B"Zg:|R̸O:zR-ײ=/p6bxɉq "ۀ];osraK|U[ڥ"UXSr^Fu;pZjd'X3r=zvR/'gd&1۳VsRS m;(bl;t%|Xdy<'i_gG,YJQB7  Eie`#&4YfXl0\(EXOcZPlBuPκv[)Fqþ y+v}auϢA/EbPFL} ǖl+)C]nd|?OU2~^tNҶSl8$f@ k~SF2-I?$h:3_%*ښ_M{A#&뜫oFTC;`OI'`;8z~U/rצK68z(DEd{ /yY!idqO#I>4AںNZɓlЩ d87^CV8ZMF.w7<^!&l¡DAHL&P/-7&=Zؗ>p'OƹWI#~CRI\" iWȵ@i.,®dW\xsvYdՇ 6g4 nm5{N5 Ό \/H]"? hwɳ 28,""f*.I 30U+cUx”8 %nJ7)nx29Ccpo{y}aSC v Ӱ_q tTv) 藁TKh$8μe04s%|Jn|cΜlVgqاÙ(KupXuOk4M|PqMZrmjsaOs]a6#7r$RcZn0]Uyom#!REAJ4tW.՘G9ՈxhoGp\jGg!` wLw.fW/;.Ttoh=BuXK@m]e M z$HEj{?OǍ=mKrΓpMdltj@j \(?= o@tBJ<Ude0IGN1^Pktm?f=Eʹx,V砽eu(b} 6Y+Y<=0qJ>|R>RO~ D 9 +|PrrRICi ]U WmGr,U*k{h]#8zs FϣAal$ g!Buj0{EL,nJZb/LE Ԉ8(Alko(ƌy@hoM]ӠBgq7-dxegQ&!(6S֩}D_; _"[6]*/7D0ASmCK>] }{x9bNruBҎ!<\{CѾg-}pJ0Vdֺ6{YE3lX.B+)Ԏq[䯋c0+}X &BҢW*l nsޡIWJXn$w QHNft?Sd~IӓLq_nlb2#Oi0/oɫ d#$hH/PIe\&rmz6:`VU[w1eo?y`NA2cG9CpkFVeeiecZ"`4jksipN #O3 ՠ\=|HtT"Ǫ9nc@CX->B4]qATr>[HvٜA1pF"=x~vȡ\89Rʢx -t‰ٟ=UBbԪmjwZN(^p6, sbR`*e6O9 c=&RSP` b^tG%޻8jLmE֔;YD#N}Ncj Wy:Q))h߻?'4tČ>hY?n_;Y4vDj'F[gV@kG6G .p-< 01#Y2PMWRt))4`Jz6UqRi3IR4?Nfn9.'Cr[(a5~R3h#3ZޚHttiMFvK5PHGDպ5j]"AH )ZԸ6dsXrDO.pV[WK{_q?y$/y@ TȁSC1ʒ[;XLtt+r OqE%Egc|72GձTxu3Zv^dה<⎟AXE04Ax v蔒A#/QyMKCMiqPGCMqد/z؆zjiucQC$ǥEDW_<}*4R[eyi=u Y#GUDTTORqW# zލEk~*X wj醄Ӭg;cÝnp{Pw;Yҟ4rλVݑ@ >FyuT.)XxV1.Ku c_[_CX+V%Ȓۋa03-"{]t:9cy-)mUx >TWc>4D?k'FfZl`5%lU0EpaJ/.-"cAln0LQ-Sى\ybp%'IWsoUHq@z#۬JɲplQ:I8a"n\@a~_s*XQDdr|%cc[6\9̽^5Ya*)&)7y.,X,C @wzjW8ImO-=eM Y }3qJ?`a ]Ǖm1V97 l<}Xnr%'j؍.;rsw_M.`5}awNk@oσ:$2YH0 sH P+: #Ix5w9&ɗ9%T^ԾbfǞVᐫ9cvpNLe[Gshq<w2`M2,Rh֔9 era#p @/d6ԜZqq0ebY1 &&b1KĩI52wh *+lLw1vWR$;, +ol⑆)e3|? S1wʯ|F?| XзWz,wr%C\1SfwV"vcC)c&N`.Sd!? k/FnOC(l :. Z .}N6D/K{.Д 3z ߴ36Nj{(D*3VjB,^6ѱ::*D I-Mnz_CR1265^C;a$E.yUN5}OS=ma?ʩL4a5)kNrVr}8&}B_$(h(!{y[)k]9kIRA[׈-:` \* hoMof-jN#ء^ɥMEJމ+&G b-[ӧyx7|m@Uumx9j-eHeU|Ap4|҂TĪx,S8g敢d٫L5uI !j T@`ؕSNhA|I ۲E]R Ъou+* =}^J9a_Fc ++EOtV?`^9$HYw7Jwت>PG!1< `A6 Jc^jJ[bŗ<|V6 9?FHNv4o(j .!%qyMp]nH}&D-]=STEۭ_#U}c"OD0T!Q)Xav7hݜ *ݿT2;h</ J=jVMI-$MfWMFe,`¤rt:*HYSijWՆkpMMϊMdR~zNQ+ALԙa.F*ԇr)i%sj *" K,(d 'T5ϟ`EȻ@3~;ojbw2sБI-fpHl_x b |̊'8 XYCUkWInS?aWz gY7^*wGZG!s~[?Ɔg;[.'y%T9F=~C3?5fIzA5[BY<{F3-G`\=G6*zI;z`zwKR,_Csf EH~y-FpX+Ś쨮I%ͳD%~A A@hM Cq08,4E@BuGN cg&#FIQx`5sTnsU71+r+tvShF N^$Ƚ3Ta <.wU T |[ 2:c4"s_>dvF4%"Fպ4'vcAb^V\nE;g{rD TDx<ƀ|YŁWۇJ&Ov }5YK@pJRhF¹'5xBp-o[{ϲ۾}1:/i9GR_4pl/J >Ȉ ><ڕfq1MF=B#0 >vBCvxG[lN§|gj { futt3ѻ#]J_m2ֶe ,PR'?{x!5y@Bq: -v QJ:JQUK\e{oZnb;GsB[+௚@fdfB{э_ȰÝ9?pc|W8ݗF9)vԃF%h<5$/`y* KK1X\:l!Vaw%6=׍FT}CjU[/x==Sz(5X NeqvM`a!M% /.ֻhlUDf뤹&= |(c} i.#A]M;ӜƪC(7΅} Do4cߋ*WK.UDы?Fe,ktzJ<\~^APVJ:)RZݲ ǗSg\|fݦAҀg|pR8ʞY sT\ș*“k?$Nm-נM|w>~BKƲZo# 9Ⱦ7.B eֺ +ն4O4햯ȯw THٮ% l\wV V?ц}뀁KFbcQKbwhe+.gM¦|66ID$1!it'*תcOfTOm >god?U뢅 ,'bHDjQL.cx?+7ƃ Q;y푹(v=åR17@كh0׎:~m*,Trj_r#AYe L;J}̄dX4u4 ]De~?T cv8@J~d~hgeGp⢫ܴ}(دV񸈕؞)iq2,ؼR/?\yw"c7\GB=g uȫ|;\Hﱈ*U%aQr'hc?Ogvp';atJݩlH3 KOUCoH}2עv VFi[J."İ~+Q*j=zP&T!cXj bsv仇LY4Aп V5eUc=qLQu_7e[^\׃FTNO;҉p컴9=%n{݄]m#:x_}cTgvƽ ^;931GI%)Gߦ|"kK;uŸT0+l;S.~QpDʸi6I.o8,0oX$4\N.bOYzfn*`,压bdRNoJQ$c7=\V7}t^$\%-m)\`-lV\_Y6k2J/?x V)/y^CR ῄӀ/퇎m!i,;۸8 xUb d&W!rݎ [lꈢ/TPȥfp/lOЃ'D̦km^ Sϡ$LCUرǨ$,k\^BVW/*ꆌ,W"?5![} K PM"@V,xqkxi;qE)GNO@)٦l.1N}FDXqaZ-Zi uqt`GOJ;H8C ZmhW TXL(Ν}'K˻4V<3l~8hT!\&Xͭ ,2a\QA)> tFV`㖓Z# Y^SHm-Sȵ[/t; s:g}k9ϷtӞD,LYl/K; KZCݓ“,o7?s >r$ rZvy4zbҐogc*pkPеZz;yuF"7Nyf)- M |(\ZKsX6E{|ۚʞu&$K19/viYlU+~X-HL =­Ώte?Q|w\uTGզPM˗qy{҄r.1p~u-M:=ulRMČmq g~{t`xN0_ <0*Ð2fsF3Qt*œﺳ{|kJtЎGק $s l5k)^Ø =6! is_dir( WP_LANG_DIR ) ) return array(); if ( $dir && ! is_dir( WP_LANG_DIR . $dir ) ) return array(); $files = scandir( WP_LANG_DIR . $dir ); if ( ! $files ) return array(); $language_data = array(); foreach ( $files as $file ) { if ( '.' === $file[0] || is_dir( $file ) ) { continue; } if ( substr( $file, -3 ) !== '.po' ) { continue; } if ( ! preg_match( '/(?:(.+)-)?([a-z]{2,3}(?:_[A-Z]{2})?(?:_[a-z0-9]+)?).po/', $file, $match ) ) { continue; } if ( ! in_array( substr( $file, 0, -3 ) . '.mo', $files ) ) { continue; } list( , $textdomain, $language ) = $match; if ( '' === $textdomain ) { $textdomain = 'default'; } $language_data[ $textdomain ][ $language ] = wp_get_pomo_file_data( WP_LANG_DIR . "$dir/$file" ); } return $language_data; } /** * Extract headers from a PO file. * * @since 3.7.0 * * @param string $po_file Path to PO file. * @return array PO file headers. */ function wp_get_pomo_file_data( $po_file ) { $headers = get_file_data( $po_file, array( 'POT-Creation-Date' => '"POT-Creation-Date', 'PO-Revision-Date' => '"PO-Revision-Date', 'Project-Id-Version' => '"Project-Id-Version', 'X-Generator' => '"X-Generator', ) ); foreach ( $headers as $header => $value ) { // Remove possible contextual '\n' and closing double quote. $headers[ $header ] = preg_replace( '~(\\\n)?"$~', '', $value ); } return $headers; } /** * Language selector. * * @since 4.0.0 * @since 4.3.0 Introduced the `echo` argument. * * @see get_available_languages() * @see wp_get_available_translations() * * @param string|array $args { * Optional. Array or string of arguments for outputting the language selector. * * @type string $id ID attribute of the select element. Default empty. * @type string $name Name attribute of the select element. Default empty. * @type array $languages List of installed languages, contain only the locales. * Default empty array. * @type array $translations List of available translations. Default result of * wp_get_available_translations(). * @type string $selected Language which should be selected. Default empty. * @type bool|int $echo Whether to echo or return the generated markup. Accepts 0, 1, or their * bool equivalents. Default 1. * @type bool $show_available_translations Whether to show available translations. Default true. * } * @return string HTML content only if 'echo' argument is 0. */ function wp_dropdown_languages( $args = array() ) { $args = wp_parse_args( $args, array( 'id' => '', 'name' => '', 'languages' => array(), 'translations' => array(), 'selected' => '', 'echo' => 1, 'show_available_translations' => true, ) ); $translations = $args['translations']; if ( empty( $translations ) ) { require_once( ABSPATH . 'wp-admin/includes/translation-install.php' ); $translations = wp_get_available_translations(); } /* * $args['languages'] should only contain the locales. Find the locale in * $translations to get the native name. Fall back to locale. */ $languages = array(); foreach ( $args['languages'] as $locale ) { if ( isset( $translations[ $locale ] ) ) { $translation = $translations[ $locale ]; $languages[] = array( 'language' => $translation['language'], 'native_name' => $translation['native_name'], 'lang' => current( $translation['iso'] ), ); // Remove installed language from available translations. unset( $translations[ $locale ] ); } else { $languages[] = array( 'language' => $locale, 'native_name' => $locale, 'lang' => '', ); } } $translations_available = ( ! empty( $translations ) && $args['show_available_translations'] ); $output = sprintf( ''; if ( $args['echo'] ) { echo $output; } return $output; }