}
function getFallbackLanguageCode() {
- $this->load();
- return $this->fallback;
+ return self::getFallbackFor( $this->mCode );
}
/**
# Try the global cache
$memcKey = wfMemcKey('localisation', $code );
+ $fbMemcKey = wfMemcKey('fallback', $cache['fallback'] );
$cache = $wgMemc->get( $memcKey );
if ( $cache ) {
if ( self::isLocalisationOutOfDate( $cache ) ) {
$wgMemc->delete( $memcKey );
+ $wgMemc->delete( $fbMemcKey );
$cache = false;
wfDebug( "Language::loadLocalisation(): localisation cache for $code had expired\n" );
} else {
self::$mLocalisationCache[$code] = $cache;
if ( !$disableCache ) {
$wgMemc->set( $memcKey, $cache );
+ $wgMemc->set( $fbMemcKey, $cache['fallback'] );
}
wfProfileOut( __METHOD__ );
* Get the fallback for a given language
*/
static function getFallbackFor( $code ) {
+ global $wgMemc;
+ $memcKey = wfMemcKey('fallback', $code );
+ $fbcode = $wgMemc->get( $memcKey );
+
+ if ( $fbcode !== null ) {
+ wfDebug( __METHOD__ . ": got fallback for $code from memc: $fbcode\n" );
+ return $fbcode;
+ }
+
self::loadLocalisation( $code );
- return self::$mLocalisationCache[$code]['fallback'];
+ $fbcode = self::$mLocalisationCache[$code]['fallback'];
+ $wgMemc->set( $memcKey, $fbcode );
+ return $fbcode;
}
/**