From 881214d130cda0fd4cb617be4a613ad047716f9c Mon Sep 17 00:00:00 2001 From: Philip Tzou Date: Tue, 30 Nov 2010 03:04:47 +0000 Subject: [PATCH] Select a friendly sub-language while acquiring system messages if the uselang has multiple variants available for use. --- includes/MessageCache.php | 2 +- languages/Language.php | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/includes/MessageCache.php b/includes/MessageCache.php index 1e98d5a3cb..7f2c613255 100644 --- a/includes/MessageCache.php +++ b/includes/MessageCache.php @@ -550,7 +550,7 @@ class MessageCache { throw new MWException( "Bad lang code $langcode given" ); } - $langcode = $lang->getCode(); + $langcode = $lang->getCodeForMessage(); $message = false; diff --git a/languages/Language.php b/languages/Language.php index 73acd36523..89531d6ac5 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -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; -- 2.20.1