);
/**
- * Get a language object for a given language code
+ * Get a cached language object for a given language code
*/
static function factory( $code ) {
- global $IP;
- static $recursionLevel = 0;
-
- if ( isset( self::$mLangObjCache[$code] ) ) {
- return self::$mLangObjCache[$code];
+ if ( !isset( self::$mLangObjCache[$code] ) ) {
+ self::$mLangObjCache[$code] = self::newFromCode( $code );
}
+ return self::$mLangObjCache[$code];
+ }
+ /**
+ * Create a language object for a given language code
+ */
+ protected static function newFromCode( $code ) {
+ global $IP;
+ static $recursionLevel = 0;
if ( $code == 'en' ) {
$class = 'Language';
} else {
if( ! class_exists( $class ) ) {
$fallback = Language::getFallbackFor( $code );
++$recursionLevel;
- $lang = Language::factory( $fallback );
+ $lang = Language::newFromCode( $fallback );
--$recursionLevel;
$lang->setCode( $code );
} else {
$lang = new $class;
}
-
- self::$mLangObjCache[$code] = $lang;
return $lang;
}