Merge branch 'testing' into 'master'

Another update

Closes #28

See merge request piotrex43/RcGcDw!24
This commit is contained in:
Frisk 2018-10-09 14:09:01 +00:00
commit 7da3649435
13 changed files with 1228 additions and 936 deletions

Binary file not shown.

View file

@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-12 11:29+0200\n" "POT-Creation-Date: 2018-10-02 01:22+0200\n"
"PO-Revision-Date: 2018-07-12 12:10+0200\n" "PO-Revision-Date: 2018-10-03 16:11+0200\n"
"Last-Translator: MarkusRost\n" "Last-Translator: MarkusRost\n"
"Language-Team: \n" "Language-Team: \n"
"Language: de\n" "Language: de\n"
@ -15,46 +15,46 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
"X-Generator: Poedit 2.0.8\n" "X-Generator: Poedit 2.1.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: rcgcdw.py:124 #: rcgcdw.py:175
msgid "(N!) " msgid "(N!) "
msgstr "(N!) " msgstr "(N!) "
#: rcgcdw.py:124 #: rcgcdw.py:176
msgid "m " msgid "m "
msgstr "K " msgstr "K "
#: rcgcdw.py:142 rcgcdw.py:168 #: rcgcdw.py:200 rcgcdw.py:232
msgid "Options" msgid "Options"
msgstr "Optionen" msgstr "Optionen"
#: rcgcdw.py:142 #: rcgcdw.py:200
#, python-brace-format #, python-brace-format
msgid "([preview]({link}) | [undo]({undolink}))" msgid "([preview]({link}) | [undo]({undolink}))"
msgstr "([Vorschau]({link}) | [zurücksetzen]({undolink}))" msgstr "([Vorschau]({link}) | [zurücksetzen]({undolink}))"
#: rcgcdw.py:143 #: rcgcdw.py:202
#, python-brace-format #, python-brace-format
msgid "Uploaded a new version of {name}" msgid "Uploaded a new version of {name}"
msgstr "Neue Dateiversion {name}" msgstr "Neue Dateiversion {name}"
#: rcgcdw.py:145 #: rcgcdw.py:204
#, python-brace-format #, python-brace-format
msgid "Uploaded {name}" msgid "Uploaded {name}"
msgstr "Neue Datei {name}" msgstr "Neue Datei {name}"
#: rcgcdw.py:158 #: rcgcdw.py:219
msgid "**No license!**" msgid "**No license!**"
msgstr "**Keine Lizenz!**" msgstr "**Keine Lizenz!**"
#: rcgcdw.py:168 #: rcgcdw.py:232
#, python-brace-format #, python-brace-format
msgid "([preview]({link}))" msgid "([preview]({link}))"
msgstr "([Vorschau]({link}))" msgstr "([Vorschau]({link}))"
#: rcgcdw.py:169 #: rcgcdw.py:233
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"{desc}\n" "{desc}\n"
@ -63,405 +63,425 @@ msgstr ""
"{desc}\n" "{desc}\n"
"Lizenz: {license}" "Lizenz: {license}"
#: rcgcdw.py:172 #: rcgcdw.py:238
#, python-brace-format #, python-brace-format
msgid "Deleted page {article}" msgid "Deleted page {article}"
msgstr "Löschte {article}" msgstr "Löschte {article}"
#: rcgcdw.py:175 #: rcgcdw.py:242
#, python-brace-format #, python-brace-format
msgid "Deleted redirect {article} by overwriting" msgid "Deleted redirect {article} by overwriting"
msgstr "Löschte die Weiterleitung {article} um Platz zu machen" msgstr "Löschte die Weiterleitung {article} um Platz zu machen"
#: rcgcdw.py:178 #: rcgcdw.py:247
msgid "No redirect has been made" msgid "No redirect has been made"
msgstr "Die Erstellung einer Weiterleitung wurde unterdrückt" msgstr "Die Erstellung einer Weiterleitung wurde unterdrückt"
#: rcgcdw.py:178 #: rcgcdw.py:249
msgid "A redirect has been made" msgid "A redirect has been made"
msgstr "Eine Weiterleitung wurde erstellt" msgstr "Eine Weiterleitung wurde erstellt"
#: rcgcdw.py:179 #: rcgcdw.py:250
#, python-brace-format #, python-brace-format
msgid "Moved {article} to {target}" msgid "Moved {article} to {target}"
msgstr "Verschob {article} nach {target}" msgstr "Verschob {article} nach {target}"
#: rcgcdw.py:182 #: rcgcdw.py:254
#, python-brace-format #, python-brace-format
msgid "Moved {article} to {title} over redirect" msgid "Moved {article} to {title} over redirect"
msgstr "Verschob {article} nach {title} und überschrieb eine Weiterleitung" msgstr "Verschob {article} nach {title} und überschrieb eine Weiterleitung"
#: rcgcdw.py:185 #: rcgcdw.py:259
#, python-brace-format #, python-brace-format
msgid "Moved protection settings from {article} to {title}" msgid "Moved protection settings from {article} to {title}"
msgstr "Verschob die Schutzeinstellungen von {article} nach {title}" msgstr "Verschob die Schutzeinstellungen von {article} nach {title}"
#: rcgcdw.py:189 #: rcgcdw.py:266
msgid "infinity and beyond" msgid "infinity and beyond"
msgstr "alle Ewigkeit" msgstr "alle Ewigkeit"
#: rcgcdw.py:190 #: rcgcdw.py:267
#, python-brace-format #, python-brace-format
msgid "Blocked {blocked_user} for {time}" msgid "Blocked {blocked_user} for {time}"
msgstr "Sperrte {blocked_user} für {time}" msgstr "Sperrte {blocked_user} für {time}"
#: rcgcdw.py:194 #: rcgcdw.py:273
#, python-brace-format #, python-brace-format
msgid "Changed block settings for {blocked_user}" msgid "Changed block settings for {blocked_user}"
msgstr "Änderte die Sperreinstellungen für {blocked_user}" msgstr "Änderte die Sperreinstellungen für {blocked_user}"
#: rcgcdw.py:198 #: rcgcdw.py:279
#, python-brace-format #, python-brace-format
msgid "Unblocked {blocked_user}" msgid "Unblocked {blocked_user}"
msgstr "Hob die Sperre von {blocked_user} auf" msgstr "Hob die Sperre von {blocked_user} auf"
#: rcgcdw.py:202 #: rcgcdw.py:284
#, python-brace-format #, python-brace-format
msgid "Left a comment on {target}'s profile" msgid "Left a comment on {target}'s profile"
msgstr "Hinterließ ein Kommentar auf dem Profil von {target}" msgstr "Hinterließ ein Kommentar auf dem Profil von {target}"
#: rcgcdw.py:206 #: rcgcdw.py:288
msgid "Left a comment on their own profile"
msgstr "Hinterließ ein Kommentar auf seinem eigenen Profil"
#: rcgcdw.py:293
#, python-brace-format #, python-brace-format
msgid "Replied to a comment on {target}'s profile" msgid "Replied to a comment on {target}'s profile"
msgstr "Antwortete auf ein Kommentar auf dem Profil von {target}" msgstr "Antwortete auf ein Kommentar auf dem Profil von {target}"
#: rcgcdw.py:210 #: rcgcdw.py:297
msgid "Replied to a comment on their own profile"
msgstr "Antwortete auf ein Kommentar auf seinem eigenen Profil"
#: rcgcdw.py:302
#, python-brace-format #, python-brace-format
msgid "Edited a comment on {target}'s profile" msgid "Edited a comment on {target}'s profile"
msgstr "Bearbeitete ein Kommentar auf dem Profil von {target}" msgstr "Bearbeitete ein Kommentar auf dem Profil von {target}"
#: rcgcdw.py:214 #: rcgcdw.py:306
msgid "Edited a comment on their own profile"
msgstr "Bearbeitete ein Kommentar auf seinem eigenen Profil"
#: rcgcdw.py:313
msgid "Location" msgid "Location"
msgstr "Wohnort" msgstr "Wohnort"
#: rcgcdw.py:216 #: rcgcdw.py:315
msgid "About me" msgid "About me"
msgstr "\"Über mich\"-Abschnitt" msgstr "\"Über mich\"-Abschnitt"
#: rcgcdw.py:218 #: rcgcdw.py:317
msgid "Google link" msgid "Google link"
msgstr "Google-Konto" msgstr "Google-Konto"
#: rcgcdw.py:220 #: rcgcdw.py:319
msgid "Facebook link" msgid "Facebook link"
msgstr "Facebook-Seite" msgstr "Facebook-Seite"
#: rcgcdw.py:222 #: rcgcdw.py:321
msgid "Twitter link" msgid "Twitter link"
msgstr "Twitter-Benutzernamen" msgstr "Twitter-Benutzernamen"
#: rcgcdw.py:224 #: rcgcdw.py:323
msgid "Reddit link" msgid "Reddit link"
msgstr "Reddit-Benutzernamen" msgstr "Reddit-Benutzernamen"
#: rcgcdw.py:226 #: rcgcdw.py:325
msgid "Twitch link" msgid "Twitch link"
msgstr "Twitch-Account" msgstr "Twitch-Account"
#: rcgcdw.py:228 #: rcgcdw.py:327
msgid "PSN link" msgid "PSN link"
msgstr "PSN-Account" msgstr "PSN-Account"
#: rcgcdw.py:230 #: rcgcdw.py:329
msgid "VK link" msgid "VK link"
msgstr "VK-Account" msgstr "VK-Account"
#: rcgcdw.py:232 #: rcgcdw.py:331
msgid "XVL link" msgid "XVL link"
msgstr "Xbox-Live-Tag" msgstr "Xbox-Live-Tag"
#: rcgcdw.py:234 #: rcgcdw.py:333
msgid "Steam link" msgid "Steam link"
msgstr "Steam-Account" msgstr "Steam-Account"
#: rcgcdw.py:236 #: rcgcdw.py:335
msgid "Unknown" msgid "Unknown"
msgstr "Unbekannt" msgstr "Unbekannt"
#: rcgcdw.py:237 #: rcgcdw.py:336
#, python-brace-format #, python-brace-format
msgid "Edited {target}'s profile" msgid "Edited {target}'s profile"
msgstr "Bearbeitete das Profil von {target}" msgstr "Bearbeitete das Profil von {target}"
#: rcgcdw.py:238 #: rcgcdw.py:337
msgid "Edited their own profile"
msgstr "Bearbeitete sein eigenes Profil"
#: rcgcdw.py:338
#, python-brace-format #, python-brace-format
msgid "{field} field changed to: {desc}" msgid "{field} field changed to: {desc}"
msgstr "{field} geändert zu: {desc}" msgstr "{field} geändert zu: {desc}"
#: rcgcdw.py:242 #: rcgcdw.py:343
#, python-brace-format #, python-brace-format
msgid "Deleted a comment on {target}'s profile" msgid "Deleted a comment on {target}'s profile"
msgstr "Löschte ein Kommentar auf dem Profil von {target}" msgstr "Löschte ein Kommentar auf dem Profil von {target}"
#: rcgcdw.py:246 #: rcgcdw.py:347
#, python-brace-format #, python-brace-format
msgid "Changed group membership for {target}" msgid "Changed group membership for {target}"
msgstr "Änderte die Gruppenzugehörigkeit von {target}" msgstr "Änderte die Gruppenzugehörigkeit von {target}"
#: rcgcdw.py:248 #: rcgcdw.py:349
msgid "System" msgid "System"
msgstr "System" msgstr "System"
#: rcgcdw.py:250 #: rcgcdw.py:351
#, python-brace-format #, python-brace-format
msgid "{target} got autopromoted to a new usergroup" msgid "{target} got autopromoted to a new usergroup"
msgstr "{target} got autopromoted to a new usergroup" msgstr "{target} got autopromoted to a new usergroup"
#: rcgcdw.py:260 rcgcdw.py:262 #: rcgcdw.py:362 rcgcdw.py:364
msgid "none" msgid "none"
msgstr "keine" msgstr "keine"
#: rcgcdw.py:263 rcgcdw.py:385 #: rcgcdw.py:365 rcgcdw.py:527
msgid "No description provided" msgid "No description provided"
msgstr "Keine Zusammenfassung angegeben" msgstr "Keine Zusammenfassung angegeben"
#: rcgcdw.py:264 #: rcgcdw.py:366
#, python-brace-format #, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr "Änderte die Gruppenzugehörigkeit von {old_groups} auf {new_groups}{reason}" msgstr "Änderte die Gruppenzugehörigkeit von {old_groups} auf {new_groups}{reason}"
#: rcgcdw.py:267 #: rcgcdw.py:371
#, python-brace-format #, python-brace-format
msgid "Protected {target}" msgid "Protected {target}"
msgstr "Schützte {target}" msgstr "Schützte {target}"
#: rcgcdw.py:271 #: rcgcdw.py:376
#, python-brace-format #, python-brace-format
msgid "Changed protection level for {article}" msgid "Changed protection level for {article}"
msgstr "Änderte den Schutzstatus von {article}" msgstr "Änderte den Schutzstatus von {article}"
#: rcgcdw.py:275 #: rcgcdw.py:381
#, python-brace-format #, python-brace-format
msgid "Removed protection from {article}" msgid "Removed protection from {article}"
msgstr "Entfernte den Schutz von {article}" msgstr "Entfernte den Schutz von {article}"
#: rcgcdw.py:279 #: rcgcdw.py:386
#, python-brace-format #, python-brace-format
msgid "Changed visibility of revision on page {article} " msgid "Changed visibility of revision on page {article} "
msgid_plural "Changed visibility of {amount} revisions on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} "
msgstr[0] "Änderte die Sichtbarkeit einer Versionen von {article} " msgstr[0] "Änderte die Sichtbarkeit einer Versionen von {article} "
msgstr[1] "Änderte die Sichtbarkeit von {amount} Versionen von {article} " msgstr[1] "Änderte die Sichtbarkeit von {amount} Versionen von {article} "
#: rcgcdw.py:282 #: rcgcdw.py:392
#, python-brace-format #, python-brace-format
msgid "Imported {article} with {count} revision" msgid "Imported {article} with {count} revision"
msgid_plural "Imported {article} with {count} revisions" msgid_plural "Imported {article} with {count} revisions"
msgstr[0] "Importierte {article} mit einer Version" msgstr[0] "Importierte {article} mit einer Version"
msgstr[1] "Importierte {article} mit {count} Versionen" msgstr[1] "Importierte {article} mit {count} Versionen"
#: rcgcdw.py:285 #: rcgcdw.py:398
#, python-brace-format #, python-brace-format
msgid "Restored {article}" msgid "Restored {article}"
msgstr "Stellte {article} wieder her" msgstr "Stellte {article} wieder her"
#: rcgcdw.py:288 #: rcgcdw.py:401
msgid "Changed visibility of log events" msgid "Changed visibility of log events"
msgstr "Änderte die Sichtbarkeit eines Logbucheintrags" msgstr "Änderte die Sichtbarkeit eines Logbucheintrags"
#: rcgcdw.py:291 #: rcgcdw.py:404
msgid "Imported interwiki" msgid "Imported interwiki"
msgstr "Importierte Interwiki" msgstr "Importierte Interwiki"
#: rcgcdw.py:294 #: rcgcdw.py:407
#, python-brace-format #, python-brace-format
msgid "Edited abuse filter number {number}" msgid "Edited abuse filter number {number}"
msgstr "Änderte Missbrauchsfilter {number}" msgstr "Änderte Missbrauchsfilter {number}"
#: rcgcdw.py:297 #: rcgcdw.py:411
#, python-brace-format #, python-brace-format
msgid "Merged revision histories of {article} into {dest}" msgid "Merged revision histories of {article} into {dest}"
msgstr "Vereinigte Versionsgeschichten von {article} in {dest}" msgstr "Vereinigte Versionsgeschichten von {article} in {dest}"
#: rcgcdw.py:300 #: rcgcdw.py:415
msgid "Added an entry to the interwiki table" msgid "Added an entry to the interwiki table"
msgstr "Fügte ein Interwiki-Präfix hinzu" msgstr "Fügte ein Interwiki-Präfix hinzu"
#: rcgcdw.py:301 rcgcdw.py:305 #: rcgcdw.py:416 rcgcdw.py:422
#, python-brace-format #, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}" msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr "Präfix: {prefix}, URL: {website} | {desc}" msgstr "Präfix: {prefix}, URL: {website} | {desc}"
#: rcgcdw.py:304 #: rcgcdw.py:421
msgid "Edited an entry in interwiki table" msgid "Edited an entry in interwiki table"
msgstr "Änderte ein Interwiki-Präfix" msgstr "Änderte ein Interwiki-Präfix"
#: rcgcdw.py:308 #: rcgcdw.py:427
msgid "Deleted an entry in interwiki table" msgid "Deleted an entry in interwiki table"
msgstr "Entfernte ein Interwiki-Präfix" msgstr "Entfernte ein Interwiki-Präfix"
#: rcgcdw.py:309 #: rcgcdw.py:428
#, python-brace-format #, python-brace-format
msgid "Prefix: {prefix} | {desc}" msgid "Prefix: {prefix} | {desc}"
msgstr "Präfix: {prefix} | {desc}" msgstr "Präfix: {prefix} | {desc}"
#: rcgcdw.py:312 #: rcgcdw.py:432
#, python-brace-format #, python-brace-format
msgid "Changed the content model of the page {article}" msgid "Changed the content model of the page {article}"
msgstr "Änderte das Inhaltsmodell von {article}" msgstr "Änderte das Inhaltsmodell von {article}"
#: rcgcdw.py:313 #: rcgcdw.py:433
#, python-brace-format #, python-brace-format
msgid "Model changed from {old} to {new}: {reason}" msgid "Model changed from {old} to {new}: {reason}"
msgstr "Modell geändert von {old} zu {new}: {reason}" msgstr "Modell geändert von {old} zu {new}: {reason}"
#: rcgcdw.py:316 #: rcgcdw.py:439
#, python-brace-format #, python-brace-format
msgid "Edited the sprite for {article}" msgid "Edited the sprite for {article}"
msgstr "Edited the sprite for {article}" msgstr "Edited the sprite for {article}"
#: rcgcdw.py:319 #: rcgcdw.py:443
#, python-brace-format #, python-brace-format
msgid "Created the sprite sheet for {article}" msgid "Created the sprite sheet for {article}"
msgstr "Created the sprite sheet for {article}" msgstr "Created the sprite sheet for {article}"
#: rcgcdw.py:322 #: rcgcdw.py:447
#, python-brace-format #, python-brace-format
msgid "Edited the slice for {article}" msgid "Edited the slice for {article}"
msgstr "Edited the slice for {article}" msgstr "Edited the slice for {article}"
#: rcgcdw.py:325 #: rcgcdw.py:450
#, python-brace-format #, python-brace-format
msgid "Created a tag \"{tag}\"" msgid "Created a tag \"{tag}\""
msgstr "Erstellte die Markierung \"{tag}\"" msgstr "Erstellte die Markierung \"{tag}\""
#: rcgcdw.py:329 #: rcgcdw.py:454
#, python-brace-format #, python-brace-format
msgid "Deleted a tag \"{tag}\"" msgid "Deleted a tag \"{tag}\""
msgstr "Löschte die Markierung \"{tag}\"" msgstr "Löschte die Markierung \"{tag}\""
#: rcgcdw.py:333 #: rcgcdw.py:458
#, python-brace-format #, python-brace-format
msgid "Activated a tag \"{tag}\"" msgid "Activated a tag \"{tag}\""
msgstr "Aktivierte die Markierung \"{tag}\"" msgstr "Aktivierte die Markierung \"{tag}\""
#: rcgcdw.py:336 #: rcgcdw.py:461
#, python-brace-format #, python-brace-format
msgid "Deactivated a tag \"{tag}\"" msgid "Deactivated a tag \"{tag}\""
msgstr "Deaktivierte die Markierung \"{tag}\"" msgstr "Deaktivierte die Markierung \"{tag}\""
#: rcgcdw.py:357 #: rcgcdw.py:464
msgid "Action has been hidden by Gamepedia staff."
msgstr "Action has been hidden by Gamepedia staff."
#: rcgcdw.py:485
msgid "Tags" msgid "Tags"
msgstr "Markierungen" msgstr "Markierungen"
#: rcgcdw.py:480 #: rcgcdw.py:656
msgid "Unable to process the event" msgid "Unable to process the event"
msgstr "Ereignis kann nicht verabreitet werden" msgstr "Ereignis kann nicht verabreitet werden"
#: rcgcdw.py:480 #: rcgcdw.py:656
msgid "error" msgid "error"
msgstr "Fehler" msgstr "Fehler"
#: rcgcdw.py:560 #: rcgcdw.py:751
msgid "Daily overview" msgid "Daily overview"
msgstr "Tägliche Übersicht" msgstr "Tägliche Übersicht"
#: rcgcdw.py:576 #: rcgcdw.py:767
msgid " ({} action)" msgid " ({} action)"
msgid_plural " ({} actions)" msgid_plural " ({} actions)"
msgstr[0] " (eine Aktion)" msgstr[0] " (eine Aktion)"
msgstr[1] " ({} Aktionen)" msgstr[1] " ({} Aktionen)"
#: rcgcdw.py:577 #: rcgcdw.py:768
msgid " UTC ({} action)" msgid " UTC ({} action)"
msgid_plural " UTC ({} actions)" msgid_plural " UTC ({} actions)"
msgstr[0] " UTC (eine Aktion)" msgstr[0] " UTC (eine Aktion)"
msgstr[1] " UTC ({} Aktionen)" msgstr[1] " UTC ({} Aktionen)"
#: rcgcdw.py:579 rcgcdw.py:580 #: rcgcdw.py:770 rcgcdw.py:771
msgid "But nobody came" msgid "But nobody came"
msgstr "Keine Aktivität" msgstr "Keine Aktivität"
#: rcgcdw.py:584 #: rcgcdw.py:776
msgid "Most active user" msgid "Most active user"
msgid_plural "Most active users" msgid_plural "Most active users"
msgstr[0] "Aktivster Benutzer" msgstr[0] "Aktivster Benutzer"
msgstr[1] "Aktivste Benutzer" msgstr[1] "Aktivste Benutzer"
#: rcgcdw.py:584 #: rcgcdw.py:777
msgid "Edits made" msgid "Edits made"
msgstr "Bearbeitungen" msgstr "Bearbeitungen"
#: rcgcdw.py:584 #: rcgcdw.py:777
msgid "New files" msgid "New files"
msgstr "Neue Dateien" msgstr "Neue Dateien"
#: rcgcdw.py:584 #: rcgcdw.py:777
msgid "Admin actions" msgid "Admin actions"
msgstr "Admin-Aktionen" msgstr "Admin-Aktionen"
#: rcgcdw.py:584 #: rcgcdw.py:778
msgid "Bytes changed" msgid "Bytes changed"
msgstr "Bytes geändert" msgstr "Bytes geändert"
#: rcgcdw.py:584 #: rcgcdw.py:778
msgid "New articles" msgid "New articles"
msgstr "Neue Artikel" msgstr "Neue Artikel"
#: rcgcdw.py:584 #: rcgcdw.py:779
msgid "Unique contributors" msgid "Unique contributors"
msgstr "Einzelne Autoren" msgstr "Einzelne Autoren"
#: rcgcdw.py:584 #: rcgcdw.py:780
msgid "Most active hour" msgid "Most active hour"
msgid_plural "Most active hours" msgid_plural "Most active hours"
msgstr[0] "Aktivste Stunde" msgstr[0] "Aktivste Stunde"
msgstr[1] "Aktivste Stunden" msgstr[1] "Aktivste Stunden"
#: rcgcdw.py:584 #: rcgcdw.py:781
msgid "Day score" msgid "Day score"
msgstr "Tageswert" msgstr "Tageswert"
#: rcgcdw.py:674 #: rcgcdw.py:924
#, python-brace-format #, python-brace-format
msgid "Connection to {wiki} seems to be stable now." msgid "Connection to {wiki} seems to be stable now."
msgstr "{wiki} scheint wieder erreichbar zu sein." msgstr "{wiki} scheint wieder erreichbar zu sein."
#: rcgcdw.py:674 rcgcdw.py:729 #: rcgcdw.py:925 rcgcdw.py:988
msgid "Connection status" msgid "Connection status"
msgstr "Verbindungsstatus" msgstr "Verbindungsstatus"
#: rcgcdw.py:729 #: rcgcdw.py:987
#, python-brace-format #, python-brace-format
msgid "{wiki} seems to be down or unreachable." msgid "{wiki} seems to be down or unreachable."
msgstr "Das {wiki} scheint unerreichbar zu sein." msgstr "Das {wiki} scheint unerreichbar zu sein."
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "director" msgid "director"
msgstr "Direktor" msgstr "Direktor"
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "bot" msgid "bot"
msgstr "Bot" msgstr "Bot"
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "editor" msgid "editor"
msgstr "editor" msgstr "editor"
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "directors" msgid "directors"
msgstr "Direktor" msgstr "Direktor"
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "sysop" msgid "sysop"
msgstr "Administrator" msgstr "Administrator"
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "bureaucrat" msgid "bureaucrat"
msgstr "Bürokrat" msgstr "Bürokrat"
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "reviewer" msgid "reviewer"
msgstr "reviewer" msgstr "reviewer"
#: rcgcdw.py:751 #: rcgcdw.py:1016
msgid "autoreview" msgid "autoreview"
msgstr "autoreview" msgstr "autoreview"
#: rcgcdw.py:751 #: rcgcdw.py:1016
msgid "autopatrol" msgid "autopatrol"
msgstr "autopatrol" msgstr "autopatrol"
#: rcgcdw.py:751 #: rcgcdw.py:1016
msgid "wiki_guardian" msgid "wiki_guardian"
msgstr "Wiki Guardian" msgstr "Wiki Guardian"

Binary file not shown.

View file

@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-09-02 11:39+0200\n" "POT-Creation-Date: 2018-10-02 01:22+0200\n"
"PO-Revision-Date: 2018-09-02 11:43+0200\n" "PO-Revision-Date: 2018-10-03 16:01+0200\n"
"Last-Translator: Frisk <piotrex43@protonmail.ch>\n" "Last-Translator: Frisk <piotrex43@protonmail.ch>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: en\n" "Language: en\n"
@ -18,43 +18,43 @@ msgstr ""
"X-Generator: Poedit 2.1.1\n" "X-Generator: Poedit 2.1.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: rcgcdw.py:150 #: rcgcdw.py:175
msgid "(N!) " msgid "(N!) "
msgstr "(N!) " msgstr "(N!) "
#: rcgcdw.py:150 #: rcgcdw.py:176
msgid "m " msgid "m "
msgstr "m " msgstr "m "
#: rcgcdw.py:168 rcgcdw.py:194 #: rcgcdw.py:200 rcgcdw.py:232
msgid "Options" msgid "Options"
msgstr "Options" msgstr "Options"
#: rcgcdw.py:168 #: rcgcdw.py:200
#, python-brace-format #, python-brace-format
msgid "([preview]({link}) | [undo]({undolink}))" msgid "([preview]({link}) | [undo]({undolink}))"
msgstr "([preview]({link}) | [undo]({undolink}))" msgstr "([preview]({link}) | [undo]({undolink}))"
#: rcgcdw.py:169 #: rcgcdw.py:202
#, python-brace-format #, python-brace-format
msgid "Uploaded a new version of {name}" msgid "Uploaded a new version of {name}"
msgstr "Uploaded a new version of {name}" msgstr "Uploaded a new version of {name}"
#: rcgcdw.py:171 #: rcgcdw.py:204
#, python-brace-format #, python-brace-format
msgid "Uploaded {name}" msgid "Uploaded {name}"
msgstr "Uploaded {name}" msgstr "Uploaded {name}"
#: rcgcdw.py:184 #: rcgcdw.py:219
msgid "**No license!**" msgid "**No license!**"
msgstr "**No license!**" msgstr "**No license!**"
#: rcgcdw.py:194 #: rcgcdw.py:232
#, python-brace-format #, python-brace-format
msgid "([preview]({link}))" msgid "([preview]({link}))"
msgstr "([preview]({link}))" msgstr "([preview]({link}))"
#: rcgcdw.py:195 #: rcgcdw.py:233
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"{desc}\n" "{desc}\n"
@ -63,408 +63,424 @@ msgstr ""
"{desc}\n" "{desc}\n"
"License: {license}" "License: {license}"
#: rcgcdw.py:198 #: rcgcdw.py:238
#, python-brace-format #, python-brace-format
msgid "Deleted page {article}" msgid "Deleted page {article}"
msgstr "Deleted page {article}" msgstr "Deleted page {article}"
#: rcgcdw.py:201 #: rcgcdw.py:242
#, python-brace-format #, python-brace-format
msgid "Deleted redirect {article} by overwriting" msgid "Deleted redirect {article} by overwriting"
msgstr "Deleted redirect {article} by overwriting" msgstr "Deleted redirect {article} by overwriting"
#: rcgcdw.py:204 #: rcgcdw.py:247
msgid "No redirect has been made" msgid "No redirect has been made"
msgstr "No redirect has been made" msgstr "No redirect has been made"
#: rcgcdw.py:204 #: rcgcdw.py:249
msgid "A redirect has been made" msgid "A redirect has been made"
msgstr "A redirect has been made" msgstr "A redirect has been made"
#: rcgcdw.py:205 #: rcgcdw.py:250
#, python-brace-format #, python-brace-format
msgid "Moved {article} to {target}" msgid "Moved {article} to {target}"
msgstr "Moved {article} to {target}" msgstr "Moved {article} to {target}"
#: rcgcdw.py:208 #: rcgcdw.py:254
#, python-brace-format #, python-brace-format
msgid "Moved {article} to {title} over redirect" msgid "Moved {article} to {title} over redirect"
msgstr "Moved {article} to {title} over redirect" msgstr "Moved {article} to {title} over redirect"
#: rcgcdw.py:211 #: rcgcdw.py:259
#, python-brace-format #, python-brace-format
msgid "Moved protection settings from {article} to {title}" msgid "Moved protection settings from {article} to {title}"
msgstr "Moved protection settings from {article} to {title}" msgstr "Moved protection settings from {article} to {title}"
#: rcgcdw.py:215 #: rcgcdw.py:266
msgid "infinity and beyond" msgid "infinity and beyond"
msgstr "infinity and beyond" msgstr "infinity and beyond"
#: rcgcdw.py:216 #: rcgcdw.py:267
#, python-brace-format #, python-brace-format
msgid "Blocked {blocked_user} for {time}" msgid "Blocked {blocked_user} for {time}"
msgstr "Blocked {blocked_user} for {time}" msgstr "Blocked {blocked_user} for {time}"
#: rcgcdw.py:220 #: rcgcdw.py:273
#, python-brace-format #, python-brace-format
msgid "Changed block settings for {blocked_user}" msgid "Changed block settings for {blocked_user}"
msgstr "Changed block settings for {blocked_user}" msgstr "Changed block settings for {blocked_user}"
#: rcgcdw.py:224 #: rcgcdw.py:279
#, python-brace-format #, python-brace-format
msgid "Unblocked {blocked_user}" msgid "Unblocked {blocked_user}"
msgstr "Unblocked {blocked_user}" msgstr "Unblocked {blocked_user}"
#: rcgcdw.py:228 #: rcgcdw.py:284
#, python-brace-format #, python-brace-format
msgid "Left a comment on {target}'s profile" msgid "Left a comment on {target}'s profile"
msgstr "Left a comment on {target}'s profile" msgstr "Left a comment on {target}'s profile"
#: rcgcdw.py:232 #: rcgcdw.py:288
msgid "Left a comment on their own profile"
msgstr "Left a comment on their own profile"
#: rcgcdw.py:293
#, python-brace-format #, python-brace-format
msgid "Replied to a comment on {target}'s profile" msgid "Replied to a comment on {target}'s profile"
msgstr "Replied to a comment on {target}'s profile" msgstr "Replied to a comment on {target}'s profile"
#: rcgcdw.py:236 #: rcgcdw.py:297
msgid "Replied to a comment on their own profile"
msgstr "Replied to a comment on their own profile"
#: rcgcdw.py:302
#, python-brace-format #, python-brace-format
msgid "Edited a comment on {target}'s profile" msgid "Edited a comment on {target}'s profile"
msgstr "Edited a comment on {target}'s profile" msgstr "Edited a comment on {target}'s profile"
#: rcgcdw.py:240 #: rcgcdw.py:306
msgid "Edited a comment on their own profile"
msgstr "Edited a comment on their own profile"
#: rcgcdw.py:313
msgid "Location" msgid "Location"
msgstr "Location" msgstr "Location"
#: rcgcdw.py:242 #: rcgcdw.py:315
msgid "About me" msgid "About me"
msgstr "About me" msgstr "About me"
#: rcgcdw.py:244 #: rcgcdw.py:317
msgid "Google link" msgid "Google link"
msgstr "Google link" msgstr "Google link"
#: rcgcdw.py:246 #: rcgcdw.py:319
msgid "Facebook link" msgid "Facebook link"
msgstr "Facebook link" msgstr "Facebook link"
#: rcgcdw.py:248 #: rcgcdw.py:321
msgid "Twitter link" msgid "Twitter link"
msgstr "Twitter link" msgstr "Twitter link"
#: rcgcdw.py:250 #: rcgcdw.py:323
msgid "Reddit link" msgid "Reddit link"
msgstr "Reddit link" msgstr "Reddit link"
#: rcgcdw.py:252 #: rcgcdw.py:325
msgid "Twitch link" msgid "Twitch link"
msgstr "Twitch link" msgstr "Twitch link"
#: rcgcdw.py:254 #: rcgcdw.py:327
msgid "PSN link" msgid "PSN link"
msgstr "PSN link" msgstr "PSN link"
#: rcgcdw.py:256 #: rcgcdw.py:329
msgid "VK link" msgid "VK link"
msgstr "VK link" msgstr "VK link"
#: rcgcdw.py:258 #: rcgcdw.py:331
msgid "XVL link" msgid "XVL link"
msgstr "XVL link" msgstr "XVL link"
#: rcgcdw.py:260 #: rcgcdw.py:333
msgid "Steam link" msgid "Steam link"
msgstr "Steam link" msgstr "Steam link"
#: rcgcdw.py:262 #: rcgcdw.py:335
msgid "Unknown" msgid "Unknown"
msgstr "Unknown" msgstr "Unknown"
#: rcgcdw.py:263 #: rcgcdw.py:336
#, python-brace-format #, python-brace-format
msgid "Edited {target}'s profile" msgid "Edited {target}'s profile"
msgstr "Edited {target}'s profile" msgstr "Edited {target}'s profile"
#: rcgcdw.py:264 #: rcgcdw.py:337
msgid "Edited their own profile"
msgstr "Edited their own profile"
#: rcgcdw.py:338
#, python-brace-format #, python-brace-format
msgid "{field} field changed to: {desc}" msgid "{field} field changed to: {desc}"
msgstr "{field} field changed to: {desc}" msgstr "{field} field changed to: {desc}"
#: rcgcdw.py:268 #: rcgcdw.py:343
#, python-brace-format #, python-brace-format
msgid "Deleted a comment on {target}'s profile" msgid "Deleted a comment on {target}'s profile"
msgstr "Deleted a comment on {target}'s profile" msgstr "Deleted a comment on {target}'s profile"
#: rcgcdw.py:272 #: rcgcdw.py:347
#, python-brace-format #, python-brace-format
msgid "Changed group membership for {target}" msgid "Changed group membership for {target}"
msgstr "Changed group membership for {target}" msgstr "Changed group membership for {target}"
#: rcgcdw.py:274 #: rcgcdw.py:349
msgid "System" msgid "System"
msgstr "System" msgstr "System"
#: rcgcdw.py:276 #: rcgcdw.py:351
#, python-brace-format #, python-brace-format
msgid "{target} got autopromoted to a new usergroup" msgid "{target} got autopromoted to a new usergroup"
msgstr "{target} got autopromoted to a new usergroup" msgstr "{target} got autopromoted to a new usergroup"
#: rcgcdw.py:286 rcgcdw.py:288 #: rcgcdw.py:362 rcgcdw.py:364
msgid "none" msgid "none"
msgstr "none" msgstr "none"
#: rcgcdw.py:289 rcgcdw.py:420 #: rcgcdw.py:365 rcgcdw.py:527
msgid "No description provided" msgid "No description provided"
msgstr "No description provided" msgstr "No description provided"
#: rcgcdw.py:290 #: rcgcdw.py:366
#, python-brace-format #, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr "Groups changed from {old_groups} to {new_groups}{reason}" msgstr "Groups changed from {old_groups} to {new_groups}{reason}"
#: rcgcdw.py:293 #: rcgcdw.py:371
#, python-brace-format #, python-brace-format
msgid "Protected {target}" msgid "Protected {target}"
msgstr "Protected {target}" msgstr "Protected {target}"
#: rcgcdw.py:297 #: rcgcdw.py:376
#, python-brace-format #, python-brace-format
msgid "Changed protection level for {article}" msgid "Changed protection level for {article}"
msgstr "Changed protection level for {article}" msgstr "Changed protection level for {article}"
#: rcgcdw.py:301 #: rcgcdw.py:381
#, python-brace-format #, python-brace-format
msgid "Removed protection from {article}" msgid "Removed protection from {article}"
msgstr "Removed protection from {article}" msgstr "Removed protection from {article}"
#: rcgcdw.py:305 #: rcgcdw.py:386
#, python-brace-format #, python-brace-format
msgid "Changed visibility of revision on page {article} " msgid "Changed visibility of revision on page {article} "
msgid_plural "Changed visibility of {amount} revisions on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} "
msgstr[0] "Changed visibility of revision on page {article} " msgstr[0] "Changed visibility of revision on page {article} "
msgstr[1] "Changed visibility of {amount} revisions on page {article} " msgstr[1] "Changed visibility of {amount} revisions on page {article} "
#: rcgcdw.py:308 #: rcgcdw.py:392
#, python-brace-format #, python-brace-format
msgid "Imported {article} with {count} revision" msgid "Imported {article} with {count} revision"
msgid_plural "Imported {article} with {count} revisions" msgid_plural "Imported {article} with {count} revisions"
msgstr[0] "Imported {article} with {count} revision" msgstr[0] "Imported {article} with {count} revision"
msgstr[1] "Imported {article} with {count} revisions" msgstr[1] "Imported {article} with {count} revisions"
#: rcgcdw.py:311 #: rcgcdw.py:398
#, python-brace-format #, python-brace-format
msgid "Restored {article}" msgid "Restored {article}"
msgstr "Restored {article}" msgstr "Restored {article}"
#: rcgcdw.py:314 #: rcgcdw.py:401
msgid "Changed visibility of log events" msgid "Changed visibility of log events"
msgstr "Changed visibility of log events" msgstr "Changed visibility of log events"
#: rcgcdw.py:317 #: rcgcdw.py:404
msgid "Imported interwiki" msgid "Imported interwiki"
msgstr "Imported interwiki" msgstr "Imported interwiki"
#: rcgcdw.py:320 #: rcgcdw.py:407
#, python-brace-format #, python-brace-format
msgid "Edited abuse filter number {number}" msgid "Edited abuse filter number {number}"
msgstr "Edited abuse filter number {number}" msgstr "Edited abuse filter number {number}"
#: rcgcdw.py:323 #: rcgcdw.py:411
#, python-brace-format #, python-brace-format
msgid "Merged revision histories of {article} into {dest}" msgid "Merged revision histories of {article} into {dest}"
msgstr "Merged revision histories of {article} into {dest}" msgstr "Merged revision histories of {article} into {dest}"
#: rcgcdw.py:326 #: rcgcdw.py:415
msgid "Added an entry to the interwiki table" msgid "Added an entry to the interwiki table"
msgstr "Added an entry to the interwiki table" msgstr "Added an entry to the interwiki table"
#: rcgcdw.py:327 rcgcdw.py:331 #: rcgcdw.py:416 rcgcdw.py:422
#, python-brace-format #, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}" msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr "Prefix: {prefix}, website: {website} | {desc}" msgstr "Prefix: {prefix}, website: {website} | {desc}"
#: rcgcdw.py:330 #: rcgcdw.py:421
msgid "Edited an entry in interwiki table" msgid "Edited an entry in interwiki table"
msgstr "Edited an entry in interwiki table" msgstr "Edited an entry in interwiki table"
#: rcgcdw.py:334 #: rcgcdw.py:427
msgid "Deleted an entry in interwiki table" msgid "Deleted an entry in interwiki table"
msgstr "Deleted an entry in interwiki table" msgstr "Deleted an entry in interwiki table"
#: rcgcdw.py:335 #: rcgcdw.py:428
#, python-brace-format #, python-brace-format
msgid "Prefix: {prefix} | {desc}" msgid "Prefix: {prefix} | {desc}"
msgstr "Prefix: {prefix} | {desc}" msgstr "Prefix: {prefix} | {desc}"
#: rcgcdw.py:338 #: rcgcdw.py:432
#, python-brace-format #, python-brace-format
msgid "Changed the content model of the page {article}" msgid "Changed the content model of the page {article}"
msgstr "Changed the content model of the page {article}" msgstr "Changed the content model of the page {article}"
#: rcgcdw.py:339 #: rcgcdw.py:433
#, python-brace-format #, python-brace-format
msgid "Model changed from {old} to {new}: {reason}" msgid "Model changed from {old} to {new}: {reason}"
msgstr "Model changed from {old} to {new}: {reason}" msgstr "Model changed from {old} to {new}: {reason}"
#: rcgcdw.py:342 #: rcgcdw.py:439
#, python-brace-format #, python-brace-format
msgid "Edited the sprite for {article}" msgid "Edited the sprite for {article}"
msgstr "Edited the sprite for {article}" msgstr "Edited the sprite for {article}"
#: rcgcdw.py:345 #: rcgcdw.py:443
#, python-brace-format #, python-brace-format
msgid "Created the sprite sheet for {article}" msgid "Created the sprite sheet for {article}"
msgstr "Created the sprite sheet for {article}" msgstr "Created the sprite sheet for {article}"
#: rcgcdw.py:348 #: rcgcdw.py:447
#, python-brace-format #, python-brace-format
msgid "Edited the slice for {article}" msgid "Edited the slice for {article}"
msgstr "Edited the slice for {article}" msgstr "Edited the slice for {article}"
#: rcgcdw.py:351 #: rcgcdw.py:450
#, python-brace-format #, python-brace-format
msgid "Created a tag \"{tag}\"" msgid "Created a tag \"{tag}\""
msgstr "Created a tag \"{tag}\"" msgstr "Created a tag \"{tag}\""
#: rcgcdw.py:355 #: rcgcdw.py:454
#, python-brace-format #, python-brace-format
msgid "Deleted a tag \"{tag}\"" msgid "Deleted a tag \"{tag}\""
msgstr "Deleted a tag \"{tag}\"" msgstr "Deleted a tag \"{tag}\""
#: rcgcdw.py:359 #: rcgcdw.py:458
#, python-brace-format #, python-brace-format
msgid "Activated a tag \"{tag}\"" msgid "Activated a tag \"{tag}\""
msgstr "Activated a tag \"{tag}\"" msgstr "Activated a tag \"{tag}\""
#: rcgcdw.py:362 #: rcgcdw.py:461
#, python-brace-format #, python-brace-format
msgid "Deactivated a tag \"{tag}\"" msgid "Deactivated a tag \"{tag}\""
msgstr "Deactivated a tag \"{tag}\"" msgstr "Deactivated a tag \"{tag}\""
#: rcgcdw.py:365 #: rcgcdw.py:464
msgid "Action has been hidden by Gamepedia staff." msgid "Action has been hidden by Gamepedia staff."
msgstr "Action has been hidden by Gamepedia staff." msgstr "Action has been hidden by Gamepedia staff."
#: rcgcdw.py:386 #: rcgcdw.py:485
msgid "Tags" msgid "Tags"
msgstr "Tags" msgstr "Tags"
#: rcgcdw.py:515 #: rcgcdw.py:656
msgid "Unable to process the event" msgid "Unable to process the event"
msgstr "Unable to process the event" msgstr "Unable to process the event"
#: rcgcdw.py:515 #: rcgcdw.py:656
msgid "error" msgid "error"
msgstr "error" msgstr "error"
#: rcgcdw.py:597 #: rcgcdw.py:751
msgid "Daily overview" msgid "Daily overview"
msgstr "Daily overview" msgstr "Daily overview"
#: rcgcdw.py:613 #: rcgcdw.py:767
msgid " ({} action)" msgid " ({} action)"
msgid_plural " ({} actions)" msgid_plural " ({} actions)"
msgstr[0] " ({} action)" msgstr[0] " ({} action)"
msgstr[1] " ({} actions)" msgstr[1] " ({} actions)"
#: rcgcdw.py:614 #: rcgcdw.py:768
msgid " UTC ({} action)" msgid " UTC ({} action)"
msgid_plural " UTC ({} actions)" msgid_plural " UTC ({} actions)"
msgstr[0] " UTC ({} action)" msgstr[0] " UTC ({} action)"
msgstr[1] " UTC ({} actions)" msgstr[1] " UTC ({} actions)"
#: rcgcdw.py:616 rcgcdw.py:617 #: rcgcdw.py:770 rcgcdw.py:771
msgid "But nobody came" msgid "But nobody came"
msgstr "But nobody came" msgstr "But nobody came"
#: rcgcdw.py:621 #: rcgcdw.py:776
msgid "Most active user" msgid "Most active user"
msgid_plural "Most active users" msgid_plural "Most active users"
msgstr[0] "Most active user" msgstr[0] "Most active user"
msgstr[1] "Most active users" msgstr[1] "Most active users"
#: rcgcdw.py:621 #: rcgcdw.py:777
msgid "Edits made" msgid "Edits made"
msgstr "Edits made" msgstr "Edits made"
#: rcgcdw.py:621 #: rcgcdw.py:777
msgid "New files" msgid "New files"
msgstr "New files" msgstr "New files"
#: rcgcdw.py:621 #: rcgcdw.py:777
msgid "Admin actions" msgid "Admin actions"
msgstr "Admin actions" msgstr "Admin actions"
#: rcgcdw.py:621 #: rcgcdw.py:778
msgid "Bytes changed" msgid "Bytes changed"
msgstr "Bytes changed" msgstr "Bytes changed"
#: rcgcdw.py:621 #: rcgcdw.py:778
msgid "New articles" msgid "New articles"
msgstr "New articles" msgstr "New articles"
#: rcgcdw.py:621 #: rcgcdw.py:779
msgid "Unique contributors" msgid "Unique contributors"
msgstr "Unique contributors" msgstr "Unique contributors"
#: rcgcdw.py:621 #: rcgcdw.py:780
msgid "Most active hour" msgid "Most active hour"
msgid_plural "Most active hours" msgid_plural "Most active hours"
msgstr[0] "Most active hour" msgstr[0] "Most active hour"
msgstr[1] "Most active hours" msgstr[1] "Most active hours"
#: rcgcdw.py:621 #: rcgcdw.py:781
msgid "Day score" msgid "Day score"
msgstr "Day score" msgstr "Day score"
#: rcgcdw.py:745 #: rcgcdw.py:924
#, python-brace-format #, python-brace-format
msgid "Connection to {wiki} seems to be stable now." msgid "Connection to {wiki} seems to be stable now."
msgstr "Connection to {wiki} seems to be stable now." msgstr "Connection to {wiki} seems to be stable now."
#: rcgcdw.py:745 rcgcdw.py:804 #: rcgcdw.py:925 rcgcdw.py:988
msgid "Connection status" msgid "Connection status"
msgstr "Connection status" msgstr "Connection status"
#: rcgcdw.py:804 #: rcgcdw.py:987
#, python-brace-format #, python-brace-format
msgid "{wiki} seems to be down or unreachable." msgid "{wiki} seems to be down or unreachable."
msgstr "{wiki} seems to be down or unreachable." msgstr "{wiki} seems to be down or unreachable."
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "director" msgid "director"
msgstr "Director" msgstr "Director"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "bot" msgid "bot"
msgstr "Bot" msgstr "Bot"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "editor" msgid "editor"
msgstr "Editor" msgstr "Editor"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "directors" msgid "directors"
msgstr "Directors" msgstr "Directors"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "sysop" msgid "sysop"
msgstr "Administrator" msgstr "Administrator"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "bureaucrat" msgid "bureaucrat"
msgstr "Bureaucrat" msgstr "Bureaucrat"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "reviewer" msgid "reviewer"
msgstr "Reviewer" msgstr "Reviewer"
#: rcgcdw.py:828 #: rcgcdw.py:1016
msgid "autoreview" msgid "autoreview"
msgstr "Autoreview" msgstr "Autoreview"
#: rcgcdw.py:828 #: rcgcdw.py:1016
msgid "autopatrol" msgid "autopatrol"
msgstr "Autopatrol" msgstr "Autopatrol"
#: rcgcdw.py:828 #: rcgcdw.py:1016
msgid "wiki_guardian" msgid "wiki_guardian"
msgstr "Wiki guardian" msgstr "Wiki guardian"

Binary file not shown.

View file

@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-09-02 11:39+0200\n" "POT-Creation-Date: 2018-10-02 01:22+0200\n"
"PO-Revision-Date: 2018-09-02 11:44+0200\n" "PO-Revision-Date: 2018-10-03 16:09+0200\n"
"Last-Translator: JSBM\n" "Last-Translator: JSBM\n"
"Language-Team: \n" "Language-Team: \n"
"Language: fr\n" "Language: fr\n"
@ -20,43 +20,43 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Poedit-SearchPath-0: rcgcdw.pot\n" "X-Poedit-SearchPath-0: rcgcdw.pot\n"
#: rcgcdw.py:150 #: rcgcdw.py:175
msgid "(N!) " msgid "(N!) "
msgstr "(N!) " msgstr "(N!) "
#: rcgcdw.py:150 #: rcgcdw.py:176
msgid "m " msgid "m "
msgstr "m " msgstr "m "
#: rcgcdw.py:168 rcgcdw.py:194 #: rcgcdw.py:200 rcgcdw.py:232
msgid "Options" msgid "Options"
msgstr "Options" msgstr "Options"
#: rcgcdw.py:168 #: rcgcdw.py:200
#, python-brace-format #, python-brace-format
msgid "([preview]({link}) | [undo]({undolink}))" msgid "([preview]({link}) | [undo]({undolink}))"
msgstr "([Aperçu]({link}) | [Annuler]({undolink}))" msgstr "([Aperçu]({link}) | [Annuler]({undolink}))"
#: rcgcdw.py:169 #: rcgcdw.py:202
#, python-brace-format #, python-brace-format
msgid "Uploaded a new version of {name}" msgid "Uploaded a new version of {name}"
msgstr "Téléversement d'une nouvelle version de {name}" msgstr "Téléversement d'une nouvelle version de {name}"
#: rcgcdw.py:171 #: rcgcdw.py:204
#, python-brace-format #, python-brace-format
msgid "Uploaded {name}" msgid "Uploaded {name}"
msgstr "Téléversement de {name}" msgstr "Téléversement de {name}"
#: rcgcdw.py:184 #: rcgcdw.py:219
msgid "**No license!**" msgid "**No license!**"
msgstr "**Aucune license!**" msgstr "**Aucune license!**"
#: rcgcdw.py:194 #: rcgcdw.py:232
#, python-brace-format #, python-brace-format
msgid "([preview]({link}))" msgid "([preview]({link}))"
msgstr "([Aperçu]({link}))" msgstr "([Aperçu]({link}))"
#: rcgcdw.py:195 #: rcgcdw.py:233
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"{desc}\n" "{desc}\n"
@ -65,179 +65,195 @@ msgstr ""
"{desc}\n" "{desc}\n"
"License: {license}" "License: {license}"
#: rcgcdw.py:198 #: rcgcdw.py:238
#, python-brace-format #, python-brace-format
msgid "Deleted page {article}" msgid "Deleted page {article}"
msgstr "Suppression de la page {article}" msgstr "Suppression de la page {article}"
#: rcgcdw.py:201 #: rcgcdw.py:242
#, python-brace-format #, python-brace-format
msgid "Deleted redirect {article} by overwriting" msgid "Deleted redirect {article} by overwriting"
msgstr "Suppression par écrasement de la redirection {article}" msgstr "Suppression par écrasement de la redirection {article}"
#: rcgcdw.py:204 #: rcgcdw.py:247
msgid "No redirect has been made" msgid "No redirect has been made"
msgstr "Aucune redirection créée" msgstr "Aucune redirection créée"
#: rcgcdw.py:204 #: rcgcdw.py:249
msgid "A redirect has been made" msgid "A redirect has been made"
msgstr "Une redirection a été créée" msgstr "Une redirection a été créée"
#: rcgcdw.py:205 #: rcgcdw.py:250
#, python-brace-format #, python-brace-format
msgid "Moved {article} to {target}" msgid "Moved {article} to {target}"
msgstr "Déplacement de {article} vers {target}" msgstr "Déplacement de {article} vers {target}"
#: rcgcdw.py:208 #: rcgcdw.py:254
#, python-brace-format #, python-brace-format
msgid "Moved {article} to {title} over redirect" msgid "Moved {article} to {title} over redirect"
msgstr "Déplacement de {article} vers {title} par redirection" msgstr "Déplacement de {article} vers {title} par redirection"
#: rcgcdw.py:211 #: rcgcdw.py:259
#, python-brace-format #, python-brace-format
msgid "Moved protection settings from {article} to {title}" msgid "Moved protection settings from {article} to {title}"
msgstr "Transfert des paramètres de protection de {article} vers {title}" msgstr "Transfert des paramètres de protection de {article} vers {title}"
#: rcgcdw.py:215 #: rcgcdw.py:266
msgid "infinity and beyond" msgid "infinity and beyond"
msgstr "toujours" msgstr "toujours"
#: rcgcdw.py:216 #: rcgcdw.py:267
#, python-brace-format #, python-brace-format
msgid "Blocked {blocked_user} for {time}" msgid "Blocked {blocked_user} for {time}"
msgstr "{blocked_user} a été bloqué pour {time}" msgstr "{blocked_user} a été bloqué pour {time}"
#: rcgcdw.py:220 #: rcgcdw.py:273
#, python-brace-format #, python-brace-format
msgid "Changed block settings for {blocked_user}" msgid "Changed block settings for {blocked_user}"
msgstr "Modification des paramètres de blocage pour {blocked_user}" msgstr "Modification des paramètres de blocage pour {blocked_user}"
#: rcgcdw.py:224 #: rcgcdw.py:279
#, python-brace-format #, python-brace-format
msgid "Unblocked {blocked_user}" msgid "Unblocked {blocked_user}"
msgstr "{blocked_user} a été débloqué" msgstr "{blocked_user} a été débloqué"
#: rcgcdw.py:228 #: rcgcdw.py:284
#, python-brace-format #, python-brace-format
msgid "Left a comment on {target}'s profile" msgid "Left a comment on {target}'s profile"
msgstr "Ajout d'un commentaire sur le profil de {target}" msgstr "Ajout d'un commentaire sur le profil de {target}"
#: rcgcdw.py:232 #: rcgcdw.py:288
msgid "Left a comment on their own profile"
msgstr "Ajout d'un commentaire sur son propre profil"
#: rcgcdw.py:293
#, python-brace-format #, python-brace-format
msgid "Replied to a comment on {target}'s profile" msgid "Replied to a comment on {target}'s profile"
msgstr "Réponse à un commentaire sur le profil de {target}" msgstr "Réponse à un commentaire sur le profil de {target}"
#: rcgcdw.py:236 #: rcgcdw.py:297
msgid "Replied to a comment on their own profile"
msgstr "Réponse à un commentaire sur son propre profil"
#: rcgcdw.py:302
#, python-brace-format #, python-brace-format
msgid "Edited a comment on {target}'s profile" msgid "Edited a comment on {target}'s profile"
msgstr "Édition d'un commentaire sur le profil de {target}" msgstr "Édition d'un commentaire sur le profil de {target}"
#: rcgcdw.py:240 #: rcgcdw.py:306
msgid "Edited a comment on their own profile"
msgstr "Modification d'un commentaire sur son propre profil"
#: rcgcdw.py:313
msgid "Location" msgid "Location"
msgstr "Emplacement" msgstr "Emplacement"
#: rcgcdw.py:242 #: rcgcdw.py:315
msgid "About me" msgid "About me"
msgstr "À propos de moi" msgstr "À propos de moi"
#: rcgcdw.py:244 #: rcgcdw.py:317
msgid "Google link" msgid "Google link"
msgstr "Lien Google" msgstr "Lien Google"
#: rcgcdw.py:246 #: rcgcdw.py:319
msgid "Facebook link" msgid "Facebook link"
msgstr "Lien Facebook" msgstr "Lien Facebook"
#: rcgcdw.py:248 #: rcgcdw.py:321
msgid "Twitter link" msgid "Twitter link"
msgstr "Lien Twitter" msgstr "Lien Twitter"
#: rcgcdw.py:250 #: rcgcdw.py:323
msgid "Reddit link" msgid "Reddit link"
msgstr "Lien Reddit" msgstr "Lien Reddit"
#: rcgcdw.py:252 #: rcgcdw.py:325
msgid "Twitch link" msgid "Twitch link"
msgstr "Lien Twitch" msgstr "Lien Twitch"
#: rcgcdw.py:254 #: rcgcdw.py:327
msgid "PSN link" msgid "PSN link"
msgstr "Lien PSN" msgstr "Lien PSN"
#: rcgcdw.py:256 #: rcgcdw.py:329
msgid "VK link" msgid "VK link"
msgstr "Lien VK" msgstr "Lien VK"
#: rcgcdw.py:258 #: rcgcdw.py:331
msgid "XVL link" msgid "XVL link"
msgstr "Lien XVL" msgstr "Lien XVL"
#: rcgcdw.py:260 #: rcgcdw.py:333
msgid "Steam link" msgid "Steam link"
msgstr "Lien Steam" msgstr "Lien Steam"
#: rcgcdw.py:262 #: rcgcdw.py:335
msgid "Unknown" msgid "Unknown"
msgstr "Inconnu" msgstr "Inconnu"
#: rcgcdw.py:263 #: rcgcdw.py:336
#, python-brace-format #, python-brace-format
msgid "Edited {target}'s profile" msgid "Edited {target}'s profile"
msgstr "Modification du profil de {target}" msgstr "Modification du profil de {target}"
#: rcgcdw.py:264 #: rcgcdw.py:337
msgid "Edited their own profile"
msgstr "Modification de son propre profil"
#: rcgcdw.py:338
#, python-brace-format #, python-brace-format
msgid "{field} field changed to: {desc}" msgid "{field} field changed to: {desc}"
msgstr "{field} modifié pour: {desc}" msgstr "{field} modifié pour: {desc}"
#: rcgcdw.py:268 #: rcgcdw.py:343
#, python-brace-format #, python-brace-format
msgid "Deleted a comment on {target}'s profile" msgid "Deleted a comment on {target}'s profile"
msgstr "Retrait d'un commentaire sur le profil de {target}" msgstr "Retrait d'un commentaire sur le profil de {target}"
#: rcgcdw.py:272 #: rcgcdw.py:347
#, python-brace-format #, python-brace-format
msgid "Changed group membership for {target}" msgid "Changed group membership for {target}"
msgstr "Modification des groupes pour {target}" msgstr "Modification des groupes pour {target}"
#: rcgcdw.py:274 #: rcgcdw.py:349
msgid "System" msgid "System"
msgstr "Système" msgstr "Système"
#: rcgcdw.py:276 #: rcgcdw.py:351
#, python-brace-format #, python-brace-format
msgid "{target} got autopromoted to a new usergroup" msgid "{target} got autopromoted to a new usergroup"
msgstr "{target} a été auto-promu dans un nouveau groupe" msgstr "{target} a été auto-promu dans un nouveau groupe"
#: rcgcdw.py:286 rcgcdw.py:288 #: rcgcdw.py:362 rcgcdw.py:364
msgid "none" msgid "none"
msgstr "aucun" msgstr "aucun"
#: rcgcdw.py:289 rcgcdw.py:420 #: rcgcdw.py:365 rcgcdw.py:527
msgid "No description provided" msgid "No description provided"
msgstr "Aucune description" msgstr "Aucune description"
#: rcgcdw.py:290 #: rcgcdw.py:366
#, python-brace-format #, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr "Groupe modifié de {old_groups} vers {new_groups}{reason}" msgstr "Groupe modifié de {old_groups} vers {new_groups}{reason}"
#: rcgcdw.py:293 #: rcgcdw.py:371
#, python-brace-format #, python-brace-format
msgid "Protected {target}" msgid "Protected {target}"
msgstr "Protection de {target}" msgstr "Protection de {target}"
#: rcgcdw.py:297 #: rcgcdw.py:376
#, python-brace-format #, python-brace-format
msgid "Changed protection level for {article}" msgid "Changed protection level for {article}"
msgstr "Modification du niveau de protection de {article}" msgstr "Modification du niveau de protection de {article}"
#: rcgcdw.py:301 #: rcgcdw.py:381
#, python-brace-format #, python-brace-format
msgid "Removed protection from {article}" msgid "Removed protection from {article}"
msgstr "Retrait de la protection de {article}" msgstr "Retrait de la protection de {article}"
#: rcgcdw.py:305 #: rcgcdw.py:386
#, python-brace-format #, python-brace-format
msgid "Changed visibility of revision on page {article} " msgid "Changed visibility of revision on page {article} "
msgid_plural "Changed visibility of {amount} revisions on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} "
@ -245,230 +261,230 @@ msgstr[0] "Modification de la visibilité d'une révision de la page {article} "
msgstr[1] "" msgstr[1] ""
"Modification de la visibilité de {amount} révisions sur la page {article} " "Modification de la visibilité de {amount} révisions sur la page {article} "
#: rcgcdw.py:308 #: rcgcdw.py:392
#, python-brace-format #, python-brace-format
msgid "Imported {article} with {count} revision" msgid "Imported {article} with {count} revision"
msgid_plural "Imported {article} with {count} revisions" msgid_plural "Imported {article} with {count} revisions"
msgstr[0] "Article {article} importé avec {count} révision" msgstr[0] "Article {article} importé avec {count} révision"
msgstr[1] "Article {article} importé avec {count} révisions" msgstr[1] "Article {article} importé avec {count} révisions"
#: rcgcdw.py:311 #: rcgcdw.py:398
#, python-brace-format #, python-brace-format
msgid "Restored {article}" msgid "Restored {article}"
msgstr "Restauration de {article}" msgstr "Restauration de {article}"
#: rcgcdw.py:314 #: rcgcdw.py:401
msgid "Changed visibility of log events" msgid "Changed visibility of log events"
msgstr "Modification de la visibilité d'évènements des journaux" msgstr "Modification de la visibilité d'évènements des journaux"
#: rcgcdw.py:317 #: rcgcdw.py:404
msgid "Imported interwiki" msgid "Imported interwiki"
msgstr "Importation d'interwiki" msgstr "Importation d'interwiki"
#: rcgcdw.py:320 #: rcgcdw.py:407
#, python-brace-format #, python-brace-format
msgid "Edited abuse filter number {number}" msgid "Edited abuse filter number {number}"
msgstr "Édition de la règle {number} du filtre anti-abus" msgstr "Édition de la règle {number} du filtre anti-abus"
#: rcgcdw.py:323 #: rcgcdw.py:411
#, python-brace-format #, python-brace-format
msgid "Merged revision histories of {article} into {dest}" msgid "Merged revision histories of {article} into {dest}"
msgstr "Fusion de l'historique de {article} vers {dest}" msgstr "Fusion de l'historique de {article} vers {dest}"
#: rcgcdw.py:326 #: rcgcdw.py:415
msgid "Added an entry to the interwiki table" msgid "Added an entry to the interwiki table"
msgstr "Ajout d'une entrée à la table interwiki" msgstr "Ajout d'une entrée à la table interwiki"
#: rcgcdw.py:327 rcgcdw.py:331 #: rcgcdw.py:416 rcgcdw.py:422
#, python-brace-format #, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}" msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr "Préfixe: {prefix}, site: {website} | {desc}" msgstr "Préfixe: {prefix}, site: {website} | {desc}"
#: rcgcdw.py:330 #: rcgcdw.py:421
msgid "Edited an entry in interwiki table" msgid "Edited an entry in interwiki table"
msgstr "Modification d'une entrée de la table interwiki" msgstr "Modification d'une entrée de la table interwiki"
#: rcgcdw.py:334 #: rcgcdw.py:427
msgid "Deleted an entry in interwiki table" msgid "Deleted an entry in interwiki table"
msgstr "Retrait d'une entrée de la table interwiki" msgstr "Retrait d'une entrée de la table interwiki"
#: rcgcdw.py:335 #: rcgcdw.py:428
#, python-brace-format #, python-brace-format
msgid "Prefix: {prefix} | {desc}" msgid "Prefix: {prefix} | {desc}"
msgstr "Préfixe: {prefix} | {desc}" msgstr "Préfixe: {prefix} | {desc}"
#: rcgcdw.py:338 #: rcgcdw.py:432
#, python-brace-format #, python-brace-format
msgid "Changed the content model of the page {article}" msgid "Changed the content model of the page {article}"
msgstr "Modification du modèle de contenu de l'article {article}" msgstr "Modification du modèle de contenu de l'article {article}"
#: rcgcdw.py:339 #: rcgcdw.py:433
#, python-brace-format #, python-brace-format
msgid "Model changed from {old} to {new}: {reason}" msgid "Model changed from {old} to {new}: {reason}"
msgstr "Modèle changé de {old} à {new}: {reason}" msgstr "Modèle changé de {old} à {new}: {reason}"
#: rcgcdw.py:342 #: rcgcdw.py:439
#, python-brace-format #, python-brace-format
msgid "Edited the sprite for {article}" msgid "Edited the sprite for {article}"
msgstr "Édition du sprite de {article}" msgstr "Édition du sprite de {article}"
#: rcgcdw.py:345 #: rcgcdw.py:443
#, python-brace-format #, python-brace-format
msgid "Created the sprite sheet for {article}" msgid "Created the sprite sheet for {article}"
msgstr "Création d'une feuille de sprite pour {article}" msgstr "Création d'une feuille de sprite pour {article}"
#: rcgcdw.py:348 #: rcgcdw.py:447
#, python-brace-format #, python-brace-format
msgid "Edited the slice for {article}" msgid "Edited the slice for {article}"
msgstr "Edited the slice for {article}" msgstr "Edited the slice for {article}"
#: rcgcdw.py:351 #: rcgcdw.py:450
#, python-brace-format #, python-brace-format
msgid "Created a tag \"{tag}\"" msgid "Created a tag \"{tag}\""
msgstr "Création du tag « {tag} »" msgstr "Création du tag « {tag} »"
#: rcgcdw.py:355 #: rcgcdw.py:454
#, python-brace-format #, python-brace-format
msgid "Deleted a tag \"{tag}\"" msgid "Deleted a tag \"{tag}\""
msgstr "Suppression du tag « {tag} »" msgstr "Suppression du tag « {tag} »"
#: rcgcdw.py:359 #: rcgcdw.py:458
#, python-brace-format #, python-brace-format
msgid "Activated a tag \"{tag}\"" msgid "Activated a tag \"{tag}\""
msgstr "Activation du tag « {tag} »" msgstr "Activation du tag « {tag} »"
#: rcgcdw.py:362 #: rcgcdw.py:461
#, python-brace-format #, python-brace-format
msgid "Deactivated a tag \"{tag}\"" msgid "Deactivated a tag \"{tag}\""
msgstr "Désactivation du tag « {tag} »" msgstr "Désactivation du tag « {tag} »"
#: rcgcdw.py:365 #: rcgcdw.py:464
msgid "Action has been hidden by Gamepedia staff." msgid "Action has been hidden by Gamepedia staff."
msgstr "L'action a été masquée par le personnel de Gamepedia." msgstr "L'action a été masquée par le personnel de Gamepedia."
#: rcgcdw.py:386 #: rcgcdw.py:485
msgid "Tags" msgid "Tags"
msgstr "Tags" msgstr "Tags"
#: rcgcdw.py:515 #: rcgcdw.py:656
msgid "Unable to process the event" msgid "Unable to process the event"
msgstr "Impossible d'analyser l'évènement" msgstr "Impossible d'analyser l'évènement"
#: rcgcdw.py:515 #: rcgcdw.py:656
msgid "error" msgid "error"
msgstr "erreur" msgstr "erreur"
#: rcgcdw.py:597 #: rcgcdw.py:751
msgid "Daily overview" msgid "Daily overview"
msgstr "Résumé de la journée" msgstr "Résumé de la journée"
#: rcgcdw.py:613 #: rcgcdw.py:767
msgid " ({} action)" msgid " ({} action)"
msgid_plural " ({} actions)" msgid_plural " ({} actions)"
msgstr[0] " ({} action)" msgstr[0] " ({} action)"
msgstr[1] " ({} actions)" msgstr[1] " ({} actions)"
#: rcgcdw.py:614 #: rcgcdw.py:768
msgid " UTC ({} action)" msgid " UTC ({} action)"
msgid_plural " UTC ({} actions)" msgid_plural " UTC ({} actions)"
msgstr[0] " UTC ({} action)" msgstr[0] " UTC ({} action)"
msgstr[1] " UTC ({} actions)" msgstr[1] " UTC ({} actions)"
#: rcgcdw.py:616 rcgcdw.py:617 #: rcgcdw.py:770 rcgcdw.py:771
msgid "But nobody came" msgid "But nobody came"
msgstr "Aucune activité" msgstr "Aucune activité"
#: rcgcdw.py:621 #: rcgcdw.py:776
msgid "Most active user" msgid "Most active user"
msgid_plural "Most active users" msgid_plural "Most active users"
msgstr[0] "Membre le plus actif" msgstr[0] "Membre le plus actif"
msgstr[1] "Membres les plus actifs" msgstr[1] "Membres les plus actifs"
#: rcgcdw.py:621 #: rcgcdw.py:777
msgid "Edits made" msgid "Edits made"
msgstr "Modifications effectuées" msgstr "Modifications effectuées"
#: rcgcdw.py:621 #: rcgcdw.py:777
msgid "New files" msgid "New files"
msgstr "Nouveaux fichiers" msgstr "Nouveaux fichiers"
#: rcgcdw.py:621 #: rcgcdw.py:777
msgid "Admin actions" msgid "Admin actions"
msgstr "Actions d'administrateur" msgstr "Actions d'administrateur"
#: rcgcdw.py:621 #: rcgcdw.py:778
msgid "Bytes changed" msgid "Bytes changed"
msgstr "Octets modifiés" msgstr "Octets modifiés"
#: rcgcdw.py:621 #: rcgcdw.py:778
msgid "New articles" msgid "New articles"
msgstr "Nouveaux articles" msgstr "Nouveaux articles"
#: rcgcdw.py:621 #: rcgcdw.py:779
msgid "Unique contributors" msgid "Unique contributors"
msgstr "Contributeurs uniques" msgstr "Contributeurs uniques"
#: rcgcdw.py:621 #: rcgcdw.py:780
msgid "Most active hour" msgid "Most active hour"
msgid_plural "Most active hours" msgid_plural "Most active hours"
msgstr[0] "Heure la plus active" msgstr[0] "Heure la plus active"
msgstr[1] "Heures les plus actives" msgstr[1] "Heures les plus actives"
#: rcgcdw.py:621 #: rcgcdw.py:781
msgid "Day score" msgid "Day score"
msgstr "Score du jour" msgstr "Score du jour"
#: rcgcdw.py:745 #: rcgcdw.py:924
#, python-brace-format #, python-brace-format
msgid "Connection to {wiki} seems to be stable now." msgid "Connection to {wiki} seems to be stable now."
msgstr "La connexion avec {wiki} semble stable maintenant." msgstr "La connexion avec {wiki} semble stable maintenant."
#: rcgcdw.py:745 rcgcdw.py:804 #: rcgcdw.py:925 rcgcdw.py:988
msgid "Connection status" msgid "Connection status"
msgstr "Statut de connexion" msgstr "Statut de connexion"
#: rcgcdw.py:804 #: rcgcdw.py:987
#, python-brace-format #, python-brace-format
msgid "{wiki} seems to be down or unreachable." msgid "{wiki} seems to be down or unreachable."
msgstr "{wiki} semble être down ou inatteignable." msgstr "{wiki} semble être down ou inatteignable."
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "director" msgid "director"
msgstr "Directeur" msgstr "Directeur"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "bot" msgid "bot"
msgstr "Robot" msgstr "Robot"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "editor" msgid "editor"
msgstr "editor" msgstr "editor"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "directors" msgid "directors"
msgstr "Directeur" msgstr "Directeur"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "sysop" msgid "sysop"
msgstr "Administrateur" msgstr "Administrateur"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "bureaucrat" msgid "bureaucrat"
msgstr "Bureaucrate" msgstr "Bureaucrate"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "reviewer" msgid "reviewer"
msgstr "reviewer" msgstr "reviewer"
#: rcgcdw.py:828 #: rcgcdw.py:1016
msgid "autoreview" msgid "autoreview"
msgstr "autoreview" msgstr "autoreview"
#: rcgcdw.py:828 #: rcgcdw.py:1016
msgid "autopatrol" msgid "autopatrol"
msgstr "autopatrol" msgstr "autopatrol"
#: rcgcdw.py:828 #: rcgcdw.py:1016
msgid "wiki_guardian" msgid "wiki_guardian"
msgstr "Gardien du wiki" msgstr "Gardien du wiki"

Binary file not shown.

View file

@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: RcGcDw\n" "Project-Id-Version: RcGcDw\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-09-02 11:39+0200\n" "POT-Creation-Date: 2018-10-02 01:22+0200\n"
"PO-Revision-Date: 2018-09-02 11:43+0200\n" "PO-Revision-Date: 2018-10-02 01:25+0200\n"
"Last-Translator: Frisk <piotrex43@protonmail.ch>\n" "Last-Translator: Frisk <piotrex43@protonmail.ch>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: pl\n" "Language: pl\n"
@ -19,43 +19,43 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n" "|| n%100>=20) ? 1 : 2);\n"
#: rcgcdw.py:150 #: rcgcdw.py:175
msgid "(N!) " msgid "(N!) "
msgstr "(N!) " msgstr "(N!) "
#: rcgcdw.py:150 #: rcgcdw.py:176
msgid "m " msgid "m "
msgstr "d " msgstr "d "
#: rcgcdw.py:168 rcgcdw.py:194 #: rcgcdw.py:200 rcgcdw.py:232
msgid "Options" msgid "Options"
msgstr "Opcje" msgstr "Opcje"
#: rcgcdw.py:168 #: rcgcdw.py:200
#, python-brace-format #, python-brace-format
msgid "([preview]({link}) | [undo]({undolink}))" msgid "([preview]({link}) | [undo]({undolink}))"
msgstr "([podgląd]({link}) | [wycofaj]({undolink}))" msgstr "([podgląd]({link}) | [wycofaj]({undolink}))"
#: rcgcdw.py:169 #: rcgcdw.py:202
#, python-brace-format #, python-brace-format
msgid "Uploaded a new version of {name}" msgid "Uploaded a new version of {name}"
msgstr "Przesłał(a) nową wersję {name}" msgstr "Przesłał(a) nową wersję {name}"
#: rcgcdw.py:171 #: rcgcdw.py:204
#, python-brace-format #, python-brace-format
msgid "Uploaded {name}" msgid "Uploaded {name}"
msgstr "Przesłał(a) {name}" msgstr "Przesłał(a) {name}"
#: rcgcdw.py:184 #: rcgcdw.py:219
msgid "**No license!**" msgid "**No license!**"
msgstr "**Brak licencji!**" msgstr "**Brak licencji!**"
#: rcgcdw.py:194 #: rcgcdw.py:232
#, python-brace-format #, python-brace-format
msgid "([preview]({link}))" msgid "([preview]({link}))"
msgstr "([podgląd]({link}))" msgstr "([podgląd]({link}))"
#: rcgcdw.py:195 #: rcgcdw.py:233
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"{desc}\n" "{desc}\n"
@ -64,181 +64,197 @@ msgstr ""
"{desc}\n" "{desc}\n"
"Licencja: {license}" "Licencja: {license}"
#: rcgcdw.py:198 #: rcgcdw.py:238
#, python-brace-format #, python-brace-format
msgid "Deleted page {article}" msgid "Deleted page {article}"
msgstr "Usunął/usunęła {article}" msgstr "Usunął/usunęła {article}"
#: rcgcdw.py:201 #: rcgcdw.py:242
#, python-brace-format #, python-brace-format
msgid "Deleted redirect {article} by overwriting" msgid "Deleted redirect {article} by overwriting"
msgstr "" msgstr ""
"Usunął/usunęła przekierowanie ({article}) aby utworzyć miejsce dla " "Usunął/usunęła przekierowanie ({article}) aby utworzyć miejsce dla "
"przenoszonej strony" "przenoszonej strony"
#: rcgcdw.py:204 #: rcgcdw.py:247
msgid "No redirect has been made" msgid "No redirect has been made"
msgstr "Nie utworzono przekierowania" msgstr "Nie utworzono przekierowania"
#: rcgcdw.py:204 #: rcgcdw.py:249
msgid "A redirect has been made" msgid "A redirect has been made"
msgstr "Zostało utworzone przekierowanie" msgstr "Zostało utworzone przekierowanie"
#: rcgcdw.py:205 #: rcgcdw.py:250
#, python-brace-format #, python-brace-format
msgid "Moved {article} to {target}" msgid "Moved {article} to {target}"
msgstr "Przeniósł/przeniosła {article} do {target}" msgstr "Przeniósł/przeniosła {article} do {target}"
#: rcgcdw.py:208 #: rcgcdw.py:254
#, python-brace-format #, python-brace-format
msgid "Moved {article} to {title} over redirect" msgid "Moved {article} to {title} over redirect"
msgstr "Przeniósł/przeniosła {article} do strony przekierowującej {title}" msgstr "Przeniósł/przeniosła {article} do strony przekierowującej {title}"
#: rcgcdw.py:211 #: rcgcdw.py:259
#, python-brace-format #, python-brace-format
msgid "Moved protection settings from {article} to {title}" msgid "Moved protection settings from {article} to {title}"
msgstr "Przeniesiono ustawienia zabezpieczeń z {article} do {title}" msgstr "Przeniesiono ustawienia zabezpieczeń z {article} do {title}"
#: rcgcdw.py:215 #: rcgcdw.py:266
msgid "infinity and beyond" msgid "infinity and beyond"
msgstr "wieczność" msgstr "wieczność"
#: rcgcdw.py:216 #: rcgcdw.py:267
#, python-brace-format #, python-brace-format
msgid "Blocked {blocked_user} for {time}" msgid "Blocked {blocked_user} for {time}"
msgstr "Zablokowano {blocked_user} na {time}" msgstr "Zablokowano {blocked_user} na {time}"
#: rcgcdw.py:220 #: rcgcdw.py:273
#, python-brace-format #, python-brace-format
msgid "Changed block settings for {blocked_user}" msgid "Changed block settings for {blocked_user}"
msgstr "Zmienił ustawienia blokady {blocked_user}" msgstr "Zmienił ustawienia blokady {blocked_user}"
#: rcgcdw.py:224 #: rcgcdw.py:279
#, python-brace-format #, python-brace-format
msgid "Unblocked {blocked_user}" msgid "Unblocked {blocked_user}"
msgstr "Odblokował {blocked_user}" msgstr "Odblokował {blocked_user}"
#: rcgcdw.py:228 #: rcgcdw.py:284
#, python-brace-format #, python-brace-format
msgid "Left a comment on {target}'s profile" msgid "Left a comment on {target}'s profile"
msgstr "Pozostawiono komentarz na profilu użytkownika {target}" msgstr "Pozostawiono komentarz na profilu użytkownika {target}"
#: rcgcdw.py:232 #: rcgcdw.py:288
msgid "Left a comment on their own profile"
msgstr "Pozostawił(a) komentarz na swoim profilu"
#: rcgcdw.py:293
#, python-brace-format #, python-brace-format
msgid "Replied to a comment on {target}'s profile" msgid "Replied to a comment on {target}'s profile"
msgstr "Odpowiedziano na komentarz na profilu użytkownika {target}" msgstr "Odpowiedziano na komentarz na profilu użytkownika {target}"
#: rcgcdw.py:236 #: rcgcdw.py:297
msgid "Replied to a comment on their own profile"
msgstr "Odpowiedział(a) na komentarz na swoim profilu"
#: rcgcdw.py:302
#, python-brace-format #, python-brace-format
msgid "Edited a comment on {target}'s profile" msgid "Edited a comment on {target}'s profile"
msgstr "Edytowano komentarz na profilu użytkownika {target}" msgstr "Edytowano komentarz na profilu użytkownika {target}"
#: rcgcdw.py:240 #: rcgcdw.py:306
msgid "Edited a comment on their own profile"
msgstr "Edytował(a) komentarz na swoim profilu"
#: rcgcdw.py:313
msgid "Location" msgid "Location"
msgstr "Lokacja" msgstr "Lokacja"
#: rcgcdw.py:242 #: rcgcdw.py:315
msgid "About me" msgid "About me"
msgstr "O mnie" msgstr "O mnie"
#: rcgcdw.py:244 #: rcgcdw.py:317
msgid "Google link" msgid "Google link"
msgstr "link Google" msgstr "link Google"
#: rcgcdw.py:246 #: rcgcdw.py:319
msgid "Facebook link" msgid "Facebook link"
msgstr "link Facebook" msgstr "link Facebook"
#: rcgcdw.py:248 #: rcgcdw.py:321
msgid "Twitter link" msgid "Twitter link"
msgstr "link Twitter" msgstr "link Twitter"
#: rcgcdw.py:250 #: rcgcdw.py:323
msgid "Reddit link" msgid "Reddit link"
msgstr "link Reddit" msgstr "link Reddit"
#: rcgcdw.py:252 #: rcgcdw.py:325
msgid "Twitch link" msgid "Twitch link"
msgstr "link Twitch" msgstr "link Twitch"
#: rcgcdw.py:254 #: rcgcdw.py:327
msgid "PSN link" msgid "PSN link"
msgstr "link PSN" msgstr "link PSN"
#: rcgcdw.py:256 #: rcgcdw.py:329
msgid "VK link" msgid "VK link"
msgstr "link VK" msgstr "link VK"
#: rcgcdw.py:258 #: rcgcdw.py:331
msgid "XVL link" msgid "XVL link"
msgstr "link XVL" msgstr "link XVL"
#: rcgcdw.py:260 #: rcgcdw.py:333
msgid "Steam link" msgid "Steam link"
msgstr "link Steam" msgstr "link Steam"
#: rcgcdw.py:262 #: rcgcdw.py:335
msgid "Unknown" msgid "Unknown"
msgstr "Nieznana" msgstr "Nieznana"
#: rcgcdw.py:263 #: rcgcdw.py:336
#, python-brace-format #, python-brace-format
msgid "Edited {target}'s profile" msgid "Edited {target}'s profile"
msgstr "Edytowano profil użytkownika {target}" msgstr "Edytowano profil użytkownika {target}"
#: rcgcdw.py:264 #: rcgcdw.py:337
msgid "Edited their own profile"
msgstr "Edytował(a) swój profil"
#: rcgcdw.py:338
#, python-brace-format #, python-brace-format
msgid "{field} field changed to: {desc}" msgid "{field} field changed to: {desc}"
msgstr "pole {field} zostało zmienione na: {desc}" msgstr "pole {field} zostało zmienione na: {desc}"
#: rcgcdw.py:268 #: rcgcdw.py:343
#, python-brace-format #, python-brace-format
msgid "Deleted a comment on {target}'s profile" msgid "Deleted a comment on {target}'s profile"
msgstr "Usunął komentarz na profilu użytkownika {target}" msgstr "Usunął komentarz na profilu użytkownika {target}"
#: rcgcdw.py:272 #: rcgcdw.py:347
#, python-brace-format #, python-brace-format
msgid "Changed group membership for {target}" msgid "Changed group membership for {target}"
msgstr "Zmieniono przynależność do grup dla {target}" msgstr "Zmieniono przynależność do grup dla {target}"
#: rcgcdw.py:274 #: rcgcdw.py:349
msgid "System" msgid "System"
msgstr "System" msgstr "System"
#: rcgcdw.py:276 #: rcgcdw.py:351
#, python-brace-format #, python-brace-format
msgid "{target} got autopromoted to a new usergroup" msgid "{target} got autopromoted to a new usergroup"
msgstr "{target} automatycznie otrzymał nową grupę użytkownika" msgstr "{target} automatycznie otrzymał nową grupę użytkownika"
#: rcgcdw.py:286 rcgcdw.py:288 #: rcgcdw.py:362 rcgcdw.py:364
msgid "none" msgid "none"
msgstr "brak" msgstr "brak"
#: rcgcdw.py:289 rcgcdw.py:420 #: rcgcdw.py:365 rcgcdw.py:527
msgid "No description provided" msgid "No description provided"
msgstr "Nie podano opisu zmian" msgstr "Nie podano opisu zmian"
#: rcgcdw.py:290 #: rcgcdw.py:366
#, python-brace-format #, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr "Grupy zmienione z {old_groups} do {new_groups}{reason}" msgstr "Grupy zmienione z {old_groups} do {new_groups}{reason}"
#: rcgcdw.py:293 #: rcgcdw.py:371
#, python-brace-format #, python-brace-format
msgid "Protected {target}" msgid "Protected {target}"
msgstr "Zabezpieczono {target}" msgstr "Zabezpieczono {target}"
#: rcgcdw.py:297 #: rcgcdw.py:376
#, python-brace-format #, python-brace-format
msgid "Changed protection level for {article}" msgid "Changed protection level for {article}"
msgstr "Zmieniono poziom zabezpieczeń {article}" msgstr "Zmieniono poziom zabezpieczeń {article}"
#: rcgcdw.py:301 #: rcgcdw.py:381
#, python-brace-format #, python-brace-format
msgid "Removed protection from {article}" msgid "Removed protection from {article}"
msgstr "Usunięto zabezpieczenie {article}" msgstr "Usunięto zabezpieczenie {article}"
#: rcgcdw.py:305 #: rcgcdw.py:386
#, python-brace-format #, python-brace-format
msgid "Changed visibility of revision on page {article} " msgid "Changed visibility of revision on page {article} "
msgid_plural "Changed visibility of {amount} revisions on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} "
@ -246,7 +262,7 @@ msgstr[0] "Zmieniono widoczność wersji na stronie {article}"
msgstr[1] "Zmieniono widoczność {amount} wersji na stronie {article}" msgstr[1] "Zmieniono widoczność {amount} wersji na stronie {article}"
msgstr[2] "Zmieniono widoczność {amount} wersji na stronie {article}" msgstr[2] "Zmieniono widoczność {amount} wersji na stronie {article}"
#: rcgcdw.py:308 #: rcgcdw.py:392
#, python-brace-format #, python-brace-format
msgid "Imported {article} with {count} revision" msgid "Imported {article} with {count} revision"
msgid_plural "Imported {article} with {count} revisions" msgid_plural "Imported {article} with {count} revisions"
@ -254,227 +270,227 @@ msgstr[0] "Zaimportowano {article} z {count} wersją"
msgstr[1] "Zaimportowano {article} z {count} wersjami" msgstr[1] "Zaimportowano {article} z {count} wersjami"
msgstr[2] "Zaimportowano {article} z {count} wersjami" msgstr[2] "Zaimportowano {article} z {count} wersjami"
#: rcgcdw.py:311 #: rcgcdw.py:398
#, python-brace-format #, python-brace-format
msgid "Restored {article}" msgid "Restored {article}"
msgstr "Przywrócono {article}" msgstr "Przywrócono {article}"
#: rcgcdw.py:314 #: rcgcdw.py:401
msgid "Changed visibility of log events" msgid "Changed visibility of log events"
msgstr "Zmieniono widoczność logów" msgstr "Zmieniono widoczność logów"
#: rcgcdw.py:317 #: rcgcdw.py:404
msgid "Imported interwiki" msgid "Imported interwiki"
msgstr "Zaimportowano interwiki" msgstr "Zaimportowano interwiki"
#: rcgcdw.py:320 #: rcgcdw.py:407
#, python-brace-format #, python-brace-format
msgid "Edited abuse filter number {number}" msgid "Edited abuse filter number {number}"
msgstr "Edytowano filtr nadużyć numer {number}" msgstr "Edytowano filtr nadużyć numer {number}"
#: rcgcdw.py:323 #: rcgcdw.py:411
#, python-brace-format #, python-brace-format
msgid "Merged revision histories of {article} into {dest}" msgid "Merged revision histories of {article} into {dest}"
msgstr "Połączono historie {article} z {dest}" msgstr "Połączono historie {article} z {dest}"
#: rcgcdw.py:326 #: rcgcdw.py:415
msgid "Added an entry to the interwiki table" msgid "Added an entry to the interwiki table"
msgstr "Dodano wpis do tabeli interwiki" msgstr "Dodano wpis do tabeli interwiki"
#: rcgcdw.py:327 rcgcdw.py:331 #: rcgcdw.py:416 rcgcdw.py:422
#, python-brace-format #, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}" msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr "Prefix: {prefix}, strona: {website} | {desc}" msgstr "Prefix: {prefix}, strona: {website} | {desc}"
#: rcgcdw.py:330 #: rcgcdw.py:421
msgid "Edited an entry in interwiki table" msgid "Edited an entry in interwiki table"
msgstr "Edytowano wpis interwiki" msgstr "Edytowano wpis interwiki"
#: rcgcdw.py:334 #: rcgcdw.py:427
msgid "Deleted an entry in interwiki table" msgid "Deleted an entry in interwiki table"
msgstr "Usunięto wpis interwiki" msgstr "Usunięto wpis interwiki"
#: rcgcdw.py:335 #: rcgcdw.py:428
#, python-brace-format #, python-brace-format
msgid "Prefix: {prefix} | {desc}" msgid "Prefix: {prefix} | {desc}"
msgstr "Prefix: {prefix} | {desc}" msgstr "Prefix: {prefix} | {desc}"
#: rcgcdw.py:338 #: rcgcdw.py:432
#, python-brace-format #, python-brace-format
msgid "Changed the content model of the page {article}" msgid "Changed the content model of the page {article}"
msgstr "Zmieniono model zawartości {article}" msgstr "Zmieniono model zawartości {article}"
#: rcgcdw.py:339 #: rcgcdw.py:433
#, python-brace-format #, python-brace-format
msgid "Model changed from {old} to {new}: {reason}" msgid "Model changed from {old} to {new}: {reason}"
msgstr "Model został zmieniony z {old} na {new}: {reason}" msgstr "Model został zmieniony z {old} na {new}: {reason}"
#: rcgcdw.py:342 #: rcgcdw.py:439
#, python-brace-format #, python-brace-format
msgid "Edited the sprite for {article}" msgid "Edited the sprite for {article}"
msgstr "Edytowano sprite dla {article}" msgstr "Edytowano sprite dla {article}"
#: rcgcdw.py:345 #: rcgcdw.py:443
#, python-brace-format #, python-brace-format
msgid "Created the sprite sheet for {article}" msgid "Created the sprite sheet for {article}"
msgstr "Utworzono sprite sheet dla {article}" msgstr "Utworzono sprite sheet dla {article}"
#: rcgcdw.py:348 #: rcgcdw.py:447
#, python-brace-format #, python-brace-format
msgid "Edited the slice for {article}" msgid "Edited the slice for {article}"
msgstr "Edytowano część sprite dla {article}" msgstr "Edytowano część sprite dla {article}"
#: rcgcdw.py:351 #: rcgcdw.py:450
#, python-brace-format #, python-brace-format
msgid "Created a tag \"{tag}\"" msgid "Created a tag \"{tag}\""
msgstr "Utworzono tag \"{tag}\"" msgstr "Utworzono tag \"{tag}\""
#: rcgcdw.py:355 #: rcgcdw.py:454
#, python-brace-format #, python-brace-format
msgid "Deleted a tag \"{tag}\"" msgid "Deleted a tag \"{tag}\""
msgstr "Usunięto tag \"{tag}\"" msgstr "Usunięto tag \"{tag}\""
#: rcgcdw.py:359 #: rcgcdw.py:458
#, python-brace-format #, python-brace-format
msgid "Activated a tag \"{tag}\"" msgid "Activated a tag \"{tag}\""
msgstr "Aktywowano tag \"{tag}\"" msgstr "Aktywowano tag \"{tag}\""
#: rcgcdw.py:362 #: rcgcdw.py:461
#, python-brace-format #, python-brace-format
msgid "Deactivated a tag \"{tag}\"" msgid "Deactivated a tag \"{tag}\""
msgstr "Dezaktywowano tag \"{tag}\"" msgstr "Dezaktywowano tag \"{tag}\""
#: rcgcdw.py:365 #: rcgcdw.py:464
msgid "Action has been hidden by Gamepedia staff." msgid "Action has been hidden by Gamepedia staff."
msgstr "Akcja została ukryta przez personel Gamepedii." msgstr "Akcja została ukryta przez personel Gamepedii."
#: rcgcdw.py:386 #: rcgcdw.py:485
msgid "Tags" msgid "Tags"
msgstr "Tagi" msgstr "Tagi"
#: rcgcdw.py:515 #: rcgcdw.py:656
msgid "Unable to process the event" msgid "Unable to process the event"
msgstr "Nie udało się odczytać wydarzenia" msgstr "Nie udało się odczytać wydarzenia"
#: rcgcdw.py:515 #: rcgcdw.py:656
msgid "error" msgid "error"
msgstr "błąd" msgstr "błąd"
#: rcgcdw.py:597 #: rcgcdw.py:751
msgid "Daily overview" msgid "Daily overview"
msgstr "Podsumowanie dnia" msgstr "Podsumowanie dnia"
#: rcgcdw.py:613 #: rcgcdw.py:767
msgid " ({} action)" msgid " ({} action)"
msgid_plural " ({} actions)" msgid_plural " ({} actions)"
msgstr[0] " ({} akcja)" msgstr[0] " ({} akcja)"
msgstr[1] " ({} akcje)" msgstr[1] " ({} akcje)"
msgstr[2] " ({} akcji)" msgstr[2] " ({} akcji)"
#: rcgcdw.py:614 #: rcgcdw.py:768
msgid " UTC ({} action)" msgid " UTC ({} action)"
msgid_plural " UTC ({} actions)" msgid_plural " UTC ({} actions)"
msgstr[0] " UTC ({} akcja)" msgstr[0] " UTC ({} akcja)"
msgstr[1] " UTC ({} akcje)" msgstr[1] " UTC ({} akcje)"
msgstr[2] " UTC ({} akcji)" msgstr[2] " UTC ({} akcji)"
#: rcgcdw.py:616 rcgcdw.py:617 #: rcgcdw.py:770 rcgcdw.py:771
msgid "But nobody came" msgid "But nobody came"
msgstr "Ale nikt nie przyszedł" msgstr "Ale nikt nie przyszedł"
#: rcgcdw.py:621 #: rcgcdw.py:776
msgid "Most active user" msgid "Most active user"
msgid_plural "Most active users" msgid_plural "Most active users"
msgstr[0] "Najbardziej aktywny użytkownik" msgstr[0] "Najbardziej aktywny użytkownik"
msgstr[1] "Najbardziej aktywni użytkownicy" msgstr[1] "Najbardziej aktywni użytkownicy"
msgstr[2] "Najbardziej aktywni użytkownicy" msgstr[2] "Najbardziej aktywni użytkownicy"
#: rcgcdw.py:621 #: rcgcdw.py:777
msgid "Edits made" msgid "Edits made"
msgstr "Zrobionych edycji" msgstr "Zrobionych edycji"
#: rcgcdw.py:621 #: rcgcdw.py:777
msgid "New files" msgid "New files"
msgstr "Nowych plików" msgstr "Nowych plików"
#: rcgcdw.py:621 #: rcgcdw.py:777
msgid "Admin actions" msgid "Admin actions"
msgstr "Akcji administratorskich" msgstr "Akcji administratorskich"
#: rcgcdw.py:621 #: rcgcdw.py:778
msgid "Bytes changed" msgid "Bytes changed"
msgstr "Zmienionych bajtów" msgstr "Zmienionych bajtów"
#: rcgcdw.py:621 #: rcgcdw.py:778
msgid "New articles" msgid "New articles"
msgstr "Nowych artykułów" msgstr "Nowych artykułów"
#: rcgcdw.py:621 #: rcgcdw.py:779
msgid "Unique contributors" msgid "Unique contributors"
msgstr "Unikalnych edytujących" msgstr "Unikalnych edytujących"
#: rcgcdw.py:621 #: rcgcdw.py:780
msgid "Most active hour" msgid "Most active hour"
msgid_plural "Most active hours" msgid_plural "Most active hours"
msgstr[0] "Najbardziej aktywna godzina" msgstr[0] "Najbardziej aktywna godzina"
msgstr[1] "Najbardziej aktywne godziny" msgstr[1] "Najbardziej aktywne godziny"
msgstr[2] "Najbardziej aktywne godziny" msgstr[2] "Najbardziej aktywne godziny"
#: rcgcdw.py:621 #: rcgcdw.py:781
msgid "Day score" msgid "Day score"
msgstr "Wynik dnia" msgstr "Wynik dnia"
#: rcgcdw.py:745 #: rcgcdw.py:924
#, python-brace-format #, python-brace-format
msgid "Connection to {wiki} seems to be stable now." msgid "Connection to {wiki} seems to be stable now."
msgstr "Połączenie z {wiki} wygląda na stabilne." msgstr "Połączenie z {wiki} wygląda na stabilne."
#: rcgcdw.py:745 rcgcdw.py:804 #: rcgcdw.py:925 rcgcdw.py:988
msgid "Connection status" msgid "Connection status"
msgstr "Problem z połączeniem" msgstr "Problem z połączeniem"
#: rcgcdw.py:804 #: rcgcdw.py:987
#, python-brace-format #, python-brace-format
msgid "{wiki} seems to be down or unreachable." msgid "{wiki} seems to be down or unreachable."
msgstr "{wiki} nie działa lub jest nieosiągalna." msgstr "{wiki} nie działa lub jest nieosiągalna."
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "director" msgid "director"
msgstr "Dyrektor" msgstr "Dyrektor"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "bot" msgid "bot"
msgstr "Bot" msgstr "Bot"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "editor" msgid "editor"
msgstr "Redaktor" msgstr "Redaktor"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "directors" msgid "directors"
msgstr "Dyrektorzy" msgstr "Dyrektorzy"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "sysop" msgid "sysop"
msgstr "Administrator" msgstr "Administrator"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "bureaucrat" msgid "bureaucrat"
msgstr "Biurokrata" msgstr "Biurokrata"
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "reviewer" msgid "reviewer"
msgstr "Przeglądający" msgstr "Przeglądający"
#: rcgcdw.py:828 #: rcgcdw.py:1016
msgid "autoreview" msgid "autoreview"
msgstr "Automatycznie przeglądający" msgstr "Automatycznie przeglądający"
#: rcgcdw.py:828 #: rcgcdw.py:1016
msgid "autopatrol" msgid "autopatrol"
msgstr "Automatycznie zatwierdzający" msgstr "Automatycznie zatwierdzający"
#: rcgcdw.py:828 #: rcgcdw.py:1016
msgid "wiki_guardian" msgid "wiki_guardian"
msgstr "Strażnik wiki" msgstr "Strażnik wiki"

Binary file not shown.

View file

@ -7,54 +7,54 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-10 23:47-0300\n" "POT-Creation-Date: 2018-10-02 01:22+0200\n"
"PO-Revision-Date: 2018-08-12 01:29+0200\n" "PO-Revision-Date: 2018-10-03 16:19+0200\n"
"Last-Translator: Eduaddad\n"
"Language-Team: \n" "Language-Team: \n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 2.1.1\n" "X-Generator: Poedit 2.1.1\n"
"Last-Translator: \n"
"Language: pt_BR\n"
#: rcgcdw.py:124 #: rcgcdw.py:175
msgid "(N!) " msgid "(N!) "
msgstr "(N!) " msgstr "(N!) "
#: rcgcdw.py:124 #: rcgcdw.py:176
msgid "m " msgid "m "
msgstr "m " msgstr "m "
#: rcgcdw.py:142 rcgcdw.py:168 #: rcgcdw.py:200 rcgcdw.py:232
msgid "Options" msgid "Options"
msgstr "Opções" msgstr "Opções"
#: rcgcdw.py:142 #: rcgcdw.py:200
#, python-brace-format #, python-brace-format
msgid "([preview]({link}) | [undo]({undolink}))" msgid "([preview]({link}) | [undo]({undolink}))"
msgstr "([visualização]({link}) | [desfazer]({undolink}))" msgstr "([visualização]({link}) | [desfazer]({undolink}))"
#: rcgcdw.py:143 #: rcgcdw.py:202
#, python-brace-format #, python-brace-format
msgid "Uploaded a new version of {name}" msgid "Uploaded a new version of {name}"
msgstr "Carregou uma nova versão de {name}" msgstr "Carregou uma nova versão de {name}"
#: rcgcdw.py:145 #: rcgcdw.py:204
#, python-brace-format #, python-brace-format
msgid "Uploaded {name}" msgid "Uploaded {name}"
msgstr "Carregado {name}" msgstr "Carregado {name}"
#: rcgcdw.py:158 #: rcgcdw.py:219
msgid "**No license!**" msgid "**No license!**"
msgstr "* * Sem licença!* *" msgstr "* * Sem licença!* *"
#: rcgcdw.py:168 #: rcgcdw.py:232
#, python-brace-format #, python-brace-format
msgid "([preview]({link}))" msgid "([preview]({link}))"
msgstr "([visualização]({link}))" msgstr "([visualização]({link}))"
#: rcgcdw.py:169 #: rcgcdw.py:233
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"{desc}\n" "{desc}\n"
@ -63,404 +63,424 @@ msgstr ""
"{desc}\n" "{desc}\n"
"Licença: {license}" "Licença: {license}"
#: rcgcdw.py:172 #: rcgcdw.py:238
#, python-brace-format #, python-brace-format
msgid "Deleted page {article}" msgid "Deleted page {article}"
msgstr "Página {article} excluída" msgstr "Página {article} excluída"
#: rcgcdw.py:175 #: rcgcdw.py:242
#, python-brace-format #, python-brace-format
msgid "Deleted redirect {article} by overwriting" msgid "Deleted redirect {article} by overwriting"
msgstr "Redirecionado {article} excluído por sobrescrevendo" msgstr "Redirecionado {article} excluído por sobrescrevendo"
#: rcgcdw.py:178 #: rcgcdw.py:247
msgid "No redirect has been made" msgid "No redirect has been made"
msgstr "Nenhum redirecionamento foi feito" msgstr "Nenhum redirecionamento foi feito"
#: rcgcdw.py:178 #: rcgcdw.py:249
msgid "A redirect has been made" msgid "A redirect has been made"
msgstr "Foi feito um redirecionamento" msgstr "Foi feito um redirecionamento"
#: rcgcdw.py:179 #: rcgcdw.py:250
#, python-brace-format #, python-brace-format
msgid "Moved {article} to {target}" msgid "Moved {article} to {target}"
msgstr "Movido {article} para {target}" msgstr "Movido {article} para {target}"
#: rcgcdw.py:182 #: rcgcdw.py:254
#, python-brace-format #, python-brace-format
msgid "Moved {article} to {title} over redirect" msgid "Moved {article} to {title} over redirect"
msgstr "Movido {article} para {title} ao redirecionar" msgstr "Movido {article} para {title} ao redirecionar"
#: rcgcdw.py:185 #: rcgcdw.py:259
#, python-brace-format #, python-brace-format
msgid "Moved protection settings from {article} to {title}" msgid "Moved protection settings from {article} to {title}"
msgstr "Configurações de proteção movidos de {article} para {title}" msgstr "Configurações de proteção movidos de {article} para {title}"
#: rcgcdw.py:189 #: rcgcdw.py:266
msgid "infinity and beyond" msgid "infinity and beyond"
msgstr "infinito e além" msgstr "infinito e além"
#: rcgcdw.py:190 #: rcgcdw.py:267
#, python-brace-format #, python-brace-format
msgid "Blocked {blocked_user} for {time}" msgid "Blocked {blocked_user} for {time}"
msgstr "Bloqueado {blocked_user} por {time}" msgstr "Bloqueado {blocked_user} por {time}"
#: rcgcdw.py:194 #: rcgcdw.py:273
#, python-brace-format #, python-brace-format
msgid "Changed block settings for {blocked_user}" msgid "Changed block settings for {blocked_user}"
msgstr "Configurações de bloqueio alteradas para {blocked_user}" msgstr "Configurações de bloqueio alteradas para {blocked_user}"
#: rcgcdw.py:198 #: rcgcdw.py:279
#, python-brace-format #, python-brace-format
msgid "Unblocked {blocked_user}" msgid "Unblocked {blocked_user}"
msgstr "Desbloqueado {blocked_user}" msgstr "Desbloqueado {blocked_user}"
#: rcgcdw.py:202 #: rcgcdw.py:284
#, python-brace-format #, python-brace-format
msgid "Left a comment on {target}'s profile" msgid "Left a comment on {target}'s profile"
msgstr "Deixou um comentário no perfil de {target}" msgstr "Deixou um comentário no perfil de {target}"
#: rcgcdw.py:206 #: rcgcdw.py:288
msgid "Left a comment on their own profile"
msgstr "Deixou um comentário em seu próprio perfil "
#: rcgcdw.py:293
#, python-brace-format #, python-brace-format
msgid "Replied to a comment on {target}'s profile" msgid "Replied to a comment on {target}'s profile"
msgstr "Respondeu a um comentário no perfil de {target}" msgstr "Respondeu a um comentário no perfil de {target}"
#: rcgcdw.py:210 #: rcgcdw.py:297
msgid "Replied to a comment on their own profile"
msgstr "Respondeu a um comentário em seu próprio perfil "
#: rcgcdw.py:302
#, python-brace-format #, python-brace-format
msgid "Edited a comment on {target}'s profile" msgid "Edited a comment on {target}'s profile"
msgstr "Editou um comentário no perfil de {target}" msgstr "Editou um comentário no perfil de {target}"
#: rcgcdw.py:214 #: rcgcdw.py:306
msgid "Edited a comment on their own profile"
msgstr "Editou um comentário em seu próprio perfil "
#: rcgcdw.py:313
msgid "Location" msgid "Location"
msgstr "Localização" msgstr "Localização"
#: rcgcdw.py:216 #: rcgcdw.py:315
msgid "About me" msgid "About me"
msgstr "Sobre mim" msgstr "Sobre mim"
#: rcgcdw.py:218 #: rcgcdw.py:317
msgid "Google link" msgid "Google link"
msgstr "Link do Google" msgstr "Link do Google"
#: rcgcdw.py:220 #: rcgcdw.py:319
msgid "Facebook link" msgid "Facebook link"
msgstr "Facebook link" msgstr "Facebook link"
#: rcgcdw.py:222 #: rcgcdw.py:321
msgid "Twitter link" msgid "Twitter link"
msgstr "Link do Twitter" msgstr "Link do Twitter"
#: rcgcdw.py:224 #: rcgcdw.py:323
msgid "Reddit link" msgid "Reddit link"
msgstr "Link do Reddit" msgstr "Link do Reddit"
#: rcgcdw.py:226 #: rcgcdw.py:325
msgid "Twitch link" msgid "Twitch link"
msgstr "Link do Twitch" msgstr "Link do Twitch"
#: rcgcdw.py:228 #: rcgcdw.py:327
msgid "PSN link" msgid "PSN link"
msgstr "Link do PSN" msgstr "Link do PSN"
#: rcgcdw.py:230 #: rcgcdw.py:329
msgid "VK link" msgid "VK link"
msgstr "Link do VK" msgstr "Link do VK"
#: rcgcdw.py:232 #: rcgcdw.py:331
msgid "XVL link" msgid "XVL link"
msgstr "Link do XVL" msgstr "Link do XVL"
#: rcgcdw.py:234 #: rcgcdw.py:333
msgid "Steam link" msgid "Steam link"
msgstr "Link do Steam" msgstr "Link do Steam"
#: rcgcdw.py:236 #: rcgcdw.py:335
msgid "Unknown" msgid "Unknown"
msgstr "Desconhecido" msgstr "Desconhecido"
#: rcgcdw.py:237 #: rcgcdw.py:336
#, python-brace-format #, python-brace-format
msgid "Edited {target}'s profile" msgid "Edited {target}'s profile"
msgstr "Editado perfil {target}" msgstr "Editado perfil {target}"
#: rcgcdw.py:238 #: rcgcdw.py:337
msgid "Edited their own profile"
msgstr "Editou seu próprio perfil"
#: rcgcdw.py:338
#, python-brace-format #, python-brace-format
msgid "{field} field changed to: {desc}" msgid "{field} field changed to: {desc}"
msgstr "campo {field} alterado para: {desc}" msgstr "campo {field} alterado para: {desc}"
#: rcgcdw.py:242 #: rcgcdw.py:343
#, python-brace-format #, python-brace-format
msgid "Deleted a comment on {target}'s profile" msgid "Deleted a comment on {target}'s profile"
msgstr "Excluiu um comentário no perfil de {target}" msgstr "Excluiu um comentário no perfil de {target}"
#: rcgcdw.py:246 #: rcgcdw.py:347
#, python-brace-format #, python-brace-format
msgid "Changed group membership for {target}" msgid "Changed group membership for {target}"
msgstr "Alterado grupo do membro de {target}" msgstr "Alterado grupo do membro de {target}"
#: rcgcdw.py:248 #: rcgcdw.py:349
msgid "System" msgid "System"
msgstr "Sistema" msgstr "Sistema"
#: rcgcdw.py:250 #: rcgcdw.py:351
#, python-brace-format #, python-brace-format
msgid "{target} got autopromoted to a new usergroup" msgid "{target} got autopromoted to a new usergroup"
msgstr "{target} recebeu um promovido para um novo grupo de usuários" msgstr "{target} recebeu um promovido para um novo grupo de usuários"
#: rcgcdw.py:260 rcgcdw.py:262 #: rcgcdw.py:362 rcgcdw.py:364
msgid "none" msgid "none"
msgstr "nenhum" msgstr "nenhum"
#: rcgcdw.py:263 rcgcdw.py:385 #: rcgcdw.py:365 rcgcdw.py:527
msgid "No description provided" msgid "No description provided"
msgstr "Nenhuma descrição fornecida" msgstr "Nenhuma descrição fornecida"
#: rcgcdw.py:264 #: rcgcdw.py:366
#, python-brace-format #, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr "Grupos alterados de {old_groups} para {new_groups} {reason}" msgstr "Grupos alterados de {old_groups} para {new_groups} {reason}"
#: rcgcdw.py:267 #: rcgcdw.py:371
#, python-brace-format #, python-brace-format
msgid "Protected {target}" msgid "Protected {target}"
msgstr "Protegido {target}" msgstr "Protegido {target}"
#: rcgcdw.py:271 #: rcgcdw.py:376
#, python-brace-format #, python-brace-format
msgid "Changed protection level for {article}" msgid "Changed protection level for {article}"
msgstr "Nível de proteção alterado para {article}" msgstr "Nível de proteção alterado para {article}"
#: rcgcdw.py:275 #: rcgcdw.py:381
#, python-brace-format #, python-brace-format
msgid "Removed protection from {article}" msgid "Removed protection from {article}"
msgstr "Removida a proteção de {article}" msgstr "Removida a proteção de {article}"
#: rcgcdw.py:279 #: rcgcdw.py:386
#, python-brace-format #, python-brace-format
msgid "Changed visibility of revision on page {article} " msgid "Changed visibility of revision on page {article} "
msgid_plural "Changed visibility of {amount} revisions 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[0] "Visibilidade alterada da revisão na página {article} "
msgstr[1] "Visibilidade alterada de {amount} revisões na página {article} " msgstr[1] "Visibilidade alterada de {amount} revisões na página {article} "
#: rcgcdw.py:282 #: rcgcdw.py:392
#, python-brace-format #, python-brace-format
msgid "Imported {article} with {count} revision" msgid "Imported {article} with {count} revision"
msgid_plural "Imported {article} with {count} revisions" msgid_plural "Imported {article} with {count} revisions"
msgstr[0] "Importou {article} com {count} revisão" msgstr[0] "Importou {article} com {count} revisão"
msgstr[1] "{article} importado com {count} revisões" msgstr[1] "{article} importado com {count} revisões"
#: rcgcdw.py:285 #: rcgcdw.py:398
#, python-brace-format #, python-brace-format
msgid "Restored {article}" msgid "Restored {article}"
msgstr "Página {article} excluída" msgstr "Página {article} excluída"
#: rcgcdw.py:288 #: rcgcdw.py:401
msgid "Changed visibility of log events" msgid "Changed visibility of log events"
msgstr "Visibilidade alterada de eventos de registros" msgstr "Visibilidade alterada de eventos de registros"
#: rcgcdw.py:291 #: rcgcdw.py:404
msgid "Imported interwiki" msgid "Imported interwiki"
msgstr "Interwiki importado" msgstr "Interwiki importado"
#: rcgcdw.py:294 #: rcgcdw.py:407
#, python-brace-format #, python-brace-format
msgid "Edited abuse filter number {number}" msgid "Edited abuse filter number {number}"
msgstr "Número de filtro de abuso editado {number}" msgstr "Número de filtro de abuso editado {number}"
#: rcgcdw.py:297 #: rcgcdw.py:411
#, python-brace-format #, python-brace-format
msgid "Merged revision histories of {article} into {dest}" msgid "Merged revision histories of {article} into {dest}"
msgstr "Históricos de revisão mesclados de {article} em {dest}" msgstr "Históricos de revisão mesclados de {article} em {dest}"
#: rcgcdw.py:300 #: rcgcdw.py:415
msgid "Added an entry to the interwiki table" msgid "Added an entry to the interwiki table"
msgstr "Adicionado uma entrada para a tabela interwiki" msgstr "Adicionado uma entrada para a tabela interwiki"
#: rcgcdw.py:301 rcgcdw.py:305 #: rcgcdw.py:416 rcgcdw.py:422
#, python-brace-format #, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}" msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr "Prefixo: {prefix}, site: {website} | {desc}" msgstr "Prefixo: {prefix}, site: {website} | {desc}"
#: rcgcdw.py:304 #: rcgcdw.py:421
msgid "Edited an entry in interwiki table" msgid "Edited an entry in interwiki table"
msgstr "Editou uma entrada na tabela interwiki" msgstr "Editou uma entrada na tabela interwiki"
#: rcgcdw.py:308 #: rcgcdw.py:427
msgid "Deleted an entry in interwiki table" msgid "Deleted an entry in interwiki table"
msgstr "Excluiu uma entrada na tabela interwiki" msgstr "Excluiu uma entrada na tabela interwiki"
#: rcgcdw.py:309 #: rcgcdw.py:428
#, python-brace-format #, python-brace-format
msgid "Prefix: {prefix} | {desc}" msgid "Prefix: {prefix} | {desc}"
msgstr "Prefixo: {prefix} | {desc}" msgstr "Prefixo: {prefix} | {desc}"
#: rcgcdw.py:312 #: rcgcdw.py:432
#, python-brace-format #, python-brace-format
msgid "Changed the content model of the page {article}" msgid "Changed the content model of the page {article}"
msgstr "Alterou o modelo de conteúdo da página {article}" msgstr "Alterou o modelo de conteúdo da página {article}"
#: rcgcdw.py:313 #: rcgcdw.py:433
#, python-brace-format #, python-brace-format
msgid "Model changed from {old} to {new}: {reason}" msgid "Model changed from {old} to {new}: {reason}"
msgstr "Modelo alterado de {old} para {new}: {reason}" msgstr "Modelo alterado de {old} para {new}: {reason}"
#: rcgcdw.py:316 #: rcgcdw.py:439
#, python-brace-format #, python-brace-format
msgid "Edited the sprite for {article}" msgid "Edited the sprite for {article}"
msgstr "Editou o sprite para {article}" msgstr "Editou o sprite para {article}"
#: rcgcdw.py:319 #: rcgcdw.py:443
#, python-brace-format #, python-brace-format
msgid "Created the sprite sheet for {article}" msgid "Created the sprite sheet for {article}"
msgstr "Criou a folha de sprites para {article}" msgstr "Criou a folha de sprites para {article}"
#: rcgcdw.py:322 #: rcgcdw.py:447
#, python-brace-format #, python-brace-format
msgid "Edited the slice for {article}" msgid "Edited the slice for {article}"
msgstr "Editou a fatia de {article}" msgstr "Editou a fatia de {article}"
#: rcgcdw.py:325 #: rcgcdw.py:450
#, python-brace-format #, python-brace-format
msgid "Created a tag \"{tag}\"" msgid "Created a tag \"{tag}\""
msgstr "Criei uma etiqueta \"{tag}\"" msgstr "Criei uma etiqueta \"{tag}\""
#: rcgcdw.py:329 #: rcgcdw.py:454
#, python-brace-format #, python-brace-format
msgid "Deleted a tag \"{tag}\"" msgid "Deleted a tag \"{tag}\""
msgstr "Excluiu uma etiqueta \"{tag}\"" msgstr "Excluiu uma etiqueta \"{tag}\""
#: rcgcdw.py:333 #: rcgcdw.py:458
#, python-brace-format #, python-brace-format
msgid "Activated a tag \"{tag}\"" msgid "Activated a tag \"{tag}\""
msgstr "Ativou uma etiqueta \"{tag}\"" msgstr "Ativou uma etiqueta \"{tag}\""
#: rcgcdw.py:336 #: rcgcdw.py:461
#, python-brace-format #, python-brace-format
msgid "Deactivated a tag \"{tag}\"" msgid "Deactivated a tag \"{tag}\""
msgstr "Desativou uma etiqueta \"{tag}\"" msgstr "Desativou uma etiqueta \"{tag}\""
#: rcgcdw.py:357 #: rcgcdw.py:464
msgid "Action has been hidden by Gamepedia staff."
msgstr "Action has been hidden by Gamepedia staff."
#: rcgcdw.py:485
msgid "Tags" msgid "Tags"
msgstr "Etiquetas" msgstr "Etiquetas"
#: rcgcdw.py:480 #: rcgcdw.py:656
msgid "Unable to process the event" msgid "Unable to process the event"
msgstr "Não é possível processar o evento" msgstr "Não é possível processar o evento"
#: rcgcdw.py:480 #: rcgcdw.py:656
msgid "error" msgid "error"
msgstr "erro" msgstr "erro"
#: rcgcdw.py:560 #: rcgcdw.py:751
msgid "Daily overview" msgid "Daily overview"
msgstr "Visão geral diária" msgstr "Visão geral diária"
#: rcgcdw.py:576 #: rcgcdw.py:767
msgid " ({} action)" msgid " ({} action)"
msgid_plural " ({} actions)" msgid_plural " ({} actions)"
msgstr[0] " ({} açao)" msgstr[0] " ({} açao)"
msgstr[1] " ({} ações)" msgstr[1] " ({} ações)"
#: rcgcdw.py:577 #: rcgcdw.py:768
msgid " UTC ({} action)" msgid " UTC ({} action)"
msgid_plural " UTC ({} actions)" msgid_plural " UTC ({} actions)"
msgstr[0] " UTC ({} ação)" msgstr[0] " UTC ({} ação)"
msgstr[1] " UTC ({} ações)" msgstr[1] " UTC ({} ações)"
#: rcgcdw.py:579 rcgcdw.py:580 #: rcgcdw.py:770 rcgcdw.py:771
msgid "But nobody came" msgid "But nobody came"
msgstr "Mas ninguém veio" msgstr "Mas ninguém veio"
#: rcgcdw.py:584 #: rcgcdw.py:776
msgid "Most active user" msgid "Most active user"
msgid_plural "Most active users" msgid_plural "Most active users"
msgstr[0] "Usuário mais ativo" msgstr[0] "Usuário mais ativo"
msgstr[1] "Usuários mais ativos" msgstr[1] "Usuários mais ativos"
#: rcgcdw.py:584 #: rcgcdw.py:777
msgid "Edits made" msgid "Edits made"
msgstr "Edições feitas" msgstr "Edições feitas"
#: rcgcdw.py:584 #: rcgcdw.py:777
msgid "New files" msgid "New files"
msgstr "Novos arquivos" msgstr "Novos arquivos"
#: rcgcdw.py:584 #: rcgcdw.py:777
msgid "Admin actions" msgid "Admin actions"
msgstr "Ações de administração" msgstr "Ações de administração"
#: rcgcdw.py:584 #: rcgcdw.py:778
msgid "Bytes changed" msgid "Bytes changed"
msgstr "Bytes alterados" msgstr "Bytes alterados"
#: rcgcdw.py:584 #: rcgcdw.py:778
msgid "New articles" msgid "New articles"
msgstr "Novos artigos" msgstr "Novos artigos"
#: rcgcdw.py:584 #: rcgcdw.py:779
msgid "Unique contributors" msgid "Unique contributors"
msgstr "Contribuidores exclusivos" msgstr "Contribuidores exclusivos"
#: rcgcdw.py:584 #: rcgcdw.py:780
msgid "Most active hour" msgid "Most active hour"
msgid_plural "Most active hours" msgid_plural "Most active hours"
msgstr[0] "Hora mais ativa" msgstr[0] "Hora mais ativa"
msgstr[1] "Horas mais ativas" msgstr[1] "Horas mais ativas"
#: rcgcdw.py:584 #: rcgcdw.py:781
msgid "Day score" msgid "Day score"
msgstr "Pontuação do dia" msgstr "Pontuação do dia"
#: rcgcdw.py:674 #: rcgcdw.py:924
#, python-brace-format #, python-brace-format
msgid "Connection to {wiki} seems to be stable now." msgid "Connection to {wiki} seems to be stable now."
msgstr "A conexão com {wiki} parece estar estável agora." msgstr "A conexão com {wiki} parece estar estável agora."
#: rcgcdw.py:674 rcgcdw.py:729 #: rcgcdw.py:925 rcgcdw.py:988
msgid "Connection status" msgid "Connection status"
msgstr "Status da conexão" msgstr "Status da conexão"
#: rcgcdw.py:729 #: rcgcdw.py:987
#, python-brace-format #, python-brace-format
msgid "{wiki} seems to be down or unreachable." msgid "{wiki} seems to be down or unreachable."
msgstr "{wiki} parece estar inativo ou inacessível." msgstr "{wiki} parece estar inativo ou inacessível."
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "director" msgid "director"
msgstr "diretor" msgstr "diretor"
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "bot" msgid "bot"
msgstr "robô" msgstr "robô"
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "editor" msgid "editor"
msgstr "editor" msgstr "editor"
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "directors" msgid "directors"
msgstr "diretores" msgstr "diretores"
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "sysop" msgid "sysop"
msgstr "administrador" msgstr "administrador"
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "bureaucrat" msgid "bureaucrat"
msgstr "burocrata" msgstr "burocrata"
#: rcgcdw.py:751 #: rcgcdw.py:1015
msgid "reviewer" msgid "reviewer"
msgstr "revisor" msgstr "revisor"
#: rcgcdw.py:751 #: rcgcdw.py:1016
msgid "autoreview" msgid "autoreview"
msgstr "revisão automática" msgstr "revisão automática"
#: rcgcdw.py:751 #: rcgcdw.py:1016
msgid "autopatrol" msgid "autopatrol"
msgstr "patrulha automatica" msgstr "patrulha automatica"
#: rcgcdw.py:751 #: rcgcdw.py:1016
msgid "wiki_guardian" msgid "wiki_guardian"
msgstr "guardião_wiki" msgstr "guardião_wiki"

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-09-02 11:39+0200\n" "POT-Creation-Date: 2018-10-02 01:22+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,451 +18,467 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
#: rcgcdw.py:150 #: rcgcdw.py:175
msgid "(N!) " msgid "(N!) "
msgstr "" msgstr ""
#: rcgcdw.py:150 #: rcgcdw.py:176
msgid "m " msgid "m "
msgstr "" msgstr ""
#: rcgcdw.py:168 rcgcdw.py:194 #: rcgcdw.py:200 rcgcdw.py:232
msgid "Options" msgid "Options"
msgstr "" msgstr ""
#: rcgcdw.py:168 #: rcgcdw.py:200
#, python-brace-format #, python-brace-format
msgid "([preview]({link}) | [undo]({undolink}))" msgid "([preview]({link}) | [undo]({undolink}))"
msgstr "" msgstr ""
#: rcgcdw.py:169 #: rcgcdw.py:202
#, python-brace-format #, python-brace-format
msgid "Uploaded a new version of {name}" msgid "Uploaded a new version of {name}"
msgstr "" msgstr ""
#: rcgcdw.py:171 #: rcgcdw.py:204
#, python-brace-format #, python-brace-format
msgid "Uploaded {name}" msgid "Uploaded {name}"
msgstr "" msgstr ""
#: rcgcdw.py:184 #: rcgcdw.py:219
msgid "**No license!**" msgid "**No license!**"
msgstr "" msgstr ""
#: rcgcdw.py:194 #: rcgcdw.py:232
#, python-brace-format #, python-brace-format
msgid "([preview]({link}))" msgid "([preview]({link}))"
msgstr "" msgstr ""
#: rcgcdw.py:195 #: rcgcdw.py:233
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"{desc}\n" "{desc}\n"
"License: {license}" "License: {license}"
msgstr "" msgstr ""
#: rcgcdw.py:198 #: rcgcdw.py:238
#, python-brace-format #, python-brace-format
msgid "Deleted page {article}" msgid "Deleted page {article}"
msgstr "" msgstr ""
#: rcgcdw.py:201 #: rcgcdw.py:242
#, python-brace-format #, python-brace-format
msgid "Deleted redirect {article} by overwriting" msgid "Deleted redirect {article} by overwriting"
msgstr "" msgstr ""
#: rcgcdw.py:204 #: rcgcdw.py:247
msgid "No redirect has been made" msgid "No redirect has been made"
msgstr "" msgstr ""
#: rcgcdw.py:204 #: rcgcdw.py:249
msgid "A redirect has been made" msgid "A redirect has been made"
msgstr "" msgstr ""
#: rcgcdw.py:205 #: rcgcdw.py:250
#, python-brace-format #, python-brace-format
msgid "Moved {article} to {target}" msgid "Moved {article} to {target}"
msgstr "" msgstr ""
#: rcgcdw.py:208 #: rcgcdw.py:254
#, python-brace-format #, python-brace-format
msgid "Moved {article} to {title} over redirect" msgid "Moved {article} to {title} over redirect"
msgstr "" msgstr ""
#: rcgcdw.py:211 #: rcgcdw.py:259
#, python-brace-format #, python-brace-format
msgid "Moved protection settings from {article} to {title}" msgid "Moved protection settings from {article} to {title}"
msgstr "" msgstr ""
#: rcgcdw.py:215 #: rcgcdw.py:266
msgid "infinity and beyond" msgid "infinity and beyond"
msgstr "" msgstr ""
#: rcgcdw.py:216 #: rcgcdw.py:267
#, python-brace-format #, python-brace-format
msgid "Blocked {blocked_user} for {time}" msgid "Blocked {blocked_user} for {time}"
msgstr "" msgstr ""
#: rcgcdw.py:220 #: rcgcdw.py:273
#, python-brace-format #, python-brace-format
msgid "Changed block settings for {blocked_user}" msgid "Changed block settings for {blocked_user}"
msgstr "" msgstr ""
#: rcgcdw.py:224 #: rcgcdw.py:279
#, python-brace-format #, python-brace-format
msgid "Unblocked {blocked_user}" msgid "Unblocked {blocked_user}"
msgstr "" msgstr ""
#: rcgcdw.py:228 #: rcgcdw.py:284
#, python-brace-format #, python-brace-format
msgid "Left a comment on {target}'s profile" msgid "Left a comment on {target}'s profile"
msgstr "" msgstr ""
#: rcgcdw.py:232 #: rcgcdw.py:288
#, python-brace-format msgid "Left a comment on their own profile"
msgid "Replied to a comment on {target}'s profile"
msgstr ""
#: rcgcdw.py:236
#, python-brace-format
msgid "Edited a comment on {target}'s profile"
msgstr ""
#: rcgcdw.py:240
msgid "Location"
msgstr ""
#: rcgcdw.py:242
msgid "About me"
msgstr ""
#: rcgcdw.py:244
msgid "Google link"
msgstr ""
#: rcgcdw.py:246
msgid "Facebook link"
msgstr ""
#: rcgcdw.py:248
msgid "Twitter link"
msgstr ""
#: rcgcdw.py:250
msgid "Reddit link"
msgstr ""
#: rcgcdw.py:252
msgid "Twitch link"
msgstr ""
#: rcgcdw.py:254
msgid "PSN link"
msgstr ""
#: rcgcdw.py:256
msgid "VK link"
msgstr ""
#: rcgcdw.py:258
msgid "XVL link"
msgstr ""
#: rcgcdw.py:260
msgid "Steam link"
msgstr ""
#: rcgcdw.py:262
msgid "Unknown"
msgstr ""
#: rcgcdw.py:263
#, python-brace-format
msgid "Edited {target}'s profile"
msgstr ""
#: rcgcdw.py:264
#, python-brace-format
msgid "{field} field changed to: {desc}"
msgstr ""
#: rcgcdw.py:268
#, python-brace-format
msgid "Deleted a comment on {target}'s profile"
msgstr ""
#: rcgcdw.py:272
#, python-brace-format
msgid "Changed group membership for {target}"
msgstr ""
#: rcgcdw.py:274
msgid "System"
msgstr ""
#: rcgcdw.py:276
#, python-brace-format
msgid "{target} got autopromoted to a new usergroup"
msgstr ""
#: rcgcdw.py:286 rcgcdw.py:288
msgid "none"
msgstr ""
#: rcgcdw.py:289 rcgcdw.py:420
msgid "No description provided"
msgstr ""
#: rcgcdw.py:290
#, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr "" msgstr ""
#: rcgcdw.py:293 #: rcgcdw.py:293
#, python-brace-format #, python-brace-format
msgid "Protected {target}" msgid "Replied to a comment on {target}'s profile"
msgstr "" msgstr ""
#: rcgcdw.py:297 #: rcgcdw.py:297
msgid "Replied to a comment on their own profile"
msgstr ""
#: rcgcdw.py:302
#, python-brace-format
msgid "Edited a comment on {target}'s profile"
msgstr ""
#: rcgcdw.py:306
msgid "Edited a comment on their own profile"
msgstr ""
#: rcgcdw.py:313
msgid "Location"
msgstr ""
#: rcgcdw.py:315
msgid "About me"
msgstr ""
#: rcgcdw.py:317
msgid "Google link"
msgstr ""
#: rcgcdw.py:319
msgid "Facebook link"
msgstr ""
#: rcgcdw.py:321
msgid "Twitter link"
msgstr ""
#: rcgcdw.py:323
msgid "Reddit link"
msgstr ""
#: rcgcdw.py:325
msgid "Twitch link"
msgstr ""
#: rcgcdw.py:327
msgid "PSN link"
msgstr ""
#: rcgcdw.py:329
msgid "VK link"
msgstr ""
#: rcgcdw.py:331
msgid "XVL link"
msgstr ""
#: rcgcdw.py:333
msgid "Steam link"
msgstr ""
#: rcgcdw.py:335
msgid "Unknown"
msgstr ""
#: rcgcdw.py:336
#, python-brace-format
msgid "Edited {target}'s profile"
msgstr ""
#: rcgcdw.py:337
msgid "Edited their own profile"
msgstr ""
#: rcgcdw.py:338
#, python-brace-format
msgid "{field} field changed to: {desc}"
msgstr ""
#: rcgcdw.py:343
#, python-brace-format
msgid "Deleted a comment on {target}'s profile"
msgstr ""
#: rcgcdw.py:347
#, python-brace-format
msgid "Changed group membership for {target}"
msgstr ""
#: rcgcdw.py:349
msgid "System"
msgstr ""
#: rcgcdw.py:351
#, python-brace-format
msgid "{target} got autopromoted to a new usergroup"
msgstr ""
#: rcgcdw.py:362 rcgcdw.py:364
msgid "none"
msgstr ""
#: rcgcdw.py:365 rcgcdw.py:527
msgid "No description provided"
msgstr ""
#: rcgcdw.py:366
#, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr ""
#: rcgcdw.py:371
#, python-brace-format
msgid "Protected {target}"
msgstr ""
#: rcgcdw.py:376
#, python-brace-format #, python-brace-format
msgid "Changed protection level for {article}" msgid "Changed protection level for {article}"
msgstr "" msgstr ""
#: rcgcdw.py:301 #: rcgcdw.py:381
#, python-brace-format #, python-brace-format
msgid "Removed protection from {article}" msgid "Removed protection from {article}"
msgstr "" msgstr ""
#: rcgcdw.py:305 #: rcgcdw.py:386
#, python-brace-format #, python-brace-format
msgid "Changed visibility of revision on page {article} " msgid "Changed visibility of revision on page {article} "
msgid_plural "Changed visibility of {amount} revisions on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} "
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: rcgcdw.py:308 #: rcgcdw.py:392
#, python-brace-format #, python-brace-format
msgid "Imported {article} with {count} revision" msgid "Imported {article} with {count} revision"
msgid_plural "Imported {article} with {count} revisions" msgid_plural "Imported {article} with {count} revisions"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: rcgcdw.py:311 #: rcgcdw.py:398
#, python-brace-format #, python-brace-format
msgid "Restored {article}" msgid "Restored {article}"
msgstr "" msgstr ""
#: rcgcdw.py:314 #: rcgcdw.py:401
msgid "Changed visibility of log events" msgid "Changed visibility of log events"
msgstr "" msgstr ""
#: rcgcdw.py:317 #: rcgcdw.py:404
msgid "Imported interwiki" msgid "Imported interwiki"
msgstr "" msgstr ""
#: rcgcdw.py:320 #: rcgcdw.py:407
#, python-brace-format #, python-brace-format
msgid "Edited abuse filter number {number}" msgid "Edited abuse filter number {number}"
msgstr "" msgstr ""
#: rcgcdw.py:323 #: rcgcdw.py:411
#, python-brace-format #, python-brace-format
msgid "Merged revision histories of {article} into {dest}" msgid "Merged revision histories of {article} into {dest}"
msgstr "" msgstr ""
#: rcgcdw.py:326 #: rcgcdw.py:415
msgid "Added an entry to the interwiki table" msgid "Added an entry to the interwiki table"
msgstr "" msgstr ""
#: rcgcdw.py:327 rcgcdw.py:331 #: rcgcdw.py:416 rcgcdw.py:422
#, python-brace-format #, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}" msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr "" msgstr ""
#: rcgcdw.py:330 #: rcgcdw.py:421
msgid "Edited an entry in interwiki table" msgid "Edited an entry in interwiki table"
msgstr "" msgstr ""
#: rcgcdw.py:334 #: rcgcdw.py:427
msgid "Deleted an entry in interwiki table" msgid "Deleted an entry in interwiki table"
msgstr "" msgstr ""
#: rcgcdw.py:335 #: rcgcdw.py:428
#, python-brace-format #, python-brace-format
msgid "Prefix: {prefix} | {desc}" msgid "Prefix: {prefix} | {desc}"
msgstr "" msgstr ""
#: rcgcdw.py:338 #: rcgcdw.py:432
#, python-brace-format #, python-brace-format
msgid "Changed the content model of the page {article}" msgid "Changed the content model of the page {article}"
msgstr "" msgstr ""
#: rcgcdw.py:339 #: rcgcdw.py:433
#, python-brace-format #, python-brace-format
msgid "Model changed from {old} to {new}: {reason}" msgid "Model changed from {old} to {new}: {reason}"
msgstr "" msgstr ""
#: rcgcdw.py:342 #: rcgcdw.py:439
#, python-brace-format #, python-brace-format
msgid "Edited the sprite for {article}" msgid "Edited the sprite for {article}"
msgstr "" msgstr ""
#: rcgcdw.py:345 #: rcgcdw.py:443
#, python-brace-format #, python-brace-format
msgid "Created the sprite sheet for {article}" msgid "Created the sprite sheet for {article}"
msgstr "" msgstr ""
#: rcgcdw.py:348 #: rcgcdw.py:447
#, python-brace-format #, python-brace-format
msgid "Edited the slice for {article}" msgid "Edited the slice for {article}"
msgstr "" msgstr ""
#: rcgcdw.py:351 #: rcgcdw.py:450
#, python-brace-format #, python-brace-format
msgid "Created a tag \"{tag}\"" msgid "Created a tag \"{tag}\""
msgstr "" msgstr ""
#: rcgcdw.py:355 #: rcgcdw.py:454
#, python-brace-format #, python-brace-format
msgid "Deleted a tag \"{tag}\"" msgid "Deleted a tag \"{tag}\""
msgstr "" msgstr ""
#: rcgcdw.py:359 #: rcgcdw.py:458
#, python-brace-format #, python-brace-format
msgid "Activated a tag \"{tag}\"" msgid "Activated a tag \"{tag}\""
msgstr "" msgstr ""
#: rcgcdw.py:362 #: rcgcdw.py:461
#, python-brace-format #, python-brace-format
msgid "Deactivated a tag \"{tag}\"" msgid "Deactivated a tag \"{tag}\""
msgstr "" msgstr ""
#: rcgcdw.py:365 #: rcgcdw.py:464
msgid "Action has been hidden by Gamepedia staff." msgid "Action has been hidden by Gamepedia staff."
msgstr "" msgstr ""
#: rcgcdw.py:386 #: rcgcdw.py:485
msgid "Tags" msgid "Tags"
msgstr "" msgstr ""
#: rcgcdw.py:515 #: rcgcdw.py:656
msgid "Unable to process the event" msgid "Unable to process the event"
msgstr "" msgstr ""
#: rcgcdw.py:515 #: rcgcdw.py:656
msgid "error" msgid "error"
msgstr "" msgstr ""
#: rcgcdw.py:597 #: rcgcdw.py:751
msgid "Daily overview" msgid "Daily overview"
msgstr "" msgstr ""
#: rcgcdw.py:613 #: rcgcdw.py:767
msgid " ({} action)" msgid " ({} action)"
msgid_plural " ({} actions)" msgid_plural " ({} actions)"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: rcgcdw.py:614 #: rcgcdw.py:768
msgid " UTC ({} action)" msgid " UTC ({} action)"
msgid_plural " UTC ({} actions)" msgid_plural " UTC ({} actions)"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: rcgcdw.py:616 rcgcdw.py:617 #: rcgcdw.py:770 rcgcdw.py:771
msgid "But nobody came" msgid "But nobody came"
msgstr "" msgstr ""
#: rcgcdw.py:621 #: rcgcdw.py:776
msgid "Most active user" msgid "Most active user"
msgid_plural "Most active users" msgid_plural "Most active users"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: rcgcdw.py:621 #: rcgcdw.py:777
msgid "Edits made" msgid "Edits made"
msgstr "" msgstr ""
#: rcgcdw.py:621 #: rcgcdw.py:777
msgid "New files" msgid "New files"
msgstr "" msgstr ""
#: rcgcdw.py:621 #: rcgcdw.py:777
msgid "Admin actions" msgid "Admin actions"
msgstr "" msgstr ""
#: rcgcdw.py:621 #: rcgcdw.py:778
msgid "Bytes changed" msgid "Bytes changed"
msgstr "" msgstr ""
#: rcgcdw.py:621 #: rcgcdw.py:778
msgid "New articles" msgid "New articles"
msgstr "" msgstr ""
#: rcgcdw.py:621 #: rcgcdw.py:779
msgid "Unique contributors" msgid "Unique contributors"
msgstr "" msgstr ""
#: rcgcdw.py:621 #: rcgcdw.py:780
msgid "Most active hour" msgid "Most active hour"
msgid_plural "Most active hours" msgid_plural "Most active hours"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: rcgcdw.py:621 #: rcgcdw.py:781
msgid "Day score" msgid "Day score"
msgstr "" msgstr ""
#: rcgcdw.py:745 #: rcgcdw.py:924
#, python-brace-format #, python-brace-format
msgid "Connection to {wiki} seems to be stable now." msgid "Connection to {wiki} seems to be stable now."
msgstr "" msgstr ""
#: rcgcdw.py:745 rcgcdw.py:804 #: rcgcdw.py:925 rcgcdw.py:988
msgid "Connection status" msgid "Connection status"
msgstr "" msgstr ""
#: rcgcdw.py:804 #: rcgcdw.py:987
#, python-brace-format #, python-brace-format
msgid "{wiki} seems to be down or unreachable." msgid "{wiki} seems to be down or unreachable."
msgstr "" msgstr ""
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "director" msgid "director"
msgstr "" msgstr ""
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "bot" msgid "bot"
msgstr "" msgstr ""
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "editor" msgid "editor"
msgstr "" msgstr ""
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "directors" msgid "directors"
msgstr "" msgstr ""
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "sysop" msgid "sysop"
msgstr "" msgstr ""
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "bureaucrat" msgid "bureaucrat"
msgstr "" msgstr ""
#: rcgcdw.py:828 #: rcgcdw.py:1015
msgid "reviewer" msgid "reviewer"
msgstr "" msgstr ""
#: rcgcdw.py:828 #: rcgcdw.py:1016
msgid "autoreview" msgid "autoreview"
msgstr "" msgstr ""
#: rcgcdw.py:828 #: rcgcdw.py:1016
msgid "autopatrol" msgid "autopatrol"
msgstr "" msgstr ""
#: rcgcdw.py:828 #: rcgcdw.py:1016
msgid "wiki_guardian" msgid "wiki_guardian"
msgstr "" msgstr ""

441
rcgcdw.py
View file

@ -39,12 +39,15 @@ lang = gettext.translation('rcgcdw', localedir='locale', languages=[settings["la
lang.install() lang.install()
ngettext = lang.ngettext ngettext = lang.ngettext
class MWError(Exception): class MWError(Exception):
pass pass
class MyHTMLParser(HTMLParser): class MyHTMLParser(HTMLParser):
new_string = "" new_string = ""
recent_href = "" recent_href = ""
def handle_starttag(self, tag, attrs): def handle_starttag(self, tag, attrs):
for attr in attrs: for attr in attrs:
if attr[0] == 'href': if attr[0] == 'href':
@ -53,22 +56,29 @@ class MyHTMLParser(HTMLParser):
self.recent_href = "https:{rest}".format(rest=self.recent_href) self.recent_href = "https:{rest}".format(rest=self.recent_href)
elif not self.recent_href.startswith("https"): elif not self.recent_href.startswith("https"):
self.recent_href = "https://{wiki}.gamepedia.com".format(wiki=settings["wiki"]) + self.recent_href self.recent_href = "https://{wiki}.gamepedia.com".format(wiki=settings["wiki"]) + self.recent_href
self.recent_href = self.recent_href.replace(")", "\\)")
def handle_data(self, data): def handle_data(self, data):
if self.recent_href: if self.recent_href:
self.new_string = self.new_string + "[{}]({})".format(data, self.recent_href) self.new_string = self.new_string + "[{}]({})".format(data, self.recent_href)
self.recent_href = "" self.recent_href = ""
else: else:
self.new_string = self.new_string + data self.new_string = self.new_string + data
def handle_comment(self, data): def handle_comment(self, data):
self.new_string = self.new_string + data self.new_string = self.new_string + data
def handle_endtag(self, tag): def handle_endtag(self, tag):
print(self.new_string) print(self.new_string)
HTMLParse = MyHTMLParser() HTMLParse = MyHTMLParser()
def send(message, name, avatar): def send(message, name, avatar):
send_to_discord({"content": message, "avatar_url": avatar, "username": name}) send_to_discord({"content": message, "avatar_url": avatar, "username": name})
def safe_read(request, *keys): def safe_read(request, *keys):
if request is None: if request is None:
return None return None
@ -77,16 +87,19 @@ def safe_read(request, *keys):
for item in keys: for item in keys:
request = request[item] request = request[item]
except KeyError: except KeyError:
logging.warning("Failure while extracting data from request on key {key} in {change}".format(key=item, change=request)) logging.warning(
"Failure while extracting data from request on key {key} in {change}".format(key=item, change=request))
return None return None
except ValueError: except ValueError:
logging.warning("Failure while extracting data from request in {change}".format(change=request)) logging.warning("Failure while extracting data from request in {change}".format(change=request))
return None return None
return request return request
def send_to_discord_webhook(data): def send_to_discord_webhook(data):
try: try:
result = requests.post(settings["webhookURL"], data=data, headers={**{'Content-Type': 'application/json'}, **settings["header"]}, timeout=10) result = requests.post(settings["webhookURL"], data=data,
headers={**{'Content-Type': 'application/json'}, **settings["header"]}, timeout=10)
except requests.exceptions.Timeout: except requests.exceptions.Timeout:
logging.warning("Timeouted while sending data to the webhook.") logging.warning("Timeouted while sending data to the webhook.")
return 3 return 3
@ -96,6 +109,7 @@ def send_to_discord_webhook(data):
else: else:
return handle_discord_http(result.status_code, data) return handle_discord_http(result.status_code, data)
def send_to_discord(data): def send_to_discord(data):
if recent_changes.unsent_messages: if recent_changes.unsent_messages:
recent_changes.unsent_messages.append(data) recent_changes.unsent_messages.append(data)
@ -110,29 +124,35 @@ def send_to_discord(data):
time.sleep(2.5) time.sleep(2.5)
pass pass
def webhook_formatter(action, STATIC, **params): def webhook_formatter(action, STATIC, **params):
logging.debug("Received things: {thing}".format(thing=params)) logging.debug("Received things: {thing}".format(thing=params))
colornumber = None if isinstance(STATIC["color"], str) else STATIC["color"] colornumber = None if isinstance(STATIC["color"], str) else STATIC["color"]
data = {} data = {"embeds": []}
data["embeds"] = []
embed = defaultdict(dict) embed = defaultdict(dict)
if "title" in params: if "title" in params:
article_encoded = params["title"].replace(" ", "_").replace(')', '\)') article_encoded = params["title"].replace(" ", "_").replace(')', '\)')
if re.match(r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b", params["user"]) is not None: if re.match(r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b", params["user"]) is not None:
author_url = "https://{wiki}.gamepedia.com/Special:Contributions/{user}".format(wiki=settings["wiki"], user=params["user"]) author_url = "https://{wiki}.gamepedia.com/Special:Contributions/{user}".format(wiki=settings["wiki"],
user=params["user"])
if params["user"] not in list(recent_changes.map_ips.keys()): if params["user"] not in list(recent_changes.map_ips.keys()):
contibs = safe_read(recent_changes.safe_request("https://{wiki}.gamepedia.com/api.php?action=query&format=json&list=usercontribs&uclimit=max&ucuser={user}&ucprop=".format(wiki=settings["wiki"], user=params["user"])), "query", "usercontribs") contibs = safe_read(recent_changes.safe_request(
"https://{wiki}.gamepedia.com/api.php?action=query&format=json&list=usercontribs&uclimit=max&ucuser={user}&ucprop=".format(
wiki=settings["wiki"], user=params["user"])), "query", "usercontribs")
if contibs is None: if contibs is None:
logging.warning("WARNING: Something went wrong when checking amount of contributions for given IP address") logging.warning(
"WARNING: Something went wrong when checking amount of contributions for given IP address")
params["user"] = params["user"] + "(?)" params["user"] = params["user"] + "(?)"
else: else:
params["user"] = "{author} ({contribs})".format(author=params["user"], contribs=len(contibs)) params["user"] = "{author} ({contribs})".format(author=params["user"], contribs=len(contibs))
recent_changes.map_ips[params["user"]] = len(contibs) recent_changes.map_ips[params["user"]] = len(contibs)
else: else:
recent_changes.map_ips[params["user"]] += 1 recent_changes.map_ips[params["user"]] += 1
params["user"] = "{author} ({amount})".format(author=params["user"], amount=recent_changes.map_ips[params["user"]]) params["user"] = "{author} ({amount})".format(author=params["user"],
amount=recent_changes.map_ips[params["user"]])
else: else:
author_url = "https://{wiki}.gamepedia.com/User:{user}".format(wiki=settings["wiki"], user=params["user"].replace(" ", "_")) author_url = "https://{wiki}.gamepedia.com/User:{user}".format(wiki=settings["wiki"],
user=params["user"].replace(" ", "_"))
if action in ("edit", "new"): # edit or new page if action in ("edit", "new"): # edit or new page
editsize = params["size"] editsize = params["size"]
print(editsize) print(editsize)
@ -140,7 +160,7 @@ def webhook_formatter(action, STATIC, **params):
if editsize > 6032: if editsize > 6032:
colornumber = 65280 colornumber = 65280
else: else:
colornumber = 35840 + (math.floor(editsize/(52)))*256 colornumber = 35840 + (math.floor(editsize / 52)) * 256
elif editsize < 0: elif editsize < 0:
if editsize < -6032: if editsize < -6032:
colornumber = 16711680 colornumber = 16711680
@ -148,13 +168,21 @@ def webhook_formatter(action, STATIC, **params):
colornumber = 9175040 + (math.floor((editsize * -1) / (52))) * 65536 colornumber = 9175040 + (math.floor((editsize * -1) / (52))) * 65536
elif editsize == 0: elif editsize == 0:
colornumber = 8750469 colornumber = 8750469
link = "https://{wiki}.gamepedia.com/index.php?title={article}&curid={pageid}&diff={diff}&oldid={oldrev}".format(wiki=settings["wiki"], pageid=params["pageid"], diff=params["diff"], oldrev=params["oldrev"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/index.php?title={article}&curid={pageid}&diff={diff}&oldid={oldrev}".format(
embed["title"] = "{article} ({new}{minor}{editsize})".format(article=params["title"], editsize="+"+str(editsize) if editsize>0 else editsize, new= _("(N!) ") if action == "new" else "", minor=_("m ") if action == "edit" and params["minor"] else "") wiki=settings["wiki"], pageid=params["pageid"], diff=params["diff"], oldrev=params["oldrev"],
article=params["title"].replace(" ", "_"))
embed["title"] = "{article} ({new}{minor}{editsize})".format(article=params["title"], editsize="+" + str(
editsize) if editsize > 0 else editsize, new=_("(N!) ") if action == "new" else "",
minor=_("m ") if action == "edit" and params[
"minor"] else "")
elif action in ("upload/overwrite", "upload/upload"): # sending files elif action in ("upload/overwrite", "upload/upload"): # sending files
license = None license = None
urls = safe_read(recent_changes.safe_request("https://{wiki}.gamepedia.com/api.php?action=query&format=json&prop=imageinfo&list=&meta=&titles={filename}&iiprop=timestamp%7Curl&iilimit=2".format(wiki=settings["wiki"], filename=params["title"])), "query", "pages") urls = safe_read(recent_changes.safe_request(
"https://{wiki}.gamepedia.com/api.php?action=query&format=json&prop=imageinfo&list=&meta=&titles={filename}&iiprop=timestamp%7Curl&iilimit=2".format(
wiki=settings["wiki"], filename=params["title"])), "query", "pages")
undolink = "" undolink = ""
link ="https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
additional_info_retrieved = False additional_info_retrieved = False
if urls is not None: if urls is not None:
if "-1" not in urls: # oage removed before we asked for it if "-1" not in urls: # oage removed before we asked for it
@ -166,12 +194,17 @@ def webhook_formatter(action, STATIC, **params):
if params["overwrite"]: if params["overwrite"]:
if additional_info_retrieved: if additional_info_retrieved:
img_timestamp = [x for x in img_info[1]["timestamp"] if x.isdigit()] 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:]) undolink = "https://{wiki}.gamepedia.com/index.php?title={filename}&action=revert&oldimage={timestamp}%21{filenamewon}".format(
embed["fields"] = [{"name": _("Options"), "value": _("([preview]({link}) | [undo]({undolink}))").format(link=embed["image"]["url"], undolink=undolink)}] wiki=settings["wiki"], filename=article_encoded, timestamp="".join(img_timestamp),
filenamewon=article_encoded[5:])
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"]) embed["title"] = _("Uploaded a new version of {name}").format(name=params["title"])
else: else:
embed["title"] = _("Uploaded {name}").format(name=params["title"]) embed["title"] = _("Uploaded {name}").format(name=params["title"])
article_content = safe_read(recent_changes.safe_request("https://{wiki}.gamepedia.com/api.php?action=query&format=json&prop=revisions&titles={article}&rvprop=content".format(wiki=settings["wiki"], article=quote_plus(params["title"], safe=''))), "query", "pages") article_content = safe_read(recent_changes.safe_request(
"https://{wiki}.gamepedia.com/api.php?action=query&format=json&prop=revisions&titles={article}&rvprop=content".format(
wiki=settings["wiki"], article=quote_plus(params["title"], safe=''))), "query", "pages")
if article_content is None: if article_content is None:
logging.warning("Something went wrong when getting license for the image") logging.warning("Something went wrong when getting license for the image")
return 0 return 0
@ -187,57 +220,95 @@ def webhook_formatter(action, STATIC, **params):
else: else:
license = "?" license = "?"
except IndexError: except IndexError:
logging.error("Given regex for the license detection is incorrect. It does not have a capturing group called \"license\" specified. Please fix license_regex value in the config!") logging.error(
"Given regex for the license detection is incorrect. It does not have a capturing group called \"license\" specified. Please fix license_regex value in the config!")
license = "?" license = "?"
except re.error: except re.error:
logging.error("Given regex for the license detection is incorrect. Please fix license_regex or license_regex_detect values in the config!") logging.error(
"Given regex for the license detection is incorrect. Please fix license_regex or license_regex_detect values in the config!")
license = "?" license = "?"
if additional_info_retrieved: if additional_info_retrieved:
embed["fields"] = [{"name": _("Options"), "value": _("([preview]({link}))").format(link=embed["image"]["url"])}] embed["fields"] = [
params["desc"] = _("{desc}\nLicense: {license}").format(desc=params["desc"], license=license if license is not None else "?") {"name": _("Options"), "value": _("([preview]({link}))").format(link=embed["image"]["url"])}]
params["desc"] = _("{desc}\nLicense: {license}").format(desc=params["desc"],
license=license if license is not None else "?")
elif action == "delete/delete": elif action == "delete/delete":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
embed["title"] = _("Deleted page {article}").format(article=params["title"]) embed["title"] = _("Deleted page {article}").format(article=params["title"])
elif action == "delete/delete_redir": elif action == "delete/delete_redir":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
embed["title"] = _("Deleted redirect {article} by overwriting").format(article=params["title"]) embed["title"] = _("Deleted redirect {article} by overwriting").format(article=params["title"])
elif action == "move/move": elif action == "move/move":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["target"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
params["desc"] = "{supress}. {desc}".format(desc=params["desc"], supress=_("No redirect has been made") if params["supress"] == True else _("A redirect has been made")) article=params["target"].replace(" ", "_"))
params["desc"] = "{supress}. {desc}".format(desc=params["desc"],
supress=_("No redirect has been made") if params[
"supress"] == True else _(
"A redirect has been made"))
embed["title"] = _("Moved {article} to {target}").format(article=params["title"], target=params["target"]) embed["title"] = _("Moved {article} to {target}").format(article=params["title"], target=params["target"])
elif action == "move/move_redir": elif action == "move/move_redir":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["target"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
embed["title"] = _("Moved {article} to {title} over redirect").format(article=params["title"], title=params["target"]) article=params["target"].replace(" ", "_"))
embed["title"] = _("Moved {article} to {title} over redirect").format(article=params["title"],
title=params["target"])
elif action == "protect/move_prot": elif action == "protect/move_prot":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
embed["title"] = _("Moved protection settings from {article} to {title}").format(article=params["title"], title=params["target"]) article=params["title"].replace(" ", "_"))
embed["title"] = _("Moved protection settings from {article} to {title}").format(article=params["title"],
title=params["target"])
elif action == "block/block": elif action == "block/block":
link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], user=params["blocked_user"].replace(" ", "_").replace(')', '\)')) link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"],
user=params["blocked_user"].replace(" ", "_").replace(')',
'\)'))
user = params["blocked_user"].split(':')[1] user = params["blocked_user"].split(':')[1]
time =_( "infinity and beyond") if params["duration"] == "infinite" else params["duration"] block_time = _("infinity and beyond") if params["duration"] == "infinite" else params["duration"]
embed["title"] = _("Blocked {blocked_user} for {time}").format(blocked_user=user, time=time) embed["title"] = _("Blocked {blocked_user} for {time}").format(blocked_user=user, time=block_time)
elif action == "block/reblock": elif action == "block/reblock":
link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], user=params["blocked_user"].replace(" ", "_").replace(')', '\)')) link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"],
user=params["blocked_user"].replace(" ", "_").replace(')',
'\)'))
user = params["blocked_user"].split(':')[1] user = params["blocked_user"].split(':')[1]
embed["title"] = _("Changed block settings for {blocked_user}").format(blocked_user=user) embed["title"] = _("Changed block settings for {blocked_user}").format(blocked_user=user)
elif action == "block/unblock": elif action == "block/unblock":
link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], user=params["blocked_user"].replace(" ", "_").replace(')', '\)')) link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"],
user=params["blocked_user"].replace(" ", "_").replace(')',
'\)'))
user = params["blocked_user"].split(':')[1] user = params["blocked_user"].split(':')[1]
embed["title"] = _("Unblocked {blocked_user}").format(blocked_user=user) embed["title"] = _("Unblocked {blocked_user}").format(blocked_user=user)
elif action == "curseprofile/comment-created": elif action == "curseprofile/comment-created":
link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], commentid=params["commentid"]) link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"],
commentid=params["commentid"])
# link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)')) old way of linking # link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)')) old way of linking
embed["title"] = _("Left a comment on {target}'s profile").format(target=params["target"]) embed["title"] = _("Left a comment on {target}'s profile").format(target=params["target"]) if params[
"target"] != \
params[
"user"] else _(
"Left a comment on their own profile")
elif action == "curseprofile/comment-replied": elif action == "curseprofile/comment-replied":
# link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)')) # link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)'))
link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], commentid=params["commentid"]) link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"],
embed["title"] = _("Replied to a comment on {target}'s profile").format(target=params["target"]) commentid=params["commentid"])
embed["title"] = _("Replied to a comment on {target}'s profile").format(target=params["target"]) if params[
"target"] != \
params[
"user"] else _(
"Replied to a comment on their own profile")
elif action == "curseprofile/comment-edited": elif action == "curseprofile/comment-edited":
# link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)')) # link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)'))
link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], commentid=params["commentid"]) link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"],
embed["title"] = _("Edited a comment on {target}'s profile").format(target=params["target"]) commentid=params["commentid"])
embed["title"] = _("Edited a comment on {target}'s profile").format(target=params["target"]) if params[
"target"] != \
params[
"user"] else _(
"Edited a comment on their own profile")
elif action == "curseprofile/profile-edited": elif action == "curseprofile/profile-edited":
link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)')) link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"],
target=params["target"].replace(" ",
"_").replace(
')', '\)'))
if params["field"] == "profile-location": if params["field"] == "profile-location":
field = _("Location") field = _("Location")
elif params["field"] == "profile-aboutme": elif params["field"] == "profile-aboutme":
@ -262,10 +333,12 @@ def webhook_formatter(action, STATIC, **params):
field = _("Steam link") field = _("Steam link")
else: else:
field = _("Unknown") field = _("Unknown")
embed["title"] = _("Edited {target}'s profile").format(target=params["target"]) embed["title"] = _("Edited {target}'s profile").format(target=params["target"]) if params["user"] != params[
"target"] else _("Edited their own profile")
params["desc"] = _("{field} field changed to: {desc}").format(field=field, desc=params["desc"]) params["desc"] = _("{field} field changed to: {desc}").format(field=field, desc=params["desc"])
elif action == "curseprofile/comment-deleted": elif action == "curseprofile/comment-deleted":
link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], commentid=params["commentid"]) link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"],
commentid=params["commentid"])
# link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)')) # link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)'))
embed["title"] = _("Deleted a comment on {target}'s profile").format(target=params["target"]) embed["title"] = _("Deleted a comment on {target}'s profile").format(target=params["target"])
elif action in ("rights/rights", "rights/autopromote"): elif action in ("rights/rights", "rights/autopromote"):
@ -275,7 +348,8 @@ def webhook_formatter(action, STATIC, **params):
else: else:
params["user"] = _("System") params["user"] = _("System")
author_url = "" author_url = ""
embed["title"] = _("{target} got autopromoted to a new usergroup").format(target=params["title"].split(":")[1]) embed["title"] = _("{target} got autopromoted to a new usergroup").format(
target=params["title"].split(":")[1])
if len(params["old_groups"]) < len(params["new_groups"]): if len(params["old_groups"]) < len(params["new_groups"]):
embed["thumbnail"]["url"] = "https://i.imgur.com/WnGhF5g.gif" embed["thumbnail"]["url"] = "https://i.imgur.com/WnGhF5g.gif"
old_groups = [] old_groups = []
@ -289,27 +363,38 @@ def webhook_formatter(action, STATIC, **params):
if len(new_groups) == 0: if len(new_groups) == 0:
new_groups = [_("none")] new_groups = [_("none")]
reason = ": {desc}".format(desc=params["desc"]) if params["desc"] != _("No description provided") else "" reason = ": {desc}".format(desc=params["desc"]) if params["desc"] != _("No description provided") else ""
params["desc"] = _("Groups changed from {old_groups} to {new_groups}{reason}").format(old_groups=", ".join(old_groups), new_groups=', '.join(new_groups), reason=reason) params["desc"] = _("Groups changed from {old_groups} to {new_groups}{reason}").format(
old_groups=", ".join(old_groups), new_groups=', '.join(new_groups), reason=reason)
elif action == "protect/protect": elif action == "protect/protect":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
embed["title"] = _("Protected {target}").format(target=params["title"]) embed["title"] = _("Protected {target}").format(target=params["title"])
params["desc"] = params["settings"] + " | " + params["desc"] params["desc"] = params["settings"] + " | " + params["desc"]
elif action == "protect/modify": elif action == "protect/modify":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) 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"]) embed["title"] = _("Changed protection level for {article}").format(article=params["title"])
params["desc"] = params["settings"] + " | " + params["desc"] params["desc"] = params["settings"] + " | " + params["desc"]
elif action == "protect/unprotect": elif action == "protect/unprotect":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
embed["title"] = _("Removed protection from {article}").format(article=params["title"]) embed["title"] = _("Removed protection from {article}").format(article=params["title"])
elif action == "delete/revision": elif action == "delete/revision":
amount = len(params["amount"]) amount = len(params["amount"])
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
embed["title"] = ngettext("Changed visibility of revision on page {article} ", "Changed visibility of {amount} revisions on page {article} ", amount).format(article=params["title"], amount=amount) article=params["title"].replace(" ", "_"))
embed["title"] = ngettext("Changed visibility of revision on page {article} ",
"Changed visibility of {amount} revisions on page {article} ", amount).format(
article=params["title"], amount=amount)
elif action == "import/upload": elif action == "import/upload":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
embed["title"] = ngettext("Imported {article} with {count} revision", "Imported {article} with {count} revisions", params["amount"]).format(article=params["title"], count=params["amount"]) article=params["title"].replace(" ", "_"))
embed["title"] = ngettext("Imported {article} with {count} revision",
"Imported {article} with {count} revisions", params["amount"]).format(
article=params["title"], count=params["amount"])
elif action == "delete/restore": elif action == "delete/restore":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
embed["title"] = _("Restored {article}").format(article=params["title"]) embed["title"] = _("Restored {article}").format(article=params["title"])
elif action == "delete/event": elif action == "delete/event":
link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"]) link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"])
@ -321,32 +406,44 @@ def webhook_formatter(action, STATIC, **params):
link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"]) link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"])
embed["title"] = _("Edited abuse filter number {number}").format(number=params["filternr"]) embed["title"] = _("Edited abuse filter number {number}").format(number=params["filternr"])
elif action == "merge/merge": elif action == "merge/merge":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
embed["title"] = _("Merged revision histories of {article} into {dest}").format(article=params["title"], dest=params["destination"]) article=params["title"].replace(" ", "_"))
embed["title"] = _("Merged revision histories of {article} into {dest}").format(article=params["title"],
dest=params["destination"])
elif action == "interwiki/iw_add": elif action == "interwiki/iw_add":
link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"]) link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])
embed["title"] = _("Added an entry to the interwiki table") embed["title"] = _("Added an entry to the interwiki table")
params["desc"] =_("Prefix: {prefix}, website: {website} | {desc}").format(desc=params["desc"], prefix=params["prefix"], website=params["website"]) params["desc"] = _("Prefix: {prefix}, website: {website} | {desc}").format(desc=params["desc"],
prefix=params["prefix"],
website=params["website"])
elif action == "interwiki/iw_edit": elif action == "interwiki/iw_edit":
link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"]) link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])
embed["title"] = _("Edited an entry in interwiki table") embed["title"] = _("Edited an entry in interwiki table")
params["desc"] =_("Prefix: {prefix}, website: {website} | {desc}").format(desc=params["desc"], prefix=params["prefix"], website=params["website"]) params["desc"] = _("Prefix: {prefix}, website: {website} | {desc}").format(desc=params["desc"],
prefix=params["prefix"],
website=params["website"])
elif action == "interwiki/iw_delete": elif action == "interwiki/iw_delete":
link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"]) link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])
embed["title"] = _("Deleted an entry in interwiki table") embed["title"] = _("Deleted an entry in interwiki table")
params["desc"] = _("Prefix: {prefix} | {desc}").format(desc=params["desc"], prefix=params["prefix"]) params["desc"] = _("Prefix: {prefix} | {desc}").format(desc=params["desc"], prefix=params["prefix"])
elif action == "contentmodel/change": elif action == "contentmodel/change":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
embed["title"] = _("Changed the content model of the page {article}").format(article=params["title"]) embed["title"] = _("Changed the content model of the page {article}").format(article=params["title"])
params["desc"] = _("Model changed from {old} to {new}: {reason}").format(old=params["oldmodel"], new=params["newmodel"], reason=params["desc"]) params["desc"] = _("Model changed from {old} to {new}: {reason}").format(old=params["oldmodel"],
new=params["newmodel"],
reason=params["desc"])
elif action == "sprite/sprite": elif action == "sprite/sprite":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
embed["title"] = _("Edited the sprite for {article}").format(article=params["title"]) embed["title"] = _("Edited the sprite for {article}").format(article=params["title"])
elif action == "sprite/sheet": elif action == "sprite/sheet":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
embed["title"] = _("Created the sprite sheet for {article}").format(article=params["title"]) embed["title"] = _("Created the sprite sheet for {article}").format(article=params["title"])
elif action == "sprite/slice": elif action == "sprite/slice":
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
article=params["title"].replace(" ", "_"))
embed["title"] = _("Edited the slice for {article}").format(article=params["title"]) embed["title"] = _("Edited the slice for {article}").format(article=params["title"])
elif action == "managetags/create": elif action == "managetags/create":
link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"]) link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"])
@ -391,11 +488,13 @@ def webhook_formatter(action, STATIC, **params):
formatted_embed = json.dumps(data, indent=4) formatted_embed = json.dumps(data, indent=4)
send_to_discord(formatted_embed) send_to_discord(formatted_embed)
def handle_discord_http(code, formatted_embed): def handle_discord_http(code, formatted_embed):
if 300 > code > 199: # message went through if 300 > code > 199: # message went through
return 0 return 0
elif code == 400: # HTTP BAD REQUEST elif code == 400: # HTTP BAD REQUEST
logging.error("Following message has been rejected by Discord, please submit a bug on our bugtracker adding it:") logging.error(
"Following message has been rejected by Discord, please submit a bug on our bugtracker adding it:")
logging.error(formatted_embed) logging.error(formatted_embed)
return 1 return 1
elif code == 401 or code == 404: # HTTP UNAUTHORIZED AND NOT FOUND elif code == 401 or code == 404: # HTTP UNAUTHORIZED AND NOT FOUND
@ -405,14 +504,20 @@ def handle_discord_http(code, formatted_embed):
logging.error("We are sending too many requests to the Discord, slowing down...") logging.error("We are sending too many requests to the Discord, slowing down...")
return 2 return 2
elif 499 < code < 600: elif 499 < code < 600:
logging.error("Discord have trouble processing the event, and because the HTTP code returned is {} it means we blame them.".format(code)) logging.error(
"Discord have trouble processing the event, and because the HTTP code returned is {} it means we blame them.".format(
code))
return 3 return 3
def first_pass(change): #I've decided to split the embed formatter and change handler, maybe it's more messy this way, I don't know
def first_pass(
change): # 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"]) webhook_formatter("suppressed",
{"timestamp": change["timestamp"], "color": settings["appearance"]["suppressed"]["color"],
"icon": settings["appearance"]["suppressed"]["icon"]}, user=change["user"])
return return
parse_output = HTMLParse.feed(change["parsedcomment"]) HTMLParse.feed(change["parsedcomment"])
# parsedcomment = (BeautifulSoup(change["parsedcomment"], "lxml")).get_text() # parsedcomment = (BeautifulSoup(change["parsedcomment"], "lxml")).get_text()
parsedcomment = HTMLParse.new_string parsedcomment = HTMLParse.new_string
HTMLParse.new_string = "" HTMLParse.new_string = ""
@ -421,28 +526,36 @@ def first_pass(change): #I've decided to split the embed formatter and change ha
if not parsedcomment: if not parsedcomment:
parsedcomment = _("No description provided") parsedcomment = _("No description provided")
if change["type"] == "edit" and "edit" not in settings["ignored"]: if change["type"] == "edit" and "edit" not in settings["ignored"]:
STATIC_VARS = {**STATIC_VARS ,**{"color": settings["appearance"]["edit"]["color"], "icon": settings["appearance"]["edit"]["icon"]}} STATIC_VARS = {**STATIC_VARS, **{"color": settings["appearance"]["edit"]["color"],
webhook_formatter("edit", STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, oldrev=change["old_revid"], pageid=change["pageid"], diff=change["revid"], size=change["newlen"]-change["oldlen"], minor= True if "minor" in change else False) "icon": settings["appearance"]["edit"]["icon"]}}
webhook_formatter("edit", STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
oldrev=change["old_revid"], pageid=change["pageid"], diff=change["revid"],
size=change["newlen"] - change["oldlen"], minor=True if "minor" in change else False)
elif change["type"] == "log": elif change["type"] == "log":
combination = "{logtype}/{logaction}".format(logtype=change["logtype"], logaction=change["logaction"]) combination = "{logtype}/{logaction}".format(logtype=change["logtype"], logaction=change["logaction"])
if combination in settings["ignored"]: if combination in settings["ignored"]:
return return
logging.debug("combination is {}".format(combination)) logging.debug("combination is {}".format(combination))
try: try:
STATIC_VARS = {**STATIC_VARS ,**{"color": settings["appearance"][combination]["color"], "icon": settings["appearance"][combination]["icon"]}} STATIC_VARS = {**STATIC_VARS, **{"color": settings["appearance"][combination]["color"],
"icon": settings["appearance"][combination]["icon"]}}
except KeyError: except KeyError:
STATIC_VARS = {**STATIC_VARS, **{"color": "", "icon": ""}} STATIC_VARS = {**STATIC_VARS, **{"color": "", "icon": ""}}
logging.error("No value in the settings has been given for {}".format(combination)) logging.error("No value in the settings has been given for {}".format(combination))
if combination == "protect/protect": if combination == "protect/protect":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, settings=change["logparams"]["description"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
settings=change["logparams"]["description"])
elif combination == "protect/modify": elif combination == "protect/modify":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, settings=change["logparams"]["description"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
settings=change["logparams"]["description"])
elif combination == "protect/unprotect": elif combination == "protect/unprotect":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
elif combination == "upload/overwrite": elif combination == "upload/overwrite":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, overwrite=True) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
overwrite=True)
elif combination == "upload/upload": elif combination == "upload/upload":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, overwrite=False) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
overwrite=False)
elif combination == "delete/delete": elif combination == "delete/delete":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
elif combination == "delete/delete_redir": elif combination == "delete/delete_redir":
@ -450,51 +563,73 @@ def first_pass(change): #I've decided to split the embed formatter and change ha
elif combination == "delete/restore": elif combination == "delete/restore":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
elif combination == "delete/revision": elif combination == "delete/revision":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, amount=change["logparams"]["ids"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
amount=change["logparams"]["ids"])
elif combination == "delete/event": elif combination == "delete/event":
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment) webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment)
elif combination == "import/upload": elif combination == "import/upload":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, amount=change["logparams"]["count"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
amount=change["logparams"]["count"])
elif combination == "import/interwiki": elif combination == "import/interwiki":
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment) webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment)
elif combination == "merge/merge": elif combination == "merge/merge":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, destination=change["logparams"]["dest_title"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
destination=change["logparams"]["dest_title"])
elif combination == "move/move": elif combination == "move/move":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, supress=True if "suppressredirect" in change["logparams"] else False, target=change["logparams"]['target_title']) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
supress=True if "suppressredirect" in change["logparams"] else False,
target=change["logparams"]['target_title'])
elif combination == "move/move_redir": elif combination == "move/move_redir":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, target=change["logparams"]["target_title"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
target=change["logparams"]["target_title"])
elif combination == "protect/move_prot": elif combination == "protect/move_prot":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, target=change["logparams"]["oldtitle_title"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
target=change["logparams"]["oldtitle_title"])
elif combination == "block/block": elif combination == "block/block":
webhook_formatter(combination, STATIC_VARS, user=change["user"], blocked_user=change["title"], desc=parsedcomment, duration=change["logparams"]["duration"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], blocked_user=change["title"],
desc=parsedcomment, duration=change["logparams"]["duration"])
elif combination == "block/unblock": elif combination == "block/unblock":
webhook_formatter(combination, STATIC_VARS, user=change["user"], blocked_user=change["title"], desc=parsedcomment) webhook_formatter(combination, STATIC_VARS, user=change["user"], blocked_user=change["title"],
desc=parsedcomment)
elif combination == "block/reblock": elif combination == "block/reblock":
webhook_formatter(combination, STATIC_VARS, user=change["user"], blocked_user=change["title"], desc=parsedcomment) webhook_formatter(combination, STATIC_VARS, user=change["user"], blocked_user=change["title"],
desc=parsedcomment)
elif combination == "rights/rights": elif combination == "rights/rights":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, old_groups=change["logparams"]["oldgroups"], new_groups=change["logparams"]["newgroups"]) 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 == "rights/autopromote": elif combination == "rights/autopromote":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, old_groups=change["logparams"]["oldgroups"], new_groups=change["logparams"]["newgroups"]) 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": elif combination == "abusefilter/modify":
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment, filternr=change["logparams"]['1']) webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment,
filternr=change["logparams"]['1'])
elif combination == "interwiki/iw_add": elif combination == "interwiki/iw_add":
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment, prefix=change["logparams"]['0'], website=change["logparams"]['1']) webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment,
prefix=change["logparams"]['0'], website=change["logparams"]['1'])
elif combination == "interwiki/iw_edit": elif combination == "interwiki/iw_edit":
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment, prefix=change["logparams"]['0'], website=change["logparams"]['1']) webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment,
prefix=change["logparams"]['0'], website=change["logparams"]['1'])
elif combination == "interwiki/iw_delete": elif combination == "interwiki/iw_delete":
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment, prefix=change["logparams"]['0']) webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment,
prefix=change["logparams"]['0'])
elif combination == "curseprofile/comment-created": elif combination == "curseprofile/comment-created":
webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], commentid=change["logparams"]["0"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1],
commentid=change["logparams"]["0"])
elif combination == "curseprofile/comment-edited": elif combination == "curseprofile/comment-edited":
webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], commentid=change["logparams"]["0"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1],
commentid=change["logparams"]["0"])
elif combination == "curseprofile/comment-deleted": elif combination == "curseprofile/comment-deleted":
webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], commentid=change["logparams"]["0"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1],
commentid=change["logparams"]["0"])
elif combination == "curseprofile/profile-edited": elif combination == "curseprofile/profile-edited":
webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], field=change["logparams"]['0'], desc=change["parsedcomment"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1],
field=change["logparams"]['0'], desc=change["parsedcomment"])
elif combination == "curseprofile/comment-replied": elif combination == "curseprofile/comment-replied":
webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], commentid=change["logparams"]["0"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1],
commentid=change["logparams"]["0"])
elif combination == "contentmodel/change": elif combination == "contentmodel/change":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, oldmodel=change["logparams" ]["oldmodel"], newmodel=change["logparams" ]["newmodel"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
oldmodel=change["logparams"]["oldmodel"], newmodel=change["logparams"]["newmodel"])
elif combination == "sprite/sprite": elif combination == "sprite/sprite":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
elif combination == "sprite/sheet": elif combination == "sprite/sheet":
@ -502,13 +637,17 @@ def first_pass(change): #I've decided to split the embed formatter and change ha
elif combination == "sprite/slice": elif combination == "sprite/slice":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
elif combination == "managetags/create": elif combination == "managetags/create":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, additional=change["logparams"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
additional=change["logparams"])
elif combination == "managetags/delete": elif combination == "managetags/delete":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, additional=change["logparams"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
additional=change["logparams"])
elif combination == "managetags/activate": elif combination == "managetags/activate":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, additional=change["logparams"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
additional=change["logparams"])
elif combination == "managetags/deactivate": elif combination == "managetags/deactivate":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, additional=change["logparams"]) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
additional=change["logparams"])
elif combination == "tag/update": elif combination == "tag/update":
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
else: else:
@ -521,8 +660,12 @@ def first_pass(change): #I've decided to split the embed formatter and change ha
print(change) print(change)
return return
elif change["type"] == "new" and "new" not in settings["ignored"]: # new page elif change["type"] == "new" and "new" not in settings["ignored"]: # new page
STATIC_VARS = {**STATIC_VARS ,**{"color": settings["appearance"]["new"]["color"], "icon": settings["appearance"]["new"]["icon"]}} STATIC_VARS = {**STATIC_VARS, **{"color": settings["appearance"]["new"]["color"],
webhook_formatter("new", STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, oldrev=change["old_revid"], pageid=change["pageid"], diff=change["revid"], size=change["newlen"]) "icon": settings["appearance"]["new"]["icon"]}}
webhook_formatter("new", STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
oldrev=change["old_revid"], pageid=change["pageid"], diff=change["revid"],
size=change["newlen"])
def day_overview_request(): def day_overview_request():
logging.info("Fetching daily overview... This may take up to 30 seconds!") logging.info("Fetching daily overview... This may take up to 30 seconds!")
@ -533,7 +676,9 @@ def day_overview_request():
passes = 0 passes = 0
continuearg = "" continuearg = ""
while not complete and passes < 10: while not complete and passes < 10:
request = recent_changes.safe_request("https://{wiki}.gamepedia.com/api.php?action=query&format=json&list=recentchanges&rcend={timestamp}Z&rcprop=title%7Ctimestamp%7Csizes%7Cloginfo%7Cuser&rcshow=!bot&rclimit=500&rctype=edit%7Cnew%7Clog{continuearg}".format(wiki=settings["wiki"], timestamp=timestamp, continuearg=continuearg)) request = recent_changes.safe_request(
"https://{wiki}.gamepedia.com/api.php?action=query&format=json&list=recentchanges&rcend={timestamp}Z&rcprop=title%7Ctimestamp%7Csizes%7Cloginfo%7Cuser&rcshow=!bot&rclimit=500&rctype=edit%7Cnew%7Clog{continuearg}".format(
wiki=settings["wiki"], timestamp=timestamp, continuearg=continuearg))
if request: if request:
try: try:
request = request.json() request = request.json()
@ -541,7 +686,7 @@ def day_overview_request():
continuearg = request["continue"]["rccontinue"] if "continue" in request else None continuearg = request["continue"]["rccontinue"] if "continue" in request else None
except ValueError: except ValueError:
logging.warning("ValueError in fetching changes") logging.warning("ValueError in fetching changes")
self.downtime_controller() recent_changes.downtime_controller()
complete = 2 complete = 2
except KeyError: except KeyError:
logging.warning("Wiki returned %s" % (request.json())) logging.warning("Wiki returned %s" % (request.json()))
@ -551,7 +696,9 @@ def day_overview_request():
if continuearg: if continuearg:
continuearg = "&rccontinue={}".format(continuearg) continuearg = "&rccontinue={}".format(continuearg)
passes += 1 passes += 1
logging.debug("continuing requesting next pages of recent changes with {} passes and continuearg being {}".format(passes, continuearg)) logging.debug(
"continuing requesting next pages of recent changes with {} passes and continuearg being {}".format(
passes, continuearg))
time.sleep(3.0) time.sleep(3.0)
else: else:
complete = 1 complete = 1
@ -561,6 +708,7 @@ def day_overview_request():
logging.debug("quit the loop because there been too many passes") logging.debug("quit the loop because there been too many passes")
return (result, complete) return (result, complete)
def add_to_dict(dictionary, key): def add_to_dict(dictionary, key):
if key in dictionary: if key in dictionary:
dictionary[key] += 1 dictionary[key] += 1
@ -568,6 +716,7 @@ def add_to_dict(dictionary, key):
dictionary[key] = 1 dictionary[key] = 1
return dictionary return dictionary
def day_overview(): # time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.time())) def day_overview(): # time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.time()))
# (datetime.datetime.utcnow()+datetime.timedelta(hours=0)).isoformat(timespec='milliseconds')+'Z' # (datetime.datetime.utcnow()+datetime.timedelta(hours=0)).isoformat(timespec='milliseconds')+'Z'
result = day_overview_request() result = day_overview_request()
@ -579,6 +728,8 @@ def day_overview(): #time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.ti
admin = 0 admin = 0
changed_bytes = 0 changed_bytes = 0
new_articles = 0 new_articles = 0
if not result[0] and not settings["send_empty_overview"]:
return # no changes in this day
for item in result[0]: for item in result[0]:
activity = add_to_dict(activity, item["user"]) activity = add_to_dict(activity, item["user"])
hours = add_to_dict(hours, datetime.datetime.strptime(item["timestamp"], "%Y-%m-%dT%H:%M:%SZ").hour) hours = add_to_dict(hours, datetime.datetime.strptime(item["timestamp"], "%Y-%m-%dT%H:%M:%SZ").hour)
@ -593,7 +744,8 @@ def day_overview(): #time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.ti
changed_bytes += item["newlen"] changed_bytes += item["newlen"]
if item["type"] == "log": if item["type"] == "log":
files = files + 1 if item["logtype"] == item["logaction"] == "upload" else files files = files + 1 if item["logtype"] == item["logaction"] == "upload" else files
admin = admin+1 if item["logtype"] in ["delete", "merge", "block", "protect", "import", "rights", "abusefilter", "interwiki", "managetags"] else admin admin = admin + 1 if item["logtype"] in ["delete", "merge", "block", "protect", "import", "rights",
"abusefilter", "interwiki", "managetags"] else admin
overall = round(new_articles + edits * 0.1 + files * 0.3 + admin * 0.1 + math.fabs(changed_bytes * 0.001), 2) overall = round(new_articles + edits * 0.1 + files * 0.3 + admin * 0.1 + math.fabs(changed_bytes * 0.001), 2)
embed = defaultdict(dict) embed = defaultdict(dict)
embed["title"] = _("Daily overview") embed["title"] = _("Daily overview")
@ -607,7 +759,7 @@ def day_overview(): #time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.ti
active_users = [] active_users = []
for user, numberu in Counter(activity).most_common(list(v).count(max(v))): # find most active users for user, numberu in Counter(activity).most_common(list(v).count(max(v))): # find most active users
active_users.append(user) active_users.append(user)
the_one = random.choice(active_users) # the_one = random.choice(active_users)
v = hours.values() v = hours.values()
active_hours = [] active_hours = []
for hour, numberh in Counter(hours).most_common(list(v).count(max(v))): # find most active users for hour, numberh in Counter(hours).most_common(list(v).count(max(v))): # find most active users
@ -620,16 +772,22 @@ def day_overview(): #time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.ti
usramount = "" usramount = ""
houramount = "" houramount = ""
embed["fields"] = [] embed["fields"] = []
fields = ((ngettext("Most active user", "Most active users", len(active_users)), ', '.join(active_users) + usramount), (_("Edits made"), edits), (_("New files"), files), (_("Admin actions"), admin), (_("Bytes changed"), changed_bytes), (_("New articles"), new_articles), (_("Unique contributors"), str(len(activity))), (ngettext("Most active hour", "Most active hours", len(active_hours)), ', '.join(active_hours) + houramount), (_("Day score"), str(overall))) fields = (
(ngettext("Most active user", "Most active users", len(active_users)), ', '.join(active_users) + usramount),
(_("Edits made"), edits), (_("New files"), files), (_("Admin actions"), admin),
(_("Bytes changed"), changed_bytes), (_("New articles"), new_articles),
(_("Unique contributors"), str(len(activity))),
(ngettext("Most active hour", "Most active hours", len(active_hours)), ', '.join(active_hours) + houramount),
(_("Day score"), str(overall)))
for name, value in fields: for name, value in fields:
embed["fields"].append({"name": name, "value": value}) embed["fields"].append({"name": name, "value": value})
data = {} data = {"embeds": [dict(embed)]}
data["embeds"] = [dict(embed)]
formatted_embed = json.dumps(data, indent=4) formatted_embed = json.dumps(data, indent=4)
send_to_discord(formatted_embed) send_to_discord(formatted_embed)
else: else:
logging.debug("function requesting changes for day overview returned with error code") logging.debug("function requesting changes for day overview returned with error code")
class recent_changes_class(object): class recent_changes_class(object):
starttime = time.time() starttime = time.time()
ids = [] ids = []
@ -665,15 +823,27 @@ class recent_changes_class(object):
def log_in(self): def log_in(self):
# session.cookies.clear() # session.cookies.clear()
if '@' not in settings["wiki_bot_login"]: if '@' not in settings["wiki_bot_login"]:
logging.error("Please provide proper nickname for login from https://{wiki}.gamepedia.com/Special:BotPasswords".format(wiki=settings["wiki"])) logging.error(
"Please provide proper nickname for login from https://{wiki}.gamepedia.com/Special:BotPasswords".format(
wiki=settings["wiki"]))
return return
if len(settings["wiki_bot_password"]) != 32: if len(settings["wiki_bot_password"]) != 32:
logging.error("Password seems incorrect. It should be 32 characters long! Grab it from https://{wiki}.gamepedia.com/Special:BotPasswords".format(wiki=settings["wiki"])) logging.error(
"Password seems incorrect. It should be 32 characters long! Grab it from https://{wiki}.gamepedia.com/Special:BotPasswords".format(
wiki=settings["wiki"]))
return return
logging.info("Trying to log in to https://{wiki}.gamepedia.com...".format(wiki=settings["wiki"])) logging.info("Trying to log in to https://{wiki}.gamepedia.com...".format(wiki=settings["wiki"]))
try: try:
response = self.handle_mw_errors(self.session.post("https://{wiki}.gamepedia.com/api.php".format(wiki=settings["wiki"]), data={'action': 'query', 'format': 'json', 'utf8': '', 'meta': 'tokens', 'type': 'login'})) response = self.handle_mw_errors(
response = self.handle_mw_errors(self.session.post("https://{wiki}.gamepedia.com/api.php".format(wiki=settings["wiki"]), data={'action': 'login', 'format': 'json', 'utf8': '', 'lgname': settings["wiki_bot_login"], 'lgpassword':settings["wiki_bot_password"], 'lgtoken': response.json()['query']['tokens']['logintoken']})) self.session.post("https://{wiki}.gamepedia.com/api.php".format(wiki=settings["wiki"]),
data={'action': 'query', 'format': 'json', 'utf8': '', 'meta': 'tokens',
'type': 'login'}))
response = self.handle_mw_errors(
self.session.post("https://{wiki}.gamepedia.com/api.php".format(wiki=settings["wiki"]),
data={'action': 'login', 'format': 'json', 'utf8': '',
'lgname': settings["wiki_bot_login"],
'lgpassword': settings["wiki_bot_password"],
'lgtoken': response.json()['query']['tokens']['logintoken']}))
except ValueError: except ValueError:
logging.error("Logging in have not succeeded") logging.error("Logging in have not succeeded")
return return
@ -696,9 +866,13 @@ class recent_changes_class(object):
def fetch(self, amount=settings["limit"]): def fetch(self, amount=settings["limit"]):
if self.unsent_messages: if self.unsent_messages:
logging.info("{} messages waiting to be delivered to Discord due to Discord throwing errors/no connection to Discord servers.".format(len(self.unsent_messages))) logging.info(
"{} messages waiting to be delivered to Discord due to Discord throwing errors/no connection to Discord servers.".format(
len(self.unsent_messages)))
for num, item in enumerate(self.unsent_messages): for num, item in enumerate(self.unsent_messages):
logging.debug("Trying to send a message to Discord from the queue with id of {} and content {}".format(str(num), str(item))) logging.debug(
"Trying to send a message to Discord from the queue with id of {} and content {}".format(str(num),
str(item)))
if send_to_discord_webhook(item) < 2: if send_to_discord_webhook(item) < 2:
logging.debug("Sending message succeeded") logging.debug("Sending message succeeded")
time.sleep(2.5) time.sleep(2.5)
@ -722,7 +896,9 @@ class recent_changes_class(object):
if len(self.ids) == 0: if len(self.ids) == 0:
logging.debug("ids is empty, triggering clean fetch") logging.debug("ids is empty, triggering clean fetch")
clean = True clean = True
changes = self.safe_request("https://{wiki}.gamepedia.com/api.php?action=query&format=json&list=recentchanges&rcshow=!bot&rcprop=title%7Ctimestamp%7Cids%7Cloginfo%7Cparsedcomment%7Csizes%7Cflags%7Ctags%7Cuser&rclimit={amount}&rctype=edit%7Cnew%7Clog%7Cexternal".format(wiki=settings["wiki"], amount=amount)) changes = self.safe_request(
"https://{wiki}.gamepedia.com/api.php?action=query&format=json&list=recentchanges&rcshow=!bot&rcprop=title%7Ctimestamp%7Cids%7Cloginfo%7Cparsedcomment%7Csizes%7Cflags%7Ctags%7Cuser&rclimit={amount}&rctype=edit%7Cnew%7Clog%7Cexternal".format(
wiki=settings["wiki"], amount=amount))
if changes: if changes:
try: try:
changes = changes.json()['query']['recentchanges'] changes = changes.json()['query']['recentchanges']
@ -730,7 +906,8 @@ class recent_changes_class(object):
except ValueError: except ValueError:
logging.warning("ValueError in fetching changes") logging.warning("ValueError in fetching changes")
if changes.url == "https://www.gamepedia.com": if changes.url == "https://www.gamepedia.com":
logging.critical("The wiki specified in the settings most probably doesn't exist, got redirected to gamepedia.com") logging.critical(
"The wiki specified in the settings most probably doesn't exist, got redirected to gamepedia.com")
sys.exit(1) sys.exit(1)
self.downtime_controller() self.downtime_controller()
return None return None
@ -744,10 +921,12 @@ class recent_changes_class(object):
self.streak += 1 self.streak += 1
if self.streak > 8: if self.streak > 8:
self.streak = -1 self.streak = -1
send(_("Connection to {wiki} seems to be stable now.").format(wiki=settings["wikiname"]), _("Connection status"), settings["avatars"]["connection_restored"]) send(_("Connection to {wiki} seems to be stable now.").format(wiki=settings["wikiname"]),
_("Connection status"), settings["avatars"]["connection_restored"])
for change in changes: for change in changes:
if change["rcid"] in self.ids or change["rcid"] < self.recent_id: if change["rcid"] in self.ids or change["rcid"] < self.recent_id:
logging.debug("Change ({}) is in ids or is lower than recent_id {}".format(change["rcid"], self.recent_id)) logging.debug("Change ({}) is in ids or is lower than recent_id {}".format(change["rcid"],
self.recent_id))
continue continue
logging.debug(self.ids) logging.debug(self.ids)
logging.debug(self.recent_id) logging.debug(self.recent_id)
@ -783,9 +962,10 @@ class recent_changes_class(object):
except requests.exceptions.Timeout: except requests.exceptions.Timeout:
pass pass
if online < 1: if online < 1:
logging.error("Failure when checking Internet connection at {time}".format(time=time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()))) logging.error("Failure when checking Internet connection at {time}".format(
time=time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime())))
self.downtimecredibility = 0 self.downtimecredibility = 0
if looped == False: if not looped:
while 1: # recursed loop, check for connection (every 10 seconds) as long as three services are down, don't do anything else while 1: # recursed loop, check for connection (every 10 seconds) as long as three services are down, don't do anything else
if self.check_connection(looped=True): if self.check_connection(looped=True):
recent_changes.fetch(amount=settings["limitrefetch"]) recent_changes.fetch(amount=settings["limitrefetch"])
@ -795,15 +975,17 @@ class recent_changes_class(object):
return True return True
def downtime_controller(self): def downtime_controller(self):
if settings["show_updown_messages"] == False: if not settings["show_updown_messages"]:
return return
if self.streak > -1: # reset the streak of successful connections when bad one happens if self.streak > -1: # reset the streak of successful connections when bad one happens
self.streak = 0 self.streak = 0
if self.downtimecredibility < 60: if self.downtimecredibility < 60:
self.downtimecredibility += 15 self.downtimecredibility += 15
else: else:
if(time.time() - self.last_downtime)>1800 and self.check_connection(): #check if last downtime happened within 30 minutes, if yes, don't send a message if (
send(_("{wiki} seems to be down or unreachable.").format(wiki=settings["wikiname"]), _("Connection status"), settings["avatars"]["connection_failed"]) time.time() - self.last_downtime) > 1800 and self.check_connection(): # check if last downtime happened within 30 minutes, if yes, don't send a message
send(_("{wiki} seems to be down or unreachable.").format(wiki=settings["wikiname"]),
_("Connection status"), settings["avatars"]["connection_failed"])
self.last_downtime = time.time() self.last_downtime = time.time()
self.streak = 0 self.streak = 0
@ -811,13 +993,16 @@ class recent_changes_class(object):
self.map_ips = {} self.map_ips = {}
def update_tags(self): def update_tags(self):
tags_read = safe_read(self.safe_request("https://{wiki}.gamepedia.com/api.php?action=query&format=json&list=tags&tglimit=max&tgprop=name|displayname".format(wiki=settings["wiki"])), "query", "tags") tags_read = safe_read(self.safe_request(
"https://{wiki}.gamepedia.com/api.php?action=query&format=json&list=tags&tglimit=max&tgprop=name|displayname".format(
wiki=settings["wiki"])), "query", "tags")
if tags_read: if tags_read:
for tag in tags_read: for tag in tags_read:
self.tags[tag["name"]] = (BeautifulSoup(tag["displayname"], "lxml")).get_text() self.tags[tag["name"]] = (BeautifulSoup(tag["displayname"], "lxml")).get_text()
else: else:
logging.warning("Could not retrive tags. Internal names will be used!") logging.warning("Could not retrive tags. Internal names will be used!")
recent_changes = recent_changes_class() recent_changes = recent_changes_class()
if settings["wiki_bot_login"] and settings["wiki_bot_password"]: if settings["wiki_bot_login"] and settings["wiki_bot_password"]:
recent_changes.log_in() recent_changes.log_in()
@ -827,10 +1012,12 @@ recent_changes.fetch(amount=settings["limitrefetch" ] if settings["limitrefetch"
schedule.every(settings["cooldown"]).seconds.do(recent_changes.fetch) schedule.every(settings["cooldown"]).seconds.do(recent_changes.fetch)
if 1 == 2: if 1 == 2:
print (_("director"), _("bot"), _("editor"), _("directors"), _("sysop"), _("bureaucrat"), _("reviewer"), _("autoreview"), _("autopatrol"), _("wiki_guardian")) print(_("director"), _("bot"), _("editor"), _("directors"), _("sysop"), _("bureaucrat"), _("reviewer"),
_("autoreview"), _("autopatrol"), _("wiki_guardian"))
if settings["overview"]: if settings["overview"]:
schedule.every().day.at("{}:{}".format(time.strptime(settings["overview_time"], '%H:%M').tm_hour, time.strptime(settings["overview_time"], '%H:%M').tm_min)).do(day_overview) schedule.every().day.at("{}:{}".format(time.strptime(settings["overview_time"], '%H:%M').tm_hour,
time.strptime(settings["overview_time"], '%H:%M').tm_min)).do(day_overview)
schedule.every().day.at("00:00").do(recent_changes.clear_cache) schedule.every().day.at("00:00").do(recent_changes.clear_cache)
while 1: while 1:

View file

@ -20,6 +20,7 @@
"show_updown_messages": true, "show_updown_messages": true,
"overview": false, "overview": false,
"overview_time": "00:00", "overview_time": "00:00",
"send_empty_overview": false,
"license_regex_detect": "\\{\\{(license|lizenz|licence|copyright)", "license_regex_detect": "\\{\\{(license|lizenz|licence|copyright)",
"license_regex": "\\{\\{(license|lizenz|licence|copyright)(\\ |\\|)(?P<license>.*?)\\}\\}", "license_regex": "\\{\\{(license|lizenz|licence|copyright)(\\ |\\|)(?P<license>.*?)\\}\\}",
"wiki_bot_login": "", "wiki_bot_login": "",