Sorry I'm not very familiar with mail-list. Now I post the diff to my wiki
page. Sorry if I have flooded this list.

http://zh.wikipedia.org/wiki/User:PhiLiP/interfaceproposal.diff

2010/11/29 Philip Tzou <[email protected]>

> If you can't download the diff attachment, here it is:
>
>
> Index: includes/MessageCache.php
>> ===================================================================
>> --- includes/MessageCache.php    (版本 77398)
>> +++ includes/MessageCache.php    (工作副本)
>> @@ -550,7 +550,7 @@
>>              throw new MWException( "Bad lang code $langcode given" );
>>          }
>>
>> -        $langcode = $lang->getCode();
>> +        $langcode = $lang->getCodeForMessage();
>>
>>          $message = false;
>>
>> Index: languages/Language.php
>> ===================================================================
>> --- languages/Language.php    (版本 77398)
>> +++ languages/Language.php    (工作副本)
>> @@ -1545,11 +1545,11 @@
>>      }
>>
>>      function getMessage( $key ) {
>> -        return self::$dataCache->getSubitem( $this->mCode, 'messages',
>> $key );
>> +        return self::$dataCache->getSubitem( $this->mCodeForMessage,
>> 'messages', $key );
>>      }
>>
>>      function getAllMessages() {
>> -        return self::$dataCache->getItem( $this->mCode, 'messages' );
>> +        return self::$dataCache->getItem( $this->mCodeForMessage,
>> 'messages' );
>>      }
>>
>>      function iconv( $in, $out, $string ) {
>> @@ -2764,6 +2764,26 @@
>>      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.
>> +     *
>> +     * @return string
>> +     */
>> +    function getCodeForMessage() {
>> +        // cache the result
>> +        if ( !isset( $this->mCodeForMessage ) ) {
>> +            if ( $this->hasVariants() ) {
>> +                return $this->mCodeForMessage =
>> $this->getPreferredVariant();
>> +            } else {
>> +                return $this->mCodeForMessage = $this->mCode;
>> +            }
>> +        } else {
>> +            return $this->mCodeForMessage;
>> +        }
>> +    }
>>
>>      function setCode( $code ) {
>>          $this->mCode = $code;
>>
>
>
> 2010/11/29 Philip Tzou <[email protected]>
>
> We had confused "uselang" and "variant" for a long time until the releasing
>> of 1.16. But the distinction has introduced new problems to variants-enabled
>> language wiki. Now we can not convert the interface text even under the main
>> code (like *zh* for Chinese wiki). I plan to commit a patch to
>> Language.php and MessageCache.php but I'm not completely sure whether it
>> would affect on MediaWiki's message cache. Can somebody known message cache
>> better than me takes a "previous review" before I committed?
>>
>> Philip Tzou
>>
>
>
_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to