Merge "mediawiki.js: Minor clean up of comments and code"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 12 Dec 2013 05:01:14 +0000 (05:01 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 12 Dec 2013 05:01:14 +0000 (05:01 +0000)
includes/AutoLoader.php
includes/Collation.php

index ca40d1e..58c8461 100644 (file)
@@ -50,6 +50,7 @@ $wgAutoloadLocalClasses = array(
        'ChangeTags' => 'includes/ChangeTags.php',
        'ChannelFeed' => 'includes/Feed.php',
        'Collation' => 'includes/Collation.php',
+       'CollationCkb' => 'includes/Collation.php',
        'ConcatenatedGzipHistoryBlob' => 'includes/HistoryBlob.php',
        'Cookie' => 'includes/Cookie.php',
        'CookieJar' => 'includes/Cookie.php',
index b0688f5..7204f31 100644 (file)
@@ -47,6 +47,8 @@ abstract class Collation {
                                return new IdentityCollation;
                        case 'uca-default':
                                return new IcuCollation( 'root' );
+                       case 'xx-uca-ckb':
+                               return new CollationCkb;
                        default:
                                $match = array();
                                if ( preg_match( '/^uca-([a-z@=-]+)$/', $collationName, $match ) ) {
@@ -350,7 +352,7 @@ class IcuCollation extends Collation {
                }
 
                $cache = wfGetCache( CACHE_ANYTHING );
-               $cacheKey = wfMemcKey( 'first-letters', $this->locale );
+               $cacheKey = wfMemcKey( 'first-letters', $this->locale, $this->digitTransformLanguage->getCode() );
                $cacheEntry = $cache->get( $cacheKey );
 
                if ( $cacheEntry && isset( $cacheEntry['version'] )
@@ -615,3 +617,17 @@ class IcuCollation extends Collation {
                }
        }
 }
+
+/**
+ * Workaround for the lack of support of Sorani Kurdish / Central Kurdish language ('ckb') in ICU.
+ *
+ * Uses the same collation rules as Persian / Farsi ('fa'), but different characters for digits.
+ */
+class CollationCkb extends IcuCollation {
+       function __construct() {
+               // This will set $locale and collators, which affect the actual sorting order
+               parent::__construct( 'fa' );
+               // Override the 'fa' language set by parent constructor, which affects #getFirstLetterData()
+               $this->digitTransformLanguage = Language::factory( 'ckb' );
+       }
+}