Follow r77452, r80492. Avoid to find sub-languages when load css/js messages.
authorPhilip Tzou <philip@users.mediawiki.org>
Wed, 16 Feb 2011 14:18:43 +0000 (14:18 +0000)
committerPhilip Tzou <philip@users.mediawiki.org>
Wed, 16 Feb 2011 14:18:43 +0000 (14:18 +0000)
includes/MessageCache.php
languages/Language.php

index 0650f1f..69cffe4 100644 (file)
@@ -576,17 +576,6 @@ class MessageCache {
                        return false;
                }
 
-               $lang = wfGetLangObj( $langcode );
-               if ( !$lang ) {
-                       throw new MWException( "Bad lang code $langcode given" );
-               }
-
-               // Don't change getPreferredVariant() to getCode() / mCode, for
-               // more details, see the comment in Language::getMessage().
-               $langcode = $lang->getPreferredVariant();
-
-               $message = false;
-
                # Normalise title-case input (with some inlining)
                $lckey = str_replace( ' ', '_', $key );
                if ( ord( $key ) < 128 ) {
@@ -597,6 +586,31 @@ class MessageCache {
                        $uckey = $wgContLang->ucfirst( $lckey );
                }
 
+               $lang = wfGetLangObj( $langcode );
+               if ( !$lang ) {
+                       throw new MWException( "Bad lang code $langcode given" );
+               }
+
+               /**
+                * Find a suitable sub-language to present the message to user,
+                * but prevent doing it if the message is for css/js.
+                *
+                * Some language like Chinese has multiple variant languages. Only
+                * getPreferredVariant() (in LanguageConverter) could return such
+                * sub-language. It won't effect other languages without variants.
+                */
+               $title = Title::newFromText( $uckey, NS_MEDIAWIKI );
+               if ( !$title->isCssOrJsPage() ) {
+                       $langcode = $lang->getPreferredVariant();
+                       if ( $langcode != $lang->getCode() ) {
+                               $lang = wfGetLangObj( $langcode );
+                       }
+               } else {
+                       $langcode = $lang->getCode();
+               }
+
+               $message = false;
+
                /**
                 * Record each message request, but only once per request.
                 * This information is not used unless $wgAdaptiveMessageCache
index 10bb29d..76d8fd9 100644 (file)
@@ -1613,21 +1613,11 @@ class Language {
        }
 
        function getMessage( $key ) {
-               // Don't change getPreferredVariant() to getCode() / mCode, because:
-
-               // 1. Some language like Chinese has multiple variant languages. Only
-               //    getPreferredVariant() (in LanguageConverter) could return a
-               //    sub-language which would be more suitable for the user.
-               // 2. To languages without multiple variants, getPreferredVariant()
-               //    (in FakeConverter) functions exactly same as getCode() / mCode,
-               //    it won't break anything.
-
-               // The same below.
-               return self::$dataCache->getSubitem( $this->getPreferredVariant(), 'messages', $key );
+               return self::$dataCache->getSubitem( $this->mCode, 'messages', $key );
        }
 
        function getAllMessages() {
-               return self::$dataCache->getItem( $this->getPreferredVariant(), 'messages' );
+               return self::$dataCache->getItem( $this->mCode, 'messages' );
        }
 
        function iconv( $in, $out, $string ) {