diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..15a15b2
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/locale/de/LC_MESSAGES/rcgcdw.mo b/locale/de/LC_MESSAGES/rcgcdw.mo
index 29d1bb1..a32cf76 100644
Binary files a/locale/de/LC_MESSAGES/rcgcdw.mo and b/locale/de/LC_MESSAGES/rcgcdw.mo differ
diff --git a/locale/de/LC_MESSAGES/rcgcdw.po b/locale/de/LC_MESSAGES/rcgcdw.po
index 4566525..1c00af8 100644
--- a/locale/de/LC_MESSAGES/rcgcdw.po
+++ b/locale/de/LC_MESSAGES/rcgcdw.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-11-13 14:36+0100\n"
-"PO-Revision-Date: 2018-11-13 14:44+0100\n"
+"POT-Creation-Date: 2019-01-26 19:51+0100\n"
+"PO-Revision-Date: 2019-01-26 19:56+0100\n"
"Last-Translator: Frisk \n"
"Language-Team: \n"
"Language: de\n"
@@ -15,46 +15,46 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
-"X-Generator: Poedit 2.2\n"
+"X-Generator: Poedit 2.2.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: rcgcdw.py:176
+#: rcgcdw.py:189
msgid "(N!) "
msgstr "(N!) "
-#: rcgcdw.py:177
+#: rcgcdw.py:190
msgid "m "
msgstr "K "
-#: rcgcdw.py:202 rcgcdw.py:234
+#: rcgcdw.py:216 rcgcdw.py:248
msgid "Options"
msgstr "Optionen"
-#: rcgcdw.py:202
+#: rcgcdw.py:216
#, python-brace-format
msgid "([preview]({link}) | [undo]({undolink}))"
msgstr "([Vorschau]({link}) | [zurücksetzen]({undolink}))"
-#: rcgcdw.py:204
+#: rcgcdw.py:218
#, python-brace-format
msgid "Uploaded a new version of {name}"
msgstr "Neue Dateiversion {name}"
-#: rcgcdw.py:206
+#: rcgcdw.py:220
#, python-brace-format
msgid "Uploaded {name}"
msgstr "Neue Datei {name}"
-#: rcgcdw.py:221
+#: rcgcdw.py:235
msgid "**No license!**"
msgstr "**Keine Lizenz!**"
-#: rcgcdw.py:234
+#: rcgcdw.py:248
#, python-brace-format
msgid "([preview]({link}))"
msgstr "([Vorschau]({link}))"
-#: rcgcdw.py:235
+#: rcgcdw.py:249
#, python-brace-format
msgid ""
"{desc}\n"
@@ -63,445 +63,474 @@ msgstr ""
"{desc}\n"
"Lizenz: {license}"
-#: rcgcdw.py:240
+#: rcgcdw.py:254
#, python-brace-format
msgid "Deleted page {article}"
msgstr "Löschte {article}"
-#: rcgcdw.py:244
+#: rcgcdw.py:258
#, python-brace-format
msgid "Deleted redirect {article} by overwriting"
msgstr "Löschte die Weiterleitung {article} um Platz zu machen"
-#: rcgcdw.py:249
+#: rcgcdw.py:263
msgid "No redirect has been made"
msgstr "Die Erstellung einer Weiterleitung wurde unterdrückt"
-#: rcgcdw.py:251
+#: rcgcdw.py:265
msgid "A redirect has been made"
msgstr "Eine Weiterleitung wurde erstellt"
-#: rcgcdw.py:252
+#: rcgcdw.py:266
#, python-brace-format
msgid "Moved {redirect}{article} to {target}"
msgstr "Verschob {redirect}{article} nach {target}"
-#: rcgcdw.py:256
+#: rcgcdw.py:270
#, python-brace-format
msgid "Moved {redirect}{article} to {title} over redirect"
msgstr "Verschob {redirect}{article} nach {title} und überschrieb eine Weiterleitung"
-#: rcgcdw.py:261
+#: rcgcdw.py:275
#, python-brace-format
msgid "Moved protection settings from {redirect}{article} to {title}"
msgstr "Verschob die Schutzeinstellungen von {redirect}{article} nach {title}"
-#: rcgcdw.py:268
+#: rcgcdw.py:282
msgid "infinity and beyond"
msgstr "alle Ewigkeit"
-#: rcgcdw.py:269
+#: rcgcdw.py:283
#, python-brace-format
msgid "Blocked {blocked_user} for {time}"
msgstr "Sperrte {blocked_user} für {time}"
-#: rcgcdw.py:275
+#: rcgcdw.py:289
#, python-brace-format
msgid "Changed block settings for {blocked_user}"
msgstr "Änderte die Sperreinstellungen für {blocked_user}"
-#: rcgcdw.py:281
+#: rcgcdw.py:295
#, python-brace-format
msgid "Unblocked {blocked_user}"
msgstr "Hob die Sperre von {blocked_user} auf"
-#: rcgcdw.py:286
+#: rcgcdw.py:300
#, python-brace-format
msgid "Left a comment on {target}'s profile"
msgstr "Hinterließ ein Kommentar auf dem Profil von {target}"
-#: rcgcdw.py:290
+#: rcgcdw.py:304
msgid "Left a comment on their own profile"
msgstr "Hinterließ ein Kommentar auf seinem eigenen Profil"
-#: rcgcdw.py:295
+#: rcgcdw.py:309
#, python-brace-format
msgid "Replied to a comment on {target}'s profile"
msgstr "Antwortete auf ein Kommentar auf dem Profil von {target}"
-#: rcgcdw.py:299
+#: rcgcdw.py:313
msgid "Replied to a comment on their own profile"
msgstr "Antwortete auf ein Kommentar auf seinem eigenen Profil"
-#: rcgcdw.py:304
+#: rcgcdw.py:318
#, python-brace-format
msgid "Edited a comment on {target}'s profile"
msgstr "Bearbeitete ein Kommentar auf dem Profil von {target}"
-#: rcgcdw.py:308
+#: rcgcdw.py:322
msgid "Edited a comment on their own profile"
msgstr "Bearbeitete ein Kommentar auf seinem eigenen Profil"
-#: rcgcdw.py:315
+#: rcgcdw.py:329
msgid "Location"
msgstr "Wohnort"
-#: rcgcdw.py:317
+#: rcgcdw.py:331
msgid "About me"
msgstr "\"Über mich\"-Abschnitt"
-#: rcgcdw.py:319
+#: rcgcdw.py:333
msgid "Google link"
msgstr "Google-Konto"
-#: rcgcdw.py:321
+#: rcgcdw.py:335
msgid "Facebook link"
msgstr "Facebook-Seite"
-#: rcgcdw.py:323
+#: rcgcdw.py:337
msgid "Twitter link"
msgstr "Twitter-Benutzernamen"
-#: rcgcdw.py:325
+#: rcgcdw.py:339
msgid "Reddit link"
msgstr "Reddit-Benutzernamen"
-#: rcgcdw.py:327
+#: rcgcdw.py:341
msgid "Twitch link"
msgstr "Twitch-Account"
-#: rcgcdw.py:329
+#: rcgcdw.py:343
msgid "PSN link"
msgstr "PSN-Account"
-#: rcgcdw.py:331
+#: rcgcdw.py:345
msgid "VK link"
msgstr "VK-Account"
-#: rcgcdw.py:333
+#: rcgcdw.py:347
msgid "XVL link"
msgstr "Xbox-Live-Tag"
-#: rcgcdw.py:335
+#: rcgcdw.py:349
msgid "Steam link"
msgstr "Steam-Account"
-#: rcgcdw.py:337
+#: rcgcdw.py:351
msgid "Unknown"
msgstr "Unbekannt"
-#: rcgcdw.py:338
+#: rcgcdw.py:352
#, python-brace-format
msgid "Edited {target}'s profile"
msgstr "Bearbeitete das Profil von {target}"
-#: rcgcdw.py:339
+#: rcgcdw.py:353
msgid "Edited their own profile"
msgstr "Bearbeitete sein eigenes Profil"
-#: rcgcdw.py:340
+#: rcgcdw.py:354
#, python-brace-format
msgid "{field} field changed to: {desc}"
msgstr "{field} geändert zu: {desc}"
-#: rcgcdw.py:345
+#: rcgcdw.py:359
#, python-brace-format
msgid "Deleted a comment on {target}'s profile"
msgstr "Löschte ein Kommentar auf dem Profil von {target}"
-#: rcgcdw.py:349
+#: rcgcdw.py:363
#, python-brace-format
msgid "Changed group membership for {target}"
msgstr "Änderte die Gruppenzugehörigkeit von {target}"
-#: rcgcdw.py:351
+#: rcgcdw.py:365
msgid "System"
msgstr "System"
-#: rcgcdw.py:353
+#: rcgcdw.py:367
#, python-brace-format
msgid "{target} got autopromoted to a new usergroup"
msgstr "{target} got autopromoted to a new usergroup"
-#: rcgcdw.py:364 rcgcdw.py:366
+#: rcgcdw.py:378 rcgcdw.py:380
msgid "none"
msgstr "keine"
-#: rcgcdw.py:367 rcgcdw.py:537
+#: rcgcdw.py:381 rcgcdw.py:562
msgid "No description provided"
msgstr "Keine Zusammenfassung angegeben"
-#: rcgcdw.py:368
+#: rcgcdw.py:382
#, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr "Änderte die Gruppenzugehörigkeit von {old_groups} auf {new_groups}{reason}"
-#: rcgcdw.py:373
+#: rcgcdw.py:387
#, python-brace-format
msgid "Protected {target}"
msgstr "Schützte {target}"
-#: rcgcdw.py:378
+#: rcgcdw.py:389 rcgcdw.py:396
+msgid " [cascading]"
+msgstr " [kaskadierend]"
+
+#: rcgcdw.py:394
#, python-brace-format
msgid "Changed protection level for {article}"
msgstr "Änderte den Schutzstatus von {article}"
-#: rcgcdw.py:383
+#: rcgcdw.py:401
#, python-brace-format
msgid "Removed protection from {article}"
msgstr "Entfernte den Schutz von {article}"
-#: rcgcdw.py:388
+#: rcgcdw.py:406
#, python-brace-format
msgid "Changed visibility of revision on page {article} "
msgid_plural "Changed visibility of {amount} revisions on page {article} "
msgstr[0] "Änderte die Sichtbarkeit einer Versionen von {article} "
msgstr[1] "Änderte die Sichtbarkeit von {amount} Versionen von {article} "
-#: rcgcdw.py:394
+#: rcgcdw.py:412
#, python-brace-format
msgid "Imported {article} with {count} revision"
msgid_plural "Imported {article} with {count} revisions"
msgstr[0] "Importierte {article} mit einer Version"
msgstr[1] "Importierte {article} mit {count} Versionen"
-#: rcgcdw.py:400
+#: rcgcdw.py:418
#, python-brace-format
msgid "Restored {article}"
msgstr "Stellte {article} wieder her"
-#: rcgcdw.py:403
+#: rcgcdw.py:421
msgid "Changed visibility of log events"
msgstr "Änderte die Sichtbarkeit eines Logbucheintrags"
-#: rcgcdw.py:406
+#: rcgcdw.py:424
msgid "Imported interwiki"
msgstr "Importierte Interwiki"
-#: rcgcdw.py:409
+#: rcgcdw.py:427
#, python-brace-format
msgid "Edited abuse filter number {number}"
msgstr "Änderte Missbrauchsfilter {number}"
-#: rcgcdw.py:413
+#: rcgcdw.py:430
+#, python-brace-format
+msgid "Created abuse filter number {number}"
+msgstr "Erstellte Missbrauchsfilter {number}"
+
+#: rcgcdw.py:434
#, python-brace-format
msgid "Merged revision histories of {article} into {dest}"
msgstr "Vereinigte Versionsgeschichten von {article} in {dest}"
-#: rcgcdw.py:417
+#: rcgcdw.py:438
msgid "Added an entry to the interwiki table"
msgstr "Fügte ein Interwiki-Präfix hinzu"
-#: rcgcdw.py:418 rcgcdw.py:424
+#: rcgcdw.py:439 rcgcdw.py:445
#, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr "Präfix: {prefix}, URL: {website} | {desc}"
-#: rcgcdw.py:423
+#: rcgcdw.py:444
msgid "Edited an entry in interwiki table"
msgstr "Änderte ein Interwiki-Präfix"
-#: rcgcdw.py:429
+#: rcgcdw.py:450
msgid "Deleted an entry in interwiki table"
msgstr "Entfernte ein Interwiki-Präfix"
-#: rcgcdw.py:430
+#: rcgcdw.py:451
#, python-brace-format
msgid "Prefix: {prefix} | {desc}"
msgstr "Präfix: {prefix} | {desc}"
-#: rcgcdw.py:434
+#: rcgcdw.py:455
#, python-brace-format
msgid "Changed the content model of the page {article}"
msgstr "Änderte das Inhaltsmodell von {article}"
-#: rcgcdw.py:435
+#: rcgcdw.py:456
#, python-brace-format
msgid "Model changed from {old} to {new}: {reason}"
msgstr "Modell geändert von {old} zu {new}: {reason}"
-#: rcgcdw.py:441
+#: rcgcdw.py:462
#, python-brace-format
msgid "Edited the sprite for {article}"
msgstr "Edited the sprite for {article}"
-#: rcgcdw.py:445
+#: rcgcdw.py:466
#, python-brace-format
msgid "Created the sprite sheet for {article}"
msgstr "Created the sprite sheet for {article}"
-#: rcgcdw.py:449
+#: rcgcdw.py:470
#, python-brace-format
msgid "Edited the slice for {article}"
msgstr "Edited the slice for {article}"
-#: rcgcdw.py:452
+#: rcgcdw.py:473
#, python-brace-format
msgid "Created a tag \"{tag}\""
msgstr "Erstellte die Markierung \"{tag}\""
-#: rcgcdw.py:456
+#: rcgcdw.py:477
#, python-brace-format
msgid "Deleted a tag \"{tag}\""
msgstr "Löschte die Markierung \"{tag}\""
-#: rcgcdw.py:460
+#: rcgcdw.py:481
#, python-brace-format
msgid "Activated a tag \"{tag}\""
msgstr "Aktivierte die Markierung \"{tag}\""
-#: rcgcdw.py:463
+#: rcgcdw.py:484
#, python-brace-format
msgid "Deactivated a tag \"{tag}\""
msgstr "Deaktivierte die Markierung \"{tag}\""
-#: rcgcdw.py:466
-msgid "Action has been hidden by Gamepedia staff."
-msgstr "Action has been hidden by Gamepedia staff."
-
#: rcgcdw.py:487
+msgid "Action has been hidden by administration."
+msgstr "Aktion wurde versteckt"
+
+#: rcgcdw.py:508
msgid "Tags"
msgstr "Markierungen"
-#: rcgcdw.py:493
+#: rcgcdw.py:514
msgid "**Added**: "
msgstr "**Hinzugefügt:** "
-#: rcgcdw.py:493
+#: rcgcdw.py:514
msgid " and {} more\n"
msgstr " und {} mehr\n"
-#: rcgcdw.py:494
+#: rcgcdw.py:515
msgid "**Removed**: "
msgstr "**Entfernt:** "
-#: rcgcdw.py:494
+#: rcgcdw.py:515
msgid " and {} more"
msgstr " und {} mehr"
-#: rcgcdw.py:495
+#: rcgcdw.py:516
msgid "Changed categories"
msgstr "Geänderte Kategorien"
-#: rcgcdw.py:667
+#: rcgcdw.py:558
+msgid "~~hidden~~"
+msgstr "~~versteckt~~"
+
+#: rcgcdw.py:567
+msgid "hidden"
+msgstr "versteckt"
+
+#: rcgcdw.py:698
msgid "Unable to process the event"
msgstr "Ereignis kann nicht verabreitet werden"
-#: rcgcdw.py:667
+#: rcgcdw.py:698
msgid "error"
msgstr "Fehler"
-#: rcgcdw.py:766
+#: rcgcdw.py:802
msgid "Daily overview"
msgstr "Tägliche Übersicht"
-#: rcgcdw.py:782
+#: rcgcdw.py:812
msgid " ({} action)"
msgid_plural " ({} actions)"
msgstr[0] " (eine Aktion)"
msgstr[1] " ({} Aktionen)"
-#: rcgcdw.py:783
+#: rcgcdw.py:817
+msgid " ({} edit)"
+msgid_plural " ({} edits)"
+msgstr[0] " (eine Änderung)"
+msgstr[1] " ({} Änderungen)"
+
+#: rcgcdw.py:822
msgid " UTC ({} action)"
msgid_plural " UTC ({} actions)"
msgstr[0] " UTC (eine Aktion)"
msgstr[1] " UTC ({} Aktionen)"
-#: rcgcdw.py:785 rcgcdw.py:786
+#: rcgcdw.py:824 rcgcdw.py:825
msgid "But nobody came"
msgstr "Keine Aktivität"
-#: rcgcdw.py:791
+#: rcgcdw.py:830
msgid "Most active user"
msgid_plural "Most active users"
msgstr[0] "Aktivster Benutzer"
msgstr[1] "Aktivste Benutzer"
-#: rcgcdw.py:792
+#: rcgcdw.py:831
+msgid "Most edited article"
+msgid_plural "Most edited articles"
+msgstr[0] "Meist bearbeiteter Artikel"
+msgstr[1] "Meist bearbeitete Artikel"
+
+#: rcgcdw.py:832
msgid "Edits made"
msgstr "Bearbeitungen"
-#: rcgcdw.py:792
+#: rcgcdw.py:832
msgid "New files"
msgstr "Neue Dateien"
-#: rcgcdw.py:792
+#: rcgcdw.py:832
msgid "Admin actions"
msgstr "Admin-Aktionen"
-#: rcgcdw.py:793
+#: rcgcdw.py:833
msgid "Bytes changed"
msgstr "Bytes geändert"
-#: rcgcdw.py:793
+#: rcgcdw.py:833
msgid "New articles"
msgstr "Neue Artikel"
-#: rcgcdw.py:794
+#: rcgcdw.py:834
msgid "Unique contributors"
msgstr "Einzelne Autoren"
-#: rcgcdw.py:795
+#: rcgcdw.py:835
msgid "Most active hour"
msgid_plural "Most active hours"
msgstr[0] "Aktivste Stunde"
msgstr[1] "Aktivste Stunden"
-#: rcgcdw.py:796
+#: rcgcdw.py:836
msgid "Day score"
msgstr "Tageswert"
-#: rcgcdw.py:944
+#: rcgcdw.py:982
#, python-brace-format
msgid "Connection to {wiki} seems to be stable now."
msgstr "{wiki} scheint wieder erreichbar zu sein."
-#: rcgcdw.py:945 rcgcdw.py:1044
+#: rcgcdw.py:983 rcgcdw.py:1088
msgid "Connection status"
msgstr "Verbindungsstatus"
-#: rcgcdw.py:1043
+#: rcgcdw.py:1087
#, python-brace-format
msgid "{wiki} seems to be down or unreachable."
msgstr "Das {wiki} scheint unerreichbar zu sein."
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "director"
msgstr "Direktor"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "bot"
msgstr "Bot"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "editor"
msgstr "editor"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "directors"
msgstr "Direktor"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "sysop"
msgstr "Administrator"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "bureaucrat"
msgstr "Bürokrat"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "reviewer"
msgstr "reviewer"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1126
msgid "autoreview"
msgstr "autoreview"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1126
msgid "autopatrol"
msgstr "autopatrol"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1126
msgid "wiki_guardian"
msgstr "Wiki Guardian"
diff --git a/locale/en/LC_MESSAGES/rcgcdw.mo b/locale/en/LC_MESSAGES/rcgcdw.mo
index 774fac8..a0726fa 100644
Binary files a/locale/en/LC_MESSAGES/rcgcdw.mo and b/locale/en/LC_MESSAGES/rcgcdw.mo differ
diff --git a/locale/en/LC_MESSAGES/rcgcdw.po b/locale/en/LC_MESSAGES/rcgcdw.po
index 72fc67a..5d4e8d6 100644
--- a/locale/en/LC_MESSAGES/rcgcdw.po
+++ b/locale/en/LC_MESSAGES/rcgcdw.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-11-11 22:55+0100\n"
-"PO-Revision-Date: 2018-11-11 23:04+0100\n"
+"POT-Creation-Date: 2019-01-26 19:51+0100\n"
+"PO-Revision-Date: 2019-01-26 20:00+0100\n"
"Last-Translator: Frisk \n"
"Language-Team: \n"
"Language: en\n"
@@ -15,42 +15,47 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
-"X-Generator: Poedit 2.2\n"
+"X-Generator: Poedit 2.2.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: rcgcdw.py:178
+#: rcgcdw.py:189
msgid "(N!) "
msgstr "(N!) "
-#: rcgcdw.py:179
+#: rcgcdw.py:190
msgid "m "
msgstr "m "
-#: rcgcdw.py:203
-msgid "([preview]({link}) | [undo]({undolink}))"
-msgstr "([preview]({link}) | [undo]({undolink}))"
-
-#: rcgcdw.py:203 rcgcdw.py:235
+#: rcgcdw.py:216 rcgcdw.py:248
msgid "Options"
msgstr "Options"
-#: rcgcdw.py:205
+#: rcgcdw.py:216
+#, python-brace-format
+msgid "([preview]({link}) | [undo]({undolink}))"
+msgstr "([preview]({link}) | [undo]({undolink}))"
+
+#: rcgcdw.py:218
+#, python-brace-format
msgid "Uploaded a new version of {name}"
msgstr "Uploaded a new version of {name}"
-#: rcgcdw.py:207
+#: rcgcdw.py:220
+#, python-brace-format
msgid "Uploaded {name}"
msgstr "Uploaded {name}"
-#: rcgcdw.py:222
+#: rcgcdw.py:235
msgid "**No license!**"
msgstr "**No license!**"
-#: rcgcdw.py:235
+#: rcgcdw.py:248
+#, python-brace-format
msgid "([preview]({link}))"
msgstr "([preview]({link}))"
-#: rcgcdw.py:236
+#: rcgcdw.py:249
+#, python-brace-format
msgid ""
"{desc}\n"
"License: {license}"
@@ -58,400 +63,473 @@ msgstr ""
"{desc}\n"
"License: {license}"
-#: rcgcdw.py:241
+#: rcgcdw.py:254
+#, python-brace-format
msgid "Deleted page {article}"
msgstr "Deleted page {article}"
-#: rcgcdw.py:245
+#: rcgcdw.py:258
+#, python-brace-format
msgid "Deleted redirect {article} by overwriting"
msgstr "Deleted redirect {article} by overwriting"
-#: rcgcdw.py:250
+#: rcgcdw.py:263
msgid "No redirect has been made"
msgstr "No redirect has been made"
-#: rcgcdw.py:251
+#: rcgcdw.py:265
msgid "A redirect has been made"
msgstr "A redirect has been made"
-#: rcgcdw.py:253
-msgid "Moved {article} to {target}"
-msgstr "Moved {article} to {target}"
+#: rcgcdw.py:266
+#, python-brace-format
+msgid "Moved {redirect}{article} to {target}"
+msgstr "Moved {redirect}{article} to {target}"
-#: rcgcdw.py:257
-msgid "Moved {article} to {title} over redirect"
-msgstr "Moved {article} to {title} over redirect"
+#: rcgcdw.py:270
+#, python-brace-format
+msgid "Moved {redirect}{article} to {title} over redirect"
+msgstr "Moved {redirect}{article} to {title} over redirect"
-#: rcgcdw.py:262
-msgid "Moved protection settings from {article} to {title}"
-msgstr "Moved protection settings from {article} to {title}"
+#: rcgcdw.py:275
+#, python-brace-format
+msgid "Moved protection settings from {redirect}{article} to {title}"
+msgstr "Moved protection settings from {redirect}{article} to {title}"
-#: rcgcdw.py:269
+#: rcgcdw.py:282
msgid "infinity and beyond"
msgstr "infinity and beyond"
-#: rcgcdw.py:270
+#: rcgcdw.py:283
+#, python-brace-format
msgid "Blocked {blocked_user} for {time}"
msgstr "Blocked {blocked_user} for {time}"
-#: rcgcdw.py:276
+#: rcgcdw.py:289
+#, python-brace-format
msgid "Changed block settings for {blocked_user}"
msgstr "Changed block settings for {blocked_user}"
-#: rcgcdw.py:282
+#: rcgcdw.py:295
+#, python-brace-format
msgid "Unblocked {blocked_user}"
msgstr "Unblocked {blocked_user}"
-#: rcgcdw.py:287
+#: rcgcdw.py:300
+#, python-brace-format
msgid "Left a comment on {target}'s profile"
msgstr "Left a comment on {target}'s profile"
-#: rcgcdw.py:290
+#: rcgcdw.py:304
msgid "Left a comment on their own profile"
msgstr "Left a comment on their own profile"
-#: rcgcdw.py:296
+#: rcgcdw.py:309
+#, python-brace-format
msgid "Replied to a comment on {target}'s profile"
msgstr "Replied to a comment on {target}'s profile"
-#: rcgcdw.py:299
+#: rcgcdw.py:313
msgid "Replied to a comment on their own profile"
msgstr "Replied to a comment on their own profile"
-#: rcgcdw.py:305
+#: rcgcdw.py:318
+#, python-brace-format
msgid "Edited a comment on {target}'s profile"
msgstr "Edited a comment on {target}'s profile"
-#: rcgcdw.py:308
+#: rcgcdw.py:322
msgid "Edited a comment on their own profile"
msgstr "Edited a comment on their own profile"
-#: rcgcdw.py:316
+#: rcgcdw.py:329
msgid "Location"
msgstr "Location"
-#: rcgcdw.py:318
+#: rcgcdw.py:331
msgid "About me"
msgstr "About me"
-#: rcgcdw.py:320
+#: rcgcdw.py:333
msgid "Google link"
msgstr "Google link"
-#: rcgcdw.py:322
+#: rcgcdw.py:335
msgid "Facebook link"
msgstr "Facebook link"
-#: rcgcdw.py:324
+#: rcgcdw.py:337
msgid "Twitter link"
msgstr "Twitter link"
-#: rcgcdw.py:326
+#: rcgcdw.py:339
msgid "Reddit link"
msgstr "Reddit link"
-#: rcgcdw.py:328
+#: rcgcdw.py:341
msgid "Twitch link"
msgstr "Twitch link"
-#: rcgcdw.py:330
+#: rcgcdw.py:343
msgid "PSN link"
msgstr "PSN link"
-#: rcgcdw.py:332
+#: rcgcdw.py:345
msgid "VK link"
msgstr "VK link"
-#: rcgcdw.py:334
+#: rcgcdw.py:347
msgid "XVL link"
msgstr "XVL link"
-#: rcgcdw.py:336
+#: rcgcdw.py:349
msgid "Steam link"
msgstr "Steam link"
-#: rcgcdw.py:338
+#: rcgcdw.py:351
msgid "Unknown"
msgstr "Unknown"
-#: rcgcdw.py:339
+#: rcgcdw.py:352
+#, python-brace-format
msgid "Edited {target}'s profile"
msgstr "Edited {target}'s profile"
-#: rcgcdw.py:340
+#: rcgcdw.py:353
msgid "Edited their own profile"
msgstr "Edited their own profile"
-#: rcgcdw.py:341
+#: rcgcdw.py:354
+#, python-brace-format
msgid "{field} field changed to: {desc}"
msgstr "{field} field changed to: {desc}"
-#: rcgcdw.py:346
+#: rcgcdw.py:359
+#, python-brace-format
msgid "Deleted a comment on {target}'s profile"
msgstr "Deleted a comment on {target}'s profile"
-#: rcgcdw.py:350
+#: rcgcdw.py:363
+#, python-brace-format
msgid "Changed group membership for {target}"
msgstr "Changed group membership for {target}"
-#: rcgcdw.py:352
+#: rcgcdw.py:365
msgid "System"
msgstr "System"
-#: rcgcdw.py:354
+#: rcgcdw.py:367
+#, python-brace-format
msgid "{target} got autopromoted to a new usergroup"
msgstr "{target} got autopromoted to a new usergroup"
-#: rcgcdw.py:365 rcgcdw.py:367
+#: rcgcdw.py:378 rcgcdw.py:380
msgid "none"
msgstr "none"
-#: rcgcdw.py:368 rcgcdw.py:538
+#: rcgcdw.py:381 rcgcdw.py:562
msgid "No description provided"
msgstr "No description provided"
-#: rcgcdw.py:369
+#: rcgcdw.py:382
+#, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr "Groups changed from {old_groups} to {new_groups}{reason}"
-#: rcgcdw.py:374
+#: rcgcdw.py:387
+#, python-brace-format
msgid "Protected {target}"
msgstr "Protected {target}"
-#: rcgcdw.py:379
+#: rcgcdw.py:389 rcgcdw.py:396
+msgid " [cascading]"
+msgstr " [cascading]"
+
+#: rcgcdw.py:394
+#, python-brace-format
msgid "Changed protection level for {article}"
msgstr "Changed protection level for {article}"
-#: rcgcdw.py:384
+#: rcgcdw.py:401
+#, python-brace-format
msgid "Removed protection from {article}"
msgstr "Removed protection from {article}"
-#: rcgcdw.py:401
+#: rcgcdw.py:406
+#, python-brace-format
+msgid "Changed visibility of revision on page {article} "
+msgid_plural "Changed visibility of {amount} revisions on page {article} "
+msgstr[0] "Changed visibility of revision on page {article} "
+msgstr[1] "Changed visibility of {amount} revisions on page {article} "
+
+#: rcgcdw.py:412
+#, python-brace-format
+msgid "Imported {article} with {count} revision"
+msgid_plural "Imported {article} with {count} revisions"
+msgstr[0] "Imported {article} with {count} revision"
+msgstr[1] "Imported {article} with {count} revisions"
+
+#: rcgcdw.py:418
+#, python-brace-format
msgid "Restored {article}"
msgstr "Restored {article}"
-#: rcgcdw.py:404
+#: rcgcdw.py:421
msgid "Changed visibility of log events"
msgstr "Changed visibility of log events"
-#: rcgcdw.py:407
+#: rcgcdw.py:424
msgid "Imported interwiki"
msgstr "Imported interwiki"
-#: rcgcdw.py:410
+#: rcgcdw.py:427
+#, python-brace-format
msgid "Edited abuse filter number {number}"
msgstr "Edited abuse filter number {number}"
-#: rcgcdw.py:414
+#: rcgcdw.py:430
+#, python-brace-format
+msgid "Created abuse filter number {number}"
+msgstr "Created abuse filter number {number}"
+
+#: rcgcdw.py:434
+#, python-brace-format
msgid "Merged revision histories of {article} into {dest}"
msgstr "Merged revision histories of {article} into {dest}"
-#: rcgcdw.py:418
+#: rcgcdw.py:438
msgid "Added an entry to the interwiki table"
msgstr "Added an entry to the interwiki table"
-#: rcgcdw.py:419 rcgcdw.py:425
+#: rcgcdw.py:439 rcgcdw.py:445
+#, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr "Prefix: {prefix}, website: {website} | {desc}"
-#: rcgcdw.py:424
+#: rcgcdw.py:444
msgid "Edited an entry in interwiki table"
msgstr "Edited an entry in interwiki table"
-#: rcgcdw.py:430
+#: rcgcdw.py:450
msgid "Deleted an entry in interwiki table"
msgstr "Deleted an entry in interwiki table"
-#: rcgcdw.py:431
+#: rcgcdw.py:451
+#, python-brace-format
msgid "Prefix: {prefix} | {desc}"
msgstr "Prefix: {prefix} | {desc}"
-#: rcgcdw.py:435
+#: rcgcdw.py:455
+#, python-brace-format
msgid "Changed the content model of the page {article}"
msgstr "Changed the content model of the page {article}"
-#: rcgcdw.py:436
+#: rcgcdw.py:456
+#, python-brace-format
msgid "Model changed from {old} to {new}: {reason}"
msgstr "Model changed from {old} to {new}: {reason}"
-#: rcgcdw.py:442
+#: rcgcdw.py:462
+#, python-brace-format
msgid "Edited the sprite for {article}"
msgstr "Edited the sprite for {article}"
-#: rcgcdw.py:446
+#: rcgcdw.py:466
+#, python-brace-format
msgid "Created the sprite sheet for {article}"
msgstr "Created the sprite sheet for {article}"
-#: rcgcdw.py:450
+#: rcgcdw.py:470
+#, python-brace-format
msgid "Edited the slice for {article}"
msgstr "Edited the slice for {article}"
-#: rcgcdw.py:453
+#: rcgcdw.py:473
+#, python-brace-format
msgid "Created a tag \"{tag}\""
msgstr "Created a tag \"{tag}\""
-#: rcgcdw.py:457
+#: rcgcdw.py:477
+#, python-brace-format
msgid "Deleted a tag \"{tag}\""
msgstr "Deleted a tag \"{tag}\""
-#: rcgcdw.py:461
+#: rcgcdw.py:481
+#, python-brace-format
msgid "Activated a tag \"{tag}\""
msgstr "Activated a tag \"{tag}\""
-#: rcgcdw.py:464
+#: rcgcdw.py:484
+#, python-brace-format
msgid "Deactivated a tag \"{tag}\""
msgstr "Deactivated a tag \"{tag}\""
-#: rcgcdw.py:467
-msgid "Action has been hidden by Gamepedia staff."
-msgstr "Action has been hidden by Gamepedia staff."
+#: rcgcdw.py:487
+msgid "Action has been hidden by administration."
+msgstr "Action has been hidden by administration."
-#: rcgcdw.py:488
+#: rcgcdw.py:508
msgid "Tags"
msgstr "Tags"
-#: rcgcdw.py:494
+#: rcgcdw.py:514
+msgid "**Added**: "
+msgstr "**Added**: "
+
+#: rcgcdw.py:514
msgid " and {} more\n"
msgstr " and {} more\n"
-#: rcgcdw.py:494
-msgid "**Added**:"
-msgstr "**Added**:"
+#: rcgcdw.py:515
+msgid "**Removed**: "
+msgstr "**Removed**: "
-#: rcgcdw.py:495
+#: rcgcdw.py:515
msgid " and {} more"
msgstr " and {} more"
-#: rcgcdw.py:495
-msgid "**Removed**:"
-msgstr "**Removed**:"
-
-#: rcgcdw.py:496
+#: rcgcdw.py:516
msgid "Changed categories"
msgstr "Changed categories"
-#: rcgcdw.py:668
+#: rcgcdw.py:558
+msgid "~~hidden~~"
+msgstr "~~hidden~~"
+
+#: rcgcdw.py:567
+msgid "hidden"
+msgstr "hidden"
+
+#: rcgcdw.py:698
msgid "Unable to process the event"
msgstr "Unable to process the event"
-#: rcgcdw.py:668
+#: rcgcdw.py:698
msgid "error"
msgstr "error"
-#: rcgcdw.py:767
+#: rcgcdw.py:802
msgid "Daily overview"
msgstr "Daily overview"
-#: rcgcdw.py:786 rcgcdw.py:787
+#: rcgcdw.py:812
+msgid " ({} action)"
+msgid_plural " ({} actions)"
+msgstr[0] " ({} action)"
+msgstr[1] " ({} actions)"
+
+#: rcgcdw.py:817
+msgid " ({} edit)"
+msgid_plural " ({} edits)"
+msgstr[0] " ({} edit)"
+msgstr[1] " ({} edits)"
+
+#: rcgcdw.py:822
+msgid " UTC ({} action)"
+msgid_plural " UTC ({} actions)"
+msgstr[0] " UTC ({} action)"
+msgstr[1] " UTC ({} actions)"
+
+#: rcgcdw.py:824 rcgcdw.py:825
msgid "But nobody came"
msgstr "But nobody came"
-#: rcgcdw.py:793
-msgid "Admin actions"
-msgstr "Admin actions"
+#: rcgcdw.py:830
+msgid "Most active user"
+msgid_plural "Most active users"
+msgstr[0] "Most active user"
+msgstr[1] "Most active users"
-#: rcgcdw.py:793
+#: rcgcdw.py:831
+msgid "Most edited article"
+msgid_plural "Most edited articles"
+msgstr[0] "Most edited article"
+msgstr[1] "Most edited articles"
+
+#: rcgcdw.py:832
msgid "Edits made"
msgstr "Edits made"
-#: rcgcdw.py:793
+#: rcgcdw.py:832
msgid "New files"
msgstr "New files"
-#: rcgcdw.py:794
+#: rcgcdw.py:832
+msgid "Admin actions"
+msgstr "Admin actions"
+
+#: rcgcdw.py:833
msgid "Bytes changed"
msgstr "Bytes changed"
-#: rcgcdw.py:794
+#: rcgcdw.py:833
msgid "New articles"
msgstr "New articles"
-#: rcgcdw.py:795
+#: rcgcdw.py:834
msgid "Unique contributors"
msgstr "Unique contributors"
-#: rcgcdw.py:797
+#: rcgcdw.py:835
+msgid "Most active hour"
+msgid_plural "Most active hours"
+msgstr[0] "Most active hour"
+msgstr[1] "Most active hours"
+
+#: rcgcdw.py:836
msgid "Day score"
msgstr "Day score"
-#: rcgcdw.py:945
+#: rcgcdw.py:982
+#, python-brace-format
msgid "Connection to {wiki} seems to be stable now."
msgstr "Connection to {wiki} seems to be stable now."
-#: rcgcdw.py:946 rcgcdw.py:1045
+#: rcgcdw.py:983 rcgcdw.py:1088
msgid "Connection status"
msgstr "Connection status"
-#: rcgcdw.py:1044
+#: rcgcdw.py:1087
+#, python-brace-format
msgid "{wiki} seems to be down or unreachable."
msgstr "{wiki} seems to be down or unreachable."
-#: rcgcdw.py:1075
-msgid "bot"
-msgstr "Bot"
-
-#: rcgcdw.py:1075
-msgid "bureaucrat"
-msgstr "Bureaucrat"
-
-#: rcgcdw.py:1075
+#: rcgcdw.py:1125
msgid "director"
msgstr "Director"
-#: rcgcdw.py:1075
-msgid "directors"
-msgstr "Directors"
+#: rcgcdw.py:1125
+msgid "bot"
+msgstr "Bot"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1125
msgid "editor"
msgstr "Editor"
-#: rcgcdw.py:1075
-msgid "reviewer"
-msgstr "Reviewer"
+#: rcgcdw.py:1125
+msgid "directors"
+msgstr "Directors"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1125
msgid "sysop"
msgstr "Administrator"
-#: rcgcdw.py:1076
-msgid "autopatrol"
-msgstr "Autopatrol"
+#: rcgcdw.py:1125
+msgid "bureaucrat"
+msgstr "Bureaucrat"
-#: rcgcdw.py:1076
+#: rcgcdw.py:1125
+msgid "reviewer"
+msgstr "Reviewer"
+
+#: rcgcdw.py:1126
msgid "autoreview"
msgstr "Autoreview"
-#: rcgcdw.py:1076
+#: rcgcdw.py:1126
+msgid "autopatrol"
+msgstr "Autopatrol"
+
+#: rcgcdw.py:1126
msgid "wiki_guardian"
msgstr "Wiki guardian"
-
-#~ msgid "Changed visibility of revision on page {article} "
-#~ msgid_plural "Changed visibility of {amount} revisions on page {article} "
-#~ msgstr[0] "Changed visibility of revision on page {article} "
-#~ msgstr[1] "Changed visibility of {amount} revisions on page {article} "
-
-#~ msgid "Imported {article} with {count} revision"
-#~ msgid_plural "Imported {article} with {count} revisions"
-#~ msgstr[0] "Imported {article} with {count} revision"
-#~ msgstr[1] "Imported {article} with {count} revisions"
-
-#~ msgid " ({} action)"
-#~ msgid_plural " ({} actions)"
-#~ msgstr[0] " ({} action)"
-#~ msgstr[1] " ({} actions)"
-
-#~ msgid " UTC ({} action)"
-#~ msgid_plural " UTC ({} actions)"
-#~ msgstr[0] " UTC ({} action)"
-#~ msgstr[1] " UTC ({} actions)"
-
-#~ msgid "Most active user"
-#~ msgid_plural "Most active users"
-#~ msgstr[0] "Most active user"
-#~ msgstr[1] "Most active users"
-
-#~ msgid "Most active hour"
-#~ msgid_plural "Most active hours"
-#~ msgstr[0] "Most active hour"
-#~ msgstr[1] "Most active hours"
diff --git a/locale/fr/LC_MESSAGES/rcgcdw.mo b/locale/fr/LC_MESSAGES/rcgcdw.mo
index 8bd4754..b38b108 100644
Binary files a/locale/fr/LC_MESSAGES/rcgcdw.mo and b/locale/fr/LC_MESSAGES/rcgcdw.mo differ
diff --git a/locale/fr/LC_MESSAGES/rcgcdw.po b/locale/fr/LC_MESSAGES/rcgcdw.po
index 31d4f7b..797a3e1 100644
--- a/locale/fr/LC_MESSAGES/rcgcdw.po
+++ b/locale/fr/LC_MESSAGES/rcgcdw.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-11-13 14:36+0100\n"
-"PO-Revision-Date: 2018-11-13 14:45+0100\n"
+"POT-Creation-Date: 2019-01-26 19:51+0100\n"
+"PO-Revision-Date: 2019-01-26 19:51+0100\n"
"Last-Translator: Frisk \n"
"Language-Team: \n"
"Language: fr\n"
@@ -15,48 +15,48 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
-"X-Generator: Poedit 2.2\n"
+"X-Generator: Poedit 2.2.1\n"
"X-Poedit-Basepath: ../../..\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Poedit-SearchPath-0: rcgcdw.pot\n"
-#: rcgcdw.py:176
+#: rcgcdw.py:189
msgid "(N!) "
msgstr "(N!) "
-#: rcgcdw.py:177
+#: rcgcdw.py:190
msgid "m "
msgstr "m "
-#: rcgcdw.py:202 rcgcdw.py:234
+#: rcgcdw.py:216 rcgcdw.py:248
msgid "Options"
msgstr "Options"
-#: rcgcdw.py:202
+#: rcgcdw.py:216
#, python-brace-format
msgid "([preview]({link}) | [undo]({undolink}))"
msgstr "([Aperçu]({link}) | [Annuler]({undolink}))"
-#: rcgcdw.py:204
+#: rcgcdw.py:218
#, python-brace-format
msgid "Uploaded a new version of {name}"
msgstr "Téléversement d'une nouvelle version de {name}"
-#: rcgcdw.py:206
+#: rcgcdw.py:220
#, python-brace-format
msgid "Uploaded {name}"
msgstr "Téléversement de {name}"
-#: rcgcdw.py:221
+#: rcgcdw.py:235
msgid "**No license!**"
msgstr "**Aucune license!**"
-#: rcgcdw.py:234
+#: rcgcdw.py:248
#, python-brace-format
msgid "([preview]({link}))"
msgstr "([Aperçu]({link}))"
-#: rcgcdw.py:235
+#: rcgcdw.py:249
#, python-brace-format
msgid ""
"{desc}\n"
@@ -65,196 +65,200 @@ msgstr ""
"{desc}\n"
"License: {license}"
-#: rcgcdw.py:240
+#: rcgcdw.py:254
#, python-brace-format
msgid "Deleted page {article}"
msgstr "Suppression de la page {article}"
-#: rcgcdw.py:244
+#: rcgcdw.py:258
#, python-brace-format
msgid "Deleted redirect {article} by overwriting"
msgstr "Suppression par écrasement de la redirection {article}"
-#: rcgcdw.py:249
+#: rcgcdw.py:263
msgid "No redirect has been made"
msgstr "Aucune redirection créée"
-#: rcgcdw.py:251
+#: rcgcdw.py:265
msgid "A redirect has been made"
msgstr "Une redirection a été créée"
-#: rcgcdw.py:252
+#: rcgcdw.py:266
#, python-brace-format
msgid "Moved {redirect}{article} to {target}"
msgstr "Déplacement de {redirect}{article} vers {target}"
-#: rcgcdw.py:256
+#: rcgcdw.py:270
#, python-brace-format
msgid "Moved {redirect}{article} to {title} over redirect"
msgstr "Déplacement de {redirect}{article} vers {title} par redirection"
-#: rcgcdw.py:261
+#: rcgcdw.py:275
#, python-brace-format
msgid "Moved protection settings from {redirect}{article} to {title}"
msgstr ""
"Transfert des paramètres de protection de {redirect}{article} vers {title}"
-#: rcgcdw.py:268
+#: rcgcdw.py:282
msgid "infinity and beyond"
msgstr "toujours"
-#: rcgcdw.py:269
+#: rcgcdw.py:283
#, python-brace-format
msgid "Blocked {blocked_user} for {time}"
msgstr "{blocked_user} a été bloqué pour {time}"
-#: rcgcdw.py:275
+#: rcgcdw.py:289
#, python-brace-format
msgid "Changed block settings for {blocked_user}"
msgstr "Modification des paramètres de blocage pour {blocked_user}"
-#: rcgcdw.py:281
+#: rcgcdw.py:295
#, python-brace-format
msgid "Unblocked {blocked_user}"
msgstr "{blocked_user} a été débloqué"
-#: rcgcdw.py:286
+#: rcgcdw.py:300
#, python-brace-format
msgid "Left a comment on {target}'s profile"
msgstr "Ajout d'un commentaire sur le profil de {target}"
-#: rcgcdw.py:290
+#: rcgcdw.py:304
msgid "Left a comment on their own profile"
msgstr "Ajout d'un commentaire sur son propre profil"
-#: rcgcdw.py:295
+#: rcgcdw.py:309
#, python-brace-format
msgid "Replied to a comment on {target}'s profile"
msgstr "Réponse à un commentaire sur le profil de {target}"
-#: rcgcdw.py:299
+#: rcgcdw.py:313
msgid "Replied to a comment on their own profile"
msgstr "Réponse à un commentaire sur son propre profil"
-#: rcgcdw.py:304
+#: rcgcdw.py:318
#, python-brace-format
msgid "Edited a comment on {target}'s profile"
msgstr "Édition d'un commentaire sur le profil de {target}"
-#: rcgcdw.py:308
+#: rcgcdw.py:322
msgid "Edited a comment on their own profile"
msgstr "Modification d'un commentaire sur son propre profil"
-#: rcgcdw.py:315
+#: rcgcdw.py:329
msgid "Location"
msgstr "Emplacement"
-#: rcgcdw.py:317
+#: rcgcdw.py:331
msgid "About me"
msgstr "À propos de moi"
-#: rcgcdw.py:319
+#: rcgcdw.py:333
msgid "Google link"
msgstr "Lien Google"
-#: rcgcdw.py:321
+#: rcgcdw.py:335
msgid "Facebook link"
msgstr "Lien Facebook"
-#: rcgcdw.py:323
+#: rcgcdw.py:337
msgid "Twitter link"
msgstr "Lien Twitter"
-#: rcgcdw.py:325
+#: rcgcdw.py:339
msgid "Reddit link"
msgstr "Lien Reddit"
-#: rcgcdw.py:327
+#: rcgcdw.py:341
msgid "Twitch link"
msgstr "Lien Twitch"
-#: rcgcdw.py:329
+#: rcgcdw.py:343
msgid "PSN link"
msgstr "Lien PSN"
-#: rcgcdw.py:331
+#: rcgcdw.py:345
msgid "VK link"
msgstr "Lien VK"
-#: rcgcdw.py:333
+#: rcgcdw.py:347
msgid "XVL link"
msgstr "Lien XVL"
-#: rcgcdw.py:335
+#: rcgcdw.py:349
msgid "Steam link"
msgstr "Lien Steam"
-#: rcgcdw.py:337
+#: rcgcdw.py:351
msgid "Unknown"
msgstr "Inconnu"
-#: rcgcdw.py:338
+#: rcgcdw.py:352
#, python-brace-format
msgid "Edited {target}'s profile"
msgstr "Modification du profil de {target}"
-#: rcgcdw.py:339
+#: rcgcdw.py:353
msgid "Edited their own profile"
msgstr "Modification de son propre profil"
-#: rcgcdw.py:340
+#: rcgcdw.py:354
#, python-brace-format
msgid "{field} field changed to: {desc}"
msgstr "{field} modifié pour: {desc}"
-#: rcgcdw.py:345
+#: rcgcdw.py:359
#, python-brace-format
msgid "Deleted a comment on {target}'s profile"
msgstr "Retrait d'un commentaire sur le profil de {target}"
-#: rcgcdw.py:349
+#: rcgcdw.py:363
#, python-brace-format
msgid "Changed group membership for {target}"
msgstr "Modification des groupes pour {target}"
-#: rcgcdw.py:351
+#: rcgcdw.py:365
msgid "System"
msgstr "Système"
-#: rcgcdw.py:353
+#: rcgcdw.py:367
#, python-brace-format
msgid "{target} got autopromoted to a new usergroup"
msgstr "{target} a été auto-promu dans un nouveau groupe"
-#: rcgcdw.py:364 rcgcdw.py:366
+#: rcgcdw.py:378 rcgcdw.py:380
msgid "none"
msgstr "aucun"
-#: rcgcdw.py:367 rcgcdw.py:537
+#: rcgcdw.py:381 rcgcdw.py:562
msgid "No description provided"
msgstr "Aucune description"
-#: rcgcdw.py:368
+#: rcgcdw.py:382
#, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr "Groupe modifié de {old_groups} vers {new_groups}{reason}"
-#: rcgcdw.py:373
+#: rcgcdw.py:387
#, python-brace-format
msgid "Protected {target}"
msgstr "Protection de {target}"
-#: rcgcdw.py:378
+#: rcgcdw.py:389 rcgcdw.py:396
+msgid " [cascading]"
+msgstr " [protection en cascade]"
+
+#: rcgcdw.py:394
#, python-brace-format
msgid "Changed protection level for {article}"
msgstr "Modification du niveau de protection de {article}"
-#: rcgcdw.py:383
+#: rcgcdw.py:401
#, python-brace-format
msgid "Removed protection from {article}"
msgstr "Retrait de la protection de {article}"
-#: rcgcdw.py:388
+#: rcgcdw.py:406
#, python-brace-format
msgid "Changed visibility of revision on page {article} "
msgid_plural "Changed visibility of {amount} revisions on page {article} "
@@ -262,250 +266,278 @@ msgstr[0] "Modification de la visibilité d'une révision de la page {article} "
msgstr[1] ""
"Modification de la visibilité de {amount} révisions sur la page {article} "
-#: rcgcdw.py:394
+#: rcgcdw.py:412
#, python-brace-format
msgid "Imported {article} with {count} revision"
msgid_plural "Imported {article} with {count} revisions"
msgstr[0] "Article {article} importé avec {count} révision"
msgstr[1] "Article {article} importé avec {count} révisions"
-#: rcgcdw.py:400
+#: rcgcdw.py:418
#, python-brace-format
msgid "Restored {article}"
msgstr "Restauration de {article}"
-#: rcgcdw.py:403
+#: rcgcdw.py:421
msgid "Changed visibility of log events"
msgstr "Modification de la visibilité d'évènements des journaux"
-#: rcgcdw.py:406
+#: rcgcdw.py:424
msgid "Imported interwiki"
msgstr "Importation d'interwiki"
-#: rcgcdw.py:409
+#: rcgcdw.py:427
#, python-brace-format
msgid "Edited abuse filter number {number}"
msgstr "Édition de la règle {number} du filtre anti-abus"
-#: rcgcdw.py:413
+#: rcgcdw.py:430
+#, fuzzy, python-brace-format
+#| msgid "Edited abuse filter number {number}"
+msgid "Created abuse filter number {number}"
+msgstr "Édition de la règle {number} du filtre anti-abus"
+
+#: rcgcdw.py:434
#, python-brace-format
msgid "Merged revision histories of {article} into {dest}"
msgstr "Fusion de l'historique de {article} vers {dest}"
-#: rcgcdw.py:417
+#: rcgcdw.py:438
msgid "Added an entry to the interwiki table"
msgstr "Ajout d'une entrée à la table interwiki"
-#: rcgcdw.py:418 rcgcdw.py:424
+#: rcgcdw.py:439 rcgcdw.py:445
#, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr "Préfixe: {prefix}, site: {website} | {desc}"
-#: rcgcdw.py:423
+#: rcgcdw.py:444
msgid "Edited an entry in interwiki table"
msgstr "Modification d'une entrée de la table interwiki"
-#: rcgcdw.py:429
+#: rcgcdw.py:450
msgid "Deleted an entry in interwiki table"
msgstr "Retrait d'une entrée de la table interwiki"
-#: rcgcdw.py:430
+#: rcgcdw.py:451
#, python-brace-format
msgid "Prefix: {prefix} | {desc}"
msgstr "Préfixe: {prefix} | {desc}"
-#: rcgcdw.py:434
+#: rcgcdw.py:455
#, python-brace-format
msgid "Changed the content model of the page {article}"
msgstr "Modification du modèle de contenu de l'article {article}"
-#: rcgcdw.py:435
+#: rcgcdw.py:456
#, python-brace-format
msgid "Model changed from {old} to {new}: {reason}"
msgstr "Modèle changé de {old} à {new}: {reason}"
-#: rcgcdw.py:441
+#: rcgcdw.py:462
#, python-brace-format
msgid "Edited the sprite for {article}"
msgstr "Édition du sprite de {article}"
-#: rcgcdw.py:445
+#: rcgcdw.py:466
#, python-brace-format
msgid "Created the sprite sheet for {article}"
msgstr "Création d'une feuille de sprite pour {article}"
-#: rcgcdw.py:449
+#: rcgcdw.py:470
#, python-brace-format
msgid "Edited the slice for {article}"
msgstr "Edited the slice for {article}"
-#: rcgcdw.py:452
+#: rcgcdw.py:473
#, python-brace-format
msgid "Created a tag \"{tag}\""
msgstr "Création du tag « {tag} »"
-#: rcgcdw.py:456
+#: rcgcdw.py:477
#, python-brace-format
msgid "Deleted a tag \"{tag}\""
msgstr "Suppression du tag « {tag} »"
-#: rcgcdw.py:460
+#: rcgcdw.py:481
#, python-brace-format
msgid "Activated a tag \"{tag}\""
msgstr "Activation du tag « {tag} »"
-#: rcgcdw.py:463
+#: rcgcdw.py:484
#, python-brace-format
msgid "Deactivated a tag \"{tag}\""
msgstr "Désactivation du tag « {tag} »"
-#: rcgcdw.py:466
-msgid "Action has been hidden by Gamepedia staff."
+#: rcgcdw.py:487
+#, fuzzy
+#| msgid "Action has been hidden by Gamepedia staff."
+msgid "Action has been hidden by administration."
msgstr "L'action a été masquée par le personnel de Gamepedia."
-#: rcgcdw.py:487
+#: rcgcdw.py:508
msgid "Tags"
msgstr "Tags"
-#: rcgcdw.py:493
+#: rcgcdw.py:514
msgid "**Added**: "
msgstr "**Ajoutées : ** "
-#: rcgcdw.py:493
+#: rcgcdw.py:514
msgid " and {} more\n"
msgstr " et {} autres\n"
-#: rcgcdw.py:494
+#: rcgcdw.py:515
msgid "**Removed**: "
msgstr "**Retirées : ** "
-#: rcgcdw.py:494
+#: rcgcdw.py:515
msgid " and {} more"
msgstr " et {} autres"
-#: rcgcdw.py:495
+#: rcgcdw.py:516
msgid "Changed categories"
msgstr "Catégories modifiées"
-#: rcgcdw.py:667
+#: rcgcdw.py:558
+msgid "~~hidden~~"
+msgstr ""
+
+#: rcgcdw.py:567
+msgid "hidden"
+msgstr ""
+
+#: rcgcdw.py:698
msgid "Unable to process the event"
msgstr "Impossible d'analyser l'évènement"
-#: rcgcdw.py:667
+#: rcgcdw.py:698
msgid "error"
msgstr "erreur"
-#: rcgcdw.py:766
+#: rcgcdw.py:802
msgid "Daily overview"
msgstr "Résumé de la journée"
-#: rcgcdw.py:782
+#: rcgcdw.py:812
msgid " ({} action)"
msgid_plural " ({} actions)"
msgstr[0] " ({} action)"
msgstr[1] " ({} actions)"
-#: rcgcdw.py:783
+#: rcgcdw.py:817
+msgid " ({} edit)"
+msgid_plural " ({} edits)"
+msgstr[0] " ({} modification)"
+msgstr[1] " ({} modifications)"
+
+#: rcgcdw.py:822
msgid " UTC ({} action)"
msgid_plural " UTC ({} actions)"
msgstr[0] " UTC ({} action)"
msgstr[1] " UTC ({} actions)"
-#: rcgcdw.py:785 rcgcdw.py:786
+#: rcgcdw.py:824 rcgcdw.py:825
msgid "But nobody came"
msgstr "Aucune activité"
-#: rcgcdw.py:791
+#: rcgcdw.py:830
msgid "Most active user"
msgid_plural "Most active users"
msgstr[0] "Membre le plus actif"
msgstr[1] "Membres les plus actifs"
-#: rcgcdw.py:792
+#: rcgcdw.py:831
+msgid "Most edited article"
+msgid_plural "Most edited articles"
+msgstr[0] "Article le plus modifié"
+msgstr[1] "Articles les plus modifiés"
+
+#: rcgcdw.py:832
msgid "Edits made"
msgstr "Modifications effectuées"
-#: rcgcdw.py:792
+#: rcgcdw.py:832
msgid "New files"
msgstr "Nouveaux fichiers"
-#: rcgcdw.py:792
+#: rcgcdw.py:832
msgid "Admin actions"
msgstr "Actions d'administrateur"
-#: rcgcdw.py:793
+#: rcgcdw.py:833
msgid "Bytes changed"
msgstr "Octets modifiés"
-#: rcgcdw.py:793
+#: rcgcdw.py:833
msgid "New articles"
msgstr "Nouveaux articles"
-#: rcgcdw.py:794
+#: rcgcdw.py:834
msgid "Unique contributors"
msgstr "Contributeurs uniques"
-#: rcgcdw.py:795
+#: rcgcdw.py:835
msgid "Most active hour"
msgid_plural "Most active hours"
msgstr[0] "Heure la plus active"
msgstr[1] "Heures les plus actives"
-#: rcgcdw.py:796
+#: rcgcdw.py:836
msgid "Day score"
msgstr "Score du jour"
-#: rcgcdw.py:944
+#: rcgcdw.py:982
#, python-brace-format
msgid "Connection to {wiki} seems to be stable now."
msgstr "La connexion avec {wiki} semble stable maintenant."
-#: rcgcdw.py:945 rcgcdw.py:1044
+#: rcgcdw.py:983 rcgcdw.py:1088
msgid "Connection status"
msgstr "Statut de connexion"
-#: rcgcdw.py:1043
+#: rcgcdw.py:1087
#, python-brace-format
msgid "{wiki} seems to be down or unreachable."
msgstr "{wiki} semble être down ou inatteignable."
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "director"
msgstr "Directeur"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "bot"
msgstr "Robot"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "editor"
msgstr "editor"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "directors"
msgstr "Directeur"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "sysop"
msgstr "Administrateur"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "bureaucrat"
msgstr "Bureaucrate"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "reviewer"
msgstr "reviewer"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1126
msgid "autoreview"
msgstr "autoreview"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1126
msgid "autopatrol"
msgstr "autopatrol"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1126
msgid "wiki_guardian"
msgstr "Gardien du wiki"
diff --git a/locale/pl/LC_MESSAGES/rcgcdw.mo b/locale/pl/LC_MESSAGES/rcgcdw.mo
index cd8fa99..1d9b9fd 100644
Binary files a/locale/pl/LC_MESSAGES/rcgcdw.mo and b/locale/pl/LC_MESSAGES/rcgcdw.mo differ
diff --git a/locale/pl/LC_MESSAGES/rcgcdw.po b/locale/pl/LC_MESSAGES/rcgcdw.po
index 8724fec..2a62ae4 100644
--- a/locale/pl/LC_MESSAGES/rcgcdw.po
+++ b/locale/pl/LC_MESSAGES/rcgcdw.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: RcGcDw\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-11-13 14:36+0100\n"
-"PO-Revision-Date: 2018-11-13 14:42+0100\n"
+"POT-Creation-Date: 2019-01-26 19:51+0100\n"
+"PO-Revision-Date: 2019-01-26 19:56+0100\n"
"Last-Translator: Frisk \n"
"Language-Team: \n"
"Language: pl\n"
@@ -15,47 +15,47 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
-"X-Generator: Poedit 2.2\n"
+"X-Generator: Poedit 2.2.1\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
-#: rcgcdw.py:176
+#: rcgcdw.py:189
msgid "(N!) "
msgstr "(N!) "
-#: rcgcdw.py:177
+#: rcgcdw.py:190
msgid "m "
msgstr "d "
-#: rcgcdw.py:202 rcgcdw.py:234
+#: rcgcdw.py:216 rcgcdw.py:248
msgid "Options"
msgstr "Opcje"
-#: rcgcdw.py:202
+#: rcgcdw.py:216
#, python-brace-format
msgid "([preview]({link}) | [undo]({undolink}))"
msgstr "([podgląd]({link}) | [wycofaj]({undolink}))"
-#: rcgcdw.py:204
+#: rcgcdw.py:218
#, python-brace-format
msgid "Uploaded a new version of {name}"
msgstr "Przesłał(a) nową wersję {name}"
-#: rcgcdw.py:206
+#: rcgcdw.py:220
#, python-brace-format
msgid "Uploaded {name}"
msgstr "Przesłał(a) {name}"
-#: rcgcdw.py:221
+#: rcgcdw.py:235
msgid "**No license!**"
msgstr "**Brak licencji!**"
-#: rcgcdw.py:234
+#: rcgcdw.py:248
#, python-brace-format
msgid "([preview]({link}))"
msgstr "([podgląd]({link}))"
-#: rcgcdw.py:235
+#: rcgcdw.py:249
#, python-brace-format
msgid ""
"{desc}\n"
@@ -64,198 +64,202 @@ msgstr ""
"{desc}\n"
"Licencja: {license}"
-#: rcgcdw.py:240
+#: rcgcdw.py:254
#, python-brace-format
msgid "Deleted page {article}"
msgstr "Usunął/usunęła {article}"
-#: rcgcdw.py:244
+#: rcgcdw.py:258
#, python-brace-format
msgid "Deleted redirect {article} by overwriting"
msgstr ""
"Usunął/usunęła przekierowanie ({article}) aby utworzyć miejsce dla "
"przenoszonej strony"
-#: rcgcdw.py:249
+#: rcgcdw.py:263
msgid "No redirect has been made"
msgstr "Nie utworzono przekierowania"
-#: rcgcdw.py:251
+#: rcgcdw.py:265
msgid "A redirect has been made"
msgstr "Zostało utworzone przekierowanie"
-#: rcgcdw.py:252
+#: rcgcdw.py:266
#, python-brace-format
msgid "Moved {redirect}{article} to {target}"
msgstr "Przeniósł/przeniosła {redirect}{article} do {target}"
-#: rcgcdw.py:256
+#: rcgcdw.py:270
#, python-brace-format
msgid "Moved {redirect}{article} to {title} over redirect"
msgstr ""
"Przeniósł/przeniosła {redirect}{article} do strony przekierowującej {title}"
-#: rcgcdw.py:261
+#: rcgcdw.py:275
#, python-brace-format
msgid "Moved protection settings from {redirect}{article} to {title}"
msgstr "Przeniesiono ustawienia zabezpieczeń z {redirect}{article} do {title}"
-#: rcgcdw.py:268
+#: rcgcdw.py:282
msgid "infinity and beyond"
msgstr "wieczność"
-#: rcgcdw.py:269
+#: rcgcdw.py:283
#, python-brace-format
msgid "Blocked {blocked_user} for {time}"
msgstr "Zablokowano {blocked_user} na {time}"
-#: rcgcdw.py:275
+#: rcgcdw.py:289
#, python-brace-format
msgid "Changed block settings for {blocked_user}"
msgstr "Zmienił ustawienia blokady {blocked_user}"
-#: rcgcdw.py:281
+#: rcgcdw.py:295
#, python-brace-format
msgid "Unblocked {blocked_user}"
msgstr "Odblokował {blocked_user}"
-#: rcgcdw.py:286
+#: rcgcdw.py:300
#, python-brace-format
msgid "Left a comment on {target}'s profile"
msgstr "Pozostawiono komentarz na profilu użytkownika {target}"
-#: rcgcdw.py:290
+#: rcgcdw.py:304
msgid "Left a comment on their own profile"
msgstr "Pozostawił(a) komentarz na swoim profilu"
-#: rcgcdw.py:295
+#: rcgcdw.py:309
#, python-brace-format
msgid "Replied to a comment on {target}'s profile"
msgstr "Odpowiedziano na komentarz na profilu użytkownika {target}"
-#: rcgcdw.py:299
+#: rcgcdw.py:313
msgid "Replied to a comment on their own profile"
msgstr "Odpowiedział(a) na komentarz na swoim profilu"
-#: rcgcdw.py:304
+#: rcgcdw.py:318
#, python-brace-format
msgid "Edited a comment on {target}'s profile"
msgstr "Edytowano komentarz na profilu użytkownika {target}"
-#: rcgcdw.py:308
+#: rcgcdw.py:322
msgid "Edited a comment on their own profile"
msgstr "Edytował(a) komentarz na swoim profilu"
-#: rcgcdw.py:315
+#: rcgcdw.py:329
msgid "Location"
msgstr "Lokacja"
-#: rcgcdw.py:317
+#: rcgcdw.py:331
msgid "About me"
msgstr "O mnie"
-#: rcgcdw.py:319
+#: rcgcdw.py:333
msgid "Google link"
msgstr "link Google"
-#: rcgcdw.py:321
+#: rcgcdw.py:335
msgid "Facebook link"
msgstr "link Facebook"
-#: rcgcdw.py:323
+#: rcgcdw.py:337
msgid "Twitter link"
msgstr "link Twitter"
-#: rcgcdw.py:325
+#: rcgcdw.py:339
msgid "Reddit link"
msgstr "link Reddit"
-#: rcgcdw.py:327
+#: rcgcdw.py:341
msgid "Twitch link"
msgstr "link Twitch"
-#: rcgcdw.py:329
+#: rcgcdw.py:343
msgid "PSN link"
msgstr "link PSN"
-#: rcgcdw.py:331
+#: rcgcdw.py:345
msgid "VK link"
msgstr "link VK"
-#: rcgcdw.py:333
+#: rcgcdw.py:347
msgid "XVL link"
msgstr "link XVL"
-#: rcgcdw.py:335
+#: rcgcdw.py:349
msgid "Steam link"
msgstr "link Steam"
-#: rcgcdw.py:337
+#: rcgcdw.py:351
msgid "Unknown"
msgstr "Nieznana"
-#: rcgcdw.py:338
+#: rcgcdw.py:352
#, python-brace-format
msgid "Edited {target}'s profile"
msgstr "Edytowano profil użytkownika {target}"
-#: rcgcdw.py:339
+#: rcgcdw.py:353
msgid "Edited their own profile"
msgstr "Edytował(a) swój profil"
-#: rcgcdw.py:340
+#: rcgcdw.py:354
#, python-brace-format
msgid "{field} field changed to: {desc}"
msgstr "pole \"{field}\" zostało zmienione na: {desc}"
-#: rcgcdw.py:345
+#: rcgcdw.py:359
#, python-brace-format
msgid "Deleted a comment on {target}'s profile"
msgstr "Usunął komentarz na profilu użytkownika {target}"
-#: rcgcdw.py:349
+#: rcgcdw.py:363
#, python-brace-format
msgid "Changed group membership for {target}"
msgstr "Zmieniono przynależność do grup dla {target}"
-#: rcgcdw.py:351
+#: rcgcdw.py:365
msgid "System"
msgstr "System"
-#: rcgcdw.py:353
+#: rcgcdw.py:367
#, python-brace-format
msgid "{target} got autopromoted to a new usergroup"
msgstr "{target} automatycznie otrzymał nową grupę użytkownika"
-#: rcgcdw.py:364 rcgcdw.py:366
+#: rcgcdw.py:378 rcgcdw.py:380
msgid "none"
msgstr "brak"
-#: rcgcdw.py:367 rcgcdw.py:537
+#: rcgcdw.py:381 rcgcdw.py:562
msgid "No description provided"
msgstr "Nie podano opisu zmian"
-#: rcgcdw.py:368
+#: rcgcdw.py:382
#, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr "Grupy zmienione z {old_groups} do {new_groups}{reason}"
-#: rcgcdw.py:373
+#: rcgcdw.py:387
#, python-brace-format
msgid "Protected {target}"
msgstr "Zabezpieczono {target}"
-#: rcgcdw.py:378
+#: rcgcdw.py:389 rcgcdw.py:396
+msgid " [cascading]"
+msgstr " [kaskadowo]"
+
+#: rcgcdw.py:394
#, python-brace-format
msgid "Changed protection level for {article}"
msgstr "Zmieniono poziom zabezpieczeń {article}"
-#: rcgcdw.py:383
+#: rcgcdw.py:401
#, python-brace-format
msgid "Removed protection from {article}"
msgstr "Usunięto zabezpieczenie {article}"
-#: rcgcdw.py:388
+#: rcgcdw.py:406
#, python-brace-format
msgid "Changed visibility of revision on page {article} "
msgid_plural "Changed visibility of {amount} revisions on page {article} "
@@ -263,7 +267,7 @@ msgstr[0] "Zmieniono widoczność wersji na stronie {article}"
msgstr[1] "Zmieniono widoczność {amount} wersji na stronie {article}"
msgstr[2] "Zmieniono widoczność {amount} wersji na stronie {article}"
-#: rcgcdw.py:394
+#: rcgcdw.py:412
#, python-brace-format
msgid "Imported {article} with {count} revision"
msgid_plural "Imported {article} with {count} revisions"
@@ -271,247 +275,274 @@ msgstr[0] "Zaimportowano {article} z {count} wersją"
msgstr[1] "Zaimportowano {article} z {count} wersjami"
msgstr[2] "Zaimportowano {article} z {count} wersjami"
-#: rcgcdw.py:400
+#: rcgcdw.py:418
#, python-brace-format
msgid "Restored {article}"
msgstr "Przywrócono {article}"
-#: rcgcdw.py:403
+#: rcgcdw.py:421
msgid "Changed visibility of log events"
msgstr "Zmieniono widoczność logów"
-#: rcgcdw.py:406
+#: rcgcdw.py:424
msgid "Imported interwiki"
msgstr "Zaimportowano interwiki"
-#: rcgcdw.py:409
+#: rcgcdw.py:427
#, python-brace-format
msgid "Edited abuse filter number {number}"
msgstr "Edytowano filtr nadużyć numer {number}"
-#: rcgcdw.py:413
+#: rcgcdw.py:430
+#, python-brace-format
+msgid "Created abuse filter number {number}"
+msgstr "Utworzono filtr nadużyć numer {number}"
+
+#: rcgcdw.py:434
#, python-brace-format
msgid "Merged revision histories of {article} into {dest}"
msgstr "Połączono historie {article} z {dest}"
-#: rcgcdw.py:417
+#: rcgcdw.py:438
msgid "Added an entry to the interwiki table"
msgstr "Dodano wpis do tabeli interwiki"
-#: rcgcdw.py:418 rcgcdw.py:424
+#: rcgcdw.py:439 rcgcdw.py:445
#, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr "Prefix: {prefix}, strona: {website} | {desc}"
-#: rcgcdw.py:423
+#: rcgcdw.py:444
msgid "Edited an entry in interwiki table"
msgstr "Edytowano wpis interwiki"
-#: rcgcdw.py:429
+#: rcgcdw.py:450
msgid "Deleted an entry in interwiki table"
msgstr "Usunięto wpis interwiki"
-#: rcgcdw.py:430
+#: rcgcdw.py:451
#, python-brace-format
msgid "Prefix: {prefix} | {desc}"
msgstr "Prefix: {prefix} | {desc}"
-#: rcgcdw.py:434
+#: rcgcdw.py:455
#, python-brace-format
msgid "Changed the content model of the page {article}"
msgstr "Zmieniono model zawartości {article}"
-#: rcgcdw.py:435
+#: rcgcdw.py:456
#, python-brace-format
msgid "Model changed from {old} to {new}: {reason}"
msgstr "Model został zmieniony z {old} na {new}: {reason}"
-#: rcgcdw.py:441
+#: rcgcdw.py:462
#, python-brace-format
msgid "Edited the sprite for {article}"
msgstr "Edytowano sprite dla {article}"
-#: rcgcdw.py:445
+#: rcgcdw.py:466
#, python-brace-format
msgid "Created the sprite sheet for {article}"
msgstr "Utworzono sprite sheet dla {article}"
-#: rcgcdw.py:449
+#: rcgcdw.py:470
#, python-brace-format
msgid "Edited the slice for {article}"
msgstr "Edytowano część sprite dla {article}"
-#: rcgcdw.py:452
+#: rcgcdw.py:473
#, python-brace-format
msgid "Created a tag \"{tag}\""
msgstr "Utworzono tag \"{tag}\""
-#: rcgcdw.py:456
+#: rcgcdw.py:477
#, python-brace-format
msgid "Deleted a tag \"{tag}\""
msgstr "Usunięto tag \"{tag}\""
-#: rcgcdw.py:460
+#: rcgcdw.py:481
#, python-brace-format
msgid "Activated a tag \"{tag}\""
msgstr "Aktywowano tag \"{tag}\""
-#: rcgcdw.py:463
+#: rcgcdw.py:484
#, python-brace-format
msgid "Deactivated a tag \"{tag}\""
msgstr "Dezaktywowano tag \"{tag}\""
-#: rcgcdw.py:466
-msgid "Action has been hidden by Gamepedia staff."
-msgstr "Akcja została ukryta przez personel Gamepedii."
-
#: rcgcdw.py:487
+msgid "Action has been hidden by administration."
+msgstr "Akcja została ukryta przez personel administrację."
+
+#: rcgcdw.py:508
msgid "Tags"
msgstr "Tagi"
-#: rcgcdw.py:493
+#: rcgcdw.py:514
msgid "**Added**: "
msgstr "**Dodane**: "
-#: rcgcdw.py:493
+#: rcgcdw.py:514
msgid " and {} more\n"
msgstr " oraz {} innych\n"
-#: rcgcdw.py:494
+#: rcgcdw.py:515
msgid "**Removed**: "
msgstr "**Usunięte**: "
-#: rcgcdw.py:494
+#: rcgcdw.py:515
msgid " and {} more"
msgstr " oraz {} innych"
-#: rcgcdw.py:495
+#: rcgcdw.py:516
msgid "Changed categories"
msgstr "Zmienione kategorie"
-#: rcgcdw.py:667
+#: rcgcdw.py:558
+msgid "~~hidden~~"
+msgstr "~~ukryte~~"
+
+#: rcgcdw.py:567
+msgid "hidden"
+msgstr "ukryte"
+
+#: rcgcdw.py:698
msgid "Unable to process the event"
msgstr "Nie udało się odczytać wydarzenia"
-#: rcgcdw.py:667
+#: rcgcdw.py:698
msgid "error"
msgstr "błąd"
-#: rcgcdw.py:766
+#: rcgcdw.py:802
msgid "Daily overview"
msgstr "Podsumowanie dnia"
-#: rcgcdw.py:782
+#: rcgcdw.py:812
msgid " ({} action)"
msgid_plural " ({} actions)"
msgstr[0] " ({} akcja)"
msgstr[1] " ({} akcje)"
msgstr[2] " ({} akcji)"
-#: rcgcdw.py:783
+#: rcgcdw.py:817
+msgid " ({} edit)"
+msgid_plural " ({} edits)"
+msgstr[0] " ({} edycja)"
+msgstr[1] " ({} edycje)"
+msgstr[2] " ({} edycji)"
+
+#: rcgcdw.py:822
msgid " UTC ({} action)"
msgid_plural " UTC ({} actions)"
msgstr[0] " UTC ({} akcja)"
msgstr[1] " UTC ({} akcje)"
msgstr[2] " UTC ({} akcji)"
-#: rcgcdw.py:785 rcgcdw.py:786
+#: rcgcdw.py:824 rcgcdw.py:825
msgid "But nobody came"
msgstr "Ale nikt nie przyszedł"
-#: rcgcdw.py:791
+#: rcgcdw.py:830
msgid "Most active user"
msgid_plural "Most active users"
msgstr[0] "Najbardziej aktywny użytkownik"
msgstr[1] "Najbardziej aktywni użytkownicy"
msgstr[2] "Najbardziej aktywni użytkownicy"
-#: rcgcdw.py:792
+#: rcgcdw.py:831
+msgid "Most edited article"
+msgid_plural "Most edited articles"
+msgstr[0] "Najczęściej edytowany artykuł"
+msgstr[1] "Najczęściej edytowane artykuły"
+msgstr[2] "Najczęściej edytowane artykuły"
+
+#: rcgcdw.py:832
msgid "Edits made"
msgstr "Zrobionych edycji"
-#: rcgcdw.py:792
+#: rcgcdw.py:832
msgid "New files"
msgstr "Nowych plików"
-#: rcgcdw.py:792
+#: rcgcdw.py:832
msgid "Admin actions"
msgstr "Akcji administratorskich"
-#: rcgcdw.py:793
+#: rcgcdw.py:833
msgid "Bytes changed"
msgstr "Zmienionych bajtów"
-#: rcgcdw.py:793
+#: rcgcdw.py:833
msgid "New articles"
msgstr "Nowych artykułów"
-#: rcgcdw.py:794
+#: rcgcdw.py:834
msgid "Unique contributors"
msgstr "Unikalnych edytujących"
-#: rcgcdw.py:795
+#: rcgcdw.py:835
msgid "Most active hour"
msgid_plural "Most active hours"
msgstr[0] "Najbardziej aktywna godzina"
msgstr[1] "Najbardziej aktywne godziny"
msgstr[2] "Najbardziej aktywne godziny"
-#: rcgcdw.py:796
+#: rcgcdw.py:836
msgid "Day score"
msgstr "Wynik dnia"
-#: rcgcdw.py:944
+#: rcgcdw.py:982
#, python-brace-format
msgid "Connection to {wiki} seems to be stable now."
msgstr "Połączenie z {wiki} wygląda na stabilne."
-#: rcgcdw.py:945 rcgcdw.py:1044
+#: rcgcdw.py:983 rcgcdw.py:1088
msgid "Connection status"
msgstr "Problem z połączeniem"
-#: rcgcdw.py:1043
+#: rcgcdw.py:1087
#, python-brace-format
msgid "{wiki} seems to be down or unreachable."
msgstr "{wiki} nie działa lub jest nieosiągalna."
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "director"
msgstr "Dyrektor"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "bot"
msgstr "Bot"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "editor"
msgstr "Redaktor"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "directors"
msgstr "Dyrektorzy"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "sysop"
msgstr "Administrator"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "bureaucrat"
msgstr "Biurokrata"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "reviewer"
msgstr "Przeglądający"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1126
msgid "autoreview"
msgstr "Automatycznie przeglądający"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1126
msgid "autopatrol"
msgstr "Automatycznie zatwierdzający"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1126
msgid "wiki_guardian"
msgstr "Strażnik wiki"
diff --git a/locale/pt-br/LC_MESSAGES/rcgcdw.mo b/locale/pt-br/LC_MESSAGES/rcgcdw.mo
index 272369a..ee5ce1c 100644
Binary files a/locale/pt-br/LC_MESSAGES/rcgcdw.mo and b/locale/pt-br/LC_MESSAGES/rcgcdw.mo differ
diff --git a/locale/pt-br/LC_MESSAGES/rcgcdw.po b/locale/pt-br/LC_MESSAGES/rcgcdw.po
index 940d9fd..19b4dac 100644
--- a/locale/pt-br/LC_MESSAGES/rcgcdw.po
+++ b/locale/pt-br/LC_MESSAGES/rcgcdw.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-11-13 14:36+0100\n"
-"PO-Revision-Date: 2018-11-13 14:45+0100\n"
+"POT-Creation-Date: 2019-01-26 19:51+0100\n"
+"PO-Revision-Date: 2019-01-28 16:38+0100\n"
"Last-Translator: Frisk \n"
"Language-Team: \n"
"Language: pt_BR\n"
@@ -16,45 +16,45 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Poedit 2.2\n"
+"X-Generator: Poedit 2.2.1\n"
-#: rcgcdw.py:176
+#: rcgcdw.py:189
msgid "(N!) "
msgstr "(N!) "
-#: rcgcdw.py:177
+#: rcgcdw.py:190
msgid "m "
msgstr "m "
-#: rcgcdw.py:202 rcgcdw.py:234
+#: rcgcdw.py:216 rcgcdw.py:248
msgid "Options"
msgstr "Opções"
-#: rcgcdw.py:202
+#: rcgcdw.py:216
#, python-brace-format
msgid "([preview]({link}) | [undo]({undolink}))"
msgstr "([visualização]({link}) | [desfazer]({undolink}))"
-#: rcgcdw.py:204
+#: rcgcdw.py:218
#, python-brace-format
msgid "Uploaded a new version of {name}"
msgstr "Carregou uma nova versão de {name}"
-#: rcgcdw.py:206
+#: rcgcdw.py:220
#, python-brace-format
msgid "Uploaded {name}"
msgstr "Carregado {name}"
-#: rcgcdw.py:221
+#: rcgcdw.py:235
msgid "**No license!**"
msgstr "* * Sem licença!* *"
-#: rcgcdw.py:234
+#: rcgcdw.py:248
#, python-brace-format
msgid "([preview]({link}))"
msgstr "([visualização]({link}))"
-#: rcgcdw.py:235
+#: rcgcdw.py:249
#, python-brace-format
msgid ""
"{desc}\n"
@@ -63,444 +63,473 @@ msgstr ""
"{desc}\n"
"Licença: {license}"
-#: rcgcdw.py:240
+#: rcgcdw.py:254
#, python-brace-format
msgid "Deleted page {article}"
msgstr "Página {article} excluída"
-#: rcgcdw.py:244
+#: rcgcdw.py:258
#, python-brace-format
msgid "Deleted redirect {article} by overwriting"
msgstr "Redirecionado {article} excluído por sobrescrevendo"
-#: rcgcdw.py:249
+#: rcgcdw.py:263
msgid "No redirect has been made"
msgstr "Nenhum redirecionamento foi feito"
-#: rcgcdw.py:251
+#: rcgcdw.py:265
msgid "A redirect has been made"
msgstr "Foi feito um redirecionamento"
-#: rcgcdw.py:252
+#: rcgcdw.py:266
#, python-brace-format
msgid "Moved {redirect}{article} to {target}"
msgstr "Movido {redirect}{article} para {target}"
-#: rcgcdw.py:256
+#: rcgcdw.py:270
#, python-brace-format
msgid "Moved {redirect}{article} to {title} over redirect"
msgstr "Movido {redirect}{article} para {title} ao redirecionar"
-#: rcgcdw.py:261
+#: rcgcdw.py:275
#, python-brace-format
msgid "Moved protection settings from {redirect}{article} to {title}"
msgstr "Configurações de proteção movidos de {redirect}{article} para {title}"
-#: rcgcdw.py:268
+#: rcgcdw.py:282
msgid "infinity and beyond"
msgstr "infinito e além"
-#: rcgcdw.py:269
+#: rcgcdw.py:283
#, python-brace-format
msgid "Blocked {blocked_user} for {time}"
msgstr "Bloqueado {blocked_user} por {time}"
-#: rcgcdw.py:275
+#: rcgcdw.py:289
#, python-brace-format
msgid "Changed block settings for {blocked_user}"
msgstr "Configurações de bloqueio alteradas para {blocked_user}"
-#: rcgcdw.py:281
+#: rcgcdw.py:295
#, python-brace-format
msgid "Unblocked {blocked_user}"
msgstr "Desbloqueado {blocked_user}"
-#: rcgcdw.py:286
+#: rcgcdw.py:300
#, python-brace-format
msgid "Left a comment on {target}'s profile"
msgstr "Deixou um comentário no perfil de {target}"
-#: rcgcdw.py:290
+#: rcgcdw.py:304
msgid "Left a comment on their own profile"
-msgstr "Deixou um comentário em seu próprio perfil "
+msgstr "Deixou um comentário em seu próprio perfil"
-#: rcgcdw.py:295
+#: rcgcdw.py:309
#, python-brace-format
msgid "Replied to a comment on {target}'s profile"
msgstr "Respondeu a um comentário no perfil de {target}"
-#: rcgcdw.py:299
+#: rcgcdw.py:313
msgid "Replied to a comment on their own profile"
-msgstr "Respondeu a um comentário em seu próprio perfil "
+msgstr "Respondeu a um comentário em seu próprio perfil"
-#: rcgcdw.py:304
+#: rcgcdw.py:318
#, python-brace-format
msgid "Edited a comment on {target}'s profile"
msgstr "Editou um comentário no perfil de {target}"
-#: rcgcdw.py:308
+#: rcgcdw.py:322
msgid "Edited a comment on their own profile"
-msgstr "Editou um comentário em seu próprio perfil "
+msgstr "Editou um comentário em seu próprio perfil"
-#: rcgcdw.py:315
+#: rcgcdw.py:329
msgid "Location"
msgstr "Localização"
-#: rcgcdw.py:317
+#: rcgcdw.py:331
msgid "About me"
msgstr "Sobre mim"
-#: rcgcdw.py:319
+#: rcgcdw.py:333
msgid "Google link"
msgstr "Link do Google"
-#: rcgcdw.py:321
+#: rcgcdw.py:335
msgid "Facebook link"
msgstr "Facebook link"
-#: rcgcdw.py:323
+#: rcgcdw.py:337
msgid "Twitter link"
msgstr "Link do Twitter"
-#: rcgcdw.py:325
+#: rcgcdw.py:339
msgid "Reddit link"
msgstr "Link do Reddit"
-#: rcgcdw.py:327
+#: rcgcdw.py:341
msgid "Twitch link"
msgstr "Link do Twitch"
-#: rcgcdw.py:329
+#: rcgcdw.py:343
msgid "PSN link"
msgstr "Link do PSN"
-#: rcgcdw.py:331
+#: rcgcdw.py:345
msgid "VK link"
msgstr "Link do VK"
-#: rcgcdw.py:333
+#: rcgcdw.py:347
msgid "XVL link"
msgstr "Link do XVL"
-#: rcgcdw.py:335
+#: rcgcdw.py:349
msgid "Steam link"
msgstr "Link do Steam"
-#: rcgcdw.py:337
+#: rcgcdw.py:351
msgid "Unknown"
msgstr "Desconhecido"
-#: rcgcdw.py:338
+#: rcgcdw.py:352
#, python-brace-format
msgid "Edited {target}'s profile"
msgstr "Editado perfil {target}"
-#: rcgcdw.py:339
+#: rcgcdw.py:353
msgid "Edited their own profile"
msgstr "Editou seu próprio perfil"
-#: rcgcdw.py:340
+#: rcgcdw.py:354
#, python-brace-format
msgid "{field} field changed to: {desc}"
msgstr "campo {field} alterado para: {desc}"
-#: rcgcdw.py:345
+#: rcgcdw.py:359
#, python-brace-format
msgid "Deleted a comment on {target}'s profile"
msgstr "Excluiu um comentário no perfil de {target}"
-#: rcgcdw.py:349
+#: rcgcdw.py:363
#, python-brace-format
msgid "Changed group membership for {target}"
msgstr "Alterado grupo do membro de {target}"
-#: rcgcdw.py:351
+#: rcgcdw.py:365
msgid "System"
msgstr "Sistema"
-#: rcgcdw.py:353
+#: rcgcdw.py:367
#, python-brace-format
msgid "{target} got autopromoted to a new usergroup"
msgstr "{target} recebeu um promovido para um novo grupo de usuários"
-#: rcgcdw.py:364 rcgcdw.py:366
+#: rcgcdw.py:378 rcgcdw.py:380
msgid "none"
msgstr "nenhum"
-#: rcgcdw.py:367 rcgcdw.py:537
+#: rcgcdw.py:381 rcgcdw.py:562
msgid "No description provided"
msgstr "Nenhuma descrição fornecida"
-#: rcgcdw.py:368
+#: rcgcdw.py:382
#, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr "Grupos alterados de {old_groups} para {new_groups} {reason}"
-#: rcgcdw.py:373
+#: rcgcdw.py:387
#, python-brace-format
msgid "Protected {target}"
msgstr "Protegido {target}"
-#: rcgcdw.py:378
+#: rcgcdw.py:389 rcgcdw.py:396
+msgid " [cascading]"
+msgstr " [em cascata]"
+
+#: rcgcdw.py:394
#, python-brace-format
msgid "Changed protection level for {article}"
msgstr "Nível de proteção alterado para {article}"
-#: rcgcdw.py:383
+#: rcgcdw.py:401
#, python-brace-format
msgid "Removed protection from {article}"
msgstr "Removida a proteção de {article}"
-#: rcgcdw.py:388
+#: rcgcdw.py:406
#, python-brace-format
msgid "Changed visibility of revision on page {article} "
msgid_plural "Changed visibility of {amount} revisions on page {article} "
msgstr[0] "Visibilidade alterada da revisão na página {article} "
msgstr[1] "Visibilidade alterada de {amount} revisões na página {article} "
-#: rcgcdw.py:394
+#: rcgcdw.py:412
#, python-brace-format
msgid "Imported {article} with {count} revision"
msgid_plural "Imported {article} with {count} revisions"
msgstr[0] "Importou {article} com {count} revisão"
msgstr[1] "{article} importado com {count} revisões"
-#: rcgcdw.py:400
+#: rcgcdw.py:418
#, python-brace-format
msgid "Restored {article}"
msgstr "Página {article} excluída"
-#: rcgcdw.py:403
+#: rcgcdw.py:421
msgid "Changed visibility of log events"
msgstr "Visibilidade alterada de eventos de registros"
-#: rcgcdw.py:406
+#: rcgcdw.py:424
msgid "Imported interwiki"
msgstr "Interwiki importado"
-#: rcgcdw.py:409
+#: rcgcdw.py:427
#, python-brace-format
msgid "Edited abuse filter number {number}"
msgstr "Número de filtro de abuso editado {number}"
-#: rcgcdw.py:413
+#: rcgcdw.py:430
+#, python-brace-format
+msgid "Created abuse filter number {number}"
+msgstr "Criado filtro de abuso número {number}"
+
+#: rcgcdw.py:434
#, python-brace-format
msgid "Merged revision histories of {article} into {dest}"
msgstr "Históricos de revisão mesclados de {article} em {dest}"
-#: rcgcdw.py:417
+#: rcgcdw.py:438
msgid "Added an entry to the interwiki table"
msgstr "Adicionado uma entrada para a tabela interwiki"
-#: rcgcdw.py:418 rcgcdw.py:424
+#: rcgcdw.py:439 rcgcdw.py:445
#, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr "Prefixo: {prefix}, site: {website} | {desc}"
-#: rcgcdw.py:423
+#: rcgcdw.py:444
msgid "Edited an entry in interwiki table"
msgstr "Editou uma entrada na tabela interwiki"
-#: rcgcdw.py:429
+#: rcgcdw.py:450
msgid "Deleted an entry in interwiki table"
msgstr "Excluiu uma entrada na tabela interwiki"
-#: rcgcdw.py:430
+#: rcgcdw.py:451
#, python-brace-format
msgid "Prefix: {prefix} | {desc}"
msgstr "Prefixo: {prefix} | {desc}"
-#: rcgcdw.py:434
+#: rcgcdw.py:455
#, python-brace-format
msgid "Changed the content model of the page {article}"
msgstr "Alterou o modelo de conteúdo da página {article}"
-#: rcgcdw.py:435
+#: rcgcdw.py:456
#, python-brace-format
msgid "Model changed from {old} to {new}: {reason}"
msgstr "Modelo alterado de {old} para {new}: {reason}"
-#: rcgcdw.py:441
+#: rcgcdw.py:462
#, python-brace-format
msgid "Edited the sprite for {article}"
msgstr "Editou o sprite para {article}"
-#: rcgcdw.py:445
+#: rcgcdw.py:466
#, python-brace-format
msgid "Created the sprite sheet for {article}"
msgstr "Criou a folha de sprites para {article}"
-#: rcgcdw.py:449
+#: rcgcdw.py:470
#, python-brace-format
msgid "Edited the slice for {article}"
msgstr "Editou a fatia de {article}"
-#: rcgcdw.py:452
+#: rcgcdw.py:473
#, python-brace-format
msgid "Created a tag \"{tag}\""
msgstr "Criei uma etiqueta \"{tag}\""
-#: rcgcdw.py:456
+#: rcgcdw.py:477
#, python-brace-format
msgid "Deleted a tag \"{tag}\""
msgstr "Excluiu uma etiqueta \"{tag}\""
-#: rcgcdw.py:460
+#: rcgcdw.py:481
#, python-brace-format
msgid "Activated a tag \"{tag}\""
msgstr "Ativou uma etiqueta \"{tag}\""
-#: rcgcdw.py:463
+#: rcgcdw.py:484
#, python-brace-format
msgid "Deactivated a tag \"{tag}\""
msgstr "Desativou uma etiqueta \"{tag}\""
-#: rcgcdw.py:466
-msgid "Action has been hidden by Gamepedia staff."
-msgstr "Action has been hidden by Gamepedia staff."
-
#: rcgcdw.py:487
+msgid "Action has been hidden by administration."
+msgstr ""
+
+#: rcgcdw.py:508
msgid "Tags"
msgstr "Etiquetas"
-#: rcgcdw.py:493
+#: rcgcdw.py:514
msgid "**Added**: "
msgstr "**Adicionado**: "
-#: rcgcdw.py:493
+#: rcgcdw.py:514
msgid " and {} more\n"
msgstr " e {} mais\n"
-#: rcgcdw.py:494
+#: rcgcdw.py:515
msgid "**Removed**: "
msgstr "**Removida**: "
-#: rcgcdw.py:494
+#: rcgcdw.py:515
msgid " and {} more"
msgstr " e {} mais"
-#: rcgcdw.py:495
+#: rcgcdw.py:516
msgid "Changed categories"
msgstr "Mudanças de categorias"
-#: rcgcdw.py:667
+#: rcgcdw.py:558
+msgid "~~hidden~~"
+msgstr ""
+
+#: rcgcdw.py:567
+msgid "hidden"
+msgstr ""
+
+#: rcgcdw.py:698
msgid "Unable to process the event"
msgstr "Não é possível processar o evento"
-#: rcgcdw.py:667
+#: rcgcdw.py:698
msgid "error"
msgstr "erro"
-#: rcgcdw.py:766
+#: rcgcdw.py:802
msgid "Daily overview"
msgstr "Visão geral diária"
-#: rcgcdw.py:782
+#: rcgcdw.py:812
msgid " ({} action)"
msgid_plural " ({} actions)"
msgstr[0] " ({} açao)"
msgstr[1] " ({} ações)"
-#: rcgcdw.py:783
+#: rcgcdw.py:817
+msgid " ({} edit)"
+msgid_plural " ({} edits)"
+msgstr[0] " ({} editado)"
+msgstr[1] " ({} edições)"
+
+#: rcgcdw.py:822
msgid " UTC ({} action)"
msgid_plural " UTC ({} actions)"
msgstr[0] " UTC ({} ação)"
msgstr[1] " UTC ({} ações)"
-#: rcgcdw.py:785 rcgcdw.py:786
+#: rcgcdw.py:824 rcgcdw.py:825
msgid "But nobody came"
msgstr "Mas ninguém veio"
-#: rcgcdw.py:791
+#: rcgcdw.py:830
msgid "Most active user"
msgid_plural "Most active users"
msgstr[0] "Usuário mais ativo"
msgstr[1] "Usuários mais ativos"
-#: rcgcdw.py:792
+#: rcgcdw.py:831
+msgid "Most edited article"
+msgid_plural "Most edited articles"
+msgstr[0] "Artigo mais editado"
+msgstr[1] "Artigos mais editados"
+
+#: rcgcdw.py:832
msgid "Edits made"
msgstr "Edições feitas"
-#: rcgcdw.py:792
+#: rcgcdw.py:832
msgid "New files"
msgstr "Novos arquivos"
-#: rcgcdw.py:792
+#: rcgcdw.py:832
msgid "Admin actions"
msgstr "Ações de administração"
-#: rcgcdw.py:793
+#: rcgcdw.py:833
msgid "Bytes changed"
msgstr "Bytes alterados"
-#: rcgcdw.py:793
+#: rcgcdw.py:833
msgid "New articles"
msgstr "Novos artigos"
-#: rcgcdw.py:794
+#: rcgcdw.py:834
msgid "Unique contributors"
msgstr "Contribuidores exclusivos"
-#: rcgcdw.py:795
+#: rcgcdw.py:835
msgid "Most active hour"
msgid_plural "Most active hours"
msgstr[0] "Hora mais ativa"
msgstr[1] "Horas mais ativas"
-#: rcgcdw.py:796
+#: rcgcdw.py:836
msgid "Day score"
msgstr "Pontuação do dia"
-#: rcgcdw.py:944
+#: rcgcdw.py:982
#, python-brace-format
msgid "Connection to {wiki} seems to be stable now."
msgstr "A conexão com {wiki} parece estar estável agora."
-#: rcgcdw.py:945 rcgcdw.py:1044
+#: rcgcdw.py:983 rcgcdw.py:1088
msgid "Connection status"
msgstr "Status da conexão"
-#: rcgcdw.py:1043
+#: rcgcdw.py:1087
#, python-brace-format
msgid "{wiki} seems to be down or unreachable."
msgstr "{wiki} parece estar inativo ou inacessível."
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "director"
msgstr "diretor"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "bot"
msgstr "robô"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "editor"
msgstr "editor"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "directors"
msgstr "diretores"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "sysop"
msgstr "administrador"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "bureaucrat"
msgstr "burocrata"
-#: rcgcdw.py:1074
+#: rcgcdw.py:1125
msgid "reviewer"
msgstr "revisor"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1126
msgid "autoreview"
msgstr "revisão automática"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1126
msgid "autopatrol"
msgstr "patrulha automatica"
-#: rcgcdw.py:1075
+#: rcgcdw.py:1126
msgid "wiki_guardian"
msgstr "guardião_wiki"
diff --git a/locale/ru/LC_MESSAGES/rcgcdw.mo b/locale/ru/LC_MESSAGES/rcgcdw.mo
index a4061a8..b405ba5 100644
Binary files a/locale/ru/LC_MESSAGES/rcgcdw.mo and b/locale/ru/LC_MESSAGES/rcgcdw.mo differ
diff --git a/locale/ru/LC_MESSAGES/rcgcdw.po b/locale/ru/LC_MESSAGES/rcgcdw.po
index 9959738..55049bb 100644
--- a/locale/ru/LC_MESSAGES/rcgcdw.po
+++ b/locale/ru/LC_MESSAGES/rcgcdw.po
@@ -7,54 +7,55 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-07-12 11:29+0200\n"
-"PO-Revision-Date: 2018-08-19 19:38+0200\n"
+"POT-Creation-Date: 2019-01-26 19:51+0100\n"
+"PO-Revision-Date: 2019-01-26 19:58+0100\n"
+"Last-Translator: BabylonAS\n"
"Language-Team: \n"
+"Language: ru_RU\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Poedit 2.1.1\n"
-"Last-Translator: BabylonAS\n"
-"Language: ru_RU\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 2.2.1\n"
-#: rcgcdw.py:124
+#: rcgcdw.py:189
msgid "(N!) "
msgstr "(Н!) "
-#: rcgcdw.py:124
+#: rcgcdw.py:190
msgid "m "
msgstr "м "
-#: rcgcdw.py:142 rcgcdw.py:168
+#: rcgcdw.py:216 rcgcdw.py:248
msgid "Options"
msgstr "Настройки"
-#: rcgcdw.py:142
+#: rcgcdw.py:216
#, python-brace-format
msgid "([preview]({link}) | [undo]({undolink}))"
msgstr "([просмотр]({link}) | [отмена]({undolink}))"
-#: rcgcdw.py:143
+#: rcgcdw.py:218
#, python-brace-format
msgid "Uploaded a new version of {name}"
msgstr "Загрузил новую версию {name}"
-#: rcgcdw.py:145
+#: rcgcdw.py:220
#, python-brace-format
msgid "Uploaded {name}"
msgstr "Загрузил {name}"
-#: rcgcdw.py:158
+#: rcgcdw.py:235
msgid "**No license!**"
msgstr "**Отсутствует лицензия!**"
-#: rcgcdw.py:168
+#: rcgcdw.py:248
#, python-brace-format
msgid "([preview]({link}))"
msgstr "([просмотр]({link}))"
-#: rcgcdw.py:169
+#: rcgcdw.py:249
#, python-brace-format
msgid ""
"{desc}\n"
@@ -63,179 +64,210 @@ msgstr ""
"{desc}\n"
"Лицензия: {license}"
-#: rcgcdw.py:172
+#: rcgcdw.py:254
#, python-brace-format
msgid "Deleted page {article}"
msgstr "Удалил страницу «{article}»"
-#: rcgcdw.py:175
+#: rcgcdw.py:258
#, python-brace-format
msgid "Deleted redirect {article} by overwriting"
msgstr "Удалил перенаправление «{article}» с помощью перезаписи"
-#: rcgcdw.py:178
+#: rcgcdw.py:263
msgid "No redirect has been made"
msgstr "Перенаправление не было сделано"
-#: rcgcdw.py:178
+#: rcgcdw.py:265
msgid "A redirect has been made"
msgstr "Было сделано перенаправление"
-#: rcgcdw.py:179
-#, python-brace-format
-msgid "Moved {article} to {target}"
+#: rcgcdw.py:266
+#, fuzzy, python-brace-format
+#| msgid "Moved {article} to {target}"
+msgid "Moved {redirect}{article} to {target}"
msgstr "Переименовал страницу «{article}» в «{target}»"
-#: rcgcdw.py:182
-#, python-brace-format
-msgid "Moved {article} to {title} over redirect"
+#: rcgcdw.py:270
+#, fuzzy, python-brace-format
+#| msgid "Moved {article} to {title} over redirect"
+msgid "Moved {redirect}{article} to {title} over redirect"
msgstr "Переименовал «{article}» в «{title}» поверх перенаправления"
-#: rcgcdw.py:185
-#, python-brace-format
-msgid "Moved protection settings from {article} to {title}"
+#: rcgcdw.py:275
+#, fuzzy, python-brace-format
+#| msgid "Moved protection settings from {article} to {title}"
+msgid "Moved protection settings from {redirect}{article} to {title}"
msgstr "Перенёс параметры защиты с «{article}» на «{title}»"
-#: rcgcdw.py:189
+#: rcgcdw.py:282
msgid "infinity and beyond"
msgstr "навеки и навсегда"
-#: rcgcdw.py:190
+#: rcgcdw.py:283
#, python-brace-format
msgid "Blocked {blocked_user} for {time}"
msgstr "Заблокировал участника {blocked_user} на срок «{time}»"
-#: rcgcdw.py:194
+#: rcgcdw.py:289
#, python-brace-format
msgid "Changed block settings for {blocked_user}"
msgstr "Изменил параметры блокировки для {blocked_user}"
-#: rcgcdw.py:198
+#: rcgcdw.py:295
#, python-brace-format
msgid "Unblocked {blocked_user}"
msgstr "Разблокировал участника {blocked_user}"
-#: rcgcdw.py:202
+#: rcgcdw.py:300
#, python-brace-format
msgid "Left a comment on {target}'s profile"
msgstr "Оставил комментарий на профиле участника {target}"
-#: rcgcdw.py:206
+#: rcgcdw.py:304
+#, fuzzy
+#| msgid "Left a comment on {target}'s profile"
+msgid "Left a comment on their own profile"
+msgstr "Оставил комментарий на профиле участника {target}"
+
+#: rcgcdw.py:309
#, python-brace-format
msgid "Replied to a comment on {target}'s profile"
msgstr "Ответил на комментарий на профиле участника {target}"
-#: rcgcdw.py:210
+#: rcgcdw.py:313
+#, fuzzy
+#| msgid "Replied to a comment on {target}'s profile"
+msgid "Replied to a comment on their own profile"
+msgstr "Ответил на комментарий на профиле участника {target}"
+
+#: rcgcdw.py:318
#, python-brace-format
msgid "Edited a comment on {target}'s profile"
msgstr "Отредактировал комментарий на профиле участника {target}"
-#: rcgcdw.py:214
+#: rcgcdw.py:322
+#, fuzzy
+#| msgid "Edited a comment on {target}'s profile"
+msgid "Edited a comment on their own profile"
+msgstr "Отредактировал комментарий на профиле участника {target}"
+
+#: rcgcdw.py:329
msgid "Location"
msgstr "Местоположение"
-#: rcgcdw.py:216
+#: rcgcdw.py:331
msgid "About me"
msgstr "О себе"
-#: rcgcdw.py:218
+#: rcgcdw.py:333
msgid "Google link"
msgstr "Ссылка на учётную запись Google"
-#: rcgcdw.py:220
+#: rcgcdw.py:335
msgid "Facebook link"
msgstr "Ссылка на учётную запись Facebook"
-#: rcgcdw.py:222
+#: rcgcdw.py:337
msgid "Twitter link"
msgstr "Ссылка на учётную запись Twitter"
-#: rcgcdw.py:224
+#: rcgcdw.py:339
msgid "Reddit link"
msgstr "Ссылка на учётную запись Reddit"
-#: rcgcdw.py:226
+#: rcgcdw.py:341
msgid "Twitch link"
msgstr "Ссылка на учётную запись Twitch"
-#: rcgcdw.py:228
+#: rcgcdw.py:343
msgid "PSN link"
msgstr "Ссылка на учётную запись PSN"
-#: rcgcdw.py:230
+#: rcgcdw.py:345
msgid "VK link"
msgstr "Ссылка на учётную запись ВКонтакте"
-#: rcgcdw.py:232
+#: rcgcdw.py:347
msgid "XVL link"
msgstr "Ссылка на учётную запись XVL"
-#: rcgcdw.py:234
+#: rcgcdw.py:349
msgid "Steam link"
msgstr "Ссылка на учётную запись Steam"
-#: rcgcdw.py:236
+#: rcgcdw.py:351
msgid "Unknown"
msgstr "Неизвестно"
-#: rcgcdw.py:237
+#: rcgcdw.py:352
#, python-brace-format
msgid "Edited {target}'s profile"
msgstr "Отредактировал профиль участника {target}"
-#: rcgcdw.py:238
+#: rcgcdw.py:353
+#, fuzzy
+#| msgid "Edited {target}'s profile"
+msgid "Edited their own profile"
+msgstr "Отредактировал профиль участника {target}"
+
+#: rcgcdw.py:354
#, python-brace-format
msgid "{field} field changed to: {desc}"
msgstr "Поле «{field}» изменено на: {desc}"
-#: rcgcdw.py:242
+#: rcgcdw.py:359
#, python-brace-format
msgid "Deleted a comment on {target}'s profile"
msgstr "Удалил комментарий на профиле участника {target}"
-#: rcgcdw.py:246
+#: rcgcdw.py:363
#, python-brace-format
msgid "Changed group membership for {target}"
msgstr "Изменил членство в группах для участника {target}"
-#: rcgcdw.py:248
+#: rcgcdw.py:365
msgid "System"
msgstr "Система"
-#: rcgcdw.py:250
+#: rcgcdw.py:367
#, python-brace-format
msgid "{target} got autopromoted to a new usergroup"
msgstr "Участник {target} был автоматически повышен до новой группы участников"
-#: rcgcdw.py:260 rcgcdw.py:262
+#: rcgcdw.py:378 rcgcdw.py:380
msgid "none"
msgstr "ничего"
-#: rcgcdw.py:263 rcgcdw.py:385
+#: rcgcdw.py:381 rcgcdw.py:562
msgid "No description provided"
msgstr "Нет описания правки"
-#: rcgcdw.py:264
+#: rcgcdw.py:382
#, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr "Группы изменены с {old_groups} на {new_groups}{reason}"
-#: rcgcdw.py:267
+#: rcgcdw.py:387
#, python-brace-format
msgid "Protected {target}"
msgstr "Защитил страницу «{target}»"
-#: rcgcdw.py:271
+#: rcgcdw.py:389 rcgcdw.py:396
+msgid " [cascading]"
+msgstr " [каскадно]"
+
+#: rcgcdw.py:394
#, python-brace-format
msgid "Changed protection level for {article}"
msgstr "Изменил уровень защиты для страницы «{article}»"
-#: rcgcdw.py:275
+#: rcgcdw.py:401
#, python-brace-format
msgid "Removed protection from {article}"
msgstr "Убрал защиту со страницы «{article}»"
-#: rcgcdw.py:279
+#: rcgcdw.py:406
#, python-brace-format
msgid "Changed visibility of revision on page {article} "
msgid_plural "Changed visibility of {amount} revisions on page {article} "
@@ -243,7 +275,7 @@ msgstr[0] "Изменил видимость {amount} правки на стра
msgstr[1] "Изменил видимость {amount} правок на странице «{article}» "
msgstr[2] "Изменил видимость {amount} правок на странице «{article}» "
-#: rcgcdw.py:282
+#: rcgcdw.py:412
#, python-brace-format
msgid "Imported {article} with {count} revision"
msgid_plural "Imported {article} with {count} revisions"
@@ -251,222 +283,283 @@ msgstr[0] "Импортировал страницу «{article}» с {count} п
msgstr[1] "Импортировал страницу «{article}» с {count} правками"
msgstr[2] "Импортировал страницу «{article}» с {count} правками"
-#: rcgcdw.py:285
+#: rcgcdw.py:418
#, python-brace-format
msgid "Restored {article}"
msgstr "Восстановил страницу «{article}»"
-#: rcgcdw.py:288
+#: rcgcdw.py:421
msgid "Changed visibility of log events"
msgstr "Изменил видимость событий в журнале"
-#: rcgcdw.py:291
+#: rcgcdw.py:424
msgid "Imported interwiki"
msgstr "Импортировал префикс интервики"
-#: rcgcdw.py:294
+#: rcgcdw.py:427
#, python-brace-format
msgid "Edited abuse filter number {number}"
msgstr "Отредактировал фильтр злоупотреблений под номером {number}"
-#: rcgcdw.py:297
+#: rcgcdw.py:430
+#, fuzzy, python-brace-format
+#| msgid "Edited abuse filter number {number}"
+msgid "Created abuse filter number {number}"
+msgstr "Отредактировал фильтр злоупотреблений под номером {number}"
+
+#: rcgcdw.py:434
#, python-brace-format
msgid "Merged revision histories of {article} into {dest}"
-msgstr "Объединил историю правок страницы «{article}» с историей правок «{dest}»"
+msgstr ""
+"Объединил историю правок страницы «{article}» с историей правок «{dest}»"
-#: rcgcdw.py:300
+#: rcgcdw.py:438
msgid "Added an entry to the interwiki table"
msgstr "Добавил запись в таблицу префиксов интервики"
-#: rcgcdw.py:301 rcgcdw.py:305
+#: rcgcdw.py:439 rcgcdw.py:445
#, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr "Префикс: {prefix}, сайт: {website} | {desc}"
-#: rcgcdw.py:304
+#: rcgcdw.py:444
msgid "Edited an entry in interwiki table"
msgstr "Отредактировал запись в таблице префиксов интервики"
-#: rcgcdw.py:308
+#: rcgcdw.py:450
msgid "Deleted an entry in interwiki table"
msgstr "Удалил запись из таблицы префиксов интервики"
-#: rcgcdw.py:309
+#: rcgcdw.py:451
#, python-brace-format
msgid "Prefix: {prefix} | {desc}"
msgstr "Префика: {prefix} | {desc}"
-#: rcgcdw.py:312
+#: rcgcdw.py:455
#, python-brace-format
msgid "Changed the content model of the page {article}"
msgstr "Изменил модель содержимого для страницы {article}"
-#: rcgcdw.py:313
+#: rcgcdw.py:456
#, python-brace-format
msgid "Model changed from {old} to {new}: {reason}"
msgstr "Модель изменена с «{old}» на «{new}»: {reason}"
-#: rcgcdw.py:316
+#: rcgcdw.py:462
#, python-brace-format
msgid "Edited the sprite for {article}"
msgstr "Отредактировал спрайт для страницы «{article}»"
-#: rcgcdw.py:319
+#: rcgcdw.py:466
#, python-brace-format
msgid "Created the sprite sheet for {article}"
msgstr "Создал таблицу спрайтов для страницы «{article}»"
-#: rcgcdw.py:322
+#: rcgcdw.py:470
#, python-brace-format
msgid "Edited the slice for {article}"
msgstr "Отредактировал срез для страницы «{article}»"
-#: rcgcdw.py:325
+#: rcgcdw.py:473
#, python-brace-format
msgid "Created a tag \"{tag}\""
msgstr "Создал метку «{tag}»"
-#: rcgcdw.py:329
+#: rcgcdw.py:477
#, python-brace-format
msgid "Deleted a tag \"{tag}\""
msgstr "Удалил метку «{tag}»"
-#: rcgcdw.py:333
+#: rcgcdw.py:481
#, python-brace-format
msgid "Activated a tag \"{tag}\""
msgstr "Активировал метку «{tag}»"
-#: rcgcdw.py:336
+#: rcgcdw.py:484
#, python-brace-format
msgid "Deactivated a tag \"{tag}\""
msgstr "Деактивировал метку «{tag}»"
-#: rcgcdw.py:357
+#: rcgcdw.py:487
+msgid "Action has been hidden by administration."
+msgstr ""
+
+#: rcgcdw.py:508
msgid "Tags"
msgstr "Метки"
-#: rcgcdw.py:480
+#: rcgcdw.py:514
+msgid "**Added**: "
+msgstr ""
+
+#: rcgcdw.py:514
+msgid " and {} more\n"
+msgstr ""
+
+#: rcgcdw.py:515
+msgid "**Removed**: "
+msgstr ""
+
+#: rcgcdw.py:515
+msgid " and {} more"
+msgstr ""
+
+#: rcgcdw.py:516
+msgid "Changed categories"
+msgstr ""
+
+#: rcgcdw.py:558
+msgid "~~hidden~~"
+msgstr ""
+
+#: rcgcdw.py:567
+msgid "hidden"
+msgstr ""
+
+#: rcgcdw.py:698
msgid "Unable to process the event"
msgstr "Не получается обработать событие"
-#: rcgcdw.py:480
+#: rcgcdw.py:698
msgid "error"
msgstr "ошибка"
-#: rcgcdw.py:560
+#: rcgcdw.py:802
msgid "Daily overview"
msgstr "Ежедневный обзор"
-#: rcgcdw.py:576
+#: rcgcdw.py:812
+#, fuzzy
+#| msgid " ({} action)"
+#| msgid_plural "({} actions)"
msgid " ({} action)"
-msgid_plural "({} actions)"
+msgid_plural " ({} actions)"
msgstr[0] " ({} действие)"
msgstr[1] "({} действия)"
msgstr[2] "({} действий)"
-#: rcgcdw.py:577
+#: rcgcdw.py:817
+#, fuzzy
+#| msgid " ({} action)"
+#| msgid_plural "({} actions)"
+msgid " ({} edit)"
+msgid_plural " ({} edits)"
+msgstr[0] " ({} действие)"
+msgstr[1] "({} действия)"
+msgstr[2] "({} действий)"
+
+#: rcgcdw.py:822
msgid " UTC ({} action)"
msgid_plural " UTC ({} actions)"
msgstr[0] " UTC ({} действие)"
msgstr[1] " UTC ({} действия)"
msgstr[2] " UTC ({} действий)"
-#: rcgcdw.py:579 rcgcdw.py:580
+#: rcgcdw.py:824 rcgcdw.py:825
msgid "But nobody came"
msgstr "Но никто не пришёл"
-#: rcgcdw.py:584
+#: rcgcdw.py:830
msgid "Most active user"
msgid_plural "Most active users"
msgstr[0] "Самый активный участник"
msgstr[1] "Самые активные участники"
msgstr[2] "Самые активные участники"
-#: rcgcdw.py:584
+#: rcgcdw.py:831
+#, fuzzy
+#| msgid "Restored {article}"
+msgid "Most edited article"
+msgid_plural "Most edited articles"
+msgstr[0] "Восстановил страницу «{article}»"
+msgstr[1] "Восстановил страницу «{article}»"
+msgstr[2] "Восстановил страницу «{article}»"
+
+#: rcgcdw.py:832
msgid "Edits made"
msgstr "Сделано правок"
-#: rcgcdw.py:584
+#: rcgcdw.py:832
msgid "New files"
msgstr "Новых файлов"
-#: rcgcdw.py:584
+#: rcgcdw.py:832
msgid "Admin actions"
msgstr "Административных действий"
-#: rcgcdw.py:584
+#: rcgcdw.py:833
msgid "Bytes changed"
msgstr "Изменено байтов"
-#: rcgcdw.py:584
+#: rcgcdw.py:833
msgid "New articles"
msgstr "Новых статей"
-#: rcgcdw.py:584
+#: rcgcdw.py:834
msgid "Unique contributors"
msgstr "Уникальных редакторов"
-#: rcgcdw.py:584
+#: rcgcdw.py:835
msgid "Most active hour"
msgid_plural "Most active hours"
msgstr[0] "Самый активный час"
msgstr[1] "Самые активные часы"
msgstr[2] "Самые активные часы"
-#: rcgcdw.py:584
+#: rcgcdw.py:836
msgid "Day score"
msgstr "Очки за день"
-#: rcgcdw.py:674
+#: rcgcdw.py:982
#, python-brace-format
msgid "Connection to {wiki} seems to be stable now."
msgstr "Соединение с {wiki} сейчас кажется стабильным."
-#: rcgcdw.py:674 rcgcdw.py:729
+#: rcgcdw.py:983 rcgcdw.py:1088
msgid "Connection status"
msgstr "Статус соединения"
-#: rcgcdw.py:729
+#: rcgcdw.py:1087
#, python-brace-format
msgid "{wiki} seems to be down or unreachable."
msgstr "{wiki}, вероятно, не работает или недоступна."
-#: rcgcdw.py:751
+#: rcgcdw.py:1125
msgid "director"
msgstr "director"
-#: rcgcdw.py:751
+#: rcgcdw.py:1125
msgid "bot"
msgstr "бот"
-#: rcgcdw.py:751
+#: rcgcdw.py:1125
msgid "editor"
msgstr "досматривающий"
-#: rcgcdw.py:751
+#: rcgcdw.py:1125
msgid "directors"
msgstr "directors"
-#: rcgcdw.py:751
+#: rcgcdw.py:1125
msgid "sysop"
msgstr "администратор"
-#: rcgcdw.py:751
+#: rcgcdw.py:1125
msgid "bureaucrat"
msgstr "бюрократ"
-#: rcgcdw.py:751
+#: rcgcdw.py:1125
msgid "reviewer"
msgstr "выверяющий"
-#: rcgcdw.py:751
+#: rcgcdw.py:1126
msgid "autoreview"
msgstr "автодосматриваемый"
-#: rcgcdw.py:751
+#: rcgcdw.py:1126
msgid "autopatrol"
msgstr "автопатрулируемый"
-#: rcgcdw.py:751
+#: rcgcdw.py:1126
msgid "wiki_guardian"
msgstr "смотритель вики"
diff --git a/rcgcdw.pot b/rcgcdw.pot
index 0a663a0..f7f08a1 100644
--- a/rcgcdw.pot
+++ b/rcgcdw.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-10-02 01:22+0200\n"
+"POT-Creation-Date: 2019-01-26 19:51+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,467 +18,516 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: rcgcdw.py:175
+#: rcgcdw.py:189
msgid "(N!) "
msgstr ""
-#: rcgcdw.py:176
+#: rcgcdw.py:190
msgid "m "
msgstr ""
-#: rcgcdw.py:200 rcgcdw.py:232
+#: rcgcdw.py:216 rcgcdw.py:248
msgid "Options"
msgstr ""
-#: rcgcdw.py:200
+#: rcgcdw.py:216
#, python-brace-format
msgid "([preview]({link}) | [undo]({undolink}))"
msgstr ""
-#: rcgcdw.py:202
+#: rcgcdw.py:218
#, python-brace-format
msgid "Uploaded a new version of {name}"
msgstr ""
-#: rcgcdw.py:204
+#: rcgcdw.py:220
#, python-brace-format
msgid "Uploaded {name}"
msgstr ""
-#: rcgcdw.py:219
+#: rcgcdw.py:235
msgid "**No license!**"
msgstr ""
-#: rcgcdw.py:232
+#: rcgcdw.py:248
#, python-brace-format
msgid "([preview]({link}))"
msgstr ""
-#: rcgcdw.py:233
+#: rcgcdw.py:249
#, python-brace-format
msgid ""
"{desc}\n"
"License: {license}"
msgstr ""
-#: rcgcdw.py:238
+#: rcgcdw.py:254
#, python-brace-format
msgid "Deleted page {article}"
msgstr ""
-#: rcgcdw.py:242
+#: rcgcdw.py:258
#, python-brace-format
msgid "Deleted redirect {article} by overwriting"
msgstr ""
-#: rcgcdw.py:247
+#: rcgcdw.py:263
msgid "No redirect has been made"
msgstr ""
-#: rcgcdw.py:249
+#: rcgcdw.py:265
msgid "A redirect has been made"
msgstr ""
-#: rcgcdw.py:250
-#, python-brace-format
-msgid "Moved {article} to {target}"
-msgstr ""
-
-#: rcgcdw.py:254
-#, python-brace-format
-msgid "Moved {article} to {title} over redirect"
-msgstr ""
-
-#: rcgcdw.py:259
-#, python-brace-format
-msgid "Moved protection settings from {article} to {title}"
-msgstr ""
-
#: rcgcdw.py:266
+#, python-brace-format
+msgid "Moved {redirect}{article} to {target}"
+msgstr ""
+
+#: rcgcdw.py:270
+#, python-brace-format
+msgid "Moved {redirect}{article} to {title} over redirect"
+msgstr ""
+
+#: rcgcdw.py:275
+#, python-brace-format
+msgid "Moved protection settings from {redirect}{article} to {title}"
+msgstr ""
+
+#: rcgcdw.py:282
msgid "infinity and beyond"
msgstr ""
-#: rcgcdw.py:267
+#: rcgcdw.py:283
#, python-brace-format
msgid "Blocked {blocked_user} for {time}"
msgstr ""
-#: rcgcdw.py:273
+#: rcgcdw.py:289
#, python-brace-format
msgid "Changed block settings for {blocked_user}"
msgstr ""
-#: rcgcdw.py:279
+#: rcgcdw.py:295
#, python-brace-format
msgid "Unblocked {blocked_user}"
msgstr ""
-#: rcgcdw.py:284
+#: rcgcdw.py:300
#, python-brace-format
msgid "Left a comment on {target}'s profile"
msgstr ""
-#: rcgcdw.py:288
+#: rcgcdw.py:304
msgid "Left a comment on their own profile"
msgstr ""
-#: rcgcdw.py:293
+#: rcgcdw.py:309
#, python-brace-format
msgid "Replied to a comment on {target}'s profile"
msgstr ""
-#: rcgcdw.py:297
+#: rcgcdw.py:313
msgid "Replied to a comment on their own profile"
msgstr ""
-#: rcgcdw.py:302
+#: rcgcdw.py:318
#, python-brace-format
msgid "Edited a comment on {target}'s profile"
msgstr ""
-#: rcgcdw.py:306
+#: rcgcdw.py:322
msgid "Edited a comment on their own profile"
msgstr ""
-#: rcgcdw.py:313
+#: rcgcdw.py:329
msgid "Location"
msgstr ""
-#: rcgcdw.py:315
+#: rcgcdw.py:331
msgid "About me"
msgstr ""
-#: rcgcdw.py:317
+#: rcgcdw.py:333
msgid "Google link"
msgstr ""
-#: rcgcdw.py:319
+#: rcgcdw.py:335
msgid "Facebook link"
msgstr ""
-#: rcgcdw.py:321
+#: rcgcdw.py:337
msgid "Twitter link"
msgstr ""
-#: rcgcdw.py:323
+#: rcgcdw.py:339
msgid "Reddit link"
msgstr ""
-#: rcgcdw.py:325
+#: rcgcdw.py:341
msgid "Twitch link"
msgstr ""
-#: rcgcdw.py:327
+#: rcgcdw.py:343
msgid "PSN link"
msgstr ""
-#: rcgcdw.py:329
+#: rcgcdw.py:345
msgid "VK link"
msgstr ""
-#: rcgcdw.py:331
+#: rcgcdw.py:347
msgid "XVL link"
msgstr ""
-#: rcgcdw.py:333
+#: rcgcdw.py:349
msgid "Steam link"
msgstr ""
-#: rcgcdw.py:335
+#: rcgcdw.py:351
msgid "Unknown"
msgstr ""
-#: rcgcdw.py:336
+#: rcgcdw.py:352
#, python-brace-format
msgid "Edited {target}'s profile"
msgstr ""
-#: rcgcdw.py:337
+#: rcgcdw.py:353
msgid "Edited their own profile"
msgstr ""
-#: rcgcdw.py:338
+#: rcgcdw.py:354
#, python-brace-format
msgid "{field} field changed to: {desc}"
msgstr ""
-#: rcgcdw.py:343
+#: rcgcdw.py:359
#, python-brace-format
msgid "Deleted a comment on {target}'s profile"
msgstr ""
-#: rcgcdw.py:347
+#: rcgcdw.py:363
#, python-brace-format
msgid "Changed group membership for {target}"
msgstr ""
-#: rcgcdw.py:349
+#: rcgcdw.py:365
msgid "System"
msgstr ""
-#: rcgcdw.py:351
+#: rcgcdw.py:367
#, python-brace-format
msgid "{target} got autopromoted to a new usergroup"
msgstr ""
-#: rcgcdw.py:362 rcgcdw.py:364
+#: rcgcdw.py:378 rcgcdw.py:380
msgid "none"
msgstr ""
-#: rcgcdw.py:365 rcgcdw.py:527
+#: rcgcdw.py:381 rcgcdw.py:562
msgid "No description provided"
msgstr ""
-#: rcgcdw.py:366
+#: rcgcdw.py:382
#, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr ""
-#: rcgcdw.py:371
+#: rcgcdw.py:387
#, python-brace-format
msgid "Protected {target}"
msgstr ""
-#: rcgcdw.py:376
+#: rcgcdw.py:389 rcgcdw.py:396
+msgid " [cascading]"
+msgstr ""
+
+#: rcgcdw.py:394
#, python-brace-format
msgid "Changed protection level for {article}"
msgstr ""
-#: rcgcdw.py:381
+#: rcgcdw.py:401
#, python-brace-format
msgid "Removed protection from {article}"
msgstr ""
-#: rcgcdw.py:386
+#: rcgcdw.py:406
#, python-brace-format
msgid "Changed visibility of revision on page {article} "
msgid_plural "Changed visibility of {amount} revisions on page {article} "
msgstr[0] ""
msgstr[1] ""
-#: rcgcdw.py:392
+#: rcgcdw.py:412
#, python-brace-format
msgid "Imported {article} with {count} revision"
msgid_plural "Imported {article} with {count} revisions"
msgstr[0] ""
msgstr[1] ""
-#: rcgcdw.py:398
+#: rcgcdw.py:418
#, python-brace-format
msgid "Restored {article}"
msgstr ""
-#: rcgcdw.py:401
+#: rcgcdw.py:421
msgid "Changed visibility of log events"
msgstr ""
-#: rcgcdw.py:404
+#: rcgcdw.py:424
msgid "Imported interwiki"
msgstr ""
-#: rcgcdw.py:407
+#: rcgcdw.py:427
#, python-brace-format
msgid "Edited abuse filter number {number}"
msgstr ""
-#: rcgcdw.py:411
+#: rcgcdw.py:430
+#, python-brace-format
+msgid "Created abuse filter number {number}"
+msgstr ""
+
+#: rcgcdw.py:434
#, python-brace-format
msgid "Merged revision histories of {article} into {dest}"
msgstr ""
-#: rcgcdw.py:415
+#: rcgcdw.py:438
msgid "Added an entry to the interwiki table"
msgstr ""
-#: rcgcdw.py:416 rcgcdw.py:422
+#: rcgcdw.py:439 rcgcdw.py:445
#, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr ""
-#: rcgcdw.py:421
+#: rcgcdw.py:444
msgid "Edited an entry in interwiki table"
msgstr ""
-#: rcgcdw.py:427
+#: rcgcdw.py:450
msgid "Deleted an entry in interwiki table"
msgstr ""
-#: rcgcdw.py:428
+#: rcgcdw.py:451
#, python-brace-format
msgid "Prefix: {prefix} | {desc}"
msgstr ""
-#: rcgcdw.py:432
+#: rcgcdw.py:455
#, python-brace-format
msgid "Changed the content model of the page {article}"
msgstr ""
-#: rcgcdw.py:433
+#: rcgcdw.py:456
#, python-brace-format
msgid "Model changed from {old} to {new}: {reason}"
msgstr ""
-#: rcgcdw.py:439
+#: rcgcdw.py:462
#, python-brace-format
msgid "Edited the sprite for {article}"
msgstr ""
-#: rcgcdw.py:443
+#: rcgcdw.py:466
#, python-brace-format
msgid "Created the sprite sheet for {article}"
msgstr ""
-#: rcgcdw.py:447
+#: rcgcdw.py:470
#, python-brace-format
msgid "Edited the slice for {article}"
msgstr ""
-#: rcgcdw.py:450
+#: rcgcdw.py:473
#, python-brace-format
msgid "Created a tag \"{tag}\""
msgstr ""
-#: rcgcdw.py:454
+#: rcgcdw.py:477
#, python-brace-format
msgid "Deleted a tag \"{tag}\""
msgstr ""
-#: rcgcdw.py:458
+#: rcgcdw.py:481
#, python-brace-format
msgid "Activated a tag \"{tag}\""
msgstr ""
-#: rcgcdw.py:461
+#: rcgcdw.py:484
#, python-brace-format
msgid "Deactivated a tag \"{tag}\""
msgstr ""
-#: rcgcdw.py:464
-msgid "Action has been hidden by Gamepedia staff."
+#: rcgcdw.py:487
+msgid "Action has been hidden by administration."
msgstr ""
-#: rcgcdw.py:485
+#: rcgcdw.py:508
msgid "Tags"
msgstr ""
-#: rcgcdw.py:656
+#: rcgcdw.py:514
+msgid "**Added**: "
+msgstr ""
+
+#: rcgcdw.py:514
+msgid " and {} more\n"
+msgstr ""
+
+#: rcgcdw.py:515
+msgid "**Removed**: "
+msgstr ""
+
+#: rcgcdw.py:515
+msgid " and {} more"
+msgstr ""
+
+#: rcgcdw.py:516
+msgid "Changed categories"
+msgstr ""
+
+#: rcgcdw.py:558
+msgid "~~hidden~~"
+msgstr ""
+
+#: rcgcdw.py:567
+msgid "hidden"
+msgstr ""
+
+#: rcgcdw.py:698
msgid "Unable to process the event"
msgstr ""
-#: rcgcdw.py:656
+#: rcgcdw.py:698
msgid "error"
msgstr ""
-#: rcgcdw.py:751
+#: rcgcdw.py:802
msgid "Daily overview"
msgstr ""
-#: rcgcdw.py:767
+#: rcgcdw.py:812
msgid " ({} action)"
msgid_plural " ({} actions)"
msgstr[0] ""
msgstr[1] ""
-#: rcgcdw.py:768
+#: rcgcdw.py:817
+msgid " ({} edit)"
+msgid_plural " ({} edits)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: rcgcdw.py:822
msgid " UTC ({} action)"
msgid_plural " UTC ({} actions)"
msgstr[0] ""
msgstr[1] ""
-#: rcgcdw.py:770 rcgcdw.py:771
+#: rcgcdw.py:824 rcgcdw.py:825
msgid "But nobody came"
msgstr ""
-#: rcgcdw.py:776
+#: rcgcdw.py:830
msgid "Most active user"
msgid_plural "Most active users"
msgstr[0] ""
msgstr[1] ""
-#: rcgcdw.py:777
+#: rcgcdw.py:831
+msgid "Most edited article"
+msgid_plural "Most edited articles"
+msgstr[0] ""
+msgstr[1] ""
+
+#: rcgcdw.py:832
msgid "Edits made"
msgstr ""
-#: rcgcdw.py:777
+#: rcgcdw.py:832
msgid "New files"
msgstr ""
-#: rcgcdw.py:777
+#: rcgcdw.py:832
msgid "Admin actions"
msgstr ""
-#: rcgcdw.py:778
+#: rcgcdw.py:833
msgid "Bytes changed"
msgstr ""
-#: rcgcdw.py:778
+#: rcgcdw.py:833
msgid "New articles"
msgstr ""
-#: rcgcdw.py:779
+#: rcgcdw.py:834
msgid "Unique contributors"
msgstr ""
-#: rcgcdw.py:780
+#: rcgcdw.py:835
msgid "Most active hour"
msgid_plural "Most active hours"
msgstr[0] ""
msgstr[1] ""
-#: rcgcdw.py:781
+#: rcgcdw.py:836
msgid "Day score"
msgstr ""
-#: rcgcdw.py:924
+#: rcgcdw.py:982
#, python-brace-format
msgid "Connection to {wiki} seems to be stable now."
msgstr ""
-#: rcgcdw.py:925 rcgcdw.py:988
+#: rcgcdw.py:983 rcgcdw.py:1088
msgid "Connection status"
msgstr ""
-#: rcgcdw.py:987
+#: rcgcdw.py:1087
#, python-brace-format
msgid "{wiki} seems to be down or unreachable."
msgstr ""
-#: rcgcdw.py:1015
+#: rcgcdw.py:1125
msgid "director"
msgstr ""
-#: rcgcdw.py:1015
+#: rcgcdw.py:1125
msgid "bot"
msgstr ""
-#: rcgcdw.py:1015
+#: rcgcdw.py:1125
msgid "editor"
msgstr ""
-#: rcgcdw.py:1015
+#: rcgcdw.py:1125
msgid "directors"
msgstr ""
-#: rcgcdw.py:1015
+#: rcgcdw.py:1125
msgid "sysop"
msgstr ""
-#: rcgcdw.py:1015
+#: rcgcdw.py:1125
msgid "bureaucrat"
msgstr ""
-#: rcgcdw.py:1015
+#: rcgcdw.py:1125
msgid "reviewer"
msgstr ""
-#: rcgcdw.py:1016
+#: rcgcdw.py:1126
msgid "autoreview"
msgstr ""
-#: rcgcdw.py:1016
+#: rcgcdw.py:1126
msgid "autopatrol"
msgstr ""
-#: rcgcdw.py:1016
+#: rcgcdw.py:1126
msgid "wiki_guardian"
msgstr ""
diff --git a/rcgcdw.py b/rcgcdw.py
index 32ac119..611c22b 100644
--- a/rcgcdw.py
+++ b/rcgcdw.py
@@ -55,7 +55,7 @@ class LinkParser(HTMLParser):
self.recent_href = attr[1]
if self.recent_href.startswith("//"):
self.recent_href = "https:{rest}".format(rest=self.recent_href)
- elif not self.recent_href.startswith("https"):
+ elif not self.recent_href.startswith("http"):
self.recent_href = "https://{wiki}.gamepedia.com".format(wiki=settings["wiki"]) + self.recent_href
self.recent_href = self.recent_href.replace(")", "\\)")
@@ -77,7 +77,13 @@ LinkParser = LinkParser()
def send(message, name, avatar):
- send_to_discord({"content": message, "avatar_url": avatar, "username": name})
+ dictionary_creator = {}
+ dictionary_creator["content"] = message
+ if name:
+ dictionary_creator["username"] = name
+ if avatar:
+ dictionary_creator["avatar_url"] = avatar
+ send_to_discord(dictionary_creator)
def safe_read(request, *keys):
@@ -101,6 +107,8 @@ def send_to_discord_webhook(data):
header = settings["header"]
if "content" not in data:
header['Content-Type'] = 'application/json'
+ else:
+ header['Content-Type'] = 'application/x-www-form-urlencoded'
try:
result = requests.post(settings["webhookURL"], data=data,
headers=header, timeout=10)
@@ -111,7 +119,7 @@ def send_to_discord_webhook(data):
logging.warning("Connection error while sending the data to a webhook")
return 3
else:
- return handle_discord_http(result.status_code, data)
+ return handle_discord_http(result.status_code, data, result)
def send_to_discord(data):
@@ -153,7 +161,8 @@ def webhook_formatter(action, STATIC, **params):
else:
logging.debug(
"2Current params user {} and state of map_ips {}".format(params["user"], recent_changes.map_ips))
- recent_changes.map_ips[params["user"]] += 1
+ if action in ("edit", "new"):
+ recent_changes.map_ips[params["user"]] += 1
params["user"] = "{author} ({amount})".format(author=params["user"],
amount=recent_changes.map_ips[params["user"]])
else:
@@ -190,6 +199,7 @@ def webhook_formatter(action, STATIC, **params):
article=params["title"].replace(" ", "_"))
additional_info_retrieved = False
if urls is not None:
+ logging.debug(urls)
if "-1" not in urls: # oage removed before we asked for it
img_info = next(iter(urls.values()))["imageinfo"]
embed["image"]["url"] = img_info[0]["url"]
@@ -202,7 +212,7 @@ def webhook_formatter(action, STATIC, **params):
img_timestamp = [x for x in img_info[1]["timestamp"] if x.isdigit()]
undolink = "https://{wiki}.gamepedia.com/index.php?title={filename}&action=revert&oldimage={timestamp}%21{filenamewon}".format(
wiki=settings["wiki"], filename=article_encoded, timestamp="".join(img_timestamp),
- filenamewon=article_encoded[5:])
+ filenamewon=article_encoded.split(":", 1)[1])
embed["fields"] = [{"name": _("Options"), "value": _("([preview]({link}) | [undo]({undolink}))").format(
link=embed["image"]["url"], undolink=undolink)}]
embed["title"] = _("Uploaded a new version of {name}").format(name=params["title"])
@@ -375,12 +385,16 @@ def webhook_formatter(action, STATIC, **params):
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
embed["title"] = _("Protected {target}").format(target=params["title"])
- params["desc"] = params["settings"] + " | " + params["desc"]
+ params["desc"] = "{settings}{cascade} | {reason}".format(settings=params["settings"],
+ cascade=_(" [cascading]") if params["cascade"] else "",
+ reason=params["desc"])
elif action == "protect/modify":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
embed["title"] = _("Changed protection level for {article}").format(article=params["title"])
- params["desc"] = params["settings"] + " | " + params["desc"]
+ params["desc"] = "{settings}{cascade} | {reason}".format(settings=params["settings"],
+ cascade=_(" [cascading]") if params["cascade"] else "",
+ reason=params["desc"])
elif action == "protect/unprotect":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
@@ -409,8 +423,11 @@ def webhook_formatter(action, STATIC, **params):
link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"])
embed["title"] = _("Imported interwiki")
elif action == "abusefilter/modify":
- link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"])
+ link = "https://{wiki}.gamepedia.com/Special:AbuseFilter/history/{number}/diff/prev/{historyid}".format(wiki=settings["wiki"], number=params["filternr"], historyid=params["historyid"])
embed["title"] = _("Edited abuse filter number {number}").format(number=params["filternr"])
+ elif action == "abusefilter/create":
+ link = "https://{wiki}.gamepedia.com/Special:AbuseFilter/{number}".format(wiki=settings["wiki"], number=params["filternr"])
+ embed["title"] = _("Created abuse filter number {number}").format(number=params["filternr"])
elif action == "merge/merge":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
@@ -467,7 +484,7 @@ def webhook_formatter(action, STATIC, **params):
embed["title"] = _("Deactivated a tag \"{tag}\"").format(tag=params["additional"]["tag"])
elif action == "suppressed":
link = "https://{wiki}.gamepedia.com/".format(wiki=settings["wiki"])
- embed["title"] = _("Action has been hidden by Gamepedia staff.")
+ embed["title"] = _("Action has been hidden by administration.")
else:
logging.warning("No entry for {event} with params: {params}".format(event=action, params=params))
embed["author"]["name"] = params["user"]
@@ -490,7 +507,7 @@ def webhook_formatter(action, STATIC, **params):
tag_displayname.append(tag)
embed["fields"].append({"name": _("Tags"), "value": ", ".join(tag_displayname)})
logging.debug("Current params in edit action: {}".format(params))
- if "changed_categories" in STATIC and STATIC["changed_categories"] is not None:
+ if "changed_categories" in STATIC and STATIC["changed_categories"] is not None and not (len(STATIC["changed_categories"]["new"]) == 0 and len(STATIC["changed_categories"]["removed"]) == 0):
if "fields" not in embed:
embed["fields"] = []
# embed["fields"].append({"name": _("Changed categories"), "value": ", ".join(params["new_categories"][0:15]) + ("" if (len(params["new_categories"]) < 15) else _(" and {} more").format(len(params["new_categories"])-14))})
@@ -503,13 +520,14 @@ def webhook_formatter(action, STATIC, **params):
send_to_discord(formatted_embed)
-def handle_discord_http(code, formatted_embed):
+def handle_discord_http(code, formatted_embed, result):
if 300 > code > 199: # message went through
return 0
- elif code == 400: # HTTP BAD REQUEST
+ elif code == 400: # HTTP BAD REQUEST result.status_code, data, result, header
logging.error(
"Following message has been rejected by Discord, please submit a bug on our bugtracker adding it:")
logging.error(formatted_embed)
+ logging.error(result.text)
return 1
elif code == 401 or code == 404: # HTTP UNAUTHORIZED AND NOT FOUND
logging.error("Webhook URL is invalid or no longer in use, please replace it with proper one.")
@@ -526,21 +544,27 @@ def handle_discord_http(code, formatted_embed):
def first_pass(
change, changed_categories): # I've decided to split the embed formatter and change handler, maybe it's more messy this way, I don't know
- if "actionhidden" in change or "suppressed" in change and "suppressed" not in settings["ignored"]:
+ if ("actionhidden" in change or "suppressed" in change) and "suppressed" not in settings["ignored"]:
webhook_formatter("suppressed",
{"timestamp": change["timestamp"], "color": settings["appearance"]["suppressed"]["color"],
"icon": settings["appearance"]["suppressed"]["icon"]}, user=change["user"])
return
- LinkParser.feed(change["parsedcomment"])
- # parsedcomment = (BeautifulSoup(change["parsedcomment"], "lxml")).get_text()
- parsedcomment = LinkParser.new_string
- LinkParser.new_string = ""
+ if "commenthidden" not in change:
+ LinkParser.feed(change["parsedcomment"])
+ # parsedcomment = (BeautifulSoup(change["parsedcomment"], "lxml")).get_text()
+ parsedcomment = LinkParser.new_string
+ LinkParser.new_string = ""
+ else:
+ parsedcomment = _("~~hidden~~")
logging.debug(change)
STATIC_VARS = {"timestamp": change["timestamp"], "tags": change["tags"], "redirect": (True if "redirect" in change else False), "ipaction": (True if "anon" in change else False), "changed_categories": changed_categories}
if not parsedcomment:
parsedcomment = _("No description provided")
+ parsedcomment = re.sub(r"(`|_|\*|~|<|>|{|})", "\\\\\\1", parsedcomment, 0)
if change["type"] == "edit" and "edit" not in settings["ignored"]:
logging.debug("List of categories in first_pass: {}".format(changed_categories))
+ if "userhidden" in change:
+ change["user"] = _("hidden")
STATIC_VARS = {**STATIC_VARS, **{"color": settings["appearance"]["edit"]["color"],
"icon": settings["appearance"]["edit"]["icon"]}}
webhook_formatter("edit", STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
@@ -559,10 +583,10 @@ def first_pass(
logging.error("No value in the settings has been given for {}".format(combination))
if combination == "protect/protect":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
- settings=change["logparams"]["description"])
+ settings=change["logparams"]["description"], cascade=True if "cascade" in change["logparams"] else False)
elif combination == "protect/modify":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
- settings=change["logparams"]["description"])
+ settings=change["logparams"]["description"], cascade=True if "cascade" in change["logparams"] else False)
elif combination == "protect/unprotect":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
elif combination == "upload/overwrite":
@@ -616,6 +640,9 @@ def first_pass(
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
old_groups=change["logparams"]["oldgroups"], new_groups=change["logparams"]["newgroups"])
elif combination == "abusefilter/modify":
+ webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment,
+ filternr=change["logparams"]['newId'], historyid=change["logparams"]["historyId"])
+ elif combination == "abusefilter/create":
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment,
filternr=change["logparams"]['newId'])
elif combination == "interwiki/iw_add":
@@ -744,21 +771,25 @@ def day_overview(): # time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.
if result[1] == 1:
activity = defaultdict(dict)
hours = defaultdict(dict)
+ articles = defaultdict(dict)
edits = 0
files = 0
admin = 0
changed_bytes = 0
new_articles = 0
+ active_articles = []
if not result[0] and not settings["send_empty_overview"]:
return # no changes in this day
for item in result[0]:
+ if "actionhidden" in item or "suppressed" in item or "userhidden" in item:
+ continue # while such actions have type value (edit/new/log) many other values are hidden and therefore can crash with key error, let's not process such events
activity = add_to_dict(activity, item["user"])
hours = add_to_dict(hours, datetime.datetime.strptime(item["timestamp"], "%Y-%m-%dT%H:%M:%SZ").hour)
- if "actionhidden" in item or "suppressed" in item:
- continue # while such actions have type value (edit/new/log) many other values are hidden and therefore can crash with key error, let's not process such events
if item["type"] == "edit":
edits += 1
changed_bytes += item["newlen"] - item["oldlen"]
+ if item["ns"] == 0:
+ articles = add_to_dict(articles, item["title"])
if item["type"] == "new":
if item["ns"] == 0:
new_articles += 1
@@ -776,11 +807,14 @@ def day_overview(): # time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.
embed["author"]["name"] = settings["wikiname"]
embed["author"]["url"] = "https://{wiki}.gamepedia.com/".format(wiki=settings["wiki"])
if activity:
- v = activity.values()
+ #v = activity.values()
active_users = []
for user, numberu in Counter(activity).most_common(3): # find most active users
active_users.append(user + ngettext(" ({} action)", " ({} actions)", numberu).format(numberu))
# the_one = random.choice(active_users)
+ #v = articles.values()
+ for article, numbere in Counter(articles).most_common(3): # find most active users
+ active_articles.append(article + ngettext(" ({} edit)", " ({} edits)", numbere).format(numbere))
v = hours.values()
active_hours = []
for hour, numberh in Counter(hours).most_common(list(v).count(max(v))): # find most active hours
@@ -791,9 +825,12 @@ def day_overview(): # time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.
active_hours = [_("But nobody came")]
usramount = ""
houramount = ""
+ if not active_articles:
+ active_articles = [_("But nobody came")]
embed["fields"] = []
fields = (
(ngettext("Most active user", "Most active users", len(active_users)), ', '.join(active_users)),
+ (ngettext("Most edited article", "Most edited articles", len(active_articles)), ', '.join(active_articles)),
(_("Edits made"), edits), (_("New files"), files), (_("Admin actions"), admin),
(_("Bytes changed"), changed_bytes), (_("New articles"), new_articles),
(_("Unique contributors"), str(len(activity))),
@@ -809,17 +846,15 @@ def day_overview(): # time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.
class Recent_Changes_Class(object):
- starttime = time.time()
ids = []
map_ips = {}
recent_id = 0
downtimecredibility = 0
last_downtime = 0
- clock = 0
tags = {}
groups = {}
- unsent_messages = []
streak = -1
+ unsent_messages = []
mw_messages = {}
session = requests.Session()
session.headers.update(settings["header"])
@@ -1013,6 +1048,9 @@ class Recent_Changes_Class(object):
self.downtime_controller()
return None
else:
+ if 499 < request.status_code < 600:
+ self.downtime_controller()
+ return None
return request
def check_connection(self, looped=False):
@@ -1060,14 +1098,17 @@ class Recent_Changes_Class(object):
startup_info = safe_read(self.safe_request(
"https://{wiki}.gamepedia.com/api.php?action=query&format=json&uselang=content&list=tags|recentchanges&meta=allmessages&utf8=1&tglimit=max&tgprop=name|displayname&ammessages=recentchanges-page-added-to-category|recentchanges-page-removed-from-category&amenableparser=1&amincludelocal=1".format(
wiki=settings["wiki"])), "query")
- if "tags" in startup_info and "allmessages" in startup_info:
- for tag in startup_info["tags"]:
- self.tags[tag["name"]] = (BeautifulSoup(tag["displayname"], "lxml")).get_text()
- for message in startup_info["allmessages"]:
- self.mw_messages[message["name"]] = message["*"]
+ if startup_info:
+ if "tags" in startup_info and "allmessages" in startup_info:
+ for tag in startup_info["tags"]:
+ self.tags[tag["name"]] = (BeautifulSoup(tag["displayname"], "lxml")).get_text()
+ for message in startup_info["allmessages"]:
+ self.mw_messages[message["name"]] = message["*"]
+ else:
+ logging.warning("Could not retrieve initial wiki information. Some features may not work correctly!")
+ logging.debug(startup_info)
else:
- logging.warning("Could not retrieve initial wiki information. Some features may not work correctly!")
- logging.debug(startup_info)
+ logging.error("Could not retrieve initial wiki information. Possibly internet connection issue?")
recent_changes = Recent_Changes_Class()
diff --git a/settings.json.example b/settings.json.example
index 5e71561..145b7c2 100644
--- a/settings.json.example
+++ b/settings.json.example
@@ -3,7 +3,7 @@
"wiki": "minecraft",
"lang": "en",
"header": {
- "user-agent": "FrisksRcGcDw/1.4"
+ "user-agent": "FrisksRcGcDw/1.5"
},
"limit": 11,
"webhookURL": "https://discordapp.com/api/webhooks/111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
@@ -127,6 +127,10 @@
"icon":"",
"color":null
},
+ "abusefilter/create": {
+ "icon":"",
+ "color":null
+ },
"interwiki/iw_add":{
"icon":"",
"color":null