Language object cache, for faster wfMsg() performance with unusual languages, and...
authorTim Starling <tstarling@users.mediawiki.org>
Tue, 11 Nov 2008 23:26:07 +0000 (23:26 +0000)
committerTim Starling <tstarling@users.mediawiki.org>
Tue, 11 Nov 2008 23:26:07 +0000 (23:26 +0000)
languages/Language.php

index 78e71a0..4386a42 100644 (file)
@@ -74,6 +74,7 @@ class Language {
        static public $mMergeableAliasListKeys = array( 'specialPageAliases' );
 
        static public $mLocalisationCache = array();
+       static public $mLangObjCache = array();
 
        static public $mWeekdayMsgs = array(
                'sunday', 'monday', 'tuesday', 'wednesday', 'thursday',
@@ -130,12 +131,16 @@ class Language {
        );
 
        /**
-        * Create a language object for a given language code
+        * Get a 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 ( $code == 'en' ) {
                        $class = 'Language';
                } else {
@@ -163,6 +168,7 @@ class Language {
                        $lang = new $class;
                }
 
+               self::$mLangObjCache[$code] = $lang;
                return $lang;
        }