[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [websites/wiki-kde-org/develop] extensions/ReplaceText: update replacetext extension
From:       Ingo Malchow <imalchow () kde ! org>
Date:       2012-08-22 13:39:55
Message-ID: 20120822133955.C2510A6042 () git ! kde ! org
[Download RAW message or body]

Git commit d3ebc54cf6cded8660938e637e30ecf207d124f5 by Ingo Malchow.
Committed on 22/08/2012 at 15:39.
Pushed by imalchow into branch 'develop'.

update replacetext extension

M  +2    -2    extensions/ReplaceText/README
M  +34   -19   extensions/ReplaceText/ReplaceText.alias.php
M  +315  -169  extensions/ReplaceText/ReplaceText.i18n.php
M  +5    -5    extensions/ReplaceText/ReplaceText.php
M  +25   -5    extensions/ReplaceText/ReplaceTextJob.php
M  +135  -113  extensions/ReplaceText/SpecialReplaceText.php

http://commits.kde.org/websites/wiki-kde-org/d3ebc54cf6cded8660938e637e30ecf207d124f5


diff --git a/extensions/ReplaceText/README b/extensions/ReplaceText/README
index 04ae265..2f40c66 100644
--- a/extensions/ReplaceText/README
+++ b/extensions/ReplaceText/README
@@ -1,6 +1,6 @@
 Replace Text Extension
 
-        Version 0.8.1
+        Version 0.9.3
         Yaron Koren and Niklas Laxström
 
 This is free software licenced under the GNU General Public Licence. \
Please @@ -28,7 +28,7 @@ \
http://www.mediawiki.org/wiki/Extension:Replace_Text  
 == Requirements ==
 
-This version of the Replace Text extension requires MediaWiki 1.13 or \
higher. +This version of the Replace Text extension requires MediaWiki 1.16 \
or higher.  
 == Installation ==
 
diff --git a/extensions/ReplaceText/ReplaceText.alias.php \
b/extensions/ReplaceText/ReplaceText.alias.php index 25a9681..04cafae \
                100644
--- a/extensions/ReplaceText/ReplaceText.alias.php
+++ b/extensions/ReplaceText/ReplaceText.alias.php
@@ -23,6 +23,11 @@ $specialPageAliases['arz'] = array(
 	'ReplaceText' => array( 'تبديل_نص' ),
 );
 
+/** Breton (Brezhoneg) */
+$specialPageAliases['br'] = array(
+	'ReplaceText' => array( 'Erlc\'hiañTestenn' ),
+);
+
 /** Bosnian (Bosanski) */
 $specialPageAliases['bs'] = array(
 	'ReplaceText' => array( 'ZamjenaTeksta' ),
@@ -43,6 +48,11 @@ $specialPageAliases['dv'] = array(
 	'ReplaceText' => array( 'ލިޔުން ބަދަލުކުރައްވާ' ),
 );
 
+/** Persian (فارسی) */
+$specialPageAliases['fa'] = array(
+	'ReplaceText' => array( 'جایگزینی_متن' ),
+);
+
 /** Finnish (Suomi) */
 $specialPageAliases['fi'] = array(
 	'ReplaceText' => array( 'Korvaa' ),
@@ -50,17 +60,17 @@ $specialPageAliases['fi'] = array(
 
 /** French (Français) */
 $specialPageAliases['fr'] = array(
-	'ReplaceText' => array( 'Remplacer texte', 'RemplacerTexte' ),
+	'ReplaceText' => array( 'Remplacer_texte', 'RemplacerTexte' ),
 );
 
 /** Franco-Provençal (Arpetan) */
 $specialPageAliases['frp'] = array(
-	'ReplaceText' => array( 'Remplaciér lo tèxto', 'RemplaciérLoTèxto' ),
+	'ReplaceText' => array( 'Remplaciér_lo_tèxto', 'RemplaciérLoTèxto' ),
 );
 
 /** Galician (Galego) */
 $specialPageAliases['gl'] = array(
-	'ReplaceText' => array( 'Substituír o texto' ),
+	'ReplaceText' => array( 'Substituír_o_texto' ),
 );
 
 /** Swiss German (Alemannisch) */
@@ -83,9 +93,14 @@ $specialPageAliases['hsb'] = array(
 	'ReplaceText' => array( 'Tekst narunać' ),
 );
 
+/** Haitian (Kreyòl ayisyen) */
+$specialPageAliases['ht'] = array(
+	'ReplaceText' => array( 'RanplaseTeks' ),
+);
+
 /** Hungarian (Magyar) */
 $specialPageAliases['hu'] = array(
-	'ReplaceText' => array( 'Szöveg csere' ),
+	'ReplaceText' => array( 'Szöveg_csere' ),
 );
 
 /** Interlingua (Interlingua) */
@@ -143,9 +158,14 @@ $specialPageAliases['mt'] = array(
 	'ReplaceText' => array( 'BiddelTest' ),
 );
 
+/** Norwegian Bokmål (‪Norsk (bokmål)‬) */
+$specialPageAliases['nb'] = array(
+	'ReplaceText' => array( 'Teksterstatning' ),
+);
+
 /** Nedersaksisch (Nedersaksisch) */
 $specialPageAliases['nds-nl'] = array(
-	'ReplaceText' => array( 'Tekse_vervangen' ),
+	'ReplaceText' => array( 'Tekste_vervangen' ),
 );
 
 /** Dutch (Nederlands) */
@@ -153,11 +173,6 @@ $specialPageAliases['nl'] = array(
 	'ReplaceText' => array( 'TekstVervangen' ),
 );
 
-/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬) */
-$specialPageAliases['no'] = array(
-	'ReplaceText' => array( 'Teksterstatning' ),
-);
-
 /** Occitan (Occitan) */
 $specialPageAliases['oc'] = array(
 	'ReplaceText' => array( 'Remplaçar tèxte', 'RemplaçarTèxte' ),
@@ -165,7 +180,7 @@ $specialPageAliases['oc'] = array(
 
 /** Portuguese (Português) */
 $specialPageAliases['pt'] = array(
-	'ReplaceText' => array( 'Substituir texto' ),
+	'ReplaceText' => array( 'Substituir_texto' ),
 );
 
 /** Slovak (Slovenčina) */
@@ -178,9 +193,14 @@ $specialPageAliases['sq'] = array(
 	'ReplaceText' => array( 'ZëvendësoTekstin' ),
 );
 
-/** Serbian Cyrillic ekavian (Српски (ћирилица)) */
+/** Serbian (Cyrillic script) (‪Српски (ћирилица)‬) */
 $specialPageAliases['sr-ec'] = array(
-	'ReplaceText' => array( 'ЗамениТекст' ),
+	'ReplaceText' => array( 'ЗамениТекст', \
'Замени_текст' ), +);
+
+/** Swedish (Svenska) */
+$specialPageAliases['sv'] = array(
+	'ReplaceText' => array( 'Ersätt_text' ),
 );
 
 /** Swahili (Kiswahili) */
@@ -201,9 +221,4 @@ $specialPageAliases['tr'] = array(
 /** Vèneto (Vèneto) */
 $specialPageAliases['vec'] = array(
 	'ReplaceText' => array( 'SostuituissiTesto' ),
-);
-
-/**
- * For backwards compatibility with MediaWiki 1.15 and earlier.
- */
-$aliases =& $specialPageAliases;
\ No newline at end of file
+);
\ No newline at end of file
diff --git a/extensions/ReplaceText/ReplaceText.i18n.php \
b/extensions/ReplaceText/ReplaceText.i18n.php index 2013c8b..04bfb7b 100644
--- a/extensions/ReplaceText/ReplaceText.i18n.php
+++ b/extensions/ReplaceText/ReplaceText.i18n.php
@@ -20,6 +20,8 @@ You will then be shown a list of pages that contain the \
search text, and you can  Your name will appear in page histories as the \
user responsible for any changes.',  'replacetext_originaltext' => \
'Original text:',  'replacetext_replacementtext' => 'Replacement text:',
+	'replacetext_useregex' => 'Use regular expressions',
+	'replacetext_regexdocu' => '(Example: values of "a(.*)c" for "Original \
text" and "ac$1" for "Replacement text" would replace "abc" with "acb".)',  \
'replacetext_optionalfilters' => 'Optional filters:',  \
'replacetext_categorysearch' => 'Replace only in category:',  \
'replacetext_prefixsearch' => 'Replace only in pages with the prefix:', @@ \
-44,7 +46,6 @@ Your name will appear in page histories as the user \
responsible for any changes.  'replacetext_warning' => "'''Warning:''' \
There {{PLURAL:$1|is $1 page that already contains|are $1 pages that \
already contain}} the replacement string, \"$2\". If you make this \
replacement you will not be able to separate your replacements from these \
strings.",  'replacetext_blankwarning' => "'''Warning:''' Because the \
replacement string is blank, this operation will not be reversible.",  \
                'replacetext_continue' => 'Continue',
-	'replacetext_cancel' => '(Click the "Back" button in your browser to \
cancel the operation.)',  // content messages
 	'replacetext_editsummary' => 'Text replace - "$1" to "$2"',
 	'right-replacetext' => 'Do string replacements on the entire wiki',
@@ -54,9 +55,11 @@ Your name will appear in page histories as the user \
                responsible for any changes.
  * @author Darth Kule
  * @author EugeneZelenko
  * @author Fryed-peach
+ * @author Kwj2772
  * @author McMonster
  * @author Nike
  * @author Purodha
+ * @author Umherirrender
  */
 $messages['qqq'] = array(
 	'replacetext' => "This message is displayed as a title of this \
extension's special page.", @@ -65,12 +68,14 @@ $messages['qqq'] = array(
 {{Identical|Content page}}',
 	'replacetext_docu' => "Description of how to use this extension, \
displayed on the extension's special page ([[Special:ReplaceText]]).",  \
'replacetext_originaltext' => 'Label of the text field, where user enters \
original piece of text, which would be replaced.', \
+	'replacetext_regexdocu' => '* "Original text" - \
{{msg-mw|replacetext_originaltext}} +* "Replacement text" - \
{{msg-mw|replacetext_replacementtext}}',  'replacetext_choosepagesforedit' \
=> 'Displayed over the list of pages where the given text was found.',  \
'replacetext_replace' => 'Label of the button, which triggers the begin of \
replacment.  
 {{Identical|Replace}}',
 	'replacetext_continue' => '{{Identical|Continue}}',
-	'right-replacetext' => '{{doc-right}}',
+	'right-replacetext' => '{{doc-right|replacetext}}',
 );
 
 /** Afrikaans (Afrikaans)
@@ -105,7 +110,6 @@ $messages['af'] = array(
 	'replacetext_blankwarning' => 'Omdat u teks met niks vervang kan hierdie \
aksie nie ongedaan gemaak word nie.  Wil u voortgaan?',
 	'replacetext_continue' => 'Gaan voort',
-	'replacetext_cancel' => '(Kliek op die "Terug"-knoppie in u webblaaier om \
hierdie operasie te kanselleer.)',  'replacetext_editsummary' => "Teks \
vervang - '$1' na '$2'",  'right-replacetext' => 'Doen vervangings oor die \
hele wiki',  );
@@ -146,7 +150,6 @@ $messages['ar'] = array(
 	'replacetext_warning' => "'''تحذير''': توجد \
{{PLURAL:$1||صفحة واحدة تحتوي|صفحتان تحتويان|$1 \
صفحات تحتوي|$1 صفحة تحتوي}} بالفعل على \
سلسلة الاستبدال '$2'. إذا قمت بهذا \
الاستبدال فلن تصبح قادرًا على فصل \
استبدالاتك عن هذه السلاسل.",  \
'replacetext_blankwarning' => 'لأن سلسلة الاستبدال \
فارغة، هذه العملية لن تكون عكسية؛ \
استمر؟',  'replacetext_continue' => 'استمر',
-	'replacetext_cancel' => '(اضغط زر "رجوع" في متصفحك \
لإلغاء العملية.)',  'replacetext_editsummary' => \
"استبدال النص - '$1' ب'$2'",  'right-replacetext' => \
'القيام باستبدال للسلاسل في الويكي \
بأكمله',  );
@@ -186,14 +189,63 @@ $messages['arz'] = array(
 استمرار مع الاستبدال؟",
 	'replacetext_blankwarning' => 'لأن سلسلة الاستبدال \
فارغة، هذه العملية لن تكون عكسية؛ \
استمر؟',  'replacetext_continue' => 'استمر',
-	'replacetext_cancel' => '(اضغط زر "رجوع" علشان إلغاء \
العملية.)',  'replacetext_editsummary' => "استبدال النص - \
'$1' ب'$2'",  'right-replacetext' => 'القيام باستبدال \
للسلاسل فى الويكى بأكمله',  );
 
-/** Belarusian (Taraškievica orthography) (Беларуская \
(тарашкевіца)) +/** Azerbaijani (Azərbaycanca)
+ * @author Cekli829
+ */
+$messages['az'] = array(
+	'replacetext_originaltext' => 'Orijinal mətn:',
+);
+
+/** Bashkir (Башҡортса)
+ * @author Assele
+ */
+$messages['ba'] = array(
+	'replacetext' => 'Тексты алмаштырырға',
+	'replacetext-desc' => 'Хәкимдәргә бөтә эстәлек \
биттәрендә тексты табып алмаштырырға \
мөмкинлек биреүсе [[Special:ReplaceText|махсус \
бит]] менән тәьмин итә', +	'replacetext_docu' => 'Был \
викиның бөтә биттәрендә бер текст юлын \
икенсе менән алмаштырыр өсөн, ике текст \
керетегеҙ һәм "Дауам итергә" төймәһенә \
баҫығыҙ. +Артабан һеҙгә эҙләнгән тексты \
үҙ эсенә алған биттәр исемлеге \
күрһәтеләсәк, һеҙ улар араһында \
алмаштырырға теләгәндәрен һайлай \
алаһығыҙ. +Һеҙҙең исемегеҙ биттәрҙең \
үҙгәртеү тарихтарында үҙгәртеүҙәргә \
яуаплы ҡатнашыусы булараҡ \
күрһәтеләсәк.', +	'replacetext_originaltext' => 'Сығанаҡ \
текст:', +	'replacetext_replacementtext' => 'Алмаш текст:',
+	'replacetext_useregex' => ' егуляр аңлатмаларҙы \
ҡулланырға', +	'replacetext_regexdocu' => '(Миҫал: \
"Сығанаҡ текст" өсөн "a(.*)c" аңлатмаһы һәм \
"Алмаш текст" өсөн "ac$1" "abc" тексын "acb" тип \
алмаштырасаҡ.)', +	'replacetext_optionalfilters' => 'Мөһим \
булмаған һөҙгөстәр:', +	'replacetext_categorysearch' => \
'Был категорияла ғына алмаштырырға:', \
+	'replacetext_prefixsearch' => 'Ошо хәрефтәр менән \
башланған биттәрҙә генә алмаштырырға:', \
+	'replacetext_editpages' => 'Тексты бит \
эстәлектәрендә алмаштырырға', \
+	'replacetext_movepages' => 'Тексты бит исемдәрендә, \
мөмкин булһа, алмаштырырға', \
+	'replacetext_givetarget' => 'Һеҙ алмаштырыла торған \
юлды күрһәтергә тейешһегеҙ.', \
+	'replacetext_nonamespace' => 'Һеҙ кәмендә бер исемдәр \
арауығын һайларға тейешһегеҙ.', \
+	'replacetext_editormove' => 'Һеҙ кәмендә бер \
алмаштырыу төрөн һайларға тейешһегеҙ.', \
+	'replacetext_choosepagesforedit' => '"$1" тексын "$2" менән \
түбәндәге {{PLURAL:$3|биттә|биттәрҙә}} \
алмаштырырға:', +	'replacetext_choosepagesformove' => '"$1" \
тексын "$2" менән түбәндәге бит \
{{PLURAL:$3|исемендә|исемдәрендә}} \
алмаштырырға:', +	'replacetext_cannotmove' => \
'Түбәндәге {{PLURAL:$1|биттең|биттәрҙең}} \
исемен үҙгәртеп булмай:', +	'replacetext_formovedpages' \
=> 'Исемдәре үҙгәртелгән биттәр өсөн:', \
+	'replacetext_savemovedpages' => 'Иҫке исемдәрен яңы \
исемдәргә йүнәлтеүҙәр рәүешендә \
һаҡларға', +	'replacetext_watchmovedpages' => 'Был \
биттәрҙе күҙәтеүҙәр исемлегенә \
индерергә', +	'replacetext_invertselections' => \
'Һайланғандарҙы әйләндерергә', \
+	'replacetext_replace' => 'Алмаштырырға', \
+	'replacetext_success' => '"$1" "$2" менән $3 \
{{PLURAL:$3|биттә}} алмаштырыласаҡ.', \
+	'replacetext_noreplacement' => '"$1" юлын үҙ эсенә алған \
бер бит тә табылманы.', +	'replacetext_nomove' => \
'Исемендә "$1" булған бер бит тә \
табылманы.', +	'replacetext_nosuchcategory' => '"$1" исемле \
бер категория ла юҡ.', +	'replacetext_return' => \
'Формаға кире ҡайтырға.', +	'replacetext_warning' => \
"'''Иғтибар:''' Алмаш \"\$2\" тексын үҙ эсенә \
алған {{PLURAL:\$1|\$1 бит}} бар инде. Әгәр һеҙ \
алмаштырыуҙы башҡарһағыҙ, алмаштырылған \
текстарҙы булғандарынан айыра \
алмаясаҡһығыҙ.", +	'replacetext_blankwarning' => \
"'''Иғтибар:'''Алмаш текст буш булғанға \
күрә, был ғәмәлде кире алыу мөмкин \
түгел.", +	'replacetext_continue' => 'Дауам итергә',
+	'replacetext_editsummary' => '"$1" тексын "$2" менән \
алмаштырыу', +	'right-replacetext' => 'Бөтә викила \
тексты алмаштырыу', +);
+
+/** Belarusian (Taraškievica orthography) (‪Беларуская \
                (тарашкевіца)‬)
  * @author EugeneZelenko
  * @author Jim-by
+ * @author Wizardist
+ * @author Zedlik
  */
 $messages['be-tarask'] = array(
 	'replacetext' => 'Замяніць тэкст',
@@ -201,6 +253,8 @@ $messages['be-tarask'] = array(
 	'replacetext_docu' => "Каб замяніць адзін радок на \
іншы ва ўсіх звычайных старонках \
{{GRAMMAR:родны|{{SITENAME}}}}, увядзіце два радкі \
тут, а потым націсьніце 'Працягваць'. \
Будзе паказаны сьпіс старонак, якія \
ўтрымліваюць тэкст, які Вы шукалі, і Вы \
зможаце выбраць старонкі, дзе Вы жадаеце \
зрабіць замену. Ваша імя будзе запісанае \
ў гісторыю старонкі, таму што ўдзельнікі \
адказныя за ўсе зробленыя зьмены.",  \
'replacetext_originaltext' => 'Арыгінальны тэкст:',  \
'replacetext_replacementtext' => 'Тэкст на замену:', \
+	'replacetext_useregex' => 'Выкарыстоўваць \
рэгулярныя выразы', +	'replacetext_regexdocu' => \
'(Напрыклад, выразы  a(.*)c  ў полі  \
Арыгінальны тэкст  і  ac$1  у полі  Тэкст \
на замену  прывядуць да замены  abc  на  acb \
.)',  'replacetext_optionalfilters' => 'Неабавязковыя \
фільтры:',  'replacetext_categorysearch' => 'Замяніць \
толькі ў катэгорыі:',  'replacetext_prefixsearch' => \
'Замяніць толькі ў старонках, назвы якіх \
пачынаюцца з:', @@ -208,7 +262,7 @@ $messages['be-tarask'] = \
array(  'replacetext_movepages' => 'Замяніць тэкст у \
назвах старонак, калі гэта магчыма',  \
'replacetext_givetarget' => 'Вам неабходна пазначыць \
радок для замены.',  'replacetext_nonamespace' => 'Вам \
неабходна выбраць хаця б адну прастору \
                назваў.',
-	'replacetext_editormove' => 'Вам неабходна выбраць \
хаця б адну з установак пераносу.', \
+	'replacetext_editormove' => 'Вам неабходна выбраць \
хаця б адну з наладаў пераносу.',  \
'replacetext_choosepagesforedit' => 'Калі ласка, выберыце \
{{PLURAL:$3|старонку, у якой|старонкі, у якіх}} \
Вы жадаеце замяніць  $1  на  $2 :',  \
'replacetext_choosepagesformove' => 'Замяніць  $1  на  $2  у \
{{PLURAL:$3|назьве наступнай старонкі|назвах \
наступных старонак}}:',  'replacetext_cannotmove' => \
'{{PLURAL:$1|Наступная старонка ня можа быць \
перанесена|Наступныя старонкі ня могуць \
быць перанесены}}:', @@ -227,7 +281,6 @@ \
$messages['be-tarask'] = array(  'replacetext_blankwarning' => 'У \
выніку таго, што радок, на які павінна \
адбыцца замена, пусты, апэрацыя ня будзе \
выкананая.  Вы жадаеце працягваць?',
 	'replacetext_continue' => 'Працягваць',
-	'replacetext_cancel' => '(Націсьніце кнопку  \
Вярнуцца  у Вашым браўзэры, каб адмяніць \
апэрацыю.)',  'replacetext_editsummary' => 'Замена \
тэксту:  $1  на  $2 ',  'right-replacetext' => 'замена \
тэксту ва ўсёй вікі',  );
@@ -246,15 +299,20 @@ $messages['bg'] = array(
 	'replacetext_noreplacement' => "Не бяха открити \
страници, съдържащи низа '$1'.",  \
'replacetext_blankwarning' => 'Тъй като низът за \
заместване е празен, процесът на \
заместване е необратим; продължаване?',  \
                'replacetext_continue' => 'Продължаване',
-	'replacetext_cancel' => '(натиснете бутона „Back" за \
прекратяване на действието.)',  \
'replacetext_editsummary' => "Заместване на текст - '$1' \
на '$2'",  );
 
 /** Bengali (বাংলা)
  * @author Bellayet
+ * @author Wikitanvir
  */
 $messages['bn'] = array(
 	'replacetext' => 'লেখা প্রতিস্থাপন',
+	'replacetext_originaltext' => 'মূল লেখা:',
+	'replacetext_replacementtext' => 'প্রতিস্থাপিত \
লেখা:', +	'replacetext_useregex' => 'রেগুলার \
এক্সপ্রেশন ব্যবহার করো', \
+	'replacetext_optionalfilters' => 'ঐচ্ছিক \
ফিল্টার', +	'replacetext_categorysearch' => \
'শুধুমাত্র বিষয়শ্রেণীতেই \
প্রতিস্থাপন করো:',  );
 
 /** Breton (Brezhoneg)
@@ -270,6 +328,8 @@ Diskouezet e vo deoc'h ur roll pajennoù m'emañ an \
destenn klasket enno ha gall  War wel e teuio hoc'h anv war roll istor pep \
pajenn evit ma vo gouezet gant piv eo bet graet ar cheñchamant.",  \
'replacetext_originaltext' => 'Testenn orin :',  \
'replacetext_replacementtext' => "Testenn erlec'hiañ :", \
+	'replacetext_useregex' => 'Ober gant jedadennoù reoliek', \
+	'replacetext_regexdocu' => '(Da skouer : Talvoudenn "a(.*)c" evit \
"Testenn orin" ha "ac$1" evit "Testenn erlec\'hiañ" a vo erlec\'ho "abc" \
gant "acb".)',  'replacetext_optionalfilters' => 'Siloù diret :',
 	'replacetext_categorysearch' => "Erlec'hiañ er rummad hepken :",
 	'replacetext_prefixsearch' => "Erlec'hiañ hepken er bajennoù gant ar \
rakger :", @@ -294,7 +354,6 @@ War wel e teuio hoc'h anv war roll istor pep \
pajenn evit ma vo gouezet gant piv  'replacetext_warning' => "'''Diwallit \
:''' {{PLURAL:\$1| \$1 bajenn enni| \$1 pajenn enno}} ar steudad \
arouezennoù erlec'hiañ zo dija, \"\$2\". Ma kasit ar cheñchamant da benn \
ne vo ket posupl diforc'hañ ar cheñchamantoù degaset ganeoc'h diouzh an \
neudennadoù-se ken.",  'replacetext_blankwarning' => "'''Diwallit : ''' \
Dre m'eo goullo ar steudad erlec'hiañ, ne vo ket tu da zizober an \
urzh-mañ.",  'replacetext_continue' => "Kenderc'hel",
-	'replacetext_cancel' => '(Evit nulañ an ober klikit war ar bouton \
"Disto" en ho merdeer.)',  'replacetext_editsummary' => 'Erlec\'hiañ an \
destenn - "$1" dre "$2"',  'right-replacetext' => "Krouiñ erlec'hiadurioù \
testenn er wiki a-bezh",  );
@@ -308,6 +367,8 @@ $messages['bs'] = array(
 	'replacetext_docu' => "Da bi ste zamijenili jedan tekst s drugim po svim \
regularnim stranicama na ovom wikiju, unesite dva dijela teksta ovdje i \
kliknite 'Nastavi'. Prikazat će Vam se spisak stranica koje sadrže \
traženi tekst, i možete odabrati one kod kojih želite taj tekst \
zamijeniti. Vaše ime će se prikazati na historiji izmjena stranice kao \
korisnika koji je odgovoran za sve promjene.",  'replacetext_originaltext' \
=> 'Prvobitni tekst:',  'replacetext_replacementtext' => 'Tekst za \
zamjenu:', +	'replacetext_useregex' => 'Koristi regularne izraze',
+	'replacetext_regexdocu' => '(Primjer: vrijednosti od "a(.*)c" za \
"Prvobitni tekst" i "ac$1" za "Novi tekst" će zamijeniti "abc" sa \
"acb".)',  'replacetext_optionalfilters' => 'Opcionalni filteri:',
 	'replacetext_categorysearch' => 'Zamijeni samo u kategoriji:',
 	'replacetext_prefixsearch' => 'Zamijeni samo na stranicama sa \
prefiksom:', @@ -334,16 +395,17 @@ Ako želite napraviti ovu zamjenu \
nećete biti u mogućnosti da razdvojite Vaše  'replacetext_blankwarning' \
=> 'Pošto je zamjenski tekst prazan, ovu operaciju neće biti moguće \
vratiti.  Da li želite nastaviti?',
 	'replacetext_continue' => 'Nastavi',
-	'replacetext_cancel' => '(Kliknite na dugme "Nazad" u Vašem pregledniku \
da bi zaustavili operaciju.)',  'replacetext_editsummary' => "Zamjena \
teksta - '$1' u '$2'",  'right-replacetext' => 'Pravljenje zamjene teksta \
na cijelom wikiju',  );
 
 /** Catalan (Catal )
+ * @author SMP
  * @author Solde
  */
 $messages['ca'] = array(
 	'replacetext_continue' => 'Continua',
+	'right-replacetext' => 'Fer substitucions de cadena a tot el wiki',
 );
 
 /** Chechen (Нохчийн)
@@ -367,7 +429,6 @@ Vaše jméno se objeví v historiích stránek jako \
osoba zodpovědná za přís  'replacetext_replacementtext' => 'Nahradit \
textem:',  'replacetext_replace' => 'Nahradit',
 	'replacetext_continue' => 'Pokračovat',
-	'replacetext_cancel' => '(Operaci zrušíte kliknutím na tlačítko \
„Zpět" ve vašem prohlížeči.)',  'replacetext_editsummary' => \
'Nahrazení textu „$1" textem „$2"',  'right-replacetext' => 'Hledání \
a nahrazování textu na celé wiki',  );
@@ -383,9 +444,11 @@ Vaše jméno se objeví v historiích stránek jako \
osoba zodpovědná za přís  $messages['de'] = array(
 	'replacetext' => 'Text ersetzen',
 	'replacetext-desc' => 'Ergänzt eine \
[[Special:ReplaceText|Spezialseite]], die eine globale \
                Text-suchen-und-ersetzen-Operation auf allen Inhaltsseiten \
                ermöglicht',
-	'replacetext_docu' => 'Um einen Text durch einen anderen Text auf allen \
Inhaltsseiten zu ersetzen, gib die beiden Textteile hier ein und klicke auf \
die Ersetzen-Schaltfläche. Dein Benutzername wird in der \
Versionsgeschichte aufgenommen.', +	'replacetext_docu' => 'Um einen Text \
durch einen anderen Text auf allen Inhaltsseiten zu ersetzen, gib hier die \
beiden Textteile ein und klicke danach auf die \
„Fortsetzen"-Schaltfläche. Auf der dann folgenden Seite erhält man eine \
Aufzählung der Seiten, die den zu ersetzenden Text enthalten. Dort kann \
man auch auswählen, auf welchen Seiten die Ersetzungen durchgeführt \
werden sollen. Dein Benutzername wird während der Ersetzungen in der \
Versionsgeschichte aufgenommen.',  'replacetext_originaltext' => \
'Originaltext:',  'replacetext_replacementtext' => 'Neuer Text:',
+	'replacetext_useregex' => 'Platzhalter und reguläre Ausdrücke \
verwenden', +	'replacetext_regexdocu' => '(Beispiel: Die Werte für \
„a(.*)c" für „Originaltext" und „ac$1" für „Neuer Text" würden \
zur Ersetzung „abc" durch „acb" führen.)',  \
'replacetext_optionalfilters' => 'Optionale Filter:',  \
'replacetext_categorysearch' => 'Ersetze nur in der Kategorie:',  \
'replacetext_prefixsearch' => 'Ersetze nur in Seiten mit dem Präfix:', @@ \
-411,24 +474,22 @@ $messages['de'] = array(  Sofern du nun die \
{{PLURAL:$1|Ersetzung|Ersetzungen}} durchführst, ist eine spätere \
Unterscheidung zwischen den nunmehr zu ersetzenden und den bereits \
vorhandenen Textteilen nicht mehr möglich.",  'replacetext_blankwarning' \
=> "'''Warnung:''' Da der zu ersetzende Textteil leer ist, kann die \
Operation nicht rückgängig gemacht werden. Möchtest du dennoch \
fortfahren?",  'replacetext_continue' => 'Fortfahren',
-	'replacetext_cancel' => '(Klicke auf die „Zurück"-Schaltfläche, um \
die Operation abzubrechen.)',  'replacetext_editsummary' => 'Textersetzung \
- „$1" durch „$2"',  'right-replacetext' => 'Textersetzung für das \
gesamte Wiki durchführen',  );
 
-/** German (formal address) (Deutsch (Sie-Form))
+/** German (formal address) (‪Deutsch (Sie-Form)‬)
  * @author Imre
  * @author Kghbln
  * @author Umherirrender
  */
 $messages['de-formal'] = array(
-	'replacetext_docu' => 'Um einen Text durch einen anderen Text auf allen \
Inhaltsseiten zu ersetzen, geben Sie die beiden Textteile hier ein und \
klicken Sie auf die Ersetzen-Schaltfläche. Ihr Benutzername wird in der \
Versionsgeschichte aufgenommen.', +	'replacetext_docu' => 'Um einen Text \
durch einen anderen Text auf allen Inhaltsseiten zu ersetzen, geben Sie \
hier die beiden Textteile ein und klicken danach auf die \
„Fortsetzen"-Schaltfläche. Auf der dann folgenden Seite erhält man eine \
Aufzählung der Seiten, die den zu ersetzenden Text enthalten. Dort kann \
man auch auswählen, auf welchen Seiten die Ersetzungen durchgeführt \
werden sollen. Ihr Benutzername wird während der Ersetzungen in der \
Versionsgeschichte aufgenommen.',  'replacetext_givetarget' => 'Sie müssen \
eine Zeichenkette angeben, die ersetzt werden soll.',  \
'replacetext_editormove' => 'Sie müssen mindestens eine Ersetzungsoption \
wählen.',  'replacetext_warning' => "'''Warnung:''' $1 {{PLURAL:$1|Seite \
enthält|Seiten enthalten}} bereits den zu ersetzenden Textteil „$2".  \
Sofern Sie nun die {{PLURAL:$1|Ersetzung|Ersetzungen}} durchführen, ist \
eine spätere Unterscheidung zwischen den nunmehr zu ersetzenden und den \
bereits vorhandenen Textteilen nicht mehr möglich.",  \
'replacetext_blankwarning' => "'''Warnung:''' Da der zu ersetzende Textteil \
leer ist, kann die Operation nicht rückgängig gemacht werden. Möchten \
                Sie dennoch fortfahren?",
-	'replacetext_cancel' => '(Klicken Sie auf die „Zurück"-Schaltfläche, \
um die Operation abzubrechen.)',  );
 
 /** Lower Sorbian (Dolnoserbski)
@@ -440,6 +501,8 @@ $messages['dsb'] = array(
 	'replacetext_docu' => "Aby wuměnił tekst pśez drugi tekst na wšych \
regularnych bokach w toś tom wikiju, zapódaj wobej tekstowej źěla a \
klikni na 'Dalej'. Buźoš pótom lisćinu bokow wiźeś, kótarež \
wopśimuju pytański tekst a móžoš wubraś te, w kótarychž coš jen \
wuměniś. Twójo mě zjawijo se w stawiznach boka ako wužywaŕ, kótaryž \
jo zagronity za te změny.",  'replacetext_originaltext' => 'Originalny \
tekst:',  'replacetext_replacementtext' => 'Tekst pó wuměnjenju:',
+	'replacetext_useregex' => 'Regularne wuraze wužywaś',
+	'replacetext_regexdocu' => '(Pśikład: gódnoty za "a(.*)c" za \
"originalny tekst" a "ac$1" za "nowy tekst" by "abc" pśez "acb" \
wuměnili.)',  'replacetext_optionalfilters' => 'Opcionalne filtry:',
 	'replacetext_categorysearch' => 'Jano w kategoriji wuměniś:',
 	'replacetext_prefixsearch' => 'Jano w bokach wuměniś z prefiksom:',
@@ -465,7 +528,6 @@ $messages['dsb'] = array(
 Jolic wuwjedujoš toś tu wuměnu, njamóžoš rozeznaś swóje wuměny \
wót toś togo teksta.',  'replacetext_blankwarning' => 'Dokulaž njejo \
tekst za wuměnjenje, toś ta operacija njedajo se anulěrowaś. Coš weto \
pókšacowaś?',  'replacetext_continue' => 'Dalej',
-	'replacetext_cancel' => '(Klikni na tłocašk "Slědk" w swójom \
wobglědowaku, aby pśetergnuł operaciju.)',  'replacetext_editsummary' => \
"Wuměna teksta - '$1' do '$2'",  'right-replacetext' => 'Tekst na cełem \
wikiju wuměniś',  );
@@ -562,7 +624,6 @@ Si realizas esta sustituación, no podrás separar tus \
sustituciones de estas ca  'replacetext_blankwarning' => 'Como la cadena de \
reemplazo está vacía, esta operación no podrá revertirse.   Desea \
continuar ?',  'replacetext_continue' => 'Continuar',
-	'replacetext_cancel' => '(Haga click en el botón "retroceder" en su \
navegador para cancelar la operación.)',  'replacetext_editsummary' => \
"Texto reemplaza - '$1' a '$2'",  'right-replacetext' => 'Reemplaza cadenas \
de caracteres en toda la wiki',  );
@@ -581,27 +642,48 @@ $messages['eu'] = array(
 	'replacetext_replace' => 'Ordeztu',
 	'replacetext_noreplacement' => "Ez da aurkitu '$1' karaktere-katea duen \
orrialderik.",  'replacetext_continue' => 'Jarraitu',
-	'replacetext_cancel' => '(Zure nabigatzailearen atzerako botoia sakatu \
ekintza deuseztatzeko.)',  'replacetext_editsummary' => "Testu aldaketa - \
'$1'(e)tik '$2'(e)ra.",  );
 
 /** Persian (فارسی)
+ * @author Ebraminio
  * @author Huji
+ * @author Wayiran
  */
 $messages['fa'] = array(
 	'replacetext' => 'جایگزینی متن',
 	'replacetext-desc' => 'یک [[Special:ReplaceText|صفحهٔ ویژه]] \
اضافه می‌کند که به مدیران اجازه می‌دهد \
یک جستجو و جایگزینی سراسری در تمام محتوای \
ویکی انجام دهند',  'replacetext_docu' => 'برای \
جایگزین کردن یک رشتهٔ متنی با رشته دیگر \
در کل داده‌های این ویکی، شما می‌توانید \
دو متن را در زیر وارد کرده و دکمهٔ  \
جایگزین کن  را بزنید. اسم شما در تاریخچهٔ \
صفحه‌ها به عنوان کاربری که مسئول این \
                تغییرها است ثبت می‌شود.',
-	'replacetext_originaltext' => 'متن اصلی',
-	'replacetext_replacementtext' => 'متن جایگزین',
+	'replacetext_originaltext' => 'متن اصلی:',
+	'replacetext_replacementtext' => 'متن جایگزین:',
+	'replacetext_useregex' => 'استفاده از عبارت \
باقاعده', +	'replacetext_regexdocu' => '(مثال: مقادیر  \
a(.*)c  برای  متن اصلی  و  ac$1  برای  متن \
جایگزین ،  abc  را با  acb  جایگزین خواهد \
کرد.)', +	'replacetext_optionalfilters' => 'پالایه‌های \
اختیاری:', +	'replacetext_categorysearch' => 'جایگزینی \
فقط در ردهٔ:', +	'replacetext_prefixsearch' => 'جایگزینی \
فقط در صفحه‌هایی با پیشوند:', \
+	'replacetext_editpages' => 'جایگزینی متن در محتویات \
صفحه', +	'replacetext_movepages' => 'جایگزینی متن و در \
عنوان صفحه‌ها، وقتی که امکان‌پذیر است', \
+	'replacetext_givetarget' => 'شما می‌بایست متنی را که \
باید جایگزین شود مشخص نمایید.', \
+	'replacetext_nonamespace' => 'شما می‌بایست حداقل یک \
فضای نام را انتخاب کنید.', +	'replacetext_editormove' => \
'شما می‌بایست حداقل یکی از گزینه‌های \
جایگزین کردن را انتخاب کنید.', \
+	'replacetext_choosepagesforedit' => 'جایگزینی  $1  با  $2  \
در متن این {{PLURAL:$3|صفحه|صفحه‌ها}}:', \
+	'replacetext_choosepagesformove' => 'جایگزینی  $1  با  $2  \
در {{PLURAL:$3|عنوان این صفحه|عنوان این \
صفحه‌ها}}', +	'replacetext_cannotmove' => 'این \
{{PLURAL:$1|صفحه|صفحه‌ها}} نمی‌توانند منتقل \
شوند:', +	'replacetext_formovedpages' => 'برای صفحه‌های \
منتقل شده:', +	'replacetext_savemovedpages' => \
'ذخیره‌سازی عنوان‌های قدیم به عنوان \
تغییر مسیرهایی به عنوان‌های جدید', \
+	'replacetext_watchmovedpages' => '‌پی‌گیری این \
صفحه‌ها', +	'replacetext_invertselections' => 'وارانه \
کردن انتخاب‌ها',  'replacetext_replace' => 'جایگزین \
                کن',
-	'replacetext_success' => "در $3 صفحه '$1' را با '$2' \
جایگزین کرد.", +	'replacetext_success' => 'در $3 \
{{PLURAL:$3|صفحه|صفحه}}  $1  با  $2  جایگزین \
می‌شود.',  'replacetext_noreplacement' => "جایگزینی \
انجام نشد؛ صفحه‌ای که حاوی '$1' باشد پیدا \
                نشد.",
-	'replacetext_warning' => "در حال حاضر $1 حاوی متن \
جایگزین، '$2'، هستند؛ اگر شما این جایگزینی \
را انجام دهید قادر نخواهید بود که مواردی \
که جایگزین کردید را از مواردی که از قبل \
وجود داشته تفکیک کنید. آیا ادامه \
می‌دهید؟", +	'replacetext_nomove' => 'صفحه‌ای پیدا \
نشد که عنوان آن  $1  را داشته باشد.', \
+	'replacetext_nosuchcategory' => 'رده‌ای با نام  $1  \
وجود ندارد.', +	'replacetext_return' => 'بازگشت به \
فرم.', +	'replacetext_warning' => "'''هشدار:''' در حال \
حاضر $1 صفحه وجود دارد که حاوی رشتهٔ \
جایگزینی  $2  {{PLURAL:$1|است|هستند}}. اگر شما \
این جایگزینی را انجام دهید، قادر نخواهید \
بود تا جایگزینی‌هایتان را از این \
رشته‌ها جدا کنید.",  'replacetext_blankwarning' => 'چون \
متن جایگزین خالی است، این عمل قابل بازگشت \
نخواهد بود؛ ادامه می‌دهید؟',  \
                'replacetext_continue' => 'ادامه',
-	'replacetext_cancel' => '(دکمهٔ  بازگشت  را بزنید \
تا عمل را لغو کنید.)',  'replacetext_editsummary' => \
"جایگزینی متن - '$1' به '$2'", +	'right-replacetext' => \
'انجام جایگزین کردن رشته در تمام ویکی',  );
 
 /** Finnish (Suomi)
@@ -618,6 +700,7 @@ $messages['fi'] = array(
 	'replacetext_docu' => "Korvataksesi yhden merkkijonon toisella kaikissa \
tämän wikin tavallisissa sivuissa, syötä molemmat kaksi \
tekstinpätkää tänne ja sitten napsauta kohtaa 'Jatka'. Tämän jälkeen \
sinulle näytetään luettelo sivuista, jotka sisältävät haetun tekstin, \
ja voit valita ne, joihin haluat korvata sen. Oma nimesi näkyy sivun \
historiassa käyttäjänä joka on vastuussa kaikista tehdyistä \
muutoksista.",  'replacetext_originaltext' => 'Alkuperäinen teksti',
 	'replacetext_replacementtext' => 'Korvaava teksti',
+	'replacetext_useregex' => 'Käytä säännöllisiä lausekkeita',
 	'replacetext_optionalfilters' => 'Lisäehtoja:',
 	'replacetext_categorysearch' => 'Muokkaa ainoastaan sivuja, jotka ovat \
luokassa:',  'replacetext_prefixsearch' => 'Korvaa ainoastaan sivuilla, \
joissa on etuliite:', @@ -639,8 +722,8 @@ $messages['fi'] = array(
 	'replacetext_nomove' => 'No pages were found whose title contains "$1".',
 	'replacetext_nosuchcategory' => 'Luokkaa "$1" ei ole.',
 	'replacetext_return' => 'Palaa lomakkeeseen.',
-	'replacetext_warning' => '\'\'\'Varoitus:\'\'\' {{PLURAL:$1|$1 sivu| $1 \
sivua}} sisältää jo korvaavan tekstin, "$2". Korvauksen jälkeen \
                korvatut ja jo tekstin sisältäneet kohdat eivät erotu \
                toisistaan.
-If you make this replacement you will not be able to separate your \
replacements from these strings.', +	'replacetext_warning' => \
"'''Varoitus:''' {{PLURAL:$1|$1 sivu| $1 sivua}} sisältää jo korvaavan \
tekstin, "$2". +Korvauksen jälkeen korvatut ja jo tekstin sisältäneet \
kohdat eivät erotu toisistaan.",  'replacetext_blankwarning' => \
"'''Varoitus:''' Koska korvaava teksti on tyhjä, operaatiota ei voi \
palauttaa käänteisellä korvauksella.",  'replacetext_continue' => \
'Jatka',  'replacetext_editsummary' => 'Tekstin korvaus – "$1" muotoon \
"$2"', @@ -664,6 +747,8 @@ $messages['fr'] = array(
 	'replacetext_docu' => 'Pour remplacer une chaîne de caractères par une \
autre sur l'ensemble des données des pages de ce wiki, vous pouvez entrez \
les deux textes ici et cliquer sur   {{int:replacetext_replace}}  . Votre \
nom apparaîtra dans l'historique des pages tel un utilisateur auteur des \
changements.',  'replacetext_originaltext' => 'Texte original :',
 	'replacetext_replacementtext' => 'Texte de remplacement :',
+	'replacetext_useregex' => 'Utiliser des expressions rationnelles',
+	'replacetext_regexdocu' => '(Exemple : la valeur   a(.*)c   pour   \
texte original   et   ac$1   pour   texte de remplacement   remplace  \
 abc   avec   acb  .)',  'replacetext_optionalfilters' => 'Filtres \
optionnels :',  'replacetext_categorysearch' => 'Remplacer seulement dans \
la catégorie :',  'replacetext_prefixsearch' => 'Remplacer seulement dans \
les pages ayant le préfixe :', @@ -689,7 +774,6 @@ $messages['fr'] = \
array(  Si vous effectuez cette substitution, vous ne pourrez pas \
distinguer vos modifications de ces chaînes.',  'replacetext_blankwarning' \
=> 'Parce que la chaîne de remplacement est vide, cette opération sera \
irréversible ; voulez-vous continuer ?',  'replacetext_continue' => \
                'Continuer',
-	'replacetext_cancel' => '(Cliquez sur le bouton    Retour   ou   \
Reculer   de votre navigateur pour annuler l'opération.)',  \
'replacetext_editsummary' => 'Remplacement du texte —   $1   par   $2  \
',  'right-replacetext' => 'Faire des remplacements de texte dans tout le \
wiki',  );
@@ -701,6 +785,7 @@ $messages['frp'] = array(
 	'replacetext' => 'Remplaciér lo tèxto',
 	'replacetext_originaltext' => 'Tèxto d'origina :',
 	'replacetext_replacementtext' => 'Tèxto de remplacement :',
+	'replacetext_useregex' => 'Utilisar des èxprèssions racionèles',
 	'replacetext_optionalfilters' => 'Filtros u chouèx :',
 	'replacetext_formovedpages' => 'Por les pâges renomâs :',
 	'replacetext_watchmovedpages' => 'Siuvre cetes pâges',
@@ -712,14 +797,17 @@ $messages['frp'] = array(
 );
 
 /** Galician (Galego)
+ * @author Hamilton Abreu
  * @author Toliño
  */
 $messages['gl'] = array(
 	'replacetext' => 'Substituír un texto',
 	'replacetext-desc' => 'Proporciona unha [[Special:ReplaceText|páxina \
especial]] para que os administradores poidan facer unha cadea global para \
                atopar e substituír un texto no contido de todas as \
                páxinas dun wiki',
-	'replacetext_docu' => 'Para substituír unha cadea de texto por outra en \
todas as páxinas regulares deste wiki, teclee aquí as dúas pezas do \
texto e logo prema en "Continuar". Despois amosaráselle unha lista das \
páxinas que conteñen o texto buscado e pode elixir en cales quere \
substituílo. O seu nome aparecerá nos histotiais das páxinas como o \
usuario responsable de calquera cambio.', +	'replacetext_docu' => 'Para \
substituír unha cadea de texto por outra en todas as páxinas regulares \
deste wiki, teclee aquí as dúas pezas do texto e logo prema en \
"Continuar". Despois mostraráselle unha lista das páxinas que conteñen o \
texto buscado e pode elixir en cales quere substituílo. O seu nome \
aparecerá nos histotiais das páxinas como o usuario responsable de \
calquera cambio.',  'replacetext_originaltext' => 'Texto orixinal:',
 	'replacetext_replacementtext' => 'Texto de substitución:',
+	'replacetext_useregex' => 'Usar expresións regulares',
+	'replacetext_regexdocu' => '(Examplo: os valores "a(.*)c" para o "texto \
orixinal" e "ac$1" para o "texto de substitución" cambiarán "abc" por \
"acb".)',  'replacetext_optionalfilters' => 'Filtros opcionais:',
 	'replacetext_categorysearch' => 'Substituír só na categoría:',
 	'replacetext_prefixsearch' => 'Substituír só nas páxinas co prefixo:',
@@ -728,7 +816,7 @@ $messages['gl'] = array(
 	'replacetext_givetarget' => 'Debe especificar a cadea que vai ser \
substituída.',  'replacetext_nonamespace' => 'Debe escoller, polo menos, \
un espazo de nomes.',  'replacetext_editormove' => 'Debe seleccionar, polo \
                menos, unha das opcións de substitución.',
-	'replacetext_choosepagesforedit' => 'Por favor, seleccione {{PLURAL:$3|a \
páxina na|as páxinas nas}} que quere substituír "$1" por "$2":', \
+	'replacetext_choosepagesforedit' => 'Substituír "$1" por "$2" no texto \
{{PLURAL:$3|da seguinte páxina|das seguintes páxinas}}:',  \
'replacetext_choosepagesformove' => 'Substituír "$1" por "$2" \
{{PLURAL:$3|no título da seguinte páxina|nos títulos das seguintes \
páxinas}}:',  'replacetext_cannotmove' => '{{PLURAL:$1|A seguinte \
páxina|As seguintes páxinas}} non {{PLURAL:$1|pode|poden}} ser \
{{PLURAL:$1|movida|movidas}}:',  'replacetext_formovedpages' => 'Para as \
páxinas movidas:', @@ -741,10 +829,9 @@ $messages['gl'] = array(
 	'replacetext_nomove' => 'Non se atopou ningún artigo cuxo título \
conteña "$1".',  'replacetext_nosuchcategory' => 'Non existe ningunha \
categoría co nome "$1".',  'replacetext_return' => 'Volver ao \
                formulario.',
-	'replacetext_warning' => '\'\'\'Aviso:\'\'\' hai {{PLURAL:$1|unha \
páxina|$1 páxinas}} que xa {{PLURAL:$1|contén|conteñen}} a cadea de \
substitución "$2". Se fai esta substitución non poderá distinguir as \
                súas modificacións destas cadeas.',
-	'replacetext_blankwarning' => 'Debido a que a cadea de substitución \
está baleira, esta operación non será reversible; quere continuar?', \
+	'replacetext_warning' => '\'\'\'Aviso:\'\'\' Hai {{PLURAL:$1|unha \
páxina|$1 páxinas}} que xa {{PLURAL:$1|contén|conteñen}} a cadea de \
substitución "$2". Se fai esta substitución non poderá distinguir as \
súas modificacións destas cadeas.', +	'replacetext_blankwarning' => \
"'''Atención:''' Debido a que a cadea de substitución está baleira, esta \
operación non será reversible.",  'replacetext_continue' => 'Continuar',
-	'replacetext_cancel' => '(Prema no botón "Atrás" do seu navegador para \
cancelar a operación.)',  'replacetext_editsummary' => 'Substitución de \
texto - de "$1" a "$2"',  'right-replacetext' => 'Facer substitucións de \
cordas no wiki enteiro',  );
@@ -773,6 +860,8 @@ $messages['gsw'] = array(
 	'replacetext_docu' => 'Go ne Täxt dur e andere Täxt uf allene \
Inhaltssyte z ersetze, gib di bede Täxtteil doo yy un druck uf \
Ersetze-Schaltflächi. Dir wird derno ne Lischt vu dr Syte zeigt, wu s dr \
gsuecht Täxt din het, un Du chasch die uuswehle, wu Du dr Täxt witt din \
ersetze. Dyy Benutzername wird in d Versionsgschicht ufgnuh',  \
'replacetext_originaltext' => 'Originaltäxt:',  \
'replacetext_replacementtext' => 'Neje Täxt:', +	'replacetext_useregex' => \
'Platzhalter un reguläri Uusdruck verwände', +	'replacetext_regexdocu' => \
'(Byschpel: D Wärt fir „a(.*)c" fir „Originaltext" un „ac$1" fir \
„Neje Text" deete zue dr Ersetzig „abc" dur „acb" fiere.)',  \
'replacetext_optionalfilters' => 'Optionali Filter:',  \
'replacetext_categorysearch' => 'Nume in däre Kategorie ersetze:',  \
'replacetext_prefixsearch' => 'Nume in Syte ersetze mit däm Präfix:', @@ \
-798,22 +887,24 @@ $messages['gsw'] = array(  E Trännig vu dr Ersetzige \
mit dr Täxtteil, wu s scho het, sich nit megli. Mechtsch einewäg \
wytermache?",  'replacetext_blankwarning' => 'Dr Täxtteil, wu soll ersetzt \
wären, isch läär. D Operation cha nit ruckgängig gmacht wäre, einewäg \
wytermache?',  'replacetext_continue' => 'Wytermache',
-	'replacetext_cancel' => '(Druck uf d „Zrugg"-Schaltflächi go d \
Operation abbräche.)',  'replacetext_editsummary' => 'Täxtersetzig - \
„$1" dur „$2"',  'right-replacetext' => 'Mach e Täxtersetzig fir s \
gsamt Wiki',  );
 
 /** Hebrew (עברית)
+ * @author Amire80
  * @author Rotemliss
  * @author YaronSh
  */
 $messages['he'] = array(
 	'replacetext' => 'החלפת טקסט',
 	'replacetext-desc' => 'אספקת [[Special:ReplaceText|דף מיוחד]] \
כדי לאפשר למפעילים לבצע חיפוש והחלפה של \
                מחרוזות בכל דפי התוכן בוויקי',
-	'replacetext_docu' => "כדי להחליף מחרוזת טקסט אחת \
באחרת בכל הדפים הרגילים בוויקי זה, הזי ו \
את הטקסט בש י חלקים ולחצו על 'המשך'. אז \
תוצג בפ יכם רשימת דפים המכילים את הטקסט \
אחריו חיפשתם, ותוכלו לבחור את הדפים בהם \
תרצו להחליף את הטקסט האמור. שמכם יופיע \
בהיסטוריית הגרסאות של כל דף בתור המשתמש \
האחראי לשי ויים שבוצעו.", +	'replacetext_docu' => \
"כדי להחליף מחרוזת טקסט אחת באחרת בכל \
הדפים הרגילים בוויקי זה, הזי ו את הטקסט \
בש י חלקים ולחצו על 'המשך'. אז תוצג בפ יכם \
רשימת דפים המכילים את הטקסט שחיפשתם, \
ותוכלו לבחור את הדפים שבהם תרצו להחליף את \
הטקסט האמור. שמכם יופיע בהיסטוריית \
הגרסאות של כל דף בתור המשתמש האחראי לשי \
ויים ש עשו.",  'replacetext_originaltext' => 'הטקסט \
המקורי:',  'replacetext_replacementtext' => 'טקסט ההחלפה:',
-	'replacetext_optionalfilters' => 'מס  ים אופציו \
אליים:', +	'replacetext_useregex' => 'להשתמש בביטויים \
רגולריים', +	'replacetext_regexdocu' => '(דוגמה: הכ סת \
הערכים של "a(.*)c" ל"טקסט המקורי" ו־"ac$1" ל"טקסט \
ההחלפה" תחליף "abc" ב־"acb".)', \
+	'replacetext_optionalfilters' => 'מס  ים אופציו ליים:',  \
'replacetext_categorysearch' => 'החלפה רק בקטגוריה:',  \
'replacetext_prefixsearch' => 'החלפה רק בדפים בעלי \
הקידומת:',  'replacetext_editpages' => 'החלפת טקסט \
בתוכן הדפים', @@ -837,12 +928,12 @@ $messages['he'] = array(
 	'replacetext_warning' => '\'\'\'אזהרה\'\'\': {{PLURAL:$1|יש ו \
עמוד אחד שכבר מכיל|יש ם $1 עמודים שכבר \
מכילים}} את מחרוזת ההחלפה, "$2". אם החלפה זו \
תבוצע לא תהיה באפשרותך להפריד את \
החלפותיך מ{{PLURAL:$1|מחרוזת זו|מחרוזות אלו}}.', \
'replacetext_blankwarning' => 'כיוון שמחרוזת ההחלפה \
ריקה, לא  יתן יהיה לבטל פעולה זו; להמשיך?',  \
                'replacetext_continue' => 'המשך',
-	'replacetext_cancel' => '(לחצו על הלחצן "חזרה" \
                בדפדפן שלכם כדי לבטל את הפעולה.)',
-	'replacetext_editsummary' => "החלפת טקסט - $1 ל־'$2'",
+	'replacetext_editsummary' => 'החלפת טקסט – "$1" ב־"$2"',
 	'right-replacetext' => 'ביצוע החלפת מחרוזות באתר \
הוויקי כולו',  );
 
 /** Croatian (Hrvatski)
+ * @author Bugoslav
  * @author Dalibor Bosits
  * @author Ex13
  * @author Herr Mlinka
@@ -857,6 +948,7 @@ $messages['hr'] = array(
 	'replacetext_choosepagesforedit' => "Molimo odaberite \
{{PLURAL:$3|stranicu|stranice}} na kojima želite zamijeniti '$1' za \
'$2':",  'replacetext_choosepagesformove' => 'Zamijeni "$1" s "$2" u \
{{PLURAL:$1|naslovu sljedeće stranice|naslovima sljedećih stranica}}:',  \
'replacetext_cannotmove' => '{{PLURAL:$1|Sljedeća stranica|Sljedeće \
stranice}} ne mogu biti premještene:', +	'replacetext_watchmovedpages' => \
'Prati ove stranice',  'replacetext_invertselections' => 'Izvrni odabir',
 	'replacetext_replace' => 'Zamjeni',
 	'replacetext_success' => "'$1' će biti zamijenjen za '$2' na $3 \
{{PLURAL:$3|stranici|stranice|stranica}}.", @@ -865,7 +957,6 @@ \
$messages['hr'] = array(  Ako napravite ovu zamjenu nećete moći odvojiti \
svoju zamjenu od ovog teksta. Nastaviti sa zamjenom?",  \
'replacetext_blankwarning' => 'Zato što je zamjenski tekst prazan, ovaj \
postupak se neće moći vratiti; nastaviti?',  'replacetext_continue' => \
                'Dalje',
-	'replacetext_cancel' => '(Pritisnite tipku "Nazad" u svom pregledniku za \
zaustavljanje postupka.)',  'replacetext_editsummary' => "Zamjena teksta - \
'$1' u '$2'",  );
 
@@ -878,6 +969,8 @@ $messages['hsb'] = array(
 	'replacetext_docu' => "Zo by tekst přez druhi tekst na wšěch \
regularnych stronach tutoho wikija narunał, zapodaj wobaj tekstowej \
dźělej a klikń potom na 'Dale'. Budźeš potom lisćinu stronow \
widźeć, kotrež pytany tekst wobsahuja a móžeš jednu z nich wubrać, w \
kotrejž chceš tekst narunać. Twoje mjeno zjewi so w stawiznach strony \
jako wužiwar, kotryž je zamołwity za změny.",  \
'replacetext_originaltext' => 'Originalny tekst:',  \
'replacetext_replacementtext' => 'Narunanski tekst:', \
+	'replacetext_useregex' => 'regularne wuraz wužiwać', \
+	'replacetext_regexdocu' => '(Přikład: hódnoty za "a(.*)c" za \
"originalny tekst" a "ac$1" za "nowy tekst" bychu "abc" přez "acb" \
wuměnili.)',  'replacetext_optionalfilters' => 'Opcionalne filtry:',
 	'replacetext_categorysearch' => 'Jenož w kategoriji narunać:',
 	'replacetext_prefixsearch' => 'Jenož w stronach narunać z prefiksom:',
@@ -886,7 +979,7 @@ $messages['hsb'] = array(
 	'replacetext_givetarget' => 'Dyrbiš tekst podać, kotryž ma so \
narunać.',  'replacetext_nonamespace' => 'Dyrbiš znajmjeńša jedyn \
mjenowy rum wubrać.',  'replacetext_editormove' => 'Dyrbiš znajmjeńša \
                jednu z narunanskich opcijow wubrać.',
-	'replacetext_choosepagesforedit' => "Prošu wubjer \
{{PLURAL:$3|stronu|stronje|strony|strony}}, za kotrež chceš '$1' přez \
'$2' narunać:", +	'replacetext_choosepagesforedit' => '"$1" w \
{{PLURAL:$3|slědowacej stronje|slědowacymaj stronomaj|slědowacych \
stronach|slědowacych stronach}} přez "$2" wuměnić:',  \
'replacetext_choosepagesformove' => '"$1" přez "$2" w titulu \
{{PLURAL:$3|slědowaceje strony|slědowaceju stronow|slědowacych \
stronow|slědowacych stronow}} narunać:',  'replacetext_cannotmove' => \
'{{PLURAL:$1|Slědowaca strona njehodźi|Slědowacej stronje \
njehodźitej|Slědowace strony njehodźa|Slědowace strony njehodźa}} so \
přesunyć:',  'replacetext_formovedpages' => 'Za přesunjene strony:',
@@ -902,7 +995,6 @@ $messages['hsb'] = array(
 	'replacetext_warning' => "'''Warnowanje:''' {{PLURAL:$1|Je hižo $1 \
strona, kotraž wobsahuje|Stej hižo $1 stronje, kotejž wobsahujetej|Su \
hižo $1 strony, kotrež wobsahuja|Je hižo $1 stronow, kotrež wobsahuje}} \
narunanski tekst, '$2'. Jeli tute narunanje činiš, njemóžeš swoje \
narunanja wot tutoho teksta rozdźělić.",  'replacetext_blankwarning' => \
'Narunanski dźěl je prózdny, tohodla operacija njeda so cofnyć; \
njedźiwajo na to pokročować?',  'replacetext_continue' => 'Dale',
-	'replacetext_cancel' => '(Klikń na tłóčatko "Wróćo" w swojim \
wobhladowaku, zo by operaciju přetrohnył.)',  'replacetext_editsummary' \
=> "Tekstowe narunanje - '$1' do '$2'",  'right-replacetext' => 'Tekstowe \
narunanja na cyłym wikiju činić',  );
@@ -943,7 +1035,6 @@ A neved szerepelni fog a laptörténetekben, mint aki \
a változtatásokat végez  'replacetext_blankwarning' => 'Mivel az új \
szöveg üres, ez a művelet nem lesz visszavonható.  Biztosan folytatni \
szeretnéd?',  'replacetext_continue' => 'Folytatás',
-	'replacetext_cancel' => '(Kattints a böngésződ „vissza" gombjára a \
művelet megszakításához)',  'replacetext_editsummary' => 'Szöveg \
cseréje – „$1" → „$2"',  'right-replacetext' => 'szövegcserék \
végrehajtása az egész wikin',  );
@@ -957,6 +1048,8 @@ $messages['ia'] = array(
 	'replacetext_docu' => "Pro reimplaciar un catena de characteres per un \
altere trans tote le paginas regular in iste wiki, entra le duo pecias de \
texto hic e clicca super 'Continuar'. Postea se monstrara un lista de \
paginas que contine le texto cercate, e tu potera seliger in quales tu vole \
reimplaciar lo. Tu nomine figurara in le historias del paginas como le \
usator responsabile de omne modificationes.",  'replacetext_originaltext' \
=> 'Texto original:',  'replacetext_replacementtext' => 'Nove texto:',
+	'replacetext_useregex' => 'Usar expressiones regular',
+	'replacetext_regexdocu' => '(Exemplo: valores de "a(.*)c" pro "Texto \
original" e "ac$1" pro "Texto de substitution" reimplaciarea "abc" per \
"acb".)',  'replacetext_optionalfilters' => 'Filtros optional:',
 	'replacetext_categorysearch' => 'Reimplaciar solmente in le categoria:',
 	'replacetext_prefixsearch' => 'Reimplaciar solmente in paginas con le \
prefixo:', @@ -982,7 +1075,6 @@ $messages['ia'] = array(
 Si tu face iste reimplaciamento, tu non potera distinguer inter tu \
reimplaciamentos e iste texto ja existente.",  'replacetext_blankwarning' \
=> 'Post que le nove texto es vacue, iste operation non essera reversibile; \
continuar?',  'replacetext_continue' => 'Continuar',
-	'replacetext_cancel' => '(Clicca le button "Retro" in tu navigator pro \
cancellar le operation.)',  'replacetext_editsummary' => "Reimplaciamento \
de texto - '$1' per '$2'",  'right-replacetext' => 'Facer reimplaciamentos \
de texto in le wiki integre',  );
@@ -999,6 +1091,8 @@ $messages['id'] = array(
 	'replacetext_docu' => "Untuk mengganti suatu teks kalimat dengan kalimat \
lain di antara semua halaman-halaman regular wiki ini, masukkan kedua teks \
di sini dan klik 'Lanjutkan'. Anda akan mendapatkan tampilan daftar halaman \
yang berisikan teks yang dicari, dan Anda dapat memilih yang mana saja yang \
ingin digantikan. Nama Anda akan tampil di versi terdahulu halaman sebagai \
pengguna yang melakukan perubahan.",  'replacetext_originaltext' => 'Teks \
asli:',  'replacetext_replacementtext' => 'Teks pengganti:',
+	'replacetext_useregex' => 'Gunakan persamaan reguler',
+	'replacetext_regexdocu' => '(Congoh: nilai dari "a(.*)c" untuk "Teks \
asal" dan "ac$1" untuk "Teks pengganti" akan mengganti "abc" dengan \
"acb".)',  'replacetext_optionalfilters' => 'Filter opsional:',
 	'replacetext_categorysearch' => 'Hanya ganti pada kategori:',
 	'replacetext_prefixsearch' => 'Hanya ganti pada halaman dengan awalan:',
@@ -1024,7 +1118,6 @@ $messages['id'] = array(
 	'replacetext_blankwarning' => 'Karena untaian pengganti kosong, operasi \
ini tidak dapat dikembalikan.  Apakah ingin dilanjutkan?',
 	'replacetext_continue' => 'Lanjutkan',
-	'replacetext_cancel' => '(Klik tombol "Back" pada penjelajah Anda untuk \
membatalkan operasi.)',  'replacetext_editsummary' => 'Penggantian teks - \
"$1" menjadi "$2"',  'right-replacetext' => 'Melakukan penggantian seluruh \
teks kalimat di wiki ini',  );
@@ -1038,6 +1131,7 @@ $messages['ig'] = array(
 );
 
 /** Italian (Italiano)
+ * @author Beta16
  * @author Civvì
  * @author Darth Kule
  * @author Marco 27
@@ -1048,6 +1142,8 @@ $messages['it'] = array(
 	'replacetext_docu' => "Per sostituire una stringa di testo con un'altra \
su tutte le pagine del sito, inserire qui due pezzi di testo e poi premere \
'Continua'. Verr  quindi mostrato un elenco delle pagine che contengono il \
testo cercato, e sar  possibile scegliere quelle in cui si desidera \
sostituirlo. Il proprio nome verr  visualizzato nella pagina della \
cronologia come l'utente responsabile delle eventuali modifiche.",  \
'replacetext_originaltext' => 'Testo originale:',  \
'replacetext_replacementtext' => 'Testo sostituito:', \
+	'replacetext_useregex' => 'Utilizza le espressioni regolari', \
+	'replacetext_regexdocu' => '(Esempio: con valori di "a(.*)c" per \
"{{int:replacetext_originaltext}}" e "ac$1" per \
"{{int:replacetext_replacementtext}}" trasformerebbe "abc" in "acb".)',  \
'replacetext_optionalfilters' => 'Filtri opzionali:',  \
'replacetext_categorysearch' => 'Sostituire solo nella categoria:',  \
'replacetext_prefixsearch' => 'Sostituire solo nelle pagine con il \
prefisso:', @@ -1072,7 +1168,6 @@ $messages['it'] = array(
 	'replacetext_warning' => '{{PLURAL:$1|C\'è gi  $1 pagina che \
contiene|Ci sono gi  $1 pagine che contengono}} il testo di sostituzione, \
"$2". Se si effettua questa sostituzione non si sar  in grado di separare \
le sostituzioni da questi testi. Continuare con la sostituzione?',  \
'replacetext_blankwarning' => "Poiché il testo di sostituzione è vuoto, \
l'operazione non sar  reversibile. Si desidera continuare?",  \
                'replacetext_continue' => 'Continua',
-	'replacetext_cancel' => '(Fare clic sul pulsante "Indietro" nel proprio \
browser per annullare l\'operazione.)',  'replacetext_editsummary' => \
"Sostituzione testo - '$1' con '$2'",  'right-replacetext' => 'Esegue \
sostituzioni di testo in tutto il sito',  );
@@ -1080,6 +1175,7 @@ $messages['it'] = array(
 /** Japanese (日本語)
  * @author Aotake
  * @author Fryed-peach
+ * @author Schu
  * @author 青子守歌
  */
 $messages['ja'] = array(
@@ -1088,6 +1184,8 @@ $messages['ja'] = array(
 	'replacetext_docu' => \
'ある文字列をこのウィキ上のすべての標準ページで別の \
ものに置換するには、必要な2つの文字列をここに入力し \
「続行」を押します。次に検索した文字列を含むページ \
一覧表示され、置換を行いたいページを選択できます \
置換後には、あなたの名前がページ履歴にその編集を担当した利用者として表示されます。',
  'replacetext_originaltext' => '置換前の文字列:',
 	'replacetext_replacementtext' => '置換後の文字列:',
+	'replacetext_useregex' => '正規表現を使用',
+	'replacetext_regexdocu' => '(例:"置換前の文字列"には \
"a(.*)c" 、"置換後の文字列"には "ac$1"の値で、"abc" は "acb" \
に置換されます。)',  'replacetext_optionalfilters' => '追 \
のフィルター (任意):',  'replacetext_categorysearch' => \
'以下のカテゴリにあるもののみを置換:',  \
'replacetext_prefixsearch' => \
'以下の文字列から始まるページ内のもののみを置換:', \
@@ -1112,7 +1210,6 @@ $messages['ja'] = array(  'replacetext_warning' => \
"'''警告:''' 置換後文字列「$2」を既に含ん ページが \
$1{{PLURAL:$1|ページ}}あります。この置換を実行すると、こ \
れらの文字列と実際に置換された箇所を区別できなくなります。",
  'replacetext_blankwarning' => \
'置換後文字列が空であるため、この操作は実行後の取り消しができなくなります。続行しますか?',
  'replacetext_continue' => '続行',
-	'replacetext_cancel' => \
'(操作を中止するにはブラウザの「戻る」ボタンをクリックしてく \
さい)',  'replacetext_editsummary' => \
'文字列「$1」を「$2」に置換',  'right-replacetext' => \
'ウィキ全体で文字列の置換を実行する',  );
@@ -1166,6 +1263,8 @@ $messages['ko'] = array(
 당 의 사용자 이름이 문서 역사에 나올 것입니다.",
 	'replacetext_originaltext' => '찾을 문자열:',
 	'replacetext_replacementtext' => '바꿀 문자열:',
+	'replacetext_useregex' => ' 규 표현식 사용',
+	'replacetext_regexdocu' => '(예: "찾을 문자열"에 "a(.*)c"값을 \
입 하  "바꿀 문자열에 "ac$1"을 입 하면 "abc"가 "acb"로 \
바뀝니다.)',  'replacetext_optionalfilters' => ' 택  필터:',
 	'replacetext_categorysearch' => '다음 분류에서만 바꾸기:',
 	'replacetext_prefixsearch' => '다음  두어로 시작하는 문서만 \
바꾸기:', @@ -1192,7 +1291,6 @@ $messages['ko'] = array(
 	'replacetext_blankwarning' => '바꿀 문자열이 비어 있으므로 \
이 동작은 되돌릴 수 없습니다.  계속하시 습니까?',
 	'replacetext_continue' => '계속',
-	'replacetext_cancel' => '(이 동작을 취소하 면 웹 브라우 \
의 ‘뒤로' 버튼을 눌러 주세요.)',  'replacetext_editsummary' \
=> '찾아 바꾸기 – "$1" 문자열을 "$2" 문자열로',  \
'right-replacetext' => '찾아 바꾸기를 위키  체에 \
수행합니다.',  );
@@ -1211,6 +1309,8 @@ han wells. Dinge Name als Metmaacher weed met dä neu \
veränderte Versione  fun dä Sigge faßjehallde als dä Schriiver, dä et \
jemaat hät.',  'replacetext_originaltext' => 'Dä ojinaal Täx för \
Ußzetuusche:',  'replacetext_replacementtext' => 'Dä neue Täx för \
anshtatt dämm Ojinaal erin ze donn', +	'replacetext_useregex' => 'Met \
„<i lang="en">regular Expressions</i>"', +	'replacetext_regexdocu' => \
'(För e Beispel: Nämm „a(.*)c" fö_t Ojinaal un „ac$1" fö_der neue \
Täxt, un De kriß „abc" dorsh „acb" ußjetuusch.)',  \
'replacetext_optionalfilters' => 'Müjjelesche Beschrängkunge:',  \
'replacetext_categorysearch' => 'Bloß en dä Saachjropp ußtuusche:',  \
'replacetext_prefixsearch' => 'Bloß en Sigge ußtuusche, dänne ier \
Tittelle aanfange met:', @@ -1233,16 +1333,15 @@ wann en Sigg ömjenannt \
woode es.',  'replacetext_nomove' => 'Mer han kei Sigge jefonge, woh „$1" \
em Tittel dren förkütt.',  'replacetext_nosuchcategory' => 'Mer han kein \
Saachjropp met dämm Name „$1".',  'replacetext_return' => 'Jangk retuur \
                op dat Fommulaa.',
-	'replacetext_warning' => '
+	'replacetext_warning' => "'''Opjepaß:'''
 {{PLURAL:$1|Ein Sigg enthält|$1 Sigge enthallde}} ald dat Täxstöck \
                „$2", wat bemm Tuusche ennjeföch wääde sull.
-Wenn De dat jemaat häs, dokam_mer die Änderong nit esu leich \
                automattesch retuur maache, weil mer die ald do woore,
-un de ennjetuuschte Tästöcker nit ungerscheide kann.
-Wells De trozdämm wigger maache?',
+Wenn De dat jemaat häs, kam_mer die Änderong nit esu leich automattesch \
retuur maache, weil mer die ald do woore, +un de ennjetuuschte Täxstöcker \
nit ungerscheide kann. +Wells De trozdämm wigger maache?",
 	'replacetext_blankwarning' => 'Dat Täxstöck, wat beim Tuusche \
ennjfööch weed, is leddich,  dröm kam_mer die Änderong nit esu leich \
automattesch retuur maache.  Wells De trozdämm wigger maache?',
 	'replacetext_continue' => 'Wiggermaache',
-	'replacetext_cancel' => '(Kleck dä „Zerök"- ov „Retuur"-Knopp, öm \
dä Förjang afzebreche)',  'replacetext_editsummary' => 'Täx-Shtöcker \
tuusche — vun „$1" noh „$2"',  'right-replacetext' => 'Donn \
Täx-Shtöcksher em janze Wiki ußtuusche',  );
@@ -1257,6 +1356,8 @@ $messages['lb'] = array(
 	'replacetext_docu' => "Fir en Text duerch en aneren Text op allen \
Inhaltssäite vun dëser Wiki z'ersetzen, gitt w.e.g. déi zwéin Texter \
hei an klickt op 'Weider'. Dir gesitt dann eng Lëscht vu Säiten op deenen \
de gesichten Text dran ass, an Dir kënnt déi eraussichen op denen Dir den \
Text ersetze wëllt. Ären Numm steet an der Lëscht vun de Versiounen als \
Auteur vun all deenen Ännerungen.",  'replacetext_originaltext' => \
'Originaltext:',  'replacetext_replacementtext' => 'Neien Text:',
+	'replacetext_useregex' => 'Regulär Ausdréck benotzen',
+	'replacetext_regexdocu' => '(Beispill: De Wäert „a(.*)c" fir \
„Originaltext" an „ac$1" fir „Neien Text" géif „abc" duerch \
„acb" ersetzen.)',  'replacetext_optionalfilters' => 'Optional \
Filteren:',  'replacetext_categorysearch' => 'Ersetz nëmmen an der \
Kategorie:',  'replacetext_prefixsearch' => 'Ersetz nëmmen a Säite mam \
Prefix:', @@ -1282,7 +1383,6 @@ $messages['lb'] = array(
 Wann Dir dës Ännerunge maacht wäert et Iech net méi méiglech sinn \
déi Säiten op deenen Dir Ännerunge gemaach hutt vun de Säiten \
z'ënnerscheeden wou elo d'Zeecherei '$2' schonn dran ass.",  \
'replacetext_blankwarning' => 'Well den Textdeel mat dem de gesichten Text \
ersat gi soll eidel ass, kann dës Aktioun net réckgängeg gemaach ginn; \
wëllt Dir awer weiderfueren?',  'replacetext_continue' => 'Weiderfueren',
-	'replacetext_cancel' => '(Klickt op de Knäppchen "Zréck" an Ärem \
Browser fir d\'Operatioun ofzebriechen)',  'replacetext_editsummary' => \
"Text ersat - '$1' duerch '$2'",  'right-replacetext' => 'Ersetze vun enger \
Rei vun Textzeechen op der ganzer Wiki',  );
@@ -1312,18 +1412,20 @@ $messages['mk'] = array(
 	'replacetext_docu' => 'За да замените една низа со \
друга, ширум сите регуларни страници на \
ова вики, внесете ги тука двете парчиња \
текст и потоа притиснете на „Продолжи".  \
Потоа ќе ви се прикаже список на страници \
кои го содржат бараниот текст, и ќе \
можете да изберете во кои од нив сакате \
да ја извршите змената.  Вашето име ќе се \
појави во историјата на страниците како \
                корисник одговорен за \
                промените.',
-	'replacetext_originaltext' => 'Оригинален текст:',
+	'replacetext_originaltext' => 'Изворен текст:',
 	'replacetext_replacementtext' => 'Нов текст:',
+	'replacetext_useregex' => 'Користи регуларни \
изрази', +	'replacetext_regexdocu' => '(Пример: \
вредностите на „а(.*)в" за „Изворен текст" \
и „ав$1" за „Нов текст" ќе го заменат \
„абв" со „авб".)',  'replacetext_optionalfilters' => \
'Незадолжителни филтри:',  'replacetext_categorysearch' \
=> 'Замени само во категорија:',  \
'replacetext_prefixsearch' => 'Замени само во страници \
со префиксот:',  'replacetext_editpages' => 'Замени \
текст во содржина на страница',  \
'replacetext_movepages' => 'Замени текст во насловите \
                на страниците, кога е можно',
-	'replacetext_givetarget' => 'Мора да ја назначите \
низата што треба да се замени.', \
+	'replacetext_givetarget' => 'Мора да ја наведете \
низата што треба да се замени.',  \
'replacetext_nonamespace' => 'Мора да изберете барем \
еден именски простор.',  'replacetext_editormove' => \
'Мора да одберете барем една од \
можностите за замена.',  'replacetext_choosepagesforedit' \
=> 'Замени „$1" со „$2" во текстот на \
{{PLURAL:$3|следнава страница|следниве \
                страници}}:',
-	'replacetext_choosepagesformove' => 'Замени "$1" со "$2" во \
{{PLURAL:$3|насловот на следната \
страница|наслови на следните страници}}:', \
+	'replacetext_choosepagesformove' => 'Замени „$1" со „$2" во \
{{PLURAL:$3|насловот на следната \
страница|насловите на следните \
страници}}:',  'replacetext_cannotmove' => \
'{{PLURAL:$1|Следнава страница не може да се \
премести|Следниве страници не можат да \
се преместат}}:',  'replacetext_formovedpages' => 'За \
преместени страници:',  'replacetext_savemovedpages' => \
'Зачувај ги старите наслови како \
пренасочувања кон новите наслови', @@ -1339,7 \
+1441,6 @@ $messages['mk'] = array(  'replacetext_blankwarning' => \
'Бидејќи новата низа е празна, оваа \
операција не може да се врати.  Дали \
сакате да продолжите?',  'replacetext_continue' => \
                'Продолжи',
-	'replacetext_cancel' => '(Кликнете на копчето \
„Назад" во вашиот прелистувач за да ја \
откажете операцијата.)',  'replacetext_editsummary' => \
'Замена на текст - „$1" со „$2"',  'right-replacetext' \
=> 'Вршење замена на низи во целото вики',  \
); @@ -1374,7 +1475,6 @@ $messages['ml'] = array(
 	'replacetext_nomove' => 'ഒരു താളിന്റെയും \
തലക്കെട്ടിൽ "$1" എന്നു \
കണ്ടെത്താനായില്ല.',  'replacetext_return' \
=> 'ഫോമിലേക്ക് തിരിച്ചു \
പോവുക',  'replacetext_continue' => 'തുടരുക',
-	'replacetext_cancel' => '(ഈ പ്രവർത്തനം \
നിരാകരിക്കുവാൻ \
ബ്രൗസറിന്റെ "ബാക്ക്" ബട്ടൺ \
ഞെക്കുക)',  'replacetext_editsummary' => \
'എഴുത്ത് മാറ്റിച്ചേർക്കൽ - "$1" \
എന്നത് "$2" എന്നതുകൊണ്ട്',  \
'right-replacetext' => 'വിക്കിയിൽ \
മുഴുവനും പദം \
മാറ്റിച്ചേർക്കുക',  );
@@ -1395,10 +1495,90 @@ $messages['mr'] = array(
 	'replacetext_warning' => "अगोदरच $1 पानांवर \
'$2' हा बदलण्यासा ीचा मजकूर \
आहे; जर तुम्ही पुनर्लेखन \
केले तर तुम्ही केलेले बदल \
तुम्ही या पानांपासून वेगळे \
करू शकणार नाही. पुनर्लेखन \
करायचे का?",  'replacetext_blankwarning' => \
'बदलण्यासा ीचा मजकूर रिकामा \
असल्यामुळे ही क्रिया \
उलटविता येणार नाही; पुढे \
जायचे का?',  'replacetext_continue' => \
                'पुनर्लेखन करा',
-	'replacetext_cancel' => '(क्रिया रद्द \
करण्यासा ी "Back" कळीवर टिचकी \
द्या.)',  'replacetext_editsummary' => "मजकूर \
पुनर्लेखन - '$1' ते '$2'",  );
 
+/** Malay (Bahasa Melayu)
+ * @author Anakmalaysia
+ */
+$messages['ms'] = array(
+	'replacetext' => 'Ganti teks',
+	'replacetext-desc' => 'Menyediakan [[Special:ReplaceText|laman khas]] \
untuk membolehkan para pentadbir melakukan pencarian dan penggantian \
rentetan sejagat di semua laman-laman kandungan wiki', +	'replacetext_docu' \
=> "Untuk mengganti satu rentetan teks dengan satu lagi merentasi semua \
laman biasa di wiki ini, isikan kedua-dua teks yang terlibat di sini, \
kemudian tekan 'Sambung'. +Kemudian, anda akan ditunjukkan satu senarai \
laman yang mengandungi teks carian, dan anda boleh memilih laman-laman yang \
mana anda ingin melakukan penggantian itu. +Nama anda akan terpapar dalam \
sejarah laman sebagai pengguna yang bertanggungjawab atas sebarang \
perubahan.", +	'replacetext_originaltext' => 'Teks asal:',
+	'replacetext_replacementtext' => 'Teks ganti:',
+	'replacetext_useregex' => 'Gunakan ungkapan nalar',
+	'replacetext_regexdocu' => '(Contoh: nilai "a(.*)c" untuk "Teks asal" dan \
"ac$1" untuk "Teks ganti" akan mengganti "abc" dengan "acb".)', \
+	'replacetext_optionalfilters' => 'Penapis pilihan:', \
+	'replacetext_categorysearch' => 'Ganti dalam kategori sahaja:', \
+	'replacetext_prefixsearch' => 'Ganti dalam laman yang berawalan ini \
sahaja:', +	'replacetext_editpages' => 'Ganti teks dalam kandungan laman',
+	'replacetext_movepages' => 'Ganti teks dalam tajuk laman, jika boleh',
+	'replacetext_givetarget' => 'Anda mesti menyatakan rentetan untuk \
diganti.', +	'replacetext_nonamespace' => 'Anda mesti memilih \
sekurang-kurangnya satu ruang nama.', +	'replacetext_editormove' => 'Anda \
mesti memilih sekurang-kurangnya satu pilihan penggantian.', \
+	'replacetext_choosepagesforedit' => 'Ganti "$1" dengan "$2" dalam teks \
{{PLURAL:$3|laman|laman-laman}} berikut:', \
+	'replacetext_choosepagesformove' => 'Ganti "$1" dengan "$2" dalam \
{{PLURAL:$3|judul|judul-judul}} laman yang berikut:', \
+	'replacetext_cannotmove' => '{{PLURAL:$1|Laman|Laman-laman}} yang berikut \
tidak boleh dipindahkan:', +	'replacetext_formovedpages' => 'Untuk laman \
yang dipindahkan:', +	'replacetext_savemovedpages' => 'Simpan tajuk lama \
sebagai lencongan kepada tajuk baru', +	'replacetext_watchmovedpages' => \
'Pantau laman-laman ini', +	'replacetext_invertselections' => 'Songsangkan \
pilihan', +	'replacetext_replace' => 'Ganti',
+	'replacetext_success' => '"$1" akan digantikan oleh "$2" di $3 laman.',
+	'replacetext_noreplacement' => 'Tiada laman yang mengandungi rentetan \
"$1".', +	'replacetext_nomove' => 'Tiada laman yang mengandungi "$1" dalam \
tajuknya.', +	'replacetext_nosuchcategory' => 'Tiada kategori dengan nama \
"$1".', +	'replacetext_return' => 'Kembali ke borang.',
+	'replacetext_warning' => "'''Amaran:''' Terdapat \$1 laman yang sudah \
mengandungi rentetan ganti \"\$2\". Jika anda melakukan penggantian ini, \
anda tidak akan dapat mengasingkan gantian anda daripada rentetan-rentetan \
ini.", +	'replacetext_blankwarning' => "'''Amaran:''' Oleh sebab rentetan \
ganti adalah kosong, operasi ini tidak boleh dimansuhkan.", \
+	'replacetext_continue' => 'Sambung', +	'replacetext_editsummary' => \
'Ganti teks - "$1" kepada "$2"', +	'right-replacetext' => 'Membuat \
penggantian rentetan di seluruh wiki', +);
+
+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+ * @author Jon Harald Søby
+ * @author Laaknor
+ * @author Nghtwlkr
+ * @author Simny
+ */
+$messages['nb'] = array(
+	'replacetext' => 'Erstatt tekst',
+	'replacetext-desc' => 'Lar administratorer kunne \
[[Special:ReplaceText|erstatte tekst]] på alle innholdssider på en \
wiki.', +	'replacetext_docu' => 'For å erstatte én tekststreng med en \
annen på alle datasider på denne wikien kan du skrive inn de to tekstene \
her og trykke  Erstatt . Du vil da bli ført til en liste over sider som \
inneholder søketeksten, og du kan velge hvilke sider du ønsker å \
erstatte den i. Navnet ditt vil stå i sidehistorikkene som den som er \
ansvarlig for endringene.', +	'replacetext_originaltext' => \
'Originaltekst:', +	'replacetext_replacementtext' => 'Erstatningstekst:',
+	'replacetext_optionalfilters' => 'Valgfrie filter:',
+	'replacetext_categorysearch' => 'Erstatt kun i kategori:',
+	'replacetext_prefixsearch' => 'Erstatt kun i sider med prefikset:',
+	'replacetext_editpages' => 'Erstatt tekst i sideinnholdet',
+	'replacetext_movepages' => 'Erstatt tekst i sidetitler, der dette er \
mulig', +	'replacetext_givetarget' => 'Du må spesifisere en streng som \
skal erstattes.', +	'replacetext_nonamespace' => 'Du må velge minst ett \
navnerom.', +	'replacetext_editormove' => 'Du må velge minst ett av \
alternativene for erstatning.', +	'replacetext_choosepagesforedit' => 'Velg \
{{PLURAL:$3|siden|sidene}} der du ønsker å bytte ut  $1  med  $2 :', \
+	'replacetext_choosepagesformove' => 'Erstatt  $1  med  $2  i \
{{PLURAL:$3|tittelen på den følgende siden|titlene på de følgende \
sidene}}:', +	'replacetext_cannotmove' => '{{PLURAL:$1|Den følgende \
siden|De følgende sidene}} kan ikke flyttes:', \
+	'replacetext_formovedpages' => 'For flyttede sider:', \
+	'replacetext_savemovedpages' => 'Lagre de gamle titlene som \
omdirigeringer til de nye', +	'replacetext_watchmovedpages' => 'Overvåk \
disse sidene', +	'replacetext_invertselections' => 'Inverter valg',
+	'replacetext_replace' => 'Erstatt',
+	'replacetext_success' => ' $1  blir erstattet med  $2  på \
{{PLURAL:$3|én side|$3 sider}}.', +	'replacetext_noreplacement' => 'Ingen \
sider ble funnet med strengen  $1 .', +	'replacetext_nomove' => 'Ingen \
sider ble funnet der tittelen inneholder  $1 .', \
+	'replacetext_nosuchcategory' => 'Det eksisterer ingen kategori med navnet \
$1 .', +	'replacetext_return' => 'Tilbake til skjemaet.',
+	'replacetext_warning' => "'''Advarsel:''' Det er {{PLURAL:$1|én side|$1 \
sider}} som allerede har erstatningsteksten  $2 . Om du gjør denne \
erstatningen vil du ikke kunne skille ut dine erstatninger fra denne \
teksten.", +	'replacetext_blankwarning' => 'Fordi erstatningsteksten er tom \
vil denne handlingen ikke kunne angres automatisk; fortsette?', \
+	'replacetext_continue' => 'Fortsett', +	'replacetext_editsummary' => \
'Teksterstatting –  $1  til  $2 ', +	'right-replacetext' => \
'Gjennomfør teksterstatninger på hele wikien', +);
+
 /** Dutch (Nederlands)
  * @author SPQRobin
  * @author Siebrand
@@ -1411,6 +1591,8 @@ U krijgt dan een lijst met pagina's te zien waar uw \
te vervangen tekstdeel in vo  Uw naam wordt opgenomen in de geschiedenis \
van de pagina als verantwoordelijke voor de wijzigingen.",  \
'replacetext_originaltext' => 'Oorspronkelijke tekst:',  \
'replacetext_replacementtext' => 'Vervangende tekst:', \
+	'replacetext_useregex' => 'Reguliere expressies en wildcards gebruiken', \
+	'replacetext_regexdocu' => 'Voorbeeld: waarden van "a(.*)c" voor \
"Originele tekst" en "ac$1" voor "Te vervangen tekst" vervangt "abc" door \
"acb".',  'replacetext_optionalfilters' => 'Optionele filters:',
 	'replacetext_categorysearch' => 'Alleen in de volgende categorie \
vervangen:',  'replacetext_prefixsearch' => "Alleen in pagina's met het \
volgende voorvoegsel vervangen:", @@ -1432,11 +1614,10 @@ Uw naam wordt \
opgenomen in de geschiedenis van de pagina als verantwoordelijke v  \
'replacetext_nomove' => 'Er zijn geen pagina\'s gevonden met "$1" in de \
naam.',  'replacetext_nosuchcategory' => 'De categorie "$1" bestaat niet.',
 	'replacetext_return' => 'Terugkeren naar het formulier.',
-	'replacetext_warning' => '\'\'\'Waarshuwing:\'\'\' Er {{PLURAL:$1|is $1 \
pagina|zijn $1 pagina\'s}} die het te vervangen tesktdeel al "$2" al \
{{PLURAL:$1|bevat|bevatten}}. +	'replacetext_warning' => \
'\'\'\'Waarschuwing:\'\'\' Er {{PLURAL:$1|is $1 pagina|zijn $1 pagina\'s}} \
die het te vervangen tesktdeel al "$2" al {{PLURAL:$1|bevat|bevatten}}.  \
Als u nu doorgaat met vervangen, kunt u geen onderscheid meer maken.',  \
'replacetext_blankwarning' => 'Omdat u tekst vervangt door niets, kan deze \
handeling niet ongedaan gemaakt worden. Wilt u doorgaan?',  \
                'replacetext_continue' => 'Doorgaan',
-	'replacetext_cancel' => '(Klik op de knop "Terug" in uw webbrowser om \
deze handeling te annuleren)',  'replacetext_editsummary' => "Tekst \
vervangen - '$1' door '$2'",  'right-replacetext' => 'Tekst vervangen in de \
hele wiki',  );
@@ -1478,52 +1659,10 @@ Halda fram med utbytinga?',
 	'replacetext_blankwarning' => 'Av di teksten som skal bli sett inn er \
tom, vil ikkje denne handlinga kunna bli køyrt omvendt.  Vil du halda \
fram?',  'replacetext_continue' => 'Hald fram',
-	'replacetext_cancel' => '(Trykk på  Attende -knappen i nettlesaren din \
for å avbryta handlinga.)',  'replacetext_editsummary' => 'Utbyting av \
tekst -  $1  til  $2 ',  'right-replacetext' => 'Gjennomfør utbyting \
av tekst på heile wikien',  );
 
-/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
- * @author Jon Harald Søby
- * @author Laaknor
- * @author Nghtwlkr
- * @author Simny
- */
-$messages['no'] = array(
-	'replacetext' => 'Erstatt tekst',
-	'replacetext-desc' => 'Lar administratorer kunne \
[[Special:ReplaceText|erstatte tekst]] på alle innholdssider på en \
                wiki.',
-	'replacetext_docu' => 'For å erstatte én tekststreng med en annen på \
alle datasider på denne wikien kan du skrive inn de to tekstene her og \
trykke  Erstatt . Du vil da bli ført til en liste over sider som \
inneholder søketeksten, og du kan velge hvilke sider du ønsker å \
erstatte den i. Navnet ditt vil stå i sidehistorikkene som den som er \
                ansvarlig for endringene.',
-	'replacetext_originaltext' => 'Originaltekst:',
-	'replacetext_replacementtext' => 'Erstatningstekst:',
-	'replacetext_optionalfilters' => 'Valgfrie filter:',
-	'replacetext_categorysearch' => 'Erstatt kun i kategori:',
-	'replacetext_prefixsearch' => 'Erstatt kun i sider med prefikset:',
-	'replacetext_editpages' => 'Erstatt tekst i sideinnholdet',
-	'replacetext_movepages' => 'Erstatt tekst i sidetitler, der dette er \
                mulig',
-	'replacetext_givetarget' => 'Du må spesifisere en streng som skal \
                erstattes.',
-	'replacetext_nonamespace' => 'Du må velge minst ett navnerom.',
-	'replacetext_editormove' => 'Du må velge minst ett av alternativene for \
                erstatning.',
-	'replacetext_choosepagesforedit' => 'Velg {{PLURAL:$3|siden|sidene}} der \
                du ønsker å bytte ut  $1  med  $2 :',
-	'replacetext_choosepagesformove' => 'Erstatt  $1  med  $2  i \
{{PLURAL:$3|tittelen på den følgende siden|titlene på de følgende \
                sidene}}:',
-	'replacetext_cannotmove' => '{{PLURAL:$1|Den følgende siden|De følgende \
                sidene}} kan ikke flyttes:',
-	'replacetext_formovedpages' => 'For flyttede sider:',
-	'replacetext_savemovedpages' => 'Lagre de gamle titlene som \
                omdirigeringer til de nye',
-	'replacetext_watchmovedpages' => 'Overvåk disse sidene',
-	'replacetext_invertselections' => 'Inverter valg',
-	'replacetext_replace' => 'Erstatt',
-	'replacetext_success' => ' $1  blir erstattet med  $2  på \
                {{PLURAL:$3|én side|$3 sider}}.',
-	'replacetext_noreplacement' => 'Ingen sider ble funnet med strengen  $1 \
                .',
-	'replacetext_nomove' => 'Ingen sider ble funnet der tittelen inneholder  \
                $1 .',
-	'replacetext_nosuchcategory' => 'Det eksisterer ingen kategori med navnet \
                $1 .',
-	'replacetext_return' => 'Tilbake til skjemaet.',
-	'replacetext_warning' => "'''Advarsel:''' Det er {{PLURAL:$1|én side|$1 \
sider}} som allerede har erstatningsteksten  $2 . Om du gjør denne \
erstatningen vil du ikke kunne skille ut dine erstatninger fra denne \
                teksten.",
-	'replacetext_blankwarning' => 'Fordi erstatningsteksten er tom vil denne \
                handlingen ikke kunne angres automatisk; fortsette?',
-	'replacetext_continue' => 'Fortsett',
-	'replacetext_cancel' => '(Trykk på  Tilbake -knappen for å avbryte \
                handlingen.)',
-	'replacetext_editsummary' => 'Teksterstatting –  $1  til  $2 ',
-	'right-replacetext' => 'Gjennomfør teksterstatninger på hele wikien',
-);
-
 /** Occitan (Occitan)
  * @author Cedric31
  */
@@ -1558,7 +1697,6 @@ $messages['oc'] = array(
 S'efectuatz aquesta substitucion, poiretz pas separar vòstres cambiaments \
a partir d'aquestas cadenas.",  'replacetext_blankwarning' => 'Perque la \
cadena de remplaçament es voida, aquesta operacion ser  irreversibla ; \
volètz contunhar ?',  'replacetext_continue' => 'Contunhar',
-	'replacetext_cancel' => "(Clicatz sul boton    Retorn   de vòstre \
navigador per anullar l'operacion.)",  'replacetext_editsummary' => \
'Remplaçament del tèxte —   $1   per   $2  ',  'right-replacetext' \
=> 'Far de remplaçaments de tèxte dins tot lo wiki',  );
@@ -1568,7 +1706,7 @@ S'efectuatz aquesta substitucion, poiretz pas separar \
                vòstres cambiaments a par
  */
 $messages['pdc'] = array(
 	'replacetext_noreplacement' => 'Ken Blatt gfunne mit „$1".',
-	'replacetext_continue' => 'Weiter',
+	'replacetext_continue' => 'Weider',
 );
 
 /** Polish (Polski)
@@ -1576,6 +1714,7 @@ $messages['pdc'] = array(
  * @author Leinad
  * @author Maikking
  * @author Matma Rex
+ * @author Odder
  * @author Sp5uhe
  * @author ToSter
  */
@@ -1585,6 +1724,8 @@ $messages['pl'] = array(
 	'replacetext_docu' => 'Możesz zastąpić jeden ciąg znaków innym, w \
treści wszystkich stron tej wiki. W tym celu wprowadź dwa fragmenty \
tekstu i naciśnij „Kontynuuj". Zostanie pokazana lista stron, które \
zawierają wyszukiwany tekst. Będziesz mógł wybrać te strony, na \
których chcesz ten tekst zamienić na nowy. W historii zmian stron, do \
opisu autora edycji, zostanie użyta Twoja nazwa użytkownika.',  \
'replacetext_originaltext' => 'Wyszukiwany tekst',  \
'replacetext_replacementtext' => 'Zamień na', +	'replacetext_useregex' => \
'Użyj wyrażeń regularnych', +	'replacetext_regexdocu' => '(Przykładowo \
wstawiając „a(.*)c" w polu „{{int:replacetext_originaltext}}" oraz \
„ac$1" w polu „{{int:replacetext_replacementtext}}" spowodujesz \
zastąpienie „abc" przez „acb".)',  'replacetext_optionalfilters' => \
'Dodatkowe filtry:',  'replacetext_categorysearch' => 'Zamień tylko w \
kategorii',  'replacetext_prefixsearch' => 'Zamień tylko na stronach z \
prefiksem', @@ -1609,7 +1750,6 @@ $messages['pl'] = array(
 	'replacetext_warning' => "'''Uwaga''' {{PLURAL:$1|Jest $1 strona \
zawierająca|Są $1 strony zawierające|Jest $1 stron zawierających}} \
tekst „$2", którym chcesz zastępować. Jeśli wykonasz zastępowanie \
nie będzie możliwe odseparowanie Twoich zastąpień od tych tekstów.",  \
'replacetext_blankwarning' => 'Ponieważ ciąg znaków, którym ma być \
wykonane zastępowanie jest pusty, operacja będzie nieodwracalna. Czy \
kontynuować?',  'replacetext_continue' => 'Kontynuuj',
-	'replacetext_cancel' => '(Wciśnij klawisz „Wstecz" w przeglądarce, \
aby przerwać operację.)',  'replacetext_editsummary' => 'zamienił w \
treści „$1" na „$2"',  'right-replacetext' => 'Wykonywanie \
zastępowania tekstu w całej wiki',  );
@@ -1626,6 +1766,8 @@ At sar  alora mostr  na lista ëd p gine ch'a \
conten-o ël test d'arserca, e  Tò nòm a aparir  ant le stòrie dle p \
gine com l'utent respons bil për minca cangiament.",  \
'replacetext_originaltext' => 'Test original:',  \
'replacetext_replacementtext' => 'Test ëd rimpiassadura:', \
+	'replacetext_useregex' => "Dovré dj'espression regolar", \
+	'replacetext_regexdocu' => '(Esempi: valor ëd "a(.*)c" për "Test \
original" e "ac$1" për "Rimpiassé test" a dovrìa rimpiassé "abc" with \
"acb".)',  'replacetext_optionalfilters' => 'Filtr opsionaj:',
 	'replacetext_categorysearch' => 'Rimpiassa mach an categorìa:',
 	'replacetext_prefixsearch' => 'Rimpiassa mach an p gine con ël \
prefiss:', @@ -1652,7 +1794,6 @@ S'it fas sta rimpiassadura-sì it saras pa \
bon a separé toe rimpiassadure da st  'replacetext_blankwarning' => "Da \
gi  che la stringa ëd rimpiass a l'é veuida, st'operassion-sì a sar  \
pa reversìbil.  Veul-lo continué?",
 	'replacetext_continue' => 'Continua',
-	'replacetext_cancel' => '(Sgnaca ël boton "André" an tò navigador për \
scancelé l\'operassion.)',  'replacetext_editsummary' => 'Rimpiassadura \
test - "$1" a "$2"',  'right-replacetext' => "F  rimpiassadura dë \
stringhe an sl'antrega wiki",  );
@@ -1694,21 +1835,24 @@ $messages['ps'] = array(
  */
 $messages['pt'] = array(
 	'replacetext' => 'Substituir texto',
-	'replacetext-desc' => "[[Special:ReplaceText|Página especial]] que \
permite que administradores façam substituições globais de texto \
''(string find-and-replace)'' em todas as páginas de conteúdo de uma \
                wiki",
-	'replacetext_docu' => 'Para substituir um texto por outro texto em todas \
as páginas desta wiki, introduza os dois textos e clique o botão \
"Substituir". Serão listadas as páginas que contêm o texto a substituir \
e poderá seleccionar em quais deseja proceder   substituição. \
+	'replacetext-desc' => "[[Special:ReplaceText|Página especial]] que \
permite que os administradores façam substituições globais de texto \
''(string find-and-replace)'' em todas as páginas de conteúdo de uma \
wiki", +	'replacetext_docu' => 'Para substituir um texto por outro texto em \
todas as páginas desta wiki, introduza os dois textos e clique o botão \
"Prosseguir". +Serão listadas as páginas que contêm o texto a substituir \
e poderá seleccionar em quais deseja proceder   substituição.  O seu \
nome aparecerá no histórico dessas páginas como o utilizador \
responsável pelas alterações.',  'replacetext_originaltext' => 'Texto \
                original:',
-	'replacetext_replacementtext' => 'Novo texto:',
+	'replacetext_replacementtext' => 'Texto de substituição:',
+	'replacetext_useregex' => 'Usar expressões regulares',
+	'replacetext_regexdocu' => '(Exemplo: os valores "a(.*)c" no "Texto \
original" e "ac$1" no "Texto de substituição" substituiriam "abc" por \
"acb")',  'replacetext_optionalfilters' => 'Filtros opcionais:',
 	'replacetext_categorysearch' => 'Substituir só na categoria:',
 	'replacetext_prefixsearch' => 'Substituir só em páginas com o \
prefixo:',  'replacetext_editpages' => 'Substituir texto no conteúdo da \
                página',
-	'replacetext_movepages' => 'Substituir texto em títulos de páginas, \
quando possível', +	'replacetext_movepages' => 'Substituir texto nos \
títulos de páginas, quando possível',  'replacetext_givetarget' => 'Deve \
especificar o texto que será substituído.',  'replacetext_nonamespace' => \
'Deverá seleccionar pelo menos um espaço nominal.',  \
'replacetext_editormove' => 'Deve seleccionar pelo menos uma das opções \
                de substituição.',
-	'replacetext_choosepagesforedit' => "Por favor, seleccione {{PLURAL:$3|a \
                página na qual|as páginas nas quais}} deseja substituir \
                '$1' por '$2':",
-	'replacetext_choosepagesformove' => 'Substituir "$1" por "$2" \
{{PLURAL:$3|no nome da seguinte página|nos nomes das seguintes \
páginas}}:', +	'replacetext_choosepagesforedit' => 'Substituir "$1" por \
"$2" no texto {{PLURAL:$3|da seguinte página|das seguintes páginas}}:', \
+	'replacetext_choosepagesformove' => 'Substituir "$1" por "$2" \
{{PLURAL:$3|no título da seguinte página|nos títulos das seguintes \
páginas}}:',  'replacetext_cannotmove' => '{{PLURAL:$1|A seguinte página \
não pode ser movida|As seguintes páginas não podem ser movidas}}:',  \
'replacetext_formovedpages' => 'Para páginas movidas:',  \
'replacetext_savemovedpages' => 'Gravar os títulos anteriores como \
redireccionamentos para os novos títulos', @@ -1716,15 +1860,14 @@ O seu \
nome aparecerá no histórico dessas páginas como o utilizador responsáv  \
'replacetext_invertselections' => 'Inverter selecções',  \
'replacetext_replace' => 'Substituir',  'replacetext_success' => "'$1' \
                será substituído por '$2' em $3 \
                {{PLURAL:$3|página|páginas}}.",
-	'replacetext_noreplacement' => 'Não foram encontradas páginas contendo \
                a "string" \'$1\'.',
-	'replacetext_nomove' => "Não foram encontradas páginas cujo título \
contenha '$1'", +	'replacetext_noreplacement' => 'Não foram encontradas \
páginas que contenham o texto "$1".', +	'replacetext_nomove' => 'Não \
foram encontradas páginas cujo título contenha "$1".',  \
'replacetext_nosuchcategory' => 'Não existe nenhuma categoria com o nome \
"$1".',  'replacetext_return' => 'Voltar ao formulário.',
-	'replacetext_warning' => "'''Aviso:''' Há {{PLURAL:\$1|uma página que \
já contém|\$1 páginas que já contêm}} o texto de substituição, \
\"\$2\". Se fizer esta substituição não poderá desfazer a operação \
                com uma simples substituição em ordem inversa.",
-	'replacetext_blankwarning' => 'Uma vez que a "string" de novo texto foi \
deixada em branco, esta operação não será reversível. Prosseguir?', \
+	'replacetext_warning' => "'''Aviso:''' Há {{PLURAL:\$1|uma página que \
já contém|\$1 páginas que já contêm}} o texto de substituição, \
\"\$2\". Se fizer esta substituição não poderá distingui-las das suas \
substituições, nem desfazer a operação com uma simples substituição \
em ordem inversa.", +	'replacetext_blankwarning' => "'''Aviso:''' Como o \
texto de substituição foi deixado em branco, esta operação não será \
reversível.",  'replacetext_continue' => 'Prosseguir',
-	'replacetext_cancel' => '(Pressione o botão "Voltar" do seu browser para \
                cancelar a operação.)',
-	'replacetext_editsummary' => "Substituindo texto '$1' por '$2'",
+	'replacetext_editsummary' => 'Substituição de texto - de "$1" para \
"$2"',  'right-replacetext' => 'Fazer substituições de texto em toda a \
wiki',  );
 
@@ -1733,6 +1876,7 @@ O seu nome aparecerá no histórico dessas páginas \
                como o utilizador responsáv
  * @author Eduardo.mps
  * @author Enqd
  * @author Giro720
+ * @author Hamilton Abreu
  * @author Luckas Blade
  */
 $messages['pt-br'] = array(
@@ -1749,7 +1893,7 @@ $messages['pt-br'] = array(
 	'replacetext_givetarget' => 'Você deve especificar um texto a ser \
substituido.',  'replacetext_nonamespace' => 'Você deve selecionar pelo \
menos um domínio.',  'replacetext_editormove' => 'Você deve selecionar \
                pelo menos uma das opções de substituição',
-	'replacetext_choosepagesforedit' => "Por favor, seleccione {{PLURAL:$3|a \
página na qual|as páginas nas quais}} deseja substituir '$1' por '$2':", \
+	'replacetext_choosepagesforedit' => "!!Por favor, seleccione \
{{PLURAL:$3|a página na qual|as páginas nas quais}} deseja substituir \
'$1' por '$2':",  'replacetext_choosepagesformove' => 'Substituir "$1" por \
"$2" {{PLURAL:$3|no nome da seguinte página|nos nomes das seguintes \
páginas}}:',  'replacetext_cannotmove' => '{{PLURAL:$1|A seguinte página \
não pode ser movida|As seguintes páginas não podem ser movidas}}:',  \
'replacetext_formovedpages' => 'Para páginas movidas:', @@ -1763,9 +1907,8 \
@@ $messages['pt-br'] = array(  'replacetext_nosuchcategory' => 'Não \
existe categoria com o nome "$1".',  'replacetext_return' => 'Voltar ao \
formulário.',  'replacetext_warning' => "'''Aviso:''' Há {{PLURAL:\$1|uma \
página que já contém|\$1 páginas que já contêm}} o texto de \
substituição, \"\$2\". Se fizer esta substituição não poderá desfazer \
                a operação com uma simples substituição em ordem \
                inversa.",
-	'replacetext_blankwarning' => 'Uma vez que a "string" de novo texto foi \
deixada em branco, esta operação não será reversível. Prosseguir?', \
+	'replacetext_blankwarning' => '!!Uma vez que a "string" de novo texto foi \
deixada em branco, esta operação não será reversível. Prosseguir?',  \
                'replacetext_continue' => 'Prosseguir',
-	'replacetext_cancel' => '(Pressione o botão "Voltar" de seu navegador \
para cancelar a operação.)',  'replacetext_editsummary' => "Substituindo \
texto '$1' por '$2'",  'right-replacetext' => 'Faça substituições de \
cadeias de caracteres no wiki inteiro',  );
@@ -1810,6 +1953,8 @@ $messages['ru'] = array(
 	'replacetext_docu' => 'Для того, чтобы заменить \
один текст на другой на всех страницах \
вики, вам необходимо ввести здесь \
желаемый текст и нажать на кнопку  \
Продолжить . После этого вам будет \
предложен список всех страниц, \
содержащих заменяемый текст, и вы \
сможете выбрать из них те, в которых \
нужно произвести замены. В качестве лица, \
отвечающего за внесённые изменения, в \
истории правок страниц, в которых \
произойдёт замена текста, будете указаны \
вы.',  'replacetext_originaltext' => 'Исходный текст:',
 	'replacetext_replacementtext' => 'Текст для замены:',
+	'replacetext_useregex' => 'Использовать регулярные \
выражения', +	'replacetext_regexdocu' => '(Например, \
выражения  a(.*)c  в поле  Исходный текст  \
и  ac$1  в поле  Текст для замены  приведут \
к замене  abc  на  acb .)',  'replacetext_optionalfilters' => \
'Необязательные фильтры:',  \
'replacetext_categorysearch' => 'Заменить только в \
категории:',  'replacetext_prefixsearch' => 'Заменить \
только в страницах с приставкой:', @@ -1835,7 \
+1980,6 @@ $messages['ru'] = array(  'replacetext_blankwarning' => \
'Из-за того, что текст для замены пуст, \
операция по замене не сможет быть \
отменена.  Вы хотите продолжить?',
 	'replacetext_continue' => 'Продолжить',
-	'replacetext_cancel' => '(Нажмите кнопку  Назад  в \
вашем браузере для отмены текущей \
операции.)',  'replacetext_editsummary' => 'Замена \
текста —  $1  на  $2 ',  'right-replacetext' => \
'выполнение замен текста во всей вики',  );
@@ -1873,70 +2017,73 @@ $messages['sk'] = array(
 	'replacetext_warning' => '$1 {{PLURAL:$1|stránka|stránok}} už obsahuje \
text „$2", ktorým chcete text nahradiť; ak budete pokračovať a text \
nahradíte, nebudete môcť odlíšiť vaše nahradenia od existujúceho \
textu, ktorý tento reťazec už obsahuje. Pokračovať v nahradení?',  \
'replacetext_blankwarning' => 'Pretože text, ktorým text chcete nahradiť \
je prázdny, operácia bude nevratná. Pokračovať?',  \
                'replacetext_continue' => 'Pokračovať',
-	'replacetext_cancel' => '(Operáciu zrušíte stlačením tlačidla \
„Späť" vo vašom prehliadači.)',  'replacetext_editsummary' => \
'Nahradenie textu „$1" textom „$2"',  'right-replacetext' => 'Vykonať \
náhradu reťazcov na celej wiki',  );
 
-/** Serbian Cyrillic ekavian (Српски (ћирилица))
+/** Serbian (Cyrillic script) (‪Српски (ћирилица)‬)
+ * @author Rancher
  * @author Sasa Stefanovic
  * @author Жељко Тодоровић
  * @author Михајло Анђелковић
  */
 $messages['sr-ec'] = array(
-	'replacetext' => 'Замени текст',
-	'replacetext_originaltext' => 'Оригинални текст:',
-	'replacetext_replacementtext' => 'Текст којим се \
                замењује:',
-	'replacetext_optionalfilters' => 'Опциони филтери:',
+	'replacetext' => 'Замена текста',
+	'replacetext_originaltext' => 'Изворни текст:',
+	'replacetext_replacementtext' => 'Нови текст:',
+	'replacetext_optionalfilters' => 'Необавезни филтери:',
 	'replacetext_categorysearch' => 'Замени само у \
                категорији:',
-	'replacetext_editpages' => 'Замени текст у садржају \
                стране',
-	'replacetext_movepages' => 'Замени текст у насловима \
                страна, уколико је могуће',
-	'replacetext_givetarget' => 'Морате навести стринг \
                кога треба заменити.',
-	'replacetext_nonamespace' => 'Морате изабрати \
                најмање један именски простор.',
-	'replacetext_editormove' => 'Морате изабрати макар \
                једну од опција замене.',
-	'replacetext_choosepagesforedit' => "Замени '$1' са '$2' у \
тексту {{PLURAL:$3|следеће стране|следећих \
                страна}}:",
-	'replacetext_cannotmove' => '{{PLURAL:$1|Следећа страна не \
може бити премештена|Следеће стране не \
                могу бити премештене}}:',
-	'replacetext_formovedpages' => 'За премештене стране:',
-	'replacetext_savemovedpages' => 'Сними старе наслове \
као преусмерења ка новим насловима', \
+	'replacetext_editpages' => 'Замени текст у садржају \
странице', +	'replacetext_movepages' => 'Замени текст у \
насловима страница, када је могуће', \
+	'replacetext_givetarget' => 'Морате навести ниску \
коју желите да замените.', +	'replacetext_nonamespace' \
=> 'Морате изабрати барем један именски \
простор.', +	'replacetext_editormove' => 'Морате \
изабрати барем једну од могућности за \
замену.', +	'replacetext_choosepagesforedit' => 'Замени „$1" \
са „$2" у тексту {{PLURAL:$3|следеће \
странице|следећих страница}}:', \
+	'replacetext_cannotmove' => '{{PLURAL:$1|Следећа страница \
не може бити премештена|Следеће странице \
не могу бити премештене}}:', \
+	'replacetext_formovedpages' => 'За премештене \
странице:', +	'replacetext_savemovedpages' => 'Сачувај \
старе наслове као преусмерења ка новим \
насловима',  'replacetext_watchmovedpages' => 'Надгледај \
ове стране',  'replacetext_invertselections' => 'Обрни \
                избор',
-	'replacetext_replace' => 'Пресними',
+	'replacetext_replace' => 'Замени',
 	'replacetext_success' => "'$1' ће бити замењено са '$2' \
у $3 {{PLURAL:$3|страни|страна}}.",  \
'replacetext_noreplacement' => "Није нађена ниједна \
страница која садржи стринг '$1'.",  \
'replacetext_nomove' => 'Није нађена ниједна \
                страница чији наслов садржи \
                „$1".',
-	'replacetext_return' => 'Врати се на форму.',
+	'replacetext_return' => 'Назад на образац.',
 	'replacetext_continue' => 'Настави',
 	'replacetext_editsummary' => "Замена текста - '$1' у '$2'",
+	'right-replacetext' => 'замењивање ниски на целом \
викију',  );
 
-/** Serbian Latin ekavian (Srpski (latinica))
+/** Serbian (Latin script) (‪Srpski (latinica)‬)
  * @author Michaello
+ * @author Rancher
  * @author Жељко Тодоровић
  */
 $messages['sr-el'] = array(
-	'replacetext' => 'Zameni tekst',
-	'replacetext_originaltext' => 'Originalni tekst:',
-	'replacetext_replacementtext' => 'Tekst kojim se zamenjuje:',
-	'replacetext_optionalfilters' => 'Opcioni filteri:',
+	'replacetext' => 'Zamena teksta',
+	'replacetext_originaltext' => 'Izvorni tekst:',
+	'replacetext_replacementtext' => 'Novi tekst:',
+	'replacetext_optionalfilters' => 'Neobavezni filteri:',
 	'replacetext_categorysearch' => 'Zameni samo u kategoriji:',
-	'replacetext_editpages' => 'Zameni tekst u sadržaju strane',
-	'replacetext_movepages' => 'Zameni tekst u naslovima strana, ukoliko je \
                moguće',
-	'replacetext_givetarget' => 'Morate navesti string koga treba zameniti.',
-	'replacetext_nonamespace' => 'Morate izabrati najmanje jedan imenski \
                prostor.',
-	'replacetext_editormove' => 'Morate izabrati makar jednu od opcija \
                zamene.',
-	'replacetext_choosepagesforedit' => "Zameni '$1' sa '$2' u tekstu \
                {{PLURAL:$3|sledeće strane|sledećih strana}}:",
-	'replacetext_cannotmove' => '{{PLURAL:$1|Sledeća strana ne može biti \
                premeštena|Sledeće strane ne mogu biti premeštene}}:',
-	'replacetext_formovedpages' => 'Za premeštene strane:',
-	'replacetext_savemovedpages' => 'Snimi stare naslove kao preusmerenja ka \
novim naslovima', +	'replacetext_editpages' => 'Zameni tekst u sadržaju \
stranice', +	'replacetext_movepages' => 'Zameni tekst u naslovima stranica, \
kada je moguće', +	'replacetext_givetarget' => 'Morate navesti nisku koju \
želite da zamenite.', +	'replacetext_nonamespace' => 'Morate izabrati \
barem jedan imenski prostor.', +	'replacetext_editormove' => 'Morate \
izabrati barem jednu od mogućnosti za zamenu.', \
+	'replacetext_choosepagesforedit' => 'Zameni „$1" sa „$2" u tekstu \
{{PLURAL:$3|sledeće stranice|sledećih stranica}}:', \
+	'replacetext_cannotmove' => '{{PLURAL:$1|Sledeća stranica ne može biti \
premeštena|Sledeće stranice ne mogu biti premeštene}}:', \
+	'replacetext_formovedpages' => 'Za premeštene stranice:', \
+	'replacetext_savemovedpages' => 'Sačuvaj stare naslove kao preusmerenja \
ka novim naslovima',  'replacetext_watchmovedpages' => 'Nadgledaj ove \
strane',  'replacetext_invertselections' => 'Obrni izbor',
-	'replacetext_replace' => 'Presnimi',
+	'replacetext_replace' => 'Zameni',
 	'replacetext_success' => "'$1' će biti zamenjeno sa '$2' u $3 \
                {{PLURAL:$3|strani|strana}}.",
-	'replacetext_noreplacement' => "Nije nađena ni jedna strana koja sadrži \
string '$1'.", +	'replacetext_noreplacement' => "Nije nađena nijedna \
stranica koja sadrži string '$1'.",  'replacetext_nomove' => 'Nije nađena \
                nijedna stranica čiji naslov sadrži „$1".',
-	'replacetext_return' => 'Vrati se na formu.',
+	'replacetext_return' => 'Nazad na obrazac.',
 	'replacetext_continue' => 'Nastavi',
 	'replacetext_editsummary' => "Zamena teksta - '$1' u '$2'",
+	'right-replacetext' => 'zamenjivanje niski na celom vikiju',
 );
 
 /** Swedish (Svenska)
@@ -1976,7 +2123,6 @@ $messages['sv'] = array(
 	'replacetext_warning' => '\'\'\'Varning:\'\'\' Det finns {{PLURAL:$1|$1 \
sida|$1 sidor}} som redan har ersättningssträngen "$2". Om du gör den \
här ersättningen kommer du inte kunna separera dina ersättningar från \
den här texten.',  'replacetext_blankwarning' => 'Eftersom \
ersättningstexten är tom kommer den här handlingen inte kunna upphävas; \
vill du fortsätta?',  'replacetext_continue' => 'Fortsätt',
-	'replacetext_cancel' => '(Klicka på "Tillbaka"-knappen i din webbläsare \
för att avbryta handlingen.)',  'replacetext_editsummary' => \
'Textersättning - "$1" till "$2"',  'right-replacetext' => 'Genomför \
textersättningar på hela wikin',  );
@@ -2008,6 +2154,8 @@ $messages['tl'] = array(
 	'replacetext_docu' => "Upang mapalitan ang isang bagting ng teksto ng iba \
pang nasa kahabaan ng lahat ng pangkaraniwang mga pahinang nasa ibabaw ng \
wiking ito, ipasok ang dalawang piraso ng teksto dito at pindutin \
pagkatapos ang 'Magpatuloy'. Susunod na ipapakita naman sa iyo ang isang \
talaan ng mga pahinang naglalaman ng teksto ng paghanap, at mapipili mo ang \
mga maaari mong ipamalit dito. Lilitaw ang pangalan mo sa mga kasaysayan ng \
pahina bilang tagagamit na umaako sa anumang mga pagbabago.",  \
'replacetext_originaltext' => 'Orihinal na teksto:',  \
'replacetext_replacementtext' => 'Pamalit na teksto:', \
+	'replacetext_useregex' => 'Gumamit ng pangkaraniwang mga paglalahad', \
+	'replacetext_regexdocu' => '(Halimbawa: mga halaga ng "isang (.*) c" para \
sa "Orihinal na teksto" at "ac $1 "para sa "Kapalit na teksto" na papalit \
sa "abc" na may "acb".)',  'replacetext_optionalfilters' => 'Mga pansalang \
maaaring wala:',  'replacetext_categorysearch' => 'Palitan lamang sa loob \
ng kategorya:',  'replacetext_prefixsearch' => 'Palitan lamang sa loob ng \
mga pahina may unlapi:', @@ -2034,7 +2182,6 @@ Kapag ginawa mo ang \
pagpapalit na ito hindi mo na maihihiwalay ang mga pamalit m  \
'replacetext_blankwarning' => 'Dahil sa walang laman ang bagting ng \
pamalit, hindi na maibabalik pa sa dati ang gawaing ito/  Naisa mo bang \
magpatuloy pa?',  'replacetext_continue' => 'Magpatuloy',
-	'replacetext_cancel' => "(Pindutin ang pinduting \"Magbalik\" sa iyong \
pantingin-tingin o ''browser'' upang huwag nang maipagpatuloy ang \
gawain.)",  'replacetext_editsummary' => "Palitan ang tekso - '$1' papunta \
sa '$2'",  'right-replacetext' => 'Gumawa ng pagpapalit ng bagting sa buong \
wiki',  );
@@ -2057,7 +2204,7 @@ Adınız, değişiklikleri gerçekleştiren \
kullanıcı olarak sayfa geçmişler  'replacetext_editpages' => 'Sayfa \
içeriklerindeki metinleri değiştir',  'replacetext_movepages' => 'Sayfa \
başlıklarında metni değiştir, mümkün olduğunda',  \
                'replacetext_givetarget' => 'Değiştirilecek dizgiyi \
                belirtmelisiniz.',
-	'replacetext_nonamespace' => 'En az bir isim alanı seçmelisiniz.',
+	'replacetext_nonamespace' => 'En az bir ad alanı seçmelisiniz.',
 	'replacetext_editormove' => 'Değiştirme seçeneklerinden en az birini \
seçmelisiniz.',  'replacetext_choosepagesforedit' => "Lütfen, '$1' yerine \
'$2' koymak istediğiniz {{PLURAL:$3|sayfayı|sayfaları}} seçin:",  \
'replacetext_choosepagesformove' => 'Aşağıdaki {{PLURAL:$3|sayfanın \
adındaki|sayfaların adlarındaki}} "$1" bölümünü "$2" ile \
değiştir:', @@ -2078,7 +2225,6 @@ Değiştirme işlemine devam etmek \
ister misiniz?',  'replacetext_blankwarning' => 'Değiştirme dizgisi boş \
olduğu için bu işlem geri alınamayacak.  Devam etmek istiyor musunuz?',
 	'replacetext_continue' => 'Devam',
-	'replacetext_cancel' => '(İşlemi iptal etmek için tarayıcınızdaki \
"Geri" düğmesine tıklayın.)',  'replacetext_editsummary' => 'Metin \
değiştir - "$1" yerine "$2"',  'right-replacetext' => 'Vikinin tamamında \
dizgileri değiştirir',  );
@@ -2132,6 +2278,8 @@ $messages['vi'] = array(
 	'replacetext_docu' => "Để thay thế một chuỗi ký tự bằng \
một chuỗi khác trên to n bộ các trang thông thường tại wiki \
n y, hãy gõ v o hai đoạn văn bản ở đây v  sau đó nhấn \
'Tiếp tục'. Khi đó bạn thấy một danh sách các trang có \
chứa đoạn ký tự được tìm, v  bạn có thể chọn những \
trang m  bạn muốn thay thế. Tên của bạn sẽ xuất hiện \
trong lịch sử trang như một th nh viên chịu trách nhiệm về \
bất kỳ thay đổi n o.",  'replacetext_originaltext' => 'Văn bản \
nguồn:',  'replacetext_replacementtext' => 'Văn bản thay thế:',
+	'replacetext_useregex' => 'Sử dụng biểu thức chính quy',
+	'replacetext_regexdocu' => '(Ví dụ: Văn bản gốc "a(.*)c" v  văn \
bản thay thế "ac$1" sẽ thay thế "abc" bằng "acb".)',  \
'replacetext_optionalfilters' => 'Bộ lọc tùy ý:',  \
'replacetext_categorysearch' => 'Chỉ thay trong thể loại:',  \
'replacetext_prefixsearch' => 'Chỉ thay trong những trang với tiền \
tố:', @@ -2156,7 +2304,6 @@ $messages['vi'] = array(
 	'replacetext_warning' => "'''Cảnh báo:''' {{PLURAL:$1|Một trang|$1 \
trang}} trong lựa chọn đã có chứa chuỗi thay thế, "$2". Nếu \
bạn thực hiện thay thế n y bạn sẽ không thể phân biệt \
sự thay thế của bạn với những chuỗi n y.",  \
'replacetext_blankwarning' => 'Vì chuỗi thay thế l  khoảng trắng, \
tác vụ n y sẽ không thể hồi lại được; tiếp tục?',  \
                'replacetext_continue' => 'Tiếp tục',
-	'replacetext_cancel' => '(Bấm nút "Lùi" của trình duyệt để \
hủy tác vụ.)',  'replacetext_editsummary' => 'Thay thế văn bản - \
‘$1' th nh ‘$2'',  'right-replacetext' => 'Thay thế chuỗi ở \
tất cả wiki',  );
@@ -2199,7 +2346,7 @@ $messages['zh-hans'] = array(
 	'replacetext_editpages' => '仅在页面内容中替换',
 	'replacetext_movepages' => '可能的话,在页面名称中替换。',
 	'replacetext_givetarget' => '必须指定查找的字符串',
-	'replacetext_nonamespace' => '必须选择最少一个命名空间。',
+	'replacetext_nonamespace' => \
'您必须选择至少一个名字空间。',  'replacetext_editormove' => \
'必须选择至少一个替换选项。',  \
'replacetext_choosepagesforedit' => \
'请选择想将"$1"替换成"$2"的{{PLURAL:$3|页面|页面}}。',  \
'replacetext_choosepagesformove' => \
'将{{PLURAL:$3|以下页面|以下页面}}中的"$1"替换为"$2":', @@ \
-2217,12 +2364,12 @@ $messages['zh-hans'] = array(  'replacetext_warning' \
=> '有$1个页面已经包含文字「$2」。如果您执行了替换作 \
,被替代的文字会跟它们混在一起,变得难以分开原来的文字和被替代的文字。要继续执行替换作业吗?',
  'replacetext_blankwarning' => "'''警告:''' \
为替换字串为空,这将导致操作 \
法复原!您要继续吗?",  'replacetext_continue' => '继续',
-	'replacetext_cancel' => '(按下浏览器上的 "返回" \
按钮可以取消操作)',  'replacetext_editsummary' => '替换文字 - \
「$1」替换为「$2」',  'right-replacetext' => \
'对整个维基进行文字替换。',  );
 
 /** Traditional Chinese (‪中文(繁體)‬)
+ * @author Mark85296341
  * @author Roc michael
  * @author Sheepy
  * @author Wrightbus
@@ -2238,12 +2385,12 @@ $messages['zh-hant'] = array(
 	'replacetext_prefixsearch' => '僅當 面帶有該前綴時替換:',
 	'replacetext_editpages' => '僅在 面內容當中進行替換',
 	'replacetext_movepages' => '如果可以的話,也替換 \
                面名稱的字串。',
-	'replacetext_givetarget' => '必 指定查找的字符串',
+	'replacetext_givetarget' => '必 指定尋找的字符串',
 	'replacetext_nonamespace' => '您必 \
選擇最少一個名字空間。',  'replacetext_editormove' => '必 \
                選擇至少一個替換選 。',
-	'replacetext_choosepagesforedit' => '請選擇 \
                想將「$1」替換成「$2」的 面。',
-	'replacetext_choosepagesformove' => '對以下 \
                面的名稱進行替換:',
-	'replacetext_cannotmove' => '以下 面無法被移動:',
+	'replacetext_choosepagesforedit' => \
'請選擇想將"$1"替換成"$2"的{{PLURAL:$3| 面| 面}}。', \
+	'replacetext_choosepagesformove' => '將{{PLURAL:$3|以下 面|以下 \
面}}中的"$1"替換為"$2":', +	'replacetext_cannotmove' => \
'無法移動以下{{PLURAL:$1| 面| 面}}:',  \
'replacetext_formovedpages' => '對以下 面進行了移動:',  \
'replacetext_savemovedpages' => \
'重定向至新標題時保留舊標題。',  \
'replacetext_watchmovedpages' => '監視這些 面', @@ -2257,7 +2404,6 \
@@ $messages['zh-hant'] = array(  'replacetext_warning' => '有$1個 \
面已經包含文字「$2」。如果您執行了替換作業,被替代 \
文字會跟它們混在一起,變得難以分開原來的文字和被替代的文字。要繼續執行替換作業嗎?',
  'replacetext_blankwarning' => ' 為替換字串是空白的,這將 \
成難以復原的結果!您要繼續嗎?',  'replacetext_continue' => \
                '繼續',
-	'replacetext_cancel' => '(按下瀏覽器上的 "返回" \
按鈕可以取消操作)',  'replacetext_editsummary' => '替換文字 - \
「$1」替換為「$2」',  'right-replacetext' => \
'對整個維基進行文字替換。',  );
diff --git a/extensions/ReplaceText/ReplaceText.php \
b/extensions/ReplaceText/ReplaceText.php index e98fec2..e2e5bc8 100644
--- a/extensions/ReplaceText/ReplaceText.php
+++ b/extensions/ReplaceText/ReplaceText.php
@@ -23,20 +23,20 @@ if ( !defined( 'MEDIAWIKI' ) ) die();
 $wgExtensionCredits['specialpage'][] = array(
 	'path' => __FILE__,
 	'name' => 'Replace Text',
-	'version' => '0.8.1',
+	'version' => '0.9.3',
 	'author' => array( 'Yaron Koren', 'Niklas Laxström' ),
-	'url' => 'http://www.mediawiki.org/wiki/Extension:Replace_Text',
+	'url' => 'https://www.mediawiki.org/wiki/Extension:Replace_Text',
 	'descriptionmsg'  => 'replacetext-desc',
 );
 
 $rtgIP = dirname( __FILE__ ) . '/';
 $wgExtensionMessagesFiles['ReplaceText'] = $rtgIP . \
                'ReplaceText.i18n.php';
-$wgExtensionAliasesFiles['ReplaceText'] = $rtgIP . \
'ReplaceText.alias.php'; +$wgExtensionMessagesFiles['ReplaceTextAlias'] = \
$rtgIP . 'ReplaceText.alias.php';  $wgJobClasses['replaceText'] = \
'ReplaceTextJob';  
 // This extension uses its own permission type, 'replacetext'
 $wgAvailableRights[] = 'replacetext';
-$wgGroupPermissions['bureaucrat']['replacetext'] = true;
+$wgGroupPermissions['sysop']['replacetext'] = true;
 
 $wgHooks['AdminLinks'][] = 'rtAddToAdminLinks';
 
@@ -45,7 +45,7 @@ $wgSpecialPageGroups['ReplaceText'] = 'wiki';
 $wgAutoloadClasses['ReplaceText'] = $rtgIP . 'SpecialReplaceText.php';
 $wgAutoloadClasses['ReplaceTextJob'] = $rtgIP . 'ReplaceTextJob.php';
 
-// This function should really go into a "ReplaceText_body.php" file...
+// This function should really go into a "ReplaceText_body.php" file.
 function rtAddToAdminLinks( &$admin_links_tree ) {
 	$general_section = $admin_links_tree->getSection( wfMsg( \
'adminlinks_general' ) );  $extensions_row = $general_section->getRow( \
                'extensions' );
diff --git a/extensions/ReplaceText/ReplaceTextJob.php \
b/extensions/ReplaceText/ReplaceTextJob.php index 1cd1ef3..484edb1 100644
--- a/extensions/ReplaceText/ReplaceTextJob.php
+++ b/extensions/ReplaceText/ReplaceTextJob.php
@@ -5,6 +5,7 @@
  * - based on /includes/RefreshLinksJob.php
  *
  * @author Yaron Koren
+ * @author Ankit Garg
  */
 class ReplaceTextJob extends Job {
 
@@ -30,18 +31,31 @@ class ReplaceTextJob extends Job {
 			$actual_user = $wgUser;
 			$wgUser = User::newFromId( $this->params['user_id'] );
 			$cur_page_name = $this->title->getText();
-			$new_page_name = str_replace( $this->params['target_str'], \
$this->params['replacement_str'], $cur_page_name ); +			if ( \
$this->params['use_regex'] ) { +				$new_page_name = preg_replace( \
"/".$this->params['target_str']."/U", $this->params['replacement_str'], \
$cur_page_name ); +			} else {
+				$new_page_name = str_replace( $this->params['target_str'], \
$this->params['replacement_str'], $cur_page_name ); +			}
+
 			$new_title = Title::newFromText( $new_page_name, \
$this->title->getNamespace() );  $reason = $this->params['edit_summary'];
 			$create_redirect = $this->params['create_redirect'];
 			$this->title->moveTo( $new_title, true, $reason, $create_redirect );
 			if ( $this->params['watch_page'] ) {
-				$article = new Article( $new_title );
-				$article->doWatch();
+				if ( class_exists( 'WatchAction' ) ) {
+					// Class was added in MW 1.19
+					WatchAction::doWatch( $new_title, $wgUser );
+				} elseif ( class_exists( 'Action' ) ) {
+					// Class was added in MW 1.18
+					Action::factory( 'watch', new Article( $new_title, 0 ) )->execute();
+				} else {
+					$article = new Article( $new_title, 0 );
+					$article->doWatch();
+				}
 			}
 			$wgUser = $actual_user;
 		} else {
-			$article = new Article( $this->title );
+			$article = new Article( $this->title, 0 );
 			if ( !$article ) {
 				$this->error = 'replaceText: Article not found "' . \
$this->title->getPrefixedDBkey() . '"';  wfProfileOut( __METHOD__ );
@@ -53,7 +67,13 @@ class ReplaceTextJob extends Job {
 			$target_str = $this->params['target_str'];
 			$replacement_str = $this->params['replacement_str'];
 			$num_matches;
-			$new_text = str_replace( $target_str, $replacement_str, $article_text, \
$num_matches ); +
+			if ( $this->params['use_regex'] ) {
+				$new_text = preg_replace( '/'.$target_str.'/U', $replacement_str, \
$article_text, -1, $num_matches ); +			} else {
+				$new_text = str_replace( $target_str, $replacement_str, $article_text, \
$num_matches ); +			}
+
 			// if there's at least one replacement, modify the page,
 			// using the passed-in edit summary
 			if ( $num_matches > 0 ) {
diff --git a/extensions/ReplaceText/SpecialReplaceText.php \
b/extensions/ReplaceText/SpecialReplaceText.php index 06f430c..85587c8 \
                100644
--- a/extensions/ReplaceText/SpecialReplaceText.php
+++ b/extensions/ReplaceText/SpecialReplaceText.php
@@ -1,27 +1,25 @@
 <?php
 
-if ( !defined( 'MEDIAWIKI' ) ) die();
-
 class ReplaceText extends SpecialPage {
 
-	/**
-	 * Constructor
-	 */
 	public function __construct() {
 		parent::__construct( 'ReplaceText', 'replacetext' );
-		wfLoadExtensionMessages( 'ReplaceText' );
 	}
 
 	function execute( $query ) {
 		global $wgUser, $wgOut;
 
-		if ( ! $wgUser->isAllowed( 'replacetext' ) ) {
+		if ( !$wgUser->isAllowed( 'replacetext' ) ) {
 			$wgOut->permissionRequired( 'replacetext' );
 			return;
 		}
 
 		$this->user = $wgUser;
 		$this->setHeaders();
+		if ( method_exists( $wgOut, 'addModuleStyles' ) &&	 
+			!is_null( $wgOut->getResourceLoader()->getModule( 'mediawiki.special' ) \
) ) { +			$wgOut->addModuleStyles( 'mediawiki.special' );
+		}
 		$this->doSpecialReplaceText();
 	}
 
@@ -37,15 +35,29 @@ class ReplaceText extends SpecialPage {
 		return $selected_namespaces;
 	}
 
+	/**
+	 * Helper function to display a hidden field for different versions
+	 * of MediaWiki.
+	 */
+	static function hiddenField( $name, $value ) {
+		if ( class_exists( 'Html' ) ) {
+			return "\t" . Html::hidden( $name, $value ) . "\n";
+		} else {
+			return "\t" . Xml::hidden( $name, $value ) . "\n";
+		}
+	}
+
 	function doSpecialReplaceText() {
-		global $wgUser, $wgOut, $wgRequest, $wgLang;
+		global $wgOut, $wgRequest, $wgLang;
+		$linker = class_exists( 'DummyLinker' ) ? new DummyLinker : new Linker;
 
 		$this->target = $wgRequest->getText( 'target' );
 		$this->replacement = $wgRequest->getText( 'replacement' );
+		$this->use_regex = $wgRequest->getBool( 'use_regex' );
 		$this->category = $wgRequest->getText( 'category' );
 		$this->prefix = $wgRequest->getText( 'prefix' );
-		$this->edit_pages = ( $wgRequest->getVal( 'edit_pages' ) == 1 );
-		$this->move_pages = ( $wgRequest->getVal( 'move_pages' ) == 1 );
+		$this->edit_pages = $wgRequest->getBool( 'edit_pages' );
+		$this->move_pages = $wgRequest->getBool( 'move_pages' );
 		$this->selected_namespaces = self::getSelectedNamespaces();
 
 		if ( $wgRequest->getCheck( 'continue' ) ) {
@@ -57,9 +69,10 @@ class ReplaceText extends SpecialPage {
 
 		if ( $wgRequest->getCheck( 'replace' ) ) {
 			$replacement_params = array();
-			$replacement_params['user_id'] = $wgUser->getId();
+			$replacement_params['user_id'] = $this->user->getId();
 			$replacement_params['target_str'] = $this->target;
 			$replacement_params['replacement_str'] = $this->replacement;
+			$replacement_params['use_regex'] = $this->use_regex;
 			$replacement_params['edit_summary'] = wfMsgForContent( \
'replacetext_editsummary', $this->target, $this->replacement );  \
$replacement_params['create_redirect'] = false;  \
$replacement_params['watch_page'] = false; @@ -85,15 +98,13 @@ class \
ReplaceText extends SpecialPage {  }
 			Job::batchInsert( $jobs );
 
-			$count =  $wgLang->formatNum( count( $jobs ) );
+			$count = $wgLang->formatNum( count( $jobs ) );
 			$wgOut->addWikiMsg( 'replacetext_success', \
"<tt><nowiki>{$this->target}</nowiki></tt>", \
"<tt><nowiki>{$this->replacement}</nowiki></tt>", $count );  
 			// Link back
-			$sk = $this->user->getSkin();
-			$wgOut->addHTML( $sk->makeKnownLinkObj( $this->getTitle(), wfMsgHtml( \
'replacetext_return' ) ) ); +			$wgOut->addHTML( $linker->link( \
$this->getTitle(), wfMsgHtml( 'replacetext_return' ) ) );  return;
 		} elseif ( $wgRequest->getCheck( 'target' ) ) { // very long elseif, \
                look for "end elseif"
-
 			// first, check that at least one namespace has been
 			// picked, and that either editing or moving pages
 			// has been selected
@@ -113,23 +124,27 @@ class ReplaceText extends SpecialPage {
 
 			// if user is replacing text within pages...
 			if ( $this->edit_pages ) {
-				$res = $this->doSearchQuery( $this->target, \
$this->selected_namespaces, $this->category, $this->prefix ); +				$res = \
$this->doSearchQuery( $this->target, $this->selected_namespaces, \
$this->category, $this->prefix , $this->use_regex );  foreach ( $res as \
                $row ) {
 					$title = Title::makeTitleSafe( $row->page_namespace, $row->page_title \
                );
-					$context = $this->extractContext( $row->old_text, $this->target );
+					$context = $this->extractContext( $row->old_text, $this->target, \
$this->use_regex );  $titles_for_edit[] = array( $title, $context );
 				}
 			}
 			if ( $this->move_pages ) {
-				$res = $this->getMatchingTitles( $this->target, \
$this->selected_namespaces, $this->category, $this->prefix ); +				$res = \
$this->getMatchingTitles( $this->target, $this->selected_namespaces, \
$this->category, $this->prefix, $this->use_regex );  foreach ( $res as $row \
                ) {
 					$title = Title::makeTitleSafe( $row->page_namespace, $row->page_title \
);  // see if this move can happen
 					$cur_page_name = str_replace( '_', ' ', $row->page_title );
-					$new_page_name = str_replace( $this->target, $this->replacement, \
$cur_page_name ); +					if ( $this->use_regex ) {
+						$new_page_name = preg_replace( "/".$this->target."/U", \
$this->replacement, $cur_page_name ); +					} else {
+						$new_page_name = str_replace( $this->target, $this->replacement, \
$cur_page_name ); +					}
 					$new_title = Title::makeTitleSafe( $row->page_namespace, \
$new_page_name );  $err = $title->isValidMoveOperation( $new_title );
-					if ( $title->userCan( 'move', true ) && !is_array( $err ) ) {
+					if ( $title->userCan( 'move' ) && !is_array( $err ) ) {
 						$titles_for_move[] = $title;
 					} else {
 						$unmoveable_titles[] = $title;
@@ -139,15 +154,14 @@ class ReplaceText extends SpecialPage {
 			// if no results were found, check to see if a bad
 			// category name was entered
 			if ( count( $titles_for_edit ) == 0 && count( $titles_for_move ) == 0 ) \
                {
-				$sk = $this->user->getSkin();
 				$bad_cat_name = false;
 				if ( ! empty( $this->category ) ) {
 					$category_title = Title::makeTitleSafe( NS_CATEGORY, $this->category \
);  if ( ! $category_title->exists() ) $bad_cat_name = true;
 				}
 				if ( $bad_cat_name ) {
-					//FIXME: raw html message
-					$wgOut->addHTML( wfMsg( 'replacetext_nosuchcategory', $sk->link( \
$category_title, ucfirst( $this->category ) ) ) ); +					$link = \
$linker->link( $category_title, htmlspecialchars( ucfirst( $this->category \
) ) ); +					$wgOut->addHTML( wfMsgHtml( 'replacetext_nosuchcategory', \
$link ) );  } else {
 					if ( $this->edit_pages )
 						$wgOut->addWikiMsg( 'replacetext_noreplacement', \
"<tt><nowiki>{$this->target}</nowiki></tt>" ); @@ -156,18 +170,18 @@ class \
ReplaceText extends SpecialPage {  }
 				// link back to starting form
 				//FIXME: raw html message
-				$wgOut->addHTML( '<p>' . $sk->makeKnownLinkObj( $this->getTitle(), \
wfMsg( 'replacetext_return' ) ) . '</p>' ); +				$wgOut->addHTML( '<p>' . \
$linker->link( $this->getTitle(), wfMsgHtml( 'replacetext_return' ) ) . \
'</p>' );  } else {
-				// show a warning message if the replacement string
-				// is either blank or found elsewhere on the wiki
-				// (since undoing the replacement would be
-				// difficult in either case)
+				// Show a warning message if the replacement
+				// string is either blank or found elsewhere on
+				// the wiki (since undoing the replacement
+				// would be difficult in either case).
 				$warning_msg = null;
 
 				if ( $this->replacement === '' ) {
 					$warning_msg = wfMsg('replacetext_blankwarning');
 				} elseif ( count( $titles_for_edit ) > 0 ) {
-					$res = $this->doSearchQuery( $this->replacement, \
$this->selected_namespaces, $this->category, $this->prefix ); +					$res = \
$this->doSearchQuery( $this->replacement, $this->selected_namespaces, \
$this->category, $this->prefix, $this->use_regex );  $count = \
$res->numRows();  if ( $count > 0 ) {
 						$warning_msg = wfMsgExt( 'replacetext_warning', 'parsemag',
@@ -176,7 +190,7 @@ class ReplaceText extends SpecialPage {
 						);
 					}
 				} elseif ( count( $titles_for_move ) > 0 ) {
-					$res = $this->getMatchingTitles( $this->replacement, \
$this->selected_namespaces, $this->category, $this->prefix ); +					$res = \
$this->getMatchingTitles( $this->replacement, $this->selected_namespaces, \
$this->category, $this->prefix, $this->use_regex );  $count = \
$res->numRows();  if ( $count > 0 ) {
 						$warning_msg = wfMsgExt( 'replacetext_warning', 'parsemag',
@@ -200,11 +214,11 @@ class ReplaceText extends SpecialPage {
 	}
 
 	function showForm( $warning_msg = null ) {
-		global  $wgOut;
+		global $wgOut;
 		$wgOut->addHTML(
-			Xml::openElement( 'form', array( 'id' => 'powersearch', 'action' => \
                $this->getTitle()->getFullUrl(), 'method' => 'post' ) ) .
-			Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
-			Html::hidden( 'continue', 1 )
+			Xml::openElement( 'form', array( 'id' => 'powersearch', 'action' => \
$this->getTitle()->getFullUrl(), 'method' => 'post' ) ) . "\n" . \
+			self::hiddenField( 'title', $this->getTitle()->getPrefixedText() ) . \
+			self::hiddenField( 'continue', 1 )  );
 		if ( is_null( $warning_msg ) ) {
 			$wgOut->addWikiMsg( 'replacetext_docu' );
@@ -223,8 +237,13 @@ class ReplaceText extends SpecialPage {
 		$wgOut->addHTML( '</td><td>' );
 		$wgOut->addHTML( Xml::textarea( 'replacement', $this->replacement, 50, \
2, array( 'style' => 'width: auto;' ) ) );  $wgOut->addHTML( \
'</td></tr></table>' ); +		$wgOut->addHTML( Xml::tags( 'p', null,
+				Xml::checkLabel( wfMsg( 'replacetext_useregex' ), 'use_regex', \
'use_regex' ) ) . "\n" . +			Xml::element( 'p', array( 'style' => \
'font-style: italic' ), +				wfMsg( 'replacetext_regexdocu' ) )
+		);
 
-		// the interface is heavily based on the one in Special:Search
+		// The interface is heavily based on the one in Special:Search.
 		$search_label = wfMsg( 'powersearch-ns' );
 		$namespaces = SearchEngine::searchableNamespaces();
 		$tables = $this->namespaceTables( $namespaces );
@@ -233,10 +252,10 @@ class ReplaceText extends SpecialPage {
 			"<fieldset id=\"mw-searchoptions\">\n" . 
 			Xml::tags( 'h4', null, wfMsgExt( 'powersearch-ns', array( 'parseinline' \
) ) )  );
-		// the ability to select/unselect groups of namespaces in the
+		// The ability to select/unselect groups of namespaces in the
 		// search interface exists only in some skins, like Vector -
 		// check for the presence of the 'powersearch-togglelabel'
-		// message to see if we can use this functionality here
+		// message to see if we can use this functionality here.
 		if ( !wfEmptyMsg( 'powersearch-togglelabel', wfMsg( \
'powersearch-togglelabel' ) ) ) {  $wgOut->addHTML(
 				Xml::tags(
@@ -248,6 +267,7 @@ class ReplaceText extends SpecialPage {
 						array(
 							'type'=>'button',
 							'id' => 'mw-search-toggleall',
+							// 'onclick' value needed for MW 1.16
 							'onclick' => 'mwToggleSearchCheckboxes("all");',
 							'value' => wfMsg( 'powersearch-toggleall' )
 						)
@@ -257,12 +277,12 @@ class ReplaceText extends SpecialPage {
 						array(
 							'type'=>'button',
 							'id' => 'mw-search-togglenone',
+							// 'onclick' value needed for MW 1.16
 							'onclick' => 'mwToggleSearchCheckboxes("none");',
 							'value' => wfMsg( 'powersearch-togglenone' )
 						)
 					)
 				)
-			
 			);
 		} // end if
 		$wgOut->addHTML(
@@ -278,9 +298,9 @@ class ReplaceText extends SpecialPage {
 			Xml::tags( 'h4', null, wfMsgExt( 'replacetext_optionalfilters', array( \
'parseinline' ) ) ) .  Xml::element( 'div', array( 'class' => 'divider' ), \
'', false ) .  "<p>$category_search_label\n" .
-			Xml::input( 'category', 20, $this->category ) . '</p>' .
+			Xml::input( 'category', 20, $this->category, array( 'type' => 'text' ) \
) . '</p>' .  "<p>$prefix_search_label\n" .
-			Xml::input( 'prefix', 20, $this->prefix ) . '</p>' .
+			Xml::input( 'prefix', 20, $this->prefix, array( 'type' => 'text' ) ) . \
'</p>' .  "</fieldset>\n" .
 			"<p>\n" .
 			Xml::checkLabel( wfMsg( 'replacetext_editpages' ), 'edit_pages', \
'edit_pages', true ) . '<br />' . @@ -289,8 +309,12 @@ class ReplaceText \
extends SpecialPage {  Xml::submitButton( wfMsg( 'replacetext_continue' ) ) \
.  Xml::closeElement( 'form' )
 		);
-		// add javascript specific to special:search
-		$wgOut->addScriptFile( 'search.js' );
+		// Add Javascript specific to Special:Search
+		if ( method_exists( $wgOut, 'addModules' ) ) {
+			$wgOut->addModules( 'mediawiki.special.search' );
+		} else {
+			$wgOut->addScriptFile( 'search.js' );
+		}
 	}
 
 	/**
@@ -334,23 +358,20 @@ class ReplaceText extends SpecialPage {
 		return $tables;
 	}
 
-
 	function pageListForm( $titles_for_edit, $titles_for_move, \
                $unmoveable_titles ) {
-		global $wgOut, $wgLang, $wgScript;
-
-		$skin = $this->user->getSkin();
+		global $wgOut, $wgLang, $wgScriptPath;
+		$linker = class_exists( 'DummyLinker' ) ? new DummyLinker : new Linker;
 
 		$formOpts = array( 'id' => 'choose_pages', 'method' => 'post', 'action' \
=> $this->getTitle()->getFullUrl() );  $wgOut->addHTML(
-			Xml::openElement( 'form', $formOpts ) .
-			Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
-			Html::hidden( 'target', $this->target ) .
-			Html::hidden( 'replacement', $this->replacement )
+			Xml::openElement( 'form', $formOpts ) . "\n" .
+			self::hiddenField( 'title', $this->getTitle()->getPrefixedText() ) .
+			self::hiddenField( 'target', $this->target ) .
+			self::hiddenField( 'replacement', $this->replacement ) .
+			self::hiddenField( 'use_regex', $this->use_regex )
 		);
 
-		$js = file_get_contents( dirname( __FILE__ ) . '/ReplaceText.js' );
-		$js = '<script type="text/javascript">' . $js . '</script>';
-		$wgOut->addScript( $js );
+		$wgOut->addScriptFile( \
"$wgScriptPath/extensions/ReplaceText/ReplaceText.js" );  
 		if ( count( $titles_for_edit ) > 0 ) {
 			$wgOut->addWikiMsg( 'replacetext_choosepagesforedit', \
"<tt><nowiki>{$this->target}</nowiki></tt>", \
"<tt><nowiki>{$this->replacement}</nowiki></tt>", @@ -360,7 +381,7 @@ class \
ReplaceText extends SpecialPage {  list( $title, $context ) = \
$title_and_context;  $wgOut->addHTML(
 					Xml::check( $title->getArticleID(), true ) .
-					$skin->makeKnownLinkObj( $title, $title->getPrefixedText() ) . " - \
<small>$context</small><br />\n" +					$linker->link( $title ) . " - \
<small>$context</small><br />\n"  );
 			}
 			$wgOut->addHTML( '<br />' );
@@ -371,7 +392,7 @@ class ReplaceText extends SpecialPage {
 			foreach ( $titles_for_move as $title ) {
 				$wgOut->addHTML(
 					Xml::check( 'move-' . $title->getArticleID(), true ) .
-					$skin->makeLinkObj( $title, $title->prefix( $title->getText() ) ) . \
"<br />\n" +					$linker->link( $title ) . "<br />\n"
 				);
 			}
 			$wgOut->addHTML( '<br />' );
@@ -385,11 +406,12 @@ class ReplaceText extends SpecialPage {
 
 		$wgOut->addHTML(
 			"<br />\n" .
-			Xml::submitButton( wfMsg( 'replacetext_replace' ) ) .
-			Html::hidden( 'replace', 1 )
+			Xml::submitButton( wfMsg( 'replacetext_replace' ) ) . "\n" .
+			self::hiddenField( 'replace', 1 )
 		);
 
-		// only show "invert selections" link if there are more than five pages
+		// Only show "invert selections" link if there are more than
+		// five pages.
 		if ( count( $titles_for_edit ) + count( $titles_for_move ) > 5 ) {
 			$buttonOpts = array(
 				'type' => 'button',
@@ -408,25 +430,31 @@ class ReplaceText extends SpecialPage {
 			$wgOut->addWikiMsg( 'replacetext_cannotmove', $wgLang->formatNum( \
count( $unmoveable_titles ) ) );  $text = "<ul>\n";
 			foreach ( $unmoveable_titles as $title ) {
-				$text .= "<li>{$skin->makeKnownLinkObj( $title, \
$title->getPrefixedText() )}<br />\n"; +				$text .= "<li>{$linker->link( \
$title )}<br />\n";  }
 			$text .= "</ul>\n";
 			$wgOut->addHTML( $text );
 		}
 	}
 
-
 	/**
 	 * Extract context and highlights search text
+	 *
+	 * TODO: The bolding needs to be fixed for regular expressions.
 	 */
-	function extractContext( $text, $target ) {
+	function extractContext( $text, $target, $use_regex = false ) {
 		global $wgLang;
+
 		$cw = $this->user->getOption( 'contextchars', 40 );
 
 		// Get all indexes
-		$targetq = preg_quote( $target, '/' );
-		preg_match_all( "/$targetq/", $text, $matches, PREG_OFFSET_CAPTURE );
-
+		if ( $use_regex ) {
+			preg_match_all( "/$target/", $text, $matches, PREG_OFFSET_CAPTURE );
+		} else {
+			$targetq = preg_quote( $target, '/' );
+			preg_match_all( "/$targetq/", $text, $matches, PREG_OFFSET_CAPTURE );
+		}
+ 
 		$poss = array();
 		foreach ( $matches[0] as $_ ) {
 			$poss[] = $_[1];
@@ -452,13 +480,22 @@ class ReplaceText extends SpecialPage {
 		$context = '';
 		foreach ( $cuts as $_ ) {
 			list( $index, $len, ) = $_;
-			$context .= self::convertWhiteSpaceToHTML( $wgLang->truncate( substr( \
$text, 0, $index ), - $cw ) ); +			$context .= \
self::convertWhiteSpaceToHTML( +				$wgLang->truncate( substr( $text, 0, \
$index ), - $cw, '...', false ) +			);
 			$snippet = self::convertWhiteSpaceToHTML( substr( $text, $index, $len ) \
                );
-			$targetq = preg_quote( self::convertWhiteSpaceToHTML( $target ), '/' );
-			$context .= preg_replace( "/$targetq/i", '<span \
                class="searchmatch">\0</span>', $snippet );
-			$context .= self::convertWhiteSpaceToHTML( $wgLang->truncate( substr( \
                $text, $index + $len ), $cw ) );
-		}
+			if ( $use_regex ) {
+				$targetStr = "/$target/U";
+			} else {
+				$targetq = preg_quote( self::convertWhiteSpaceToHTML( $target ), '/' \
); +				$targetStr = "/$targetq/i";
+			}
+			$context .= preg_replace( $targetStr, '<span \
class="searchmatch">\0</span>', $snippet );  
+			$context .= self::convertWhiteSpaceToHTML(
+				$wgLang->truncate( substr( $text, $index + $len ), $cw, '...', false )
+			);
+		}
 		return $context;
 	}
 
@@ -471,27 +508,23 @@ class ReplaceText extends SpecialPage {
 		return $msg;
 	}
 
-	function getMatchingTitles( $str, $namespaces, $category, $prefix ) {
+	function getMatchingTitles( $str, $namespaces, $category, $prefix, \
$use_regex = false ) {  $dbr = wfGetDB( DB_SLAVE );
 
-		$str = Title::newFromText( $str )->getDbKey();
-
 		$tables = array( 'page' );
 		$vars = array( 'page_title', 'page_namespace' );
-		// anyString() method was added in MW 1.16
-		if ( method_exists( $dbr, 'anyString' ) ) {
-			$any = $dbr->anyString();
-			$conds = array(
-				'page_title ' . $dbr->buildLike( $any, $str, $any ),
-				"page_namespace IN ({$dbr->makeList( $namespaces )})",
-			);
+
+		$str = str_replace( ' ', '_', $str );
+		if ( $use_regex ) {
+			$comparisonCond = 'page_title REGEXP ' . $dbr->addQuotes( $str );
 		} else {
-			$include_ns = $dbr->makeList( $namespaces );
-			$conds = array(
-				"page_title LIKE '%$str%'",
-				"page_namespace IN ($include_ns)",
-			);
+			$any = $dbr->anyString();
+			$comparisonCond = 'page_title ' . $dbr->buildLike( $any, $str, $any );
 		}
+		$conds = array(
+			$comparisonCond,
+			'page_namespace' => $namespaces,
+		);
 
 		$this->categoryCondition( $category, $tables, $conds );
 		$this->prefixCondition( $prefix, $conds );
@@ -500,30 +533,22 @@ class ReplaceText extends SpecialPage {
 		return $dbr->select( $tables, $vars, $conds, __METHOD__ , $sort );
 	}
 
-	function doSearchQuery( $search, $namespaces, $category, $prefix ) {
+	function doSearchQuery( $search, $namespaces, $category, $prefix, \
$use_regex = false ) {  $dbr = wfGetDB( DB_SLAVE );
-
 		$tables = array( 'page', 'revision', 'text' );
 		$vars = array( 'page_id', 'page_namespace', 'page_title', 'old_text' );
-		// anyString() method was added in MW 1.16
-		if ( method_exists( $dbr, 'anyString' ) ) {
-			$any = $dbr->anyString();
-			$conds = array(
-				'old_text ' . $dbr->buildLike( $any, $search, $any ),
-				"page_namespace IN ({$dbr->makeList( $namespaces )})",
-				'rev_id = page_latest',
-				'rev_text_id = old_id'
-			);
+		if ( $use_regex ) {
+			$comparisonCond = 'old_text REGEXP ' . $dbr->addQuotes( $search );
 		} else {
 			$any = $dbr->anyString();
-			$include_ns = $dbr->makeList( $namespaces );
-			$conds = array(
-				"old_text " . $dbr->buildLike( $any, $search, $any ),
-				"page_namespace IN ($include_ns)",
-				'rev_id = page_latest',
-				'rev_text_id = old_id'
-			);
+			$comparisonCond = 'old_text ' . $dbr->buildLike( $any, $search, $any );
 		}
+		$conds = array(
+			$comparisonCond,
+			'page_namespace' => $namespaces,
+			'rev_id = page_latest',
+			'rev_text_id = old_id'
+		);
 
 		$this->categoryCondition( $category, $tables, $conds );
 		$this->prefixCondition( $prefix, $conds );
@@ -533,7 +558,7 @@ class ReplaceText extends SpecialPage {
 	}
 
 	protected function categoryCondition( $category, &$tables, &$conds ) {
-		if ( !empty( $category ) ) {
+		if ( strval( $category ) !== '' ) {
 			$category = Title::newFromText( $category )->getDbKey();
 			$tables[] = 'categorylinks';
 			$conds[] = 'page_id = cl_from';
@@ -542,17 +567,14 @@ class ReplaceText extends SpecialPage {
 	}
 
 	protected function prefixCondition( $prefix, &$conds ) {
-		if ( !empty( $prefix ) ) {
-			$dbr = wfGetDB( DB_SLAVE );
-			$prefix = Title::newFromText( $prefix )->getDbKey();
-			// anyString() function was added in MW 1.16
-			if ( method_exists( $dbr, 'anyString' ) ) {
-				$any = $dbr->anyString();
-				$conds[] = 'page_title ' . $dbr->buildLike( $prefix, $any );
-			} else {
-				$conds[] = "page_title LIKE '$prefix%'";
-			}
+		if ( strval( $prefix ) === '' ) {
+			return;
 		}
+			
+		$dbr = wfGetDB( DB_SLAVE );
+		$prefix = Title::newFromText( $prefix )->getDbKey();
+		$any = $dbr->anyString();
+		$conds[] = 'page_title ' . $dbr->buildLike( $prefix, $any );
 	}
 
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic