45 if ( $this->
getConfig()->
get( MainConfigNames::ExtraLanguageNames ) !== [] ) {
46 $this->
fatalError(
'You have entries in $wgExtraLanguageNames. Needs to be empty for this script.' );
51 $languageNames[
'autonyms' ] = LanguageUtil::get()->getAutonyms();
57 ->getLanguageNames( LanguageNameUtils::AUTONYMS, LanguageNameUtils::ALL );
58 foreach ( array_keys( $mwLanguages ) as $languageCode ) {
61 $languageNames[ $languageCode ] = LanguageNames::getNames( $languageCode, 0, 2 );
65 foreach ( $languageNames as $translations ) {
66 foreach ( $translations as $targetLanguage => $translation ) {
67 $translation = mb_strtolower( $translation );
68 $translation = trim( $translation );
73 $basicForm = preg_replace(
'/\(.+\)$/',
'', $translation );
74 $words = preg_split(
'/[\s]+/u', $basicForm, -1, PREG_SPLIT_NO_EMPTY );
76 foreach ( $words as $index => $word ) {
77 $bucket = LanguageNameSearch::getIndex( $word );
80 $display = $translation;
83 if ( mb_strlen( $word ) < 3 ) {
88 $display =
"$word — $translation";
90 $buckets[$bucket][$type][$display] = $targetLanguage;
100 $specialLanguages = [
102 'abr' => [
'bono',
'brong' ],
104 'ach' => [
'leb acoli' ],
106 'ayh' => [
'حضرمية' ],
108 'ca' => [
'valencia' ],
110 'cdo' => [
'chinese min dong' ],
112 'cko' => [
'chakosi',
'chokosi',
'tchokossi' ],
116 'dtp' => [
'bundu-liwan, dusun' ],
118 'es' => [
'castellano' ],
120 'hy' => [
'hayeren' ],
122 'ja' => [
'nihongo',
'にほんご' ],
124 'jv-java' => [
'jawa hanacaraka' ],
126 'ka' => [
'kartuli',
'qartuli' ],
131 'laj' => [
'leb lango',
'lango, leb' ],
133 'lue' => [
'luvale, chi-' ],
135 'shn' => [
'ၽႃႇသႃႇတႆး',
'လိၵ်ႈတႆး' ],
159 'mnw' => [
'ဘာသာ မန်' ],
164 'mui' => [
'musi palembang' ],
166 'pnb' => [
'punjabi western' ],
168 'tdd' => [
'ᥖᥭᥰᥖᥬᥳᥑᥨᥒᥰ' ],
170 'wlx' => [
'waali',
'waalii' ],
173 'zh-hans' => [
'chinese simplified' ],
174 'zh-hant' => [
'chinese traditional' ],
176 'zh-min-nan' => [
'chinese min nan' ],
179 foreach ( $specialLanguages as $targetLanguage => $translations ) {
180 foreach ( $translations as $translation ) {
181 $bucket = LanguageNameSearch::getIndex( $translation );
182 $buckets[$bucket][
'prefix'][$translation] = $targetLanguage;
192 foreach ( $buckets as &$bucketTypes ) {
193 $lengths[] = array_sum( array_map(
'count', $bucketTypes ) );
195 krsort( $bucketTypes );
197 foreach ( $bucketTypes as &$bucket ) {
202 $count = count( $buckets );
203 $min = min( $lengths );
204 $max = max( $lengths );
205 $median = $lengths[ceil( $count / 2 )];
206 $avg = array_sum( $lengths ) / $count;
207 $this->
output(
"Bucket stats:\n - $count buckets\n - smallest has $min entries\n" );
208 $this->
output(
" - largest has $max entries\n - median size is $median entries\n" );
209 $this->
output(
" - average size is $avg entries\n" );
211 $this->generateFile( $buckets );