i18n: deprecate double-underscore magic words which don't start/end with __

All "double underscore" behavior switches should actually begin and end
with either a double underscore or a double U+FF3F (a fullwidth
underscore used in Japanese).  Parsoid's tokenizer will not match a
localized behavior switch which does not start with double underscore.

In this patch localized aliases are added which start/end with double
underscore, and a few erroneous localizations were corrected which
had leading spaces or zero-width spaces.  In addition, pages which
use a localized behavior switch which does not start/end with double
underscore are added to a tracking category for manual fix up.

In a future release (I8dd522d605c2b9e5310d169d7c51bcf424089497),
aliases which do not start/end with double underscore will be removed.

Bug: T407289
Change-Id: I458e3c981c07394ab81259fadb3d68a0399e7953
(cherry picked from commit 37772271cd6099327fb57f7c3139206be1ad72c6)
This commit is contained in:
C. Scott Ananian 2025-10-14 17:39:12 -04:00
parent 10a9e9ace1
commit 504079744b
18 changed files with 56 additions and 37 deletions

View file

@ -88,6 +88,7 @@ class TrackingCategories {
'unstrip-depth-category',
'unstrip-size-category',
'bad-language-code-category',
'bad-double-underscore-category',
'double-px-category',
];

View file

@ -199,7 +199,7 @@ class MagicWordArray {
* Parse a match array from preg_match
*
* @param array<string|int,string> $matches
* @return array{0:string,1:string|false} Pair of (magic word ID, parameter value),
* @return array{0:string,1:string,2:string|false} Tuple of (magic word ID, magic word alias, parameter value),
* where the latter is instead false if there is no parameter value.
*/
private function parseMatch( array $matches ): array {
@ -211,7 +211,7 @@ class MagicWordArray {
// n => 'matchedSynonym (again)',
// n + 1 => 'parameterValue',
// … ]
return [ $magicName, $matches[$key + 1] ?? false ];
return [ $magicName, $match, $matches[$key + 1] ?? false ];
}
// Skip the initial full match and any non-matching group
if ( $match !== '' && $key !== 0 ) {
@ -237,7 +237,8 @@ class MagicWordArray {
foreach ( $regexes as $regex ) {
$m = [];
if ( preg_match( $regex, $text, $m ) ) {
return $this->parseMatch( $m );
[ $id, $alias, $param ] = $this->parseMatch( $m );
return [ $id, $param ];
}
}
return [ false, false ];
@ -267,14 +268,17 @@ class MagicWordArray {
*
* @see MagicWord::matchAndRemove
* @param string &$text
* @return array<string,false> Keyed by magic word ID
* @param bool $returnAlias When true, returns the localized alias as
* the value in the returned array. When false (the default), the
* value in the returned array is `false`.
* @return array<string,string|false> Keyed by magic word ID
*/
public function matchAndRemove( &$text ): array {
public function matchAndRemove( &$text, bool $returnAlias = false ): array {
$found = [];
$regexes = $this->getRegex();
$res = preg_replace_callback( $regexes, function ( $m ) use ( &$found ) {
[ $name, $param ] = $this->parseMatch( $m );
$found[$name] = $param;
$res = preg_replace_callback( $regexes, function ( $m ) use ( &$found, $returnAlias ) {
[ $name, $alias, $param ] = $this->parseMatch( $m );
$found[$name] = $returnAlias ? $alias : $param;
return '';
}, $text );
// T321234: Don't try to fix old revisions with broken UTF-8, just return $text as is

View file

@ -277,7 +277,7 @@ class Parser {
private array $mTplRedirCache;
/** @internal */
public array $mHeadings;
/** @var array<string,false> */
/** @var array<string,string> */
private array $mDoubleUnderscores;
/**
* Number of expensive parser function calls
@ -4087,23 +4087,27 @@ class Parser {
private function handleDoubleUnderscore( $text ) {
# The position of __TOC__ needs to be recorded
$mw = $this->magicWordFactory->get( 'toc' );
$tocAlias = null;
if ( $mw->match( $text ) ) {
$this->mShowToc = true;
$this->mForceTocPosition = true;
# record the alias used
preg_match( $mw->getRegex(), $text, $tocAlias );
# Set a placeholder. At the end we'll fill it in with the TOC.
$text = $mw->replace( self::TOC_PLACEHOLDER, $text, 1 );
# Only keep the first one.
$text = $mw->replace( '', $text );
# For consistency with all other double-underscores
# (see below)
$this->mOutput->setUnsortedPageProperty( 'toc' );
}
# Now match and remove the rest of them
$mwa = $this->magicWordFactory->getDoubleUnderscoreArray();
$this->mDoubleUnderscores = $mwa->matchAndRemove( $text );
$this->mDoubleUnderscores = $mwa->matchAndRemove( $text, returnAlias: true );
if ( $tocAlias ) {
# For consistency with all other double-underscores (see below)
$this->mDoubleUnderscores['toc'] = $tocAlias[0];
}
if ( isset( $this->mDoubleUnderscores['nogallery'] ) ) {
$this->mOutput->setNoGallery( true );
@ -4127,9 +4131,15 @@ class Parser {
$this->addTrackingCategory( 'index-category' );
}
# Cache all double underscores in the database
foreach ( $this->mDoubleUnderscores as $key => $val ) {
foreach ( $this->mDoubleUnderscores as $key => $alias ) {
# Cache all double underscores in the database
$this->mOutput->setUnsortedPageProperty( $key );
# Check for deprecated local aliases (T407289)
$ascii = str_starts_with( $alias, '__' ) && str_ends_with( $alias, '__' );
$wide = str_starts_with( $alias, '__' ) && str_ends_with( $alias, '__' );
if ( !( $ascii || $wide ) ) {
$this->addTrackingCategory( 'bad-double-underscore-category' );
}
}
return $text;

View file

@ -826,6 +826,8 @@
"unstrip-size-category-desc": "The page exceeds the unstrip size limit.",
"bad-language-code-category": "Pages with invalid language codes",
"bad-language-code-category-desc": "The page contains a <code><nowiki>{{#dir}}</nowiki></code> with an invalid language code.",
"bad-double-underscore-category": "Pages with invalid behavior switches",
"bad-double-underscore-category-desc": "The page contains a invalid localized [[mw:Special:MyLanguage/Help:Magic_words#Behavior_switches|behavior switch]]. Valid localizations begin and end with double underscores.",
"double-px-category": "Pages with image sizes containing extra px",
"double-px-category-desc": "The page contains an image whose size contains an extra <code>px</code> suffix, like <code>100pxpx</code>.",
"converter-manual-rule-error": "Error detected in manual language conversion rule",

View file

@ -1099,6 +1099,8 @@
"unstrip-size-category-desc": "{{Doc-important|Do not translate function name <code>unstrip</code>.}}\nThis message is used on [[Special:TrackingCategories]] as the description of the unstrip expansion size limit exceeded category.\n\n\"Unstrip\" refers to the internal function of the parser, called \"unstrip\", which recursively puts the output of parser functions in the place of the parser function call.\n\nSee also:\n*{{msg-mw|Unstrip-size-category}}\n*{{msg-mw|Unstrip-size-warning}}\n*{{msg-mw|Unstrip-depth-category-desc}}",
"bad-language-code-category": "This message is used as a category name for a [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages with invalid language codes given as arguments to <code><nowiki>{{#dir}}</nowiki></code> will be listed.",
"bad-language-code-category-desc": "Pages with invalid language codes given as arguments to <code><nowiki>{{#dir}}</nowiki></code> category description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* {{msg-mw|Bad-language-code-category}}",
"bad-double-underscore-category": "This message is used as a category name for a [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages with invalid localized behavior switches will be listed.",
"bad-double-underscore-category-desc": "Pages with invalid localized behavior switches category description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* {{msg-mw|Bad-double-underscore-category}}",
"double-px-category": "This message is used as a category name for a [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages with images whose sizes are given with two <code>px</code> suffixes will be listed.\n{{Tracking category name}}",
"double-px-category-desc": "Pages with images whose sizes are given with two <code>px</code> suffixes category description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* {{msg-mw|Double-px-category}}",
"converter-manual-rule-error": "Used as error message when a manual conversion rule for the [[mw:Language_converter|language converter]] has errors. For example it's not using the correct syntax, or not supplying text in all variants.",

View file

@ -241,7 +241,7 @@ $magicWords = [
'noeditsection' => [ '0', '__لاتحريرقسم__', '__NOEDITSECTION__' ],
'nogallery' => [ '0', '__لامعرض__', '__NOGALLERY__' ],
'noindex' => [ '1', '__لافهرسة__', '__NOINDEX__' ],
'nonewsectionlink' => [ '1', ا_وصلة_قسم_جديد__', '__NONEWSECTIONLINK__' ],
'nonewsectionlink' => [ '1', '__لا_وصلة_قسم_جديد__', ا_وصلة_قسم_جديد__', '__NONEWSECTIONLINK__' ],
'notitleconvert' => [ '0', '__لاتحويل_عنوان__', '__لاتع__', '__NOTITLECONVERT__', '__NOTC__' ],
'notoc' => [ '0', '__لافهرس__', '__NOTOC__' ],
'ns' => [ '0', 'نط:', 'NS:' ],

View file

@ -283,7 +283,7 @@ $magicWords = [
'noeditsection' => [ '0', '__من_غير_تحريرقسم__', '__لاتحريرقسم__', '__NOEDITSECTION__' ],
'nogallery' => [ '0', '__من_غير_معرض__', '__لامعرض__', '__NOGALLERY__' ],
'noindex' => [ '1', '__لافهرسة__', '__NOINDEX__' ],
'nonewsectionlink' => [ '1', '__من_غير_وصلة_قسم_جديد__', 'من_غير_وصلة_قسم_جديد__', ا_وصلة_قسم_جديد__', '__NONEWSECTIONLINK__' ],
'nonewsectionlink' => [ '1', '__من_غير_وصلة_قسم_جديد__', '__من_غير_وصلة_قسم_جديد__', 'من_غير_وصلة_قسم_جديد__', '__لا_وصلة_قسم_جديد__', ا_وصلة_قسم_جديد__', '__NONEWSECTIONLINK__' ],
'notitleconvert' => [ '0', '__من_غيرتحويل_عنوان__', '__لاتع__', '__لاتحويل_عنوان__', '__NOTITLECONVERT__', '__NOTC__' ],
'notoc' => [ '0', '__من_غير_فهرس__', '__لافهرس__', '__NOTOC__' ],
'ns' => [ '0', 'نط:', 'NS:' ],

View file

@ -44,7 +44,7 @@ $magicWords = [
'fullurl' => [ '0', 'URLLLAWN:', 'FULLURL:' ],
'fullurle' => [ '0', 'URLLLAWNE:', 'FULLURLE:' ],
'grammar' => [ '0', 'GRAMMAR', 'GRAMADEG', 'GRAMMAR:' ],
'hiddencat' => [ '1', '_HIDDENCAT_', '_CATCUDD_', '__HIDDENCAT__' ],
'hiddencat' => [ '1', '__CATCUDD__', '_HIDDENCAT_', '_CATCUDD_', '__HIDDENCAT__' ],
'img_bottom' => [ '1', 'gwaelod', 'godre', 'bottom' ],
'img_center' => [ '1', 'canol', 'center', 'centre' ],
'img_left' => [ '1', 'chwith', 'left' ],
@ -61,7 +61,7 @@ $magicWords = [
'localtimestamp' => [ '1', 'STAMPAMSERLLEOL', 'LOCALTIMESTAMP' ],
'namespace' => [ '1', 'PARTH', 'NAMESPACE' ],
'namespacee' => [ '1', 'NAMESPACE', 'PARTHE', 'NAMESPACEE' ],
'newsectionlink' => [ '1', '_NEWSECTIONLINK_', '_CYSWLLTADRANNEWYDD_', '__NEWSECTIONLINK__' ],
'newsectionlink' => [ '1', '__CYSWLLTADRANNEWYDD__', '_NEWSECTIONLINK_', '_CYSWLLTADRANNEWYDD_', '__NEWSECTIONLINK__' ],
'noeditsection' => [ '0', '__DIMADRANGOLYGU__', '__DIMGOLYGUADRAN__', '__NOEDITSECTION__' ],
'notoc' => [ '0', '__DIMTAFLENCYNNWYS__', '__DIMRHESTRGYNNWYS__', '__DIMRHG__', '__NOTOC__' ],
'numberofadmins' => [ '1', 'NIFERYGWEINYDDWYR', 'NUMBEROFADMINS' ],

View file

@ -193,7 +193,7 @@ $magicWords = [
'img_right' => [ '1', 'paremal', 'right' ],
'img_thumbnail' => [ '1', 'pisi', 'pisipilt', 'thumb', 'thumbnail' ],
'img_upright' => [ '1', 'püsti', 'püsti=$1', 'upright', 'upright=$1', 'upright $1' ],
'index' => [ '1', 'INDEKSIGA', '__INDEX__' ],
'index' => [ '1', '__INDEKSIGA__', 'INDEKSIGA', '__INDEX__' ],
'language' => [ '0', '#KEEL', '#LANGUAGE' ],
'lc' => [ '0', 'VT:', 'LC:' ],
'lcfirst' => [ '0', 'ESIVT:', 'LCFIRST:' ],
@ -219,7 +219,7 @@ $magicWords = [
'newsectionlink' => [ '1', '__UUEALAOSALINK__', '__NEWSECTIONLINK__' ],
'noeditsection' => [ '0', '__ALAOSALINGITA__', '__NOEDITSECTION__' ],
'nogallery' => [ '0', '__GALERIITA__', '__NOGALLERY__' ],
'noindex' => [ '1', 'INDEKSITA', '__NOINDEX__' ],
'noindex' => [ '1', '__INDEKSITA__', 'INDEKSITA', '__NOINDEX__' ],
'nonewsectionlink' => [ '1', '__UUEALAOSALINGITA__', '__NONEWSECTIONLINK__' ],
'notoc' => [ '0', '__SISUKORRATA__', '__NOTOC__' ],
'ns' => [ '0', 'NR:', 'NS:' ],

View file

@ -131,7 +131,7 @@ $magicWords = [
'noeditsection' => [ '0', '__TANPASUNTINGANBAGIAN__', '__NIRSUBA__', '__NOEDITSECTION__' ],
'nogallery' => [ '0', '__TANPAGALERI__', '__NIRGAL__', '__NOGALLERY__' ],
'noindex' => [ '1', '__TANPAINDEKS__', '__NIRDEKS__', '__NOINDEX__' ],
'nonewsectionlink' => [ '1', '_TANPAPRANALABAGIANBARU__', '__NIRPRABABA__', '__NONEWSECTIONLINK__' ],
'nonewsectionlink' => [ '1', '__TANPAPRANALABAGIANBARU__', '_TANPAPRANALABAGIANBARU__', '__NIRPRABABA__', '__NONEWSECTIONLINK__' ],
'notitleconvert' => [ '0', '__TANPAKONVERSIJUDUL__', '__NIRKODUL__', '__NOTITLECONVERT__', '__NOTC__' ],
'notoc' => [ '0', '__TANPADAFTARISI__', '__NIRDASI__', '__NOTOC__' ],
'ns' => [ '0', 'RN:', 'RUNAM:', 'NS:' ],

View file

@ -103,7 +103,7 @@ $specialPageAliases = [
/** @phpcs-require-sorted-array */
$magicWords = [
'nogallery' => [ '0', '_ГАЛЛЕРЕЯСЫЗ__', '__БЕЗАЛЕРЕИ__', '__NOGALLERY__' ],
'nogallery' => [ '0', '__ГАЛЛЕРЕЯСЫЗ__', '_ГАЛЛЕРЕЯСЫЗ__', '__БЕЗАЛЕРЕИ__', '__NOGALLERY__' ],
'notoc' => [ '0', '__БАШЛАСЫЗ__', '__БЕЗ_ОГЛАВЛЕНИЯ__', '__БЕЗ_ОГЛ__', '__NOTOC__' ],
'redirect' => [ '0', '#джибериу', '#редирект', '#перенаправление', '#перенапр', '#REDIRECT' ],
];

View file

@ -99,8 +99,8 @@ $magicWords = [
'img_link' => [ '1', 'girêdan=$1', 'link=$1' ],
'img_right' => [ '1', 'rast', 'right' ],
'language' => [ '0', '#ZIMAN', '#LANGUAGE' ],
'nogallery' => [ '0', '_GALERÎTUNE_', '__NOGALLERY__' ],
'notoc' => [ '0', '_NAVEROKTUNE_', '__NOTOC__' ],
'nogallery' => [ '0', '__GALERÎTUNE__', '_GALERÎTUNE_', '__NOGALLERY__' ],
'notoc' => [ '0', '__NAVEROKTUNE__', '_NAVEROKTUNE_', '__NOTOC__' ],
'numberofactiveusers' => [ '1', 'HEJMARA_BIKARHÊNERÊN_ÇALAK', 'NUMBEROFACTIVEUSERS' ],
'numberofadmins' => [ '1', 'HEJMARA_RÊVEBERAN', 'NUMBEROFADMINS' ],
'numberofarticles' => [ '1', 'HEJMARA_GOTARAN', 'NUMBEROFARTICLES' ],
@ -115,7 +115,7 @@ $magicWords = [
'sitename' => [ '1', 'NAVÊ_PROJEYÊ', 'SITENAME' ],
'special' => [ '0', 'taybet', 'special' ],
'subpagename' => [ '1', 'BINRÛPEL', 'SUBPAGENAME' ],
'toc' => [ '0', '_NAVEROK_', '__TOC__' ],
'toc' => [ '0', '__NAVEROK__', '_NAVEROK_', '__TOC__' ],
];
$linkTrail = '/^([a-zçêîşûẍḧÇÊÎŞÛẌḦ]+)(.*)$/sDu';

View file

@ -231,7 +231,7 @@ $magicWords = [
'fullurle' => [ '0', 'പൂർണ്ണവിലാസംസമഗ്രം:', 'FULLURLE:' ],
'gender' => [ '0', 'ലിംഗം:', 'GENDER:' ],
'grammar' => [ '0', 'വ്യാകരണം:', 'GRAMMAR:' ],
'hiddencat' => [ '1', '__മറഞ്ഞിരിക്കുവർഗ്ഗ__', '__HIDDENCAT__' ],
'hiddencat' => [ '1', '__മറഞ്ഞിരിക്കുവർഗ്ഗ__', '__HIDDENCAT__' ],
'img_alt' => [ '1', 'പകരം=$1', 'alt=$1' ],
'img_baseline' => [ '1', 'താഴെയുള്ളവര', 'baseline' ],
'img_border' => [ '1', 'അതിർവര', 'border' ],
@ -256,7 +256,7 @@ $magicWords = [
'img_top' => [ '1', 'മേലെ', 'top' ],
'img_upright' => [ '1', 'നേരേകുത്തനെ', 'നേരേകുത്തനെ=$1', 'നേരേകുത്തനെ_$1', 'upright', 'upright=$1', 'upright $1' ],
'img_width' => [ '1', '$1ബിന്ദു', '$1px' ],
'index' => [ '1', '__സൂചിക__', '__INDEX__' ],
'index' => [ '1', '__സൂചിക__', '__INDEX__' ],
'int' => [ '0', 'സമ്പർക്കം:', 'INT:' ],
'language' => [ '0', '#ഭാഷ', '#LANGUAGE' ],
'localday' => [ '1', 'പ്രാദേശികദിവസം', 'LOCALDAY' ],
@ -333,7 +333,7 @@ $magicWords = [
'sitename' => [ '1', 'സൈറ്റിന്റെപേര്', 'SITENAME' ],
'special' => [ '0', 'പ്രത്യേകം', 'special' ],
'speciale' => [ '0', 'സവിശേഷം', 'speciale' ],
'staticredirect' => [ '1', '_സ്ഥിരസ്ഥിതതിരിച്ചുവിടൽ_', '__STATICREDIRECT__' ],
'staticredirect' => [ '1', '__സ്ഥിരസ്ഥിതതിരിച്ചുവിടൽ__', '_സ്ഥിരസ്ഥിതതിരിച്ചുവിടൽ_', '__STATICREDIRECT__' ],
'stylepath' => [ '0', 'സ്റ്റൈൽപഥം', 'STYLEPATH' ],
'subjectpagename' => [ '1', 'ലേഖനതാളിന്റെപേര്‌', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
'subjectpagenamee' => [ '1', 'ലേഖനതാളിന്റെപേര്‌സമഗ്രം', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],

View file

@ -84,6 +84,6 @@ $magicWords = [
'language' => [ '0', '#LHENGUA', '#IDIOMA', '#LANGUAGE' ],
'pagesize' => [ '1', 'TAMANHOFEXEIRO', 'TAMANHODAPAGINA', 'TAMANHODAPÁGINA', 'PAGESIZE' ],
'redirect' => [ '0', '#ANCAMINAR', '#REDIRECIONAMENTO', '#REDIRECT' ],
'staticredirect' => [ '1', '_ANCAMINARSTATICO_', '__REDIRECIONAMENTOESTATICO__', '__REDIRECIONAMENTOESTÁTICO__', '__STATICREDIRECT__' ],
'staticredirect' => [ '1', '__ANCAMINARSTATICO__', '_ANCAMINARSTATICO_', '__REDIRECIONAMENTOESTATICO__', '__REDIRECIONAMENTOESTÁTICO__', '__STATICREDIRECT__' ],
'tag' => [ '0', 'eitiqueta', 'tag' ],
];

View file

@ -190,7 +190,7 @@ $magicWords = [
'formatdate' => [ '0', 'ତାରିଖରପ୍ରକାର', 'formatdate', 'dateformat' ],
'gender' => [ '0', 'ଲିଙ୍ଗ', 'GENDER:' ],
'grammar' => [ '0', 'ବ୍ୟାକରଣ', 'GRAMMAR:' ],
'hiddencat' => [ '1', '_ଲୁଚିଥିବାବିଭାଗ_', '__HIDDENCAT__' ],
'hiddencat' => [ '1', '__ଲୁଚିଥିବାବିଭାଗ__', '_ଲୁଚିଥିବାବିଭାଗ_', '__HIDDENCAT__' ],
'img_baseline' => [ '1', 'ବେସଲାଇନ', 'baseline' ],
'img_border' => [ '1', 'ବର୍ଡର', 'border' ],
'img_bottom' => [ '1', 'ତଳ', 'bottom' ],
@ -221,9 +221,9 @@ $magicWords = [
'msg' => [ '0', 'ମେସେଜ:', 'MSG:' ],
'namespace' => [ '1', 'ନେମସ୍ପେସ', 'NAMESPACE' ],
'namespacee' => [ '1', 'ନେମସ୍ପେସକାରୀ', 'NAMESPACEE' ],
'newsectionlink' => [ '1', '_ନୂଆବିଭାଗଲିଙ୍କ_', '__NEWSECTIONLINK__' ],
'noeditsection' => [ '0', '_ବଦଳା_ନହେବାଶ୍ରେଣୀ_', '__NOEDITSECTION__' ],
'nonewsectionlink' => [ '1', '_ନୂଆ_ବିଭାଗ_ନକରିବା_ଲିଙ୍କ_', '__NONEWSECTIONLINK__' ],
'newsectionlink' => [ '1', '__ନୂଆବିଭାଗଲିଙ୍କ__', '_ନୂଆବିଭାଗଲିଙ୍କ_', '__NEWSECTIONLINK__' ],
'noeditsection' => [ '0', '__ବଦଳା_ନହେବାଶ୍ରେଣୀ__', '_ବଦଳା_ନହେବାଶ୍ରେଣୀ_', '__NOEDITSECTION__' ],
'nonewsectionlink' => [ '1', '__ନୂଆ_ବିଭାଗ_ନକରିବା_ଲିଙ୍କ__', '_ନୂଆ_ବିଭାଗ_ନକରିବା_ଲିଙ୍କ_', '__NONEWSECTIONLINK__' ],
'numberofactiveusers' => [ '1', 'ସଚଳ_ବ୍ୟବାହାରକାରୀଙ୍କ_ସଂଖ୍ୟା', 'NUMBEROFACTIVEUSERS' ],
'numberofadmins' => [ '1', 'ପରିଛାମାନଙ୍କତାଲିକା', 'NUMBEROFADMINS' ],
'numberofarticles' => [ '1', 'ଲେଖା_ସଂଖ୍ୟା', 'NUMBEROFARTICLES' ],

View file

@ -133,7 +133,7 @@ $magicWords = [
'numberofusers' => [ '1', 'GEAVAHEDDJIIDMEARRI', ' GEAVAHEADDJIMEARRI', ' GEAVAHEADDJEMEARRI', 'NUMBEROFUSERS' ],
'redirect' => [ '0', '#STIVREN', '#OĐĐASITSTIVREN', '#REDIRECT' ],
'subst' => [ '0', 'LIIBME:', 'SUBST:' ],
'toc' => [ '0', '__SISDOALLU__', ' __SIS__', '__TOC__' ],
'toc' => [ '0', '__SISDOALLU__', '__SIS__', '__TOC__' ],
];
$defaultDateFormat = 'mdy';

View file

@ -162,7 +162,7 @@ $magicWords = [
'fullpagenamee' => [ '1', 'PUNOIMESTRANEE', 'PUNOIMESTRANICEE', 'FULLPAGENAMEE' ],
'fullurl' => [ '0', 'PUNIURL:', 'PUNURL:', 'FULLURL:' ],
'fullurle' => [ '0', 'PUNIURLE:', 'PUNURLE:', 'FULLURLE:' ],
'hiddencat' => [ '1', '__SAKRIVENAKATEGORIJA__', 'SKRIVENAKAT', '__SAKRIVENAKAT__', '__HIDDENCAT__' ],
'hiddencat' => [ '1', '__SAKRIVENAKATEGORIJA__', '__SKRIVENAKAT__', 'SKRIVENAKAT', '__SAKRIVENAKAT__', '__HIDDENCAT__' ],
'img_baseline' => [ '1', 'osnovnacrta', 'pocetna_linija', 'baseline' ],
'img_border' => [ '1', 'granica', 'obrub', 'border' ],
'img_bottom' => [ '1', 'dno', 'bottom' ],

View file

@ -81,7 +81,7 @@ $magicWords = [
'img_right' => [ '1', 'oiged', 'paremal', 'right' ],
'img_top' => [ '1', 'üläh', 'top' ],
'img_width' => [ '1', '$1piks', '$1px' ],
'index' => [ '1', '__INDEKS__', 'INDEKSIGA', '__INDEX__' ],
'index' => [ '1', '__INDEKS__', '__INDEKSIGA__', 'INDEKSIGA', '__INDEX__' ],
'plural' => [ '0', 'ÄILUGU:', 'PLURAL:' ],
'sitename' => [ '1', 'SAITANNIMI', 'KOHANIMI', 'SITENAME' ],
];