LanguageNameIndexer/Search: use unicode aware lowercasing

With this MEÄNKELI with typos=1 finds results.

Updated test case for lowercased result. Renamed variables in test
file for clarity. Updated the default value for MW_INSTALL_PATH to
work with the default layout.

Change-Id: Id93c84d308705f55b4d2378fc8c7b7f243e1b53f
This commit is contained in:
Niklas Laxström committed 2016-08-08 08:43:15 +02:00
1 parent 920155fb18
commit 9daeacf1c5
5 files changed
+11 -8

No files matched your search

+1 -1
View File
@@ -37,7 +37,7 @@ class LanguageNameIndexer extends Maintenance {
foreach ( $languages as $sourceLanguage => $autonym ) {
$translations = LanguageNames::getNames( $sourceLanguage, 0, 2 );
foreach ( $translations as $targetLanguage => $translation ) {
$translation = strtolower( $translation );
$translation = mb_strtolower( $translation );
$bucket = LanguageNameSearch::getIndex( $translation );
$buckets[$bucket][$translation] = $targetLanguage;
}
+4 -1
View File
@@ -29,8 +29,11 @@ class LanguageNameSearch {
self::init();
}
// Use code's mb_strtolower compatibily code for MW < 1.27
$language = Language::factory( 'en' );
// @todo: Shouldn't this be unicode aware?
$searchKey = strtolower( $searchKey );
$searchKey = $language->lc( $searchKey );
$index = self::getIndex( $searchKey );
if ( !isset( self::$languagenames[$index] ) ) {
+1 -1
View File
@@ -1 +1 @@
a:780:{i:113;a:63:{s:5:"qafar";s:2:"aa";s:14:"qırımtatarca";s:3:"crh";s:25:"qırımtatarca (latin)‎";s:8:"crh-latn";s:13:"qaraqalpaqsha";s:3:"kaa";s:14:"qabardjajəbza";s:8:"kbd-latn";s:20:"qazaqşa (latın)‎";s:7:"kk-latn";s:23:"qazaqşa (türkïya)‎";s:5:"kk-tr";s:9:"qafár af";s:2:"aa";s:7:"quechua";s:2:"qu";s:35:"quichua del altiplanu de chimborazo";s:3:"qug";s:18:"qədimi ingiliscə";s:3:"ang";s:13:"qərbi bəluc";s:3:"bgn";s:11:"qərbi friz";s:2:"fy";s:6:"qaqauz";s:3:"gag";s:8:"qalisian";s:2:"gl";s:7:"quarani";s:2:"gn";s:9:"qorontalo";s:3:"gor";s:15:"qədimi yunanca";s:3:"grc";s:7:"qucarat";s:2:"gu";s:11:"qara-qalpaq";s:3:"kaa";s:5:"qazax";s:2:"kk";s:15:"qaraçay-balkar";s:3:"krc";s:9:"qırğız";s:2:"ky";s:5:"qanda";s:2:"lg";s:13:"qədimi misir";s:3:"egy";s:18:"qədimi fransızca";s:3:"fro";s:2:"qa";s:3:"gaa";s:4:"qayo";s:3:"gay";s:6:"qabaya";s:3:"gba";s:3:"qez";s:3:"gez";s:12:"qilbert gili";s:3:"gil";s:15:"qədimi almanca";s:3:"goh";s:5:"qondi";s:3:"gon";s:5:"qrebo";s:3:"grb";s:4:"qusi";s:3:"guz";s:7:"qviçin";s:3:"gwi";s:14:"qədimi norsca";s:3:"non";s:14:"qədimi farsca";s:3:"peo";s:20:"qədimi provensialca";s:3:"pro";s:16:"qədimi irlandca";s:3:"sga";s:8:"quítxua";s:2:"qu";s:7:"quitxé";s:3:"quc";s:7:"quiché";s:3:"quc";s:9:"quechuera";s:2:"qu";s:26:"quichua du haut-chimborazo";s:3:"qug";s:28:"quichua Àrd-tìr chimborazo";s:3:"qug";s:8:"quirguiz";s:2:"ky";s:39:"quechua dell’altopiano del chimborazo";s:3:"qug";s:11:"qallunaatut";s:2:"da";s:15:"quiché-sprooch";s:3:"quc";s:14:"quechua iyápi";s:2:"qu";s:18:"ထိုင်း";s:2:"th";s:7:"quicuio";s:2:"ki";s:8:"quíchua";s:2:"qu";s:12:"quiniaruanda";s:2:"rw";s:9:"quimbundo";s:3:"kmb";s:15:"qulla sami simi";s:3:"sma";s:6:"quiche";s:3:"quc";s:12:"quyi sorbcha";s:3:"dsb";s:8:"qozoqcha";s:2:"kk";s:11:"qirgʻizcha";s:2:"ky";s:10:"quyi nemis";s:3:"nds";s:11:"quyi sakson";s:6:"nds-nl";}i:40;a:63:{s:12:"Аҧсшәа";s:2:"ab";s:16:"Адыгэбзэ";s:8:"kbd-cyrl";s:35:"Австралин ингалсан";s:5:"en-au";s:12:"Аймара";s:2:"ay";s:29:"(atorsinnaanngitsoq oqaatsit)";s:3:"und";s:21:"ម៉ាពូឈី";s:3:"arn";s:9:"មេន";s:2:"gv";s:27:"ម៉ូរីស៊ីន";s:3:"mfe";s:36:"ម៉ាឡាហ្គាស៊ី";s:2:"mg";s:15:"ម៉ោរី";s:2:"mi";s:27:"ម៉ាសេដូនី";s:2:"mk";s:21:"មលយាល័ម";s:2:"ml";s:30:"ម៉ុងហ្គោលី";s:2:"mn";s:24:"ម៉ារ៉ាធី";s:2:"mr";s:24:"ម៉ាឡេស៊ី";s:2:"ms";s:21:"ម៉ាល់តា";s:2:"mt";s:42:"ម៉ាហ្សានដឺរេនី";s:3:"mzn";s:21:"ម៉ារ៉ុក";s:3:"zgh";s:18:"ម៉ាឆាំ";s:3:"jmc";s:24:"ម៉ាកូនដេ";s:3:"kde";s:15:"ម៉ាសៃ";s:3:"mas";s:12:"មេរូ";s:3:"mer";s:39:"ម៉ាកគូវ៉ាមីតូ";s:3:"mgh";s:12:"មេតា";s:3:"mgo";s:18:"ម៊ូហាគ";s:3:"moh";s:18:"មុនដាង";s:3:"mua";s:24:"ម៉ុលដាវី";s:5:"ro-md";s:15:"갈리시아어";s:2:"gl";s:18:"Абхаастыы";s:2:"ab";s:30:"Аппырыкааныстыы";s:2:"af";s:16:"Араабтыы";s:2:"ar";s:32:"Адьырбайдьаанныы";s:2:"az";s:24:"Аҥылычаанныы";s:2:"en";s:26:"Албаанскайдыы";s:2:"sq";s:14:"Афарски";s:2:"aa";s:16:"Ачинески";s:3:"ace";s:18:"Адигејски";s:3:"ady";s:26:"Арагонежански";s:2:"an";s:12:"Ангика";s:3:"anp";s:16:"Армајски";s:3:"arc";s:20:"Астуријски";s:3:"ast";s:14:"Аварски";s:2:"av";s:12:"Авадхи";s:3:"awa";s:12:"Ајмара";s:2:"ay";s:22:"Ароманијски";s:3:"rup";s:10:"Аколи";s:3:"ach";s:22:"Адангмејски";s:3:"ada";s:20:"Авестански";s:2:"ae";s:16:"Африхили";s:3:"afh";s:8:"Аину";s:3:"ain";s:18:"Акадијски";s:3:"akk";s:8:"Аљут";s:3:"ale";s:14:"Арапахо";s:3:"arp";s:12:"Аравак";s:3:"arw";s:16:"Атсамски";s:3:"cch";s:14:"Англисӣ";s:2:"en";s:14:"Абхазча";s:2:"ab";s:18:"Африканча";s:2:"af";s:14:"Амхарча";s:2:"am";s:12:"Арабча";s:2:"ar";s:14:"Ассамча";s:2:"as";s:14:"Арманча";s:2:"hy";s:14:"Албанча";s:2:"sq";}i:98;a:920:{s:12:"bahasa ambon";s:3:"abs";s:8:"boarisch";s:3:"bar";s:10:"batak toba";s:8:"bbc-latn";s:13:"bikol central";s:3:"bcl";s:13:"bahasa betawi";s:3:"bew";s:7:"bislama";s:2:"bi";s:13:"bahasa banjar";s:3:"bjn";s:10:"bamanankan";s:2:"bm";s:9:"brezhoneg";s:2:"br";s:8:"bráhuí";s:3:"brh";s:8:"bosanski";s:2:"bs";s:15:"british english";s:5:"en-gb";s:16:"bahasa indonesia";s:2:"id";s:9:"basa jawa";s:2:"jv";s:5:"bafia";s:3:"ksf";s:15:"basa banyumasan";s:7:"map-bms";s:16:"baso minangkabau";s:3:"min";s:13:"bahasa melayu";s:2:"ms";s:15:"behase mentawei";s:3:"mwv";s:13:"bân-lâm-gú";s:10:"zh-min-nan";s:14:"bahasa selayar";s:3:"sly";s:10:"basa sunda";s:2:"su";s:6:"baskir";s:2:"ba";s:12:"belo-russies";s:2:"be";s:8:"bulgaars";s:2:"bg";s:7:"bambara";s:2:"bm";s:8:"bengaals";s:2:"bn";s:7:"Line truncated
a:773:{i:113;a:63:{s:5:"qafar";s:2:"aa";s:14:"qırımtatarca";s:3:"crh";s:25:"qırımtatarca (latin)‎";s:8:"crh-latn";s:13:"qaraqalpaqsha";s:3:"kaa";s:14:"qabardjajəbza";s:8:"kbd-latn";s:20:"qazaqşa (latın)‎";s:7:"kk-latn";s:23:"qazaqşa (türkïya)‎";s:5:"kk-tr";s:9:"qafár af";s:2:"aa";s:7:"quechua";s:2:"qu";s:35:"quichua del altiplanu de chimborazo";s:3:"qug";s:18:"qədimi ingiliscə";s:3:"ang";s:13:"qərbi bəluc";s:3:"bgn";s:11:"qərbi friz";s:2:"fy";s:6:"qaqauz";s:3:"gag";s:8:"qalisian";s:2:"gl";s:7:"quarani";s:2:"gn";s:9:"qorontalo";s:3:"gor";s:15:"qədimi yunanca";s:3:"grc";s:7:"qucarat";s:2:"gu";s:11:"qara-qalpaq";s:3:"kaa";s:5:"qazax";s:2:"kk";s:15:"qaraçay-balkar";s:3:"krc";s:9:"qırğız";s:2:"ky";s:5:"qanda";s:2:"lg";s:13:"qədimi misir";s:3:"egy";s:18:"qədimi fransızca";s:3:"fro";s:2:"qa";s:3:"gaa";s:4:"qayo";s:3:"gay";s:6:"qabaya";s:3:"gba";s:3:"qez";s:3:"gez";s:12:"qilbert gili";s:3:"gil";s:15:"qədimi almanca";s:3:"goh";s:5:"qondi";s:3:"gon";s:5:"qrebo";s:3:"grb";s:4:"qusi";s:3:"guz";s:7:"qviçin";s:3:"gwi";s:14:"qədimi norsca";s:3:"non";s:14:"qədimi farsca";s:3:"peo";s:20:"qədimi provensialca";s:3:"pro";s:16:"qədimi irlandca";s:3:"sga";s:8:"quítxua";s:2:"qu";s:7:"quitxé";s:3:"quc";s:7:"quiché";s:3:"quc";s:9:"quechuera";s:2:"qu";s:26:"quichua du haut-chimborazo";s:3:"qug";s:28:"quichua àrd-tìr chimborazo";s:3:"qug";s:8:"quirguiz";s:2:"ky";s:39:"quechua dell’altopiano del chimborazo";s:3:"qug";s:11:"qallunaatut";s:2:"da";s:15:"quiché-sprooch";s:3:"quc";s:14:"quechua iyápi";s:2:"qu";s:18:"ထိုင်း";s:2:"th";s:7:"quicuio";s:2:"ki";s:8:"quíchua";s:2:"qu";s:12:"quiniaruanda";s:2:"rw";s:9:"quimbundo";s:3:"kmb";s:15:"qulla sami simi";s:3:"sma";s:6:"quiche";s:3:"quc";s:12:"quyi sorbcha";s:3:"dsb";s:8:"qozoqcha";s:2:"kk";s:11:"qirgʻizcha";s:2:"ky";s:10:"quyi nemis";s:3:"nds";s:11:"quyi sakson";s:6:"nds-nl";}i:72;a:238:{s:12:"аҧсшәа";s:2:"ab";s:16:"адыгабзэ";s:8:"ady-cyrl";s:8:"авар";s:2:"av";s:16:"адыгэбзэ";s:8:"kbd-cyrl";s:18:"абхазская";s:2:"ab";s:20:"адыгейская";s:3:"ady";s:18:"афрыкаанс";s:2:"af";s:8:"акан";s:2:"ak";s:18:"амхарская";s:2:"am";s:20:"арагонская";s:2:"an";s:16:"арабская";s:2:"ar";s:20:"арамейская";s:3:"arc";s:16:"асамская";s:2:"as";s:22:"астурыйская";s:3:"ast";s:16:"аварская";s:2:"av";s:12:"аймара";s:2:"ay";s:30:"азербайджанская";s:2:"az";s:20:"англійская";s:2:"en";s:34:"англійская (канад.)";s:5:"en-ca";s:18:"армянская";s:2:"hy";s:10:"арома";s:2:"om";s:20:"асецінская";s:2:"os";s:18:"албанская";s:2:"sq";s:8:"агем";s:3:"agq";s:16:"акадзкая";s:3:"akk";s:16:"алеуцкая";s:3:"ale";s:6:"асу";s:3:"asa";s:38:"англійская (аўстрал.)";s:5:"en-au";s:29:"англійская (зша)";s:5:"en-us";s:14:"аджыбве";s:2:"oj";s:16:"абхаская";s:2:"ab";s:30:"азэрбайджанская";s:2:"az";s:39:"аўстрыйская нямецкая";s:5:"de-at";s:35:"афіцыйная нямецкая";s:9:"de-formal";s:20:"ангельская";s:2:"en";s:20:"асэтынская";s:2:"os";s:20:"альбанская";s:2:"sq";s:47:"аўстралійская ангельская";s:5:"en-au";s:45:"амэрыканская ангельская";s:5:"en-us";s:8:"афар";s:2:"aa";s:14:"абхазки";s:2:"ab";s:14:"ачински";s:3:"ace";s:10:"адиге";s:3:"ady";s:18:"африкаанс";s:2:"af";s:16:"амхарски";s:2:"am";s:18:"арагонски";s:2:"an";s:12:"ангика";s:3:"anp";s:14:"арабски";s:2:"ar";s:18:"арамейски";s:3:"arc";s:14:"асамски";s:2:"as";s:16:"астурски";s:3:"ast";s:14:"аварски";s:2:"av";s:10:"авади";s:3:"awa";s:28:"азербайджански";s:2:"az";s:18:"английски";s:2:"en";s:16:"арменски";s:2:"hy";s:18:"арумънски";s:3:"rup";s:16:"албански";s:2:"sq";s:10:"аколи";s:3:"ach";s:14:"адангме";s:3:"ada";s:16:"авестски";s:2:"ae";s:16:"африхили";s:3:"afh";s:8:"айну";s:3:"ain";s:14:"акадски";s:3:"akk";s:16:"алеутски";s:3:"ale";s:14:"арапахо";s:3:"arp";s:12:"аравак";s:3:"arw";s:10:"атсам";s:3:"cch";s:27:"английски (сащ)";s:5:"en-us";s:18:"абхазхойн";s:2:"ab";s:16:"амхаройн";s:2:"am";s:22:"арауканхойн";s:3:"arn";s:16:"ассамийн";s:2:"as";s:28:"азербайджанийн";s:2:"az";s:29:"австрин немцойн";s:5:"de-at";s:16:"албанойн";s:2:"sq";s:21:"атта китайн";s:7:"zh-hans";s:12:"агхӀем";s:3:"agq";s:35:"австралин ингалсан";s:5:"en-au";s:33:"американ ингалсан";s:5:"en-us";s:20:"а҆ра́вскїй";s:2:"ar";s:45:"а҆ѵстрі́йскїй нѣме́цкїй";s:5:"de-at";s:24:"а҆нглі́йскїй";s:2:"en";s:55:"а҆ѵстралі́Line truncated
+4 -4
View File
@@ -19,12 +19,12 @@
*/
require_once __DIR__ . '/../../data/LanguageNameSearch.php';
class LanguageSearchTest extends PHPUnit_Framework_TestCase {
/**
* @dataProvider searchDataProvider
*/
public function testSearch( $searchKey, $result ) {
$this->assertEquals( $result, LanguageNameSearch::search( $searchKey, 1 ) );
public function testSearch( $searchKey, $expected ) {
$actual = LanguageNameSearch::search( $searchKey, 1 );
$this->assertEquals( $expected, $actual );
}
public function searchDataProvider() {
@@ -40,7 +40,7 @@ class LanguageSearchTest extends PHPUnit_Framework_TestCase {
]
],
[ 'Φινλαν', [
'fi' => 'Φινλανδικά',
'fi' => 'φινλανδικά',
]
],
[ 'blah', []
+1 -1
View File
@@ -1,5 +1,5 @@
ifndef MW_INSTALL_PATH
MW_INSTALL_PATH=../../..
MW_INSTALL_PATH=../../../..
endif
default: