͂%bghoN˷}B&W CV+p772D"Ca$ǪX+:9Ci~JjۭkOn'VTLip[Vi2bY붉~zc#( Gg[4fYF)*r@p AWJ+enhI߰Eq-]_%rA⬀{HwR'ܺZa=fá (CQoΛѴr u]V$03~O4X2uM=V[`mkDLD? t%3-88 ,\q2(gM03,Q|ÄpOr^Lq b2wjsTLGAidߎ ]ٍ:"^?#t‡5ey n&)@:v7PE9F3Vs+y^d#vbW 2YəMC]9;C.׿Mto5˕l>c,(Yk :`f[4}R*c86?J[1Q_T;VZU4[UV5X*TӬ\*O [-Vp `8F3Vs+y^d#Rx?]\@T^f ON"=&ceoC KwCZ'1.W!\!v_nNpW| >P7tbi̐W`PU=^jI|TUm5{|eVCЅZ&ZL1%`bHrOh eegі~`]4spɪ5~{"FI1/ftq_i.nzBI@}2s=oҢ`$"&el(n=eab끞H8 6yaU^?/}*"ܨvo RXS!4Q 2 ΧlrzЗ^dSM8n ASM]6tOkV\aDs $v#KD[9=WI 8w4BjB']s1+''d9ae,UcW/NW>{- 㪻)p1KI8hc)8]TҐZ.a ٟi>a*6!,f.m^hXBg#I܂+TV|^1XJźXئ?1}?Ϝj0϶#{A"xiֲ`…X\[C[QH}鷘4zznYmx|4Pfi]I6&rđyvҀg6",QhCl: SSlqY="p)h: b˺wlDw ĢQ$3x_Q`f"0Wq"G"Ǣw4CGv]Q}c04_[PKnx?Ҍ;DbMߐJe g\W^h~HkM8c*jp{Eư-iWx;$K'+62|v>}X:;Vx2-:v\ iY&f5a1gRL]m^i1L5:&Xk5PQ/"Iv-̊Q +d! (Y,tNm3Ąޏv$Xp(W>x3aX3t-k.|Qr7reTz-J߽P]NoWܖQې{PCXz" /;yRs WcSm@%_2 Ek+TB*NwR5Lst֞&0Ač{C#`jG**Ɣ^eB)ҬX?7eS#EUQyCpUtnFjÃ.;+Dǔ{=lVY9%QՐ` b{\| ,/F ;|Ь^)i8E' |*w"aٳeΏVb(A6iXѠԸ-BFmi T&*s$ /QfJZv`+DYz*O('4 U-޴@%_+7[7 u,R+1-QlgQ˚e<"Yf\uX4Xi CH8$lZk'2^hRRwmjvxeʞaWP+*WjV_!ō(p]%Ν2[ 2„dt(k* !׬- Wҭ;!~v$Khة~ F6`aajV#J= 'xeq[lr27&ޗ( z`FJXč~兝v5^YuwV EiowSv=X)s˹dsHJ1)Ϳ;+ u,zOO%p,8 K,}B4~??AoxnWfU\*1blt&U_W񛭨6o : $]1s\xCn[UtFx23BaV6;*_FŖ}cOZ*&j7򠏨֍ka(i|wtÚ=o&)$#x,;Z21."}Vp0v:ix+pb f5.T)ʿo㯸'(Eu1/A)EuӐ^ܯ37Xڕmp*.l7ԃsH|lB,{T8#d1D+g\A h."g^ñ!R4@LmЊAP J}?\:W q:,T6U:\l"6Kl)\M[/խg+8h` .ez4isݑv6A`e3RJaA#AriJO-VPR4@Lm1#$0干/hUJu?78qqe,bMD?gĘVtWUӘzF/&_k9;Ԁñ?L4Z'j"k^* 7˙s4ϻ-qr4| language * @note Loads the original language into cache * @param string $code language code * @return string|bool */ public function getFallbackFor($code) { $this->loadLanguage($code); return $this->cache[$code]['fallback']; } /** * Loads language into the cache, handles message file and fallbacks * @param string $code language code */ public function loadLanguage($code) { static $languages_seen = array(); // recursion guard // abort if we've already loaded it if (isset($this->cache[$code])) { return; } // generate filename $filename = $this->dir . '/Language/messages/' . $code . '.php'; // default fallback : may be overwritten by the ensuing include $fallback = ($code != 'en') ? 'en' : false; // load primary localisation if (!file_exists($filename)) { // skip the include: will rely solely on fallback $filename = $this->dir . '/Language/messages/en.php'; $cache = array(); } else { include $filename; $cache = compact($this->keys); } // load fallback localisation if (!empty($fallback)) { // infinite recursion guard if (isset($languages_seen[$code])) { trigger_error( 'Circular fallback reference in language ' . $code, E_USER_ERROR ); $fallback = 'en'; } $language_seen[$code] = true; // load the fallback recursively $this->loadLanguage($fallback); $fallback_cache = $this->cache[$fallback]; // merge fallback with current language foreach ($this->keys as $key) { if (isset($cache[$key]) && isset($fallback_cache[$key])) { if (isset($this->mergeable_keys_map[$key])) { $cache[$key] = $cache[$key] + $fallback_cache[$key]; } elseif (isset($this->mergeable_keys_list[$key])) { $cache[$key] = array_merge($fallback_cache[$key], $cache[$key]); } } else { $cache[$key] = $fallback_cache[$key]; } } } // save to cache for later retrieval $this->cache[$code] = $cache; return; } } // vim: et sw=4 sts=4