Select a friendly sub-language while acquiring system messages if the uselang has...
authorPhilip Tzou <philip@users.mediawiki.org>
Tue, 30 Nov 2010 03:04:47 +0000 (03:04 +0000)
committerPhilip Tzou <philip@users.mediawiki.org>
Tue, 30 Nov 2010 03:04:47 +0000 (03:04 +0000)
includes/MessageCache.php
languages/Language.php

index 1e98d5a..7f2c613 100644 (file)
@@ -550,7 +550,7 @@ class MessageCache {
                        throw new MWException( "Bad lang code $langcode given" );
                }
 
-               $langcode = $lang->getCode();
+               $langcode = $lang->getCodeForMessage();
 
                $message = false;
 
index 73acd36..89531d6 100644 (file)
@@ -1545,11 +1545,11 @@ class Language {
        }
 
        function getMessage( $key ) {
-               return self::$dataCache->getSubitem( $this->mCode, 'messages', $key );
+               return self::$dataCache->getSubitem( $this->getCodeForMessage(), 'messages', $key );
        }
 
        function getAllMessages() {
-               return self::$dataCache->getItem( $this->mCode, 'messages' );
+               return self::$dataCache->getItem( $this->getCodeForMessage(), 'messages' );
        }
 
        function iconv( $in, $out, $string ) {
@@ -2764,6 +2764,18 @@ class Language {
        function getCode() {
                return $this->mCode;
        }
+       
+       /**
+        * Get langcode for message
+        * Some language, like Chinese (zh, without any suffix), has multiple
+        * interface languages, we could choose a better one for user.
+        * Inherit class can override this function if necessary.
+        *
+        * @return string
+        */
+       function getCodeForMessage() {
+               return $this->getPreferredVariant();
+       }
 
        function setCode( $code ) {
                $this->mCode = $code;