Implement LanguageConverter for sh.wiki
This patch will implement a one-way transliterator (Latin->Cyrillic), per community consensus. Bug: T268033 Change-Id: I6f3e7efe3630e9960584dca3a5ee55cb92ea722c Co-Authored-By: Deni <deni@deni.dk> Co-Authored-By: Winston Sung <winston21.sung@gmail.com>
This commit is contained in:
parent
bb228fff7e
commit
a573bea01b
15 changed files with 539 additions and 237 deletions
|
|
@ -2337,6 +2337,7 @@ $wgAutoloadLocalClasses = [
|
|||
'SendPasswordResetEmailUpdate' => __DIR__ . '/includes/deferred/SendPasswordResetEmailUpdate.php',
|
||||
'SerializedValueContainer' => __DIR__ . '/includes/libs/objectcache/serialized/SerializedValueContainer.php',
|
||||
'SevenZipStream' => __DIR__ . '/maintenance/includes/SevenZipStream.php',
|
||||
'ShConverter' => __DIR__ . '/includes/language/converters/ShConverter.php',
|
||||
'ShiConverter' => __DIR__ . '/includes/language/converters/ShiConverter.php',
|
||||
'ShowJobs' => __DIR__ . '/maintenance/showJobs.php',
|
||||
'ShowSiteStats' => __DIR__ . '/maintenance/showSiteStats.php',
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ abstract class LanguageConverter implements ILanguageConverter {
|
|||
'iu',
|
||||
'kk',
|
||||
'ku',
|
||||
'sh',
|
||||
'shi',
|
||||
'sr',
|
||||
'tg',
|
||||
|
|
@ -73,6 +74,7 @@ abstract class LanguageConverter implements ILanguageConverter {
|
|||
'iu' => 'iu',
|
||||
'kk' => 'kk',
|
||||
'ku' => 'ku',
|
||||
'sh' => 'sh-latn',
|
||||
'shi' => 'shi',
|
||||
'sr' => 'sr',
|
||||
'tg' => 'tg',
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ use KkConverter;
|
|||
use KuConverter;
|
||||
use Language;
|
||||
use MediaWiki\StubObject\StubUserLang;
|
||||
use ShConverter;
|
||||
use ShiConverter;
|
||||
use SrConverter;
|
||||
use TgConverter;
|
||||
|
|
@ -73,6 +74,9 @@ class LanguageConverterFactory {
|
|||
'shi' => [
|
||||
'class' => ShiConverter::class,
|
||||
],
|
||||
'sh' => [
|
||||
'class' => ShConverter::class,
|
||||
],
|
||||
'sr' => [
|
||||
'class' => SrConverter::class,
|
||||
],
|
||||
|
|
|
|||
156
includes/language/converters/ShConverter.php
Normal file
156
includes/language/converters/ShConverter.php
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
<?php
|
||||
/**
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*
|
||||
* @file
|
||||
*/
|
||||
|
||||
/**
|
||||
* Converts Serbo-Croatian from Latin script to Cyrillic script
|
||||
*
|
||||
* @ingroup Languages
|
||||
*/
|
||||
class ShConverter extends LanguageConverter {
|
||||
|
||||
/**
|
||||
* @var string[]
|
||||
*/
|
||||
private $mToCyrillic = [
|
||||
'dž' => 'џ',
|
||||
'lj' => 'љ',
|
||||
'nj' => 'њ',
|
||||
'Dž' => 'Џ',
|
||||
'DŽ' => 'Џ',
|
||||
'Lj' => 'Љ',
|
||||
'LJ' => 'Љ',
|
||||
'Nj' => 'Њ',
|
||||
'NЈ' => 'Њ',
|
||||
|
||||
'a' => 'а',
|
||||
'b' => 'б',
|
||||
'c' => 'ц',
|
||||
'č' => 'ч',
|
||||
'ć' => 'ћ',
|
||||
'd' => 'д',
|
||||
'đ' => 'ђ',
|
||||
'e' => 'е',
|
||||
'f' => 'ф',
|
||||
'g' => 'г',
|
||||
'h' => 'х',
|
||||
'i' => 'и',
|
||||
'j' => 'ј',
|
||||
'k' => 'к',
|
||||
'l' => 'л',
|
||||
'm' => 'м',
|
||||
'n' => 'н',
|
||||
'o' => 'о',
|
||||
'p' => 'п',
|
||||
'r' => 'р',
|
||||
's' => 'с',
|
||||
'š' => 'ш',
|
||||
't' => 'т',
|
||||
'u' => 'у',
|
||||
'v' => 'в',
|
||||
'z' => 'з',
|
||||
'ž' => 'ж',
|
||||
|
||||
'A' => 'А',
|
||||
'B' => 'Б',
|
||||
'C' => 'Ц',
|
||||
'Č' => 'Ч',
|
||||
'Ć' => 'Ћ',
|
||||
'D' => 'Д',
|
||||
'Đ' => 'Ђ',
|
||||
'E' => 'Е',
|
||||
'F' => 'Ф',
|
||||
'G' => 'Г',
|
||||
'H' => 'Х',
|
||||
'I' => 'И',
|
||||
'J' => 'Ј',
|
||||
'K' => 'К',
|
||||
'L' => 'Л',
|
||||
'M' => 'М',
|
||||
'N' => 'Н',
|
||||
'O' => 'О',
|
||||
'P' => 'П',
|
||||
'R' => 'Р',
|
||||
'S' => 'С',
|
||||
'Š' => 'Ш',
|
||||
'T' => 'Т',
|
||||
'U' => 'У',
|
||||
'V' => 'В',
|
||||
'Z' => 'З',
|
||||
'Ž' => 'Ж',
|
||||
];
|
||||
|
||||
/** @inheritDoc */
|
||||
public function getMainCode(): string {
|
||||
return 'sh';
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
public function getLanguageVariants(): array {
|
||||
return [ 'sh-latn', 'sh-cyrl' ];
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
public function getVariantsFallbacks(): array {
|
||||
return [
|
||||
'sh-cyrl' => 'sh-latn',
|
||||
];
|
||||
}
|
||||
|
||||
protected function loadDefaultTables() {
|
||||
$this->mTables = [
|
||||
'sh-cyrl' => new ReplacementArray( $this->mToCyrillic ),
|
||||
'sh-latn' => new ReplacementArray(),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* It would omit roman numbers
|
||||
*
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function translate( $text, $toVariant ) {
|
||||
$breaks = '[^\w\x80-\xff]';
|
||||
|
||||
// regexp for roman numbers
|
||||
// Lookahead assertion ensures $roman doesn't match the empty string
|
||||
$roman = '(?=[MDCLXVI])M{0,4}(C[DM]|D?C{0,3})(X[LC]|L?X{0,3})(I[VX]|V?I{0,3})';
|
||||
|
||||
$reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks
|
||||
. $roman . '$|' . $breaks . $roman . $breaks . '/';
|
||||
|
||||
$matches = preg_split( $reg, $text, -1, PREG_SPLIT_OFFSET_CAPTURE );
|
||||
|
||||
$m = array_shift( $matches );
|
||||
$this->loadTables();
|
||||
if ( !isset( $this->mTables[$toVariant] ) ) {
|
||||
throw new MWException( "Broken variant table: "
|
||||
. implode( ',', array_keys( $this->mTables ) ) );
|
||||
}
|
||||
$ret = $this->mTables[$toVariant]->replace( $m[0] );
|
||||
$mstart = (int)$m[1] + strlen( $m[0] );
|
||||
foreach ( $matches as $m ) {
|
||||
$ret .= substr( $text, $mstart, (int)$m[1] - $mstart );
|
||||
$ret .= parent::translate( $m[0], $toVariant );
|
||||
$mstart = (int)$m[1] + strlen( $m[0] );
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
|
|
@ -419,7 +419,9 @@ class Names {
|
|||
'ses' => 'Koyraboro Senni', # Koyraboro Senni
|
||||
'sg' => 'Sängö', # Sango/Sangho
|
||||
'sgs' => 'žemaitėška', # Samogitian
|
||||
'sh' => 'srpskohrvatski / српскохрватски', # Serbocroatian
|
||||
'sh' => 'srpskohrvatski / српскохрватски', # Serbo-Croatian (multiple scripts - defaults to Latin)
|
||||
'sh-cyrl' => 'српскохрватски (ћирилица)', # Serbo-Croatian (Cyrillic script)
|
||||
'sh-latn' => 'srpskohrvatski (latinica)', # Serbo-Croatian (Latin script) (default)
|
||||
'shi' => 'Taclḥit', # Tachelhit, Shilha (multiple scripts - defaults to Latin)
|
||||
'shi-latn' => 'Taclḥit', # Tachelhit (Latin script)
|
||||
'shi-tfng' => 'ⵜⴰⵛⵍⵃⵉⵜ', # Tachelhit (Tifinagh script)
|
||||
|
|
|
|||
|
|
@ -3459,6 +3459,9 @@
|
|||
"variantname-ike-cans": "ike-Cans",
|
||||
"variantname-ike-latn": "ike-Latn",
|
||||
"variantname-iu": "iu",
|
||||
"variantname-sh-cyrl": "sh-Cyrl",
|
||||
"variantname-sh-latn": "sh-Latn",
|
||||
"variantname-sh": "sh",
|
||||
"variantname-shi-tfng": "shi-Tfng",
|
||||
"variantname-shi-latn": "shi-Latn",
|
||||
"variantname-shi": "shi",
|
||||
|
|
|
|||
|
|
@ -3702,6 +3702,9 @@
|
|||
"variantname-ike-cans": "{{optional}}",
|
||||
"variantname-ike-latn": "{{optional}}",
|
||||
"variantname-iu": "{{optional}}",
|
||||
"variantname-sh-cyrl": "{{optional}}",
|
||||
"variantname-sh-latn": "{{optional}}",
|
||||
"variantname-sh": "{{optional}}",
|
||||
"variantname-shi-tfng": "{{optional}}",
|
||||
"variantname-shi-latn": "{{optional}}",
|
||||
"variantname-shi": "{{optional}}",
|
||||
|
|
|
|||
|
|
@ -6,220 +6,7 @@
|
|||
* @file
|
||||
* @ingroup Languages
|
||||
*
|
||||
* @author Kaganer
|
||||
* @author Kolega2357
|
||||
* @author Nemo bis
|
||||
* @author OC Ripper
|
||||
* @author לערי ריינהארט
|
||||
* @author Aca
|
||||
*/
|
||||
|
||||
$fallback = 'bs, sr-el, sr-latn, hr';
|
||||
|
||||
$namespaceNames = [
|
||||
NS_SPECIAL => 'Posebno',
|
||||
NS_TALK => 'Razgovor',
|
||||
NS_USER => 'Korisnik',
|
||||
NS_USER_TALK => 'Razgovor_sa_korisnikom',
|
||||
NS_PROJECT_TALK => 'Razgovor_o_$1',
|
||||
NS_FILE => 'Datoteka',
|
||||
NS_FILE_TALK => 'Razgovor_o_datoteci',
|
||||
NS_MEDIAWIKI_TALK => 'Mediawiki_razgovor',
|
||||
NS_TEMPLATE => 'Šablon',
|
||||
NS_TEMPLATE_TALK => 'Razgovor_o_šablonu',
|
||||
NS_HELP => 'Pomoć',
|
||||
NS_HELP_TALK => 'Razgovor_o_pomoći',
|
||||
NS_CATEGORY => 'Kategorija',
|
||||
NS_CATEGORY_TALK => 'Razgovor_o_kategoriji',
|
||||
];
|
||||
|
||||
# Some dummy translations to prevent language fallback for now
|
||||
# @TODO: Check whether localising them is appropriate.
|
||||
$namespaceGenderAliases = [];
|
||||
$defaultDateFormat = 'dmy';
|
||||
$datePreferences = [
|
||||
'default',
|
||||
'dmy',
|
||||
'ymd',
|
||||
'ISO 8601',
|
||||
];
|
||||
$datePreferenceMigrationMap = [
|
||||
'default',
|
||||
'mdy',
|
||||
'dmy',
|
||||
'ymd'
|
||||
];
|
||||
|
||||
/** @phpcs-require-sorted-array */
|
||||
$specialPageAliases = [
|
||||
'Activeusers' => [ 'Aktivni_korisnici' ],
|
||||
'Allmessages' => [ 'Sve_poruke' ],
|
||||
'Allpages' => [ 'Sve_stranice' ],
|
||||
'Ancientpages' => [ 'Najstarije_stranice' ],
|
||||
'Blankpage' => [ 'Prazna_stranica' ],
|
||||
'Booksources' => [ 'Traži_ISBN' ],
|
||||
'BrokenRedirects' => [ 'Kriva_preusmjerenja' ],
|
||||
'Categories' => [ 'Kategorije' ],
|
||||
'Confirmemail' => [ 'E-mail_potvrda' ],
|
||||
'Contributions' => [ 'Doprinosi' ],
|
||||
'CreateAccount' => [ 'Stvori_račun' ],
|
||||
'Deadendpages' => [ 'Mrtve_stranice' ],
|
||||
'DeletedContributions' => [ 'Obrisani_doprinosi' ],
|
||||
'DoubleRedirects' => [ 'Dvostruka_preusmjerenja' ],
|
||||
'Emailuser' => [ 'E-mail', 'Elektronska_pošta' ],
|
||||
'Export' => [ 'Izvezi' ],
|
||||
'Fewestrevisions' => [ 'Najmanje_uređivane_stranice' ],
|
||||
'FileDuplicateSearch' => [ 'Traži_kopije_datoteka' ],
|
||||
'Filepath' => [ 'Putanja_datoteke' ],
|
||||
'Import' => [ 'Uvezi' ],
|
||||
'LinkSearch' => [ 'Traži_poveznice', 'Traži_linkove' ],
|
||||
'Listadmins' => [ 'Popis_administratora' ],
|
||||
'Listbots' => [ 'Popis_botova' ],
|
||||
'Listgrouprights' => [ 'Popis_korisničkih_prava' ],
|
||||
'Listredirects' => [ 'Popis_preusmjerenja' ],
|
||||
'Listusers' => [ 'Popis_korisnika', 'Korisnički_popis' ],
|
||||
'Lockdb' => [ 'Zaključaj_bazu' ],
|
||||
'Log' => [ 'Evidencije', 'Registri' ],
|
||||
'Lonelypages' => [ 'Usamljene_stranice', 'Siročad' ],
|
||||
'Longpages' => [ 'Duge_stranice' ],
|
||||
'MergeHistory' => [ 'Spoji_historiju' ],
|
||||
'MIMEsearch' => [ 'MIME_pretraga' ],
|
||||
'Mostcategories' => [ 'Najviše_kategorija' ],
|
||||
'Mostimages' => [ 'Najviše_povezane_datoteke', 'Najviše_povezane_slike' ],
|
||||
'Mostlinked' => [ 'Najviše_povezane_stranice' ],
|
||||
'Mostlinkedcategories' => [ 'Najviše_povezane_kategorije', 'Najviše_korištene_kategorije' ],
|
||||
'Mostlinkedtemplates' => [ 'Najviše_povezani_šabloni', 'Najviše_korišteni_šabloni' ],
|
||||
'Mostrevisions' => [ 'Najviše_uređivane_stranice' ],
|
||||
'Movepage' => [ 'Premjesti_stranicu' ],
|
||||
'Mycontributions' => [ 'Moji_doprinosi' ],
|
||||
'Mypage' => [ 'Moja_stranica' ],
|
||||
'Mytalk' => [ 'Moj_razgovor' ],
|
||||
'Myuploads' => [ 'Moje_postavljene_datoteke' ],
|
||||
'Newimages' => [ 'Nove_datoteke', 'Nove_slike' ],
|
||||
'Newpages' => [ 'Nove_stranice' ],
|
||||
'Preferences' => [ 'Postavke' ],
|
||||
'Prefixindex' => [ 'Prefiks_indeks', 'Stranice_po_prefiksu' ],
|
||||
'Protectedpages' => [ 'Zaštićene_stranice' ],
|
||||
'Protectedtitles' => [ 'Zaštićeni_naslovi' ],
|
||||
'Randompage' => [ 'Slučajna_stranica' ],
|
||||
'Randomredirect' => [ 'Slučajno_preusmjerenje' ],
|
||||
'Recentchanges' => [ 'Nedavne_izmjene' ],
|
||||
'Recentchangeslinked' => [ 'Povezane_izmjene' ],
|
||||
'Revisiondelete' => [ 'Brisanje_izmjene' ],
|
||||
'Search' => [ 'Traži' ],
|
||||
'Shortpages' => [ 'Kratke_stranice' ],
|
||||
'Specialpages' => [ 'Posebne_stranice' ],
|
||||
'Statistics' => [ 'Statistike' ],
|
||||
'Unblock' => [ 'Odblokiraj' ],
|
||||
'Uncategorizedcategories' => [ 'Nekategorizirane_kategorije' ],
|
||||
'Uncategorizedimages' => [ 'Nekategorizirane_datoteke', 'Nekategorizirane_slike' ],
|
||||
'Uncategorizedpages' => [ 'Nekategorizirane_stranice' ],
|
||||
'Uncategorizedtemplates' => [ 'Nekategorizirani_šabloni' ],
|
||||
'Undelete' => [ 'Vrati' ],
|
||||
'Unlockdb' => [ 'Otključaj_bazu' ],
|
||||
'Unusedcategories' => [ 'Nekorištene_kategorije' ],
|
||||
'Unusedimages' => [ 'Nekorištene_datoteke', 'Nekorištene_slike' ],
|
||||
'Unusedtemplates' => [ 'Nekorišteni_šabloni' ],
|
||||
'Unwatchedpages' => [ 'Negledane_stranice' ],
|
||||
'Upload' => [ 'Postavi_datoteku' ],
|
||||
'Userrights' => [ 'Korisnička_prava' ],
|
||||
'Version' => [ 'Verzija' ],
|
||||
'Wantedcategories' => [ 'Tražene_kategorije' ],
|
||||
'Wantedfiles' => [ 'Tražene_datoteke' ],
|
||||
'Wantedpages' => [ 'Tražene_stranice' ],
|
||||
'Wantedtemplates' => [ 'Traženi_šabloni' ],
|
||||
'Watchlist' => [ 'Spisak_praćenja' ],
|
||||
'Whatlinkshere' => [ 'Što_vodi_ovdje' ],
|
||||
'Withoutinterwiki' => [ 'Bez_interwikija' ],
|
||||
];
|
||||
|
||||
/** @phpcs-require-sorted-array */
|
||||
$magicWords = [
|
||||
'currentday' => [ '1', 'TRENUTNIDAN', 'TRENUTAČNIDAN', 'CURRENTDAY' ],
|
||||
'currentday2' => [ '1', 'TRENUTNIDAN2', 'TRENUTAČNIDAN2', 'CURRENTDAY2' ],
|
||||
'currentdayname' => [ '1', 'TRENUTNIDANIME', 'TRENUTAČNIDANIME', 'CURRENTDAYNAME' ],
|
||||
'currentdow' => [ '1', 'TRENUTNIDANSEDMICE', 'TRENUTAČNIDANTJEDNA', 'TRENUTNIDANNEDELJE', 'TRENUTNIDANTJEDNA', 'CURRENTDOW' ],
|
||||
'currenthour' => [ '1', 'TRENUTNISAT', 'TRENUTAČNISAT', 'CURRENTHOUR' ],
|
||||
'currentmonth' => [ '1', 'TRENUTNIMJESEC', 'TRENUTNIMESEC', 'TRENUTAČNIMJESEC', 'CURRENTMONTH', 'CURRENTMONTH2' ],
|
||||
'currentmonth1' => [ '1', 'TRENUTNIMJESEC1', 'TRENUTNIMESEC1', 'TRENUTAČNIMJESEC1', 'CURRENTMONTH1' ],
|
||||
'currentmonthabbrev' => [ '1', 'TRENUTNIMJESECSKR', 'TRENUTNIMESECSKR', 'TRENUTAČNIMJESECSKR', 'CURRENTMONTHABBREV' ],
|
||||
'currentmonthname' => [ '1', 'TRENUTNIMJESECIME', 'TRENUTNIMESECIME', 'TRENUTAČNIMJESECIME', 'CURRENTMONTHNAME' ],
|
||||
'currentmonthnamegen' => [ '1', 'TRENUTNIMJESECROD', 'TRENUTNIMESECROD', 'TRENUTAČNIMJESECROD', 'CURRENTMONTHNAMEGEN' ],
|
||||
'currenttime' => [ '1', 'TRENUTNOVRIJEME', 'TRENUTNOVREME', 'TRENUTAČNOVRIJEME', 'CURRENTTIME' ],
|
||||
'currenttimestamp' => [ '1', 'TRENUTNAOZNAKAVREMENA', 'TRENUTAČNAOZNAKAVREMENA', 'CURRENTTIMESTAMP' ],
|
||||
'currentweek' => [ '1', 'TRENUTNASEDMICA', 'TRENUTAČNITJEDAN', 'TRENUTNANEDELJA', 'TRENUTNITJEDAN', 'CURRENTWEEK' ],
|
||||
'currentyear' => [ '1', 'TRENUTNAGODINA', 'TRENUTAČNAGODINA', 'CURRENTYEAR' ],
|
||||
'forcetoc' => [ '0', '__FORSIRANISADRŽAJ__', '__UKLJUČISADRŽAJ__', '__FORCETOC__' ],
|
||||
'formatdate' => [ '0', 'formatdatuma', 'formatdate', 'dateformat' ],
|
||||
'fullpagename' => [ '1', 'PUNOIMESTRANE', 'PUNOIMESTRANICE', 'FULLPAGENAME' ],
|
||||
'fullpagenamee' => [ '1', 'PUNOIMESTRANEE', 'PUNOIMESTRANICEE', 'FULLPAGENAMEE' ],
|
||||
'fullurl' => [ '0', 'PUNIURL:', 'PUNURL:', 'FULLURL:' ],
|
||||
'fullurle' => [ '0', 'PUNIURLE:', 'PUNURLE:', 'FULLURLE:' ],
|
||||
'hiddencat' => [ '1', '__SAKRIVENAKATEGORIJA__', 'SKRIVENAKAT', '__SAKRIVENAKAT__', '__HIDDENCAT__' ],
|
||||
'img_baseline' => [ '1', 'osnovnacrta', 'pocetna_linija', 'baseline' ],
|
||||
'img_border' => [ '1', 'granica', 'obrub', 'border' ],
|
||||
'img_bottom' => [ '1', 'dno', 'bottom' ],
|
||||
'img_center' => [ '1', 'centar', 'c', 'središte', 'center', 'centre' ],
|
||||
'img_framed' => [ '1', 'okvir', 'ram', 'frame', 'framed', 'enframed' ],
|
||||
'img_frameless' => [ '1', 'bezokvira', 'bez_okvira', 'frameless' ],
|
||||
'img_left' => [ '1', 'lijevo', 'levo', 'left' ],
|
||||
'img_manualthumb' => [ '1', 'minijatura=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
|
||||
'img_middle' => [ '1', 'sredina', 'middle' ],
|
||||
'img_none' => [ '1', 'n', 'ništa', 'bez', 'none' ],
|
||||
'img_page' => [ '1', 'stranica=$1', 'stranica_$1', 'strana=$1', 'strana_$1', 'page=$1', 'page $1' ],
|
||||
'img_right' => [ '1', 'desno', 'right' ],
|
||||
'img_text_bottom' => [ '1', 'tekst-dno', 'text-bottom' ],
|
||||
'img_text_top' => [ '1', 'vrh_teksta', 'tekst_vrh', 'text-top' ],
|
||||
'img_thumbnail' => [ '1', 'mini', 'minijatura', 'thumb', 'thumbnail' ],
|
||||
'img_top' => [ '1', 'vrh', 'top' ],
|
||||
'img_upright' => [ '1', 'na_gore', 'na_gore=$1', 'na_gore_$1', 'uspravno', 'uspravno=$1', 'uspravno_$1', 'upright', 'upright=$1', 'upright $1' ],
|
||||
'localday' => [ '1', 'LOKALNIDAN', 'LOCALDAY' ],
|
||||
'localday2' => [ '1', 'LOKALNIDAN2', 'LOCALDAY2' ],
|
||||
'localdayname' => [ '1', 'LOKALNIDANIME', 'LOCALDAYNAME' ],
|
||||
'localdow' => [ '1', 'LOKALNIDANSEDMICE', 'LOKALNIDANTJEDNA', 'LOKALNIDANNEDELJE', 'LOCALDOW' ],
|
||||
'localhour' => [ '1', 'LOKALNISAT', 'LOCALHOUR' ],
|
||||
'localmonth' => [ '1', 'LOKALNIMJESEC', 'LOKALNIMESEC', 'LOCALMONTH', 'LOCALMONTH2' ],
|
||||
'localmonth1' => [ '1', 'LOKALNIMJESEC1', 'LOKALNIMESEC1', 'LOCALMONTH1' ],
|
||||
'localmonthabbrev' => [ '1', 'LOKALNIMJESECSKR', 'LOKALNIMESECSKR', 'LOKALNIMJESECKRAT', 'LOCALMONTHABBREV' ],
|
||||
'localmonthname' => [ '1', 'LOKALNIMJESECIME', 'LOKALNIMESECIME', 'LOCALMONTHNAME' ],
|
||||
'localmonthnamegen' => [ '1', 'LOKALNIMJESECROD', 'LOKALNIMESECROD', 'LOKALNIMJESECGEN', 'LOKALNIMESECGEN', 'LOCALMONTHNAMEGEN' ],
|
||||
'localtime' => [ '1', 'LOKALNOVRIJEME', 'LOKALNOVREME', 'LOCALTIME' ],
|
||||
'localtimestamp' => [ '1', 'LOKALNAOZNAKAVREMENA', 'LOCALTIMESTAMP' ],
|
||||
'localurl' => [ '0', 'LOKALNIURL:', 'LOCALURL:' ],
|
||||
'localurle' => [ '0', 'LOKALNIURLE:', 'LOCALURLE:' ],
|
||||
'localweek' => [ '1', 'LOKALNASEDMICA', 'LOKALNITJEDAN', 'LOKALNANEDELJA', 'LOCALWEEK' ],
|
||||
'localyear' => [ '1', 'LOKALNAGODINA', 'LOCALYEAR' ],
|
||||
'msg' => [ '0', 'POR:', 'MSG:' ],
|
||||
'msgnw' => [ '0', 'NVPOR:', 'MSGNW:' ],
|
||||
'namespace' => [ '1', 'IMENSKIPROSTOR', 'NAMESPACE' ],
|
||||
'namespacee' => [ '1', 'IMENSKIPROSTORI', 'NAMESPACEE' ],
|
||||
'nocontentconvert' => [ '0', '__BEZCC__', '__BPS__', '__NOCONTENTCONVERT__', '__NOCC__' ],
|
||||
'noeditsection' => [ '0', '__BEZ_IZMJENA__', '__BEZIZMJENA__', '__BEZ_IZMENA__', '__BEZIZMENA__', '__NOEDITSECTION__' ],
|
||||
'nogallery' => [ '0', '__BEZGALERIJE__', '__NOGALLERY__' ],
|
||||
'notitleconvert' => [ '0', '__BEZTC__', '__BEZKN__', '__BPN__', '__NOTITLECONVERT__', '__NOTC__' ],
|
||||
'notoc' => [ '0', '__BEZSADRŽAJA__', '__NOTOC__' ],
|
||||
'numberofactiveusers' => [ '1', 'BROJAKTIVNIHKORISNIKA', 'NUMBEROFACTIVEUSERS' ],
|
||||
'numberofarticles' => [ '1', 'BROJČLANAKA', 'NUMBEROFARTICLES' ],
|
||||
'numberofedits' => [ '1', 'BROJIZMJENA', 'BROJIZMENA', 'BROJUREĐIVANJA', 'NUMBEROFEDITS' ],
|
||||
'numberoffiles' => [ '1', 'BROJDATOTEKA', 'BROJFAJLOVA', 'NUMBEROFFILES' ],
|
||||
'numberofpages' => [ '1', 'BROJSTRANICA', 'BROJSTRANA', 'NUMBEROFPAGES' ],
|
||||
'numberofusers' => [ '1', 'BROJKORISNIKA', 'NUMBEROFUSERS' ],
|
||||
'pagename' => [ '1', 'STRANICA', 'IMESTRANICE', 'PAGENAME' ],
|
||||
'pagenamee' => [ '1', 'STRANICE', 'IMESTRANICEE', 'PAGENAMEE' ],
|
||||
'pagesize' => [ '1', 'VELICINASTRANICE', 'VELIČINASTRANICE', 'VELIČINASTRANE', 'VELICINASTRANE', 'PAGESIZE' ],
|
||||
'plural' => [ '0', 'MNOŽINA:', 'PLURAL:' ],
|
||||
'redirect' => [ '0', '#PREUSMJERI', '#PREUSMERI', '#REDIRECT' ],
|
||||
'revisionday' => [ '1', 'IZMJENEDANA', 'IZMENEDANA', 'REVISIONDAY' ],
|
||||
'revisionday2' => [ '1', 'IZMJENEDANA2', 'IZMENEDANA2', 'REVISIONDAY2' ],
|
||||
'revisionid' => [ '1', 'IDIZMJENE', 'IDIZMENE', 'REVISIONID' ],
|
||||
'revisionmonth' => [ '1', 'MJESECIZMJENE', 'MESECIZMENE', 'REVISIONMONTH' ],
|
||||
'revisionmonth1' => [ '1', 'MJESECIZMJENE1', 'MESECIZMENE1', 'REVISIONMONTH1' ],
|
||||
'revisiontimestamp' => [ '1', 'OZNAKAVREMENAIZMJENE', 'OZNAKAVREMENAIZMENE', 'REVISIONTIMESTAMP' ],
|
||||
'revisionyear' => [ '1', 'GODINAIZMJENE', 'GODINAIZMENE', 'REVISIONYEAR' ],
|
||||
'special' => [ '0', 'posebno', 'special' ],
|
||||
'subst' => [ '0', 'ZAMJENI:', 'ZAMENI:', 'ZAMJENA:', 'SUBST:' ],
|
||||
'talkspace' => [ '1', 'PROSTORZARAZGOVOR', 'TALKSPACE' ],
|
||||
'talkspacee' => [ '1', 'PROSTORIZARAZGOVOR', 'TALKSPACEE' ],
|
||||
'toc' => [ '0', '__SADRŽAJ__', '__TOC__' ],
|
||||
];
|
||||
|
||||
$linkTrail = '/^([a-zčćđžš]+)(.*)$/sDu';
|
||||
$fallback = 'sh-latn, sh-cyrl, bs, sr-el, sr-latn, hr';
|
||||
|
|
|
|||
12
languages/messages/MessagesSh_cyrl.php
Normal file
12
languages/messages/MessagesSh_cyrl.php
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
/** Serbo-Croatian (Cyrillic script) (српскохрватски (ћирилица))
|
||||
*
|
||||
* To improve a translation please visit https://translatewiki.net
|
||||
*
|
||||
* @file
|
||||
* @ingroup Languages
|
||||
*
|
||||
* @author Aca
|
||||
*/
|
||||
|
||||
$fallback = 'sh, sh-latn';
|
||||
226
languages/messages/MessagesSh_latn.php
Normal file
226
languages/messages/MessagesSh_latn.php
Normal file
|
|
@ -0,0 +1,226 @@
|
|||
<?php
|
||||
/** Serbo-Croatian (Latin script) (srpskohrvatski (latinica))
|
||||
*
|
||||
* To improve a translation please visit https://translatewiki.net
|
||||
*
|
||||
* @file
|
||||
* @ingroup Languages
|
||||
*
|
||||
* @author Aca
|
||||
* @author Kaganer
|
||||
* @author Kolega2357
|
||||
* @author Nemo bis
|
||||
* @author OC Ripper
|
||||
* @author לערי ריינהארט
|
||||
*/
|
||||
|
||||
$fallback = 'sh, sh-cyrl, bs, sr-el, sr-latn, hr';
|
||||
|
||||
$namespaceNames = [
|
||||
NS_SPECIAL => 'Posebno',
|
||||
NS_TALK => 'Razgovor',
|
||||
NS_USER => 'Korisnik',
|
||||
NS_USER_TALK => 'Razgovor_sa_korisnikom',
|
||||
NS_PROJECT_TALK => 'Razgovor_o_$1',
|
||||
NS_FILE => 'Datoteka',
|
||||
NS_FILE_TALK => 'Razgovor_o_datoteci',
|
||||
NS_MEDIAWIKI_TALK => 'Mediawiki_razgovor',
|
||||
NS_TEMPLATE => 'Šablon',
|
||||
NS_TEMPLATE_TALK => 'Razgovor_o_šablonu',
|
||||
NS_HELP => 'Pomoć',
|
||||
NS_HELP_TALK => 'Razgovor_o_pomoći',
|
||||
NS_CATEGORY => 'Kategorija',
|
||||
NS_CATEGORY_TALK => 'Razgovor_o_kategoriji',
|
||||
];
|
||||
|
||||
# Some dummy translations to prevent language fallback for now
|
||||
# @TODO: Check whether localising them is appropriate.
|
||||
$namespaceGenderAliases = [];
|
||||
$defaultDateFormat = 'dmy';
|
||||
$datePreferences = [
|
||||
'default',
|
||||
'dmy',
|
||||
'ymd',
|
||||
'ISO 8601',
|
||||
];
|
||||
$datePreferenceMigrationMap = [
|
||||
'default',
|
||||
'mdy',
|
||||
'dmy',
|
||||
'ymd',
|
||||
];
|
||||
|
||||
/** @phpcs-require-sorted-array */
|
||||
$specialPageAliases = [
|
||||
'Activeusers' => [ 'Aktivni_korisnici' ],
|
||||
'Allmessages' => [ 'Sve_poruke' ],
|
||||
'Allpages' => [ 'Sve_stranice' ],
|
||||
'Ancientpages' => [ 'Najstarije_stranice' ],
|
||||
'Blankpage' => [ 'Prazna_stranica' ],
|
||||
'Booksources' => [ 'Traži_ISBN' ],
|
||||
'BrokenRedirects' => [ 'Kriva_preusmjerenja' ],
|
||||
'Categories' => [ 'Kategorije' ],
|
||||
'Confirmemail' => [ 'E-mail_potvrda' ],
|
||||
'Contributions' => [ 'Doprinosi' ],
|
||||
'CreateAccount' => [ 'Stvori_račun' ],
|
||||
'Deadendpages' => [ 'Mrtve_stranice' ],
|
||||
'DeletedContributions' => [ 'Obrisani_doprinosi' ],
|
||||
'DoubleRedirects' => [ 'Dvostruka_preusmjerenja' ],
|
||||
'Emailuser' => [ 'E-mail', 'Elektronska_pošta' ],
|
||||
'Export' => [ 'Izvezi' ],
|
||||
'Fewestrevisions' => [ 'Najmanje_uređivane_stranice' ],
|
||||
'FileDuplicateSearch' => [ 'Traži_kopije_datoteka' ],
|
||||
'Filepath' => [ 'Putanja_datoteke' ],
|
||||
'Import' => [ 'Uvezi' ],
|
||||
'LinkSearch' => [ 'Traži_poveznice', 'Traži_linkove' ],
|
||||
'Listadmins' => [ 'Popis_administratora' ],
|
||||
'Listbots' => [ 'Popis_botova' ],
|
||||
'Listgrouprights' => [ 'Popis_korisničkih_prava' ],
|
||||
'Listredirects' => [ 'Popis_preusmjerenja' ],
|
||||
'Listusers' => [ 'Popis_korisnika', 'Korisnički_popis' ],
|
||||
'Lockdb' => [ 'Zaključaj_bazu' ],
|
||||
'Log' => [ 'Evidencije', 'Registri' ],
|
||||
'Lonelypages' => [ 'Usamljene_stranice', 'Siročad' ],
|
||||
'Longpages' => [ 'Duge_stranice' ],
|
||||
'MergeHistory' => [ 'Spoji_historiju' ],
|
||||
'MIMEsearch' => [ 'MIME_pretraga' ],
|
||||
'Mostcategories' => [ 'Najviše_kategorija' ],
|
||||
'Mostimages' => [ 'Najviše_povezane_datoteke', 'Najviše_povezane_slike' ],
|
||||
'Mostlinked' => [ 'Najviše_povezane_stranice' ],
|
||||
'Mostlinkedcategories' => [ 'Najviše_povezane_kategorije', 'Najviše_korištene_kategorije' ],
|
||||
'Mostlinkedtemplates' => [ 'Najviše_povezani_šabloni', 'Najviše_korišteni_šabloni' ],
|
||||
'Mostrevisions' => [ 'Najviše_uređivane_stranice' ],
|
||||
'Movepage' => [ 'Premjesti_stranicu' ],
|
||||
'Mycontributions' => [ 'Moji_doprinosi' ],
|
||||
'Mypage' => [ 'Moja_stranica' ],
|
||||
'Mytalk' => [ 'Moj_razgovor' ],
|
||||
'Myuploads' => [ 'Moje_postavljene_datoteke' ],
|
||||
'Newimages' => [ 'Nove_datoteke', 'Nove_slike' ],
|
||||
'Newpages' => [ 'Nove_stranice' ],
|
||||
'Preferences' => [ 'Postavke' ],
|
||||
'Prefixindex' => [ 'Prefiks_indeks', 'Stranice_po_prefiksu' ],
|
||||
'Protectedpages' => [ 'Zaštićene_stranice' ],
|
||||
'Protectedtitles' => [ 'Zaštićeni_naslovi' ],
|
||||
'Randompage' => [ 'Slučajna_stranica' ],
|
||||
'Randomredirect' => [ 'Slučajno_preusmjerenje' ],
|
||||
'Recentchanges' => [ 'Nedavne_izmjene' ],
|
||||
'Recentchangeslinked' => [ 'Povezane_izmjene' ],
|
||||
'Revisiondelete' => [ 'Brisanje_izmjene' ],
|
||||
'Search' => [ 'Traži' ],
|
||||
'Shortpages' => [ 'Kratke_stranice' ],
|
||||
'Specialpages' => [ 'Posebne_stranice' ],
|
||||
'Statistics' => [ 'Statistike' ],
|
||||
'Unblock' => [ 'Odblokiraj' ],
|
||||
'Uncategorizedcategories' => [ 'Nekategorizirane_kategorije' ],
|
||||
'Uncategorizedimages' => [ 'Nekategorizirane_datoteke', 'Nekategorizirane_slike' ],
|
||||
'Uncategorizedpages' => [ 'Nekategorizirane_stranice' ],
|
||||
'Uncategorizedtemplates' => [ 'Nekategorizirani_šabloni' ],
|
||||
'Undelete' => [ 'Vrati' ],
|
||||
'Unlockdb' => [ 'Otključaj_bazu' ],
|
||||
'Unusedcategories' => [ 'Nekorištene_kategorije' ],
|
||||
'Unusedimages' => [ 'Nekorištene_datoteke', 'Nekorištene_slike' ],
|
||||
'Unusedtemplates' => [ 'Nekorišteni_šabloni' ],
|
||||
'Unwatchedpages' => [ 'Negledane_stranice' ],
|
||||
'Upload' => [ 'Postavi_datoteku' ],
|
||||
'Userrights' => [ 'Korisnička_prava' ],
|
||||
'Version' => [ 'Verzija' ],
|
||||
'Wantedcategories' => [ 'Tražene_kategorije' ],
|
||||
'Wantedfiles' => [ 'Tražene_datoteke' ],
|
||||
'Wantedpages' => [ 'Tražene_stranice' ],
|
||||
'Wantedtemplates' => [ 'Traženi_šabloni' ],
|
||||
'Watchlist' => [ 'Spisak_praćenja' ],
|
||||
'Whatlinkshere' => [ 'Što_vodi_ovdje' ],
|
||||
'Withoutinterwiki' => [ 'Bez_interwikija' ],
|
||||
];
|
||||
|
||||
/** @phpcs-require-sorted-array */
|
||||
$magicWords = [
|
||||
'currentday' => [ '1', 'TRENUTNIDAN', 'TRENUTAČNIDAN', 'CURRENTDAY' ],
|
||||
'currentday2' => [ '1', 'TRENUTNIDAN2', 'TRENUTAČNIDAN2', 'CURRENTDAY2' ],
|
||||
'currentdayname' => [ '1', 'TRENUTNIDANIME', 'TRENUTAČNIDANIME', 'CURRENTDAYNAME' ],
|
||||
'currentdow' => [ '1', 'TRENUTNIDANSEDMICE', 'TRENUTAČNIDANTJEDNA', 'TRENUTNIDANNEDELJE', 'TRENUTNIDANTJEDNA', 'CURRENTDOW' ],
|
||||
'currenthour' => [ '1', 'TRENUTNISAT', 'TRENUTAČNISAT', 'CURRENTHOUR' ],
|
||||
'currentmonth' => [ '1', 'TRENUTNIMJESEC', 'TRENUTNIMESEC', 'TRENUTAČNIMJESEC', 'CURRENTMONTH', 'CURRENTMONTH2' ],
|
||||
'currentmonth1' => [ '1', 'TRENUTNIMJESEC1', 'TRENUTNIMESEC1', 'TRENUTAČNIMJESEC1', 'CURRENTMONTH1' ],
|
||||
'currentmonthabbrev' => [ '1', 'TRENUTNIMJESECSKR', 'TRENUTNIMESECSKR', 'TRENUTAČNIMJESECSKR', 'CURRENTMONTHABBREV' ],
|
||||
'currentmonthname' => [ '1', 'TRENUTNIMJESECIME', 'TRENUTNIMESECIME', 'TRENUTAČNIMJESECIME', 'CURRENTMONTHNAME' ],
|
||||
'currentmonthnamegen' => [ '1', 'TRENUTNIMJESECROD', 'TRENUTNIMESECROD', 'TRENUTAČNIMJESECROD', 'CURRENTMONTHNAMEGEN' ],
|
||||
'currenttime' => [ '1', 'TRENUTNOVRIJEME', 'TRENUTNOVREME', 'TRENUTAČNOVRIJEME', 'CURRENTTIME' ],
|
||||
'currenttimestamp' => [ '1', 'TRENUTNAOZNAKAVREMENA', 'TRENUTAČNAOZNAKAVREMENA', 'CURRENTTIMESTAMP' ],
|
||||
'currentweek' => [ '1', 'TRENUTNASEDMICA', 'TRENUTAČNITJEDAN', 'TRENUTNANEDELJA', 'TRENUTNITJEDAN', 'CURRENTWEEK' ],
|
||||
'currentyear' => [ '1', 'TRENUTNAGODINA', 'TRENUTAČNAGODINA', 'CURRENTYEAR' ],
|
||||
'forcetoc' => [ '0', '__FORSIRANISADRŽAJ__', '__UKLJUČISADRŽAJ__', '__FORCETOC__' ],
|
||||
'formatdate' => [ '0', 'formatdatuma', 'formatdate', 'dateformat' ],
|
||||
'fullpagename' => [ '1', 'PUNOIMESTRANE', 'PUNOIMESTRANICE', 'FULLPAGENAME' ],
|
||||
'fullpagenamee' => [ '1', 'PUNOIMESTRANEE', 'PUNOIMESTRANICEE', 'FULLPAGENAMEE' ],
|
||||
'fullurl' => [ '0', 'PUNIURL:', 'PUNURL:', 'FULLURL:' ],
|
||||
'fullurle' => [ '0', 'PUNIURLE:', 'PUNURLE:', 'FULLURLE:' ],
|
||||
'hiddencat' => [ '1', '__SAKRIVENAKATEGORIJA__', 'SKRIVENAKAT', '__SAKRIVENAKAT__', '__HIDDENCAT__' ],
|
||||
'img_baseline' => [ '1', 'osnovnacrta', 'pocetna_linija', 'baseline' ],
|
||||
'img_border' => [ '1', 'granica', 'obrub', 'border' ],
|
||||
'img_bottom' => [ '1', 'dno', 'bottom' ],
|
||||
'img_center' => [ '1', 'centar', 'c', 'središte', 'center', 'centre' ],
|
||||
'img_framed' => [ '1', 'okvir', 'ram', 'frame', 'framed', 'enframed' ],
|
||||
'img_frameless' => [ '1', 'bezokvira', 'bez_okvira', 'frameless' ],
|
||||
'img_left' => [ '1', 'lijevo', 'levo', 'left' ],
|
||||
'img_manualthumb' => [ '1', 'minijatura=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
|
||||
'img_middle' => [ '1', 'sredina', 'middle' ],
|
||||
'img_none' => [ '1', 'n', 'ništa', 'bez', 'none' ],
|
||||
'img_page' => [ '1', 'stranica=$1', 'stranica_$1', 'strana=$1', 'strana_$1', 'page=$1', 'page $1' ],
|
||||
'img_right' => [ '1', 'desno', 'right' ],
|
||||
'img_text_bottom' => [ '1', 'tekst-dno', 'text-bottom' ],
|
||||
'img_text_top' => [ '1', 'vrh_teksta', 'tekst_vrh', 'text-top' ],
|
||||
'img_thumbnail' => [ '1', 'mini', 'minijatura', 'thumb', 'thumbnail' ],
|
||||
'img_top' => [ '1', 'vrh', 'top' ],
|
||||
'img_upright' => [ '1', 'na_gore', 'na_gore=$1', 'na_gore_$1', 'uspravno', 'uspravno=$1', 'uspravno_$1', 'upright', 'upright=$1', 'upright $1' ],
|
||||
'localday' => [ '1', 'LOKALNIDAN', 'LOCALDAY' ],
|
||||
'localday2' => [ '1', 'LOKALNIDAN2', 'LOCALDAY2' ],
|
||||
'localdayname' => [ '1', 'LOKALNIDANIME', 'LOCALDAYNAME' ],
|
||||
'localdow' => [ '1', 'LOKALNIDANSEDMICE', 'LOKALNIDANTJEDNA', 'LOKALNIDANNEDELJE', 'LOCALDOW' ],
|
||||
'localhour' => [ '1', 'LOKALNISAT', 'LOCALHOUR' ],
|
||||
'localmonth' => [ '1', 'LOKALNIMJESEC', 'LOKALNIMESEC', 'LOCALMONTH', 'LOCALMONTH2' ],
|
||||
'localmonth1' => [ '1', 'LOKALNIMJESEC1', 'LOKALNIMESEC1', 'LOCALMONTH1' ],
|
||||
'localmonthabbrev' => [ '1', 'LOKALNIMJESECSKR', 'LOKALNIMESECSKR', 'LOKALNIMJESECKRAT', 'LOCALMONTHABBREV' ],
|
||||
'localmonthname' => [ '1', 'LOKALNIMJESECIME', 'LOKALNIMESECIME', 'LOCALMONTHNAME' ],
|
||||
'localmonthnamegen' => [ '1', 'LOKALNIMJESECROD', 'LOKALNIMESECROD', 'LOKALNIMJESECGEN', 'LOKALNIMESECGEN', 'LOCALMONTHNAMEGEN' ],
|
||||
'localtime' => [ '1', 'LOKALNOVRIJEME', 'LOKALNOVREME', 'LOCALTIME' ],
|
||||
'localtimestamp' => [ '1', 'LOKALNAOZNAKAVREMENA', 'LOCALTIMESTAMP' ],
|
||||
'localurl' => [ '0', 'LOKALNIURL:', 'LOCALURL:' ],
|
||||
'localurle' => [ '0', 'LOKALNIURLE:', 'LOCALURLE:' ],
|
||||
'localweek' => [ '1', 'LOKALNASEDMICA', 'LOKALNITJEDAN', 'LOKALNANEDELJA', 'LOCALWEEK' ],
|
||||
'localyear' => [ '1', 'LOKALNAGODINA', 'LOCALYEAR' ],
|
||||
'msg' => [ '0', 'POR:', 'MSG:' ],
|
||||
'msgnw' => [ '0', 'NVPOR:', 'MSGNW:' ],
|
||||
'namespace' => [ '1', 'IMENSKIPROSTOR', 'NAMESPACE' ],
|
||||
'namespacee' => [ '1', 'IMENSKIPROSTORI', 'NAMESPACEE' ],
|
||||
'nocontentconvert' => [ '0', '__BEZCC__', '__BPS__', '__NOCONTENTCONVERT__', '__NOCC__' ],
|
||||
'noeditsection' => [ '0', '__BEZ_IZMJENA__', '__BEZIZMJENA__', '__BEZ_IZMENA__', '__BEZIZMENA__', '__NOEDITSECTION__' ],
|
||||
'nogallery' => [ '0', '__BEZGALERIJE__', '__NOGALLERY__' ],
|
||||
'notitleconvert' => [ '0', '__BEZTC__', '__BEZKN__', '__BPN__', '__NOTITLECONVERT__', '__NOTC__' ],
|
||||
'notoc' => [ '0', '__BEZSADRŽAJA__', '__NOTOC__' ],
|
||||
'numberofactiveusers' => [ '1', 'BROJAKTIVNIHKORISNIKA', 'NUMBEROFACTIVEUSERS' ],
|
||||
'numberofarticles' => [ '1', 'BROJČLANAKA', 'NUMBEROFARTICLES' ],
|
||||
'numberofedits' => [ '1', 'BROJIZMJENA', 'BROJIZMENA', 'BROJUREĐIVANJA', 'NUMBEROFEDITS' ],
|
||||
'numberoffiles' => [ '1', 'BROJDATOTEKA', 'BROJFAJLOVA', 'NUMBEROFFILES' ],
|
||||
'numberofpages' => [ '1', 'BROJSTRANICA', 'BROJSTRANA', 'NUMBEROFPAGES' ],
|
||||
'numberofusers' => [ '1', 'BROJKORISNIKA', 'NUMBEROFUSERS' ],
|
||||
'pagename' => [ '1', 'STRANICA', 'IMESTRANICE', 'PAGENAME' ],
|
||||
'pagenamee' => [ '1', 'STRANICE', 'IMESTRANICEE', 'PAGENAMEE' ],
|
||||
'pagesize' => [ '1', 'VELICINASTRANICE', 'VELIČINASTRANICE', 'VELIČINASTRANE', 'VELICINASTRANE', 'PAGESIZE' ],
|
||||
'plural' => [ '0', 'MNOŽINA:', 'PLURAL:' ],
|
||||
'redirect' => [ '0', '#PREUSMJERI', '#PREUSMERI', '#REDIRECT' ],
|
||||
'revisionday' => [ '1', 'IZMJENEDANA', 'IZMENEDANA', 'REVISIONDAY' ],
|
||||
'revisionday2' => [ '1', 'IZMJENEDANA2', 'IZMENEDANA2', 'REVISIONDAY2' ],
|
||||
'revisionid' => [ '1', 'IDIZMJENE', 'IDIZMENE', 'REVISIONID' ],
|
||||
'revisionmonth' => [ '1', 'MJESECIZMJENE', 'MESECIZMENE', 'REVISIONMONTH' ],
|
||||
'revisionmonth1' => [ '1', 'MJESECIZMJENE1', 'MESECIZMENE1', 'REVISIONMONTH1' ],
|
||||
'revisiontimestamp' => [ '1', 'OZNAKAVREMENAIZMJENE', 'OZNAKAVREMENAIZMENE', 'REVISIONTIMESTAMP' ],
|
||||
'revisionyear' => [ '1', 'GODINAIZMJENE', 'GODINAIZMENE', 'REVISIONYEAR' ],
|
||||
'special' => [ '0', 'posebno', 'special' ],
|
||||
'subst' => [ '0', 'ZAMJENI:', 'ZAMENI:', 'ZAMJENA:', 'SUBST:' ],
|
||||
'talkspace' => [ '1', 'PROSTORZARAZGOVOR', 'TALKSPACE' ],
|
||||
'talkspacee' => [ '1', 'PROSTORIZARAZGOVOR', 'TALKSPACEE' ],
|
||||
'toc' => [ '0', '__SADRŽAJ__', '__TOC__' ],
|
||||
];
|
||||
|
||||
$linkTrail = '/^([a-zčćđžš]+)(.*)$/sDu';
|
||||
|
|
@ -44,20 +44,6 @@ class ApiQueryLanguageinfoTest extends ApiTestCase {
|
|||
}
|
||||
|
||||
public function provideTestAllPropsForSingleLanguage() {
|
||||
yield [
|
||||
'sh',
|
||||
[
|
||||
'code' => 'sh',
|
||||
'bcp47' => 'sh',
|
||||
'autonym' => 'srpskohrvatski / српскохрватски',
|
||||
'name' => 'Serbo-Croatian',
|
||||
'fallbacks' => [ 'bs', 'sr-el', 'sr-latn', 'hr' ],
|
||||
'dir' => 'ltr',
|
||||
'variants' => [ 'sh' ],
|
||||
'variantnames' => [ 'sh' => 'srpskohrvatski / српскохрватски' ],
|
||||
]
|
||||
];
|
||||
|
||||
yield [
|
||||
'sr',
|
||||
[
|
||||
|
|
|
|||
|
|
@ -250,8 +250,8 @@ class LanguageConverterFactoryTest extends MediaWikiLangTestCase {
|
|||
'ps', 'pt', 'pt-br', 'qu', 'qug', 'rgn', 'rif', 'rm', 'rmy', 'rn', 'ro',
|
||||
'roa-rup', 'roa-tara', 'ru', 'rue', 'rup', 'ruq', 'ruq-cyrl', 'ruq-latn',
|
||||
'rw', 'sa', 'sah', 'sat', 'sc', 'scn', 'sco', 'sd', 'sdc', 'sdh', 'se',
|
||||
'sei', 'ses', 'sg', 'sgs', 'sh', 'shi-tfng', 'shi-latn', 'shn', 'shy-latn',
|
||||
'si', 'simple', 'sk', 'skr', 'skr-arab', 'sl', 'sli', 'sm', 'sma', 'sn',
|
||||
'sei', 'ses', 'sg', 'sgs', 'sh-cyrl', 'sh-latn', 'shi-tfng', 'shi-latn', 'shn',
|
||||
'shy-latn', 'si', 'simple', 'sk', 'skr', 'skr-arab', 'sl', 'sli', 'sm', 'sma', 'sn',
|
||||
'so', 'sq', 'sr-ec', 'sr-el', 'srn', 'ss', 'st', 'sty', 'stq', 'su', 'sv',
|
||||
'sw', 'szl', 'szy', 'ta', 'tay', 'tcy', 'te', 'tet', 'tg-cyrl', 'tg-latn',
|
||||
'th', 'ti', 'tk', 'tl', 'tly-latn', 'tn', 'to', 'tpi', 'tr', 'tru', 'ts', 'tt',
|
||||
|
|
@ -363,6 +363,16 @@ class LanguageConverterFactoryTest extends MediaWikiLangTestCase {
|
|||
]
|
||||
];
|
||||
|
||||
yield 'sh' => [
|
||||
'sh', 'sh-latn', 'ShConverter',
|
||||
[ 'sh-latn', 'sh-cyrl' ],
|
||||
[ 'sh-cyrl' => 'sh-latn' ],
|
||||
[], [], [
|
||||
'sh-latn' => 'bidirectional',
|
||||
'sh-cyrl' => 'bidirectional'
|
||||
]
|
||||
];
|
||||
|
||||
yield 'shi' => [
|
||||
'shi', 'shi', 'ShiConverter',
|
||||
[ 'shi', 'shi-tfng', 'shi-latn' ],
|
||||
|
|
|
|||
110
tests/phpunit/languages/converters/ShConverterTest.php
Normal file
110
tests/phpunit/languages/converters/ShConverterTest.php
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @group Language
|
||||
* @covers ShConverter
|
||||
*/
|
||||
class ShConverterTest extends MediaWikiIntegrationTestCase {
|
||||
use LanguageConverterTestTrait;
|
||||
|
||||
/**
|
||||
* @dataProvider provideAutoConvertToAllVariants
|
||||
* @covers ShConverter::autoConvertToAllVariants
|
||||
*/
|
||||
public function testAutoConvertToAllVariants( $result, $value ) {
|
||||
$this->assertEquals( $result, $this->getLanguageConverter()->autoConvertToAllVariants( $value ) );
|
||||
}
|
||||
|
||||
public static function provideAutoConvertToAllVariants() {
|
||||
return [
|
||||
[
|
||||
[
|
||||
'sh-latn' => 'g',
|
||||
'sh-cyrl' => 'г',
|
||||
],
|
||||
'g'
|
||||
],
|
||||
[
|
||||
[
|
||||
'sh-latn' => 'г',
|
||||
'sh-cyrl' => 'г',
|
||||
],
|
||||
'г'
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ShConverter::convertTo
|
||||
*/
|
||||
public function testConvertTo() {
|
||||
$this->testConversionToLatin();
|
||||
$this->testConversionToCyrillic();
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for testConvertTo() for Cyrillic
|
||||
*/
|
||||
public function testConversionToCyrillic() {
|
||||
// A simple conversion of Latin to Cyrillic
|
||||
$this->assertEquals( 'абвг',
|
||||
$this->convertToCyrillic( 'abvg' )
|
||||
);
|
||||
// Same as above, but assert that -{}-s must be removed and not converted
|
||||
$this->assertEquals( 'ljабnjвгdž',
|
||||
$this->convertToCyrillic( '-{lj}-ab-{nj}-vg-{dž}-' )
|
||||
);
|
||||
// A simple conversion of Cyrillic to Cyrillic
|
||||
$this->assertEquals( 'абвг',
|
||||
$this->convertToCyrillic( 'абвг' )
|
||||
);
|
||||
// Same as above, but assert that -{}-s must be removed and not converted
|
||||
$this->assertEquals( 'ljабnjвгdž',
|
||||
$this->convertToCyrillic( '-{lj}-аб-{nj}-вг-{dž}-' )
|
||||
);
|
||||
// Roman numerals are not converted
|
||||
$this->assertEquals( 'а I б II в III г IV шђжчћ',
|
||||
$this->convertToCyrillic( 'a I b II v III g IV šđžčć' )
|
||||
);
|
||||
// Manual conversion rules work
|
||||
$this->assertEquals( 'Cyrillic',
|
||||
$this->convertToCyrillic( '-{sh-latn:Latin; sh-cyrl:Cyrillic;}-' )
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for testConvertTo() for Latin
|
||||
*/
|
||||
public function testConversionToLatin() {
|
||||
// A simple conversion of Latin to Latin
|
||||
$this->assertEquals( 'abvg',
|
||||
$this->convertToLatin( 'abvg' )
|
||||
);
|
||||
// Same as above, but assert that -{}-s must be removed and not converted
|
||||
$this->assertEquals( 'ljabnjvgdž',
|
||||
$this->convertToLatin( '-{lj}-ab-{nj}-vg-{dž}-' )
|
||||
);
|
||||
// Manual conversion rules work
|
||||
$this->assertEquals( 'Latin',
|
||||
$this->convertToLatin( '-{sh-latn:Latin; sh-cyrl:Cyrillic;}-' )
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for converter::convertTo() method
|
||||
* @param string $text
|
||||
* @param string $variant
|
||||
* @return string
|
||||
*/
|
||||
protected function convertTo( $text, $variant ) {
|
||||
return $this->getLanguageConverter()->convertTo( $text, $variant );
|
||||
}
|
||||
|
||||
protected function convertToCyrillic( $text ) {
|
||||
return $this->convertTo( $text, 'sh-cyrl' );
|
||||
}
|
||||
|
||||
protected function convertToLatin( $text ) {
|
||||
return $this->convertTo( $text, 'sh-latn' );
|
||||
}
|
||||
}
|
||||
|
|
@ -16,7 +16,7 @@ class LanguageFallbackTest extends MediaWikiUnitTestCase {
|
|||
'sco' => [ 'en' ],
|
||||
'yi' => [ 'he' ],
|
||||
'ruq' => [ 'ruq-latn', 'ro' ],
|
||||
'sh' => [ 'bs', 'sr-el', 'sr-latn', 'hr' ],
|
||||
'sh' => [ 'sh-latn', 'sh-cyrl', 'bs', 'sr-el', 'sr-latn', 'hr' ],
|
||||
];
|
||||
|
||||
private function getLanguageNameUtils() {
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ trait LanguageFallbackTestTrait {
|
|||
'sco' => [ 'sco', [ 'en' ] ],
|
||||
'yi' => [ 'yi', [ 'he', 'en' ] ],
|
||||
'ruq' => [ 'ruq', [ 'ruq-latn', 'ro', 'en' ] ],
|
||||
'sh' => [ 'sh', [ 'bs', 'sr-el', 'sr-latn', 'hr', 'en' ] ],
|
||||
'sh' => [ 'sh', [ 'sh-latn', 'sh-cyrl', 'bs', 'sr-el', 'sr-latn', 'hr', 'en' ] ],
|
||||
];
|
||||
}
|
||||
|
||||
|
|
@ -144,7 +144,7 @@ trait LanguageFallbackTestTrait {
|
|||
'sco' => [ 'sco', [ 'en' ] ],
|
||||
'yi' => [ 'yi', [ 'he' ] ],
|
||||
'ruq' => [ 'ruq', [ 'ruq-latn', 'ro' ] ],
|
||||
'sh' => [ 'sh', [ 'bs', 'sr-el', 'sr-latn', 'hr' ] ],
|
||||
'sh' => [ 'sh', [ 'sh-latn', 'sh-cyrl', 'bs', 'sr-el', 'sr-latn', 'hr' ] ],
|
||||
];
|
||||
}
|
||||
|
||||
|
|
@ -231,9 +231,9 @@ trait LanguageFallbackTestTrait {
|
|||
'yi on yi' => [ 'yi', 'yi', [ [ 'he', 'en' ], [ 'yi' ] ] ],
|
||||
|
||||
'sh on ruq' => [ 'sh', 'ruq',
|
||||
[ [ 'bs', 'sr-el', 'sr-latn', 'hr', 'en' ], [ 'ruq', 'ruq-latn', 'ro' ] ], 2 ],
|
||||
[ [ 'sh-latn', 'sh-cyrl', 'bs', 'sr-el', 'sr-latn', 'hr', 'en' ], [ 'ruq', 'ruq-latn', 'ro' ] ], 2 ],
|
||||
'ruq on sh' => [ 'ruq', 'sh',
|
||||
[ [ 'ruq-latn', 'ro', 'en' ], [ 'sh', 'bs', 'sr-el', 'sr-latn', 'hr' ] ], 2 ],
|
||||
[ [ 'ruq-latn', 'ro', 'en' ], [ 'sh', 'sh-latn', 'sh-cyrl', 'bs', 'sr-el', 'sr-latn', 'hr' ] ], 2 ],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue