Préparation de la migration de mon bot depuis le Toolserver vers les Labs ().
Il reste beaucoup d'articles utilisant l'ancienne présentation des prononciations : // sans modèle. JackBot est passé sur pas mal de ces articles, mais a oublié par endroit d'enlever l'ancienne prononciation.
\{\{pron\|(.+?)\|(.+?)\}\} /\1/
--> {{pron|\1|\2}}
Suite : afin de remplacer tous les /xxx/, j'ai écrit un fix :
fixes = { 'regex' : True, 'msg' : { '_default':u"Bot : modèle de prononciation: /xxx/ -> {{pron|xxx|lang}}", }, 'replacements': [ # First MARK LANGUE (u"==( *)\{\{langue\|(.+)\}\}( *)== *", u"§§§" + r"\1\2\3" + u"§§§"), (u"(§§§ *)(+)( *§§§+?) \/(*)\/", r"\1\2\3 {{pron|\4|\2}}"), (u"(§§§ *)(+)( *§§§+?) \/(*)\/", r"\1\2\3 {{pron|\4|\2}}"), (u"(§§§ *)(+)( *§§§+?) \/(*)\/", r"\1\2\3 {{pron|\4|\2}}"), (u"(§§§ *)(+)( *§§§+?) \/(*)\/", r"\1\2\3 {{pron|\4|\2}}"), (u"(§§§ *)(+)( *§§§+?) \/(*)\/", r"\1\2\3 {{pron|\4|\2}}"), (u"(§§§ *)(+)( *§§§+?) \/(*)\/", r"\1\2\3 {{pron|\4|\2}}"), (u"(§§§ *)(+)( *§§§+?) \/(*)\/", r"\1\2\3 {{pron|\4|\2}}"), (u"(§§§ *)(+)( *§§§+?) \/(*)\/", r"\1\2\3 {{pron|\4|\2}}"), (u" \/(*)\/", r" {{pron|\1}}"), # RESTORE LANGUE (u"§§§( *)(.+?)( *)§§§", r"==\1{{langue|\2}}\3=="), # Fix for old API SAMPA duo (u"+ *\{\{(API|IPA)\}\} *:? *(\{\{pron\|.+\}\}) *+\* *\{\{SAMPA\}\} *: *\{\{pron\|+\}\} *(*)", r"* \2\3"), # Fix for broken conversion (u"+ *\{\{pron\|\|+?\}\} *:? *(\{\{pron\|+\}\}) *+\* *\{\{SAMPA\}\} *: *\{\{pron\|+\}\} *(*)", r"* \1\2"), # Same without SAMPA (u"+ *(\{\{pron\|\|+?\}\}|\\]|\\]|API|IPA) *:? *(\{\{pron\|+\}\}) *", r"* \2"), ], 'exceptions': { 'text-contains': [ u'\{\{R:AHD\}\}', u'http://', u'/…/\)', ], } }
{{API}}
et {{SAMPA}}
(voire {{IPA}}
!). Pour corser les choses, JackBot est passé sur ces pages mais ne les a pas changé comme il aurait fallut, donc il faudra attendre que ces pages soient corrigées avant de reprendre les corrections manuelles.Inclusion des catégories et id dans le modèle term.
fixes = { 'regex' : True, 'msg' : { '_default':u"Bot : catégorisation et id paramètres de term", }, 'replacements': [ # Sans catfin (u"<span id=\"?(+)\"?>\{\{terme?\|(.+)\}\}</span><includeonly>\{\{#if:\{\{\{nocat\|\}\}\}\{\{NAMESPACE\}\}\|\|\r?\n?\{\{#ifeq:\{\{\{1\|\}\}\}\|nocat\|\|\\] *\}\} *\}\}</includeonly>", r"{{term|\2|\n|id=\1\n|lang={{{1|}}}\n|cat=\3\n|nocat={{{nocat|}}}\n}}"), # Avec catfin (u"<span id=\"?(+)\"?>\{\{terme?\|(.+)\}\}</span><includeonly>\{\{#if:\{\{\{nocat\|\}\}\}\{\{NAMESPACE\}\}\|\|\r?\n?\{\{#ifeq:\{\{\{1\|\}\}\}\|nocat\|\|\\] *\}\} *\}\}</includeonly>", r"{{term|\2|\n|id=\1\n|lang={{{1|}}}\n|cat=\3\n|catfin=\5\n|nocat={{{nocat|}}}\n}}"), ] }
Même chose avec {{registre}}.
fixes = { 'regex' : True, 'msg' : { '_default':u"Bot : catégorisation et id paramètres de {{registre}}", }, 'replacements': [ # Avec nom langue (u"\{\{registre\|(.+)\|(.)\}\}<includeonly>\{\{#ifeq:\{\{NAMESPACE\}\}\|\|\{\{#if:\{\{\{nocat\|\}\}\}\|\|\{\{#ifeq:\{\{\{1\|\}\}\}\|nocat\|\|<span id=\"(.+?)\"></span>\\]\}\} ?\}\} ?\}\}</includeonly>", r"{{registre\n|1=\1\n|2=\2\n|id=\3\n|lang={{{1|}}}\n|cat=\4\n|nocat={{{nocat|}}}\n}}"), # Sans nom langue (u"\{\{registre\|(.+)\|(.)\}\}<includeonly>\{\{#ifeq:\{\{NAMESPACE\}\}\|\|\{\{#if:\{\{\{nocat\|\}\}\}\|\|\{\{#ifeq:\{\{\{1\|\}\}\}\|nocat\|\|<span id=\"(.+?)\"></span>\\]\}\} ?\}\} ?\}\}</includeonly>", r"{{registre\n|1=\1\n|2=\2\n|id=\3\n|lang={{{1|}}}\n|cat=\4\n|nocat={{{nocat|}}}\n}}"), {{registre|Vieilli|V}}<includeonly>{{#if: {{{nocat|}}}||{{#ifeq:{{{1|}}}|nocat||<span id="vieilli"></span>{{#ifeq:{{NAMESPACE}}||]}} }} }}</includeonly> # Sans nom langue, id avant (u"<span id=\"(.+?)\">\{\{registre\|(.+)\|(.)\}\}</span><includeonly>\{\{#ifeq:\{\{NAMESPACE\}\}\|\|\{\{#if:\{\{\{nocat\|\}\}\}\|\|\{\{#ifeq:\{\{\{1\|\}\}\}\|nocat\|\|\\]\}\} ?\}\} ?\}\}</includeonly>", r"{{registre\n|1=\2\n|2=\3\n|id=\1\n|lang={{{1|}}}\n|cat=\4\n|nocat={{{nocat|}}}\n}}"), # Meilleure catégorie (u"\[\[Catégorie:Modèles de contexte\|", r"[[Catégorie:Modèles de registre|"), ] }
Certaines pages utilisent encore les modèles de langue nus pour les traductions à la place de T (essentiellement parce qu'elles n'ont aucun contenu). D'autres utilisent ces modèles pour autre chose comme les -drv-int-, mais c'est un autre modèle qu'il faudra utiliser.
fixes = { 'regex' : True, 'msg' : { '_default':u"Bot : Traductions sans modèle {{T}}", }, 'replacements': [ # Protection des trad- et trad-- (u"\{\{trad--", r"{{tradMOINSMOINS"), (u"\{\{trad-", r"{{tradMINUS"), # Cas où la traduction est juste ]... (u"\* \{\{en\}\} ?: \\]", r"* {{T|en}} :"), # Ligne répétée de nombreuses fois (u"(\{\{-trad-\}\}+)\* ?\{\{(+)\}\} :", r"\1* {{T|\2}} :"), (u"(\{\{-trad-\}\}+)\* ?\{\{(+)\}\} :", r"\1* {{T|\2}} :"), # Déprotection (u"\{\{tradMINUS", r"{{trad-"), (u"\{\{tradMOINSMOINS", r"{{trad--"), ] }
Pour les sections {{-drv-int-}}, {{-faux-amis-}} et {{-noms-vern-}}, on a aussi des listes de langue mais sans catégorisation particulière. Pour ceux-ci il existe le modèle {{L}} qui a le même rôle que {{L}} dans les traductions.
fixes = { 'regex' : True, 'msg' : { '_default':u"Bot : Modèles de langue en liste remplacés par le modèle {{L}}", }, 'replacements': [ (u"(\{\{-(drv-int|noms-vern|n-vern|dial)-\}\}+)\*\s*rançais\s*:", r"\1* {{L|fr}} :"), (u"(\{\{-(drv-int|noms-vern|n-vern|dial)-\}\}+)\*\s*nglais\s*:", r"\1* {{L|en}} :"), (u"(\{\{-(drv-int|noms-vern|n-vern|dial)-\}\}+)\*\s*llemand\s*:", r"\1* {{L|de}} :"), (u"(\{\{-(drv-int|noms-vern|n-vern|dial)-\}\}+)\*\s*talien\s*:", r"\1* {{L|it}} :"), (u"(\{\{-(drv-int|noms-vern|n-vern|dial)-\}\}+)\*\s*spagnol\s*:", r"\1* {{L|es}} :"), # Ligne répétée de nombreuses fois (u"(\{\{-(drv-int|noms-vern|n-vern|dial)-\}\}+)\*\s*\{\{(+)\}\}\s*:", r"\1* {{L|\3}} :"), ], }
Le modèle {{M|tmef}} est inutilement abrégé : autant le remplacer par le nom complet et compréhensible : {{M|titre mis en forme}}.
Il faudrait changer les modèles de Catégorie:Modèles de base de code langue vers Catégorie:Modèles désuets de code langue, en ajoutant une catégorie spéciale pour les repérer (Catégorie:Utilisations de modèles désuets de code langue) (màj : les modèles étant utilisés dans des liens, on ne peut pas catégoriser ainsi) et un bandeau {{modèle désuet de code langue}}.
fixes = { 'regex' : True, 'msg' : { '_default':u"Bot : nom de langue avec {{nom langue}} + bandeau et catégorie de modèle obsolètes", }, 'replacements': [ (u"^.+<noinclude>\\]</noinclude>", u"{{nom langue|{{subst:PAGENAME}}}}<noinclude>{{modèle désuet de code langue}}</noinclude>"), ], }
Il faudrait changer les modèles de Catégorie:Modèles de code langue (trompeuse) vers Catégorie:Modèles désuets de section de langue, en ajoutant une catégorie spéciale pour les repérer (Catégorie:Utilisations de modèles désuets de section de langue) et un bandeau {{modèle désuet de section de langue}}.
fixes = { 'regex' : True, 'msg' : { '_default':u"Bot : utilisation des noms de langue depuis le module:langues/data + catégorie de modèle obsolètes", }, 'replacements': [ (u"*\{\{=langue=\|.*code=(.+?)*", r"{{langue|\1}}<includeonly>" + u"]</includeonly><noinclude>\n{{" + u"modèle désuet de section de langue|" + r"\1}}</noinclude>"), (u"*\{\{=langue=\|1=\{\{(.+?)\|type=Nom\}\}\}\}*", r"{{langue|\1}}<includeonly>" + u"]</includeonly><noinclude>\n{{" + u"modèle désuet de section de langue|" + r"\1}}</noinclude>"), ], }
Préparation pour la conversion des modèles de section tels que proposé dans WT:Prise de décision/Rendre toutes les sections modifiables.
fixes = { 'regex' : True, 'msg' : { '_default':u"Bot : nouveau modèle {{S}} remplaçant toutes les sections sauf les sections de langue (voir ])", }, 'replacements': [ # Sections normales # À FAIRE # Sections de types de mots (le reste) (u"\{\{-(.+)-.+\}\}", r"=== {{S|\1}} ==="), # Remplacement des abréviations des types de mot (u"\{\{S\|(prov)\|", u"{{S|proverbe|"), (u"\{\{S\|(symb)\|", u"{{S|symbole|"), (u"\{\{S\|(adverbe int|adv int)\|", u"{{S|adverbe interrogatif|"), (u"\{\{S\|(préf|pref)\|", u"{{S|préfixe|"), (u"\{\{S\|(adjectif pos|adj pos|adj possessif)\|", u"{{S|adjectif possessif|"), (u"\{\{S\|(circon|circonf)\|", u"{{S|circonfixe|"), (u"\{\{S\|(sino|sinog)\|", u"{{S|sinogramme|"), (u"\{\{S\|(onoma|onom)\|", u"{{S|onomatopée|"), (u"\{\{S\|(faute d'orthographe|faute d’orthographe|faute)\|", u"{{S|erreur|"), (u"\{\{S\|(art indéfini|article indéf|art indéf)\|", u"{{S|article indéfini|"), (u"\{\{S\|(numér|num)\|", u"{{S|numéral|"), (u"\{\{S\|(nom science|nom sciences|nom scient)\|", u"{{S|nom scientifique|"), (u"\{\{S\|(class|classif)\|", u"{{S|classificateur|"), (u"\{\{S\|(interj)\|", u"{{S|interjection|"), (u"\{\{S\|(verb pr|verbe pr|verbe pronom)\|", u"{{S|verbe pronominal|"), (u"\{\{S\|(var typo|variante par contrainte typographique|variante typo)\|", u"{{S|variante typographique|"), (u"\{\{S\|(adjectif qualificatif|adj)\|", u"{{S|adjectif|"), (u"\{\{S\|(art défini|article déf|art déf)\|", u"{{S|article défini|"), (u"\{\{S\|(suf|suff)\|", u"{{S|suffixe|"), (u"\{\{S\|(loc-phr)\|", u"{{S|locution phrase|"), (u"\{\{S\|(loc)\|", u"{{S|locution|"), (u"\{\{S\|(pronom réfl|pronom réfléchi|pronom pers)\|", u"{{S|pronom personnel|"), (u"\{\{S\|(pronom rel)\|", u"{{S|pronom relatif|"), (u"\{\{S\|(post|postpos)\|", u"{{S|postposition|"), (u"\{\{S\|(pronom int|pronom inter)\|", u"{{S|pronom interrogatif|"), (u"\{\{S\|(quantif)\|", u"{{S|quantifieur|"), (u"\{\{S\|(rad)\|", u"{{S|radical|"), (u"\{\{S\|(part)\|", u"{{S|particule|"), (u"\{\{S\|(part num|part numérale|particule num)\|", u"{{S|particule numérale|"), (u"\{\{S\|(art part|art partitif|article part)\|", u"{{S|article partitif|"), (u"\{\{S\|(inf)\|", u"{{S|infixe|"), (u"\{\{S\|(conj)\|", u"{{S|conjonction|"), (u"\{\{S\|(nom fam)\|", u"{{S|nom de famille|"), (u"\{\{S\|(interf)\|", u"{{S|interfixe|"), (u"\{\{S\|(adverbe rel|adv rel)\|", u"{{S|adverbe relatif|"), (u"\{\{S\|(pronom dém)\|", u"{{S|pronom démonstratif|"), (u"\{\{S\|(adv pron|adv pr|adverbe pr|adv pronom)\|", u"{{S|adverbe pronominal|"), (u"\{\{S\|(adjectif dém|adj dém|adj démonstratif)\|", u"{{S|adjectif démonstratif|"), (u"\{\{S\|(verb)\|", u"{{S|verbe|"), (u"\{\{S\|(adj num|adj numéral|adjectif num)\|", u"{{S|adjectif numéral|"), (u"\{\{S\|(adj indéfini|adj indéf|adjectif indéf)\|", u"{{S|adjectif indéfini|"), (u"\{\{S\|(nom pr)\|", u"{{S|nom propre|"), (u"\{\{S\|(substantif|nom commun)\|", u"{{S|nom|"), (u"\{\{S\|(pronom pos)\|", u"{{S|pronom possessif|"), (u"\{\{S\|(pronom indéf)\|", u"{{S|pronom indéfini|"), (u"\{\{S\|(adj exclamatif|adj excl|adjectif excl)\|", u"{{S|adjectif exclamatif|"), (u"\{\{S\|(prép)\|", u"{{S|préposition|"), (u"\{\{S\|(aff)\|", u"{{S|affixe|"), (u"\{\{S\|(verb aux|aux|verbe auxiliaire|verbe aux)\|", u"{{S|auxiliaire|"), (u"\{\{S\|(conj coord|conjonction coord)\|", u"{{S|conjonction de coordination|"), (u"\{\{S\|(adj interrogatif|adj int|adjectif int)\|", u"{{S|adjectif interrogatif|"), (u"\{\{S\|(dét)\|", u"{{S|déterminant|"), (u"\{\{S\|(adv)\|", u"{{S|adverbe|"), (u"\{\{S\|(art)\|", u"{{S|article|"), ], }